微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于TMS320C64x 的MPEG-4实时编码器设计与实现

基于TMS320C64x 的MPEG-4实时编码器设计与实现

时间:11-01 来源:互联网 点击:

采用预测平均每个宏块所需的
SAD值计算次数
峰值信噪比PSNR(dB)平均帧率(fps)
533.16120
1533.2395

3 基于C64x CPU的软件优化技术

  为了提高代码的执行效率,必须充分利用C64x CPU的VLIW和流水线结构对其进行优化,使程序无冲突地并行执行。MPEG-4编码程序中包含大量的循环体,例如计算SAD值、量化、DCT、半像素插值、运动补偿和构建重建帧等。这些循环体代码并不复杂,但执行次数频繁,占据了编码的绝大部分时间,因此循环体的优化是重点。本文所采取的代码优化分为C语言优化和编写线性汇编两个步骤,主要从消除数据相关性、数据打包和循环体的软件流水三个方面进行优化。

3.1 针对C语言的优化

  C代码的优化主要依靠开发环境CCS的编译器完成,编程者需要合理选择编译选项,并利用特定的关键字和指令向编译器提供优化信息。例如关键字restrict用来消除数据间的相关性,编译器从而可以安排语句的并行执行;内联函数_nassert有助于数据的打包处理;宏指令#pragma MUST_ITERATE告诉编译器有关循环迭代次数的信息,编译器会根据这一信息进行软件流水。

3.2 用线性汇编改写关键代码

  线性汇编是TMS320C6000特有的一种编程语言,介于高级语言和汇编语言之间。它可以指定指令用到的寄存器和功能单元,更易于对数据的打包处理。

  线性汇编代码的并行处理和软件流水由汇编优化器完成,编程者需要熟悉C64x DSP的CPU结构和指令集,认真设计代码并充分利用编译器的反馈信息合理修改代码,才能写出高质量的线性汇编。本设计中程序主框架采用C语言编写,其它各关键部分的代码采用线性汇编实现。表2是代码优化前后的效率对比,表2中所列各代码段均针对8×8宏块进行处理。
表2 各关键代码优化前后消耗指令周期数对比
代码段未优化C优化后线性汇编优化后
SAD值计算14005534
量化1250238108
逆量化1200291170
FDCT136029296
IDCT1600373102
半像素插值2800466246
运动补偿、做差195016059
重建宏块100089088

4 结果分析

  对各标准视频序列进行编码,测得表3所示数据。实时采集D1(720×576)分辨率的视频进行编码,测得码率为850kbps时,编码速率达25fps以上,峰值信噪比(PSNR)高于31dB,实现了高分辨率的实时MPEG-4编码。
表3 标准视频序列的编码结果
视频序列分辨率码率(bps)PSNR(dB)平均帧率(fps)
NewsQCIF100k36.23480
SilentQCIF100k35.66485
ForemanQCIF100k32.04465
ForemanCIF300k33.16120

  表3中各视频序列的编码均采用了8×8半像素精度的运动估计,解码图像的视觉效果较好。对于较低分辨率的视频(QCIF、CIF),其编码速率已远远高于实时的要求,因此可以考虑添加新的算法以提高压缩效率并增强码流的抗差错性能。

  本文以DM642芯片为例详述了基于C64x DSPs的MPEG-4实时编码器设计。编码器采用MPEG-4 Simple Profile算法,在算法和代码优化方面还有一定的研究空间。本文给出的设计方法可以进一步推广到H.264或者其他视频编码系统。

参考文献

1 Prasad RSV, Ramkishor korada. Efficient implementation of MPEG-4 video encoder on RISC
core[J].IEEE Transactions on Consumer Electronics, 2003;47(1):1~6
2 A. Dasu, S. Panchanathan. A Survey of Media Processing Approaches[J]. IEEE Trans.on
Circuit and System for Video Technology, 2002;12(8):1~13
3 Tihao Chiang, Hung_Ju Lee, Huifang Sun. An overview of the encoding tools in the
MPEG-4 reference software[J].In-ternational Symposium on Circuits and Systems,
2000; May 28-31:1~4

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top