基于TMS320C64x 的MPEG-4实时编码器设计与实现
时间:11-01
来源:互联网
点击:
采用预测 | 平均每个宏块所需的 SAD值计算次数 | 峰值信噪比PSNR(dB) | 平均帧率(fps) |
是 | 5 | 33.16 | 120 |
否 | 15 | 33.23 | 95 |
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值计算 | 1400 | 55 | 34 |
量化 | 1250 | 238 | 108 |
逆量化 | 1200 | 291 | 170 |
FDCT | 1360 | 292 | 96 |
IDCT | 1600 | 373 | 102 |
半像素插值 | 2800 | 466 | 246 |
运动补偿、做差 | 1950 | 160 | 59 |
重建宏块 | 1000 | 890 | 88 |
4 结果分析
对各标准视频序列进行编码,测得表3所示数据。实时采集D1(720×576)分辨率的视频进行编码,测得码率为850kbps时,编码速率达25fps以上,峰值信噪比(PSNR)高于31dB,实现了高分辨率的实时MPEG-4编码。
表3 标准视频序列的编码结果
视频序列 | 分辨率 | 码率(bps) | PSNR(dB) | 平均帧率(fps) |
News | QCIF | 100k | 36.23 | 480 |
Silent | QCIF | 100k | 35.66 | 485 |
Foreman | QCIF | 100k | 32.04 | 465 |
Foreman | CIF | 300k | 33.16 | 120 |
表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
TMS320C64x MPEG-4 实时编码器 相关文章:
- TMS320C64x的16-bit Flash加载的可行性分析与实现(10-16)
- 基于TMS320C64x的MPEG-4实时编码器设计与实现(10-12)
- 用定制DSP设计MPEG-4无线视频产品(04-11)
- TMS320C6201在MPEG-4视频解码器中的应用 (07-13)
- 基于DSP设计MPEG-4无线视频产品(02-16)
- 基于DSP的数码相机中的MPEG-4压缩方案设计(03-24)