基于DM642DSP的视频编码优化方法

最新更新时间:2012-09-01来源: 互联网关键字:DM642DSP  视频编码  优化方法 手机看文章 扫描二维码
随时随地手机看文章

引言

当前在视频监控,视频会议,网络流媒体等方面数字视频编码成为最核心,最基本的技术手段,尤其是视频监控现已成为最为普通的安保设备之一。基于电脑硬盘为存储体的数字DVR已日渐取代模拟DVR。数字DVR的最关键技术就是视频压缩技术,而视频压缩技术又含有两大选择。首先是视频压缩采用何种算法标准,当前视频算法的国际标准有MPEG2、MPEG4、H.264,H.264以其高压缩效率,在低码率下优良的图像质量成为目前视频监控系统中首选的压缩方式。

但任何事物都有其两面性,H.264编码的高效率,优质图像是用算法的复杂性来换取的。H.264编码器的复杂性是MPEG2的4-5倍。第二个选择是用什么芯片来实现,TI公司的TMS320DM642芯片,是一款专门用作媒体处理的高速DSP,其强大的图像处理能力为在监控系统中实时实现H.264编码提供了可能。为了降低成本,还必须充分运用DM642本身的资源,使一颗DM642能处理更多路的视频,这就是高效率优化的目的,本文首先对整个视频监控的硬件平台做了介绍,后结合DM642的结构特点,提出整个编码软件的框架的安排,对于占用系统资源最多的运动估计提出基于DSP的优化方法,最后以整数DCT为例,讨论了编写汇编代码的技巧。

硬件平台的介绍

整个视频监控的硬件系统的框架如图1所示。DM642芯片为了适应数字媒体处理的需求,增加了三个可配置的视频端口(VP0,VP1,和VP2),这些视频口外设为常用的编解码设备提供了无缝接口。因而不需要外加可编程逻辑器件和FIFO就可满足系统设计的要求。

为了节省成本,提高DSP芯片的利用率,在一块板卡可以同时处理多路的音视频,压缩卡与主机间的数据吞吐量会很大,为了保证数据存储的实时性,系统采用PCI板卡,其与主机通信数据传输速率最高达528MB/s(66MHz,64bit),完全满足大容量高速实时传输系统的需求。


图1 硬件系统框架

由于每个视频口可以接收两路8/10bit的视频信号,视频信号经过SAA7144A/D转换输出为8位BT.656格式的数字视频数据。这样就能利用一颗DM642芯片处理最多6路视频输入。每个视频端口的BT.656视频采集模式采集8bit或是10bit4:2:2格式的亮度和色度信号,并将它们复用到一个数据流里,视频数据以Cb,Y,Cr,Y,Cb,Y,Cr的顺序传送,其中Cb,Y,Cr代表同一位置的亮度和色度样点,紧接着后面的Y代表下一个位置的亮度样点。数据流经解复用后亮度和色度信息分别存放到各自的Y,Cb,CrFIFO中,再经EDMA搬移到SDRAM中,以备CPU读取进行压缩编码。编码后的视频流再经PCI口存入到电脑的硬盘上,从而完成整个视频监控的流程。

编码器整体框架的安排

JM代码是很多可选的H.264标准软件之一,它关心H.264全部的功能在代码上得到体现,所有的情况都得考虑,例如帧编码,场编码都有,内存的分派没有考虑到系统的实际情况,适合用来帮助理解H.264标准,不太适合移植到DSP平台上。为了高效的组织利用DM642有限的片内资源,就得重新组织代码,包括数据结构,数据存放的位置,程序存放的位置,精简地来安排程序。

首先要考虑的是L2的配置问题,第二级L2(256kB)是一个统一的程序/数据空间,可以整体作为SRAM映射到存储空间,也可整体作为第二级cache,或者二者的比例的组合使用。因为一旦二级缓存也不命中的话,那么读取数据申请将转由EDMA来完成,CPU至少有13个cycle的延迟。所以我们总是尽量把程序和数据放在片内存储器内。但是即使全部将L2配置成SRAM也只有256kB大小,以CIF格式图像为例,待编码的一帧图像大小是148.5kB,再加上运动估计的参考图像就大大超过256kB了。所以在配置L2时,笔者选择的是SRAM224kB,L2cache32kB。首先考虑要放到SRAM的是表格,全局变量,栈数据和一些调用频繁的核心程序,如运动搜索,DCT变换,量化……而整个待编码图像和参考图像就只能放在片外存储空间了。

既然图像数据被存放到了片外存储空间中,就要涉及到数据在片内存储跟片外存储间的数据搬移,这可交由DM642强大的EDMA引擎来完成,EDMA工作时不占用CPU的周期,把CPU从繁重的搬移数据的工作中解放出来,专致于运算工作。在编码程序时,为了避免CPU等待EDMA搬完数据后才能工作,可采用乒乓结构的双缓存区,当EDMA传送数据到其中一块存储区域时,CPU对另一块存储区域进行处理。待二者都处理完毕后,乒乓区域交换。

