VO(Video Output,视频输出)模块主动从内存相应位置读取视频和图形数据,并通过相应的显示设备输出视频和图形。

1. 基本概念

3519A芯片支持的显示/回写设备、视频层和图形层见下表。

注:缩写解释

  • DHD0:Device HD0,超高清设备 0。
  • DHD1:Device HD1,高清设备 1。
  • VHD0:Video layer of HD0,超高清视频层 0,隶属于 DHD0。
  • VHD1:Video layer of HD1,高清视频层 1,隶属于 DHD1。
  • VHD2:Video layer of HD 2,高清视频层 2,Hi3559AV100 上隶属于 DHD0, Hi3519AV100/Hi3556AV100 上可以绑定至 DHD0 或者 DHD1,用作 PIP 层。
  • WD:Write Back Channel Device,回写通道设备。

2. 模块划分

视频输出(VO)实现启用视频输出设备或通道、发送视频数据到输出通道等功能。

该功能模块提供以下 API(Application Programming Interface,应用程序编程接口),下面分别从设备、视频层、通道、回写、图形层等方面进行介绍。

3. 模块功能

3.1 视频回写

将回写设备称之为 WD(Write Back Channel Device)。

回写功能:捕获视频层和设备级的视频数据,可用于显示和编码。

回写设备的使用依赖于被回写的设备,既可以回写设备级(视频层与图形层叠加后)的视频数据,也可以回写视频层的数据。

3.2 通道

SDK 将通道归属于视频层管理,一个视频层上可显示多个视频,每一个视频显示区域称为一个通道,视频被限制通道内,通道被限制在视频层内。对于一个视频层,其上面的通道都是独立的。同时,不同的视频层上的通道也是独立的。对于通道的排号上面不存在跨层的连续。

对于系统绑定,应该使用视频层号和通道号来进行绑定配置;另外,对于回写的图像作为输出源时,需要使用回写内容所在的设备号和 0 通道号进行绑定配置。

3.3 缩放和显示

每个 VHD 超高清视频层 (Hi3559AV100ES/Hi3559AV100/Hi3519AV100/Hi3516CV500/Hi3516EV200: VHD0)只有 x 个通道(x 的取值请参见表 4-3),设备视频层内的通道不可重叠。 超高清视频层的通道具有缩放能力。VI 或 VDEC 的源图像经由缩放后,输出到 VO 的某一通道显示。如果输出给 VO 通道的图像超过 VO 的通道区域大小,则 VO 将会对图像进行缩放。

Hi3519AV100 超高清视频 层不支持视频层的缩放。视频层的通道通过 VGS 实现缩放,并叠加为一整幅图像,并将这一整幅图像的数据配给硬件显示。

视频层在显示视频图像上的策略为:对于支持缩放的视频层,则对视频进行缩放显示,对于不支持缩放的视频层,则对于视频进行裁剪显示。

3.4 通道优先级

超高清和高清显示设备软件上支持多个通道同时输出显示,按照优先级顺序对输出图像进行叠加,当各个通道的画面有重叠区域时,优先级高的图像显示在上层,如果各个通道优先级一致,则通道号越大的默认优先级越高。

3.5 分辨率

分辨率主要有以下 3 种概念:

  • 设备分辨率指该设备的输出有效像素点数,由设备时序决定。

  • 显示分辨率指画面在显示设备上的有效显示区域,由视频层属性中的 stDispRect 成员决定。

  • 画布分辨率指 VGS 拼接时使用的一块输出视频数据的内存区域,由视频层属 性中的 stImageSize 决定。直通时无此定义。

  • 图像分辨率指图像本身的有效像素点数,由实际的显示图像分辨率决定。

3.6 图形层绑定

图形层绑定是指芯片支持将特定的某个图形层绑定到某个设备上。

Hi3519AV100 支持 3 个图形层(G0,G1,G3),G0 固定绑定到 DHD0 上, G1 固定绑定到 DHD1 上,即 G0 只能与 VHD0 叠加显示,G1 只能与 VHD1 叠加显示;G3 可动态绑定到 DHD0 或 DHD1,即 G3 或者与 VHD0 叠加显示, 或者与 VHD1 叠加显示,G3 默认绑定在 DHD0 上。

3.7 单画面直通模式

单画面直通模式是指在 SINGLE 模式下,VO 通道中的图像不经过 VGS 模块处理而直接显示出来,节省一次 VGS 搬移过程,并且 VO 无需申请私有内存,但是需要满足以下条件才会选择走直通模式:

  • VO 通道使能,且只有一个通道显示;
  • VO 没有显示 OSD 和 COVER;
  • VO 没有使能边框;
  • VO 没有使能抗闪;
  • VO 没有电子放大;
  • VO 通道图像像素格式和设置的像素格式一致;
  • VO 通道图像视频格式为 LINEAR(包括 LINEAR DISCRETE 格式)
  • VO 通道图像大小(FrameSize)=通道大小(ChnRect)=画布大小(ImageSize)
  • Hi3519AV100 上还需要满足不使能幅形比的条件;Hi3519AV100 的 VHD1 和 VHD2 视频层还需要满足输入图像为非压缩图像的条件。

