·音频特点:提供两路双声道音频输出,CD音质的输入输出立体声接口,另外还提供一路单声道的麦克风输入。
·主接口:提供了PCI接口,允许与PC机相连。该板既可以以PCI模式运行,也可以单独脱机工作。
·网络接口:以太网接口为视频码流的网络传输带来了方便。
2H.264视频压缩标准
H.264主要有以下新特点:
传统的视频编码编完的视频码流在任何应用领域下(无论用于存储、传输等)都是统一的码流模式,视频码流仅有视频编码层(VideoCodingLayer)。而H.264根据不同应用增加不同的NAL片头,以适应不同的网络应用环境,减少码流的传输差错。
帧内预测编码合理地利用了I帧的空间冗余度,从而大大降低了I帧的编码码流。
H.264允许使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子块预测和编码模式,采用更小的块和自适应编码的方式,使得预测残差的数据量减少,进一步降低了码率。
H.264中明确提出了运动估计采用亚像素运动估计的方法,并制定1/4像素和1/8像素可选的运动估计方法。亚像素运动估计,提高了预测精度,同时降低了残差的编码码率。
·多帧运动补偿技术(Multi-frameMotionCompensation)。
传统的视频压缩编码采用一个(P帧)或两个(B帧)解码帧作为当前帧预测的参考帧。在H.264中,最多允许5个参考帧,通过在更多的参考帧里进行运动估计和补偿,找到残差更小的预测块,降低编码码率。
·整形变换编码(InterTransformCoding)。
CABAC(Context-basedAdaptiveBinaryArithmeticCoding):自适应二进制算术编码。
以往的视频压缩标准中,都采用Huffman编码与变长编码相结合的方法进行熵编码。Huffman编码虽然是一种很好用的熵编码方法,但是其编码效率并不是最高的,而且,Huffman编码的抗差错性能很低。H.264中采用了两种可以选择的熵编码方法:CAVLC编码抗差错能力比较高,但是编码效率不是很高;CABAC编码是一种高效率的熵编码方法,但是计算复杂度很高。两者各有优缺点,所以针对不同的应用,选择不同的编码方法。
3H.264解码器算法的DSP实现和优化
3.1在PC机上实现H.264算法并进行优化
ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求。这一步需要做的具体工作包括:去处冗余代码、规范程序结构、全局和局部变量的调整和重新定义、结构体的调整等。
3.2PC机H.264代码的DSP化
3.3H.264的DSP算法优化[3]
通过把PC机H.264代码DSP化,可以在DSP上实现H.264的编解码算法,但是,这样实现的算法运行效率很低,因为所有的代码都是由C语言编写,并没有完全利用DSP的各种性能。所以必须结合DSP本身的特点,对其进一步优化,才能实现H.264视频解码器算法对视频图像的实时处理。
下面以数据结构的调整说明如何合理利用DSP特性进行软件优化。
数据结构是指数据的类型及其在内存空间的分配方式,不同的数据结构,对程序的性能有不同的影响。因此,数据结构的调整对程序在DSP上并行执行是必不可少的步骤。
(3)汇编程序级优化。汇编级的优化包括两部分:采用线性汇编语言进行优化和直接用汇编语言进行优化。由于系统编译器的局限性,并不能将全部的函数都很好地优化,这样就需要统计比较耗时的C语言函数,用汇编语言重新编写。这些函数包括:插值函数、帧内预测函数、整形反变换等函数。
下面以差值函数中的一段来说明汇编编写带来的性能提高。
横向1/2插值源代码:
for(j=0;j《BLOCK_SIZE;j++){
for(i=0;i《BLOCK_SIZE;i++){
for(result=0,x=-2;x《4;x++)
result+=mref[ref_frame][y_pos+j][x_pos+i+x]*COEF[x+2];
block[i][j]=max(0,min(255,(result+16)/32));
}
通过以上各种优化方法,最终实现了基于C6416内核的H.264baseline解码器算法。
4算法性能的评测及前景展望
在NVDKC6416环境下,测试了解码器算法,对QCIF测试序列,已经能够达到50~60帧/秒的解码速度,远远达到了实时性解码的目的。
责任编辑:gt
长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)