RM52J解码器实时优化实现

游戏内存修改器  时间:2021-01-20  阅读:()

赵首元1,张刚1,袁媛2*1.
51.
51.
51.
5CollegeofInformationEngineering,TaiyuanUniversityofTechnologyTaiyuan,Shanxi;CollegeofInformationEngineering,TaiyuanUniversityofTechnologyTaiyuan,Shanxi;TaiyuanUniversityofTechnologyTaiyuan,Shanxi太原理工大学信息工程学院,山西太原,030024;太原理工大学信息工程学院,山西太原,030024;太原理工大学030024;;15698412998;;18935155935;;太原理工大学迎西校区信息工程学院3248信箱;;shouyuan449894@163.
com;tyzhgang@tom.
com;shouyuan449894@163.
com赵首元(1983—),男,在读硕士生,主要从事视频压缩、流媒体通信的研究.
张刚教授,博士生导师,主要从事语音、视频等方面的研究.
;;赵首元;张刚;袁媛ZhaoShouYuan;ZhangGang;YuanYuan赵首元1.
51.
51.
51.
51.
51.
5*|1|赵首元|ZhaoShouYuan|太原理工大学信息工程学院,山西太原,030024|CollegeofInformationEngineering,TaiyuanUniversityofTechnologyTaiyuan,Shanxi|赵首元(1983—),男,在读硕士生,主要从事视频压缩、流媒体通信的研究.
张刚教授,博士生导师,主要从事语音、视频等方面的研究.
|太原理工大学迎西校区信息工程学院3248信箱|030024|shouyuan449894@163.
com|18935155935|15698412998|2|张刚|ZhangGang|太原理工大学信息工程学院,山西太原,030024|CollegeofInformationEngineering,TaiyuanUniversityofTechnologyTaiyuan,Shanxi||||tyzhgang@tom.
com|||3|袁媛|YuanYuan|太原理工大学|TaiyuanUniversityofTechnologyTaiyuan,Shanxi||||shouyuan449894@163.
com||RM52J解码器实时优化实现|RM52Jdecoderreal-timeoptimalrealized|(1.
太原理工大学信息工程学院,山西太原,030024;2.
太原理工大学)摘要:本文主要针对RM52J执行效率低下的情况,对其中的空间地址分配访问机制、像素插值块、主循环体结构几个部分提出几种关键的C代码级算法改进方案并给出解决过程,并对耗时模块中的反变换模块、环路滤波模块、分像素插值模块进行了多媒体指令集(MMX)优化,结果表明,经过算法改进和MMX优化在不影响信噪比的前提下大大提高了AVS格式视频图像解码效率,对PC机上AVS视频码流实时解码播放具有重要意义.

关键词:AVS;RM52J;解码器;MMX;中图分类号:TN919.
81RM52Jdecoderreal-timeoptimalrealizedZhaoShouYuan1,ZhangGang1,YuanYuan2(1.
CollegeofInformationEngineering,TaiyuanUniversityofTechnologyTaiyuan,Shanxi;2.
TaiyuanUniversityofTechnologyTaiyuan,Shanxi)Abstract:ThispapermadeseveralkeyalgorithmCcode-leveldesignandgivetheresolutionprocessforseveralpartsaboutaddressallocationofspaceandaccessmechanism、thepixelinterpolationblockandthemainloopstructure,andthenmadetime-consumingmodulesoptimizedbythemultimediainstruction(MMX)whichincludeinversetransformmodule,theloopfiltermodulesandsub-pixelinterpolationmodule,forthelowefficiencyofRM52J.
Theresultsshowthat,thedecodingefficiencyofAVSformatvideoimageisgreatlyimprovedwithoutaffectingthesignaltonoiseratioafteralgorithmimprovingandMMXoptimization,whichisimportantforAVSvideostreamreal-timedecodingandplayingonthePC.
Keywords:AVS;RM52J;decoder;MMX引言AVS[1]作为中国具有自主知识产权的新一代音视频编解码标准,在高清数字视频及网络多媒体应用方面表现出很好的性能和低的复杂度.
RM52J是AVS标准的参考软件,其特点是与标准一致,便于学习,但远远不能满足实时应用的要求.
AVS编解码器要在互联网世界得到广泛应用,必须在PC机上针对AVS软件解码器进行速度优化.

本文所做工作,一方面在C代码级对参考软件进行了算法改进:改进了整个程序中内存空间的地址分配访问机制、C代码像素插值算法改进、残差系数全零块特殊处理、片头解码结构优化,循环体结构改进;另一方面对耗时较多的模块运用多媒体指令(MMX)进行优化.

