RM52J解码器实时优化实现

内存卡读不出来怎么办  时间:2021-01-16  阅读:()

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

老薛主机入门建站月付34/月,年付345元,半价香港VPS主机

老薛主机怎么样?老薛主机这个商家有存在有一些年头。如果没有记错的话,早年老薛主机是做虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站业务所以能持续到现在。这不,站长看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港vps主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港vps。点击进入...

亚洲云Asiayu,成都云服务器 4核4G 30M 120元一月

点击进入亚云官方网站(www.asiayun.com)公司名:上海玥悠悠云计算有限公司成都铂金宿主机IO测试图亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚云由亚云团队运营,拥有ICP/ISP/IDC/CDN等资质,亚云团队成立于2018年,经过多次品牌升级。主要销售主VPS服务器,提供云服务器和物理服务器,机房有成都、美国CERA、中国香港安畅和电信,香港提供CN2 GIA线路,CE...

spinservers春节优惠:$149/月10Gbps圣何塞服务器-2*E5-2630Lv3 CPU,256G内存,2*1.6T SSD硬盘

spinservers是Majestic Hosting Solutions LLC旗下站点,商家提供国外服务器租用和Hybrid Dedicated等产品,数据中心包括美国达拉斯和圣何塞机房,机器默认10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。农历春节之际,商家推出了几款特别促销配置,最低双路E5-2630Lv3机器每月149美元起,下面列出几款机器...

内存卡读不出来怎么办为你推荐
主机租赁想弄个游戏主机出租,主要就是针对在校大学生的,比如ps3、xbox之类的,不知道前景如何,请大家帮我分析下企业虚拟主机一般的企业应该用什么样的虚拟主机?vps虚拟主机虚拟主机和VPS该选择哪个比较好域名服务商域名服务商所属区域怎么填写域名服务商最好的域名服务商是哪一家域名主机什么是域名主机美国网站空间购买美国网站空间使用会不会麻烦呢,免费网站空间申请哪里有免费申请空间的(网页制作)网站空间申请企业网站空间申请有哪些流程啊。、、。重庆网站空间重庆建网站的公司 我司准备建一个好点的网站,求推荐
域名查询软件 免费域名空间申请 vps虚拟服务器 adman cpanel主机 BWH paypal认证 个人免费空间 新家坡 hktv 常州联通宽带 新睿云 海外空间 路由跟踪 国外在线代理服务器 广州主机托管 国外免费网盘 开心online 蓝队云 最新优惠 更多