先看下效果图 红色为主码流通道,白色为子码流通道,支持中文显示 后期还要实现多行显示 不同位置显示 以及左对齐 右对齐的问题
通常来说 IPC 都需要实现OSD的功能 即在视频上需要叠加时间戳 已经标识当前的主码流子码流等信息
之前在海思3518EV300平台实现过 下图即是海思3518EV300 的摄像头上的实际效果
实际上的原理并不复杂 ,就是把osd内容转为位图然后叠加到yuv数据上面
osd转位图这个过程 大部分是通过freetype来实现的,之前的海思上也是
但是之前海思的代码直接移植过来之后 显示并不正常 如下:
直接显示了两行 然后字体颜色也不对 不是纯白的
经过一段时间的不断摸索,终于找到了原因。
原因就是海思平台的OSD支持的像素格式有很多种然后用的是ARGB565 (此电脑上没有海思的代码)具体名字不记得了大概 总之就是一个像素占用2个字节
而RK1126平台的OSD格式支持格式如下
只支持一种 PIXEL_FORMAT_ARGB_8888 也即一个像素占用4个字节 在所有涉及到相关的地方都改成4个字节的方式操作即可 如下的两个地方 都需要修改下 不然显示就会不正常