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

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

Info

Publication number
CN104869398A
CN104869398A CN201510266416.2A CN201510266416A CN104869398A CN 104869398 A CN104869398 A CN 104869398A CN 201510266416 A CN201510266416 A CN 201510266416A CN 104869398 A CN104869398 A CN 104869398A
Authority
CN
China
Prior art keywords
thread
cpu
gpu
cabac
ctu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510266416.2A
Other languages
English (en)
Other versions
CN104869398B (zh
Inventor
郭成安
章琨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dalian University of Technology
Original Assignee
Dalian University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dalian University of Technology filed Critical Dalian University of Technology
Priority to CN201510266416.2A priority Critical patent/CN104869398B/zh
Publication of CN104869398A publication Critical patent/CN104869398A/zh
Application granted granted Critical
Publication of CN104869398B publication Critical patent/CN104869398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种基于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处理后的码流数据,二者并行工作。

Description

一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法
技术领域
本发明属于数字视频压缩编码技术领域,涉及到高效视频编码HEVC(HighEfficiency Video Coding)协议标准中的基于上下文编码CABAC(Context-basedAdaptive Binary Arithmetic Coding)环节实现高效并行处理的方法,从而达到显著提升HEVC中CABAC的计算效率的目的。
背景技术
数字视频由于直观性、确定性、高效性等优点,快速成为多媒体信息的主要载体,极大地丰富着人们的通信、娱乐和社交生活。同时,数字视频存在数据量大、需要信道传输带宽宽的问题。近几年,数字视频应用进入快轨道发展,视频分辨率从传统的标清向半高清(720p)、全高清(1080p)全面升级,甚至在一些高配置应用领域出现了超高清(3840×2160,7680×4320)的数字视频格式。相应的视频数据量大幅增加,视频信号存储和传输的压力加剧。为了适应数字视频的发展需求,继国际电信联盟与国际标准化组织ITU-T/ISO的联合视频专家组JVT在2003年推出H.264/AVC视频压缩编码标准后,国际电信联盟的视频编码专家组ITU-T/VCEG和国际标准化组织及国际电工委员会(IEC)的运动图像专家组ISO/IEC MPEG于2013年联合推出了下一代视频压缩编码标准—HEVC(High Efficiency Video Coding,高效视频编码)。HEVC标准一方面继承了H.264的编码理念,沿用了预测编码、变换编码和熵编码组成的混合编码框架,另一方面在各编码环节进行了改进,使得数据压缩率提高近1倍。HEVC标准在码率上的降低可以有效解决高清或超高清视频数据的存储和传输问题,但也使得整个编码过程的复杂度大幅度增加(据统计是H.264的2-4倍),这给实现HEVC标准下的视频实时编码的应用要求带来了巨大的挑战。为此,相关领域的科研人员正在设法研发各种高效的HEVC快速编解码算法或并行算法以解决该问题。
HEVC标准中采用基于上下文的自适应二进制编码(CABAC)作为熵编码方案。熵编码是按照信息熵原理进行的无损编码方式,处于视频压缩系统的末端。HEVC编码器的基本处理单元为图像中划分成互不重叠且尺寸相同的编码树单元(Coding Tree Unit:CTU),在做CABAC熵编码之前,先对当前帧图像进行帧内或帧间预测、变换、量化等处理,对每个CTU均产生了分割模式、预测模式、运动矢量误差、像素残差等待编码数据。然后再对这些待编码数据进行CABAC运算产生最终压缩后的编码数据。根据HEVC中规定的CABAC算法原理,CABAC中的编码环节是以一帧(或片Slice)的整体二进制码流为单元进行编码,对整个码流产生一个码字。而为了这个码字,是通过对整个码流中每个字符采用区间递推的处理方法从初始区间(0,1)开始,根据各个字符按序出现的概率递推地划分当前的概率区间,并对该字符出现的概率进行自适应更新,直到处理完最后一个字符得到最终的划分区间来得到整个码流所对应的码字。而其中针对每个字符所做的概率区间的划分都是在对前一个字符的划分结果基础上来进行的。因此该过程须按码流中的字符顺序来逐个处理。在CABAC之前的各个处理环节(包括帧内或帧间预测、变换、量化等)均比较容易设计出相应的并行处理方法,现有文献中已提出基于GPU(Graphics Processing Unit)实现的并行算法,从而达到显著提升其速度的效果。但对于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中主要包括语法元素(Syntax Elements)转换、二进制化、上下文模型选择以及编码四个关键环节。前三个环节均以CTU(Coding Tree Unit)为单元进行,第四个环节(即编码)以一帧(或片Slice)的整体码流为单元进行编码,对整个码流产生一个码字。
根据上述算法原理,本发明提出的实现CABAC并行的技术方案是:
(1)将CABAC划分成两个模块:CABAC模块1和CABAC模块2。CABAC模块1的任务为语法元素转换、二进制化和上下文模型选择;CABAC模块2的任务为编码。
(2)针对CABAC模块1提出一种GPU多线程并行方案(如图的GPU端所示),用于在GPU上以多线程并行方式完成各个CTU的语法元素转换、二进制化和上下文模型选择的任务。该GPU多线程的并行方案是:在此运算之前,设已将当前帧图像划分成NCTU个CTU(其中NCTU为当前帧所包含的CTU个数),并完成对各个CTU的预测(帧内预测或帧间预测)、变换及量化等前续处理,在此基础上,在GPU上开设NCTU个线程(其中NCTU为当前一帧图像所包含的CTU个数),为每个CTU分配一个线程用于负责完成该CTU的语法元素转换、二进制化及上下文模型选择的任务。NCTU个线程并行处理,同时完成所分配的上述任务。
(3)针对CABAC模块2和(2)中的GPU多线程的调度与管理任务,提出一种CPU双线程并行方案(如图的CPU端所示):在CPU端开设两个线程,一个线程(称为CPU主线程)用于调度和管理GPU多线程,另一个线程(称为CPU从线程)用于完成CABAC模块2的编码任务。CPU主线程同时兼顾对CPU从线程的调度和协调工作。
(4)CPU主线程对GPU多线程和CPU从线程的调度方案是(如图中标注的执行时间顺序和帧顺序所示):在同一时间中分配GPU多线程处理当前帧的数据,CPU从线程处理前一帧经过GPU多线程处理后的码流数据。在此调度方案下,CPU中的两个线程各自所处理的数据没有依赖关系,可以同时并行工作。此外,目前常用的CPU均具有双核以上的CPU处理器,可以将两个CPU线程映射到两个CPU核上,因此可以做到使得这两个线程完全并行工作,从而等价于CPU从线程与GPU多线程可以同时并行工作,亦等价于此时CABAC模块1和CABAC模块2得到并行处理。
需要指出的是,对于CABAC模块1在本发明中是以CTU为单元通过GPU多线程并行实现的,一个线程仅负责完成一个CTU的处理任务,从而其复杂度得到显著降低,其速度则随之得到显著提升。但根据HEVC中的熵编码原理,CABAC模块2的编码过程是以一帧(或片(Slice))图像的整体码流为单元进行的,对整个码流编制一个码字。而为了出这个码字,是通过对整个码流中每个字符采用区间递进的处理方法从初始区间(0,1)开始,根据各个字符按序出现的概率递归地划分当前的概率区间,并对该字符出现的概率进行自适应更新,直到处理完最后一个字符得到最终的划分区间来得到整个码流所对应的码字。其中针对每个字符所做的概率区间的划分都是在对前一个字符所做的划分结果基础上来进行的。因此该过程必须按码流中的字符顺序来逐个串行地处理。为此在本发明中专门开设一个CPU从线程用于完成该项编码任务,而没有采用GPU多线程来处理。这是因为考虑到该编码过程本身已不能再进一步划分,而一个GPU核的能力远小于一个CPU核,如果采用一个GPU单线程来完成该项任务,则会耗时较长,但采用一个CPU线程则耗时相对短得多。
另一方面需要指出的是,虽然CPU单核的能力远强于GPU的单核,但CABAC模块2是采用一个CPU线程来实现的,所处理的是整个一帧图像的码流数据,故其耗时通常比由GPU多线程来完成的CABAC模块1的耗时要长得多。因此如果这两个模块同时启动,则会发生当GPU多线程已经完成了当前帧的CABAC模块1的任务时,CPU从线程尚未完成对前一帧码流的编码(即CABAC模块2)的任务,这样则会造成对整个处理过程的延时。为了解决这一问题,在本发明中进一步对在CABAC模块1之前的各个环节加以综合考虑。根据HEVC标准协议,在CABAC环节之前主要包括对当前帧数据进行预测(帧内预测或帧间预测,预测模式选择或运动搜索)、变换、量化及滤波重建等环节,而这些环节均可以在GPU端采用GPU多线程方案来并行实现,所以在本发明中的CPU主线程的调度方案中,将CPU从线程对前一帧码流进行编码(CABAC模块2)的启动时间提前至GPU多线程开始对当前帧进行预测、变换、量化及滤波重建等运算的时刻(如图中标注的执行时间顺序和帧顺序所示)。这样则可保证CPU从线程具有足够的时间在GPU多线程完成对当前帧的CABAC模块1的任务之前完成对前一帧的CABAC模块2的处理,从而在各帧图像的处理时间中节省了由CPU从线程对CABAC模块2进行处理所产生的耗时。
本发明的效果和益处主要包括:
(1)通过对CABAC模块1(即各个CTU的语法元素转换、二进制化和上下文模型选择)采取GPU多线程并行处理方案,一个线程承担一个CTU的处理任务,使该模块的计算复杂度得到显著降低,因此其处理速度得到显著提升。该并行方案的并行度为NCTU(其中NCTU为当前一帧图像所包含的CTU个数),所能达到的理论加速比亦为NCTU。以1080p的高清视频图像为例,若将CTU的尺寸设置为32×32,则所能达到的理论加速比为NCTU=2040。
(2)通过设计出CPU双线程并行方案,能够做到完全省去由CPU从线程完成CABAC模块2所产生的耗时。这是因为在该CPU双线程并行方案中是用CPU从线程完成对前一帧图像的CABAC模块2(即编码)的处理任务,该CPU从线程与GPU端的GPU多线程并行工作,在GPU多线程完成当前帧图像的预测、变换、量化、滤波重建和CABAC模块1之前即可完成对CABAC模块2的处理。由于CABAC的编码原理决定该模块本身已不能再进行划分,不适于采用GPU多线程进行并行处理,因此与由GPU多线程来并行处理的CABAC模块1相比,CABAC模块2的耗时较长。本发明所做的实验结果表明,对于1080p的高清视频图像序列,当将压缩码率设置为6M比特/秒,采用一个CPU从线程来完成一帧图像的CABAC模块2(即编码)的处理任务,平均耗时约为18毫秒(注:实验所用的CPU型号为CoreTMi35503.2GHz)。若采用本发明的并行处理方案,则可以省去该项耗时,这对
于能否实现高清视频图像的实时编码压缩处理是十分关键的。
附图说明
附图是本发明的基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法的示意图。
具体实施方式
以下结合技术方案和附图详细阐述本发明的具体实施例。
实施步骤如下:
步骤1:如附图所示,针对第1帧图像,设定图像中CTU的尺寸(例如8×8,16×16,32×32或64×64),按光栅扫描顺序对该帧图像进行分割,形成CTU块。
(1.1)由CPU主线程对GPU多线程发调度指令,对分块后的第1帧图像进行帧内预测、变换、量化及滤波重建等处理,产生分割模式、预测模式、像素残差等待编码数据。结束时向CPU主线程发结束标志;
(1.2)CPU主线程接到GPU发来的结束标志,对GPU多线程发调度指令执行CABAC模块1;
(1.3)在CABAC模块1中,首先对在(1.1)中得到的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素。一个GPU线程处理一个CTU单元,NCTU个线程并行处理;
(1.4)对在(1.3)中得到的各个CTU的语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流。一个GPU线程处理一个CTU单元,NCTU个线程并行;
(1.5)对在(1.4)中得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC算法原理进行上下文模型选择,存储上下文模型选择结果。一个GPU线程处理一个CTU单元,NCTU个线程并行。结束时向CPU主线程发送结束标志。
步骤2:CPU主线程接到GPU发来的结束标志,将在(1.4)中得到的二进制化预编码码流和在(1.5)中得到上下文模型的选择结果取到CPU中。
步骤3:CPU主线程开启CPU从线程,并分别向CPU从线程和GPU多线程发调度指令、启动CPU从线程和GPU多线程。
(3.1)CPU从线程对步骤2中得到的第1帧图像的二进制化预编码码流和上下文模型选择结果进行编码(即CABAC模块2)运算。结束时向CPU主线程发结束标志;
(3.2)GPU多线程对第2帧图像进行帧间预测、变换、量化及滤波重建等处理,产生分割模式、运动矢量误差、像素残差等待编码数据。结束时向CPU主线程发结束标志;
(3.3)CPU主线程接到GPU发来的结束标志,对GPU发调度指令执行CABAC模块1。
(3.4)在GPU端的CABAC模块1中,首先对在(3.2)中得到的第2帧图像的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素。一个GPU线程处理一个CTU单元,NCTU个线程并行;
(3.5)GPU多线程对在(3.4)中得到的图像语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流。一个GPU线程处理一个CTU单元,NCTU个线程并行;
(3.6)GPU多线程对在(3.5)中得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC算法原理进行上下文模型选择,存储上下文模型选择结果。一个GPU线程处理一个CTU单元,NCTU个线程并行。结束时向CPU主线程发送结束标志。
步骤4:CPU主线程接到CPU从线程发来的结束标志和GPU多线程发来的结束标志后,将在(3.5)中得到的二进制化预编码码流和在(3.6)中得到上下文模型选择结果取到CPU中。分别向CPU从线程和GPU多线程发调度指令,按照步骤(3.1)-(3.6)执行,分别由CPU从线程完成对第2帧图像进行编码(CABAC模块2)运算、GPU多线程完成分配给GPU端的对第3帧图像的处理任务。
步骤5:设执行到第k帧(2≤k≤N),按照步骤4分别由CPU从线程完成对第k-1帧图像进行编码(CABAC模块2)运算、GPU多线程完成分配给GPU端的对第k帧图像的处理任务。
步骤6:CPU主线程接到CPU从线程发来的完成第N-1帧CABAC模块2的结束标志和GPU多线程发来的完成第N帧的CABAC模块1的结束标志,对CPU从线程发调度指令执行对第N帧图像的CABAC模块2的。该步骤完成后,整个视频序列的CABAC编码过程结束。

Claims (2)

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主线程发送结束标志;
步骤2:CPU主线程接到GPU发来的结束标志,将在步骤1中得到的二进制化预编码码流和上下文模型的选择结果取到CPU中;
步骤3:CPU主线程开启CPU从线程,并分别向CPU从线程和GPU多线程发调度指令、启动CPU从线程和GPU多线程;CPU从线程对步骤2中得到的第1帧图像的二进制化预编码码流和上下文模型选择结果进行编码运算;结束时向CPU主线程发结束标志;GPU多线程对第2帧图像进行帧间预测、变换、量化及滤波重建等处理,产生分割模式、运动矢量误差、像素残差等待编码数据;结束时向CPU主线程发结束标志;CPU主线程接到GPU发来的结束标志,对GPU发调度指令执行CABAC模块1;在GPU端的CABAC模块1中,首先对得到的第2帧图像的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;GPU多线程对得到的图像语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流;一个GPU线程处理一个CTU单元,NCTU个线程并行;GPU多线程对得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC算法原理进行上下文模型选择,存储上下文模型选择结果;一个GPU线程处理一个CTU单元,NCTU个线程并行;结束时向CPU主线程发送结束标志;
步骤4:CPU主线程接到CPU从线程发来的结束标志和GPU多线程发来的结束标志后,将在步骤3中得到的二进制化预编码码流和上下文模型选择结果取到CPU中;分别向CPU从线程和GPU多线程发调度指令,按照步骤3执行,分别由CPU从线程完成对第2帧图像进行编码运算、GPU多线程完成分配给GPU端的对第3帧图像的处理任务;
步骤5:设执行到第k帧,2≤k≤N;按照步骤4分别由CPU从线程完成对第k-1帧图像进行算术编码CABAC模块2运算、GPU多线程完成分配给GPU端的对第k帧图像的处理任务;
步骤6:CPU主线程接到CPU从线程发来的完成第N-1帧CABAC模块2的结束标志和GPU多线程发来的完成第N帧的CABAC模块1的结束标志,对CPU从线程发调度指令执行对第N帧图像的CABAC模块2的处理,整个视频序列的CABAC编码过程结束。
CN201510266416.2A 2015-05-21 2015-05-21 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法 Active CN104869398B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510266416.2A CN104869398B (zh) 2015-05-21 2015-05-21 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510266416.2A CN104869398B (zh) 2015-05-21 2015-05-21 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法

Publications (2)

Publication Number Publication Date
CN104869398A true CN104869398A (zh) 2015-08-26
CN104869398B CN104869398B (zh) 2017-08-22

Family

ID=53914860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510266416.2A Active CN104869398B (zh) 2015-05-21 2015-05-21 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法

Country Status (1)

Country Link
CN (1) CN104869398B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105516726A (zh) * 2015-11-27 2016-04-20 传线网络科技(上海)有限公司 视频编码的运动补偿匹配方法和系统
CN105631921A (zh) * 2015-12-18 2016-06-01 网易(杭州)网络有限公司 图像数据的处理方法及装置
CN106980533A (zh) * 2016-01-18 2017-07-25 杭州海康威视数字技术股份有限公司 基于异构处理器的任务调度方法、装置及电子设备
CN107193551A (zh) * 2017-04-19 2017-09-22 北京永航科技有限公司 一种生成图像帧的方法和装置
CN107197296A (zh) * 2017-06-22 2017-09-22 华中科技大学 一种基于COStream的HEVC并行编码方法和系统
CN107515736A (zh) * 2017-07-01 2017-12-26 广州深域信息科技有限公司 一种在嵌入式设备上加速深度卷积网络计算速度的方法
CN107809643A (zh) * 2017-11-13 2018-03-16 郑州云海信息技术有限公司 一种图像的解码方法、装置及介质
CN109391816A (zh) * 2018-10-26 2019-02-26 大连理工大学 基于cpu+gpu异构平台实现hevc中熵编码环节的并行处理方法
CN109495743A (zh) * 2018-11-15 2019-03-19 上海电力学院 一种基于异构多处理平台的并行化视频编码方法
CN110413849A (zh) * 2019-07-22 2019-11-05 上海赜睿信息科技有限公司 一种数据排序方法及装置
CN110990151A (zh) * 2019-11-24 2020-04-10 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
CN111489281A (zh) * 2020-04-09 2020-08-04 常州奥创医疗科技有限公司 一种基于gpu和cpu协同运算的检测方法
CN114827614A (zh) * 2022-04-18 2022-07-29 重庆邮电大学 一种实现lcevc视频编码优化的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072349A (zh) * 2006-06-08 2007-11-14 威盛电子股份有限公司 内容适应性可变长度编码的解码系统与方法
CN101176089A (zh) * 2005-05-16 2008-05-07 英特尔公司 使用多线程单指令多数据处理并行执行媒体编码
US20090003446A1 (en) * 2007-06-30 2009-01-01 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US20090002379A1 (en) * 2007-06-30 2009-01-01 Microsoft Corporation Video decoding implementations for a graphics processing unit
CN104581154A (zh) * 2014-12-31 2015-04-29 湖南国科微电子有限公司 一种熵编码方法和熵编码器电路

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101176089A (zh) * 2005-05-16 2008-05-07 英特尔公司 使用多线程单指令多数据处理并行执行媒体编码
CN101072349A (zh) * 2006-06-08 2007-11-14 威盛电子股份有限公司 内容适应性可变长度编码的解码系统与方法
US20090003446A1 (en) * 2007-06-30 2009-01-01 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US20090002379A1 (en) * 2007-06-30 2009-01-01 Microsoft Corporation Video decoding implementations for a graphics processing unit
CN104581154A (zh) * 2014-12-31 2015-04-29 湖南国科微电子有限公司 一种熵编码方法和熵编码器电路

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
江辉;郭成安: "基于GPU的H.264视频并行编解码器", 《万方数据 学术论文》 *
苏学凯;孔建寿: "基于CPU+GPU的H.264编码器并行编码设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
赵洋;郭成安: "H.264并行编码算法设计及其在GPU上的实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105516726B (zh) * 2015-11-27 2019-04-09 传线网络科技(上海)有限公司 视频编码的运动补偿匹配方法和系统
CN105516726A (zh) * 2015-11-27 2016-04-20 传线网络科技(上海)有限公司 视频编码的运动补偿匹配方法和系统
CN105631921A (zh) * 2015-12-18 2016-06-01 网易(杭州)网络有限公司 图像数据的处理方法及装置
CN105631921B (zh) * 2015-12-18 2018-11-27 网易(杭州)网络有限公司 图像数据的处理方法及装置
CN106980533A (zh) * 2016-01-18 2017-07-25 杭州海康威视数字技术股份有限公司 基于异构处理器的任务调度方法、装置及电子设备
CN107193551A (zh) * 2017-04-19 2017-09-22 北京永航科技有限公司 一种生成图像帧的方法和装置
CN107193551B (zh) * 2017-04-19 2021-02-02 北京永航科技有限公司 一种生成图像帧的方法和装置
CN107197296A (zh) * 2017-06-22 2017-09-22 华中科技大学 一种基于COStream的HEVC并行编码方法和系统
CN107197296B (zh) * 2017-06-22 2019-08-13 华中科技大学 一种基于COStream的HEVC并行编码方法和系统
CN107515736A (zh) * 2017-07-01 2017-12-26 广州深域信息科技有限公司 一种在嵌入式设备上加速深度卷积网络计算速度的方法
CN107515736B (zh) * 2017-07-01 2021-01-15 广州深域信息科技有限公司 一种在嵌入式设备上加速深度卷积网络计算速度的方法
CN107809643B (zh) * 2017-11-13 2020-11-20 苏州浪潮智能科技有限公司 一种图像的解码方法、装置及介质
CN107809643A (zh) * 2017-11-13 2018-03-16 郑州云海信息技术有限公司 一种图像的解码方法、装置及介质
CN109391816A (zh) * 2018-10-26 2019-02-26 大连理工大学 基于cpu+gpu异构平台实现hevc中熵编码环节的并行处理方法
CN109495743A (zh) * 2018-11-15 2019-03-19 上海电力学院 一种基于异构多处理平台的并行化视频编码方法
CN109495743B (zh) * 2018-11-15 2021-10-08 上海电力学院 一种基于异构多处理平台的并行化视频编码方法
CN110413849A (zh) * 2019-07-22 2019-11-05 上海赜睿信息科技有限公司 一种数据排序方法及装置
CN110990151A (zh) * 2019-11-24 2020-04-10 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
CN111489281A (zh) * 2020-04-09 2020-08-04 常州奥创医疗科技有限公司 一种基于gpu和cpu协同运算的检测方法
CN114827614A (zh) * 2022-04-18 2022-07-29 重庆邮电大学 一种实现lcevc视频编码优化的方法
CN114827614B (zh) * 2022-04-18 2024-03-22 重庆邮电大学 一种实现lcevc视频编码优化的方法

Also Published As

Publication number Publication date
CN104869398B (zh) 2017-08-22

Similar Documents

Publication Publication Date Title
CN104869398A (zh) 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN105992008B (zh) 一种在多核处理器平台上的多层次多任务并行解码方法
CN102150425B (zh) 用于使用并行处理来进行解码的系统和方法
CN104054348B (zh) 在视频译码中波前平行处理的子流
KR101710001B1 (ko) 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법
CN105453570A (zh) 用于下一代视频的对分区数据的内容自适应熵编码
CN104768016B (zh) 深度区块的深度编码方法
CN105308971A (zh) 假设的参考解码器模型和跨层随机存取跳过图片的一致性
CN106464894A (zh) 视频处理方法及装置
CN103297777A (zh) 一种用于加速视频编码速度的方法及装置
CN101282478A (zh) 实现高清视频并行编码的方法及系统
CN104079937B (zh) 一种基于运动矢量分析的由h.264到hevc的快速帧间转码方法及转码装置
CN102223541A (zh) 一种混合图像的编码方法
CN106210728A (zh) 用于视频解码的电路、方法和视频解码器
CN101969560B (zh) 一种多核平台下MPEG2高清编码器的Slice码率分配方法
CN105981383A (zh) 视频处理方法及装置
CN104704826A (zh) 两步量化和编码方法和装置
CN101014129A (zh) 一种视频数据压缩方法
CN109391816A (zh) 基于cpu+gpu异构平台实现hevc中熵编码环节的并行处理方法
CN105245896A (zh) Hevc并行运动补偿方法及装置
CN102473315A (zh) 再次使用树结构编码和解码二元集的方法和装置
CN104980764A (zh) 基于复杂度均衡的并行编解码方法、装置及系统
CN107197296B (zh) 一种基于COStream的HEVC并行编码方法和系统
CN105100799A (zh) 一种减少hevc编码器中帧内编码时延的方法
CN104780377B (zh) 一种基于分布式计算机系统的并行hevc编码系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Guo Chengan

Inventor after: Zhang Yuan

Inventor before: Guo Chengan

Inventor before: Zhang Kun