基于Blackfin533的H.264编码

发布者:电子设计艺术家最新更新时间:2012-10-12 来源: 21ic 关键字:Blackfin533  H.264  编码 手机看文章 扫描二维码
随时随地手机看文章
  随着计算机网络和多媒体技术的发展,数字视频的应用越来越广泛,如DVD、网络会议服务、数字电视等。在这些视频处理与通信中,有效的视频编码是其关键技术。
  H.264/AVC是ITU-T视频编码专家组和ISO/IEC运动图像专家组联合提出的最新一代的视频编码标准。H.264具有许多优良的性能[1]:压缩比更高,与现有编码标准(H.263、MPEG-4 Simple Profile)相比,在相同视频质量下,能节省大约50%的码流,图像质量更好,适应性更广,能较好地满足实时(视频会议)及非实时(存储、广播等)等各种应用。在DSP上实现H.264的实时编码具有较大的工程意义及经济价值。

1 H.264标准简介及DSP平台
1.1 H.264标准简介


  H.264是ITU-T和ISO/IEC联合制定的最新的视频编码标准,于1997年由ITU-T提出,2003年3月形成最终标准草案。它包含了视频压缩领域的许多最新研究成果,主要采用了下面的技术[1]:
  (1) 将编码分为编码层VCL(Video Coding Layer)和传输层NAL(Network Abstraction Layer)。将编码层和传输层分离,有利于H.264的扩展。
  (2) H.264采用了空域内的帧内预测,共两种预测模式:intra16×16和intra4×4。其中intra16×16有四种预测方式,intra4×4有九种预测方式。
  (3) 对于帧间预测,增加了预测模式,共七种预测模式。预测块从16×16可以最小细分为4×4。
  (4) 增加了参考帧的数目,使预测更为准确。
  (5) 将去块效应滤波放在编码环内,提高图像的主观质量。
  (6) B帧可以作为参考帧,同时将图像的解码顺序与显示顺序分离。
  (7) 采用整系数变换,提高变换速度。
  (8) 采用CAVLC、CABAC等新的熵编码方法以提高编码效果。
  (9) 提高了码流的抗误码能力,如对编码数据进行分割,一帧图像可以灵活地分为几个slice等。

1.2 基于Blackfin533的DSP平台

  Blackfin533是ADI公司Blackfin系列中的一款高性能视频处理芯片。其主频最高能达600MHz,每秒可处理1200M次乘加运算。具有大量针对视频的专用指令,可以并行处理多条指令。
  从总体上看,Blackfin533分为内核和系统接口两大部分。内核指处理器、L1存储器、事件控制器、内核定时器等;系统接口指SPORT接口、PPI接口、SPI接口、外部存储控制器、DMA控制器及与它们接口的外部资源等。
  Blackfin533开发平台原理图如图1所示。摄像头输出的模拟视频信号经7113视频芯片转化为数字信号,此信号从Blackfin533的PPI接口进入Blackfin533,压缩后的码流由PCI桥传给PC机。此系统通过Flash启动,编码过程中的原始图像、参考帧及其他变量存储在SDRAM中。
  图2为H.264编码系统的视频输入模块。7113芯片从视频端子读入摄像头输出的模拟信号,通过并口将数字信号输出给Blackfin533。Blackfin533通过I2C总线对7113进行配置,使其输出YUV模式、ITU656模式及增强ITU656模式等。


               图1 Blackfin533平台总体框架图

                     图2 视频输入模块 
          
                 图3 H.264编码模块图


2 H.264编码器的优化
2.1 总体优化


  总体优化主要包括两部分内容:程序模块化的设计及数据结构的设计。
  程序模块化设计时,既要考虑模块的独立性,又要考虑模块的完整性。笔者的H.264的模块关系图如图3所示。视频输入模块负责图像序列的读取,从PPI口进入的图像首先保存到外部存储器,再进行编码。读入的图像经帧间模式选择和帧内模式选择模块,得到每个宏块的预测模式。整系数变换、量化模块对预测后的残差进行整系数变换及量化处理。量化后的系数经过扫描后,在编码模块中进行UVLC编码。最后由写码流模块输出。其中,去块效应滤波模块对反量化、整系数逆变换后的重建图像进行滤波;图像缓存管理模块负责管理对参考图像的存取。从图3中可以看出,整系数变换与量化结合在一起作为一个模块。主要因为:一方面H.264中,量化和整系数变换本身就部分结合在一起;另一方面这样可以在寄存器中一起完成变换、量化,有助于减少数据的存储次数和读取时间。对于反量化、整系数逆变换,采用相似的设计思路。
  数据结构的设计是H.264编码的重要组成部分。合理的数据结构既有利于提高数据访问的速度又有利于程序的不同平台的移植。主要有以下原则:尽可能连续存放数据,这样有利于用DMA方式对数据进行读取;每种数据结构完成相对简单的功能,这样便于对不同数据结构的数据进行管理。如表示帧间模式的InterMode、帧内模式的IntraMode需要放在片内存储器中以加快读取速度,而参考帧的数据ImgData由于数据太大则需要放在片外存储器中;尽可能使用短的数据类型,节省DSP的存储空间。[page]

