H.264视频解码器在C6416 DSP上的实现

发布者:古泉痴迷者最新更新时间:2008-08-18 来源: 电子技术应用关键字:TI  DSP 手机看文章 扫描二维码
随时随地手机看文章
      多媒体通信终端设备具有广泛的应用前景,可以应用于视频会议、可视电话、PDA、数字电视等各个领域,所以高效、实用的多媒体终端设备一直是通信领域研究的主要方向之一。
      多媒体通信终端的实现主要有两点:一方面需要快速、稳定的处理器作为多媒体信号处理的平台,另一方面需要适合多媒体通信的协议标准和软件算法,尤其是对音视频信号的压缩处理算法。两者的结合才能产生高效的多媒体通信设备。目前,随着数字信号处理器(DSP)的高速发展,为实现高效的音视频信号处理提供了可能性;另一方面,最新的低码率视频压缩标准H.264的出台,提供了适合通信的视频标准和算法指导。因此,将两者结合,把H.264算法在DSP上实现,对于多媒体通信的研究具有一定的意义和价值。
      本文介绍了H.264解码器算法的DSP实现。在设计中,采用了ATEME公司的网络视频开发平台(NVDK C6416)作为DSP处理平台,实现了H.264的优化解码算法。对于QCIF视频序列,解码速度达50~60帧/秒。
1 网络视频开发平台NVDK简介
      NVDK是TI的第三方ATEME公司推出的基于TI C6400系列DSP评估开发套件,是一款适用于图像、视频信号处理的高速DSP开发平台[1]。该套件为诸如视频基础设施及网络化视频设备等高级视频应用制造商提供了方便,提高了数字视频应用项目的开发速度。
1.1  NVDK C6416体系结构
      NVDK C6416由TMS320C6416 DSP内核、10/100 Mbps 的以太网子卡、音频/视频接口盒、PCI总线、存储器单元、扩展接口及独立电源等构成。其功能结构框图如图1所示。

 


1.2  NVDK C6416的主要特点
    NVDK作为网络及视频开发套件,把很多音视频接口及网络接口直接做在板卡上,给采用TI C6000系列DSP芯片作为处理单元的开发用户提供了便利的前端平台。它为项目演示、算法实现、原型制作、数据仿真、FPGA开发和软件优化提供了完整的DSP开发平台。其主要特点如下:
    ·C6416 DSP内核:600MHz时钟频率及8指令并行结构,最高可以达到4800MIPS的处理能力。
    ·视频特点:在输入端,NVDK能够捕获PAL制或NTSC制的模拟视频信号,可以采用复合视频(CVBS)或者S-video视频信号输入,输入模拟视频信号被数字化为YUV422数字视频格式。在输出端,NVDK在支持复合视频(CVBS)以及S-Video输出的同时,还提供了SVGA输出模式,可以直接将信号输出到显示器上。就图像尺寸而言,视频采集提供FULL、CIF和QCIF三种图像格式,视频输出提供FULL和CIF两种图像格式。
    ·音频特点:提供两路双声道音频输出,CD音质的输入输出立体声接口,另外还提供一路单声道的麦克风输入。
    ·主接口:提供了PCI接口,允许与PC机相连。该板既可以以PCI模式运行,也可以单独脱机工作。
    ·网络接口:以太网接口为视频码流的网络传输带来了方便。
    ·外部扩展存储器:256M 64位宽扩展内存SDRAMA和8M 32位宽扩展内存SDRAMB及4MB FLASH ROM提供了足够的内存空间和灵活的内存分配方案。