如果不满足直通模式的条件,由于 VO 默认不分配内存,因此需要在使能视频层之前调用 HI_MPI_VO_SetDisplayBufLen 接口设置缓冲长度来确定分配内存,否则 VO 将不会输出视频显示,

3.8 低功耗策略

VO 模块使用低功耗策略,在模块加载后或者用例退出后 VO 时钟是关闭的,这时候手动读写 VO 模块的寄存器可能会有读写错误或者卡死的现象。

4. API功能

视频输出(VO)实现启用视频输出设备或通道、发送视频数据到输出通道等功能。

API从设备、视频层、通道、回写、图形层等方面进行划分。

4. 海思Hi3519A MPP从入门到精通(四 视频输出)的更多相关文章

  1. 海思Hi3519A MPP从入门到精通(一 系统概述)

    1. 概述 海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速 开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供 M ...

  2. 海思Hi3519A MPP从入门到精通(二 系统控制)

    系统控制根据 Hi35xx 芯片特性,完成硬件各个部件的复位.基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化.去初始化以及管 ...

  3. 3. 海思Hi3519A MPP从入门到精通(三 视频输入)

    视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接 口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据. ...

  4. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  5. MyBatis从入门到精通(四):MyBatis XML方式的基本用法之增删改

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. insert用法 1.1 简单的 ...

  6. Python基本语法[二],python入门到精通[四] (转)

    写在前面 python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 回到顶部 v正文开始:Python基本语法 1.定义常量: 之所以上篇博客介绍了定义变量没有一起介绍定义常量,是因为Pyt ...

  7. iOS开发-UI 从入门到精通(四)

    一.UITextField 1.UITextField是什么? (1)UITextField(输入框):是控制文本输入和显示的控件.在App中UITextField出现频率也比较高: (2)iOS系统 ...

  8. Atom编辑器入门到精通(四) Atom使用进阶

    在本节中将介绍Atom提供的更高级的使用技巧,通过这些技巧将会进一步提高你的代码编写效率 代码片段(Snippets) Snippets是一种在代码中快捷插入代码块的方式,下面是维基百科中对Snipp ...

  9. PHP从入门到精通(四)

    PHP数组中的常用函数汇总 为了更直观的讲解各函数的作用和用法,方便大家的理解,首先,我们来定义一个数组.下面各函数的操作将以本数组为例: $arr = array(1,2,3,4,5,6," ...

随机推荐

  1. ASP.NET Core 设置默认起始页(如default.html)

    测试页面foo.html 在Startup.cs内使用middleware 代码如下: DefaultFilesOptions defaultFilesOptions = new DefaultFil ...

  2. IntelliJ IDEA中你应该知道的快捷键

    IDEA官方所有快捷键:参考:https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_Refe ...

  3. Playbook剧本初识

    目录 1.Playbook剧本初识 2.Playbook变量使用 3.Playbook变量注册 4.Playbook条件语句 5.Playbook循环语句 6.Playbook异常处理 7.Playb ...

  4. linux相关(一)

    一.调整xshell终端显示的最大行数 1.文件 -> 属性 -> 终端,如下图 2.调整缓冲区大小的行数,确定即可,如下图: 注意:此方法只是修改了连接该主机时的显示行数,其他主机的还是 ...

  5. s3c2440裸机-内存控制器(一、内存控制器的原理)

    1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nan ...

  6. Linux达人计划(一)

    这时慕课网的Linux基础教学 http://www.imooc.com/view/175 好记性不如烂笔头.一般来说看视频只看不做是很难学好学扎实. 趁着每一节都有采纳的一些笔记.现在对它进行一些归 ...

  7. python3解决url编码与解码

    对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行解码,unquote进行编码. 代码实例: import urllib.parse u = & ...

  8. for循环创建的a标签,当点击时如何确定点击的是哪一个标签?

    创建 代码: js: 效果: 原因: html代码:这种获取选中标签的方式,是通过监听body来实现的,所以body上要增加这个onclick(this)

  9. vue--npm install只许成功,不许失败

    npm安装时出现run `npm audit fix` to fix them, or `npm audit` for details 方案一: 1.如果你的项目里存在 package-lock.js ...

  10. 当接口请求体里的日期格式跟web页面日期格式不一致时,该如何处理呢?

    首先引入Unix纪元时间戳的概念:即格林威治时间(GMT,Greenwich Mean Time)1970年1月1日00:00:00,到当前时间的秒数.单位为秒(s). 那么当前时间的Unix纪元时间 ...