CN105491377A - 一种计算复杂度感知的视频解码宏块级并行调度方法 - Google Patents
一种计算复杂度感知的视频解码宏块级并行调度方法 Download PDFInfo
- Publication number
- CN105491377A CN105491377A CN201510937350.5A CN201510937350A CN105491377A CN 105491377 A CN105491377 A CN 105491377A CN 201510937350 A CN201510937350 A CN 201510937350A CN 105491377 A CN105491377 A CN 105491377A
- Authority
- CN
- China
- Prior art keywords
- macro
- block
- parallel
- macro block
- gpu
- 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
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种计算复杂度感知的视频解码宏块级并行调度方法,包含两项关键技术:一是根据熵解码和重排序之后的宏块信息,如非零系数个数、宏块帧间预测编码类型、运动矢量等,建立宏块解码复杂度预测线性模型,对每个模块进行复杂度分析,充分利用已知的宏块信息,提高并行效率;二是在满足宏块解码依赖的前提下,将宏块解码复杂度与计算并行相结合,对已获取的宏块复杂度进行排序,根据排序结果对宏块进行分组并发执行,分组大小根据GPU的计算能力动态确定,分组数目根据当前可并行的宏块数目动态确定,保证充分利用GPU的同时也控制内核函数发射次数,实现高效并行。另外,采用缓冲区的方式实现CPU和GPU的并行协同运行,充分利用资源,减少空闲等待。
Description
技术领域
本发明属于视频解码技术领域,更具体地,涉及一种计算复杂度感知的视频解码宏块级并行调度方法,该方法是将压缩视频在异构多核平台上并行解码,利用对宏块解码各阶段计算复杂度的估计结果调度视频帧内宏块解码的并行执行顺序,减少并行处理同步开销,达到加速视频解码,节省系统能耗的效果。
背景技术
目前,在数字电视、移动视频、视频监控等应用中,全高清1080P数字视频已经非常普及,视频分辨率正朝超高清,如4K、8K方向发展。视频分辨率的提高可以提供更好的用户体验,但是也使得编解码过程中的计算复杂度急剧增加,对其实时处理带来巨大挑战。新兴的CPU+GPU异构多核处理平台具有丰富的并行处理资源,因此如何利用多核处理器进行视频编解码的并行加速,提高视频编解码的吞吐率、减少延时是目前学术界和工业界的研究热点。近年来国内外对以H.264为代表的混合框架视频编解码器的并行优化研究有很多工作,其中重要的一个策略是宏块级的并行技术,即让不存在依赖关系的多个宏块可在不同处理核上同时并行进行解码。
在此方面,文献[Meenderincket.al.ScalabilityofMacroblock-levelParallelismforH.264Decoding.ICPADS,pp.236-243,2009]对宏块级并行解码做了比较系统化、理论化的研究,提出了一个关于宏块级并行调度策略的基本模型,分析了解码宏块级并行的可能性,并且考虑了多处理器(ChipMultiprocessors,CMPs)进行宏块解码的线程同步开销,来分析宏块并行的最大上限。所谓线程同步开销,就是由于解码各个宏块的时间不同,当一个线程解码某一个宏块时,需要等待其依赖的宏块解码完成,其等待时间为依赖宏块的解码最大时间,从而导致线程之间存在同步开销。该文提出了三种宏块调度策略:静态调度、动态调度和带尾提交(TailSubmit)调度。静态调度即按照预先指定的顺序(例如zigzag)进行调度。这种方法的优点就是实现简单,并且当宏块解码时间相近时能高效地进行并行解码,其不足是可扩展性较差,必须按照事先指定的顺序解码,而且当每个宏块解码时间相差很大时,线程同步时间开销大。动态调度策略利用一个任务队列,将没有依赖的宏块放到一个任务队列中,空闲线程从任务队列中取得宏块进行解码,更新依赖表,将去除依赖的宏块入列,等待处理。这种方法的优点就是能够实现动态调度,具有较强的扩展性,而且相比静态调度,能达到更好的并行效果,但其存在线程对队列的争用问题,导致线程获得宏块的时间开销变大,尤其是当线程数目变多的时候,争用开销更大。带尾提交也是一种动态调度策略。这种方法就是每当一个宏块去除依赖之后,如果有空闲线程,则直接进行解码,否则将宏块入列,等待处理。当有多个去依赖的可以解码的宏块时,将其中一个宏块直接处理,另外的待解码宏块放入任务队列。带尾提交的动态调度策略提高了吞吐率,缓解线程争用压力,是目前宏块级并行最好的调度策略之一,但仍然没有达到最佳性能。其原因有两个:首先,当处理器核增多时,对于全局队列的使用会引发大量的线程同步开销;其次,该方法未充分考虑Cache的局部性约束,因为多核之间存在潜在的垂直结构,即每一个核的访问速度不一致,导致通信开销和负载不均衡。[Vu,Dung,JilongKuang,andLaxmiBhuyan."AnAdaptiveDynamicSchedulingSchemeforH.264/AVCDecodingonMulticoreArchitecture."MultimediaandExpo(ICME),2012IEEEInternationalConferenceon.IEEE,2012]中提出了一种自适应的动态调度策略,采用多个任务队列来减少线程对队列宏块的争用,并且在分配任务时,将相邻的宏块分配到相邻的处理核上,有意识地考虑了局部性和负载均衡。多队列方式能够有效地缓解线程争用队列的开销,但是可适用范围较小,只有当线程数目达到一定数量时才会体现出它的优势。
上述调度方法以任务队列的形式来缓解线程同步的开销,但也带来了线程争用队列的开销,未能从根本消除或减小线程同步的开销;多队列方式能够有效地缓解线程争用队列的开销,但是可适用范围较小,只有当线程数目达到一定数量时才会体现出它的优势。而且上述宏块级调度策略全部是针对多核CPU的,只有在多核服务器(如32核cc-NUMASGI工作站、TILE64、CellBE等)上应用才适用。对于当前广泛应用的基于扩展卡的图形处理器(GraphicsProcessingUnits,GPU)计算平台,这些调度算法是不适用的。因为CPU的核心数目相对还是较少,并行线程的数目是有限的,而现有的普通GPU一般都拥有上千个流处理器,基于CPU的调度方案线程数目是与CPU核心数目是保持在一个数量级别的,因此不能充分利用GPU所具有的众多流处理器。另外,采用队列和线程池的方式实现的并行调度方案需要做很多逻辑判断,而GPU更适合做算术运算,不适合做这种类型调度。因此需要有一种新的针对GPU的宏块级并行调度方法实现解码加速,充分利用通用GPU的计算能力以及运算特点,同时释放CPU的资源完成其他任务。
发明内容
本发明的目的在于提供一种适用于GPU的计算复杂度感知的视频解码宏块级并行调度方法。其利用宏块解码过程的中间信息来估计解码各阶段计算复杂度,通过解码各阶段计算复杂度来实现宏块的并行调度,降低GPU并行解码过程中的线程同步开销,从而提高并行处理效率。
GPU主要适用于数据并行度高,浮点计算量大的计算任务。因为GPU将更多的晶体管用于数据处理而不是逻辑控制,所以对于数据密集度高且相关度低的计算可以充分利用GPU的并行计算能力,实现并行。基于GPU的通用计算(General-purposecomputingongraphicsprocessingunits,GPGPU)通常采用CPU+GPU模式,CPU负责处理复杂逻辑处理等计算,GPU负责数据密集型的大规模并行计算。本发明实施例中GPU与CPU的异构编程,编程模型见附图1,即串行代码段在CPU上执行,存在并行空间的代码段在GPU上并行执行,其中并行部分可以根据算法的特性,动态划分块大小。
本发明所提出的计算复杂度感知的视频解码宏块级并行调度方法,对压缩视频流的各帧图像均按照如下方法处理:
(1)对帧图像进行熵解码和重排序,并将结果存储到指定的缓冲区中:
(11)将压缩视频流按照视频编码标准(例如H.264/AVC)规定的码流语法和语义对压缩码流进行解析,得到每个宏块的头信息(预测模式、编码块格式、量化参数、参考帧索引、运动矢量等)和量化系数。
(12)对步骤(11)中得到的每个宏块或者块的量化系数进行重排序,即反zig-zag扫描,将量化系数串按照对应块的二维矩阵形式进行存储,得到每个块对应像素的量化系数。
(13)将步骤(11)和(12)中得到的每个宏块头信息和重排序之后的量化系数存储到指定的缓冲区中,供接下来的解码阶段使用。
(2)根据步骤(13)中得到的宏块头信息和量化系数对该帧内每个宏块解码各阶段计算复杂度进行估计,得到每个宏块解码各阶段计算复杂度值:
(21)根据预测模式、编码块格式、量化参数、参考帧索引、运动矢量建立宏块解码复杂度估计的线性模型。
(22)将步骤(13)中得到的宏块头信息和量化系数代入到(21)建立的模型中,得到每个宏块解码各阶段计算复杂度值。
(3)根据步骤(22)得到的宏块解码各阶段计算复杂度值,对宏块接下来的解码过程进行动态并行调度:
(31)在满足宏块间依赖关系的前提下,将得到的宏块解码各阶段计算复杂度值进行排序,可以得到宏块解码各阶段对应计算复杂度的范围为[Cmin,Cmax]。
(32)将复杂度按照预设的区间划分,区间个数和大小根据GPU计算能力确定,计算能力强,则可并行宏块多,所以划分区间少,反之则多。
(33)每个宏块对应各阶段计算复杂度值映射到相应区间,区间内部实现宏块级并行,区间之间实现多内核函数并行。
(4)将步骤(13)中的熵解码和重排序的上下文传递到GPU存储区,结合(3)中实现的调度方法,在GPU上实现反量化、反变换、运动补偿或帧内预测、去块滤波的并行化计算。
(41)将每一个宏块上下文信息拷贝到GPU全局存储区(GlobalMemory),变换矩阵、查找表等常量信息拷贝到常量存储区(ConstantMemory),减少频繁访存时间。使用异步传输,实现GPU和CPU的协同工作,以及计算和数据传输的并行执行。
(42)将步骤(13)中重排序之后的数据进行反量化操作,得到每个宏块频域的残差系数。由于反量化过程中宏块之间没有依赖关系,根据算法的特性以及每个宏块反量化的复杂度值,将可并行宏块进行分块,多内核函数并行执行,内核函数内部以像素为粒度实现全并行。
(43)将步骤(42)得到的频域的残差系数通过反变换,得到每个宏块时域的残差系数。反变换过程中宏块之间也没有依赖关系,因此并行调度方法同反量化过程基本一致,只是由于算法不同,实现的方式不一样。
(44)将步骤(43)得到的残差系数通过运动补偿或帧内预测,得到原始宏块的像素值。其中宏块头信息中的宏块类型(mb_type),可确定宏块编码类型是帧间或者帧内,如果是帧间模式,则通过运动补偿,得到原始像素值,如果是帧内模式,则通过帧内预测得到原始像素值。运动补偿或帧内预测在保证宏块之间依赖关系的前提下,同样原理实现并行化。
(45)将步骤(44)得到的原始像素值进行滤波,去除块效应,得到最终输出的图像。由于每个宏块的去块滤波的复杂度是接近的,因此这一过程的并行不用考虑复杂度进行调度,而是采用单内核函数,在满足宏块依赖的前提下实现并行。
(5)将GPU上完成解码的当前帧拷贝回主机内存,同时存放在参考帧的缓冲区中,作为解码下一帧的参考帧。
本发明的技术效果体现在:
本发明提出的计算复杂度感知的视频解码宏块级并行调度方法包含两项关键技术:一是根据熵解码和重排序之后的宏块信息,如非零系数个数、宏块帧间预测编码类型、运动矢量等,建立宏块解码复杂度预测模型;二是在满足宏块解码依赖的前提下,将宏块解码复杂度估计与计算并行度相结合,实现动态宏块并行调度,并对可并行的宏块进行分组并行执行,减少GPU线程之间同步开销,提高并行效率。
关键技术一,宏块各阶段复杂度估计建模。分析解码各个阶段的算法特性,熵解码和重排序可并行的空间较小,且逻辑运算较多,不适合在GPU上实现,因此将解码过程分为两个部分。在CPU上实现熵解码和重排序两个模块,在GPU上实现反量化、反变换、运动补偿或帧内预测、去块滤波四个模块。在原始的串行解码或者多核并行解码过程中,宏块完成熵解码和重排序之后,没有充分利用当前解码的宏块的基本信息,直接进行下一解码模块,没有充分达到并行效果。[田婷,余胜生,郭红星,等.视频解码计算复杂度的线性建模理论及在线预测方法[J].计算机学报,2012,35(10):2048-2062.]中提到,解码复杂度的估计方法主要有两类,基于统计分析和基于预测的方法,本发明采用基于统计分析的方法来进行复杂度估计。根据熵解码之后的宏块信息,非零系数个数、宏块编码预测类型、运动矢量进行线性建模,对每个模块的复杂度进行分析。此方法比较简单,也能有效利用已知的宏块信息。
关键技术二,宏块解码复杂度与并行调度相结合,实现高效并行。根据已有的宏块复杂度信息,对宏块解码复杂度进行排序,根据排序结果对宏块进行分组并发执行,分组大小根据GPU的计算能力动态确定,分组数目根据当前可并行的宏块数目动态确定,保证充分利用GPU的同时也控制内核函数的发射次数,将内核发射的开销尽量降低。
另外,当CPU正在执行码流读取、熵解码、重排序时,GPU处于空闲状态,因为需要等待CPU的计算结果,而当GPU执行反变换、反量化、运动补偿或帧内预测、去块滤波时,CPU是处于空闲状态的,对于硬件的利用率不高,因此采用缓冲区的方式实现CPU和GPU的并行协同运行,即CPU进行N+1帧的熵解码、重排序操作,GPU执行N帧的反变换、反量化、运动补偿或帧内预测、去块滤波模块,充分利用资源,减少空闲等待。
综上所述,本发明提供了一种适用于GPU的计算复杂度感知的视频解码宏块级并行调度方法,充分利用GPU的特性,实现高效并行解码。
附图说明
图1CPU与GPU(以NvidiaCUDA为例)异构编程模型;
图2是本发明实施例中本发明的系统结构图。
图3是本发明实施例中宏块解码依赖示意图;
图4是本发明实施例中宏块解码并行空间示意图;
图5是本发明实施例中宏块并行调度模型;
图6是本发明实施例中CPU与GPU协同工作示意图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的系统结构图见附图2,其中将整个解码过程分成三个大的阶段,CPU计算模块、调度模块、GPU并行计算模块。CPU计算模块包含熵解码和重排序两个计算阶段,调度模块包含GPU上执行的各阶段的复杂度估计建模和计算及并行调度,GPU并行计算模块实现反量化、反变换、运动补偿或帧内预测、去块滤波四个计算过程的GPU并行化。
以FFMEPG中H.264/AVC解码器解码1080P(1920×1080)视频为例,对压缩视频流的各帧图像均按照如下方法处理:
(1)对帧图像进行熵解码和重排序,并将结果存储到指定的缓冲区中:
(11)在解码之前,先将解码流程的各个阶段进行解耦合,分成两个大的部分:CPU执行部分和GPU执行部分。CPU执行部分包含熵解码和重排序两个部分,GPU部分包含反量化、反变换、运动补偿或帧内预测和去块滤波四个部分。
(12)以帧图像分辨率1920×1080为例,其包含120×68个16×16的宏块。以宏块单位对当前帧码流按照H.264/AVC协议规定的语法与语义进行解析,可以得到每一个宏块的头信息(预测模式、编码块格式、量化参数、参考帧索引、运动矢量等)和量化系数。
(13)对步骤(12)中得到的每个宏块或者块的量化系数进行重排序,即反zig-zag扫描,将量化系数串按照对应块的二维矩阵形式进行存储,得到每个块对应像素的量化系数。
(14)将步骤(12)和(13)中得到的每个宏块头信息和重排序之后的量化系数存储到指定的缓冲区中,供接下来的解码阶段使用。CPU和GPU各自的执行模块都有对应的上下文信息,仅重排序之后的上下文需要从CPU传输到GPU,其他各个连续模块之间都可以直接复用上下文。
(2)根据熵解码之后得到的当前帧所有宏块的信息,根据建立的复杂度预测模型,进行复杂度预测,具体为:
(21)对于每个宏块,直接利用步骤(14)中得到的宏块信息,主要根据宏块类型(mb_type)、非零系数个数(non_zero_coef)、宏块预测模式(mb_pred)、运动矢量(motionvector,MV)等来进行复杂度预测,分别建立解码各阶段的计算复杂度与宏块头信息及量化系数的线性模型。由于熵解码(VariableLengthDecoding,VLD)之后的模块才会在GPU上进行并行处理,所以预测每个宏块的复杂度时,只考虑熵解码之后的各个模块复杂度。
(22)去块滤波对于每一个宏块的基本操作都是一样的,即根据边界强度进行相应的滤波操作,所以在估计计算复杂度的时候可以不需要考虑,因此可以将宏块解码总的计算复杂度定义为(I),其中Ctotal表示重排序之后除去块滤波外各个阶段计算复杂度之和,Ciq表示每个宏块反量化过程计算复杂度,Cidct表示每个宏块反变换过程计算复杂度,Cmc/ip表示每个宏块运动估计或帧内预测过程计算复杂度,
Ctotal=Ciq+Cidct+Cmc/ip(I)
(23)反量化与反变换模块对每个固定大小的压缩域系数块进行相同的加法和乘法操作,其计算复杂度与宏块头信息和量化系数无关,而是由视频分辨率大小决定的,分辨率大,对应宏块数目多,则所需反量化和反变换的操作多,宏块内部计算量是一样的。但是目前所采用的优化反变换算法会利用其中的多个系数为零这个特点对计算过程进行简化,在这种情况下反变换的计算量与非零系数的个数和出现位置有关,为了适应两种情况,反量化和反变换复杂度可定义为公式(II)和(III),其中ncoef表示非零系数个数,aiq表示优化条件下每个宏块内部一个非零系数反量化计算复杂度,即有Ciq=aiq×ncoef,而在非优化条件下每一个宏块反量化计算复杂度为常量biq,即Ciq=biq,同理,ait表示优化条件下每个宏块内部一个非零系数反变换计算复杂度,bit为常量,表示在非优化条件下每一个宏块反变换化计算复杂度,
Ciq=aiq×ncoef+biq(II)
Cit=ait×ncoef+bit(III)
对于运动补偿或帧内预测主要分为两个计算模块,获取参考块所需的计算复杂度和残差求和的计算复杂度。残差求和对于每一个宏块的基本操作都是一样的,而获取参考块的计算复杂度取决于块的类型(mb_type)、块预测模式(mb_pred)及运动矢量(motionvector),此参数都为宏块头组成参数,预测模式越复杂、分数精度的运动矢量都将导致宏块头变得更长,所以可以认为宏块头长度与运动补偿或帧内预测复杂度呈正相关,表达式可定义为(IV),其中lh表示宏块头长度,amc/ip表示宏块头每个码元预取数据平均计算复杂度,bmc/ip为常量,表示每个宏块残差求和计算复杂度,
Cmc/ip=amc/ip×lh+bmc/ip(IV)
(24)在满足宏块间依赖关系的前提下,将解码过程中得到的宏块信息依次代入到(II)、(III)、(IV)得到宏块解码各阶段的计算复杂度值。
(3)根据步骤(24)得到的宏块解码各阶段计算复杂度值,对宏块接下来的解码过程进行动态并行调度:
(31)在满足宏块间依赖关系的前提下,将可并行宏块的各解码阶段复杂度值进行排序,得到宏块复杂度的范围为[Cmin,Cmax]。在解码过程中,帧内预测和运动向量预测会依赖其相邻的左、左上、上、右上四个宏块解码完成,去块滤波依赖于其相邻的左和上边两个宏块解码完成,依赖关系见附图3。由此依赖关系可得到宏块空间并行图4,其中箭头指向的黑色宏块是可以并行解码的,因为它们所依赖的宏块已经解码完成。
(32)将复杂度按区间划分,如[Cmin,C1),[C1,C2),...,[Cn,Cmax]。区间个数和大小根据GPU计算能力确定,计算能力强,设备流处理器多则划分的区间就少,反之划分区间多,尽量保证每一个区间宏块间计算复杂度相近。
(33)每个宏块对应的复杂度值映射到相应区间。区间内部实现宏块级并行,区间之间实现多内核函数并行。并行调度模型见附图5,将可并行宏块根据每个阶段的计算复杂度进行排序,将宏块按照复杂度区间进行重新分组,以多个内核函数并行执行所有宏块组。
(4)将步骤(14)中的熵解码和重排序的上下文传递到GPU存储区,结合(3)中实现的调度方法,在GPU上实现反量化、反变换、运动补偿或帧内预测、去块滤波的并行化:
(41)将每一个宏块上下文信息拷贝到GPU全局存储区(GlobalMemory),变换矩阵、查找表等常量信息拷贝到常量存储区(ConstantMemory),减少频繁访存时间。使用异步传输,实现计算和数据传输的并行执行,模型图见附图6,其中CPU进行N+1帧的熵解码、重排序操作,将其计算结果传递到GPU的缓冲区,用于GPU完成解码过程中余下的计算,GPU执行N帧的反变换、反量化、运动补偿或帧内预测、去块滤波模块。
(42)将步骤(14)中重排序之后的数据进行反量化操作,得到每个宏块频域的残差系数。由于反量化过程中宏块之间没有依赖关系,根据算法的特性以及每个宏块反量化的复杂度值,将可并行宏块进行分块,多内核函数并行执行,内核函数内部以像素为粒度实现全并行。
(43)将步骤(42)得到的频域的残差系数通过反变换,得到每个宏块时域的残差系数。反变换过程中宏块之间也没有依赖关系,并行调度方法与反量化类似。
(44)将步骤(43)得到的残差系数通过运动补偿或帧内预测,得到原始宏块的像素值。其中宏块头信息中的宏块类型(mb_type),可确定宏块编码类型是帧间或者帧内,如果是帧间模式,则通过运动补偿,得到原始像素值,如果是帧内模式,则通过帧内预测得到原始像素值。运动补偿或帧内预测在保证宏块之间依赖关系前提下,同样原理实现并行化。
(45)将步骤(44)得到的原始像素值进行滤波,去除块效应,得到最终输出的图像。由于去块滤波每个宏块的复杂度是接近的,因此该过程的并行不用考虑计算复杂度进行调度,而是采用单内核函数,在满足宏块依赖的前提下实现并行化。
(5)将GPU上完成解码的当前帧拷贝回主机内存,同时存放在GPU参考帧的缓冲区中,作为解码下一帧的参考帧。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于计算复杂度感知的视频解码宏块级并行调度方法,其特征在于,对压缩视频流的各帧图像均按照如下方法处理,所述方法包括如下步骤:
(1)对帧图像进行熵解码和重排序,并将结果存储到指定的缓冲区中:
(11)将压缩视频流按照视频编码标准规定的码流语法和语义对压缩码流进行解析,得到每个宏块的头信息和量化系数,所述每个宏块的头信息包括预测模式、编码块格式、量化参数、参考帧索引、运动矢量;
(12)对步骤(11)中得到的每个宏块量化系数进行重排序,将量化系数串按照对应块的二维矩阵形式进行存储,得到每个块对应像素的量化系数;
(13)将步骤(11)和(12)中得到的每个宏块头信息和重排序之后的量化系数存储到指定的缓冲区中,用于接下来的解码阶段使用;
(2)根据步骤(13)中得到的宏块头信息和量化系数对该帧内每个宏块解码各阶段计算复杂度进行估计,得到每个宏块解码各阶段计算复杂度值:
(21)根据预测模式、编码块格式、量化参数、参考帧索引、运动矢量建立宏块解码复杂度估计的线性模型;
(22)将步骤(13)中得到的宏块头信息和量化系数代入到步骤(21)建立的模型中,得到每个宏块解码各阶段计算复杂度值;
(3)根据步骤(22)得到的宏块解码各阶段计算复杂度值,对宏块接下来的解码过程进行动态并行调度:
(31)在满足宏块间依赖关系的前提下,将得到的宏块解码各阶段计算复杂度值进行排序,得到宏块解码每个阶段对应计算复杂度的范围为[Cmin,Cmax];
(32)将各阶段解码计算复杂度值按照预设的区间划分,区间个数和大小根据GPU计算能力确定,计算能力强,同时可并行的宏块多,则划分区间少,反之则多;
(33)每个宏块对应解码计算复杂度值映射到相应区间,区间内部实现宏块级并行,区间之间实现多内核函数并行;
(4)将步骤(13)中的熵解码和重排序的上下文传递到GPU存储区,结合步骤(3)中实现的调度方法,在GPU上实现反量化、反变换、运动补偿或帧内预测、去块滤波的并行化;
(41)将每一个宏块上下文信息拷贝到GPU全局存储区,变换矩阵、查找表常量信息拷贝到常量存储区,减少频繁访存时间;使用异步传输,实现计算和数据传输的并行执行;
(42)将步骤(13)中重排序之后的数据进行反量化操作,得到每个宏块频域的残差系数;由于反量化过程中宏块之间没有依赖关系,根据算法的特性以及每个宏块反量化的复杂度值,将可并行宏块进行分块,多内核函数并行执行,内核函数内部以像素为粒度实现全并行;
(43)将步骤(42)得到的频域的残差系数通过反变换,得到每个宏块时域的残差系数;
(44)将步骤(43)得到的残差系数通过运动补偿或帧内预测,得到原始宏块的像素值。运动补偿或帧内预测在保证宏块之间依赖关系的前提下,同样原理实现并行解码。
(45)将步骤(44)得到的原始像素值进行滤波,去除块效应,得到最终输出的图像;由于去块滤波每个宏块的复杂度是接近的,因此这一过程的并行不进行调度,而是采用单内核函数,在满足宏块依赖的前提下实现并行;
(5)将GPU上完成解码的当前帧拷贝回主机内存,同时存放在参考帧的缓冲区中,作为解码下一帧的参考帧。
2.根据权利要求1所述的计算复杂度感知的视频解码宏块级并行调度方法,其特征在于,所述步骤(12)中的重排序是具体为:反zig-zag扫描。
3.根据权利要求1或2所述的计算复杂度感知的视频解码宏块级并行调度方法,其特征在于,所述步骤(44)具体为:将步骤(43)得到的残差系数通过运动补偿或帧内预测,得到原始宏块的像素值,其中宏块头信息中的宏块类型(mb_type),可确定宏块编码类型是帧间或者帧内,如果是帧间模式,则通过运动补偿得到原始像素值,如果是帧内模式,则通过帧内预测得到原始像素值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510937350.5A CN105491377B (zh) | 2015-12-15 | 2015-12-15 | 一种计算复杂度感知的视频解码宏块级并行调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510937350.5A CN105491377B (zh) | 2015-12-15 | 2015-12-15 | 一种计算复杂度感知的视频解码宏块级并行调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105491377A true CN105491377A (zh) | 2016-04-13 |
CN105491377B CN105491377B (zh) | 2018-09-04 |
Family
ID=55678050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510937350.5A Expired - Fee Related CN105491377B (zh) | 2015-12-15 | 2015-12-15 | 一种计算复杂度感知的视频解码宏块级并行调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105491377B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105898321A (zh) * | 2016-04-29 | 2016-08-24 | 珠海全志科技股份有限公司 | 运动补偿方法及装置、hevc解码方法及设备 |
CN106454383A (zh) * | 2016-06-01 | 2017-02-22 | 上海魅视数据科技有限公司 | 一种高倍率数字视频压缩处理系统 |
CN106485088A (zh) * | 2016-10-20 | 2017-03-08 | 上海览海在线健康管理有限公司 | 对在线问诊记录进行保存的方法及系统 |
CN107231558A (zh) * | 2017-05-23 | 2017-10-03 | 江苏火米互动科技有限公司 | 一种基于cuda的h.264并行编码器的实现方法 |
CN107241598A (zh) * | 2017-06-29 | 2017-10-10 | 贵州电网有限责任公司 | 一种针对多路h.264视频会议的GPU解码方法 |
CN107465929A (zh) * | 2017-07-21 | 2017-12-12 | 山东大学 | 基于hevc的dvfs控制方法、系统、处理器及存储设备 |
CN107729354A (zh) * | 2017-08-30 | 2018-02-23 | 晶晨半导体(上海)股份有限公司 | 一种图片排序方法及系统 |
CN110519599A (zh) * | 2019-08-22 | 2019-11-29 | 北京数码视讯软件技术发展有限公司 | 一种基于分布式分析的视频编码方法和装置 |
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN112365520A (zh) * | 2020-06-16 | 2021-02-12 | 公安部第三研究所 | 一种基于视频大数据资源效能测评的行人目标实时追踪系统及方法 |
CN112752106A (zh) * | 2019-10-29 | 2021-05-04 | 北京新唐思创教育科技有限公司 | 视频图像帧的编码控制方法、装置及计算机存储介质 |
CN114035679A (zh) * | 2021-10-26 | 2022-02-11 | 浙江大学 | 一种可动态重组的脑神经信号并行解码方法和装置 |
CN116600129A (zh) * | 2023-07-17 | 2023-08-15 | 芯动微电子科技(珠海)有限公司 | 一种优化视频解码带宽的方法、系统及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104616243A (zh) * | 2015-01-20 | 2015-05-13 | 北京大学 | 一种高效的gpu三维视频融合绘制方法 |
US20150179149A1 (en) * | 2013-12-20 | 2015-06-25 | Qualcomm Incorporated | Dynamic gpu & video resolution control using the retina perception model |
-
2015
- 2015-12-15 CN CN201510937350.5A patent/CN105491377B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150179149A1 (en) * | 2013-12-20 | 2015-06-25 | Qualcomm Incorporated | Dynamic gpu & video resolution control using the retina perception model |
CN104616243A (zh) * | 2015-01-20 | 2015-05-13 | 北京大学 | 一种高效的gpu三维视频融合绘制方法 |
Non-Patent Citations (2)
Title |
---|
DUNG VU: "AN ADAPTIVE DYNAMIC SCHEDULING SCHEME FOR H.264/AVC DECODING ON", 《2012 IEEE INTERNATIONAL CONFERENCE ON MULTIMEDIA AND EXPO》 * |
田婷: "视频解码计算复杂度的线性建模理论及在线预测方法", 《计算机学报》 * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105898321A (zh) * | 2016-04-29 | 2016-08-24 | 珠海全志科技股份有限公司 | 运动补偿方法及装置、hevc解码方法及设备 |
CN105898321B (zh) * | 2016-04-29 | 2019-04-05 | 珠海全志科技股份有限公司 | 运动补偿方法及装置、hevc解码方法及设备 |
CN106454383A (zh) * | 2016-06-01 | 2017-02-22 | 上海魅视数据科技有限公司 | 一种高倍率数字视频压缩处理系统 |
CN106485088B (zh) * | 2016-10-20 | 2019-02-12 | 上海览海在线健康管理有限公司 | 对在线问诊记录进行保存的方法及系统 |
CN106485088A (zh) * | 2016-10-20 | 2017-03-08 | 上海览海在线健康管理有限公司 | 对在线问诊记录进行保存的方法及系统 |
CN107231558B (zh) * | 2017-05-23 | 2019-10-22 | 江苏火米互动科技有限公司 | 一种基于cuda的h.264并行编码器的实现方法 |
CN107231558A (zh) * | 2017-05-23 | 2017-10-03 | 江苏火米互动科技有限公司 | 一种基于cuda的h.264并行编码器的实现方法 |
CN107241598A (zh) * | 2017-06-29 | 2017-10-10 | 贵州电网有限责任公司 | 一种针对多路h.264视频会议的GPU解码方法 |
CN107241598B (zh) * | 2017-06-29 | 2020-03-24 | 贵州电网有限责任公司 | 一种针对多路h.264视频会议的GPU解码方法 |
CN107465929A (zh) * | 2017-07-21 | 2017-12-12 | 山东大学 | 基于hevc的dvfs控制方法、系统、处理器及存储设备 |
CN107729354A (zh) * | 2017-08-30 | 2018-02-23 | 晶晨半导体(上海)股份有限公司 | 一种图片排序方法及系统 |
CN107729354B (zh) * | 2017-08-30 | 2021-08-10 | 晶晨半导体(上海)股份有限公司 | 一种图片排序方法及系统 |
CN110519599B (zh) * | 2019-08-22 | 2021-05-14 | 北京数码视讯软件技术发展有限公司 | 一种基于分布式分析的视频编码方法和装置 |
CN110519599A (zh) * | 2019-08-22 | 2019-11-29 | 北京数码视讯软件技术发展有限公司 | 一种基于分布式分析的视频编码方法和装置 |
CN112752106B (zh) * | 2019-10-29 | 2022-02-18 | 北京新唐思创教育科技有限公司 | 视频图像帧的编码控制方法、装置及计算机存储介质 |
CN112752106A (zh) * | 2019-10-29 | 2021-05-04 | 北京新唐思创教育科技有限公司 | 视频图像帧的编码控制方法、装置及计算机存储介质 |
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN112365520A (zh) * | 2020-06-16 | 2021-02-12 | 公安部第三研究所 | 一种基于视频大数据资源效能测评的行人目标实时追踪系统及方法 |
CN112365520B (zh) * | 2020-06-16 | 2024-01-30 | 公安部第三研究所 | 一种基于视频大数据资源效能测评的行人目标实时追踪系统及方法 |
CN114035679A (zh) * | 2021-10-26 | 2022-02-11 | 浙江大学 | 一种可动态重组的脑神经信号并行解码方法和装置 |
CN114035679B (zh) * | 2021-10-26 | 2023-11-17 | 浙江大学 | 一种可动态重组的脑神经信号并行解码方法和装置 |
CN116600129A (zh) * | 2023-07-17 | 2023-08-15 | 芯动微电子科技(珠海)有限公司 | 一种优化视频解码带宽的方法、系统及装置 |
CN116600129B (zh) * | 2023-07-17 | 2023-10-20 | 芯动微电子科技(珠海)有限公司 | 一种优化视频解码带宽的方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105491377B (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105491377A (zh) | 一种计算复杂度感知的视频解码宏块级并行调度方法 | |
CN102547289B (zh) | 基于gpu并行实现的快速运动估计方法 | |
CN103227919B (zh) | 一种基于多核处理器Tilera的SVC编码方法 | |
CN102625108B (zh) | 一种基于多核处理器实现的h.264解码方法 | |
CN107277505B (zh) | 基于软硬件分区的avs-2视频解码器装置 | |
CN101252695A (zh) | 一种视频编码器及其帧内预测模式选择方法 | |
CN102572430B (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
Roh et al. | Prediction complexity-based HEVC parallel processing for asymmetric multicores | |
Xiao et al. | A fine-grained parallel implementation of a H. 264/AVC encoder on a 167-processor computational platform | |
CN102238383B (zh) | 用于视频编解码器的多总线体系结构 | |
US20190281316A1 (en) | High efficiency video coding method and apparatus, and computer-readable storage medium | |
CN105516728A (zh) | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 | |
CN105592314A (zh) | 并行解码方法和并行解码装置 | |
Baik et al. | Analysis and parallelization of H. 264 decoder on cell broadband engine architecture | |
CN105100799B (zh) | 一种减少hevc编码器中帧内编码时延的方法 | |
CN102595137B (zh) | 基于图像像素块行/列流水线的快速模式判决装置和方法 | |
Chen et al. | Mapping of h. 264/avc encoder on a hierarchical chip multicore dsp platform | |
Kim et al. | Hybrid partitioned H. 264 full high definition decoder on embedded quad-core | |
Gudumasu et al. | Software-based versatile video coding decoder parallelization | |
Díaz-Honrubia et al. | Low-complexity heterogeneous architecture for H. 264/HEVC video transcoding | |
CN103327340A (zh) | 一种整数搜索方法及装置 | |
Yan et al. | Parallel deblocking filter for H. 264/AVC implemented on Tile64 platform | |
CN103780914A (zh) | 环路滤波加速电路及环路滤波方法 | |
CN102420989A (zh) | 帧内预测方法和装置 | |
Wang et al. | Optimizing Technology in Video Coding and Decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180904 Termination date: 20191215 |