2.2 各程序模块的优化


  各程序模块的优化主要指各模块的C代码优化及部分代码的汇编优化。
  C代码的优化对H.264编码器有着重要意义,它既有利于提高编码的速度,又有利于编码器的跨平台移植。C代码优化有下面的原则:
  (1) 使编码器代码线性化,这样有利于DSP的流水线满负荷运行,更充分地发挥DSP的数据处理能力。
  (2) 取消循环中的数据依赖。数据依赖是指后面指令的输入数据依赖于前面指令的输出数据。许多DSP芯片都提供了硬件循环指令,Blackfin533有两个硬件循环器,可提供两层的硬件循环。硬件循环实现了零开销的循环判断,能大大提高循环指令的执行速度,然而数据依赖的存在会阻止硬件循环的使用。所以要尽可能消除循环中的数据依赖。
  (3) 将除法转化为乘法或查表方式。Blackfin533提供了硬件乘法器,但没有硬件除法器。执行除法指令会花费几十或上百个指令周期。将除法转化为乘法或查表,能大大减少这种开销。
  (4) 减少对片外存储器的访问次数。片外存储器相对于片内存储器是低速设备,片外存储器的读取时间是片内存储器的几倍至十几倍。对于片外存储器的数据要做到一次读取,完成多次计算。
  Blackfin芯片的开发环境VisualDSP本身已经带有汇编器,但由于种种原因,对于某些运算量大、调用频繁的函数仍需要进行手动汇编优化。进行汇编优化时,应注意以下几点:
  (1) 节省寄存器资源。Blackfin533提供了8个32位数据寄存器以及一系列的地址寄存器。对于这些寄存器,应尽可能做到一个寄存器多次使用;同时在能用较短的数据类型的情况下用短的数据类型,如能用short则不用int,这样每个32位寄存器可以作为两个16位寄存器使用,相当于增加了寄存器的数量。
  (2) 使用专用指令。Blackfin533提供了求最大值、最小值、绝对值、CLIP及大量视频专用指令,通过使用这些指令,能大大提高代码的执行速度。
  (3) 使用并行指令。对于大多数指令都存在相对应的并行指令,如一条运算指令可以并行两条数据读取指令。并行指令的使用能成倍提高代码的执行速度。
  (4) 将内层循环展开等。
  对于不同的图像帧(I、P),各模块所占的比例各不相同。对于I帧,帧内模式选择和去块效应滤波占较大的比例;对于P帧,帧间模式选择则占较大的比例。总之,模式选择及去块效应滤波是H.264编码的瓶颈,需要对这两部分进行优化。
  进行模式选择时会调用绝对差值求和函数(SAD)及hadamard变换后再绝对值求和函数(SATD)。这两个函数虽然较简单,但调用较频繁,对这两个函数进行汇编优化,能较大提高模式选择的速度。对于绝对差值求和函数(SAD),通过使用Blackfin的专用视频指令SAA,可以大大提高运算速度,具体见汇编优化统计表1和表2。
表1 优化前后函数所占时钟周期数对比表 
        
优化函数 优化前(时钟周期数) 优化后(时钟周期数) 提高倍数
SAD 1385 55 25
SATD 1964 84 23
GetStrength 50214 4983 10
EdgeLoopY 61227 5032 12
EdgeLoopUV 52110 4173 12

                          表2 优化后的H.264各模块性能 
      
  占用时间(时钟周期数M) 所占比例
模式选择(包含插值) 11.26 53.6%
变换、量化 1.87 8.9%
反量化、反变换 1.93 9.2%
编码(UVLC) 0.90 4.3%
去块效应滤波 2.73 13%
其他 2.31 11%

                        表3 压缩后的CIF图像的质量

     

  H.264编码器