需要通过EDMA搬移的数据有待编码的宏块,前后帧对应的参考宏块,和编码后的重构宏块(B帧不需要),这些宏块都包括亮度块和色度块。EDMA在搬大量数据时才能将它的性能发挥到极致,如果每编完一个宏块就进行一次乒乓缓存交换,那么在频繁的配置EDMA通道参数上就耗费了过多的CPU周期。有限的片内存储空间,制约着不能一次搬太多的宏块,一般一次搬7--9个宏块为宜。由于EDMA的同步信息是由CPU发出的,我们自然想到QDMA,但QDMA适用于单个的,独立的快速搬移数据,对于这种周期性的,重复性的搬移并没有优势。

为了提高EDMA的效率,可以采用EDMA链,最多开辟12个EDMA通道,让其首尾相连,这样只需触发一次CPU,可将待编码的亮度块色度块,参考帧的亮度块和色度块……一次搬完,如图2所示。在配置EDMA通道时,我们注意到频繁更换的只是EDMA的源地址和目的地址,而其它参量是不变的。由于EDMA控制器是基于RAM结构的,每个通道是通过参数表来配置的,每一个通道的参数都可以在0x01A0000h~0x01A07ffh的2KB的配置表中找到自己固定的位置,所以在更新某一通道的源地址和目的地址时,直接往配置表写上新地址就行了,而不必调用CSL库中的相应的cache函数来修改源地址和目的地址。


图2 EDMA链示意图


图3 六边形搜索算法

快速运动算法的优化

包括MPEG2,MPEG4和H.261、H.263、H264在内的标准都是采取基于块的运动估计模型。当然不同的标准块的大小也不一样,在H.264标准中,支持七种块大小(16x16、16x8、8x16、8x8、8x4、4x8、4x4)。众所周知:运动估计对减少时间域的冗余起了很大的作用,从而能大大提高编码效率,但同时它的计算量特别大,占用了大概整个编码系统的70%~80%的资源。一个好的编码算法就是要在计算量和编码效率两者之间取得一个很好的平衡。

全搜索(FS)能够保证在全局范围内搜到一个最佳的位置,但是其计算量是惊人的。对于在嵌入式系统中应用是不现实的。一般在实际应用中都是把几种算法结合起来,在本系统中采取的是:六边形搜索法,如图3所示,先以预测点为中心进行大模式搜索,如果最优点不在六边形中心,则将六边形的中心移至改点,重复大模式搜索,直到最优点在六边形中点,然后在这点切换到小模式搜索,此搜索法相对于经典的三步法,四步法搜索的点更少。

由于是在DSP平台上,对监控系统实时性要求比较高,提出几种基于DSP平台的优化方法:为了提高L1D的cache的命中率,根据cache不命中流水的原理,一次将参考帧全部灌入L1D内,然后在做运动估计时将七个宏块一齐做,然后再做七个宏块的运动补偿,DCT,量化,反DCT,反量化,编码,写码流。而不是像一般的步骤,对每一个宏块先做运动估计,然后运动补偿,然后DCT,映射到L1D一次,如果每个宏块单独做,在做第一个宏块运动估计时参考帧会由L2映射到L1D,做第二次运动估计时,因为之前程序做过DCT,量化等运算,映射到L1D里的参考帧数据已经被冲走,还得从L2中重新载入。同样的对于程序段一级缓存L1P来说,DCT、量化、反DCT、反量化、编码、写码流等函数都只需映射一次到L1P,而不必被反复地映射,冲掉,再次映射。

在JVT的提案中有很多运动矢量预测算法,如利用运动矢量在时间域有很强的相关性这一特性,我们能够得到比较精确的起始搜索位置。但他不太适合DSP平台,因为这样我们就要保留整个一帧的运动矢量,以CIF图像格式为例,需要12kB的空间,保存在资源紧张的片内显然是不合适的。保存在片外存储空间,调用的时候,先从片外先映射到L2cache,再从L2映射到L1D,其间流水不命中等待的cycle数,还不如从开始不太精确的初始位置多搜几个点。

整数DCT的优化详解

DCT,量化,反DCT,反量化在整个编码程序中占用了大概20%~25%的时间,所以有必要对他们的优化花一番功夫,本文举整数DCT为例说明如何对程序进行汇编级的优化。H.264采用的整数DCT,不仅满足一般DCT的特性,将图像的能量集中到左上角位置,直流系数和低频系数中,还有它特有的几个优点:

-它是整数变换,所有的运算都是整数算法,变换矩阵系数十分简单,核心变换部分可以仅仅用加法和移位来实现。非常有利于在DSP实现。

