微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ADSP-BF5619处理的H.264视频编码器设计

基于ADSP-BF5619处理的H.264视频编码器设计

时间:12-26 来源:互联网 点击:
1 引言

H.264/AVC是ITU-TVCEG和ISO/IEC MPEG联合制定的最新视频编码国际标准,是目前图像通信研究领域的热点问题之一。H.264的视频编码层(VCL)采用了许多新技术,因而使得编码性能大幅度提高。与以往的视频编解码标准相比,在相同的码率下,H.264具有更佳的图像质量,这使得H.264在无线通信和网络传输等低码率视频应用领域得到了更为广泛的应用。但这是以复杂度的成本增加为代价的,故使H.264在实时视频编码及传输应用中面临巨大的挑战。而用高性能数字信号处理器(DSP)来实现H.264实时编码器是一种快速有效的方法,有助于H.264视频标准的迅速推广和应用。

ADSP-BF561处理器性能卓越,具有600 MHz的主频,且集成了一套通用的数字图像处理外围设备接口,从而为多媒体和图像应用创建了一个完美的系统级片上解决方案。本文针对低码率视频传输的需要,研究并实现基于H.264标准的视频编码系统,同时探讨H.264软件编码器在DSP上的实现及优化方法。

2 H.264编码算法及ADSP-BF561简介

在实际开发过程中,针对H.264的算法特点和ADSP-BF561双核处理器的结构特性,本文做了大量优化工作,从而在保证编码精度的同时,大幅度提高了编码速度。下面简要介绍H.264视频编码算法和ADSP-BF561双核处理器系统。

2.1 H.264编码算法

H.264是ISO和ITU联合制定的新一代视频编码标准,具有很高的压缩比和很好的鲁棒性。其整体框架如图1所示。


在继承了原有视频编码标准的基础上,H.264作了多方面的改进,包括引入4×4子块和16x16子块共9种模式的帧内预测。帧内模式的引入是为了与变换编码一起用于消除空间上的冗余,进而大大提高编码效率。在帧间模式中,H.264可支持多尺寸的运动估计和补偿。其帧间预测时块的大小不是固定的8x8,而是可以从4×4到16x16,并且包括长宽不等的块(共7种类型),同时支持多参考帧,故可大大提高预测性能。此外,H.264还采用整数DCT变换来降低计算量,同时采用自适应算术编码来提高编码效率,并可利用滤波器消除低比特量化带来的块效应等。事实上,H.264的效率比现有的编码技术可提高50%。

2.2 ADSP-BF561芯片结构

ADSP-BF561是一种双核750 MHz处理器,具有对称多处理(SMP)系统结构。其SMP结构在信号处理和控制功能的集成和分割方面能够为用户提供较高的性能和较大的设计灵活性。ADSP-BF561的系统结构如图2所示,它包含coreA和coreB两个核,每个核的处理频率可达750MHz。两个核都有各自独立的32KB L1指令存储器(16KB Cache/SRAM)和64KB L1数据存储器(32KB Cache/SDRAM),并可共享128KB L2存储器。两内核访问不同内存时,其速率有明显差异,其中访问L1存储器最快,L2次之,而访问片外内存和设备则最慢。

由于访问存储器速率的差异。双核之间进行数据交换最好在L1段直接进行,而且需要使用IMDMA控制器。这个DMA控制器的主要功能是在双核之间的L1存储器之间进行数据交换。使用IMDMA控制器可以在访问速率比较慢的片外内存或者对L2进行数据处理操作时,提高数据处理的速率,进而提高编码效率。


3 H.264视频编码算法的优化与实现

对编码器的优化主要是对P帧编码流程的优化和对ADSP-BF561双核处理系统的优化,合理的流程有利于各种模块的独立性和完整性,同时有利于以后只针对某个模块的优化或升级处理。而利用ADSP-BF561的双核协调处理优势可以进一步提高其速度。

3.1 P帧编码流程的优化

由于H.264编码算法比较庞大,对程序细节上进行优化事实上不能带来明显的效率提高,所以应对程序流程本身进行调整。在H.264编码器JM86版本中,I帧、P帧的编码采用同一模块,这样就有大量帧内、帧间宏块的重复判断,故使编码速度受限。

Micro_h264编码软件模型针对这一缺点进行了处理,将I帧、P帧的编码提取出来分别独立编码。但是遗憾的是,micro_h264编码软件模型对一帧图像的宏块进行编码是按照宏块在图像中的光栅扫描顺序一一进行的,没有考虑到宏块在一帧图像中的不同位置有着不同的特性,而且对这些宏块采用统一模式进行编码,也会产生很多判断条件,这不但不利于DSP的流水操作,也不利于模块的优化。本文针对这一个缺点对micro h264的P帧编码流程进行优化。

根据宏块在一帧图像中位置的不同,可以对不同位置的宏块分别独立进行编码。同时,根据子块在宏块中的不同位置,也可以对其进行独立编码。

一帧图像被分成多个宏块时,不同位置的宏块有不同的特性。因此,可以根据宏块在一帧图像中的不同位置来对宏块进行分类,以将具有相同编码特性的宏块归为一类,这样,可以将帧图像的宏块分成五类。图3所示是其宏块分类图。

通过对宏块进行分类,可对不同的宏块调用不同的函数来对其独立编码,从而减少很多不必要的判断,这样就不会打断DSP的流水操作,达到提高速度之目的,同时在进行优化时也更具针对性。

本编码器在P帧编码时,只用了一帧参考帧,并且改进了micro_h264编码器软件模型所使用的对宏块编码模式逐一遍历的算法,而是采用宏块编码模式快速选择算法。P帧编码的流程图如图4所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top