修改TI Davinci IPNC显示的OSD LOGO

最近需要修改Davinci本地输出显示的Logo,但是TI的 Software OSD on DM36x  User Guide写得很模糊,很多东西都不全,于是决定绕开TI提供的工具,使用开源社区的工具重新制作一遍。
1. 生成一副160x64的jpeg图片
这里推荐用Ubuntu下的GIMP工具,不过也可以用其他工具
2. 将160x64的jpeg图片转换成yuv422
这里使用IMAGE MAGICK工具,在ubuntu需要安装如下包:

sudo apt-get install imagemagick

安装完之后对应使用convert命令:

convert LAB1307.jpg LAB1307.uyvy

这里转换后的顺序是uyvy422
3. 将得到的图片重命名,否则ffmpeg无法识别

cp LAB1307.uyvy LAB1307.yuv

4. 用ffmpeg将uyvy422格式转换成yuv420p
ffmpeg在ubuntu下有大量的安装包和插件,尽量装全吧:

ffmpeg -pix_fmt uyvy422 -s 160x64 -i LAB1307.yuv -pix_fmt yuv420p LAB1307_420p.yuv

注意:这里解释一下,用-pix_fmt设置图像的格式,用-s设置图像大小,-i用来指定输出文件,ffmpeg -pix_fmts命令可以查看所有支持的格式, 这里务必需要使用-pix_fmt以及-s选项,否则无法正常转换
另外这里生成的LAB1307_420p.yuv可以使用mplayer播放来验证是否是yuv420p格式的图像,如下图所示:

mplayer -demuxer rawvideo -rawvideo w=160:h=64:format=i420 LAB1307_420p.yuv -loop 0

修改TI Davinci IPNC显示的OSD LOGO - 小辉辉 - 小辉辉的博客
  mplayer在ubuntu下也有大量的安装包和插件,尽量装全吧
5. 用bin2c得到yuv数组
bin2c是一个很简单的小程序,sourceforge上可以下载源码:
http://sourceforge.net/projects/bin2c/files/latest/download ,下载下来之后解压,然后直接用gcc编译即可,因为只有一个文件,所以没有makefile吧,囧。

unzip bin2c-1.0.zip

cd bin2c/
gcc bin2c . c - o bin2c

然后用bin2c命令得到yuv数组

bin2c -o C_YUV.c LAB1307_420p.yuv

6. 分离Y通道和UV通道
由于IPNC上需要分离Y和UV通道,因此还需要将得到的C_YUV.c数组中的Y和UV分量提取出来,其实YUV420P的存放顺序很简单,可以参考yuv的wiki: http://en.wikipedia.org/wiki/YUV,这里引用一张wiki上的图片:
修改TI Davinci IPNC显示的OSD LOGO - 小辉辉 - 小辉辉的博客
如果假设图片宽x,高y,那么前x*y个像素点都是Y,再往后面x*y/4个像素点是U,再往后面x*y/4个像素点是V, 得到C_YUV.c之后打开看到定义的数组,如果是160x64的话,取前160x64,即10240个数组元素作为Y的值,取剩下的160x64/2,即5120个数组元素作为UV的值,其他尺寸的类似。
注意:在IPNC里面并不是这样定义的,它认为的yuv420p最后存放UV通道的顺序是U0V0U1V1U2V2.....,而不是上图中的U0U1U2...V0V1V2...的顺序,所以得到c数组以后还需要人工转换一下顺序,编写一个简单的C程序即可。
7. 替换IPNC提供的开发包中TI LOGO对应的数组
对应的数组文件在ipnc/av_capture/application/ipnc/av_server/src/fonts目录下,找到对应的分辨率文件修改即可。
8. 重新编译av_server
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值