-可以保证编码端的变换和解码端的反变换完全匹配,没有误差。

首先我们对变换矩阵做必要的调整,如表达式(1),(2)所示,这样做的好处是行变换和列变换的操作完全一样,简化了运算。接下来就是用线性汇编或纯汇编来实现两个矩阵的相乘。

 

 

因为DM642CPU有两个类似的可进行数据处理的通路A和B,每个通路有4个完全相同的运算单元(.L,.S,.M,.D)我们可将矩阵的一四两行的运算放在A侧进行,二三两行在B侧进行运算,这样可以保证A,B两侧可同时并行计算。由于整数DCT变换是在16比特精度下完成的,矩阵相乘我们自然会想到汇编指令DOTP2,但是不能全部用DOTP2来完成运算,否则一个周期内就只有.M单元在工作,而其他运算单元都闲着。由于整数DCT矩阵系数的特殊性,我们完全可以用加法指令和移位指令来代替乘法指令。表1是一个16x16宏块进行DCT变换,汇编优化前后的cycle数的对比。


表一 16x16宏块DCT所需的周期数

在写汇编指令时我们要尽量做到在同一个周期内,让位于A,B两侧的8个运算单元能够同时工作,在做DCT时我们发现M单元不够用,而有时在其他情况下,M单元根本就没用上,这时就要想办法用M去代替其他运算单元。如求残差时要把8位数扩展成16位数,一般用UNPKLU4和UNPKHU4指令来完成,也可以用DOTPU4乘以0x01010101,同样也可以完成扩展要求。


表二 H.264编码器性能测试

实验结果与总结

由于此编码器是针对监控系统的应用,在追求编码速度的时候,对图像质量做了一定的牺牲。下面是编码器的一些参数配置:图像皆为CIF大小,参考帧用了一帧,搜索范围是[-16,16],相邻两个P帧间插入两个B帧,即IBBPBBP……的编码方式,P帧和B帧做运动估计时最小块到8x8块,即只在16x16、16x8、8x16、8x8几种模式间做选择,量化步长设为30.。采用CAVLC编码方式。

本文针对实时视频监控的应用要求,结合DM642嵌入式系统的硬件特性,从程序的总体架构,数据的存放位置,数据的搬移进行了分析,给出了切实有效的优化方法。对占用系统资源较多的运动搜索给出了适合在DSP平台下的算法,对整数DCT进行了在汇编层面的优化,并总结了一下优化技巧。经测试基本达到视频监控的实时要求,并且有较好的图像质量和码率。

关键字:DM642DSP  视频编码  优化方法 编辑:神话 引用地址:基于DM642DSP的视频编码优化方法

上一篇:基于DM642的视音频采集器的设计
下一篇:MAX3541一次变频电视调谐器

推荐阅读最新更新时间:2023-10-12 20:41

对话欣博CEO:立足SVAC国标 提供视频编码\加密\AI算法三合一
  前言:AI芯片目前业内有不少企业在做,大家都特别强调芯片的运算性能,每一家芯片厂商也会根据自身对产业的理解,在芯片中集成一些更具实用性的技术模块,为用户提供更完整的芯片方案。那么,芯片厂商在研发一款芯片的时候,他们会有怎样的心路历程? 本期我们邀请到SVAC联盟副理事长单位----北京欣博电子的CEO梁敏学,对当前智能安防领域AI芯片的核心技术和产业格局进行了详细分析,并基于此,从自主知识产权角度出发,对同时集成SVAC编码、AI算法及视频加密技术的SVAC2.0及其市场发展空间进行探讨!   Q: a&s总经理、总编辑关玉娟   A:北京欣博电子科技有限公司CEO 梁敏学   Q:欣博电子目前在安防人工智能方面具体有哪
[安防电子]
视频编码新标准或将改变监控产业格局
    从6月20日举行的数字视频编解码技术标准工作组(AVS)第45次会议上获悉,由我国科学家主导制定的AVS视频编码标准,已由国际电子信息领域影响最大的学术组织IEEE(美国电气和电子工程师协会)颁布出版。新标准有望从技术源头上改变视频监控产业格局,回顾我国视频标准化历程,标准化工作持续进行中。     新标准有望从技术源头上改变视频监控产业格局     “视频编码又称视频压缩,是将体量巨大的视频数据进行大比例压缩从而实现高效传输和存储的技术,是一项影响到社会方方面面的技术,没有它就无法想像今天数字电视和网络视频的普及。”IEEE1857工作组组长、北京大学教授高文院士表示,除视频外,AVS工作组制定的系统标准等也已完