C代码优化空间地址分配访问RM52J中,函数decode_one_frame里的帧初始化函数(init_frame)开辟了3个帧图像大小的二维缓冲空间,用于帧间解码时参考帧和当前帧存储.
每解码一帧图像都要进行一次动态内存分配,之后再释放一次,反复的内存操作大大消耗了CPU资源,程序运行效率低下;另一方面图像数据以二维方式存储访问,每读取写入一个数据需要索引水平和垂直两个方向坐标分量,读写耗时翻倍,且缓冲尺寸大小刚好等于一帧不利于后续样本插值优化.
针对这两个缺陷,本实验提出解决方法:一是将帧缓冲空间分配放在程序主函数(main)中读码流函数之前完成,全部视频序列解码完后释放该内存数据段;二是采用一维存储方式并对尺寸边界扩展.
改进的关键部分是将如下的程序片段for(refnum=0;refnumreference_frame[refnum][i],t->ss.
vertical_size,t->width);elseget_mem2D(&t->reference_frame[refnum][i],t->ss.
vertical_size/2,t->width_cr);}改进为如下的片段.
for(i=0;iedged_width_p*t->edged_height_p+(t->edged_width_p*t->edged_height_p>>1),CACHE_SIZE);t->refp[i].
Y=p+EDGED_HEIGHT_P*t->edged_width_p+EDGED_WIDTH_P;t->refp[i].
U=p+t->edged_width_p*t->edged_height_p+(t->edged_width_p*EDGED_HEIGHT_P>>2)+(EDGED_WIDTH_P>>1);t->refp[i].
V=p+t->edged_width_p*t->edged_height_p+(t->edged_width_p*t->edged_height_p>>2)+(t->edged_width_p*EDGED_HEIGHT_P>>2)+(EDGED_WIDTH_P>>1);}改进后数据存储结构可用下面示意图1表示,将一维空间等效为二维图理解.
程序中edged_width_p和edged_height_p分别表示边界扩展后存放亮度样本空间的宽度和高度,EDGED_WIDTH_P和EDGED_HEIGHT_P分别表示亮度边界扩展的宽度和高度.
色度U、V空间相应数据均为亮度的一半.
这样处理后,整个程序只进行一次对帧缓冲的分配,且用一维向量索引样本位置,大大提高了索引速率,同时做了边界尺寸扩展工作,为下一步样本插值优化打好了基础.

图1存储结构示意图Fig.
1Storagestructurediagram像素插值块AVS解码中样本插值是整个解码中最耗时的部分,是优化的关键环节.
依据运动矢量的横坐标dx和纵坐标dy为整像素、二分之一像素、四分之一像素位置的划分法,亮度样本插值分为九种情况,其中二分之一像素插值三种,四分之一像素插值五种,二分之一样本值通过四抽头滤波器(-1,5,5,-1)计算得到,四分之一样本值通过四抽头滤波器(1,7,7,1)计算得到.

