前言¶
概述
本文为图形开发推荐了1个方案,分别从方案介绍、衍生方案、开发流程、应用场景及优点和限制介绍,为用户在进行图形开发时提供参考。
说明:
本文未有特殊说明,SS528V100、SS625V100、SS524V100、SS522V101与SS626V100完全一致。
未有特殊说明,SS927V100与SS928V100,SS522V100与SS524V100内容完全一致。
产品版本
与本文档相对应的产品版本如下。
产品名称 |
产品版本 |
|---|---|
SS928 |
V100 |
SS626 |
V100 |
SS524 |
V100 |
SS522 |
V100 |
SS522 |
V101 |
SS528 |
V100 |
SS625 |
V100 |
SS927 |
V100 |
读者对象
本文档(本指南)主要适用于以下工程师:
技术支持工程师
软件开发工程师
符号约定
在本文中可能出现下列标志,它们所代表的含义如下。
符号 |
说明 |
|---|---|
|
表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。 |
|
表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。 |
|
表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。 |
|
用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。 |
|
对正文中重点信息的补充说明。 “说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。 |
修订记录
修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。
文档版本 |
发布日期 |
修改说明 |
|---|---|---|
00B01 |
2025-09-15 |
第1次临时版本发布。 |
图形层介绍¶
概述¶
数字媒体处理平台提供一整套机制支持图形界面的开发,主要包括:
图形二维加速引擎(Two Dimensional Engine,简称TDE),它利用硬件加速对图形图像进行处理。
Graphic Framebuffer Group(以下简称GFBG)用于管理叠加图形层,它不仅提供Linux Framebuffer的基本功能,还在Linux Framebuffer的基础上增加层间colorkey、层间Alpha等扩展功能。
说明:
TDE相关使用方法请参见《TDE API参考》
GFBG相关使用方法请参见《GFBG 开发指南》和《GFBG API参考》
图形层体系结构¶
SS528V100/SS625V100/SS524V100支持2路高清HD0\HD1显示设备,1路标清SD0显示设备,同时支持4个图形层G0、G1、G2、G3。
SS522V101支持1路高清HD0显示设备,1路标清SD0显示设备,同时支持3个图形层G0、G2、G3。
SS928V100支持2路高清HD0和HD1显示设备,1路标清SD0显示设备,同时支持3个图形层G0、G1、G3。
SS626V100支持2路高清HD0和HD1显示设备,1路标清SD0显示设备,同时支持5个图形层G0、G1、G2、G3、G4。
说明: 每个输出设备支持的接口类型和时序请参见对应芯片手册的VDP章节。
表 1 FB设备文件、图形层以及输出设备的对应关系 (SS528V100/SS625V100/SS524V100)
FB设备文件 |
图形层 |
对应显示设备 |
|---|---|---|
/dev/fb0 |
G0 |
G0在HD0设备上显示。 |
/dev/fb1 |
G1 |
G1在HD1设备上显示。 |
/dev/fb2 |
G2 |
G2在HD0、HD1、SD0设备上显示。 |
/dev/fb3 |
G3 |
G3在HD0、HD1、SD0设备上显示。 |
表 2 FB设备文件、图形层以及输出设备的对应关系 (SS522V101)
FB设备文件 |
图形层 |
对应显示设备 |
|---|---|---|
/dev/fb0 |
G0 |
G0在HD0设备上显示。 |
/dev/fb1 |
G2 |
G2在HD0、HD1、SD0设备上显示。 |
/dev/fb2 |
G3 |
G3在HD0、HD1、SD0设备上显示。 |
表 3 FB设备文件、图形层以及输出设备的对应关系 (SS928V100)
FB设备文件 |
图形层 |
对应显示设备 |
|---|---|---|
/dev/fb0 |
G0 |
G0在HD0设备上显示。 |
/dev/fb1 |
G1 |
G1在HD1设备上显示。 |
/dev/fb2 |
G3 |
G3在HD0、HD1、SD0设备上显示。 |
表 4 FB设备文件、图形层以及输出设备的对应关系 (SS626V100)
FB设备文件 |
图形层 |
对应显示设备 |
|---|---|---|
/dev/fb0 |
G0 |
G0在HD0设备上显示。 |
/dev/fb1 |
G1 |
G1在HD1设备上显示。 |
/dev/fb2 |
G2 |
G2在HD0、HD1、SD0设备上显示。 |
/dev/fb3 |
G3 |
G3在HD0、HD1设备上显示。 |
/dev/fb4 |
G4 |
G4在HD1、SD0设备上显示。 |
说明: 为了显示图形层,使用芯片的用户必须先配置并启动输出设备,最后通过GFBG模块接口操作图像层使之显示。
图形开发推荐方案¶
概述¶
在视频采集领域中,一般输出设备的图形用户界面内容包括:
后端OSD:显示画面分割线、通道号、时间等信息,用以界定多画面显示布局。
GUI界面:包括各种菜单、进度条等元素,用户通过操作GUI界面进行设备配置。
鼠标:提供更方便易用的界面菜单操作方式。
以上3类图形内容可以通过1个图形层实现,也可以通过多个图形层实现。对于提供多个图形层的芯片,指导用户正确、合理、有效地利用这些图形层,以满足不同的输出界面应用场景。下面推荐几种方案供参考。
单图层实现用户界面方案¶
方案介绍¶
该方案总体思路是:每个设备都只使用1层图形层来完成本设备的后端OSD、GUI和鼠标的显示,鼠标也可以使用独立的鼠标层实现。
可具体描述为:每个输出设备使用一个图形层来完成本设备的后端OSD、GUI;GUI画在独立的缓存上,后端OSD直接画在FB显存中,再通过TDE进行alpha混合;鼠标可以使用单独的鼠标图形层,也可以跟OSD、GUI共用一个图层,共用图层的时候,可以画在GUI缓存上。
该方案使用了以下机制:
每个设备的后端OSD直接绘制在各自的FB显存中。
例如在每个图形层对应的FB显存中绘制分割布局、通道号或者时间。
每个设备一块GUI画布,GUI变更时局部刷新。
每个设备使用一块独立的缓存绘制GUI(称该块缓存为GUI画布),当GUI变更时仅需要进行局部刷新。
GUI画布整体搬移至相应图层的FB显存中
将绘制好的画布整体搬移到相应的FB缓冲中,在此过程中可利用TDE实现GUI和OSD的叠加透明效果。每次GUI或OSD有变动时,由于是对画布和OSD整体做叠加,故不需要针对局部信息计算GUI和OSD的叠加区域。
FB双缓冲
为防止一块FB缓冲被边绘制边显示而导致绘制过程可见,推荐使用FB双缓冲机制或是GFBG实现的扩展模式中的GFBG_LAYER_BUF_DOUBLE / GFBG_LAYER_BUF_DOUBLE_IMMEDIATE机制。它们的原理都是为FB分配2块大小相同的缓冲作为显存交替绘制和显示。如VO正在显示缓冲2,则本次绘制的对象为缓冲1,然后对于FB标准模式可通过FB的PAN_DISPLAY或FBIOFLIP_SURFACE调用通知VO显示缓冲1,而对于FB扩展模式可通过FB的FBIO_REFRESH调用通知VO显示缓冲1。
方案的结构如图1所示。
图 1 单图层方案的结构示意图

