H.264视频解码器在C6416 DSP上的实现
H.264主要有以下新特点:
·网络适配层NAL(Network Abst
raction Layer)。
传统的视频编码编完的视频码流在任何应用领域下(无论用于存储、传输等)都是统一的码流模式,视频码流仅有视频编码层(Video Coding Layer)。而H.264根据不同应用增加不同的NAL片头,以适应不同的网络应用环境,减少码流的传输差错。
·帧内预测编码模式(Intra Prediction Coding)。
帧内预测编码合理地利用了I帧的空间冗余度,从而大大降低了I 帧的编码码流。
·自适应块大小编码模式(Adqptive Block Size Coding)。
H.264允许使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子块预测和编码模式,采用更小的块和自适应编码的方式,使得预测残差的数据量减少,进一步降低了码率。
·高精度亚像素运动估计(High precision sub-pel Motion Estimation)。
H.264中明确提出了运行估计采用亚像素运动估计的方法,并制定1/4像素和1/8像素可选的运动估计方法。亚像素运动估计,提高了预测精度,同时降低了残差的编码码率。
·多帧运动补偿技术(Multi-frame Motion Compensation)。
传统的视频压缩编码采用一个(P帧)或两个(B帧)解码帧作为当前帧预测的参考帧。在H.264中,最多允许5个参考帧,通过在更多的参考帧里进行运动估计和补偿,找到列差更小的预测块,降低编码码率。
·整形变换编码(Inter Transform Coding)。
H.264采用整形变换代替DCT变换,整形变换采用定点运算代替浮点运算。采用这种变换,不仅可以降低编解码的时间,而且,为该算法在多媒体算是平台上实现带来了方便。在这一点上,H.264视频编码标准更适合作为多媒体终端的编解码标准。
·两种可选择熵编码CAVLC和CABAC。
CAVLC(Context-based Adaptive Variable Length Coding):基于内容的自适应变长编码。
CABAC(Context-basedAdaptive Binary Arithmetic Coding):自适应二进制算术编码。
以往的视频压缩标准中,都采用Huffman编码与变长编码相结合的方法进行熵编码。Huffman编码虽然是一种很好用的熵编码方法,但是其编码效率并不是最高的,而且,Huffman编码的抗差错性能很低。H.264中采用了两种可以选择的熵编码方法:CAVLC编码抗差错能力比较高,但是编码效率不是很高;CABAC编码是一种高效率的熵编码方法,但是计算复杂很高。两者各有优缺点,所以针对不同的应用,选择不同的编码方法。
3 H.264解码器算法的DSP实现和优化
3.1 在PC机上实现H.264算法并进行优化
ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求。这一步需要做的具体工作包括:去处冗余代码、规范程序结构、全局和局部变量的调整和重新定义、结构体的调整等。
3
《H.264视频解码器在C6416 DSP上的实现(第2页)》