一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法

文档序号:8546447阅读:397来源:国知局
一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
【技术领域】
[0001] 本发明属于数字视频压缩编码技术领域,涉及到高效视频编码ffiVC(High Efficiency Video Coding)协议标准中的基于上下文编码CABAC (Context-based Adaptive Binary Arithmetic Coding)环节实现高效并行处理的方法,从而达到显著提升 HEVC中CABAC的计算效率的目的。
【背景技术】
[0002] 数字视频由于直观性、确定性、高效性等优点,快速成为多媒体信息的主要载体, 极大地丰富着人们的通信、娱乐和社交生活。同时,数字视频存在数据量大、需要信道 传输带宽宽的问题。近几年,数字视频应用进入快轨道发展,视频分辨率从传统的标清 向半高清(720p)、全高清(1080p)全面升级,甚至在一些高配置应用领域出现了超高清 (3840X2160,7680X4320)的数字视频格式。相应的视频数据量大幅增加,视频信号存储 和传输的压力加剧。为了适应数字视频的发展需求,继国际电信联盟与国际标准化组织 ITU-T/IS0的联合视频专家组JVT在2003年推出H. 264/AVC视频压缩编码标准后,国际 电信联盟的视频编码专家组ITU-T/VCEG和国际标准化组织及国际电工委员会(IEC)的运 动图像专家组IS0/IECMPEG于2013年联合推出了下一代视频压缩编码标准一HEVC(High EfficiencyVideoCoding,高效视频编码)。HEVC标准一方面继承了H. 264的编码理念,沿 用了预测编码、变换编码和熵编码组成的混合编码框架,另一方面在各编码环节进行了改 进,使得数据压缩率提高近1倍。ffiVC标准在码率上的降低可以有效解决高清或超高清视 频数据的存储和传输问题,但也使得整个编码过程的复杂度大幅度增加(据统计是H. 264 的2-4倍),这给实现HEVC标准下的视频实时编码的应用要求带来了巨大的挑战。为此,相 关领域的科研人员正在设法研发各种高效的ffiVC快速编解码算法或并行算法以解决该问 题。
[0003]HEVC标准中采用基于上下文的自适应二进制编码(CABAC)作为熵编码方案。熵编 码是按照信息熵原理进行的无损编码方式,处于视频压缩系统的末端。ffiVC编码器的基本 处理单元为图像中划分成互不重叠且尺寸相同的编码树单元(CodingTreeUnit:CTU),在 做CABAC熵编码之前,先对当前帧图像进行帧内或帧间预测、变换、量化等处理,对每个CTU 均产生了分割模式、预测模式、运动矢量误差、像素残差等待编码数据。然后再对这些待编 码数据进行CABAC运算产生最终压缩后的编码数据。根据HEVC中规定的CABAC算法原理, CABAC中的编码环节是以一帧(或片Slice)的整体二进制码流为单元进行编码,对整个码 流产生一个码字。而为了这个码字,是通过对整个码流中每个字符采用区间递推的处理方 法从初始区间(〇,1)开始,根据各个字符按序出现的概率递推地划分当前的概率区间,并 对该字符出现的概率进行自适应更新,直到处理完最后一个字符得到最终的划分区间来得 到整个码流所对应的码字。而其中针对每个字符所做的概率区间的划分都是在对前一个字 符的划分结果基础上来进行的。因此该过程须按码流中的字符顺序来逐个处理。在CABAC 之前的各个处理环节(包括帧内或帧间预测、变换、量化等)均比较容易设计出相应的并行 处理方法,现有文献中已提出基于GPU(GraphicsProcessingUnit)实现的并行算法,从 而达到显著提升其速度的效果。但对于CABAC环节,由于编码本身是一种递推过程,数据递 推结果在各个字符之间存在依赖关系,不适于采用GPU多线程的并行处理方法来提高其速 度,且目前文献中尚未见到提出有效的并行处理方案。在HEVC编码器中,CABAC是复杂度 比较大的模块之一。当其它模块均已通过采用并行方法得到显著加速后,该模块则将成为 实现HEVC编码器的实时处理的瓶颈问题。因此,设计出高效的CABAC并行处理方案,将对 实现HEVC编码器的实时处理具有重要的意义。
[0004]目前,针对如何提高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平台采用多线程软件处理的大规模并行情况。

【发明内容】

[0005] 本发明提出一种适合在CPU+GPU异构平台上实现的针对HEVC中CABAC进行并行 处理的方法,用于解决CABAC过程耗时较长且不易实现并行处理的问题,从而达到显著提 升HEVC中CABAC的计算效率的目的。
[0006] 在HEVC中,对每一幅当前帧图像(或当前片(Slice))都要首先进行预测(帧内 预测或帧间预测,预测模式选择或运动搜索)、变换、量化及滤波重建等运算,在此基础上, 再进行基于上下文的编码(CABAC)运算产生最终的编码压缩后的码流数据。根据HEVC中 规定的CABAC算法原理,CABAC中主要包括语法元素(SyntaxElements)转换、二进制化、 上下文模型选择以及编码四个关键环节。前三个环节均以CTU(CodingTreeUnit)为单元 进行,第四个环节(即编码)以一帧(或片Slice)的整体码流为单元进行编码,对整个码 流产生一个码字。
[0007] 根据上述算法原理,本发明提出的实现CABAC并行的技术方案是:
[0008] (1)将CABAC划分成两个模块:CABAC模块1和CABAC模块2。CABAC模块1的任 务为语法元素转换、二进制化和上下文模型选择;CABAC模块2的任务为编码。
[0009] (2)针对CABAC模块1提出一种GPU多线程并行方案(如图的GPU端所示),用于 在GPU上以多线程并行方式完成各个CTU的语法元素转换、二进制化和上下文模型选择的 任务。该GPU多线程的并行方案是:在此运算之前,设已将当前帧图像划分成NCTU个CTU(其 中NCTU为当前帧所包含的CTU个数),并完成对各个CTU的预测(帧内预测或帧间预测)、 变换
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1