当前位置: 首页 > 工具软件 > Osd-Lyrics > 使用案例 >

osd的原理

夏烨霖
2023-12-01

OSD(On Screen Display)是屏幕显示技术的一种,用于在显示终端上显示字符、图形和图像。

显存,也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。我们在显示屏上看到的画面是由一个个的像素点构成的,而每个像素点都以4至32甚至64位的数据来控制它的亮度和色彩,这些数据必须通过显存来保存,再交由显示芯片和CPU调配,最后把运算结果转化为图形输出到显示器上。

显存计算:
width * height * PIXEL_SIZE(位深度)
8bit  16bit  32bit
U32 *p = (U32*)GetMemoryAddr();
p[y * width + x] = 0xffff0000;
比如分辨率是1280*720,图像模式是ARGB8888,你的显存buffer就是1280*720*4。如果是ARGB1555,1280*720*2,4和2代表位深度,也就是字节数

分辨率1280*720,图像模式是ARGB8888,一块屏幕上,一行有1280个像素点,一列有720个像素点,一个像素点由4个字节的数据来控制

实现的过程为:显存的内容与显示终端上的像素一一对应。这种一一对应的关系一般通过寄存器设置,然后由硬件上来负责实现。对存储器内容的操作便改变了屏幕的像素,从而可以实现特定界面的显示。实际上这也是一般数字显示器进行显示的方法。例如:320*240 单色(1 Bit)像素的OSD,需要40*240 Bytes的存储空间与其对应;320*240 16色(4 Bits)像素的OSD,需要160*240 Bytes的存储空间与其对应

现在已经可以通过修改存储单元内容来改变OSD的像素,但还有个关键的问题是如何根据需要来进行操作,即如何将某个像素设置为指定颜色。接下来就要介绍一下色板的概念。

某个Byte中的低四Bit内容与一个像素一一对应,其值为“3”,那么数字“3”所代表的颜色便由色板来决定,然后再驱动OSD屏幕将像素设置为制定颜色。同样地,

这种色板和物理OSD显示屏幕的对应关系一般也是通过寄存器设置,由硬件上来保障实现的。对于特定的显示环境,这种色板一般是固定的


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


1.外部OSD发生器与视频处理器间的叠加合成的实现原理是:由一个MCU内建的字符发生器及显示缓存,利用快速消隐(Fast-Blank)信号切换电视的画面和OSD显示内容

使OSD的字符等内容叠加在最终的显示画面上,在OSD和显示画面叠加处理过程中,通过调整两者之间的比例可以实现OSD的半透明(Blending)效果。同时,

对OSD信号中的红绿蓝信号进行重新编码,可以得到不同的OSD颜色效果。


2.另外一种实现方法是视频处理器内部支持OSD,直接在视频缓存内部叠加OSD信息。这一类视频处理通常具有外部存储器或内部少量的行缓存,同时具有OSD发生器,

OSD的合成和控制直接在视频缓存内完成,同样具有上述的半透明和颜色控制功能。

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


字符型OSD:为了节约显示缓存,早期及低成本的解决方案中使用字符型OSD发生器,其原理是将OSD中显示内容按照特定的格式(12×18、12×16等)进行分割成块,

例如数字0-9、字母a-z、常用的亮度、对比度符号等,并把这些内容固化在ROM或Flash中,在显示缓存中仅存放对应的索引号,这样的“字典”结构可以大幅度减少显示缓存

的需求。同时,为了提供对每个字符的颜色等属性的控制,通常还具有一个与显示缓存一样大小的属性缓存,其属性(前景颜色、背景颜色、闪烁等)对整个字符中的每个像素

有效。为了弥补这种方式不能为每个像素指定颜色的缺点,OSD发生器的设计者提供了采用多个显示缓存合并的方式呈现多色字符的方案。其原理是每个显示缓存确定一种

颜色方案,当两个甚至更多个显示缓存合并以后就可以“拼凑”出超过两种颜色的多色字符。


字符型OSD优点是可以使用OSD内部较少的显示缓存,并且MCU只需要指定显示内容的索引即可显示对应OSD信息,可以在比较低速的MCU上实现。但正是由于上述的

显示信息和颜色编码方式不够直观,会给字符型OSD的固件开发带来一些麻烦。通常液晶显示器、低成本的平板电视和CRT传统电视上均使用这一类OSD,

目前仍占据着市场主流地位。


相较字符型OSD,位图OSD的处理原理较直观和简单:通过对最终显示内容上特定区域的每个像素点进行改变,直接将OSD信息叠加到最终的显示画面上,

其按像素进行控制的方式可以保证具有多色及足够的表现能力。位图OSD发生器通常内建在视频处理器内部,并共享使用其主显示缓存。也有独立在视频处理器之外

的专业OSD位图发生器,如美信的MAX4455,通常这一类芯片需要外部SDRAM作为显示缓存。


位图OSD的显示效果理论上可以做到非常完美的程度,可以提供类似Windows中具有立体感的各种物件,如具有阴影的按钮、颜色丰富的图形和文字等,其缺点是必须具有

足够的OSD显示缓存,以及按像素进行处理而对MCU带来的速度要求。通常在大尺寸的高端平板电视和专业显示器上会使用这一类OSD。随着技术的不断发展和存储器的成本

的不断下降,未来的OSD应该都是位图型的。

osd绘制一般会采用双buffer的缓存机制

一个buffer是我们能看到的,一个是看不到的,绘制的时候先把看不到buffer数据处理好,真的绘制的时候,把这个buffer 的数据拷贝到看得到的buffer里面

 类似资料: