>
首页 » 技术文章 » 基于OMAP平台的AVS解码实现

基于OMAP平台的AVS解码实现

作者:杨阳 彭玉华 刘兆广  时间:2006-05-11 17:45  来源:本站原创

摘 要:本文提出了一种基于OMAP1510和AVS-M标准的实时解码方案。在充分考虑了OMAP1510硬件结构特点的基础上对解码程序进行了优化。
关键词:OMAP1510;AVS;解码器;优化

AVS(Audio Video coding Standard)是中国具有独立知识产权的音视频编解码技术标准,相对于目前比较流行的标准,如H.264MPEG4等,具有更高的编码效率和更小的复杂度,同时不需要交纳高昂的专利费用,具有重要的经济价值。在多媒体通信终端设备方面,TI公司的开放式多媒体应用平台OMAP(Open Multimedia Applications Platform)综合了ARM的控制能力与DSP的运算能力,可以实现单一DSP无法完成的更多、更复杂的服务,如实时视频交互等。本文在OMAP1510的开发板上实现了AVS7部分,即移动视频的解码,基本满足了实时性和质量要求。

AVS-M简介

AVS-M标准是AVS组织为适应数字存储媒体、网络流媒体、多媒体通信等应用中对运动图像压缩技术的需要而制定的,其核心技术包括:4×4 整数变换、量化、帧内预测、1/4精度像素插值、特殊的帧间预测运动补偿、熵编码、去块效应环内滤波等。

AVS-M标准中解码过程的基本处理单元是宏块。一个宏块包括一个16×16 的亮度样值块和对应的色度样值块。 宏块可进一步划分成最小为4×4 的样本块来进行预测,共有8种用于运动补偿的宏块划分方法。

在预测方面,只采用I帧和P帧,P帧最多可有两帧参考图像。AVS-M 定义了9种亮度块帧内预测模式和3种色度块帧内预测模式。在帧间预测的运动矢量方面,AVS-MH.264都采用1/4像素精度的运动补偿技术,但相对于H.264采用的6抽头滤波器,AVS-M采用水平8抽头和垂直4抽头滤波器进行半像素插值和1/4像素插值,增大了插值精度。亮度解码时,首先进行1/2 样本和1/4 样本的插值,然后根据运动矢量得到相应的参考样本。色度样本插值使用对应亮度块的运动矢量,利用被插值样本周围的4个整数样本值进行线性插值。

AVS-M嫡编码采用统一变长编码技术。在AVS-M嫡编码过程中,所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流。AVS-M标准对于帧内编码块亮度系数、帧间编码块亮度系数和色度系数分别定义了多个变长码表。根据解析所得语法元素的值,通过查变长码表可以得到量化系数值和量化系数游程。解码得到一个系数值和游程后,下一个解码量化系数所参考的码表将根据前一个解码量化系数值进行选择。

OMAP平台简介

OMAP把低功耗的DSP 核与控制性能强的ARM微处理器结合起来,是一种开放式、可编程的基于DSP 的体系结构,如图1所示。


图1 OMAP1510结构框图

OMAP 的硬件平台

OMAP 的硬件平台主要由ARM核、DSP 核以及流量控制器(Traffic Controler) 组成。

ARM核采用增强型ARM925 核,工作主频为175MHz。它包括存储器管理单元、16kB的高速指令缓冲存储器、8kB的数据高速缓冲存储器和17 个字的写缓冲器。片内有1. 5MB的内部SRAM,为液晶显示等应用提供大量的数据和代码存储空间。它有13 个内部中断和19 个外部中断,采用两级中断管理。此外,核内还有ARM CP15 协处理器和保护模块。TI925T(ARM9TDMI)内核采用5 阶管道化流水线、32 RISC处理器架构的体系结构。系统中的控制寄存器可通过对协处理器CP15 的读写来对MMUCache 和读写缓存控制器进行存取操作。 TI925T MMU 具有2 64 项的转换旁路缓存器(TLB)用于指令和数据流,每项均可映射存储器的段、大页和小页。