2  H.264视频压缩标准
    H.264是由ITU-T 视频编码专家组(VCEG)和ISO/IEC移动图像专家组(MPEG)共同提出的最新国际视频编码标准。它在H.261、H.263视频压缩标准的基础上,进行了进一步的改进和扩展。其目的是为了进一步降低编码码率,提高压缩效率,同时提供一个友好的网络接口,使得视频码流更适合在网络上传送[2]。由于该标准可以提供更低的码率,所以更适合应用于多媒体通信领域。
    H.264主要有以下新特点:
    ·网络适配层NAL(Network Abstraction Layer)。
    传统的视频编码编完的视频码流在任何应用领域下(无论用于存储、传输等)都是统一的码流模式,视频码流仅有视频编码层(Video Coding Layer)。而H.264根据不同应用增加不同的NAL片头,以适应不同的网络应用环境,减少码流的传输差错。
    ·帧内预测编码模式(Intra Prediction Coding)。
    帧内预测编码合理地利用了I帧的空间冗余度,从而大大降低了I帧的编码码流。
    ·自适应块大小编码模式(Adaptive Block Size Coding)。
    H.264允许使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子块预测和编码模式,采用更小的块和自适应编码的方式,使得预测残差的数据量减少,进一步降低了码率。
    ·高精度亚像素运动估计(High precision sub-pel Motion Estimation)。
    H.264中明确提出了运动估计采用亚像素运动估计的方法,并制定1/4像素和1/8像素可选的运动估计方法。亚像素运动估计,提高了预测精度,同时降低了残差的编码码率。
    ·多帧运动补偿技术(Multi-frame Motion Compensation)。
    传统的视频压缩编码采用一个(P帧)或两个(B帧)解码帧作为当前帧预测的参考帧。在H.264中,最多允许5个参考帧,通过在更多的参考帧里进行运动估计和补偿,找到残差更小的预测块,降低编码码率。
    ·整形变换编码(Inter Transform Coding)。
    H.264采用整形变换代替DCT变换,整形变换采用定点运算代替浮点运算。采用这种变换,不仅可以降低编解码的时间,而且,为该算法在多媒体处理平台上实现带来了方便。在这一点上,H.264视频编码标准更适合作为多媒体终端的编解码标准。
    ·两种可选择熵编码CAVLC和CABAC。
    CAVLC(Context-based Adaptive Variable Length Coding):基于内容的自适应变长编码。
    CABAC(Context-based Adaptive Binary Arithmetic Coding):自适应二进制算术编码。
    以往的视频压缩标准中,都采用Huffman编码与变长编码相结合的方法进行熵编码。Huffman编码虽然是一种很好用的熵编码方法,但是其编码效率并不是最高的,而且,Huffman编码的抗差错性能很低。H.264中采用了两种可以选择的熵编码方法:CAVLC编码抗差错能力比较高,但是编码效率不是很高;CABAC编码是一种高效率的熵编码方法,但是计算复杂度很高。两者各有优缺点,所以针对不同的应用,选择不同的编码方法。

3  H.264解码器算法的DSP实现和优化
3.1  在PC机上实现H.264算法并进行优化

    ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求。这一步需要做的具体工作包括:去处冗余代码、规范程序结构、全局和局部变量的调整和重新定义、结构体的调整等。
3.2  PC机H.264代码的DSP化
     C6000开发工具Code Composer Studio有自己的ANSI C编译器和优化器,并有自己的语法规则和定义,所以在DSP上实现H.264的算法要把PC机上C语言编写的H.264代码进行改动,使其完全符合DSP中C的规则。
