一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法技术

技术编号:11955864 阅读:128 留言:0更新日期:2015-08-27 07:52
本发明专利技术公开了一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法。将CABAC中所要完成的全部计算任务划分成:CABAC模块1和CABAC模块2;CABAC模块1的计算任务为语法元素转换、二进制化和上下文模型选择;CABAC模块2的计算任务为算术编码。在GPU上开设M个线程,用GPU多线程完成当前帧图像各个CTU的CABAC模块1的处理任务,一个GPU线程处理一个CTU单元,M个线程并行处理。在CPU端开设两个线程并行工作,CPU主线程用于调度和管理GPU多线程,CPU从线程用于完成CABAC模块2的处理任务。GPU多线程处理当前帧的图像数据,CPU从线程处理前一帧经过GPU多线程对CABAC模块1处理后的码流数据,二者并行工作。

【技术实现步骤摘要】
一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法
本专利技术属于数字视频压缩编码
,涉及到高效视频编码HEVC(HighEfficiencyVideoCoding)协议标准中的基于上下文编码CABAC(Context-basedAdaptiveBinaryArithmeticCoding)环节实现高效并行处理的方法,从而达到显著提升HEVC中CABAC的计算效率的目的。
技术介绍
数字视频由于直观性、确定性、高效性等优点,快速成为多媒体信息的主要载体,极大地丰富着人们的通信、娱乐和社交生活。同时,数字视频存在数据量大、需要信道传输带宽宽的问题。近几年,数字视频应用进入快轨道发展,视频分辨率从传统的标清向半高清(720p)、全高清(1080p)全面升级,甚至在一些高配置应用领域出现了超高清(3840×2160,7680×4320)的数字视频格式。相应的视频数据量大幅增加,视频信号存储和传输的压力加剧。为了适应数字视频的发展需求,继国际电信联盟与国际标准化组织ITU-T/ISO的联合视频专家组JVT在2003年推出H.264/AVC视频压缩编码标准后,国际电信联盟的视频编码专家组ITU-T/VCEG和国际标准化组织及国际电工委员会(IEC)的运动图像专家组ISO/IECMPEG于2013年联合推出了下一代视频压缩编码标准—HEVC(HighEfficiencyVideoCoding,高效视频编码)。HEVC标准一方面继承了H.264的编码理念,沿用了预测编码、变换编码和熵编码组成的混合编码框架,另一方面在各编码环节进行了改进,使得数据压缩率提高近1倍。HEVC标准在码率上的降低可以有效解决高清或超高清视频数据的存储和传输问题,但也使得整个编码过程的复杂度大幅度增加(据统计是H.264的2-4倍),这给实现HEVC标准下的视频实时编码的应用要求带来了巨大的挑战。为此,相关领域的科研人员正在设法研发各种高效的HEVC快速编解码算法或并行算法以解决该问题。HEVC标准中采用基于上下文的自适应二进制编码(CABAC)作为熵编码方案。熵编码是按照信息熵原理进行的无损编码方式,处于视频压缩系统的末端。HEVC编码器的基本处理单元为图像中划分成互不重叠且尺寸相同的编码树单元(CodingTreeUnit:CTU),在做CABAC熵编码之前,先对当前帧图像进行帧内或帧间预测、变换、量化等处理,对每个CTU均产生了分割模式、预测模式、运动矢量误差、像素残差等待编码数据。然后再对这些待编码数据进行CABAC运算产生最终压缩后的编码数据。根据HEVC中规定的CABAC算法原理,CABAC中的编码环节是以一帧(或片Slice)的整体二进制码流为单元进行编码,对整个码流产生一个码字。而为了这个码字,是通过对整个码流中每个字符采用区间递推的处理方法从初始区间(0,1)开始,根据各个字符按序出现的概率递推地划分当前的概率区间,并对该字符出现的概率进行自适应更新,直到处理完最后一个字符得到最终的划分区间来得到整个码流所对应的码字。而其中针对每个字符所做的概率区间的划分都是在对前一个字符的划分结果基础上来进行的。因此该过程须按码流中的字符顺序来逐个处理。在CABAC之前的各个处理环节(包括帧内或帧间预测、变换、量化等)均比较容易设计出相应的并行处理方法,现有文献中已提出基于GPU(GraphicsProcessingUnit)实现的并行算法,从而达到显著提升其速度的效果。但对于CABAC环节,由于编码本身是一种递推过程,数据递推结果在各个字符之间存在依赖关系,不适于采用GPU多线程的并行处理方法来提高其速度,且目前文献中尚未见到提出有效的并行处理方案。在HEVC编码器中,CABAC是复杂度比较大的模块之一。当其它模块均已通过采用并行方法得到显著加速后,该模块则将成为实现HEVC编码器的实时处理的瓶颈问题。因此,设计出高效的CABAC并行处理方案,将对实现HEVC编码器的实时处理具有重要的意义。目前,针对如何提高CABAC的计算效率的研究主要集中于算法改进和硬件加速。2010年公布的专利(黄毓文,郭峋.对有序熵切片执行平行CABAC码处理的方法及装置:中国,200980000556.8[P].2010,09,15.)中的对有序熵切片执行平行CABAC码处理的方法及装置是通过将一帧图像划分成多个熵切片(Slice)并分配给多个处理器元件,平行地执行各个熵切片的CABAC过程,以此来实现提高一帧图像的CABAC速度。在该方法中,对一帧图像的CABAC速度直接与对该帧图像划分的熵切片数量以及所采用的处理器元件数量成正比,并行颗粒为一个熵切片的CABAC,其并行加速比的最大值不超过该帧图像划分的熵切片数量。然而,根据CABAC编码方法原理,对一帧图像所划分的熵切片数量越多,则该帧图像经过编码压缩处理后所得到的最终码流的长度越长。这表明如果从视频图像压缩目的本身来考虑,则熵切片数量越少越好。因此图像熵切片数量不宜取得很大,故该方法不适合于大规模的CABAC并行处理。2014年发表于《机工程与应用》的文献(路伟,余宁梅,南江涵,等.并行可配置的HEVC熵编码的VLSI结构[J].机工程与应用,2014,50(3):121-124,144.)设计了针对CABAC中语法元素并行处理的VLSI硬件电路结构,通过采用16个二进制编码器模块阵列(PE-Array)实现了CABAC模块的实时处理。2014年发表于《电视技术》的文献(郭勇,王桂海,范益波,等.基于HEVC标准的全高清CABAC编码器设计[J].电视技术,2014,38(9):71-74.)提出一种一个周期可以处理4个字符的编码器结构来实现1080p视频图像的CABAC模块的实时处理。后面两篇文献都是以硬件电路实现方法对CABAC模块进行加速,不适合应用在本专利技术所涉及的基于CPU+GPU平台采用多线程软件处理的大规模并行情况。2009年在《国防科技大学学报》上发表的文献(陈胜刚,孙书为,陈书明.基于多线程的CABAC并行编码方法[J].国防科技大学学报,2009,31(1):99-103.)通过将待编码的语法元素分为三类并对该三类语法元素并行各自的编码码流来提高CABAC的速度。由于该方法会产生三种不同的编码码流,因此不能用标准的CABAC解码器来解码。同时由于其并行度为3,不适用于本专利技术所涉及的基于CPU+GPU平台采用多线程软件处理的大规模并行情况。
技术实现思路
本专利技术提出一种适合在CPU+GPU异构平台上实现的针对HEVC中CABAC进行并行处理的方法,用于解决CABAC过程耗时较长且不易实现并行处理的问题,从而达到显著提升HEVC中CABAC的计算效率的目的。在HEVC中,对每一幅当前帧图像(或当前片(Slice))都要首先进行预测(帧内预测或帧间预测,预测模式选择或运动搜索)、变换、量化及滤波重建等运算,在此基础上,再进行基于上下文的编码(CABAC)运算产生最终的编码压缩后的码流数据。根据HEVC中规定的CABAC算法原理,CABAC中主要包括语法元素(SyntaxElements)转换、二进制化、上下文模型选择以及编码四个关键环节。前三个环节均以CTU(C本文档来自技高网
...
一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法

【技术保护点】
一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法,其特征在于:(1)将CABAC中所要完成的全部任务划分成两个模块:CABAC模块1和CABAC模块2;(2)CABAC模块1的任务为语法元素转换、二进制化和上下文模型选择由GPU多线程完成当前帧图像各个CTU的语法元素转换、二进制化和上下文模型选择处理任务;设在此运算之前,已在GPU中完成包括将当前帧图像划分成M个CTU,M为一帧图像中所包含的CTU个数;对各个CTU的预测、变换、量化及滤波重建,再在GPU上开设M个线程,一个线程负责完成一个CTU的CABAC模块1的处理任务,M个线程并行处理;(3)CABAC模块2的任务为算术编码在CPU端开设CPU主线程和CPU从线程两个线程,CPU主线程用于调度和管理GPU多线程与CPU从线程,CPU从线程用于完成CABAC模块2的处理任务;CPU主线程对GPU多线程和CPU从线程的调度方案如下:在同一时间中分配GPU多线程处理当前帧的图像数据,包括对当前帧进行预测、变换、量化、滤波重建以及CABAC模块1的计算,CPU从线程处理前一帧经过GPU多线程完成CABAC模块1后的码流数据;当CPU设备中具备双核以上的CPU处理器时,将CPU主线程和CPU从线程映射到两个CPU核上,使两个线程并行工作。...

【技术特征摘要】
1.一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法,其特征在于:(1)将CABAC中所要完成的全部任务划分成两个模块:CABAC模块1和CABAC模块2;(2)CABAC模块1的任务为语法元素转换、二进制化和上下文模型选择:由GPU多线程完成当前帧图像各个CTU的语法元素转换、二进制化和上下文模型选择处理任务;设在此运算之前,已在GPU中完成包括将当前帧图像划分成M个CTU,M为一帧图像中所包含的CTU个数;对各个CTU的预测、变换、量化及滤波重建,再在GPU上开设M个线程,一个线程负责完成一个CTU的CABAC模块1的处理任务,M个线程并行处理;(3)CABAC模块2的任务为算术编码:在CPU端开设CPU主线程和CPU从线程两个线程,CPU主线程用于调度和管理GPU多线程与CPU从线程,CPU从线程用于完成CABAC模块2的处理任务;CPU主线程对GPU多线程和CPU从线程的调度方案如下:在同一时间中分配GPU多线程处理当前帧的图像数据,包括对当前帧进行预测、变换、量化、滤波重建以及CABAC模块1的计算,CPU从线程处理前一帧经过GPU多线程完成CABAC模块1后的码流数据;当CPU设备中具备双核以上的CPU处理器时,将CPU主线程和CPU从线程映射到两个CPU核上,使两个线程并行工作。2.根据权利要求1所述的并行方法,其特征在于如下步骤,步骤1:由CPU主线程对GPU多线程发调度指令,对分块后的第1帧图像进行帧内预测、变换、量化及滤波重建等处理,产生分割模式、预测模式、像素残差等待编码数据;结束时向CPU主线程发结束标志;CPU主线程接到GPU发来的结束标志,对GPU多线程发调度指令执行CABAC模块1;在CABAC模块1中,首先对得到的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;对得到的各个CTU的语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流;一个GPU线程处理一个CTU单元,NCTU个线程并行;对得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC进行上下文模型选择,存储上下文模型选择结果;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;结束时向CPU...

【专利技术属性】
技术研发人员:郭成安章琨
申请(专利权)人:大连理工大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1