C55x DSP核工作主频为200MHz。它具有高度的并行能力,32位读写和功能强大的EMIF, 双流水线的独立操作以及双MAC 的运算能力,它采用了三项关键技术:增大的空闲省电区域、变长指令和扩大的并行机制。其结构对于多媒体应用高度优化,适合低功耗的实时语音图像处理。

C55x核增加了处理运动估计、离散余弦变换、离散余弦反变换和1/ 2 像素插值的硬件加速器,降低了视频处理的功耗,其结构对于多媒体应用高度优化,适合低功耗的实时语音图像处理。C55x 核内部有32kB的双存取SRAM,48kB的单存取SRAM 12kB的高速指令缓存。此外,核内还包含存储器管 理单元、两级中断管理器和直接存储器访问单元。


图2 基于OMAP的AVS-M程序流程框图

OMAP 的软件平台

利用OMAP 可以建立两个操作系统,一是基于ARM 的操作系统,Windows CELinux 等,二是基于DSP DSP/ BIOS 。连接两个操作系统所使用的核心技术是DSP/BIOS 桥。OMAP1510 支持多种实时多任务操作系统在ARM925 微处理器上工作,用来对ARM925进行实时多任务调度管理, C55x 进行控制和通信。DSP/ BIOS 桥包含DSP 管理器、DSP 管理服务器、DSP和外围接口链接驱动器。DSP/ BIOS 桥提供运行在ARM925 上的应用程序和运行在C55x上的算法之间的通信管理服务。开发者可以利用DSP/ BIOS 桥中的应用编程接口,控制在DSP 中实时任务的执行,并同DSP 交换任务运行结果和状态消息。在这个环境下,开发者可以调用局部DSP 网关组件来完成诸如视频、音频和语音等功能。

    耗时(指令周期)
  SDRAM 到 DARAM 1041
DMA DARAM 到 SDRAM 620
  SDRAM 到 SDRAM 1621
  SDRAM 到 DARAM 1893
Memcpy() DARAM 到 SDRAM 2168
  SDRAM 到 SDRAM 3282

表1 DMA与非DMA方式传输耗时比

AVS-M实时视频解码

OMAP上的软件实现

OMAP1510上的程序结构

OMAP上开发程序通常分为两部分,一部分是ARM端,负责控制、显示等,另一端是DSP端,主要负责数据处理,本文采用TI提供的CCS在这两端分别开发,程序流程如图2所示。

ARM端的主要功能是初始化整个OMAP1510芯片,包括ARMDSPTC等的时钟设置,DSP的开启/关闭以及复位,LCD、定时器等各个外设的初始化。在启动完成后,ARM就一直查询共享内存中的某一标志位,当查询到一帧解码结束时,就启动LCD专用DMA,在LCD上显示。

DSP端的主要工作是负责AVS-M码流的解码。本文将AVS-M码流放置在SDRAM中。与基于PC的解码程序的主要区别在于,由于DSP的片内内存有限,所以不可能将当前帧以及参考帧都放在片内,所以,以宏块为单位在SDRAM与片内内存之间进行数据传递。另外,由于在液晶屏上显示需要转换成RGB图像,所以,在每一帧结束后,要通过YUVRGB来实现实时显示。

程序优化的主要过程

本文采用标准C语言,一方面是出于可移植性的考虑,另一方面是由于TI编译器效率不断提高。但是,仅仅依靠编译器的优化是远远不够的,还可以采用以下手段进行优化:

(1)DMA的合理利用。对于同一段程序来说,仅用片内数据与全用片外数据的速度差别相当大。所以应尽量采用片内数据,提前采用DMA将片外数据导入片内。如前文所述,广泛采用了DMA,用于SDRAM与片内内存之间以及SDRAM内部的数据交换。DMA不占用DSP时间,相当于并行操作。表1列出了Memcpy命令与等待状态下DMA的耗时,移动的数据为25616bit数。   

由表1可以看出,采用DMA方式只需要直接传输时间的1/2~1/3,所以,即使在传输过程中DSP完全处于等待状态,也比对内存的直接操作要高效得多。