这些改动包括:去除所有的文件操作;去除可视化界面的操作;合理安排内存空间的预留和分配;规范数据类型——因为C6416是定点DSP芯片,只支持四种数据类型:short型(16 bit)、int(32bits)、long型(40bits)和double型(64bits),因此必须对数据进行重新规范,把浮点数的运算部分近似用定点表示,或用定点实现浮点运算;根据内存的分配定义远近程常量和变量;把常用的数据在数据结构中提取出来,以near型数据定义在DSP内部存储空间,以减少对EMIF端口的读取,从而提高速度。
3.3  H.264的DSP算法优化[3]
    通过把PC机H.264代码DSP化,可以在DSP上实现H.264的编解码算法,但是,这样实现的算法运行效率很低,因为所有的代码都是由C语言编写,并没有完全利用DSP的各种性能。所以必须结合DSP本身的特点,对其进一步优化,才能实现H.264视频解码器算法对视频图像的实时处理。
    对DSP代码的优化共分为三个层次:项目级优化、C程序级优化、汇编程序级优化。
    (1)项目级优化:主要是通过选择CCS提供的编译优化参数,根据H.264系统的要求进行优化,通过不断地对各个参数( -mw -pm -o3 -mt等)的选择、搭配、调整,改善循环、多重循环体的性能,进行软件流水,从而提高软件的并行性。
    (2)C程序级优化:主要是针对采用的DSP的具体特点进行代码的功能精简、数据结构的优化、循环的优化、代码的并行化处理。在这里主要工作包括以下部分:去除掉SNR计算、帧率及其他辅助信息的程序模块。函数及数据映射区域的调整,把经常用的数据存储在片内存储器中,频繁调用的程序尽可能映射在相邻或相近的存储区域。C函数的并行化处理,针对并行化效果差的函数,尤其是多重循环体,要进行循环拆解,将多重循环拆解为单重循环。减少存储区数据的读取和存储,尤其是片外存储区域数据的调用,以减少时间。数据结构的重定义和调整。
    下面以数据结构的调整说明如何合理利用DSP特性进行软件优化。
    数据结构是指数据的类型及其在内存空间的分配方式,不同的数据结构,对程序的性能有不同的影响。因此,数据结构的调整对程序在DSP上并行执行是必不可少的步骤。
    在H.264解码器内核代码中,数组mpr[i][j]用来存放一个宏块的预测系数,数据类型是int型,其中i、j是该系数的坐标。但是预测系数实际上只有8位位宽,所以,定义成byte型就足够了。这样一方面节省了内存空间,另一方面,用byte类型可以直接使用LDW指令代替LDB指令,一次读取4个数据,节省了读取时间。因为H.264中对系数的读取都是以块为单位的,而内核中的mpr数据结构显然不能充分利用DSP的特性,所以数据存储结构也需要调整,把mpr中每一个块分配到一个连续的内存空间有利于数据的传送,如图2所示。这样,每一次确定了一个块以后,只要更改一维的信息就能确定系数的位置,而原始的结构对每一个系数都有确定两位系数。通过这样的数据调整,可以明显地提高程序的运行速度。

 


    (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));
            }
          }
    该段代码采用一个六阶滤波器来插值1/2位置的像素值,共插出16个值(一个块)。源代码采用三重循环,内层循环是插值滤波器,如果直接用编译器把源代码编译成汇编的话,内部循环都要反复读取一些内存数据。采用汇编自己编写,则可以改进算法,大大降低函数的运行时间。
    如图3所示,在插值第一个半像素位置时,要在内存中读取1~6像素的值,插值第二个半像素位置时,要读取2~7点的值,这样,就反复读取了2~5像素点的值,而且,插值一个点需要进行6次乘法、5次加法。用汇编语言编写,手工排流水线,可以降低数据的读取次数,同时减少了乘、加法指令数。首先,采用LDNW指令直接读取8个数据到寄存器中,每次插值直接使用寄存器而不再去内存中读取数据。另外,采用DOTPSU4乘累加命令代替MPL指令,将四次乘法和3次加法用一条指令来代替,减少了指令数目。

 


    通过以上各种优化方法,最终实现了基于C6416内核的H.264 baseline解码器算法。
4 算法性能的评测及前景展望
    在NVDK C6416环境下,测试了解码器算法,对QCIF测试序列,已经能够达到50~60帧/秒的解码速度,远远达到了实时性解码的目的。
    在NVDK C6416板卡上实现的H.264视频解码器具有功能强、使用灵活等特点,有广泛的应用前景。该优化的算法不仅适用于NVDK板,对于所有的C64开发板都具有通用性,只要根据板卡的内存分配,重新配置内存参数文件,便可以把该算法移植到新的开发板中。该H.264视频解码器与网络平台相连接便可以应用于视频会议、可视电话、无线流媒体通信等应用领域。
