OSD原理以及模块的讲解

一.原理讲解

1.OSD的概念:

OSD(on-screen-display)中文名称是屏幕菜单调节显示方式,它的作用是对屏幕显示器做各种工作指标,包括:色彩、几何图形等进行调整,从而使得整个显示器得到最佳的状。

最常见的OSD调试就是在屏幕上添加水印、LOGO。OSD技术广泛运用在PC个人电脑、电视机顶盒、ETC屏幕显示等等,后来随着网络技术的发展OSD调节也从屏幕发展到了编码图层的叠加,换言之在编码图层也可以通过OSD的叠加方法显示出自定义的图层。

             (OSD应用在音视频推流上)     

                                             (OSD应用在ETC上)

OSD的实现原理:

OSD实现一般分为下面几个部分,分别是视频信号处理、OSD图像的生成、OSD图像的叠加

1. 视频信号的处理:

OSD叠加的第一个步骤,就是要对视频信号进行处理。这种信号处理就是要从模拟信号转换成数字信号,转换完成之后需要通过芯片对数字信号进行后处理工作,包括:去噪、锐化等等。

2.OSD图像的生成

视频数据经过数字信号处理后,就可以对其进行OSD图像的生成。OSD的图像包含很多种类型,比方说LOGO图形、文字、图标等,而生成OSD图像的方式一般分为软件模式和硬件模式。

硬件模式是利用专门的OSD处理芯片,通过硬件的图像合成器将OSD图像和视频信号合成,整个过程CPU不去进行处理。

软件模式是通过软件的图像处理算法生成OSD图像,整个过程CPU都参与处理,常用的OSD生成的框架有:OPENCV、 FFMPEG等。

   

(OSD硬件生成器)                                                              (OSD软件生成器)

二. RV1126的OSD模块讲解

1.RV1126的OSD结构体模块

在RV1126开发OSD模块的时候,一般要使用下面的结构体分别是

OSD_REGION_INFO_SBITMAP_S

OSD_REGION_INFO_S主要作用是是在编码图像里面划分一个OSD区域,相当于在编码图像中空出一块空间给OSD图层来用

BITMAP_S的作用是向OSD图层以位图的形式把具体的内容显示出来,下面是OSD_REGION_INFO和Bitmap的关系:

从上面这张图可以看出来,BITMAP_S包含在OSD_REGION_INFO里面,BITMAP_S是OSD_REGION_INFO的具体内容。

OSD_REGION_INFO_S结构体

enRegionIdOSD区域的索引值

取值范围是[0,7],具体ID的枚举组成看图region_id。0-7层叠加是由优先级逐步上升,优先级越高OSD的层数就位于更高的图层,RV1126里面总共提供8个区域进行OSD区域的描述。如图region_id_venc是区域索引ID:REGION_ID_0到REGION_ID_7的图示,对于RV1126来说REGION_ID相当于同时可以描绘8个OSD区域在VENC编码数据里面。

            图region_id

                    图region_id_venc

  1. u32PosXOSD图层的X轴坐标,X轴的坐标轴必须要16位对齐(换言之:X轴的值要被16整除才行)

  2. u8EnableOSD区域是否使能,基本上填写使能,默认是1

  3. u8Inverse是否反色,0是不要反色,1反色

  4. u32HeightOSD图层区域的高度,高度必须16位对齐,一般而言osd_info的高度和bitmap的长度一致

  5. u32WidthOSD图层区域的长度,长度必须16位对齐,一般而言osd_info的长度和bitmap的长度一致

  6. u32PosYOSD图层的Y轴坐标,Y轴的坐标轴必须要16位对齐(换言之:Y轴的值要被16整除才行)

​​​​​​​​​​​​​​BITMAP_S结构体

enPixelFormatBitmap位图支持的像素,下面是支持的像素,目前RV1126的OSD只支持ARGB_8888的像素。

注意:RV1126OSD图像目前只支持ARGB8888格式绘制。ARGB指的是在RGB模式上,增加一个Alpha通道;8888表示的是每个通道用8位来表示,每个通道0-255之间的一个值,每个像素点的大小是8+8+8+8=32位表示。

u32WidthBitmap的宽度,一般而言跟OSD_INFO宽度一致

u32HeightBitmap的高度,一般而言跟OSD_INFO高度一致

pData位图的地址数据,也就是Bitmap的具体信息

2.RV1126的OSD模块API讲解

第一个参数:编码通道号,VENC_CHN。

第二个参数:OSD_REGION_INFO_S结构体指针,OSD区域的信息。

第三个参数:BITMAP_S结构体指针,Bitmap的信息和数据。

3.OSD图像的叠加

最后一步就是把OSD的图像进行叠加,所谓叠加就是把OSD图像和视频信号结合在一起。OSD信号叠加一般分为两种一种是上方叠加、另外一种是下方叠加,上方叠加相当于把OSD图像显示在视频的顶部、下方叠加相当于把OSD图像显示在视频的底部。

OSD叠加的原理也非常简单,就是把OSD图像的像素点和视频信号的像素点进行合成,并且在合成的过程中可以通过调整位置、大小等参数显示出来。

 

                             (OSD叠加原理)          

                   (OSD顶部位置、底部位置)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值