随着宽带Internet的快速发展和电子设备计算能力的迅速提高,在Internet上实时传输高清晰度视频信息成为可能,以Internet为传输媒介的视频会议、视频监控、Internet电视台等视频应用方兴未艾。这些应用的一个共同特点是,都需要一个高性能的实时视频编码器,特别是高分辨率的视频应用给视频编码器的计算能力提出了很高的要求。例如,一幅720×576的4∶2∶2视频格式的画面,包含有3240个16×16的YUV宏块(MacroBlock,即MB)。如果该视频帧按照P帧或者B帧进行压缩,那么每一个YUV宏块都要进行运动估计、运动补偿、DCT(Discrete Cosine Transform)/反DCT变换、量化/反量化和VLC(Variable Length Coding)等环节的运算。如果进行实时压缩(每秒钟压缩25帧)的话,大致需要316~5GIPS(Instruction persecond)的计算能力。
目前,单一的CPU/DSP一般还不具备这样的计算能力。为了解决高清晰画面的实时视频压缩问题,本文提出了DSP和FPGA(Field Pro-grammable Gate Array)协同设计方案。使用FPGA完成视频采集、YUV(视频亮度Y、色度分量
UV)分离、数据I/O(Input/Output)等所有周边功能,使用高性能的DSP进行视频压缩编码,因而在视频编码器内DSP和FPGA能够进行流水操作,有效地提高了编码器的性能。
为了降低算法的计算复杂度,本文提出了基于宏块空间复杂度的宏块编码类型判别算法(MTJBSC)。在标准MPEG24视频运动估计算法中,判别宏块的编码类型是通过计算当前宏块内像素值方差和参考宏块与当前宏块之间的方差来实现的,因此计算量很大。MTJBSC算法首先计算出当前宏块的空间负责度(MBC),然后通过比较当前宏块的MBC与SAD(Sum of Absolute Difference)值来判断当前宏块的编码类型,大大降低了算法的计算复杂度。
1 硬件设计方案
基于TI公司的图像开发工具包(Imaging Developer Kit,即IDK)[2]架构,设计了视频编码器的硬件平台。从整体上来讲,视频编码器的硬件实现由DSP和FPGA两个模块组成,其逻辑框图如图1所示。由于视频压缩编码计算量很大,为了尽可能提高视频压缩帧率,由DSP专门负责视频压缩编码,而视频采集、YUV转换和编码器I/O接口等其它功能则交由FPGA模块来实现。如图1所示,用户控制命令(例如视频压缩模式)由FPGA模块首先截获,然后FPGA模块向DSP模块产生外部中断,DSP在响应中断时读取存储在FPGA中的用户控制命令字,然后DSP解析命令字,并根据用户要求的视频格式、帧图像分辨率和视频压缩码流速率进行视频压缩编码。