参考文献
1  IEKC64X USERS MANUAL. Data Sheet.
2  Thomas Wiegand, Gary J.Sullivan, Gisle Bjontegaard and Ajay Luthra.Overview of the H.264/AVC Video Coding Standard. IEEE Transactions on Circuits and Systems for Video Technology, 2003;(7):560~576
3 SPRU187g. TMS320 C6000 Optimizing C Compiler User's Guide. March 2000

关键字:TI  DSP 引用地址:H.264视频解码器在C6416 DSP上的实现

上一篇:TI推出可编程PLL时钟合成器
下一篇:DSP控制的电力线通信模拟前端接口设计

推荐阅读最新更新时间:2024-05-02 20:41

基于FPGA的多路视频通道控制
视频监控以其直观、方便、信息内容丰富而广泛应用于很多场合。视频监控成为人们生活中不可缺少的技术。在一些危险场所,用视频监控代替人工监视,可以保证人们的生命安全。鉴于一路视频的视野范围有限,要充分收集目标的信息,就需要有多路视频来对同一个物体在不同方位进行监控。因此需要有一个良好的控制手段,确保多路视频控制稳定,可靠。针对织布机告警系统的需求,提出一种基于FPGA的多路视频通道控制系统,本系统设计利用FPGA间接控制2块MAX4312选通所需要的视频通道,实现各个视频通道间相互切换。根据开关控制信号的设计思想在FPGA中对拨动开关输进信号做往抖动处理,然后对不同的开关操纵进行编码,最后将信号送给DSP进行处理。 l 系统总体结构 系
[嵌入式]
基于FPGA的多路视频通道控制
Spansion携手德州仪器整合嵌入式处理器
    整合Spansion NOR 闪存和TI ARM® 微处理器的Dave Lizard CPU模块,为家庭自动化和工业控制领域提供高性能和出色交互性的解决方案     2011年6月17日,中国上海—业内领先的NOR闪存提供商Spansion公司(NYSE: CODE)今日宣布公司将与德州仪器(TI)和一家意大利系统设计公司Dave开展合作,共同致力于开发针对家庭自动化和工业控制领域的高性能、出色交互性的解决方案。Dave公司正在开发完整的CPU模块——Lizard主板,该主板整合1Gb Spansion GL NOR闪存以及TI AM3517/AM3505 Sitara™ ARM®微处理器,将呈现出丰富的二维和三维实时
[嵌入式]
DSP编程技巧之5---揭开编译器神秘面纱之调试与路径选项
 在程序的编写与测试中,调试功能是非常重要的,很多时候我们需要一步步的调试与观察才能找到一些隐藏很深的bug,所以要对 编译器 的调试选项有一些了解,下面我们首先看一下 编译器 的调试选项都有哪些。  表1 编译器 的调试选项 选项 别名 优化的效果 --symdebug:dwarf -g -g 是默认选项,在缺省情况下,大多数程序和库都是带调试符号( gcc 参数 -g )编译的。当调试一个带调试符号的程序时,调试器不仅能给出内存地址,还能给出函数和变量的名字。产生符号调试信息并不会影响程序的优化效果。 注: DWARF 是一种很复杂的二进制文件格式,它和和
[嵌入式]
自许成为中国德仪,矽力杰拚年底挂牌
    电源管理IC厂F-矽力杰(6415)今(26日)召开上市前法说。董事长暨总经理陈伟(见附图)指出,F-矽力杰的目标,是成为中国大陆的德仪(TI),而目前希望拚在今年底前在台上市。关于未来营运展望,他指出,F-矽力杰明年仍可延续一贯的稳健格局,营运可望较今年成长,主要动能将来自LED照明、以及智能电视、机上盒等新兴应用。陈伟并强调,F-矽力杰于应用在LED照明的电源管理IC技术,较同业领先达2年。 F-矽力杰目前股东结构,创投占48%(其中日前入股mosfet厂富鼎(8261)的华威创投为最大股东,占25%),员工与经营团队占40%,其他占12%。因此,今日华威创投董事长张景溢也特别出席,为F-矽力杰站台。 张景溢表示,华威创
