(交通信息工程及控制专业论文)基于TMS320C6711的H264视频编码系统设计与实现.pdf_第1页
(交通信息工程及控制专业论文)基于TMS320C6711的H264视频编码系统设计与实现.pdf_第2页
(交通信息工程及控制专业论文)基于TMS320C6711的H264视频编码系统设计与实现.pdf_第3页
(交通信息工程及控制专业论文)基于TMS320C6711的H264视频编码系统设计与实现.pdf_第4页
(交通信息工程及控制专业论文)基于TMS320C6711的H264视频编码系统设计与实现.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着网络和通信技术的进步,多媒体视频压缩技术在视频会议、可视电话等实时系 统中的应用越来越广泛。新一代视频编码标准h 2 6 4 a v c 具有优良的编码性能,但是 其算法过于复杂导致编码速度缓慢,使其在实时视频处理系统中的应用受到限制。另一 方面,开发嵌入式的视频处理系统是降低成本的有效途径。因此,开发高效的h 2 6 4 嵌 入式实时视频压缩系统具有重要的理论意义与实用价值。 本文在d s p 平台上开发出以h 2 6 4 标准进行编码的实时视频压缩系统。由于直接 在d s p 上移植h 2 6 4 的源代码对视频进行处理时,系统并不具备时实性,其中存在着 程序代码冗长、d s p 芯片中存储资源有限、移植后的c 代码中仍存在耗时多的部分等 问题。论文针对这些问题进行了深入的研究,主要工作如下: l 、进行硬件系统的设计。分析了系统工作原理,选择功能可以满足要求的d s p 芯片,搭建系统的硬件平台。硬件系统由摄像头、t m s 3 2 0 c 6 7 1 1d s p 仿真板 和显示器组成,分别实现图像的采集、压缩编码和显示功能。 2 、在系统的软件设计中,对h 2 6 4 标准中耗时最多的算法部分重新进行软件设计, 对帧内( i n t r a ) 预测模式选择方法和运动估计搜索方法的算法代码进行了改写: 3 、在t m s 3 2 0 c 6 7 1 1 硬件平台上进行代码移植后,结合c 6 7 1 1 芯片的内部结构, 进行存储器配置,包括l 2 的c a c h e s r a m 空间配置、s r a m 空间的数据分配 策略和c a c h e 级优化。解决了数据在片内内存和片外s d r a m 之间进行搬移时 存在的性能瓶颈问题,采用e d m a 单元来完成,并针对仿真板的结构特点和 视频宏块的编码特点对两处数据传输进行设置。 4 、在c c s 中根据p r o f i l e 分析的结果对耗时较大的c 程序部分采用展开循环、调 整数据处理顺序和按字访问等方法对c 代码进行改写。 进行视频的编码实验,对摄像头采集的视频进行编码,将i 帧间隔设置为1 0 帧, 系统编码一个i 帧的时间为2 7 3 m s ,p 帧的时间为5 1 0 m s ,平均帧率达到2 0 5 5 帧秒, 满足视频会议等系统的实时性要求,且解码后视频图像质量良好。 关键词:h 2 6 4 ,d s p ,视频编码,优化 a b s t r a c t w i t ht h ei m p r o v e m e n to fn e t w o r ka n dc o m m u n i c a t i o n s ,t h ec o m p r e s s i o no fm u l t i m e d i a v i d e oh a sb e e nb e c o m i n gm o r ea n dm o r ep o p u l a ri nav a r i e t yo ff i e l d s ,s u c ha sv i d e o c o n f e r e n c e ,v i d e op h o n ea n ds oo n t h el a t e s tv i d e oc o d i n gs t a n d a r dh 2 6 4 a v ci su s e d w i d e l yb e c a u s eo ft h eg o o dc o d i n gc a p a b i l i t y b u ti t sa l g o r i t h mi ss oc o m p l e xt h a ti t sc o d i n g s p e e di ss l o w t h e n ,t h ea p p l i c a t i o no fh 2 6 4i sl i m i t e di nt h er e a lt i m es y s t e m o nt h eo t h e r h a n d ,i ti sn e c e s s a r yt h a tu s et h ee m b e d d e ds y s t e mi np l a c eo fp ct or e d u c et h ec o s to ft h e s y s t e m t h u s ,a ne f f i c i e n te m b e d d e dv i d e oc o m p r e s s i o ns y s t e mo fh 2 6 4i sn o to n l y s i g n i f i c a n tt ot h ea c a d e m i a ,b u ta l s oh e l p f u lt ot h ei n d u s t r y t h i st h e s i sd e v e l o p sar e a l - t i m ev i d e oc o m p r e s ss y s t e mb a s e do nh 2 6 4s t a n d a r do nd s p p l a t f o r m b u t ,w h e nt h eo r i g i n a lh 2 6 4c o d e sr u n o nt h ed s p p l a t f o r mt od i s p o s et h ev i d e o , t h es y s t e mi s n tr e a l - t i m e s o m ep r o b l e m ss u c ha st h ec o d ei st o ol o n g ,t h es p a c eo ft h e m e m o r yi ss m a l la n ds oo na f f e c tt h ec o d i n gs p e e d t os o l v et h e s ep r o b l e m s ,t h et h e s i s f i n i s h e st h ef o l l o w i n gw o r k s : 1 w h e nd e s i g n i n gt h eh a r d w a r eo ft h es y s t e m ,t h ed s pw h i c hm e e t st h ed e m a n do f t h et a s ki sc h o s e n t h ep l a t f o r mo ft h eh a r d w a r ei sb u i l d t h eh a r d w a r ec o n s i s t so fa v i d e oc a m e r a ,at m s 3 2 0 c 6 71 1d s ps i m u l a t i o nb o a r da n dad i s p l a y t h ef u n c t i o n o ft h eh a r d w a r ei sc o l l e c t i n gt h ev i d e o ,c o d i n gt h ei m a g ea n d d i s p l a y i n gi t 2 w h e nd e s i g n i n gt h es o f t w a r eo ft h es y s t e m ,t h ea l g o r i t h mc o d ew h i c hw a s t e st h e m o r et i m eo fh 2 6 4i sr e d e s i g n e d t h ec o d e so ft h em e t h o do fs e l e c t i o ni ni n t r a p r e d i c t i o nm o d ea n dt h es e a r c h i n ga p p r o a c ho ft h em o t i o ne s t i m a t i o na r er e w r i t t e n 3 a f t e rt r a n s p l a n t i n gt h ec o d eo nt h et m s 3 2 0 c 6 711h a r d w a r ep l a t f o r m ,t h em e m o r y i sd i s t r i b u t e da c c o r d i n gt ot h ei n s i d es t r u c t u r eo fc 6 711 c h i pr e a s o n a b l y i nt h i s c o u r s e ,t h es p a c eo fl 2a n dt h ed a t ao fs r a misc o n f i g u r e d ,c a c h eis o p tim iz e d w h e nt h ed a t ai sm o v e db e t w e e nt h ei n t e r i o rr a ma n dt h ee x t e r i o r s d r a m ,t h eb o t t l e - n e c kp r o b l e mb e t w e e nt h ef a s tc p ua n dt h es l o ws d r a mi s s e t t l e db yi n t r o d u c i n ge d m am e c h a n i s m 4 a c c o r d i n gt ot h ea n a l y t i cr e s u l to fp r o f i l eo fc c s ,t h es e c t i o no ft h ecc o d ew h i c h i i i c o n s u m e sal o to f t i m ei sr e w r i t t e n t h ee x p e r i m e n ti sd o n e ,a n dt h ev i d e oc a t c h e db yt h ec a m e r ai sc o d e d t h ei n t e r v a l o ft h eif r a m ei s10f r a m e s t h ec o d i n gt i m eo fo n eif r a m ew a s2 7 3 m s ,a n dt h ec o d i n gt i m e o fo n epf r a m ew a s51 0 m s t h ea v e r a g ef r a m er a t ew a s2 0 5 5f r a m e sp e rs e c o n d t h i s s a t i s f i e dt h ed e m a n do far e a l t i m ev i d e os y s t e ml i k e dt h ev i d e oc o n f e r e n c e ,a n dt h eq u a l i t y o ft h ed e c o d e dv i d e oi sg o o d k e yw o r d s :h 2 6 4 ,d s p ,v i d e oc o d i n g ,o p t i m i z m i o n 论文独创性声明 本人声明:本人所呈交的学位论文是在导师的指导下,独立进行研究工 作所取得的成果。除论文中已经注明引用的内容外,对论文的研究做出重 要贡献的个人和集体,均己在文中以明确方式标明。本论文中不包含任何 未加明确注明的其他个人或集体已经公开发表的成果。 本声明的法律责任由本人承担。 论文作者签名: 劾j 译 厶叼1 年厂月占日 论文知识产权权属声明 本人在导师指导下所完成的论文及相关的职务作品,知识产权归属学 校。学校享有以任何方式发表、复制、公开阅览、借阅以及申请专利等权 利。本人离校后发表或使用学位论文或与该论文直接相关的学术论文或成 果时,署名单位仍然为长安大学。 ( 保密的论文在解密后应遵守此规定) 论文作者签名: 剀译 l 撕可年,月9 日 导师签名: 力贞星曜 2 柙矿年月,占日 长安大学硕十学位论文 1 1课题背景及研究意义 第一章绪论 近年来,随着数字通信和计算机互联网技术的飞速发展,多媒体信息已成为人类获 取信息的最主要载体,同时也成为电子信息领域的研究热点。其中数字视频通信业务得 到了越来越多的关注,如远程监控、远程教学、远程医疗诊断、远程购物、电视电话会 议等都引起了人们的极大兴趣。因此,对数字视音频信号的研究具有极大的现实意义。 和一般的业务不同,视频是流特性业务,其数据量是惊人的。庞大的数据量无疑给 存储器的存储容量、通信干线的通信传输率以及计算机的处理速度都增加了太大的负 荷,成为多种视频应用技术实现的瓶颈问题。例如,一路分辨率为7 2 0 5 7 6 、每秒2 5 帧、y :u :v 为4 :2 :3 的电视信号若以8 比特表示亮度( y ) 信号,则每象素占1 6 比特,数码率为1 6 5 9 m b p s 。以6 4 k b p s 作为一个数字话路,为传输一路电视要占用2 5 9 2 个有效数字话路。这在实际应用中是难以接受的。若用一个容量为1 g b 的硬盘或 c d r o m 来存储这样的数据,则只能存储不到1 分钟的图像。并且,所需的高数据吞 吐率是一般的硬盘和c d r o m 难达到的,若不加处理,h d t v 信号的数码率接近1 g b p s , 更加惊人。同时,在远程视频通信系统中既要对视频图像进行存储和检索,同时又要在 网络上进行传输,未压缩的视频图像一方面要消耗大量的存储介质,另一方面当随着存 储数据量的增大,检索数据速度会减慢,访问的时间会增加。对如此大数据量的视频如 果不进行压缩处理,无论是存储、检索还是在网络上传输都是不太可能的。 要解决上述问题不能单纯的依靠扩大存储器容量、增加通信干线传输率、提高计算 机数据处理速度等方法,因为硬件所能达到的性能毕竟有限。而是要通过数据压缩降低 数据量,以压缩的形式存储和传输数据,从根本上缓解庞大数据量带来的各种技术压力。 因此,数字视频通信的第一步也是很关键的一步就是视频图像的压缩。如此可见,视频 压缩技术的意义之重大。 1 2 视频压缩编码技术发展现状 1 2 1 视频压缩编码技术的原理 视频压缩是通过减少信源中存在的信息冗余而实现数据压缩的目的,其理论基础是 s h a n n o n 的信息论。首先,原始图像数据是高度相关的,存在很大的冗余度。数据冗余 1 第一章绪论 造成了比特数浪费,所以消除这些冗余可以节约码字,也就达到了数据压缩的目的。大 多数图像内相邻像素之间有较大的相关性,这称为空间冗余度。序列图像前后帧之间也 有较大的相关性,这称为时间冗余度。多光谱遥感图像各谱间有相关性,这称为频域冗 余度。其次,若用相同码长表示不同出现频率的符号也会造成比特数的浪费,这种浪费 称为符号冗余度。另外,允许图像编码有一定的失真也是可以压缩的一个重要原因。图 像质量允许的损失越多,可实现的压缩比就越大。在多数应用中,人眼往往是图像信息 的最终接收者。如果能利用人眼的视觉特性,就可以保证在所要求的图像主观质量前提 下实现较高的压缩比。这就是利用了视觉冗余度。人眼不能察觉高度的细小变化,即存 在视觉阈值,而且此阈值随图像内容变化而变化。在平坦区域,阈值低,对失真较敏感。 在边缘和纹理区,对失真不敏感,这就是视觉掩盖效应。这种特性被广泛用来提高压缩 比。人眼对屏幕中心的失真敏感,对屏幕四周的失真不敏感。因此对四周的粗糙量化也 可以节约码字【1 1 。 从信息论的角度出发,可以将图像的压缩编码方法分为两大类:一类是无损压缩, 如霍夫曼( h u f f m a n ) 的可变长度特征编码、游程编码、自述编码等,这类编码技术又 称可逆编码,它的特征是不丢失任何数据,但压缩率比较低( 一般不超过8 :1 ) ;另一类 是有损压缩,有损压缩意味着解压缩后的数据与压缩前的数据不一致,在压缩的过程中 要丢失一些人眼所不敏感的图像信息,而且丢失的信息不可恢复,即是不可逆的。几乎 所有的高压缩率的算法都采用有损压缩,这样才能达到减少数据量的目的。在实际的应 用中,往往是综合利用上述各种编码方式以求达到最佳压缩编码效果。 1 2 2 视频压缩编码技术的发展及国内外研究现状 自1 9 4 8 年提出电视信号数字化后,就开始了视频压缩编码的研究工作,至今已有 6 0 多年的历史。目前世界上最广泛使用的数字视频编码标准主要源自两大标准体系: i t u t ( 国际电信联盟) 和i s o i e c ( 国际标准化组织) 。进入9 0 年代以后,i t u t 和 i s o 制定了一系列视频压缩国际标准,其中u t 制定的视频编码标准称为“建议 ( r e c o m m e n d a t i o n s ) ”,即h 2 6 x 系列( h 2 6 1 ,h 2 6 2 ,h 2 6 3 和h 2 6 4 ) 主要用于实时视频 通信,如可视电话、视频会议。i s o i e c 制定的标准主要是m p e g 系y u ( m p e g 1 , m p e g 一2 ,m p e g 4 ,m p e g 一7 和m p e g 2 1 ) 侧重于视频存储( v c d ,d v d ) 、视频广播( 电 视广播) 以及视频流的应用。两者的共同目标是在尽可能低的码率( 或存储容量) 下获得尽 可能好的图像质量。下面是现存各种视频编码国际标准的简单介绍和比较: 2 长安大学硕上学位论文 h 2 6 1 标准:h 2 6 1 标准是由i t u 的前身国际电话与电报顾问委员会c c i t t 于1 9 9 0 年7 月通过的第一个视频压缩标准。h 2 6 1 只对通用中间格式c i f ( c o m m o ni n t e r m e d i a t e f o r m a t ) 和四分之一通用中间格式q c i f ( q u a r t e rc o m m o ni n t e r m e d i a t ef o r m a t ) 两种图像 格式进行处理。h 2 6 1 压缩算法是由具有运动补偿的帧间预测、块变换( d c t ) 和h u f f m a n 编码组成,只利用前一帧作为参考帧进行前向预测,具有较高的压缩比。除了起始帧为 i 帧外,后续帧一般为p 帧。 h 2 6 3 标准:i t u 在h 2 6 1 建议的基础上进行了改进,于1 9 9 6 年3 月正式公布了用 于低码率的视频编码标准h 2 6 3 标准,其基本编码结构是基于h 2 6 1 标准的。它对 帧内压缩采用域变换编码,对帧问压缩采用预测编码,相对于h 2 6 1 的主要改进为:以 半象素精度的运动估计取代整象素运动估计;用于边信息的比特数减少,宏块层采用不 同于h 2 6 1 的变长编码表;增加了四种可选编码模式;p b 帧模式、先进预测模式。与 h 2 6 1 相比,h 2 6 3 的压缩效率提高了5 0 以上,能提供更好的图像质量、更低的速率, 适合于口视频会议、可视电话应用,是p 视频通信采用最多的一种编码方法【2 】。i t u 的h 2 6 3 上作组继续研究,推出了h 2 6 3 的增强版本h 2 6 3 + 和h 2 6 3 + + 【3 1 ,增加了一些 新的特性从而适用于各种网络环境,并增强了差错回复的能力。 h 2 6 4 标准:h 2 6 4 是i t u t 的v c e g ( 视频编码专家组) 和i s o i e c 的m p e g ( 活动 图像编码专家组) 的联合视频组( j v t :j o i n tv i d e ot e a m ) 开发的一个新的数字视频编码标 准,它既纳入i t u t 体系称为h 2 6 4 标准,又是i s o 的m p e g 4 的第l o 部分【4 】。它提 出了许多新的特性,从而使得h 2 6 4 在压缩率上具有更好的性能,编码性能也有了显 著提高。h 2 6 4 克服了原有的视频压缩协议的局限和不足,适应于更广泛的传输信道, 可得到更高的视频质量、更大的灵活性和更多的功能。它不但满足各种不同类型业务的 需求,而且要明显优于h 2 6 3 和h 2 6 3 + 。码率的主要目标是8 1 2 8 k b p s 的情况下( 最 高可以达到1 m b p s ) ,h 2 6 4 编解码器有明显的改善。与h 2 6 3 相比较,h 2 6 4 编解码有 明显改善,可以提供更灵活的码率和更适应网络发展的功能,但另一方面,它的编解码 器复杂度比h 2 6 3 高。目前,可视电话和电话会议都应用的是h 2 6 3 协议,将来会向 h 2 6 4 协议慢慢过渡【5 1 。 m p e g 1 、m p e g 2 :m p e g 1 适用于码率为1 5 m b p s 的活动图像及其伴音的编码。 m p e g l 主要应用于多媒体计算机、教育与训练等,特别是基于c d 的数字视听系统, 如v c d ,它还可以应用于v o d 和交互式电视等更广阔的应用领域。m p e g 2 是活动及 其伴音信息的通用编码标准,用于对标准清晰度电视( s d t v ) 和高清晰度电视( h d t v ) 3 第一章绪论 的编码,码率可达到1 0 0 m b p s 。它主要应用于数字视频存储、视频广播和通信,是对 m p e g l 的重大改进和发展,并且从技术上促进了计算机、广播电视、数字通信三大领 域的交汇融合,发挥出巨大作用。这两个协议使得多媒体视频编码技术迈上了一个新的 台阶。 m p e g 一4 :m p e g 一4 的初衷是针对视频会议、视频电话的超低比特率编码,但在制 定过程中,随着多媒体技术的发展和应用需求的变化,引入了视频对象( v 0 ) 的概念。和 传统的基于图像帧的压缩方法相比,基于视频对象的策略更便于控制编码,并能更灵活 的适应在基于内容的多种应用中。表1 1 列出各图像压缩标准的应用【6 j : 表1 1 压缩标准的应用 标准应用范围数据率 j p e g 数字照相、图像编辑等;未定义 数字照相、i p 网、移动通信、 j p e g 2 0 0 0 未定义 传真等; i s d n ( 综合业务数字网) 视 h 2 6 1p * 6 4 k b i t s s 频会议 由终端或网络给定 可视电话、移动视频等;可以低于6 4 k b i t s s h 2 6 3 甚至低于2 8 8 k b i t s s v c d 、光盘存储、视频监控 m p e g 一1 s 1 5 m b i t s s 等; 数字电视、d v d 、卫星电视 m p e g 24 :2 :2 : s e c t i o n s v e c t o r s: v e c s c i n i t:s r a m f u n c l:s r a m f u n c 2 :s r a m t e x t:s r a m s t a c k:s r a m ) 4 7 第五章基于t m s 3 2 0 c 6 7 1l 的编码系统实现 5 4 数据传输方法 在上一节中系统的片内存储区已经配置完成,下面要解决的是数据在片内内存和片 外s d 洲之间的搬移操作。上一节中提到片外s d r a m 存取速度慢,高速c p u 和低速片 外s d r a m 之间存在交互的性能瓶颈,设置二级缓存只是解决此问题的一个方面,还需 要解决的是如何快速的将数据在此二级缓存与s d r a m 之间时行搬移。 本文所用仿真板上的片* i s d r a m 包括主板上的s d r a m 和子板上的双s d r a m ,大 小共2 5 6 m + 6 4 m x 2 - - 3 8 4 m ,可存储2 4 帧以上图像,完全可以满足视频图像存储时对空 间的要求。对这些片外数据进行搬移时,比如需进行在编码器中把当前编码宏块从 s d r a m 中的当前帧中移入s r a m 或重建宏块由s r a m 移出到s d 洲的重建帧中等操作 时,都采用c 6 7 11 的e d m a 单元来完成,不占用c p u 的计算周期。 e d m a 功能是t m s 3 2 0 c 6 x 系列d s p 的一个特有功能,它与传统d m a 机制的相同之 处是可以在不需c p u 干预的情况下完成数据的传输、产生数据传输完成中断。此外,它 拥有6 4 个优先级可设置的通道,可以实现数据传输的连接和链接,能按使用者的要求对 数据的排列方式、原地址和目标地址的增长改变方式进行设置,使用十分灵活和可靠。 有关e d m a 的详细内容可参考文献【4 引。 e d m a 的实施通常是采用p i n g p o n g 机制。c 6 7 1l 片内除了6 4 k 的l 2 存储器还有6 4 k - 2 4 m 的保留空间,己为p i n g p o n g 缓冲区预留了空间。“p i n g - p o n g ”指的是分别称为p i n g 和p o n g 的两个缓冲区。当启动e d m a 控制器读写数据至片内片外缓冲区时,c p u 不能 与e d m a 控制器同时访问相同区域,若设置单一缓冲区,发生同时访问缓冲区情况时, 由于c p u 具有最高级优先权,所以e d m a 控制器将处于等待状态,这样c p u 和e d m a 控 制器处于线性工作状态,e d m a 的作用就无从体现。当e d m a 向p i n g 缓冲区移入或搬出 数据时,c p u 处理p o n g 缓冲区内的数据,当c p u 和e d m a 都完成各自操作后,二者交换 缓冲区。e d m a 开始对p o n g 缓冲区移入或搬出新的数据,此时c p u 在p i n g 中处理新移入 的输入数据。当e d m a 和c p u 都分别完成各自数据传输和处理操作后,再次交换缓冲区。 如此循环往复,c p u 和e d m a 总是分别交替处理p i n g 和p o n g q b 的一个缓冲区,这种并行 操作使大部分用在e d m a 传输上的时间得到“隐藏”,提高了程序的运行速度。 在程序中使用e d m a 有两种方法:一是使用较底层的e d m a 相关函数,直接对 e d m a 的相关模块进行配置和操作,如启动e d m a 、设置数据搬移的源和口的地址、多 个e d m a 操作构成一个链接等。第二种比较简单的方法是,直接调用d a t 相关函数【4 6 1 , 4 8 长安大学硕十学位论文 如d a to p e n ,d a t _ c o p y 2 d 等,这些函数其实封装了第一种方法里面的一些e d m a 函数, 使用起来就比较方便,只要设置好函数的参数( 如数据源、口地等) 即可。本文使用的是 第一种方法,即使用较底层的e d m a 相关函数,采用链式传输的方式每次将y u v 三个分 量一起传输,并针对仿真板的结构特点和视频宏块的编码特点对如下两处的数据传输进 行设置: 1 在程序中,需要一帧数据时只需调用捕获函数a p i s 即可。但是,由于母板d s p 和子 板捕获缓冲区的接口是a s y r a m 类型,a s y r a m 接口速度要l 匕s d r a m 读取速度要 比慢得多,影响e d m a 的搬移速度。为了解决这个问题,使d s pc p u e d m a 控制器 可以直接访问子板的捕获缓冲区,本文用f p g a 控制数据首先以b u r s t 方式从子板捕 获缓冲区传输到f p g a 自带的f i f o 中,从而使子板缓冲区直接映射到d s p 地址空间。 2 将要编码的宏块组通过e d m a 搬移到片内编码宏块组缓冲区时,为了减少频繁触发 e d m a ,每次搬移一个顺序的宏组而不是仅仅e d m a - - 个宏块。宏块的搬移采用 e d m a 块同步二维传输( f s = i ) 。 通过对片内外的数据传输采用e d m a ,减少了c p u 花费在数据搬移上的开销,并在 很大程度上缓解了少量内存和大量待存视频数据之间的矛盾。以m o t i o n e s t c o m p p i c t u r e 函数为例,由c c s 的p r o f i l e 窗口可得出:优化前需要2 0 5 3 5 5 9 个时钟周期,改进后为 1 5 1 9 6 2 2 个时钟周期,节省周期数为5 3 3 9 3 7 ,节省周期数目百分比为: 砜,一= 罴_ 2 6 ( 5 1 ) 注:此时尚未对编码器进行编译器级的改进。 本文到此已经完成了程序的移植并对存储器和数据传输方法进行了改进,但在显示 图像的过程中仍有延迟,不能实时显示。证明程序代码中存在影响性能的低效程序段, 需要用c c s 编译器的优化选项等方法对c 代码进行改进。 5 5c 程序改进 5 5 1 项目级优化 t i 的c 6 0 0 0 编译器提供了对高级语言的支持,其操作由编译器选项来控制,用户对 编译器进行不同的设置,可以对c 代码产生不同的改进效果。c 6 0 0 0c 编译器的选项很多, 可以对有不同要求( 例如代码长度、代码性能等待) 的代码进行不同的编译器设置。合理 调整其编译和优化选项有利于代码的改进。下面介绍一下其中用于性能改进的选项【5 0 1 。 4 9 第五章基于t m s 3 2 0 c 6 7 l1 的编码系统实现 0 3 o i o p m m h 一m s - m t - o p 一m w k 表示可以得到最高程度的优化,编译器将执行各种优化循环的方法,比如 软件流水等。 使用选项0 3 时,编译器会自动展开小函数,这将增加代码尺寸。使用o i 将限制对函数的展开,如果选o i o 贝j 完全限制自动展开,但保留一0 3 选项的 其他优化方法。 在程序级别上优化代码,它允许编译器对整个项目的所有源程序联合观测, 有可能应尽量使用该选项。 允许推测执行。应确保有适量的附加的合法数据存储器地址存在。多数情 况下不会有问题但必须保证。 n 的范围是。至t j 3 。n 越大表明越要减小代码尺寸。一般推荐把o 与m s 0 和m s l 联合使用,表示优化性能最重要,同时也考虑减小代码尺寸。 在程序中,若有超过一种以上的方式访问同一个对象,例如两个指针指身 同一目标,就有可能存在混叠,这样将严重限制编译器的优化工作。- m t 告 知编译器,源程序中不存在混叠,可以更积极的优化。 控制程序级优化。其中o p 2 表明没有函数被其他模块调用,也没有会在其 他模块被修改的全局变量,这将改善编译器对变量的分析。 使编译器产生附加反馈信息,供用户分析。 保留编译过程产生的汇编文件,汇编文件中,编译器缺省的反馈信息也同 时保留下来。 - g p 在装载时,自动使能函数级分析。在函数调用时对代码性能略有影响。 一m i 控制全局和静态数据的访问方式以及函数的调用方式。此选项声明用大内 存模式编译代码,n 设定了四个级别:o 表示将组合数据( 结构体、数组) 默认为f a r :1 表明所有函数调用默认为f a r ;2 表示所有组合数据和函数调用 默认为f a r ;3 表示所有函数调用和所有数据默认为f a r 。 另外,对性能要求很高时应避免使用的选项。 - g - s - s s - m g这些选项限制了对c 语句的优化,导致代码尺寸较大、性能较低。 - m i l l 为了进行调试而禁用软件流水。可以用m s 2 一m s 3 代替,后者不进行 软件流水编排,但会减小代码尺寸。 - 0 0 - o l 尽量使用选项0 2 一0 3 使编译器最大限度的进行分析和优化。使用 一m s 选项可以在性能与尺寸之间做出折中。 5 0 长安大学硕士学位论文 本文主要采用的编译选项是一0 3 、- p m 和m 1 2 选项。其中采用m 1 2 选项是因为内存模 式采用的是大端模式,一m 1 2 使编译器对函数调用均采用f a r 调用,集合数据类型均为f a r 类型。采用的这三种选项可使编译器从程序级对整个程序进行最全面、最高级的优化。 另外,需要注意的是在程序调试阶段和最后的优化阶段要采用不同的编译选项。在调试 阶段主要采用了一m w 和k 选项。 5 5 2 c 代码改进 首先要保证程序可以实现相应的功能并能得到正确的结果。因为程序改进后程序代 码的顺序可以要被重新组织和排序。其次要根据d s p 平台特点,修改源代码中部分数据 类型的定义,避免不必要的浪费;之后通过分析c 代码性能,找出程序运行时的瓶颈函 数,再以调用内联函数( i n t r i n s i c s ) 、循环展开等方式提高代码效能。 1 修改数据类型 对源代码中部分数据类型进行修改时,基于不同的数据类型,c 代码的编写应有不 同的规则。比如:避免在代码中将i n t 和l o n g 型作为同样尺寸处理;对于定点乘法输入, 应尽可能使用s h o r t 型数据;对循环计数器使用i n t 或者无符号i n t 类型,而不使用s h o r t 或者 无符号s h o r t 类型,避免不必要的符号扩展等。 2 分析代码性能 在对c 代码采取改进措施前先要通过分析c 代码性能来找出需要改进的函数代码部 分。分析特定代码段的性能方法有: 1 ) 代码的初步测定是使用c 语言中c l o c k o 和p r i n t f ( ) i 函数检测代码运行所占用的时 间,计时和显示特定代码的性能。可以利用独立的软件模拟器s i m u l a t o r 运行这 段代码。 2 ) 利用动态调试器- ( d e b u g g e r ) 的p r o f i l e 模式,可得到一个关于代码中个特定代码 段执行情况的统计表。 3 ) 利用动态调试器( d e b u g g e r ) 的断点、c l k 寄存器和r u n b 命令,可以跟踪特定代 码段所占用的c p u 时钟周期数。 4 ) 在代码中影响性能的主要代码段通常是循环。改进一个循环,最简单的方法就 是抽出这个循环,使之成为一个单独的文件,对其进行重新编写、编译和单独 运行。 3 改进c 代码 5 l 第五章基于t m s 3 2 0 c 6 7 1l 的编码系统实现 当确定了整个程序代码中的关键代码时,用户就可以通过相应的方法改进c 代码, 使得c 代码的性能有所提高。尤其是在如视频压缩这样的一个大的应用程序中,对关键 代码的改进是最重要的一步。在对c 代码进行改进时,可以使用的方法有:减少函数的 调用次数、按字访问、展开循坏、消除存储相关性、使用内部函数、查表、调整数据处 理顺序等。 1 ) 减少函数的调用次数:在函数调用时由于要保留“现场”以备在函数计算完成返 回时继续运行原来的程序。因此,函数的每次调用,系统都要额外地在时间和 空间上付出一些代价。提高程序效率的一个方法是少进行函数调用,一些小的 函数,最好用适当的内部函数代替直接写入主函数里,一些调用不多的函数, 也可以直接写入主函数内,这样可减少不必要的操作,提高速度。但是这样同 时增加了程序的长度,是一种利用空间换取时间的办法。 2 ) 按字访问:使用按字访问3 2 位字( i n t ) ,而不是1 6 位半字( s h o r t ) 。对短字长 数据使用宽长度的存储器访问。c 6 0 0 0 访问存储器需要耗时5 4 时钟周期,为 了提高c 6 0 0 0 数据处理率,应尽量减少对存储器的访问【5 1 】。 3 ) 展开循环:针对函数中的循环代码,利用循环展开来避免分支语句的开销。要 展开循环就是把程序中的小循环的迭代展开,使得可能并行的指令数增加,从 而改进软件流水编排,改善代码性能。当一次迭代操作没有用尽c 6 0 0 0 结构的 所有资源时可展开循环。软件流水的性能被并行执行的资源数所限制,而软件 流水只在内层循环中执行,因此可通过创建大的内层循环提高性能。创建大的 内层循环方法之一是完全展开执行周期少的内层循环。对于一个结果简单的循 环,编译器会启发式决定是否应该展开循环,因为展开循环会加大代码尺寸, 在某些情况下编译器不展开循环。如果某段代码很重要,在c 代码中展开循环, 这样外循环可进行软件流水,填充和排空的总开销仅在调用函数时发生一次, 并不在外循环的每次迭代中都发生。 4 ) 消除存储器相关性:为使代码达到最大效率,c 6 0 0 0 编译器将尽可能把指令安 排为并行执行。为使指令并行操作,编译器必须确定指令间的关系,或者说确 定相关性,即一条指令发生在另一条指令之后。只有不相关的指令可能并行执 行,相关的指令禁n 并行。编译器编译指令的原则:如果编译器不能确定两条指 令是不相关的,则编译器假定它们是相关的,并安排它们串行执行。如果编译 器可能确定两条指令是不相关的,则安排它们并行执行。要编译器确定访问存 5 2 长安大学硕+ 学位论文 储器的指令是否不相关很困难,可在程序内使用r e s t r i c t 关键字帮助编译器确定 哪些指令是独立的。有关r e s t r i c t 的详细说明参考t i 文档【5 2 1 。 5 ) 使用内部c 函数:内部函数( i n t r i n s i c s ) 是c 6 0 0 0 编译器提供的专门函数,它们与 嵌入式的汇编指令是一一对应的,其目的是快速改进c 源程序。内部函数涵盖 了算术操作、逻辑操作等丰富的操作,比如:绝对值运算、饱和加、乘法、移 位等函数,例女l i n t _ m p y ( ) 与汇编指令中的m p y 相同,将一个数的1 6 位最低有效 位乘以另一个数的1 6 位最低有效位。 6 ) 查表:用查表来替代某些复杂运算。对于复杂的运算语句,可以用查找表的方 法来实现,以节省耗时。比如在运算表达式中出现了“”符号时,可以先按照 所有可能的输入计算出所有可能的输出,以后的运算就可以省略而只需要查表 得到数值。这样虽然增加了代码长度,却可以换取性能的提高。同样,对于i f - e l s e 关系到数据运算的选择语句,也可根据具体的情况,采用查找表的方法来实现。 对于除法运算,可以用乘和移位来代替。 7 ) 调整数据处理顺序:通过数据打包可以减少从内在中读取数据的次数。此操作 要求每次使用的数据在内存中是连续存储的。但是,每回使用的数据不连续时 只能一次从内存读入一个数据,这样就没有办法实现并行运算。这就需要对数 据的处理顺序进行改写,使用另一种存储方式。例如在h 2 6 4 的帧问运动估计中, 要求运动矢量的精度达到1 4 像素,所以要将每一帧的解码图像进行插值,放大 到4 倍作为参考帧。通常是直接存储这个参考帧。l 匕女i q c i f 格式,其参考帧大 小为1 4 4 x 4 行,1 7 6 x 4 歹0 ,用数组m r e f 5 7 6 7 0 4 1 存储。如下段程序: f o r ( i = 0 ;i b l o c k _ s i z e ;i + + ) f i o r o = 0 ;j 此程序存在一个缺点,就是在运动估计时需要每4 个点读取一个点与编码块的 对应点进行比较。现对其进行改写为: f o r ( i = o ;i b l o c ks i z e ;i + + ) 5 3 第五章基于t m s 3 2 0 c 6 7 1l 的编码系统实现 f o r ( j = o ;j 这段程序就用了另外一种存储方式存储了1 6 个和原始图像相同大小的参考帧。 也就是说把原来的5 7 6 7 0 4 的参考帧拆分成1 6 个1 4 4 x 1 7 6 的参考帧 r e f 【1 6 】【1 4 4 】【1 7 6 】,对这样的一个循环,就可以通过打包处理,达到并行目的。 4 代码改进结果 实现一个编码系统时,所需的硬件设备量、算法运算量及所需的存储量决定了该压 缩系统的复杂度。所以,本文用编码时间和代码大小来衡量。通过对c 代码级别的h 2 6 4 b a s e l i n e 编码器行了深入细致的改进后,用本文编码器对f o r e m a n 序列编码了一个i 帧和3 个p 帧,统计出包括运动估计、帧内估计、亮度块的整数变换、计算s a d 等几个运算量 大,耗时高的模块的平均运行结果,如表5 2 所示。 表5 2 代码改进结果对照表 调用 占用空间( 字节)运行时间( 周期) 函数名函数描述 次数 改进前改进后改进前改进后 m o t i o n s e a r c h 运动估计 3 8 83 0 7 32 2 0 91 9 3 2 5 01 5 5 7 8 i n t r a p r e d _ l u m a 帧内估计 7 9 1 73 9 2 12 3 0 54 6 5 71 3 9 f i n d s a d 计算帧内模式s a d 值 4 5 9 2 41 6 6 l3 2 58 4 7 0 3 l d c t l u m a 4 x 4 亮度块变换 1 4 1 8 l5 3 9 62 2 3 74 9 0 8 5 9 2 3 m v _ p t r d i c t 运动适黾估计 1 6 2 2 52 5 8 l 6 2 1 2 6 9 9 9 5 5 6 系统实验及结果 实时视频压缩系统的硬件在第三章已经完成,软件的设计与优化在第四、五章都已 经完成,要测试系统的性能,就需要在系统中进行视频压缩编码的实验。 本节主要讨论全面改进后的编码器的性能。实验过程可描述为:摄像头首先采集一 帧图像,d s p 中的编码程序对这帧图像编码,生成标准h 2 6 4 视频流编码文件,然后, 长安大学碗学位论文 解码程序解码该视频流编码文件,并通过标准模拟视频接口输出到显示器进行显示。将 i 帧间隔设置为1 0 帧。 系统编码视频图像的能力由帧率来衡量,帧率即平均编码一帧所用时间的倒数,而 求一帧的平均编码时间的公式为: + 一程序平均编码一帧图像所花费的周期数 ,:m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论