RV1126的OSD模块讲解
一、RV1126的OSD结构体模块
在RV1126开发OSD模块的时候,一般要使用下面的结构体分别是OSD_REGION_INFO_S和BITMAP_S。(俩个结构体)
OSD_REGION_INFO_S主要作用是是在编码图像里面划分一个OSD区域,相当于在编码图像中空出一块空间给OSD图层来用,BITMAP_S的作用是向OSD图层以位图的形式把具体的内容显示出来(实现具体的功能),下面是OSD_REGION_INFO和Bitmap的关系:
从上面这张图可以看出来,BITMAP_S包含在OSD_REGION_INFO里面,BITMAP_S是OSD_REGION_INFO的具体内容。
1.1.OSD_REGION_INFO_S结构体(选定区域)
1.1.1、enRegionId:OSD区域的索引值,取值范围是[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编码数据里面。
1.1.2、u32PosX:OSD图层的X轴坐标,X轴的坐标轴必须要16位对齐(换言之:X轴的值要被16整除才行)即x,y要满足下图这个坐标形式;
1.1.3、u32PosY:OSD图层的Y轴坐标,Y轴的坐标轴必须要16位对齐(换言之:Y轴的值要被16整除才行
1.1.4、u8Enable:OSD区域是否使能,基本上填写使能,默认是1u8Inverse:是否反色,0是不要反色,1反色
1.1.5、u32Height:OSD图层区域的高度,高度必须16位对齐,一般而言osd_info的高度和bitmap的长度一致
1.1.6、u32Width:OSD图层区域的长度,长度必须16位对齐,一般而言osd_info的长度和bitmap的长度一致
1.2.BITMAP_S结构体(填充内容)
1.2.1、enPixelFormat:Bitmap位图支持的像素,下面是支持的像素,目前RV1126的OSD只支持ARGB_8888的像素。注意:RV1126的OSD图像目前只支持ARGB8888格式绘制。
注:采用四个通道;所以是四个8
ARGB指的是在RGB模式上,增加一个Alpha通道;8888表示的是每个通道用8位来表示,每个通道0-255之间的一个值,每个像素点的大小是8+8+8+8=32位表示。(其中A表示的是透明度);
1.2.2、u32Width:Bitmap的宽度,一般而言跟OSD_INFO宽度一致
1.2.3、u32Height:Bitmap的高度,一般而言跟OSD_INFO高度一致
1.2.4、pData:位图的地址数据,也就是Bitmap的具体信息
二、RV1126的OSD模块API讲解
第一个参数:编码通道号,VENC_CHN。
第二个参数:OSD_REGION_INFO_S结构体指针,OSD区域的信息。
第三个参数:BITMAP_S结构体指针,Bitmap的信息和数据。