结构化的平板电视OSD界面设计

结构化的平板电视OSD界面设计,第1张

 

  日益华丽的平板电视OSD开发占据了固件工程师大量的时间,采用结构化的OSD设计可以缩短开发时间,提高代码质量。本文在介绍OSD的实现方法、OSD类型、OSD的UI基本元素及定义基础上,详细分析了使用结构化的OSD UI处理机制实现OSD开发的方法和思路。

  

 

  图1:字符型OSD。

  随着具有各种丰富功能的平板电视不断上市,日益华丽的OSD界面设计占据了固件开发工程师大量的开发时间。不少的固件工程师不断地重复着同样的工作:为每一个机种编写着同样的OSD文字、图形及人机交互的界面(UI)互动代码。在UI及OSD较复杂的系统里,该部分的代码量高达30-60%,同时,调试不健壮的UI代码也将占用大量的系统调试时间。

  平板电视的UI主要具有建立在机器上的按键和红外遥控器等输入以及OSD、蜂鸣器等输出,OSD的主要作用是提供一个直观的图形界面,帮助用户完成各种对机器的控制和信息获知等任务。图1、2呈现了用户可能经常看到的OSD外观。随着系统处理能力的提高,现在的OSD甚至可以提供内建游戏、记事本和万年历等各种附件功能。本文主要讨论的是OSD固件的设计及与之相关的UI控制,并试图提供一个关于平板电视中UI的定义和解决方案,缩短固件工程师在UI OSD界面构造上的时间。本文中的概念及方案同样适用于其它具有点阵显示控制任务的场合。

  OSD的主要实现方法和类型

  目前有两种主要的OSD实现方法:外部OSD发生器与视频处理器间的叠加合成;视频处理器内部支持OSD,直接在视频缓存内部叠加OSD信息。

  外部OSD发生器与视频处理器间的叠加合成的实现原理是:由一个MCU内建的字符发生器及显示缓存,利用快速消隐(Fast-Blank)信号切换电视的画面和OSD显示内容,使OSD的字符等内容叠加在最终的显示画面上,在OSD和显示画面叠加处理过程中,通过调整两者之间的比例可以实现OSD的半透明(Blending)效果。同时,对OSD信号中的红绿蓝信号进行重新编码,可以得到不同的OSD颜色效果。

  另外一种实现方法是视频处理器内部支持OSD,直接在视频缓存内部叠加OSD信息。这一类视频处理通常具有外部存储器或内部少量的行缓存,同时具有OSD发生器,OSD的合成和控制直接在视频缓存内完成,同样具有上述的半透明和颜色控制功能。

  OSD具有字符型(Font-Based)和位图型(Bit-Map)两种类型。

  字符型OSD(图1属于字符型):为了节约显示缓存,早期及低成本的解决方案中使用字符型OSD发生器,其原理是将OSD中显示内容按照特定的格式(12×18、12×16等)进行分割成块,例如数字0-9、字母a-z、常用的亮度、对比度符号等,并把这些内容固化在ROM或Flash中,在显示缓存中仅存放对应的索引号,这样的“字典”结构可以大幅度减少显示缓存的需求。

  同时,为了提供对每个字符的颜色等属性的控制,通常还具有一个与显示缓存一样大小的属性缓存,其属性(前景颜色、背景颜色、闪烁等)对整个字符中的每个像素有效。为了弥补这种方式不能为每个像素指定颜色的缺点,OSD发生器的设计者提供了采用多个显示缓存合并的方式呈现多色字符的方案。其原理是每个显示缓存确定一种颜色方案,当两个甚至更多个显示缓存合并以后就可以“拼凑”出超过两种颜色的多色字符。

  

结构化的平板电视OSD界面设计,第2张

 

  图2:位图型OSD。

  字符型OSD优点是可以使用OSD内部较少的显示缓存,并且MCU只需要指定显示内容的索引即可显示对应OSD信息,可以在比较低速的MCU上实现。但正是由于上述的显示信息和颜色编码方式不够直观,会给字符型OSD的固件开发带来一些麻烦。通常液晶显示器、低成本的平板电视和CRT传统电视上均使用这一类OSD,目前仍占据着市场主流地位。

  相较字符型OSD,位图OSD(图2属于位图型)的处理原理较直观和简单:通过对最终显示内容上特定区域的每个像素点进行改变,直接将OSD信息叠加到最终的显示画面上,其按像素进行控制的方式可以保证具有多色及足够的表现能力。位图OSD发生器通常内建在视频处理器内部,并共享使用其主显示缓存。也有独立在视频处理器之外的专业OSD位图发生器,如美信的MAX4455,通常这一类芯片需要外部SDRAM作为显示缓存。

  位图OSD的显示效果理论上可以做到非常完美的程度,可以提供类似Windows中具有立体感的各种物件,如具有阴影的按钮、颜色丰富的图形和文字等,其缺点是必须具有足够的OSD显示缓存,以及按像素进行处理而对MCU带来的速度要求。通常在大尺寸的高端平板电视和专业显示器上会使用这一类OSD。随着技术的不断发展和存储器的成本的不断下降,未来的OSD应该都是位图型的。

  OSD的UI基本元素及定义

  显示OSD的目的是需要向用户表达信息,那么哪些信息需要表达呢?通常包括提示、警告信息、控制参数的数值显示等。尽管无论其显示形状是什么,其本质都是一些字符或像素点的组合,但是对于这些信息的分类和属性定义有助于固件开发人员的统一编码和代码处理。本文尝试分类,分析这些元素并在下面给出统一的固件处理方法。

  1. OSD基本概念

  UI语言:指OSD内容中的文字部分使用的语言类型。

  UI模式:指OSD内容适用的环境,例如不同的信号源(电视、DVD、PC)带来的模式变化,其作用主要区分不同的环境下OSD的不同表现。

  UI场景:特定语言模式下及较多信息页面情况下,当前OSD适用的特定页面。

  UI事件:用户利用输入设备向UI系统提供的 *** 作命令。

  UI动作表:指在特定UI场景中,对于UI输入的命令进行对应处理的索引表。

  OSD画布:指整个OSD呈现的区域,通常为一个矩形区域。

  OSD位置:通常指在OSD画布中,相较左上角原点的相对位置。

  OSD物件:呈现在画布上,表达特定信息,具有特定属性的像素组合。

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2461902.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存