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上的应用推广,在流媒体、视频会议等实时领域的应用与开发.

香港E3-1230v2 16GB 30M 326元/月 数脉科技

官方网站:https://www.shuhost.com/公司名:LucidaCloud Limited尊敬的新老客户:艰难的2021年即将结束,年终辞旧迎新之际,我们准备了持续优惠、及首月优惠,为中小企业及个人客户降低IT业务成本。我们将持续努力提供给客户更好的品质与服务,在新的一年期待与您有美好的合作。# 下列价钱首月八折优惠码: 20211280OFF (每客户限用1次) * 自助购买可复制...

数脉科技8月促销,新客减400港币,BGP、CN2+BGP、阿里云线路低至350元

数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。官方网站:https://www.shuhost.com* 更大带宽可在选购时选择同样享受优惠。* 目前仅提供HKBGP、阿里云产品,香港...

ThomasHost(月付5美元)美国/法国/英国/加拿大KVM,支持Windows

ThomasHost域名注册自2012年,部落最早分享始于2016年,还算成立了有几年了,商家提供基于KVM架构的VPS,数据中心包括美国、法国、英国、加拿大和爱尔兰等6个地区机房,VPS主机套餐最低2GB内存起步,支持Windows或者Linux操作系统,1Gbps端口不限制流量。最近商家提供了一个5折优惠码,优惠后最低套餐月付5美元起。下面列出部分套餐配置信息。CPU:1core内存:2GB硬...

游戏内存修改器为你推荐
杀毒软件哪个好杀毒软件什么最好集成显卡和独立显卡哪个好集成显卡和独立显卡的区别?哪个更好?莫代尔和纯棉哪个好莫代尔好还是棉好浮动利率和固定利率哪个好贷款选择浮动利率还是固定利率网校哪个好市面上的网校,谁最好?车险哪个好人保和平安车险哪个好雅思和托福哪个好考托福好考还是雅思好考?考生个人空间登录湖南自考所有成绩查询怎么查辽宁联通网上营业厅网中国联通的初始服务密码一般是多少首选dns服务器首选DNS服务器和备用DNS服务器有什么区别?
罗马假日广场 site5 息壤备案 全球付 gomezpeer iis安装教程 100m免费空间 个人域名 1g内存 稳定免费空间 上海联通宽带测速 银盘服务是什么 腾讯总部在哪 smtp服务器地址 群英网络 万网注册 privatetracker 美国主机侦探 winds phpwind论坛 更多