视频序列
(100帧)
平均峰值信噪比PSNR(dB) 码率(kbit/s)
亮度Y 色度U 色度V  
Foreman 36.57 41.23 43.39 503
Shanlin 34.00 39.95 41.30 1035
tempete 30.47 35.81 37.60 1059
mobile 30.58 34.48 34.24 1587


  去块效应滤波在编码中占有较大的比重。主要包括:计算滤波强度和行列滤波两部分,需要针对这两个子模块进行优化。去块效应滤波中有较多的判断语句,判断语句会打断DSP的流水线,使DSP不能充分发挥其性能,优化时应尽可能将判断转移到循环外面去,以提高执行效率。同时去块效应滤波需要频繁地访问待滤波数据,减少对这些数据的访问次数也能较大地提高去块效应滤波的速度。
  SAD()的函数原型及其汇编代码[2]:
  for(i=0;i<16*16;i++)
   result +=abs( *pSrc++ - *pRef++);
   LSETUP(row_start,row_end) LC0=P1;  //利用Blackfin的硬件循环实现SAD的循环
   row_start:
   R3 = [I1++]; //读取数据
   SAA(R1:0,R3:2) || R1= [I0++] || R2= [I1++]; //计算R1:0和R3:2的SAD
   SAA(R1:0,R3:2)(R) || R0= [I0++] || R3= [I1++]; //执行SAA的同时,读取数据
   SAA(R1:0,R3:2) || R1= [I0++] || R2= [I1++];
   row_end:SAA(R1:0,R3:2)(R) || R0=[I0++] || R2= [I1++];

3 实验结果


  笔者使用600MHz时钟的Blackfin533,对于低、中运动复杂度的图像序列,能够实现25帧/秒的实时编码;对于高运动复杂度的图像序列,能实现20帧/秒左右的准实时编码。其各模块所占时间比例见表2。
  编码器的性能指标如下:1个参考帧;帧间模式采用16×16、16×8、8×16、8×8模式;帧内模式对16×16采用4种预测模式,对于4×4采用9种预测模式;1/4像素的运动估计;熵编码采用CAVLC编码方式。
  表3为不同图像序列压缩效果的比较。每种序列压缩100帧图像,采用IPPPP....的编码模式。综上所述,在Blkfin533平台上实现了H.264的CIF图像的准实时编码。该系统具有码流低、延时小、图像质量高等优点。

参考文献
 