[手机便携]
一种基于DSP的中文语音合成系统设计
摘要:本文提出了基于TI公司的TMS320VC5402的中文语音合成系统方案。整个系统以TMS320VC5402为核心电路进行设计,采用以音节为单位的中性语调,配合基于基音同步重叠相加的PSOLA算法,并用码激励线性预测(CELP)编码方法对原始采样音库进行编码压缩。 关键词:DSP;SCM;PSOLA;文本分析;语音合成 0 引言 随着语音信号处理技术的不断发展与成熟,语音合成正逐步成为信息技术中人机接口的关键技术。DSP芯片,即数字信号处理器,是专门为快速实现各种信号处理算法而设计的、具有特殊结构的微处理器,其处理速度比最快的CPU还快10"50倍。本文介绍的就是一种基于DSP的中文语音合成系统的实现方法。 1 系统总体方
[应用]
DSP的起源
术语“DSP”是数字信号处理的英文缩写。数字信号处理是电子设计领域的术语,在这样的领域中,用离散(在时间和幅值两个方面)的采样数据集来表示和处理信号和系统,在出版的书和杂志中有大量的这方面的研究和数学算法。最初,大多数数字信号处理是在主机和其它通用数字计算机上离线完成的。这就是所谓的数字数据的“后处理”。随着在最近的二十多来年集成电路的复杂性和集成度的飞速增加,开发出专用处理芯片器,它能实时或“在线”进行数字信号处理。这些芯片被称为数字信号处理器(DSPs),并在半导体工业中成为最大的增长市场。从1988年至今,DSP的市场每年增长40%。这就意味着将引入更高性能的DSPs(及与DSP有关的产品),并以较低的价格销售。结果有
[新品]
德州仪器推出 1.8 A 有刷 DC 电机驱动器
日前,德州仪器 (TI) 宣布推出业界最小型 1.8 A 有刷 DC 电机驱动器,进一步壮大其不断发展的低电压 DRV8x 电机驱动器产品阵营。该 DRV8837 与最接近的同类竞争产品相比外形缩小 75%,可实现更小巧、更时尚、更具创新性的系统设计。此外,与现有器件相比,它还将 RDS(ON) 降低 50%,将睡眠电流降低 75%,从而延长电池使用寿命,提高电池供电或低电压运动控制应用的散热性能。 DRV8837 的主要特性与优势: • 延长电池使用寿命:280 毫欧低 RDS(ON) 与仅为 35 nA 的超低睡眠电流可为玩具、智能气表或水表、电子锁、微型打印机以及摄像机等应用提高散热性能,延长电池使用寿命; • 提高性能
[电源管理]
<font color='red'>德州仪器</font>推出 1.8 A 有刷 DC 电机驱动器
德州仪器推出业内先进的独立式有源 EMI 滤波器 IC,支持高密度电源设计
德州仪器推出业内先进的独立式有源 EMI 滤波器 IC,支持高密度电源设计 工程师可以设计更小、更轻量和更经济适用的解决方案, 同时优化系统性能、效率和可靠性 中国上海(2023 年 3 月 28 日)– 德州仪器 (TI) 今日宣布推出业内先进的独立式有源电磁干扰 (EMI) 滤波器集成电路 (IC),能够帮助工程师实施更小、更轻量的 EMI 滤波器,从而以更低的系统成本增强系统功能,同时满足 EMI 监管标准 。 随着电气系统变得愈发密集,以及互连程度的提高,缓解 EMI 成为工程师的一项关键系统设计考虑因素。得益于德州仪器研发实验室 Kilby Labs 针对新概念和突破性想法的创新开发, 新的独立式有源
[电源管理]
<font color='red'>德州仪器</font>推出业内先进的独立式有源 EMI 滤波器 IC,支持高密度电源设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved