老哥学习网 - www.lg9.cn 2024年04月25日 13:41 星期四
当前位置 首页 >诗词歌赋 >

视频解码器的作用_MPEG—4视频解码器的设计与优化

发布时间:2019-04-16 06:39:34 浏览数:

  摘 要: MPEG-4标准是最有影响的多媒体数据编码国际标准之一,具有高压缩比、可扩展性、可交互性等诸多优点,逐渐成为现代视频编码领域的主流标准。为加快视频解码的速度,在分析MPEG-4视频编解码标准的基础上,利用GPU加速视频解码的并行架构方案,对解码算法中的DCT变换、运动估计和运动补偿算法分别进行了优化。实验测试显示,优化后的MPEG-4视频解码器解码速度平均提高了25%,具有一定的实用价值。
  关键词: 视频压缩编码; MPEG-4; 视频解码器; 图形处理单元
  中图分类号:TP393.04 文献标志码:A 文章编号:1006-8228(2013)01-06-02
  Design and optimization of MPEG-4 video decoder
  Li Xiang
  (Network Center, Department of Information Engineering, Lanzhou VOC-TECH College, Lanzhou, Gansu 730070, China)
  Abstract: The MPEG-4, one of the most influential international standards of multimedia date code, has many advantages: the high compression ratio, the property of expanding and the property of switching. It has already gradually become the main standard in the realm of modern video frequency code. In order to accelerate the speed of the video decoding, on the basis of analyzing the coding and decoding standards of MPEG-4 video, a project abreast of parallel structures to accelerate the decoding of video frequency is designed. Decoding algorithm DCT, motion estimation and motion compensation algorithm are optimized. Finally through the test, the optimized MPEG-4 video decoder decoding speed increases by an average of 15%. It has certain practical value.
  Key words: video compression; MPEG-4; video decoder; GPU
  0 引言
  作为第一个面向对象的视频编码标准,MPEG-4的出现具有很强的历史意义[1]。由于其广泛适用于实时监控、多媒体通信、网络的可视化合作等多媒体应用场合,使基于MPEG-4标准的视频编解码技术受到前所未有的重视。本文针对MPEG-4系统提出了一种GPU+CPU并行实现架构,并在PC平台实现了基于DCT算法改进的MPEG-4解码器软件设计,所设计的解码器具有实时高效和控制灵活的特点,并加快了视频解码的速度。
  1 并行解码器架构
  传统的解码器都是基于MB Level的,也就是说,依照次序对每一个宏块完成IQ(逆量化)、IDCT(逆DCT变换)和MC(运动补偿)。由于CPU和GPU之间频繁的小块数据交换非常低效,而且绘制小图形也不能充分发挥GPU的性能,因此这种方式并不适合在GPU上实现。
  适合在CPU+GPU的体系上实现的并行解码器架构是基于帧级(Frame Level)的,把包括运动补偿、相加和帧缓冲的整个反馈回路都放到GPU上去执行,图1为分级的并行解码器构架原理图。原理图中整个反馈环都已经并入了MC的框图之中,由于缓冲区的存在,GPU上执行的部分可以延后X帧。CPU和GPU可以并行工作,显然这非常有利于解码速度的提高。并行解码器可以分3个级别来分别实现,解码器的3种架构级别分别对应不同的硬件情况:如果CPU性能比GPU强很多,就可以选择级别1,反之则选择级别3,级别2则介于两者之间。事实上,这3种级别是可以切换的。在解码过程中,通过动态地在3种级别间进行切换,可以比较合理地将任务分配给CPU和GPU[2]。
  2 MPEG-4视频解码器的软件算法优化
  2.1 MPEG-4视频的解码流程
  解码器是基于Frame Level的,无论是MC,还是IDCT或者IQ,当它们在GPU上实现时,每一步的操作都是针对同一帧上的所有宏块的。VOP是MPEG-4的基本编码单元,它包含视频对象边框的尺寸。图2是MPEG-4的解码流程,可以看出MPEG-4视频解码主要由三部分组成:形状解码、运动解码和纹理解码,重建的VOP是通过合并解码的形状、运动和纹理信息得到的[3,4]。
  2.2 解码算法优化
  2.2.1 IDCT变换的优化
  从复杂度上分析,DCT变换是很耗时的,为了减少这部分的计算量,需要对它进行优化。在DCT变换前,需要根据信号能量的量化因子QP进行DCT模式选择,模式选择我们设定了0×0 DCT变换、1×1 DCT变换、2×2 DCT变换、4×4 DCT变换、8×8 DCT变换五种。首先根据二维DCT/IDCT计算公式进行行列分离,把二维的DCT变换转化为一维的DCT变换。然后采用一维DCT快速算法进一步降低其复杂度。   在帧间模式下,通过当前块的量化因子QP和信号能量值作DCT模式选择可以减少计算量。为了简化计算,取绝对差之和SAD来近似信号能量值。此外,为了减少误判率和加快计算速度,在0×0 DCT变换和8×8 DCT变换两种模式基础上加了1×1 DCT变换、2×2 DCT变换、4×4 DCT变换三种模式。
  2.2.2 运动估计优化
  运动补偿是MPEG-4视频解码的核心之一。在编码过程中,通过块的匹配得出运动矢量信息,同时也会得出当前编码块的残差信息。由于残差信息带有的信息量较少,可以通过纹理进行编码。通过逆向推导,解码时运动补偿通过从码流中获取运动信息,进而解码出运动矢量。然后根据运动矢量从参考帧中得出预测值。最后将预测值与解码的纹理信息相加,即得到实际的图像。由于MPEG-4(简单框架)处理的都是基于块对象的,因此不涉及形状编码,无需填充过程[5]。
  3 MPEG-4视频解码器的实现
  3.1 MPEG-4压缩视频的码流结构
  MPEG-4标准定义了MPEG-4码流中的每一位的具体含义,MPEG-4码流的组织形式是按分层的形式组织起来的。首先是码流头,又叫起始码字,是一个在码流中其他地方不会出现的一个比较长的特殊序列,具体的头信息定义了整个码流的一些特征。接下来是帧头,帧起始码字和具体的帧头信息,定义了当前帧的一些特征,这些信息决定了该如何解码当前帧。从宏块头开始就是具体的数据,宏块头并没有一个宏块起始码字,它紧跟在帧头信息后面。
  应用程序调用相关接口函数,通过封装静态链接库的方法可以实现解码器。在视频序列解码的不同阶段分别调用相关的接口函数,首先调用getvophdr获取VOP的头信息,然后调用macroblock函数实现帧解码。
  3.2 头信息的解码[6]
  首先看V0、VOL、VOP头信息的编解码过程。编码时,若编码第一帧,则首先调用函数PutVoVolHeader对V0、VOP的头信息进行编码,接下来对每一帧编码时,即编码VOP时,首先调用函数BitstreamPutVopHeader对每个VOP的头信息进行编码。与此相对应,在解码时,首先调用函数getvophdr,解码V0、VOL的头信息,然后在解码每一帧时,调用函数getvophdr获取VOP的头信息。
  3.3 VOP解码
  头信息解码完成之后,调用函数get_mp4picture对每个VOP进行解码。该函数的实现过程为[6]:
  ⑴ 初始化宏块的循环控制变量;
  ⑵ 循环调用宏块解码函数macroblock对VOP中的每一个宏块进行解码;
  ⑶ 调用函数make_edge对上一步获得的解码帧frame_ref(亦作为参考帧)进行边填允;
  ⑷ 调用函数PictureDisplay将frame_ref图像转换为bmp图像;
  ⑸ 将当前帧与参考帧交换。
  3.4 宏块的解码
  VOP解码的整体过程中最关键就是函数macroblock的实现。VOP的编码过程是基于宏块的,所以VOP解码过程同样是基于宏块的,因此此函数是解码的核心函数,它一方面通过VLD(可变长解码)、RLD(行程解码)、IQ(逆量化)、IDCT(逆DCT变换)解码出原始图像值(I_VOP)或误差值(P_VOP);一方面解码出运动矢量Motion Vector,并进行MC(运动补偿)[7]。
  4 结束语
  为了验证GPU+CPU加速视频解码方案和相关算法优化的效果,我们采用XVID作为模拟验证软件。软件测试的计算机硬件配置为Intel奔腾双核E5300 CPU,2GRAM,GeForce 9500GT GPU。软件实现的软件环境为Windows XP 中文专业版操作系统平台,采用VisualC++7.0为程序开发环境[8]。
  通过选取标准视频QICF文件做了视频编码后作为测试的视频序列,测试其优化前和优化后解码一帧所需要的时间,从而对同一帧的解码时间进行比较。从测试结果看,视频解码速度优化前与优化后的平均解码时间差有15ms。解码器对于所有的视频序列解码速度平均提高了25%,解码的视频质量能让人眼所接受,证明GPU辅助CPU加速解码,对DCT算法、运动估计和运动补偿算法的改进是行之有效的。
  参考文献:
  [1] 尤会明,杨杰.MPEG-4视频编码分析[M].武汉理工大学学报(信息与管理工程版),2005.27(5):136-139
  [2] 房波.基于通用可编程GPU的视频编解码器——架构、算法与实现[D].浙江大学,2005.
  [3] 张志伟.一种远程矿井瓦斯浓度检测仪的设计[M].煤矿安全,2011.42(5):78-80
  [4] 赵丽鲜,苏鸿根.MPEG-4视频编解码器设计实现与性能优化[J].计算机工程与设计,2009.30(12):3001-3004
  [5] 张石,张明亮,鲍喜荣,佘黎煌.MPEG-4视频解码模块的设计与优化[J].计算机工程,2007.5:193-195
  [6] 刘璋.MPEG-4视频解码器的设计与优化[D].华中科技大学,2006.
  [7] 沈承东.MPEG4视频编码算法的研究与实现[D].国防科学技术大学,2002.
  [8] 张志伟.电磁带隙结构在同步开关噪声抑制中的应用分析[M].电讯技术,2010.50(3):64-68

推荐访问:解码器 优化 设计 视频

相关文章:

Top