(2)ARMDSP的通信机制问题。OMAP提供了两种通信方式,一是采用MAILBOX中断方式,另外一种是采用共享内存查询方式。MAILBOX方式的优点是实时性强,缺点是数据量小,查询方式可以一次性传递大量数据,但是要通过查询某一位共享内存来实现,实时性较差,所以,一般是采用两种方法结合的措施,兼顾效率和速度。

(3)合理设置DSP时钟。在系统上电复位时,DSP的时钟等于晶振的固有频率,由于OMAP采用了数字倍频以及数字锁相环,所以,可以通过设置频率控制寄存器来更改DSP的时钟。具体的原则是在满足系统实时要求的情况下,尽可能低地设置时钟,这是显而易见的,因为高的时钟频率必然带来大的系统能耗。

(4)LCDDMA。采用OMAP系统的LCD专用DMA,可以使ARM系统独立出来,可以执行操作系统的任务,同时,采用DMA也比直接移动指令更为有效。

(5)使用C55x内部固定的instrinsic 指令。 这些指令由优化的汇编代码写成,可以显著提高代码执行的效率,包括乘法,取最大/最小值等,使用instrinsic一般可以提速5%左右。

(6)注意数据格式的转换。在DSP采用大端模式,ARM端采用小端模式组织数据,所以,在采用共享内存时,存在模式转换的问题,通过ARM的大小端转换模式,寄存器自动转换。另外,ARM端能够处理8 位、16 位、32 位、64 位的数据,DSP端能够处理16 位、32 位、40位、64 位数据。int型变量在ARM端是32位,在DSP端是16位,要注意数据格式的比较。

(7)数据宽度的考虑(16位,8)C55x采用16位的数据总线,所以采用16位的数据宽度是最高效的。C55x也支持8位数据,这样,数据得到了一倍的压缩,但每次取操作数都要进行高低位选择。以宏块为单位进行操作时,实际上用到的空间并不大,而速度是更关键的问题,所以将原始的8AVS-M码流统一以16(8位置零)的格式进行存放与计算。

(8)对循环的优化策略。本文采用restrict关键词进行编译,得到更为高效的循环解决方案,以下面一段代码为例,功能是相同的:

loop((int*)0x2600,(int *)0x2700,0x100);

void loop(int * restrict i,int * restrict j,int counter)

 {while(counter--)

*(j++)=*(i++)+*(j++);

  }

 耗时558个时钟周期

 for(i=0x2600;i<0x2700;i++)

{

*((int *)(j++))=*((int *)(i))+*((int *)(j++));

}

耗时2564个时钟周期

两者相差5倍,因此,尽量采用对循环的优化策略成为系统加速的关键。

(9)64K边界长度的问题。 由于C55x采用了16位的数据,所以寄存器也是16位的,经常会出现64K边界的问题,例如开辟一个数组,当数组元素到达0XFFFF时,下一个并不是到达0X10000,而是回到0X0000,即便采用long型定义数组元素个数也是如此。所以,本文采用long 型指针,采用绝对地址间接寻址的方式来解决这个问题。

(10)合理安排内存。即关于数据和程序怎么安排的问题。原则上,程序应该放在片外,数据应该放在片内,特别是常用的码表要放在DARAM中,同时,使能指令Cache可以有效加速执行速度。

结语

AVS-M作为中国具有独立知识产权的新一代视频编码标准,具有广阔的市场前景和应用价值。TI 公司提出的OMAP 体系结构,开放性好,在这种体系结构下编写的程序移植方便,适合于多媒体平台的应用。OMAPAVS-M的结合,在移动通信与多媒体信号处理方面将有良好的应用前景。■

相关推荐

CSR为三星平板电脑提供aptX蓝牙音频编解码器

CSR  解码器  aptX  2011-11-17

富士通发布新一代机顶盒解码器解决方案

机顶盒  解码器  2011-03-08

TD-SCDMA网络中的干扰问题及其优化方案分析

TD-SCDMA  干扰  优化  2010-11-09

创新半导体方案助阵高清音视频应用

HDTV  PLD  解码器  HDMI 1.4  PureBLACK  2010-04-03

意法半导体让经济型Zapper机顶盒可接收全球数字电视广播

ST有线电视机顶盒平台推动数字电视增值服务

2009-10-26
在线研讨会
焦点