该方案在后端OSD或者GUI界面变动时,都需要重新绘制FB缓存:
本设备的后端OSD改变时,如16通道分割线切换到9通道分割线:先清空FB缓存,再绘制新的OSD,再将GUI界面整体搬移到FB缓存中。
GUI界面每次变动时,都需要先清空FB缓存,再绘制OSD,然后将新的GUI界面整体搬移到FB缓存中。
衍生方案¶
当SD0和HD0设备上想同时显示同样的GUI界面时,该方案可简化仅有一块GUI画布缓存:
画布大小与HD0的GUI层大小相同(800x600),用户可按照HD0的GUI规格(如800x600)准备一套图片,每次GUI变更时仅局部绘制画布,而SD0的GUI则是将画布整体经过缩放、抗闪得到,其效果略差于HD上的GUI。
每次更新画布后,对于HD设备,由于画布大小与GUI界面大小相同,故利用TDE做整体搬移操作即可;对于SD0设备,需要利用TDE对画布整体进行缩放至和SD0绑定的图形层对应的FB显存中,同时进行抗闪烁处理(因SD0是隔行设备)。
该衍生方案的结构如图1所示。
图 1 衍生方案的结构图

开发流程¶
方案1的开发流程¶
以HD0和SD0设备上的GUI和OSD为例:HD0设备上16画面等分分割线,SD0设备上4画面等分分割线,且HD0和SD0同时显示同样的GUI。
若此时GUI界面有变化,则该方案的实现过程为:
清空HD0和SD0对应图形层的FB的空闲缓冲(假设为缓冲1,缓冲2正在被VO显示)。
在HD0对应图形层的FB缓冲1中绘制16通道分割线。
在SD0对应图形层的FB缓冲1中绘制4通道分割线。
局部更新画布。
用TDE将画布整体搬移到HD0对应图形层的FB缓冲1的合适位置,此过程可以做alpha透明度叠加以实现GUI半透明效果。
用TDE将画布整体缩放到SD0对应图形层的FB缓冲1的合适位置,此过程可以做抗闪、alpha透明度叠加(以实现GUI半透明效果)。
通过FB接口调用PAN_DISPLAY通知HD0显示和本设备绑定图形层已准备好的FB的缓冲1。
通过FB接口调用PAN_DISPLAY通知SD0显示本设备绑定图形层已准备好的FB的缓冲1。
应用场景¶
应用场景如下:
每个设备上有各自的后端OSD(如HD0为16画面分割布局,HD1为8画面分割布局,SD0为4画面分割布局)。
2或多个输出设备上同时有GUI界面(相同或者不同)。
优点和限制¶
该方案具有以下优点:
可同时在多个设备上显示GUI界面。
GUI画布可局部刷新,节省总线带宽和TDE性能。
可实现GUI和OSD的叠加透明效果,且用户控制流程简单。每次GUI或OSD有变动时,由于是对画布和OSD整体做叠加,故不需要针对局部信息计算GUI和OSD的叠加区域。
对于衍生方案,用户仅需要一套GUI界面的图片,就可适应不同分辨率设备的GUI需求,节省Flash空间。
该方案具有以下约束:
对于衍生方案:标清设备上的GUI是画布缩放得到的,故效果略差于高清设备上的GUI。