[安防电子]
在TMS320C6711 DSP上实现H.263视频编码器的EDMA数据存取策略
摘要:提出了在TMS320C6711 DSP平台上实现H.263视频编码器的过程中,如何使用EDMA优化数据存取的策略,从而减少了CPU花费在数据搬移上的开销。 关键词:H.263 DSP EDMA QDMA 数据存取策略 目前,将H.263算法在DSP芯片上实现,已成为一种越来越广泛的应用趋势。采用DSP实现H.263算法,相对于以往的方案,具有更好的扩展性,可以很容易地将声音编解码和复用、通信协议添加进来,综合在一起DSP芯片中,具有很强的实用性。 本文采用TI公司的TMS320C6711 DSP实现H.263的编码,提出一种在DSP平台上充分合理使用片上EDMA控制器,进行数据存取优化的策略。 1 TMS320C6
[应用]
热管理方法优化汽车LED照明系统
核心提示 :本文讲述了能够帮助汽车照明行业实现最佳热管理的方法。我们就选择和测量LED热特性以及为特定应用选择最合适的 LED进行了讨论。由于温度过热可能破坏LED系统的稳定性,我们还讨论了车前灯和车尾灯等形状复杂照明系统的热模拟,以及使用同步计算流体力学技术来设计更高品质的产品并以更快、更高效、更经济的方式开发汽车照明系统。 行业趋势 根据麦肯锡公司(McKinsey & Company)对全球照明市场的见解,汽车照明市场目前规模约为180亿美元(130亿欧元),占整个照明市场的大约20%,预计到2020年将增至 250亿美元(180亿欧元)。随着LED(发光二极管)的发展,汽车应用中的LED预计在未来10年
[汽车电子]
基于PCI的视频编码卡的设计与实现
1 前言 随着通信网络技术的飞速发展,人们的观念也紧跟着时代的步伐,把自己融入了网络时代。例如查看信息,监控,交流等无不使用网络。虽说网络给我们带来了很大的信息流,但随着人们生活节奏的加快,对传输率的要求越来越高,特别是实时传输的时候。通过用MPEG4视音频编解码技术,卫星互联网播送技术解决了这方面的问题,使得数字视频广播图像分辨率达192×144×25FPS(PAL)/384×288×25FPS(PAL),图像和屏幕发送通过卫星信道,平均码流量小于384K;文字消息数据、外交互通过Web走公网,平均码流量小于56K,实现了点对点、多点即时播送和同步互动,深得广大用户的好评。为企业、政府机构、组织、和网络医院、网络学校提供一种高
[嵌入式]
技术文章—无线模块的天线性能的优化方法
摘要:在无线通讯模块的实际应用中,常常因为体积限制而不得不使用板载形式的天线。如果天线没有处理好,会大幅影响通讯效果。本文将为大家详细讲解如何通过细节的优化,发挥出无线模块的最佳性能。 一、背景 无线模块的传输距离,除了模块本身的性能之外很大程度取决于天线的使用。常用的天线有PCB天线、弹簧天线、陶瓷天线、棒状天线和吸盘天线等。不同的天线性能有差异,但是一样的天线不同的使用方式通信距离也会差几倍甚至几十倍。后面讨论影响的PCB天线性能的VSWR和辐射增益。 天线基础 天线的基本定义:沿传输线的均匀段,两线间距远小于波长,能量以平面电磁波的模式导行,只有很少的损失(很少的辐射);沿传输线的渐变张开
[网络通信]
技术文章—无线模块的天线性能的<font color='red'>优化</font><font color='red'>方法</font>
MPEG4音、视频编码芯片IME6400及其应用
1 概述     MPEG4是运动图像专家组(Moving Picture ExpertGroup)标准系列中的一员,是国际标准化组织为多媒体通信制定的一种解决方案。MPEG4的主要特点是对图像中的内容进行编码。它比MPEG2编码具有更多的优点。为此,韩国INTiME公司推出可支持MPEG4标准编码方案的集成电路芯片IME6400,从而引发人们开始研究利用该集成电路来提升监控系统的速度和性能。本文结合IME6400在嵌入式系统下的应用对该芯片进行了简要介绍。 2 IME6400的性能特点     IME6400是一片采用240脚PQFP封装的多通道数字音、视频编码系统级芯片,该芯片可以支持MPEG4/2/1视频压缩编码标准;
[嵌入式]
Tensilica全球发布四款视频处理引擎,包括H.264 Main Profile支持
--钻石标准处理器 支持面向SoC设计的H.264、 VC-1/WMV9、 MPEG-4 和MPEG-2 的视频处理 美国加州 SANTA CLARA 2006 年 12 月 5 日讯 – Tensilica 公司今日发布预先定制的四款用于 SoC 设计的 Diamond Standard VDO(ViDeO) 处理器引擎,可以支持多标准多分辨率视频模块。面向移动手机和个人媒体播放器( PMPs )应用,这些视频子系统的设计是完全可编程 , 可以支持所有流行的 VGA 和 SD (也称 D1 )视频编解码算
[新品]
小广播
最新模拟电子文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved