流媒体直播之十一.I.MX6板中的IPU模块硬件转格式问题

Author: CaoHu
E-Mail: hnu_xiaohu@163.com Version:0.1 Date: 2018-01-29 10:28
Description: My level is limited, if there are some weaknesses, welcome criticism. If the content of the blog is involved in infringement, please contact my mailbox, it will be deleted immediately, welcome to exchange, learn from each other!


这里由于软件编码出现很大的延迟,所以这里根据自己使用的I.Mx6板子上的硬件模块进行硬件转格式与编码,提高速率。。。。

http://blog.csdn.net/u012478275/article/details/52353546?locationNum=15参考博客链接】
前言

飞思卡尔的vpu可以实现硬件的编解码,同时也提供了ipu接口,可以实现视频流格式的转换,例如YUV422转为YUV420,YUV422转化为RGB888,当然我们也可以通过软件纯代码实现这些功能,但有时候代码实现总是有许多的缺陷,当你视频流很大时,纯代码就无法实现我们想要的效果。

一、ipu环境配置

首先,你需要配置好LTIB环境,如果你没配置好,可以参考文档飞思卡尔I.MX6Q-LTIB安装配置去配置,配置完成可以在/ltib/rpm/BUILD/linux-3.0.35/include/linux/目录下找到ipu.h和mxcfb.h,还有一个ipu的库文件/ltib/rootfs/usr/lib/libipu.so,如果你没找到或者没有去配置LTIB环境,也可以直接去下载这些头文件和库文件:点击打开链接,有了ipu的配置环境,后面的程序才能编译通过。

二、ipu视频流格式转换例子实现

ipu不仅可以实现YUV到YUV的转换,还可以实现YUV到RGB转换,同时也可以实现分辨率的改变;对于有些摄像头只支持YUV422的输出,但是如果你编码需要YUV420的视频流,这时候你就需要IPU的转化;如果你需要对摄像头采集数据通过界面显示刷新出来,摄像头采集YUV的数据,通过IPU转化为RGB,就可以通过界面刷新显示;IPU改变分辨率可以实现不同屏幕大小的适配,但需特别强调,输入分辨率只能实现输入小于1024X1024,大于这两个数值会出错。实现上面这些功能代码基本差不多,就改变一些参数就可以了。核心代码如下:
    // Input image size and format  
task.input.width    = 1920;  
task.input.height   = 1080;  
task.input.format   = v4l2_fourcc('N', 'V', '1', '2');  

// Output image size and format  
task.output.width   = 640;  
task.output.height  = 480;  
task.output.format  = v4l2_fourcc('R', 'G', 'B', '3');<span style="white-space:pre">  </span>  

width、height可以改变输入、输出的分辨率;
v4l2_fourcc里面的参数可以实现YUV到YUV的转换,或者YUV到RGB的转换,对于有哪些格式,你可以去ipu.h中去看;
例子代码下载:http://download.csdn.net/detail/u012478275/9616037

Notice:
这里的ipu转格式比较简单。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值