




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我对电子新技术的几点理解摘要:电子技术飞速发展,各种新技术层出不穷,本文是基于电子新技术课程的理解和感悟所写。主要分为两个部分,一是基于课堂新技术讲座的三点感悟,二是自己研究的视频编解码技术领域的部分主要内容关于AVS编解码的优化一、讲座的理解1.天线技术1.1讲座内容老师从天线的总类、技术指标、及国民国防应用多个角度对我们进行了天线技术的科普。1.2个人体会其中我对天线的增益的知识比较感兴趣。通过增益提高朝一个特定方向收发信号的能力,它是选择基站天线最重要的参数之一。那么如何提高天线的增益呢,通过调研有如下几种方法:增大天线口径、提高天线效率、抑制副瓣电平都可以将天线的增益提高;对于反射面来说,天线效率、副瓣都与你使用的馈源有很大关系;因而选择高效馈源对于反射面天线是相当重要。2地铁通信2.1 讲座内容这次讲座由郑国莘老师讲授。主要讲述了地铁通信的基础知识,结合上海城市轨道交通车地无线局域网的实际情况,阐述了目前应用中所存在的带宽、丢包的问题,CBTC(基于通信的列车控制系统)对于轨道安全的重要性1。2.2个人体会地铁安全至关重要,对于如何提高系统安全性,个人认为地铁的安全需从三个方面来考虑:(1).保证通信的质量,减小丢高,时延的问题。保障控制中心和列车通信的顺畅。(2).列车间要保持合理的间距避免紧急情况发生时追尾的发生。(3).开发出新的系统替代现有的列车无线通信,如LTE,4G等新的通信技术手段。3无线节能技术3.1无线煤气抄表收发机本次讲座张老师从工程实践环节给我们讲解了远程无线煤气抄表收发机,它具备长寿命的要求,采用无线唤醒通信协议的一种低功耗的无线收发机2。3.2个人体会在工程实践中效益至关重要,如何提高产品的节能和寿命关系到公司的效益和顾客的购买倾向。寻找开发的创新点,从实践的细节入手,多思考,寻找问题的关键点,如老师所讲到的抛开公式,回到问题的本源。在工程设计中就是说一切都要从实践得出真知。反应无线节能设计中就是说:要找出影响节能的要素;采取相应的节能措施。二 、自己研究的部分AVS编解码中的优化1.前言在视频编解码领域标准一直是国际的事情,国际上主流的视频编解码标准主要有三大类:ITU-T制定的H.26x系列标准3,国际标准组织ISO和MPEGx标准。2002年,我国成立数字音视频编解码技术标准AVS专家组。 AVS标准相对于H.264标准,MPEG-4在数据压缩率,编解码器的复杂度上有显著的提高,详细参加文献4。AVS最大的应用价值就是在于其压缩效率高,可以利用正在使用的标清数字电视传输系统来直接提供高清业务,更有效地节省频道资源,原来传送MPEG-2的带宽可以传送两套甚至三套AVS高清节目,或者传送一套AVS加上6套标清节目,优势十分明显;还可以利用当前的光盘存储技术制造出新一代高清晰度激光视盘机,从而为我国数字音视频产业的跨越发展提供了难得契机。AVS标准包括系统、视频、音频、数字版权管理等四个主要技术标准和一致性测试等支撑标准,形成了一套含系统、视频、音频、媒体版权管理在内的完整标准体系,为数字音视频产业提供了全面的解决方案。AVS将在标准工作组的基础上,联合家电、IT、广电、电信、音响等领域的芯片、软件、整机、媒体运营方面的强势企业,共同打造中国数字音视频产业的光辉未来。目前在数字音视频产业使用中的信源编解码标准主要有MPEG-2、MPEG-4、H.264和AVS。随着海量数据传输对压缩效率的要求越来越高,MPEG-2将逐渐退出历史舞台;MPEG-4专利收费过高,一直无法得到真正的商业化的使用;而我国拥有自主知识产权的AVS作为高效率的新一代压缩标准,解决了H.264中的许多专利许可问题,技术实现复杂度低,是开放式制订的国家、国际标准,易于推广。此外,AVS不仅仅是一个视频的压缩标准,还是数字音视频产业应用的一套全面的解决方案,将成为下一代音视频编解码标准的领跑者。AVS具有优越性和未来广泛的应用前景,我将重点讨论AVS编解码的优化上,进一步提高编解码的效率和速度。2.优化的几点要素2.1定义合理的数据结构在AVS工作组提供的解码器开源代码中,有些结构体的嵌套多达四层,导致在引用某些变量时,需要进行四次地址运算和四次寻址运算。地址运算通常要占用大量的运算资源,因此需要对代码中的结构体和数据定义进行修改。对于结构体的嵌套,应参照AVS标准中的语法定义,尽量减少结构的嵌套,最多允许嵌套两层,这样就可以减少解地址运算的时间;另外充分考虑函数调用的顺序,将连续调用的变量集中存放。并将解码最常用的数据定义在一个大的结构体中,将这个结构体定义为局部变量。这样每个函数所传递的第一个参数基本上都是这个结构体的指针。例如,源代码中对宏块信息结构体的定义有三层嵌套。考虑到宏块信息是由宏块类型决定的,因此把宏块信息的结构体根据图像类型拆分为两个结构体:I帧宏块信息结构体和PB帧宏块信息结构体,这样可以有效减少结构体的嵌套。经过修改后的结构体定义如表1: 表1:宏块信息结构体定义2.2使用正确的数据类型1.尽量避免使用全局变量,多用局部变量。2.尽量使用的一些常数,在程序设计过程中,采用预处理方式进行定义常数,直接写到程序中,减少多次重复的无意义计算。3.尽量使用整数类型,与定点运算相比,处理器在做浮点运算时,需要额外的浮点解包和打包开销。4.尽量使用短数据类型,除非是应用需要高精度表示,使用长数据类型会增加内存开销,降低总线上的有效使用带宽。5.可以使用数组的地方尽量使用数组,避免链表的使用,注意优化数组寻址方式和数组边界处理问题。2.3减少函数调用由于对函数进行调用是一个跳转的过程,函数的嵌套调用对系统资源的要求就高,不仅要传递参数,还要保护跳转前的程序状态,因此应该尽量减少函数之间的不必要相互调用。而对于一些操作简单,调用次数不多的函数,将被调用到的函数体直接放到主调函数中,不仅减少了参数的传递,避免了跳转,在某些情况下还减少了数据的赋值操作。2.4使用编程技巧在对代码进行实现的过程中,i=i+1一般写成+i,i=i+j写成i+j;对数组的访问尽可能写成ai+,而不是ai再进行i+,因为这样可以避免对同一变量的两次访问;n/2写成n1是个常用的方法。此外,乘法、除法和求余运算在适当的情况下用加法和移位操作来完成。有时候一些计算需要使用长长的机器指令序列和循环来实现,而一些小技巧却可以仅用两个精心挑选的指令就能更聪明的完成同样的工作。因此,在计算中使用适当的编程技巧,往往可以节省大量的运算时间。2.5循环和分支编程时使用循环可以有效减少代码长度。指令数越少,程序所需要的存储器空间越少,同时也减少了从主存中读取指令花费的时间和每次对指令进行翻译的时间。但循环通常并不是效率最高的方式,也会给整个程序带来不必要的开销,只有在循环次数很大时,循环才能够在速度上体现优势。因此我们在使用循环语句时应注意以下三个方面:1.减少循环本身操作的耗时由于每次循环都需要不停地对循环条件进行判断,当循环内语句较少,循环判断操作耗时与循环本身相比耗时比例过小时,应尽量避免这种情况,可以采取将循环展开或者部分展开。2.减少数据相关性当对同一个变量进行连续多次的操作,因为数据相关性,处理器无法把相邻的两条代码放到并行的两条流水线中执行,只能等前一个指令操作后,得到第二个指令所需的变量,再继续下一步的计算,因此可以采取隔行执行的方法,避免相同变量的多次引用。3.提高并行性和重用性优化的目的是在一定时间内,尽可能多的处理数据,因此优化后的循环操作需要保证并行处理,将计算得到的中间结果予以保留,提高数据的利用率。另外,当需要在循环体内、对循环条件进行判断时,选择正确的循环结构,也是优化循环的有效方法途径之一。分支是计算机高级语言中一个基本的操作,但由于分支语句的出现会打断指令流的顺序,导致一个指令耗费多个时钟周期,因此分支语句很难得到高效率的执行,在程序中应尽量避免分支的出现。如果出现分支语句,可以对分支跳转概率进行一些分析,将出现概率最大的分支判断语句放在最前,减少处理器预测分支出错的次数。2.6内存和输入输出优化通过对程序的分析,可以发现开辟缓冲区的容量是一个需要重点考虑的问题。在进行实时解码时,解码器连续读入AVS码流单元,就必须连续地进行内存的动态分配和释放。特别是在需要分配较大的内存块时,如果内存堆栈没有大块的连续内存,那么解码速度将被严重滞后。因此我们在编译阶段就指定好固定大小的静态内存空间,然后对读入的每一个需要解码的码流单元在指定的内存空间上进行复用,而无需重新分配。缓冲区的容量长度应能满足缓冲区内的码流至少包含解码一帧的数据的要求。在有文件读写操作的情况下,对文件的访问是影响程序运行速度的一大因素。提高文件访问速度的主要办法是采用内存映射文件或者内存缓冲。其中内存缓冲方法具有便于移植,占用内存少,便于硬件实现等有点,因此是程序I/O操作主要的优化手段。 具体的操作方式是将数据以批量的方式传输,使频繁的操作所造成的负担减小到最小,并使代价昂贵的操作只在不可避免时才进行,使这种操作的代价能分散到许多数据上。例如磁盘的读写操作中,不是直接读写,而是等到缓冲区满或者空的时候才进行一次读写。3.具体优化方法3.1. C语言优化循环语句是影响程序运行效率最主要的因素。通常情况下,它是程序计算量的最密集区域,因此优化循环语句是提高程序效率的必要方法。和表达式优化中公共子表达式相似,在循环体中也应该尽量避免重复计算一些不会发生变化的数据,一些固定的条件判断也不应出现在循环体内。如: While(FLAG)I=F(A); 其中,对i的赋值就是一个不必要的常量计算,应该放在循环体外面。例如,在AVS参考软件rm52j_r1中函数UnifiedOneForthPix()中也可以采用上面方法优化,其中一段代码如下: for(j=-IMG_PAD_SIZE;jheight+IMG_PAD_SIZE;j+)for(i=-IMG_PAD_SIZE;iwidth+IMG_PAD_SIZE;i+)jj=IClip(0,img-height-1,j); .UnifiedOneForthPix()函数用于产生1/4像素精度参考图像,上述代码是用于插值产生半像素点的部分语句。其中,jj=IClip(0,img-height-1,j)语句只是根据j的变化产生不同的jj值,而原函数却在内层循环中重复计算了jj值。因此,应该将此句放在外层循环中,即: for(j=-IMG_PAD_SIZE;jheight+IMG_PAD_SIZE;j+)jj=IClip(0,img-height-1,j);for(i=-IMG_PAD_SIZE;iwidth+IMG_PAD_SIZE;i+) .这样就可以减少(img-width+2 IMG_PAD_SIZE-2)(img-height)次jj=IClip(0,img-height-1,j)计算。循环优化另一个主要形式就是循环的展开与合并。所谓循环的展开就是指通过复制循环体内的指令,减少循环次数,从而降低循环转移的开销。所谓循环合并就是指把若干个循环合并在一起执行,循环合并必须满足每个单独循环的操作互相无关联,并且每个操作的执行定义域相同。3.2汇编优化所谓汇编优化就是指对C程序中计算密集处的汇编改写,从而提高程序运行速度。本论文设计实现的MPEG-2到AVS转码平台中主要用到了MMX、SSE2技术56。MMX、SSE2是Intel公司为提高PC机用软件处理多媒体和通信能力的新一代处理器技术,是对Intel体系结构指令集的扩展。MMX通过处理器中增加的8个64位寄存器和相应的指令实现。SSE2则是通过处理器中增加的8个128位寄存器和相应的指令实现。MMX、SSE2通过单指令多数据(SIMD:SingleInstruction Multi Data)技术,一条指令能处理多个数据,大大提高了软件运行速度,将PC提升到一般图形工作站才具有的可视计算能力,使得通常需要借助专用加速硬件或通用DSP才能完成的复杂实时信号处理工作,有可能在通用PC平台上用高级编程语言即可编程实现。本部分内容主要工作大部分由实验室其它人员完成,论文作者只进行了部分工作,因此对于此部分内容主要进行方法介绍,对转码器中相关工作的具体实现不做详细说明。由于视频数据都是8位小整数类型,这样在一些计算量较大,代码量并不是很大,且有重复循环时,利用MMX或SSE2技术就可以一次对8或16字节数据同时进行处理,大大提高了程序运行速度。以MMX计算绝对差为例,介绍MMX(或SSE2)在视频处理中的具体应用方法。在C语言中,两个8位无符号数相减得到9位有符号数结果,为保证精度,需要预先将8位数据转换位16位数据。但MMX提供了一条带饱和减法指令PSUBSUB,此条指令只要操作数1减去操作数2,再用操作数2减去操作数1的备份,再将两个差值相或,就得到绝对差。这是因为当操作数1大于操作数2时,相减的差值即绝对值,反之为零(由于饱和计算)。在操作数2减去操作数1时同样如此,因此,两个差值的或运算得到绝对差。这样用8位精度实现绝对差的计算而无需转换至16位精度,同时也实现了一次计算8个像素的绝对差。这里所谓的饱和计算,就是计算结果限定在0255,结果小于0则取0,大于255则取255。 取出8个字节的数据 X7X6X5X4X3X2X1X0X7X6X5X4X3X2X1X0 带饱和字节减X7X6X5X4X3X2X1X0X7X6X5X4X3X2X1X0 负值饱和为0,结果为8为精度S7s60S400S1000Z50Z3Z2X1X0S7s6Z5S4Z3Z2S1Z0or 将绝对值与0进行Unpack操作00z300z200s100z000s700s600z500s4 讲结果加到累加器 外部循环将最终结果计算得出 图1. MMX 计算绝对值方法说明图1给出了MMX计算绝对值的方法说明。使用该方法可以编写出SAD计算的循环内核程序,如示例1。其中,mm0mm7是8个64位寄存器,MM6寄存器需预先清0,MM寄存器作为累加器,存放结果。m1,m2是原始图像数据和参考图像数据的地址寄存器。示例1中程序完成了对连续16个字节数据的绝对差的计算,并将结果累加到MM7内。 通过实验比较,MMX程序的性能是C语言程序的5倍。性能提高的主要原因是:SIMD技术,使得MMX程序可以一次处理8个像素;饱和运算,使得MMX程序在计算绝对值时避免了条件分支语句和数据转换;采用64位寄存器可以一次读写8个像素。示例1:estim Proc C Public uses m1:DWORD,m2:DWORDmovq mm0,m1/将原始图像的8个像素值存入mm0movq mm1,m2/将参考图像的8个像素值存入mm1movq mm2,mm0/备份mm0到mm2,用于下面相互作减法movq mm3,8m1/将原始图像中接着的8个像素值存入mm3psubusb mm0,mm1/mm0和mm1作带饱和减法,结果存入mm0psubusb mm1,mm2/mm1和mm0的备份mm2作带饱和减法,结果存入mm1movq mm4,8m2/将参考图像中接着的8个像素值存入mm4por mm0,mm1/mm0和mm1相或,得到前8个像素绝对差,结果存入mm0movq mm5,mm3/备份mm3到mm5,用于下面相互作减法movq mm1,mm0/备份绝对差mm0到mm1,用于下面移位操作psubusb mm3,mm4/mm3和mm4作带饱和减法,结果存入mm3punpcklbw mm0,mm6/将mm0和0作低32位unpack操作psubusb mm4,mm5/mm4和mm3的备份mm5作带饱和减法,结果存入mm4psrlq mm1,32/mm1右移32位por mm3,mm4/mm3和mm4相或,得到后8个像素绝对差,结果存入mm3punpcklbw mm1,mm6/将mm1和0作低32位(即mm0的高32位)unpack操作movq mm4,mm3/备份绝对差mm3到mm4,用于下面移位操作punpcklbw mm3,mm6/将mm3和0作低32位unpack操作paddw mm7,mm0/结果累加到mm7psrlq mm4,32/mm4右移32位paddw mm7,mm1/结果累加到mm7punpcklbw mm4,mm6/将mm4和0作低32位(即mm3的高32位)unpack操作paddw mm7,mm3/结果累加到mm7paddw mm7,mm4/结果累加到mm7retestim EndP4.解码器性能测试及结果分析在对解码程序开发的过程中,已编写好的解码程序经编译连接成功后,还可能存在一些由于码流或者程序设计有问题而使得图像解码不成功或是解码信噪比不高的情况。为了检测自己编写的程序是否正确,需考虑相应机制来进行正确性检测。针对AVS解码器在解码过程中经常产生的一些解码错误,可结合主观质量和客观质量对解码后的YUV文件进行分析。一方面采用yuv播放器观察播放视频进行主观质量对比分析排错,另一方面是采用UltraEdit32软件对输出文件进行客观质量对比分析排错。并且设置一些错误信息报告函数,对程序增设断点及打印信息,与参考软件的视频解码图像进行对比调试,逐一排除各种可能的错误。例如,程序在解析起始码时,针对不同的层级设定不同的报告函数可以查找解码函数出错的可能范围。软件实现的硬件环境为微机环境,其配置为:处理器为pentium双核,主频为1.86GHz,操作系统是WindowsXP,采用C语言编写,在Visual C+6.0环境下调试编译,并对实验结果进行测试。采用QCIF(176144)、CIF(352288)、D1(720576)三种不同格式的测试序列对新的解码器进行测试,并与参考软件解码器进行比较得出,在信噪比基本不变的情况下,新的解码器速度有很大提高,可实现CIF格式下的实时解码。图1 为两个解码器对CIF格式视频图像解码后主观质量对比结果,其中左图为新解码器解码出的视频图像,右图为原始视频图像。表2 、表3 它 为客观质量对比结果,包括信噪比测试结果及帧率测试结果。 新解码器解码出的视频图像 RM52J_r1解码器解码出的视频图像图1:图像质量比较Foreman.cifAkiyo.cifbus.cifMthr_dotr.cifParis.cifPSNR_Y(dBPSNR140.0039.6839.0040.9838.98PSNR239.9839.5638.5940.9838.95PSNR143.4743.6943.1340.6941.58PSNR243.5443.5842.3643.3941.55PSNR145.3245.842.5643.2841.57PSNR245.5845.6844.5843.5641.83PSNR_Y0.020.040.020.020.05PSNR_U0.050.050.050.050.04PSNR_V0.080.070.040.070.05表2: CIF格式下PSRN对比测试序列解码速度(fps)Rm52j_r1解码器新解码器Paris.cif18.5060.283.25Mobcal_D1.yuv5.9314.612.46表3:解码速度(fps)对比解码器对比测试采用的输入序列是由参考软件编码器编码后的AVS格式序列,两解码器在输入相同的情况下,进行对比。表3中PSNR1为RM52J_r1解码后的序列与原始图像序列比较后得出的信噪比,PSNR2为新解码器解码后的序列与原始图像序列比较后得出的信噪比。PSNR表示两解码器对应信息差值。表3为对CIF格式和D1格式序列多次测试后得出的平均结果。其中fps1为RM52J_r1解码帧率,fps2为新解码器解码帧率,表示两帧率的比值。由表2、3得出,新的解码器在解码信噪比和RM52J_r1解码器相当的情况下,解码速率为RM52J_r1解码器的3倍左右。 5.结论介绍了转码器中应用到的代码优化技术。本文只是对这些优化技术作了简单的举例介绍,说明了这些优化技术在实际应用工程中的用法。通过对C代码的优化和对计算密集区域的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市配送物流服务费用变动与印花税税率同步调整协议
- 口岸操作知识培训内容课件
- 2025年高标准城市公园建设材料采购及环保质量保障协议
- 2025年度二手车金融贷款还款安排合同范本
- 2025年二手车过户挂名免责服务协议
- 2025年度城市间短途旅游包车租赁服务合同
- 2025年文化创意产业股权回购与赠与一体化合同
- 2025年高端医疗超声设备采购及研发创新合作协议
- 2025年环保设备租赁与维护服务合作协议书
- 变频空调电控知识培训课件
- 《鸿蒙应用开发项目教程》全套教学课件
- 四川省广安市2024-2025学年高一下学期期末考试数学试题(含答案)
- 电缆测试技术课件
- 政协大走访活动方案
- 个人养老金课件
- 2025至2030中国氧化钪行业需求状况及未来趋势前景研判报告
- udi追溯管理制度
- 新能源产业园区厂房物业管理及绿色能源应用合同
- 读书分享《教师的语言力》
- 2025年5月上海普通高中学业水平等级性考试物理试题及答案
- 医院医患沟通谈话记录范本
评论
0/150
提交评论