EDN China > 技术文章 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于MPEG-4的嵌入式DVR分析与实现

来源:计算机应用研究 /裴先登 许琼涛 黄浩?? 2007年11月09日 ?? 收藏0

  (2) VOP (Video Object Plane)编码技术。VOP是视频对象(VO)在某一时刻的采样,它也是MPEG-4视频编码的核心概念之一。MPEG-4在编码过程中针对不同VO采用不同的编码策略,即对前景VO的压缩编码尽可能保留细节和平滑;对背景VO则采用高压缩率的编码策略,甚至不予传输而在解码端由其他背景拼接而成。这种基于对象的视频编码不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,从而既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间。而且MPEG-4支持任意形状图像与视频的编解码。对于任意形状视频对象,MPEG-4则采用VLBV (Very Low Bit rate Video,极低比特率视频)核进行编码。

  在嵌入式DVR应用的场合中有一个很大的特点:背景对象是静止不动或者是极少运动的。因此对背景对象可以根据实际情况,或采取高压缩率编码,或只在较少的帧中出现,这样可以极大地降低对存储和传输的压力。上面这种方法就是MPEG-4中的Sprite编码思想, Sprite称为镶嵌图或背景全景图。一个Sprite是由一个视频对象在视频序列中所有出现部分经拼接而成的一幅图像。通过Sprite编码,先将背景Sprite送到解码端并生成背景图,其后就只需要传输少量的参数即可,可以减少整个视频传输过程中的数据量,实现高压缩比。而且对于Sprite图像为了减少延迟,还可以使用MPEG-4的分级传输功能,进行分层逐块传输。

  (3) 可扩展编码技术。扩展性编码也是

可分级性编码,视频的可分级性( Scalability)是指码率的可调整性,即视频数据只压缩一次,却能根据实际情况以不同的帧率、空间分辨率或视频质量进行解码,从而可支持多种不同的应用要求。扩展性编码分为空域扩展和时域扩展编码。MPEG-4通过视频对象层(VOL)数据结构来实现分级编码,在扩展性编码中视频序列分为两层:基本层和增强层。基本层提供了视频序列的基本信息,增强层提供了视频序列更高的分辨率和细节。在嵌入式DVR中,采用MPEG-4的基于对象的分层传输思想,使用空域和时域的扩展编码调节空间分辨率和帧率。这样,一方面可以方便地实现码率控制,可以很好地使网络带宽发生变化;另一方面,也可以实现用户与DVR的交互性能,用户可以方便地选择分辨率和帧率,以得到满意的视频效果。

  (4) 运动估计与运动补偿技术。MPEG-4采用I帧、P帧和B帧三种帧格式来表征不同的运动补偿类型。I帧使用帧内压缩,只利用空间相关性,不使用运动补偿,所以不依赖于其他帧,是解码的基准帧。I帧图像周期性出现在图像序列中。P帧和B帧图像采用帧间编码方式,同时利用了空间和时间上的相关性。P帧采用前向时间预测,可以提高压缩效率和图像质量,B帧采用双向时间预测,更大地提高压缩倍数,但是B帧不能作为其他图像编码的参考帧,不能进行随机存取。因此,在嵌入式DVR的应用中,当用户可用带宽比较低的情况下,可以只转发I帧和尽可能少的P帧,可以降低传输的码率,还可以得到可以接受的视频质量。

  3 基于MPEG-4的嵌入式DVR中的实现

  3. 1 硬件实现

  基于MPEG-4的嵌入式DVR硬件实现如图1所示,采用如下的方案:

  (1) DSP选用TI公司推出的TMS320C6416,工作频率达750MHz,运算速度可达到4000MIPS。

  (2) ARM 板采用ARM 嵌入式系统扩展板( CY-ARM4510B) 。

  (3) PCI接口板(CY-PCI2.2) 。

硬件框图


  
图1 硬件框图

  3. 2 软件实现

  软件部分用ANSI C编写,用GNU Make-3.74或更高版本的GCC编译器进行编译。MPEG-4编解码部分是在MPEG-4提供的框架下根据嵌入式DVR应用的实际情况进行了一些简化和优化后实现的。主要从下面三个方面对代码进行优化:

  (1)尽量降低代码量,提高数据结构的有效性。因此需要去除对DVR应用中基本不用的结构及处理部分。

  (2)并且尽量是执行控制趋于合理,减少不必要的存储分配和释放,尽量减少对外部存储器的访问。

  (3)改进ME/MC ( FastMotion Estimation and Motion Compensation)来提高编码效率。

  程序分为三个部分:编解码公用的部分、编码部分和解码部分。根据上面提到的优化思想,我们对程序进行了优化。经过优化后,VOP的结构体进行了很大的改变,保留了基本的语法元素项,对Sp rite进行了一些简化,定义如下:

  struct vop
{
/* VOP的语法元素* /
Int p rediction_type; /* VOP类型* /
Intmod_time_base; /* VOP绝对基本时间* /
Float time_inc; /* VOP相对mod_time_base时间* /
Int vop_coded;
Int rounding_type;
Int width; /* VOP宽度* /
Int height; /* VOP高度* /
.


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

MPEG-4? DVR? 嵌入式? 数字视频录像机?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