2021-4-10 | 电影电视
我们可以通过遥控器或面板按键操作来选择电视接收机所提供的功能,由于人机交互的迫切需求,友好的GUI图像用户界面被研发出来。在对电视机进行操控的时候,我们提出以下一些问题,希望通过对这些问题的逐一解释,逐步理解电视OSD显示的机理。
字符或符号是怎么显示到屏幕上的?
屏幕菜单界面是怎样进行控制的?
字符大小、颜色是怎样选择和控制的?
多语言是怎样进行控制和显示的?
一些特定的应用和界面是怎样进行控制的?
一、OSD电路与字符存储
东芝TMPA8821系列电视芯片内置了OSD屏显电路,当需要显示字符符号时,OSD显示控制启动,来自字符符号ROM区(ROM.Fable)的OSD字符被加载到显示输出控制缓存,由TV信号处理器控制显示。字符是点阵式,采用模拟叠加技术,把OSD信号叠加在R、G、B三枪上,送到屏上显示。这不同于数字电视的数字叠加技术,在数字电视中,OSD字符或位图一般在SCALER(图像比例变换)处理阶段通过修改DISPLAYRAM(显示动态内存)来加载,最后通过显示电路显示在屏上,例如P七七1硒、止s公司的PWll3芯片。
在东芝TMpA8821系列芯片中,显示字符共有大、中、小三种可选,在最小字体显示下,满屏可以显示12行,每行最多可以显示32个字符,故此系列芯片最多的ROM字符表为384(=32x12)个。
东芝该系列电视芯片的开发语言为C一IJ跳,这是一个介于C语言与汇编语言的开发语言,同时兼有了C高级语言的易于实现、汇编语言的对硬件方便控制等各自的不同优势。
我们知道,在ANSIC(美国国家标准化组织标准C语言)中一个字节可以用来表示一个字符,通常给一个字符变量赋值可以直接指定该字符,或指定其对应的ASCn数值(不同的计数制式都可以)。如:Chareh;ch==‘0’ch=Ox30/*直接指定该字符*//*指定其对应的ASCll(地址)数值*/因此,为了便于在C一LI跳中方便使用每一个常用字符,所有的常用字符都定义同ANSIC一样的映射。假定我们定义的字符映射表不是这样,如:“0”字符不是在0x31而是ox41,那我们在C一IJKE中对该字符的赋值就只能够使用“指定其地址对应的数值”了,相应的其他字符与数值的转换也会带来一系列的问题。
同样,如下图3所示,我们知道,一个字符的最大可表示范围为0龙55(O习xFr),而ROM字符空间为384个,那如何表示超过0xFF的字符呢?使用转义字符可以解决此问题。转义字符、逃逸字符(EscapeChar)在通信中经常被使用,用以表示在其后紧跟的字符被转义,这里的使用方法其实是扩展了它的使用功能,即:扩展了字符的显示范围,被转义的字符为0xFT后的字符,本质上一个转义字符最多也可以扩展(0xFT+l)个字符。至此,字符的存储问题得到了解决。
在数字LCD电视的屏显技术中,采用了兼容WINDOWS字体的设计方法,即,一种新的字体,只要在wiNDOWS系统平台中有,就可以把该字体“引进”到系统中,作为显示设计的一种字体,在给定不同的显示字符后,选择对应的需要采用的字体即可,具体的转换细节由底层的SDK(阮众wareDevefopment幻t,软件开发工具包)实现。
二、OSD菜单界面控制
前面提到,东芝TMpA8821系列芯片中,在最小字符格式下,满屏可以显示12行,每行可以显示32个字符,因为在此系列芯片中不支持位图格式的OSD显示,所以在oSD中显示的所有图标,都是点阵式的字符。由于某些图标的复杂性或特殊需要,一个完整意义上的图标可能会占用多个OSD字符存储空间。
OSD菜单界面设计,主要涉及到OSD的排版和风格,类似一些可视化语言应用开发的界面设计:首先,通过拖动各类控件实现整个界面;然后,通过各个控件对应的事件实现基本模块功能;最后,通过消息传递机制整合整个的项目。对应这个过程,下面我们来简单分析东芝模拟电视芯片所采用的OsD菜单显示。
控件界面设计:这里,控件即字符。考虑到视觉可视性和操作习惯,菜单界面一般设计为多层次,首层一般为主菜单,其次为二级、三级子菜单等,主菜单一般作为功能分类导航。按照不同的设计风格,主菜单一般可设计为横式或竖式,子菜单出现后一般保留主菜单的显示,或保留显示当前主菜单的选择。
在数字LCD电视的屏显技术中,位图与字符已经分开,在实际显示的时候需要进行不同的处理。显示的位图需要在设计阶段给定,并且给定位图的位深需要根据不同的开发平台来定义,在显示时,对应需要显示的位图被加载到FrameBuffer中,然后根据坐标转换,通过显示电路显示到屏上。
Pixe1Works的PWll3SDK中,在OSD的设计上与模拟电视的不同点在于其OSD是单独设计的,设计过程非常类似wiNDOWS犯程序的开发。在模拟电视中,我们需要显示一个图标或一个字符,过程往往是:规划要显示的位置与要显示的字符内容,通过代码控制显示特定行,加载特定的字符,然后通过一个特定的系统显示函数,把欲显示的内容显示到屏上。但在Pixe1Works的PWI13SDK中,通过特定的GUIBuilder工具,你可以构建一个需要显示的界面,该工具的输人来自该SDK的PWCo浦g的一个特定输出,在GUIBuilder中你可以自定义一些需要显示的条件,使得需要显示的内容只在特定的条件触发后显示。基于这种独立模块的开发的确带来了开发高效,但同时,一个不容忽视的事实凸现出来:终端开发人员对系统的可控性变得越来越低,如果需要改动一个特定的内容往往需要改动系统的结构,因此,Rxe1W0rks的针对数字电视开发的下一代SDK又回到了从前,依然采用代码交互式的开发方法,让终端开发人员有了更多的可控之处。
三、多语言的显示与控制
不同的语言,本质对应的是不同的OSD字符显示,在OSDROM表可以允许的条件下,在OTP或掩膜片大小允许的情况下,我们可以多增加一些语言。