参考软件RM52J中,亮度宏块是以8x8块大小进行样本插值的,由编码标准可知宏块的四个8x8块可拥有不同运动矢量,同一8x8块内像素共享同一运动矢量(dx,dy)[2],dx为运动矢量水平方向小数分量,dy为运动矢量垂直方向小数分量.
如果计算样本时用到的整像素位置超出图像边界,则像素值由最近的图像边界上的样本值取代.
以水平和垂直运动矢量分量均为整像素位置为例,RM52J程序实现如下面所示:if(dx==0&&dy==0){for(j=0;j=0&&y_pos+B8_SIZE-1=0&&x_pos+B8_SIZE-1mpr[b8_x+xx][b8_y+yy]+curr_blk[yy][xx];elsecurr_val=t->mpr[xx][yy]+curr_blk[yy][xx];curr_blk[yy][xx]=clamp(curr_val,0,255);if(block8x8imgY[t->mb.
pix_y+b8_y+yy][t->mb.
pix_x+b8_x+xx]=(uint8_t)curr_blk[yy][xx];elset->imgUV[block8x8-4][t->mb.
pix_c_y+yy][t->mb.
pix_c_x+xx]=(uint8_t)curr_blk[yy][xx];}}程序中,将亮度和色度块的判别放在了解码子块循环内,解码一个亮度8x8块样本值需要进行64次是否为亮度块的判断,而实际上只需一次,这样的重复判断是没有必要的;二维的数据存储方式增加了位置索引复杂度;对于系数全零的8x8块显然无必要参与重构.
针对这些缺陷,本文解决方法:将亮度和色度块判断提前到循环体外,分开解码;将二维的数据存储结构改进为一维存储;对于全零残差系数8x8块,在系数熵解码时参考CBP值用一个比特位加以标记,判断为全零则跳过反变换函数,以及重构时直接将预测数据作为最终样本值.
以亮度块为例,改进后代码实现片段如下所示:if(t->coeff[block8x8]==0)for(i=0;iedged_width_p+(block8x8%2)edged_width_p;}程序中tm_block[j]为预测块,curr_blk[block8x8][i]为4个8x8亮度和2个8x8色度残差系数块,tmp[i]为重构样本块,pp为存储8x8块行首地址.
经过程序的改进,以解码一个8x8亮度块为例,一是减少63次对亮度,色度块的判断;二是如果是全零系数块则减少了64次加法运算;三是预测数据一维存储后减少64次分量坐标索引;四是存储最后解码数据可引入memcpy函数一次处理8个数据,更主要的是这样的读写方式为下面利用多媒体指令优化打下了基础.

利用MMX技术优化解码器MMX简介Intel的多媒体指令集(MMX)技术是对Intel体系结构(IA)指令集的扩展,它使用了单指令多多数据技术(SIMD)[4],以并行方式处理多个元素,从而提高了多媒体软件的运行速度.
本节主要工作就是运用多媒体指令集对解码器进行优化,重点对其中的反变换、环路滤波、样本插值三块进行优化,目的是在C代码级优化的基础上继续提升解码帧率,实现解码器实时解码.

注意事项1.
使用内联汇编相对于调用汇编文件函数而言减少了调用语句指令,可进一步提高速度,尽量少打断内联汇编块,以减少运行时来回倒腾寄存器环境的时间.

2.
(4个以上)movq尽可能地在一起,指令配对可加快执行指令的速度,前提是在一起的mov不要使用一样的mmx寄存器,要避免前一条指令对寄存器写,后一条指令对寄存器再次读写的情况.

3.
尽可能地使用static变量,访问这样的变量是很快的,等于访问立即数的速度.
4.
尽可能地在寄存器中完成操作,不要去访问内存.
内存的访问要比寄存器的访问耗时得多,因此尽可能地把数据存放在寄存器中,最后再一次性写入到内存中,减少内存读取次数,提高cache命中率.

优化举例本节以样本插值中垂直方向整像素位置、水平方向二分之一像素位置样本值求取为例,用多媒体指令实现.
所写代码在很好得考虑了上面所列注意事项基础上实现了所需功能.
仅仅将几个8位的操作,改为对64位的操作,测试得到速度提告了3倍左右,同样的道理,将几个movq写在一起,这样可以提高5%左右的速度.

图4给出了多媒体指令集(MMX)求取水平方向第一行前四个二分之一像素的流程,用到的主要指令有movd、pshufw、punpckhbw、jnz、pmullw.

图4二分之一插值求取示意图Fig.
4Onehalfinterpolationfordrawing代码实现:staticvoidAVS_qpel8_interpolate(uint8_t*dst,uint8_t*src,intdstStride,intsrcStride){staticintt0=5;staticintt1=4;staticintt=8;__asm{__asmpxormm7,mm7__asmmovecx,srcStride__asmmovebx,dstStride__asmmoveax,dst__asmmovedx,src__asmmovdmm6,t0__asmpshufwmm6,mm6,0__asmp:__asmmovqmm0,[edx]__asmmovqmm2,[edx+1]__asmmovqmm1,mm0__asmmovqmm3,mm2__asmpunpcklbwmm0,mm7__asmpunpckhbwmm1,mm7__asmpunpcklbwmm2,mm7__asmpunpckhbwmm3,mm7__asmpaddwmm0,mm2__asmpaddwmm1,mm3__asmmovqmm3,[edx-1]__asmmovqmm4,[edx+2]__asmmovqmm2,mm3__asmmovqmm5,mm4__asmpunpcklbwmm3,mm7__asmpunpckhbwmm2,mm7__asmpunpcklbwmm4,mm7__asmpunpckhbwmm5,mm7__asmpaddwmm3,mm4__asmpaddwmm5,mm2__asmpmullwmm0,mm6__asmpmullwmm1,mm6__asmpsubwmm0,mm3__asmpsubwmm1,mm5__asmmovdmm5,t1__asmpshufwmm5,mm5,0__asmpaddwmm0,mm5__asmpaddwmm1,mm5__asmpsrawmm0,3__asmpsrawmm1,3__asmpackuswbmm0,mm1__asmmovq[eax],mm0__asmaddedx,ecx__asmaddeax,ebx__asmdect__asmjnzp}}实验结果及性能分析本文使用的操作系统是Windows7,处理器为奔腾双核,主频大小2.
0G,编译与调式环境是VisualStudio2005.
分别测试了帧数为300帧的Carphone.
qcif(176x144)、paris.
cif(352x288)和mobcal_D1.
avs(720x576)三个AVS视频序列.
优化前后的速率对比如表1所示.

表1解码帧率测试结果Tab.
1Decodingframeratetestresults帧率RM52JC代码优化后帧率MMX优化后帧率提高倍数Carphone.
qcif39.
48fps116.
24fps264.
13fps6.
69paris.
cif18.
53fps51.
86fps117.
20fps6.
32mobcal_D1.
avs5.
93fps16.
93fps38.
46fps6.
48从表中可知,经过C代码级改进优化,三种格式解码帧率依次增加了76.
76fps、32.
33fps、11.
00fps,实现了.
cif格式大小图像实时解码;经过MMX技术优化后,三种格式解码帧率依次提高至原RM52J的6.
69倍、6.
32倍、6.
48倍,实现了.
D1格式图像的实时解码.

表2信噪比测试结果Tab.
2Signaltonoiseratiotestresults信噪比优化前优化后测试序列PSNR_YPSNR_UPSNR_VPSNR_YPSNR_UPSNR_VCarphone.
qcif38.
6542.
3842.
7638.
5942.
3842.
76paris.
cif38.
4942.
7644.
88384342.
7644.
88Mobcal_D1.
yuv37.
2642.
5543.
3736.
8042.
5543.
37最后对软件进行了信噪比测试,由表2可知,由于只进行代码级优化,解码器的性噪比基本没有下降,保持原有图像质量.

结论本文给出了RM52J解码器C代码级改进和多媒体指令集优化的过程介绍,实验结果表明本实验在不影响图像质量的前提下实现了.
cif和.
D1格式图像的实时解码,由于AVS解码器涉及我国自主知识产权,实验成果有利于AVS视频解码器在集成电路(机顶盒)及高速DSP上的应用推广,在流媒体、视频会议等实时领域的应用与开发.

vpsdime:VPS内存/2核/VPS,4G内存/2核/50gSSD/2T流量/达拉斯机房达拉斯机房,新产品系列-Windows VPS

vpsdime上了新产品系列-Windows VPS,配置依旧很高但是价格依旧是走低端线路。或许vpsdime的母公司Nodisto IT想把核心产品集中到vpsdime上吧,当然这只是站长个人的猜测,毕竟winity.io也是专业卖Windows vps的,而且也是他们自己的品牌。vpsdime是一家新上来不久的奇葩VPS提供商,实际是和backupspy以及crowncloud等都是同一家公司...

印象云七夕促销,所有机器7折销售,美国CERA低至18元/月 年付217元!

印象云,成立于2019年3月的商家,公司注册于中国香港,国人运行。目前主要从事美国CERA机房高防VPS以及香港三网CN2直连VPS和美国洛杉矶GIA三网线路服务器销售。印象云香港三网CN2机房,主要是CN2直连大陆,超低延迟!对于美国CERA机房应该不陌生,主要是做高防服务器产品的,并且此机房对中国大陆支持比较友好,印象云美国高防VPS服务器去程是163直连、三网回程CN2优化,单IP默认给20...

乐凝网络支持24小时无理由退款,香港HKBN/美国CERA云服务器,低至9.88元/月起

乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...

游戏内存修改器为你推荐
免费送q币活动免费送q币送钻的活动视频剪辑软件哪个好有哪些好用的手机剪辑视频软件录屏软件哪个好有什么好用的录制屏幕的软件吗手机杀毒软件哪个好手机用杀毒软件,用哪样的好游戏盒子哪个好请问游戏盒子哪个好啊手机管家哪个好最好的手机管家美国国际东西方大学美国新常春藤大学有哪些?360云盘360云盘是什么?360云查杀360杀毒有没有云查杀功能?360云盘企业版360云盘企业版网页打开的 怎么不能编辑?
info域名注册 香港服务器租用99idc softlayer 数字域名 国外免费全能空间 asp免费空间申请 免费测手机号 域名dns 1元域名 中国电信测速网站 云服务器比较 php服务器 阿里云邮箱登陆地址 免费个人主页 中国联通宽带测速 发证机构 symantec 热云 linuxvi stealthy 更多