1、开题报告基于 DM365 处理器的 H.264 视频编码器接口软件设计1. 背景介绍今天,多媒体技术的应用已经深入到各个领域。在日常生活中,多媒体产品也是随处可见,如视频电话,视频会议系统,实时监控,基于 IP 的网络流媒体等等。在这些多媒体应用中,图像的传输和存储是一个十分重要的问题,由于存储空间和网路带宽的限制,直接存储和传输原始视频显得十分吃力且开销巨大,由此需要对原始视频进行压缩处理,进而衍生出了视频编解码技术。视频编解码技术有许多标准,而 H.264 标准因其较高的网络亲和性和压缩效率而得到广泛应用。视频编解码的过程中牵涉到了大量的数学计算,为了快速实现视频编码过程,需要计算能力强大
2、的处理器或针对视频编码过程专门设计的芯片,DM365 处理器即是一款适合视频编解码应用的器件。1.1 视频编解码技术假设一个视频文件的分辨率为 D1 (PAL 制,分辨率 720x576,YUV 3 4:2:2 采样),帧率 25fps4, 则其需要带宽为 720x576x18x25 = 186624000bit/s = 23MB/s。无论对于我们现行的存储空间还是网络系统而言,这都是一个十分巨大的数字,承担这样的带宽需要很大的开销。因此我们一般并不直接传输原始视频文件,而是把它压缩成码流后再存储或传输,需要时再解压。视频编码的目的是通过一定的算法,将原始视频文件转换为另一种形式的文件,新的文
3、件占用空间相对于原文件减少了很多,即在视频编码的过程中,视频被压缩了;视频解码是编码的逆过程,它将压缩后的文件通过一定算法转换为可以播放的图像形式。本文讨论的是视频编码的过程。1.2 视频编码标准由于视频终端分布于全球各地,生产厂商也各不相同,因此需要一个世界通用的标准来规定被处理图像的格式,编码过程,码流句法,传输控制,解码过程等一些的实现细节,以保证各终端都能正常的编解码文件不会出现各自为政的局面。目前被广泛使用的编解码标准主要有运动图像专家组(MPEG) 的 MPEG-x系列标准和国际电信联盟(ITU) 的 H.26x 系列标准 5。这些标准的基本框架都是基于减少时间冗余度的帧间编码和减
4、少空间冗余度的变换编码的混合模型,但各自算法中都加入了一些其他复杂算法以进一步压缩视频或实现更好的差错控制以提高网络亲和性。本文讨论的是 ITU H.26x 系列中的 H.263 标准1.3 编解码算法的实现编解码标准的给出的是编解码实现的算法以及必要的约束,如果要实现具体的编解码算法还需要计算系统的支持,常见的计算系统有 PC,专用处理器为核心的处理平台以及专用定制的芯片。视频的编解码过程牵涉到十分复杂的数学计算,需要消耗大量的计算资源。PC 虽然有丰富的计算资源,但其一般是基于操作系统的多任务平台,编码算法能分配到的资源有限,另外 PC 处理器使用的指令系统并不适合处理视频编码所需的数学计
5、算,处理效率极低,因而 PC 并不适用于处理视频编码算法。DSP 处理器是一种专为数字信号处理而设计的处理器,其指令集适合处理视频编码算法,处理效率高。视频专用芯片是专门为视频处理定制的集成电路,其使用专门的硬件逻辑来处理视频算法过程而不是像通用处理器或 DSP 处理器一样是基于周期取指执行的,其在视频处理方面效率会比 DSP 处理器更高。2. H.264 视频编码算法技术H.264 标准比 H.263 标准提供了更为有效的视频压缩,是低比特率视频通讯的新标准。实际上,这一标准的制定是 ITU-T 和 MPEG 共同努力的结果。1998年 MPEG 与 ITU-T 联合成立了“联合视频组(JV
6、T)” 共同制定 H.263 之后的新的低比特率视频通讯标准并最终在 2003 年正式公布了标准草案,这一新标准被称作H.264/AVC 或 MPEG-4 part10。相比之前的视频压缩标准,H.264 有许多改进,它不但有一个规定视频编码算法的视频编码层(VCL, Video Coding Layer),还包括了一个规定网络传输规范的网络提取层(NAL, Network Abstraction Layer),这一改进大大增强了 H.264 的网络适应性。除此之外,在算法部分,H.264 也引入了许多新技术,如先进的帧内预测,最小到 4x4 子块的运动预测,1/4 像素精度的运动矢量,新的环
7、路滤波技术等。2.1 H.264 的应用H.264 不仅具有优异的压缩性能,而且具有良好的网络亲和性,这对实时的视频通信是十分重要的。现在已有基于 DSP 的采用 H.264 编码的可视电话出现在市场上,说明了在视频通信中 H.264 的重要应用价值。H.264 还有一个重要应用,即网络的流媒体。众所周知,应用流媒体技术的电视点播(VOD)最近有了迅速发展,韩国的宽带上网的应用中 VOD 占据了第二位。我国宽带上网用户今年已达 1000 万户以上,而且还在继续发展,VOD 的迅速发展也是可以期待的。多媒体短信息也是 H.264 的重要应用之一,我国的短信市场正方兴未艾,相信多媒体短信也将有巨大
8、发展。和 MPEG-4 中的重点是灵活性不同, H.264 着重在压缩的高效率和传输的高可靠性,因而其应用面十分广泛,具体说来,H.264 支持三个不同档次:1、基本档次:主要用于“视频会话”,如会议电视,可视电话,远程医疗、远程教学等;2、扩展档次:主要用于网络的视频流,如视频点播;3、主要档次:主要用于消费电子应用,如数字电视广播,数字视频存储等。2.2 H.264 编码器原理H.264 编码器采用的是变换和预测的混合编码法。由图 2-1,输入的帧或场 Fn 以宏块为单位被编码器处理。首先,按帧内或帧间预测编码的方法进行处理。如果采用帧内预测编码,其预测值 PRED(图中用 P 表示)是由
9、当前片中前面已编码的参考图像经运动补偿(MC)后得出,其中参考图像用 Fn-1 表示。为了提高预测精度,从而提高压缩比,实际的参考图像可在过去或未来(指显示次序上)已编码解码重建和滤波的帧中进行选择。预测值 PRED 和当前块相减后,产生一个残差块 Dn,经块变换、量化后产生一组量化后的变换系数 X,再经熵编码,与解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个压缩后的码流,经 NAL(网络自适应层)供传输和存储用。正如上述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此必须使残差图像经反量化、反变换后得到的 Dn与预测值 P 相加,得到 uFn(未经滤波的
10、帧) 。为了去除编码解码环路中产生的噪声,为了提高参考帧的图像质量,从而提高压缩图像性能,设置了一个环路滤波器,滤波后的输出 Fn即重建图像可用作参考图像。图 2-1 H.264 编码流程2.3 H.264 编码器特特点从图 2-1 可见,H.264 和基于以前的标准(如 H.261、H.263、MPEG-1、 MPEG-4)中的编码器功能块的组成并没有什么区别,主要的不同在于各功能块的细节。由于视频内容时刻在变化,有时空间细节很多,有时大面积的平坦。这种内容的多变性就必须采用相应的自适应的技术措施;由于信道在环境恶劣下也是多变的,例如互联网,有时畅通,有时不畅,有时阻塞,又如无线网络,有时发
11、生严重衰落,有时衰耗很小,这就要求采取相应的自适应方法来对抗这种信道畸变带来的不良影响。这两方面的多变带来了自适应压缩技术的复杂性。H.264 就是利用实现的复杂性获得压缩性能的明显改善。2.4 H.264 编码算法的软件实现按照H.264标准的描述可以在指定平台上使用指定的编程语言( 通常是C语言)进行视频编码软件的设计。H.264标准在算法的一些方面,如运动预测补偿,并没有做出强制性的规定,使得程序员可以充分发挥自己的潜能设计出高性能的算法。如今在网络上也流传着很多符合H.264标准的代码供人学习参考。3. DM365 DSP 处理器3.1 概述DM365是TI公司推出的一款基于DAVIN
12、CI技术的SOC,支持超高像素影像,使开发人员在数字视频设计中不必为支持各种视频格式,满足网络带宽要求或系统存储容量限制等问题而费心, DM365内含一个ARM926EJ-S精简指令的CPU,速率高达300MHZ,有独立的16KB的指令缓存和8KB的数据缓存。它还包含一个图像处理子系统(VPSS),包括视频前端处理子系统(VPFE)和视频后端处理子系统(VPBE),可以对视频和图像数据进行H 264、MPEG、JPEG格式的编解码,并且支持硬件的OSD。DM365提供的外设很多,主要的有:一个I2C接口4个64bit的通用时钟,每个可以配置为两个独立的32bit时钟高达104个GPIO复用接口
13、,可配置为中断模式两个UART五个SPI接口两个MMCSDSDIO接口一个高速USB2.0的主设备接口两个外部存储器接口,包括一个异步低速存储器接口(支持NAND和NOR Flash等)和一个同步高速存储器接口(支持DDR/DDR2)音频编解码器10/100M网络接口一个视频输入接口和一个视频输出接口3.2 DM365RAM子系统1)DM365 RAM 子系统概述ARM 组系统采用 ARMv5TEJ(32/16bit)指令集的 ARM926EJ-S 内核 CPU,是采用管道化流水线的 32bit RSIC 处理器,工作频率为 216/270/300MHz。ARM CPU 执行通常的系统控制任务
14、,如系统初始化,配置,电源管理,用户界接口和用户命令等等。 ARM 做为主控和执行这些功能是因为它有一个大的程序存储空间和快速的任务切换能力,因而其更适合复杂的,多任务和通用的任务控制 。2)DM365 RAM 子系统组成ARM 子系统(ARMSS) 包含如下组成部分: ARM926EJ-S RISC 处理器包含: 协处理器 15 (Coprocessor 15-CP15) 内存管理单元 (Memory Management Unit-MMU) 16KB 指令集 8KB 数据 cache 写缓存 Java 加速器 ARM 内部存储器: 32KB 内部 RAM (32-bit 宽访问) 16KB
15、 内部 ROM (ARM 引导用于 non-AEMIF 引导选项 ) 嵌入式跟踪模块和嵌入式跟踪缓存模块 (ETM/ETB) 系统控制外设 ARM 中断控制器 PLL 控制器 电源管理模块 系统模块图 4-1 DM365 功能结构框图ARMSS 也管理和控制如下外设: DDR2/mDDR EMIF 控制器 McBSP 接口 AEMIF 控制器 USB 接口 增强型 DMA (EDMA) EMAC 接口 串口 (UART) SPI 接口 定时器(Timers) HPI 接口 实时输出 (RTO) 管理数据输入输出 (MDIO) 脉宽调制器 (PWM) 按键扫描 I2C 接口 ADC MMC/SD
16、 控制器 音频 Codec 视频处理前端 (VPFE) 视频处理后端 (VPBE) 图 4-2 DM365 ARMSS 框图3.3 HDVICP简介DM6467 集成了两个 HDVICP 用于加速高清视频的处理。这些协处理器被设计成能使用于特定一些编解码标准的加速,如图 4-3 所示,编码功能被集成在一个通用编码器上,加速器可提供以下一些功能 9: 运动预测(ME)ME 加速器能快速计算源亮度信息与参考亮度信息之间的差值的绝对值之和(SAD)。此加速器还能最多提供 1/4 像素精度的运动预测 运动补偿(MC)MC 加速器能对参考宏块进行 1/2 或 1/4 像素精度的插补 边界强度计算器(BS
17、)BS 能计算环路滤波时的边界强度参数。(只支持 H.264) 环路滤波器(LPF)LPF 能为 H.264 或 VC-1 做环路滤波加速。 帧内预测评价(IPE)IPE 能计算最合适的帧内预测模式。 算术引擎(CALC)CALC 能进行前向/ 后向变换,量化/反量化,空间-帧内预测,不同编解码标准中的加减操作。 熵编码(ECD)ECD 提供了完全无损的残差编解码功能。图 4-3 HDVICP 加速模块示意图3.4 DM365 上 H.264 编码的算法优化以上,我们了解了 H.264 编码技术的概况和一些技术要点以及 DM365 DSP处理器的基本架构和其上的视频加速功能。我们可以发现,DM
18、365 DSP 处理器的 HDVICP 提供了对多种编码标准的支持,在 HDVICP 上执行编码计算有一个显著的优点:其是专门为视频编解码设计的硬件电路,有很高的专用性,相对于在通用的 DSP 处理器上执行编码计算,其速度将会快得很多。通过设计专用电路,将编码计算从通用 DSP 上移植到专用的协处理器上以加快编码计算速度也是 DM365 实现视频加速以及优化的基本原理。至此,我们可以通过阅读相关文献以寻求通过 HDVICP 实现 H.264 编码算法,在 DM365 上实现 H.264 的编码。3.5 方案设计DM365 提供了 HDVICP 作为视频编码的加速器优化视频编码算法,基于此我们可
19、以在 DM365 上设计高性能的 H.264 编码器。除此之外, TI 公司还提供了一个名为 Code Composer Studio(CCS)的开发环境支持其 DSP 产品的软件开发。在 CCS 上开发软件的一般过程如图 4-4 所示。图 4-4 CCS 上软件开发的一般流程图 4-5 说明了 DM365 上的 DSP 子系统与 HDVICP 各模块之间的关系。从图中可以看出,HDVICP 除了前述的七个子模块之外还有缓存转换器(BFSW)与许多缓存。图中的许多缓存就是前述七个子模块的工作空间,各模块在缓存上存储命令以及配置信息,同时还存放与当前处理相关的各种图像数据。BFSW模块负责缓存接口在子模块与 DMA 接口之间的转换。当缓存接入子模块时,子模块在其上进行当前操作;当接入 DMA 时,缓存被写入当前命令和处理相