当前位置:首页 > 技术 > 企业通信 > 视像通信 > 基于i.MX27的网络音视频通信的实现

基于i.MX27的网络音视频通信的实现

2009-09-27 00:00:00   作者:   来源:   评论:0  点击:












  Linphone1.6.0 本身具有视频编解码功能,默认具有H263 、mpeg4、mjpeg等编解码器,我们要仿照这些编解码器的源码结构添加H264解码器,重要的是将编解码器的软件编解码部分替换成i.MX27的 VPU(视频处理单元)来进行硬件编解码,因为i.MX27的CPU处理速度有限,远及不上PC的CPU,而i.MX27的VPU则是专门进行视频编解码处理的协处理器,在处理视频数据的时候是不需要CPU参与。

  代码的添加过程如下:在向Linphone注册编解码器的地方添加H264编解码器,使得Linphone具备H264编解码器的功能选项,注册的内容包括:编解码器id,一些名称文本等标识符,编解码器初始化,视频数据预处理、处理、后处理,编解码器销毁(释放系统资源)等函数链接,编解码器方法(进行基本视频编解码处理之外的操作)等。注册好编解码器后,就是如何真正实现编解码器对视频流的编解码处理了,也就是编解码器的初始化,视频数据预处理、处理、后处理,编解码器销毁等函数的实现。视频处理的软件部分主要包括内核空间的驱动和编解码库以及用户空间的应用程序。内核驱动负责系统控制和系统资源的申请和释放,提供一些IOCTRL接口给用户空间的应用程序使用调配系统硬件资源;用户空间的应用程序调用适当的IOCTRL和编解码库函数来实现复杂的编解码系统。

  VPU的内核驱动主要包括以下功能:模块初始化、器件初始化、中断服务策略、文件操作策略、器件关闭、编解码库、系统IO操作等。


  视频编解码的计算和绝大部分视频流的压缩/解压缩都是由i.MX27的硬件VPU单元来完成的,这样软件就不需要过多的控制或者时间消耗等来实现一个复杂的编解码系统。VPU的硬件数据流可以用一个mpeg4格式数据的解码实现过程展示(见图2)。



  硬件编解码速度快、效率高、功耗和热功耗低,节省了CPU的资源,实现了良好画质的传输,这一点充分体现了i.MX27芯片在视频处理方面的优势。
结语

  本文基于linphone、ffmpeg、speex、minigui、linux等开源软件实现了嵌入式可视终端软件系统——视传机样机,如图3所示。样机充分使用已有的开源软件成果进行开发,实现语音通话,视频通话,视频监控,媒体文件播放等基本的功能。

电子产品世界

相关阅读:

分享到: 收藏

专题