H.264解码纠错在软硬件协同系统中的实现

时间:2011-03-30来源:网络

  硬件主要负责宏块层和子宏块层的解码,能够发现预测模式、熵解码的错误。如果硬件解码过程中检测出错误,硬件会向软件发送HasErr_hw 信号。例如在帧内预测时,需要判断相邻宏块的可用情况。在读帧内预测模式的语句后加入以下判断:



  整个纠错过程由软件控制,修补过程由软件直接发送数据给硬件后端。硬件检测出错误并向软件传递HasErr 信号,软件会做相应的数据处理,向硬件发送Err_Processing 信号, 并根据错误修补方案代替前端数据处理部分为解码器后端提供数据,如图3 中虚线所示。

H.264 解码器结构图

图3 H.264 解码器结构图

  在修补过程中, 由于采用基于空间连续性的预测,所以可以使用原有硬件中的帧内预测部分。但是,出错后原有的一些信号需要做相应的处理,否则控制部分的一些状态机会进入异常状态导致硬件无法继续正常运行。

  4 实验结果

  本实验先在PC 机上对C 模型修改和完善,硬件测试平台则采用Xilinx Virtex4 系列的开发板。解码器软件部分使用C 语言编写,Linux 下gcc 编译,生成的二进制文件运行于基于开放核OPENRISC1200 的CPU;硬件部分使用Verilog HDL 描述。测试所用输入码流为ITU-T 提供的参考序列[2],加入11 个固定噪声样本。实验证明解码器能顺利解码的噪声码流比例有了很大提高,图像播放流畅,很多受损的地方得到了较好的修补,但是也有一些能看出明显的修补痕迹。

  5 结论

  在解码器中加入错误检查和修补功能,提高了解码器处理受损码流的能力,解码器因此可以在更复杂的环境中使用,稳定性也有所提高。H.264 视频压缩标准本身具有一些支持错误修补的技术,比如可以多次重复传输SPS 和PPS,多个Slice,FMO 等。多次传输SPS 和PPS 以降低传输效率为代价获得接收端更高的准确率, 这在某些环境中是非常必要的。多个Slice 和FMO 在一定程度上增加了编码和解码的复杂度,但是它使得更多的周边宏块信息可以用于受损宏块的预测和修补。此外,就修补方式而言,也有基于帧间相关性和其它帧内预测插值方法的研究。本实验的主要目标是使解码器能顺利解码并且尽量重复利用已有的硬件单元,减少由于添加纠错功能带来的硬件面积增加。采用16×16 帧内预测的方法修补,图像质量相对于未修补时有了很大提高,但是有些地方还是有比较明显的修补痕迹。寻找更好的图像修补办法,使修补后的图像尽量接近原始图像,减少可以明显分辨的修补痕迹,这些是需要继续研究的内容。

1 2 3

关键词: 系统 实现 协同 软硬件 解码 纠错 H.264

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版