1 Draft ITU-T recommendation and final draft international stan- dard of joint
video specification (ITU-T Rec. H.264/ISO/IEC 14 496-10 AVC. in Joint Video Team (JVT)
of ISO/IEC MPEG and ITU-T VCEG, JVTG050, 2003
2 AD Inc. Blackfin processor instruction set reference.Rev 3.0,June 2004:417~421,487~492

关键字:Blackfin533  H.264  编码 引用地址:基于Blackfin533的H.264编码

上一篇:北京大学IPTV应用解析
下一篇:基于TMS320C64x的MPEG-4实时编码器设计与实现

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

如何制作H264编码的FLV格式视频文件
懂行的网友会发现主流的视频网站都开始用H264编码的flv文件,我觉得H264编码的flv文件,相同文件大小情况下,清晰度明显比On2 VP6要好,只是没有用过On2 VP8的编码,不知道On2 VP8是怎么样,是否比H264的还要好。有一个要特别说明的时候,H264编码的flv文件,需要Flash Player 9和更高版本的H.264视频编解码器才能够播放。 首先介绍一种用Adobe Media Encoder CS4软件来制作FLV文件的方法: Adobe Media Encoder CS4更新很多,我觉得最有用的就是对F4V的支持了(F4V是Adobe公司为了迎接高清时代而推出继FLV格式后推新的支持H.264的
[模拟电子]
如何制作H264<font color='red'>编码</font>的FLV格式视频文件
ZSZ系列轴角编码器在伺服系统中的应用
    摘 要: 在某雷达天线伺服系统的设计中应用了ZSZ系统轴角编码器,解决了ZSZ轴角编码器模拟速度量的微弱信号处理问题和数字化轴角编码器的信号采集和远距离传输问题。     关键词: ZSZ轴角编码器 伺服系统 模拟速度量 传输     在雷达、火控、导弹发射架等需要实现角位置闭环控制的伺服系统中,完成角位置测量是实现闭环控制的先决条件,在以前的伺服系统中通常应用同步机加相敏检波实现角误差测量,系统笨拙,不易实现数字化控制。近年来单片机技术在交、直流伺服系统设计中得到广泛应用,伺服系统的数字化已成为伺服系统设计的主流,为此,与之相配置的数字化轴角编码器装置得到迅速发展。数字化轴角编码器和同步发送机配
[应用]
编码
编码器 编码 编码器 编码原则 6.3.1 二进制编码器 一、定义 二、逻辑电路图 三、输出逻辑函数 四、列真值表 五、分析 6.3.2 二一十进制编码器 一、定义 二、逻辑电路图 三、输出逻辑函数 四、列真值表 五、分析 6.3.3 优先编码器 一、定义 二、MSI器件:二—十进制优先编码器CT74LS147 1.真值表 2.逻辑功能分析 编码:用代码表示特定对象的过程。例:商品条形码、键盘编码器。 编码器:实现编码的逻辑电路。 二进制编码原则:用n位二进制代码可以表示 个信号 则,对N个信号编码时,应由 来确定编码位数n。 提问:101键盘编码需要几位二进制代码? 6.3.1 二进制编码器 一、二进制编码器:用n位二进制代码对
[模拟电子]
对值编码器AEAT-84AD在阀门控制中的应用
现在的 阀门 大多为机电一体化设计,能通过电路系统对阀门进行自动化控制;电路系统实现对阀门开度的控制、反馈与调节,并做到精确无误定位,其重点在于阀门位置的精确反馈和执行机械设计的运行,这也是机电一体化综合设计中的难点。同样,在机械手臂应用中,比如在对底座、大臂、小臂或者多轴的系统控制中,需要实时检测它们的位置信息,并将其位置传送到控制中心进行处理;机械手臂的位置检测器,要求小尺寸,以便能更好的安装。   在阀门控制和机械手臂的控制中,在断电之后的上电,不需阀门和手臂的运动,就能检测到阀门和手臂的位置信息。做到这点则需要一套完整的绝对值编码器,同时在计量范围和精度方面更有优势。AVAGO多圈 绝对值编码器 AEAT-84A
[工业控制]
对值<font color='red'>编码</font>器AEAT-84AD在阀门控制中的应用
基于SPCE061A的语音识别技术应用
SPCE061A是凌阳公司设计的一种16位单片机,该款单片机资源丰富,具有极高的性价比,该单片机内置有2路DA转换,8路AD转换及在线仿真,并且有16×16位的乘法运算和内积运算的DSP功能,这为它进行复杂的语音数字信号的压缩编码与解码提供了便利,还可以做数字滤波器。这些特点为我们进行在语音处理尤其是语音识别领域的应用提供了便利。 语音识别技术在各个层面均有广泛的应用前景。电脑软件领域,例如:语音命令、语音输入,对话系统、查询系统、教学软件、游戏软件等;消费性电子产品领域,例如:电子记事本、声控玩具、语音拔号功能的手机等;工业产品领域,例如:车用移动电话、车用导航系统等;电话系统领域,例如:语音识别总机服务、语音拔号、语音订票订
[单片机]
Vishay推出的新款磁性编码位移传感器具有高精度、高可靠性和更长寿命
Sfernice E027高27mm,在25℃下的精度达到0.33% 宾夕法尼亚、MALVERN — 2017 年 8 月10 日 — 日前,Vishay Inrtechnology, Inc.(NYSE 股市代号:VSH)宣布,推出新的磁性---RAME027,其精度可与霍尔效应器件媲美,而且有更高的可靠性和更好的耐久性。一次可编程(OTP)的Vishay Sfernice RAME027在25℃下的精度为±0.33%,高度只有27mm。典型应用包括国防和工业用的操纵杆、电动执行器、机械工具、纺织品制造、铣床和机器人。 可靠的性能和结构,使RAME027成为强和冲击等严苛工况的理想解决方案。Vishay可以根据
[机器人]
基于51单片机的编码译码显示实验电路设计
0 引 言 在日常数字逻辑电路实验中编码译码显示实验电路是编码、译码、显示三个电路的综合运用, 在数字逻辑实验电路中具有重要的地位, 在实验的过程中, 时常会出现显示结果的抖动, 经研究出现这种现象主要原因是:编码电路的编码信号输入采用手工拨盘方式, 产生的编码输入信号往往不稳定; 另外, 电路控制性能较差,不能达到自动复位, 为此有必要对现有电路进行改进,在电路的设计上采用89C51 单片机为控制电路制作而成, 自动提供稳定编码输入信号, 显示结果稳定性和电路控制性能大大提升, 提高了教学实验质量。 1 编码译码显示实验电路的基本结构 编码译码显示电路的基本结构如图1 所示, 主要由控制电路、编码信号发生器、编码译码显示电路等组
[单片机]
基于51单片机的<font color='red'>编码</font>译码显示实验电路设计
基于DBPL编码信号的信号源系统设计
DBPL(Differen TI al Bi-Phase Level)编码是一种超越传统数字传输极限的编码方式。DBPL编码被广泛应用于以太网、工程测井仪器和铁路应答器等工程应用中。在铁路应答器中,通过DBPL编码传输信号给列车车载处理器,实现对列车运行的控制。 本文设计了一种基于AT89LV51单片机控制的DBPL编码信号的信号源系统,能够产生DBPL编码信号;同时设计了系统的电源管理模块,保证系统的正常供电。 1 信号源系统的设计 该信号源由时钟复位模块、DBPL信号产生电路、DC-DC转换电路、充电管理电路和A/D转换电路组成。单片机AT89LV51控制编码模块产生DBPL信号;充电管理电路对系统所用电池进行充电管理,保
[单片机]
基于DBPL<font color='red'>编码</font>信号的信号源系统设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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