CN109495743A - 一种基于异构多处理平台的并行化视频编码方法 - Google Patents

一种基于异构多处理平台的并行化视频编码方法 Download PDF

Info

Publication number
CN109495743A
CN109495743A CN201811361079.5A CN201811361079A CN109495743A CN 109495743 A CN109495743 A CN 109495743A CN 201811361079 A CN201811361079 A CN 201811361079A CN 109495743 A CN109495743 A CN 109495743A
Authority
CN
China
Prior art keywords
cpu
module
block
video coding
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
Application number
CN201811361079.5A
Other languages
English (en)
Other versions
CN109495743B (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.)
Shanghai University of Electric Power
University of Shanghai for Science and Technology
Original Assignee
Shanghai University of Electric Power
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 Shanghai University of Electric Power filed Critical Shanghai University of Electric Power
Priority to CN201811361079.5A priority Critical patent/CN109495743B/zh
Publication of CN109495743A publication Critical patent/CN109495743A/zh
Application granted granted Critical
Publication of CN109495743B publication Critical patent/CN109495743B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Abstract

本发明涉及一种基于异构多处理平台的并行化视频编码方法,该方法包括以下步骤:1、将编码器分为可变块运动估计模块、模式决策模块、编码与重建模块、去块滤波模块、分数像素插值模块和熵编码模块;2、基于H.265/HEVC标准,利用GPU处理大小可变块运动估计模块、去块滤波模块和分数像素插值模块,利用多核CPU处理其他模块;3、将视频编码框架设置为两级并行框架,第一级并行为CPU和GPU的并行,第二级并行为多核CPU中的多流水线并行;4、将原始视频图像输入两级并行框架中,获取并行化视频编码。与现有技术相比,本发明具有提高编码处理速度,降低编码复杂度等优点。

Description

一种基于异构多处理平台的并行化视频编码方法
技术领域
本发明涉及视频编码并行化设计技术领域,尤其是涉及一种基于异构多处理平台的并行化视频编码方法。
背景技术
目前视音频的应用越来越广泛,视音频流量、所占存储空间和传输带宽也越来越大,因此对视音频编码的研究也越发显得重要。最新的视频压缩编码标准是HEVC,其主要针对压缩高清、超清和超高清视频设计。HEVC相比H.264/AVC,压缩同样的高清或超高清视频最高能提升一倍的压缩率,同时也使编码时间和编码所需的计算资源急剧上升,编码复杂度也进一步提高。H.265/HEVC的编码块采用了以编码树单元CTU(64×64)为最大划分单元,相对于宏块划分方案,四叉树划分方案更加灵活,编码块的增大使得被分割块的大小种类变得更多,也增加了编码单元的AMP(Asymmetric Motion Partition,不对称划分),使MS(Motion Estimation,运动估计)的模式更加多,选择更加复杂。为了提高编码速率,许多学者进行了研究。虽然算法的改进使得HEVC的编码取得明显的加速效果,但仍然很难得到推广和应用。为此研究人员提出多核处理器,异构多处理计算平台已经成为目前PC乃至嵌入式设备的主要处理器平台。
自HEVC标准提出以来,虽然压缩效率比其前身H.264/AVC有了明显的提高,且最高可节省一半的码率,不过这也伴随着编码复杂度的急剧上升,编码同样的视频所需时间大大提高,致使编码一秒视频需要几小时时间。这样严重阻碍了HEVC标准的推广和应用,为了解决这些问题,学术界提出了各种各样的降低复杂度减少编码时间的方案,虽然取得了一定的成果,但是编码时间还是很长,为解决运动估计复杂度问题,研究人员将视角的注意力转移到了比CPU计算能力更强的GPU(图形处理器)上,基于GPU的并行运动估计算法得到了一定的研究,事实证明,GPU运动估计相对于CPU的运动估计至少快十倍以上,这使得HEVC编码时间有了进一步减少的可能。
近年来,将CPU和GPU整合在一起的异构多核处理器架构变得逐渐流行,其特点是各司其职,CPU处理逻辑运算和任务调度,高并行计算任务在GPU处理。利用PCI-Express将CPU与GPU连接起来,并基于此涌现了OpenCL和CUDA编程模型,方便直接利用C/C++语言编码实现并行计算任务。GPU比CPU拥有更多的计算能力、数据传输带宽以及性能功耗比,较少的数据缓冲和控制单元,因此GPU比CPU更适合计算密集型,高数据并行的计算任务。CUDA(Compute Unified Device Architecture)是目前最为流行的异构多核并行计算架构和编程模型,其整合了CPU和GPU的计算资源于一体,是一种伸缩性很强的编程模型,如图1所示。CUDA对GPU的驱动进行了封装,在上层提供了大量简单易用的API(ApplicationProgramming Interface,应用程序编程接口),使得软件开发人员可以直接利用GPU来做通用计算。然而,现有技术在利用CPU和GPU整合进行基于异构多处理平台的编码控制时,运动估计的耗时和插值的弱同步性限制了不同尺寸块的搜索MV、CU深度决策和PU划分模式决策,且增加了计算机实时应用的计算能力,无法完成有效准确的并行化视频编码。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于异构多处理平台的并行化视频编码方法。
本发明的目的可以通过以下技术方案来实现:
一种基于异构多处理平台的并行化视频编码方法,该方法包括以下步骤:
S1:将编码器分为可变块运动估计模块、模式决策模块、编码与重建模块、去块滤波模块、分数像素插值模块和熵编码模块;
S2:基于H.265/HEVC标准,利用GPU处理大小可变块运动估计模块、去块滤波模块和分数像素插值模块,利用多核CPU处理其他模块;
S3:将视频编码框架设置为两级并行框架,第一级并行为CPU和GPU的并行,第二级并行为多核CPU中的多流水线并行;
S4:将原始视频图像输入两级并行框架中,获取并行化视频编码。
优选地,两级并行框架中设置插值同步单元和WPP同步单元,CPU主流水线采用插值同步单元执行同步并行策略,多核CPU的多条流水线采用WPP同步单元执行同步并行策略。
所述的两级并行框架的具体内容包括:
a)在波前并行中,每帧图像被划分为CTU行,同一CTU行的所有CTU采用同一流水线处理,CTU的上一行的CTU被编码和重建;
b)CPU读取图像帧,并将图像复制到GPU,然后判断是否进行插值同步,若是,则执行下一步,否则,CPU等待插值完成;
c)CPU执行ME,并将执行结果通过GPU启动新的大小可变块运动估计,通过VBSME使ME完成;
d)CPU对线程块进行线程分配,并配置给不同的流水线;
e)CPU对不同流水线判断是否实施WPP同步,若是,则进行下一步的模式决策,否则,等待所有CTU完成;
f)完成模式决策后进行编码与重建,判断当前是否为最后的CTU,若是,则将重建图像复制到GPU,否则,返回WPP同步判断步骤;
g)所有CPU流水线完成一帧图像的重建之后,CPU主流水线控制GPU顺序地异步执行去块滤波和插值步骤,在多核CPU的单条流水线执行熵编码的同时,GPU主流水线执行插值和边界填充任务。
优选地,在CPU主流水线对当前帧启动新的大小可变块运动估计之前,采用插值同步单元保证最后重建帧的边界扩展的分数像素图像已经准备就绪。
优选地,在可变块运动估计中采用全搜索算法和1/4像素精度进行插值处理,具体包括下列步骤:
c1)将运动估计最小块限制为8×8,计算8×8块的SAD;
c2)对其他尺寸块进行SAD计算;
c3)选取最佳IMV;
c4)进行分数像素插值及运动估计。
优选地,在一个CTU进行模式决策之前,采用PU划分进行加速模式决策处理。加速模式决策处理包括下列步骤:
e1)采用HM软件中的SKIP检测和CBF_fast检测算法进行加速,若SKIP和CBF_fast的条件都不满足,则跳到下一步,否则,将CU深度置为4并跳到步骤e5)。
e2)若四个尺寸为N×N的PU的四个MV与四个尺寸为2N×2N的四个MV的最大的差值不大于6,即平均两个PU的MV差距不大于一个半像素距离,则CU以2N×2N大小进行编码,CU深度赋值为4,并跳到e5),否则,执行步骤e3)。
e3)用尺寸为2N×2N的PU和对应的MV进行运动补偿并计算残差块的纹理图案,将一个2N×2N块划分为四个N×N块,2N×2N块的水平边缘参数H和垂直边缘参数V的表达式为:
式中,表示向下取整,即小于*的最大整数。QP_step表示量化步长,N表示N×N块的大小,AV00、AV01、AV10和AV11分别为四个N×N块的像素平均强度;根据H和V,2N×2N块的CU划分决策如下:
if H==V且H==0,表示没有明显的边缘,此时CU以2N×2N大小编码,并置CU深度为4,然后跳到步骤355);
else if H==V且H=!0,表示存在对角边缘,选定PU为N×N,并将CU进一步划分;
else if H>V,表示水平边界比垂直边界明显,选定PU为N×2N,并将CU进一步划分;
else选定PU为2N×N,并将CU进一步划分。
e4)计算PU划分的率失真代价,对比并选择最小的一个。
率失真代价Jpred,SAD的计算公式为:
Jpred,SAD=SA(T)D+λpred*Rpred
式中,Rpred为MVs的近似码率,SA(T)D包括SAD和SATD,SAD为绝对差和,用于整数像素ME,SATD为哈达码变换绝对差和,用于分数像素运动估计,λpred为拉格朗日因子。
e5)检查当前的CU深度是否为4,且所有的四个N×N块是否已经处理完,若是,则执行步骤e6),否则,将CU划分为四个子CU或者处理下一个CU,并跳到步骤e1)。
e6)CTU的模式决策结束。
与现有技术相比,本发明具有以下优点:
(1)本发明将编码器分成大小可变块运动估计模块、模式决策模块、编码与重建模块、去块滤波模块、分数像素插值模块和熵编码模块六个部分,采用CPU、GPU并行的异构编码架构,其中,大小可变块运动估计模块、去块滤波模块和分数像素插值模块在GPU中处理,其他模块在多核CPU中处理,在多核CPU中创建多条流水线处理模式决策和编码与重建,同时在CPU中用单条流水线执行熵编码,通过多处理平台进行视频编码,增加了CPU和GPU整合进行基于异构多处理平台的编码处理速度,节约了时间;
(2)本发明在编码过程的运动估计中,将运动估计最小块限制为8×8,降低了编码复杂度;此外,在GPU采用全搜索算法和1/4像素精度插值的运动估计算法,只需对最佳IMV的选择过程计算出每个块的最小SAD的预测块进行插值及分数像素运动估计,并将最后得到的最佳分数像素SAD及FMV保存在global memory中即可完成有效的运动估计,大大节省了计算量,减小了耗时;
(3)本发明采用快速PU划分方案以加速模式决策,可平衡CPU和GPU的工作量,提高HEVC/H.265中CU划分的灵活性,降低模式决策的复杂计算。
附图说明
图1为现有技术中基于异构多处理平台视频编码框架的示意图;
图2为本发明一种基于异构多处理平台的并行化视频编码方法中两级并行编码框架示意图;
图3为任意块SAD生成原理图;
图4(a)为二分之一像素插值示意图;图4(b)为分数像素精度运动估计;
图5为本发明实施例中AV00、AV01、AV10和AV11在2N×2N块中的顺序示意图;
图6为本发明中快速模式决策算法的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
CUDA整合了CPU和GPU的计算资源于一体,是一种伸缩性很强的编程模型。CUDA对GPU的驱动进行了封装,在上层提供了大量简单易用的API(Application ProgrammingInterface,应用程序编程接口),使得软件开发人员可以直接利用GPU来做通用计算。
空间上相邻块具有很强相关性,不适合在GPU上并行处理。时间上相邻块也具有很强的相关性,在相邻帧中找到最佳预测块并记录相对运动向量,这就是运动估计,运动估计的预测块来源于已编码的视频帧而不是当前视频帧,因此运动估计很适合在GPU中实现并行处理。变换和量化相对与运动估计来讲,所占用的处理时间有限,并行处理对于加速编码和减少计算时间有限。所以,变换与量化不适合在GPU中并行执行。熵编码过程中不同CTU是相互独立的,但是熵编码过程需要利用各种信息及指令,而GPU有强大的计算能力但并不适合处理各种判断指令,也不能在GPU上并行实现。因此,异构多处理平台的视频编码框架中,由GPU执行运动估计过程,帧内预测、变换与量化、反变换与反量化、熵编码、环路滤波等过程在CPU中执行。
HEVC中,一帧图片能被分为一系列的相互独立的CTU。CTU中的亮度块最大尺寸为64×64,基本编码单元称谓CU(Coding Units)。CU是方形的并且能够将CTU继续划分为8×8的亮度样本。PU(Prediction Units,预测单元)是相应的携带预测处理信息的基本单元,PU可以是方形的也可以不是方形的。每一个CU可以包含一个或者多的PU,并且亮度块最大的PU和CU一样大小,最小的PU为4×8或8×4。因为在不用AMP工具时,一个CTU可以划分为4个CU,并且每个CU有三种划分模式,因此,有12种PU尺寸(从64×64到4×8/8×4)可供选择,这使得对于64×64大小的CTU找到最佳CU深度和PU划分模式组合,需要运动估计次数高达425(5+4×5+16×5+64×5=425)次,所以可变大小块的运动估计(VBSME)成为实时编码的瓶颈。针对不同尺寸块的搜索MV(motion vector,运动向量)、CU深度决策和PU划分模式决策,模式决策过程可以划分为两个阶段:(a)ME(motion estimation,运动估计)和(b)CU深度和PU划分模式决策。第一阶段,找到每个PU对应的最佳的MV,然后用率失真代价函数判断选择最优PU,率失真函数表示为:
Jpred,SAD=SA(T)D+λpred*Rpred
式中,Rpred是MVs的近似码率并且从预估表中获得。SAD(Sum of AbsoluteDifference,绝对差和)用于整数像素ME,同时,SATD(Sum of Absolute TransformedDifference,哈达码变换绝对差和)用于分数像素运动估计。
第二阶段,预估出不同大小CU和PU划分的率失真代价,并选择最小的率失真代价组合。率失真代价表示为:
Jmode=SSD+λmode*Rmode
式中,SSD是原始块和重建块之间的平方差和,Rmode表示编码PU所需的码率,它包括表示编码模式和相应的关联信息(如运动矢量、参考帧索引以及残差信号变换系数水平所需的比特)所需的比特,λpred和λmode是拉格朗日因子。
为了计算每个PU的λmode,重建和熵编码的所有语法十分必要。如果所有254个不同大小PU组合都计算一遍,这种复杂性超出了普通计算机实时应用的计算能力。
根据上述理论,以基于CUDA架构的单路视频编码并行优化的方案为例,进一步说明本发明一种基于异构多处理平台的并行化视频编码方法的实现过程。
步骤一、将编码器分为六个模块,包括大小可变块运动估计模块、模式决策模块、编码与重建模块、去块滤波模块、分数像素插值模块和熵编码模块。
步骤二、将大小可变块运动估计模块、去块滤波模块和分数像素插值模块在GPU中处理,其他模块在多核CPU中处理。
步骤三、在CPU处理中设置插值同步单元和WPP(Wavefront ParallelProcessing,波前并行处理)同步单元。
步骤四、将框架设置为两级并行,第一级并行是CPU和GPU的并行,第二级并行是多核CPU中的多流水线并行,多核CPU的多条流水线并行化基于WPP并行策略。
如图2所示,两级并行框架的具体内容为:
1)在波前并行中,每帧图像被划分为CTU(Coding Tree Units,编码树单元)行,在同一CTU行的所有CTU将用同一流水线处理。只有CTU的上一行的CTU被编码和重建,来自不同CTU行的CTU才能够被同时处理。这个条件由WPP同步单元保证。
2)CPU读取图像帧,并将图像复制到GPU,然后判断是否进行插值同步,若是,则执行下一步,否则,CPU等待插值完成;
3)CPU执行ME,并将执行结果通过GPU启动新的VBSME(motion estimation withvariable block size,大小可变块运动估计)任务,通过VBSME使ME完成。
4)CPU对线程块进行线程分配,并配置给不同的流水线。
5)CPU对不同流水线判断是否实施WPP同步,若是,则进行下一步的模式决策,否则,等待所有CTU完成。
6)模式决策后进行编码与重建,并判断当前是否为最后的CTU,若是,则将重建图像复制到GPU,否则,返回WPP同步判断步骤。
7)所有CPU流水线完成一帧图像的重建之后,CPU主流水线(OpenMP中主线程的编号为0)控制GPU顺序地异步执行去块滤波和插值。在CPU执行熵编码的同时,GPU主流水线插值和边界填充任务。在CPU主流水线对当前帧启动新的VBSME(motion estimation withvariable block size,大小可变块运动估计)任务之前,插值同步单元保证最后重建帧的边界扩展的分数像素图像已经准备就绪。
在上述运动估计中,本发明将将运动估计最小块限制为8×8,因此一个CTU能分为64个8×8块。在GPU中的基于运动估计算法,采用全搜索算法和1/4像素精度插值。算法分为五部分:①8×8块的SAD计算;②其他尺寸块的SAD计算;③最佳IMV(Integer MotionVector,整数运动矢量)的选择;④分数像素插值及运动估计。下面对各步分别说明。
(1)8×8块SAD计算
视频编码最重要的部分就是运动估计,运动估计的好坏直接影响到编码效率。在不使用AMP的工具的情况下,HEVC的PU有从64×64/8×4和4×8有12种划分模式,而本发明为了进一步降低编码复杂度选取8×8块为最小的PU,并以此大小PU为基础进行SAD的计算。如图3所示,本发明将运动估计搜索范围设定为32×32,因此对于每个8×8块有1024个候选运动向量。
进行运动估计时,将当前帧和参考帧存入纹理存储器中,以256条线程为一个线程块创建线程块,即创建线程块的维度是dim3block(16,16),则在GPU中并行处理W帧xH帧的视频所需的线程块数量为:
其中,Block_Num表示线程块数量,Search_R表示搜索区间,Frame_W×Frame_H表示帧数。为提高线程的执行效率及减少处理时间,降低内存访问次数是十分必要的,一个线程块内所有线程共享内存是共用的,且线程访问共享内存的速度比纹理存储器的速度快的多,因此,为了降低内存访问次数,在线程块计算同一个8×8块的SAD之前,将编码块从纹理存储器中读入线程块的共享内存中。处理每个8×8编码块需用4个线程块。处理完一帧图像后,全部的8×8块的SAD被保存到GPU的global memory(全局存储器)中,以供后续处理。
(2)其他尺寸块的SAD计算
计算出8×8块的SAD之后,其他相对较大尺寸块可以由相应的8×8块的SAD相加得到。8×16或16×8块的SAD可以由其对应的两个8×8块的SAD相加得到,16×16块的SAD可以有相应的四个8×8块SAD相加得到,更大的块的SAD依次生成。在线程设计方面,同一个CTU的其他105个SAD用同一个线程进行计算,同(1)一样,本步骤设计256个线程/线程块,所以需要设计的线程块数量为:
(3)最佳IMV的选择
可变大小块生成完成之后,由于每个块对应1024个SAD值,因此最佳的IMV选择需要通过比较判决出最小的SAD,最小的SAD对应的IMV就是最佳的IMV。由于每个线程块只包含256个线程,而每种块有1024个SAD值,如果用两两相比较的方法找最小的SAD,则第一次比较1024个SAD需要512个线程,即两个线程块,而线程块之间通信消耗时间比较长,这是不可接受的,因此,采用一个线程块处理1024个SAD,第一步给线程块中256个线程每个线程分配4个SAD,并算出最小的SAD及对应的运动向量。为实现快速存取,将得出的256个SAD及MV存入shared memory(共享内存)中。第二步给256个SAD值分配128线程,每个线程比较两个SAD,将获得的64个SAD及MV存入shared memory中,依次迭代计算8次,最后得出最小的SAD及其对应的MV,并将它们存入global memory中。
(4)分数像素插值及运动估计
和H.264/AVC标准一样,H.265/HEVC标准也支持四分之一像素精度的分数像素运动估计,但是H.265/HEVC二分之一像素插值采用的是8抽头滤波器,四分之一像素插值时采用的是7抽头滤波器,相对于H.264/AVC的6抽头和2抽头滤波器,H.265/HEVC插值更加精确。
由于HEVC二分之一像素插值需在四分之一插值完成后进行,所以在GPU的插值过程分为两个过程插值完成,第一个过程对视频帧进行二分之一插值,然后将插值完成的帧存入global memory;第二个过程将第一个过程插值完成的帧从global memory中取出,并进行四分之一插值,插值完成后也存入global memory,用以分数像素运动估计。GPU二分之一像素插值中每个整数像素周围的三个二分之一像素由线程块中的单个线程完成,如图4(a)所示,圆形表示整数像素,方块代表二分之一像素,这时线程完成的左边、左下以及下方(4、6、7像素)的三个二分之一像素插值。四分之一像素插值同二分之一像素插值过程。
从插值过程可知,经过插值后每个整数像素周围有24个分数像素,故分数像素运动估计只需在整数像素周围的24个分数像素进行即可。创建具有24个线程的线程块就能满足分数像素运动估计,分数像素运动估计过程如图4(b)所示,图中T0~T23即创建的24个线程的线程块以满足分数像素运动估计(经过插值后每个整数像素周围有24个分数像素,故分数像素运动估计只需在整数像素周围的24个分数像素进行即可)。分数SAD比较过程类于过程(3),最后获取最佳的FMV(fractional-pixel motion vector,分数像素运动向量)及对应的SAD,并存于global memory(共享存储区)中。
本阶段只需对(3)过程计算出每个块的最小SAD的预测块进行插值及分数像素运动估计,并将最后得到的最佳分数像素SAD及FMV保存在global memory中。
经上述过程在GPU中处理完一帧视频并将每种块的最小SAD及其对应MV传送到CPU内存中,最后在CPU中用WPP并行处理找出CTU最佳的划分模式。
为了计算模式决策的率失真代价,PU的重建和熵编码的所有语法元素是必不可少的。HEVC/H.265中CU划分的灵活性使得模式决策变得异常复杂,模式决策也成为并行编码框架的瓶颈,为了平衡CPU和GPU的工作量,本发明提出了一个快速PU划分方案以加速模式决策。在一个CTU进行模式决策之前,10种PU的所有MV已经准备就绪,PU的划分决策能够灵活的使用运动信息,加速模式决策的方案包括下列步骤:
第一步:加速算法采用HM软件中的SKIP检测和CBF_fast检测算法,若SKIP和CBF_fast的条件都不满足,跳到第二步。否则,将CU深度置为4(CU depth=4)并跳到第五步。
第二步:如果四个尺寸为PART_N×N的PU的四个MV和尺寸为PART_2N×2N的MV最大的差值不大于6,即平均两个PU的MV差距不大于一个半像素距离,则CU以PART_2N×2N大小编码,CU深度赋值为4,并跳到第五步。否则,处理第三步。
第三步:用尺寸为PART_2N×2N的PU和对应的MV进行运动补偿并计算残差块的纹理图案。为了计算纹理图案,将一个2N×2N块划分为四个N×N块。AV00、AV01、AV10和AV11表示N×N块的像素平均强度,如图5所示。本发明还引入了两个边缘特征参数:水平边缘参数H和垂直边缘参数V。
式中,表示向下取整,即小于*的最大整数。QP_step表示量化步长,N表示PART_N×N块的大小。如图6所示,根据H和V,2N×2N块的CU划分决策内容包括:
if H==V且H==0,表示没有明显的边缘,如表1所示,此时CU以PART_2N×2N大小编码,并置CU深度为4,然后跳到第五步;
else if H==V且H=!0,表示存在对角边缘,如表1所示,选定PU为PART_N×N,并将CU进一步划分;
else if H>V,表示水平边界比垂直边界明显,如表1所示,选定PU为PART_N×2N,并将CU进一步划分;
else选定PU为PART_2N×N,并将CU进一步划分。
第四步:计算出率失真代价,对比并选择最小的一个。
第五步:检查当前的CU深度是否为4并且所有的4个N×N块是否已经处理完,若是,处理第六步,否则,将CU划分为4个子CU或者处理下一个CU,并跳到第一步。
第六步:CTU的模式决策结束。
在上述加速模式决策中,首先判定的是64×64CTU,若CTU满足第一步或第二步或者第三步的第一种情况(if H==V且H==0),则直接以CTU编码,否则,先计算其率失真代价并保存,并且进一不划分CTU为4个32×32CU,置CU深度为2,然后检查现在的CU深度是否为4并且所有的4个32×32块是否已经处理完。若不满足条件,则以光栅扫描顺序处理相应的CU,并判定其是否满足第一步或第二步或者第三步的第一种情况(if H==V且H==0),若满足条件,则此CU直接编码,否则,计算其率失真代价并与前一个过程相的代价比较,保留最小的代价,然后进一步划分32×32CU为四个16×16CU,并置CU深度为3,然后检查现在的CU深度是否为4并且所有的4个16×16块是否已经处理完,后面过程依次类推,直至一个CTU决策完成。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种基于异构多处理平台的并行化视频编码方法,其特征在于,该方法包括以下步骤:
步骤1:将编码器分为可变块运动估计模块、模式决策模块、编码与重建模块、去块滤波模块、分数像素插值模块和熵编码模块;
步骤2:基于H.265/HEVC标准,利用GPU处理大小可变块运动估计模块、去块滤波模块和分数像素插值模块,利用多核CPU处理其他模块;
步骤3:将视频编码框架设置为两级并行框架,第一级并行为CPU和GPU的并行,第二级并行为多核CPU中的多流水线并行;
步骤4:将原始视频图像输入两级并行框架中,获取并行化视频编码。
2.根据权利要求1所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,两级并行框架中设置插值同步单元和WPP同步单元,CPU主流水线采用插值同步单元执行同步并行策略,多核CPU的多条流水线采用WPP同步单元执行同步并行策略。
3.根据权利要求2所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,所述的两级并行框架的具体内容为:
31)在波前并行中,每帧图像被划分为CTU行,同一CTU行的所有CTU采用同一流水线处理,CTU的上一行的CTU被编码和重建;
32)CPU读取图像帧,并将图像复制到GPU,然后判断是否进行插值同步,若是,则执行下一步,否则,CPU等待插值完成;
33)CPU执行ME,并将执行结果通过GPU启动新的大小可变块运动估计,通过VBSME使ME完成;
34)CPU对线程块进行线程分配,并配置给不同的流水线;
35)CPU对不同流水线判断是否实施WPP同步,若是,则进行下一步的模式决策,否则,等待所有CTU完成;
36)完成模式决策后进行编码与重建,判断当前是否为最后的CTU,若是,则将重建图像复制到GPU,否则,返回WPP同步判断步骤;
37)所有CPU流水线完成一帧图像的重建之后,CPU主流水线控制GPU顺序地异步执行去块滤波和插值步骤,在多核CPU的单条流水线执行熵编码的同时,GPU主流水线执行插值和边界填充任务。
4.根据权利要求3所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,在CPU主流水线对当前帧启动新的大小可变块运动估计之前,采用插值同步单元保证最后重建帧的边界扩展的分数像素图像已经准备就绪。
5.根据权利要求4所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,在可变块运动估计中采用全搜索算法和1/4像素精度进行插值处理。
6.根据权利要求5所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,采用全搜索算法和1/4像素精度进行插值处理包括下列步骤:
331)将运动估计最小块限制为8×8,计算8×8块的SAD;
332)对其他尺寸块进行SAD计算;
333)选取最佳IMV;
334)进行分数像素插值及运动估计。
7.根据权利要求6所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,在一个CTU进行模式决策之前,采用PU划分进行加速模式决策处理。
8.根据权利要求7所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,加速模式决策处理包括下列步骤:
351)采用HM软件中的SKIP检测和CBF_fast检测算法进行加速,若SKIP和CBF_fast的条件都不满足,则跳到下一步,否则,将CU深度置为4并跳到步骤355);
352)若四个尺寸为N×N的PU的四个MV与四个尺寸为2N×2N的四个MV的最大的差值不大于6,即平均两个PU的MV差距不大于一个半像素距离,则CU以2N×2N大小进行编码,CU深度赋值为4,并跳到355),否则,执行步骤353):
353)用尺寸为2N×2N的PU和对应的MV进行运动补偿并计算残差块的纹理图案,将一个2N×2N块划分为四个N×N块,2N×2N块的水平边缘参数H和垂直边缘参数V的表达式为:
式中,表示向下取整,QP_step表示量化步长,N表示N×N块的大小,AV00、AV01、AV10和AV11分别为四个N×N块的像素平均强度;根据H和V,2N×2N块的CU划分决策如下:
if H==V且H==0,表示没有明显的边缘,此时CU以2N×2N大小编码,并置CU深度为4,然后跳到步骤355);
else if H==V且H=!0,表示存在对角边缘,选定PU为N×N,并将CU进一步划分;
else ifH>V,表示水平边界比垂直边界明显,选定PU为N×2N,并将CU进一步划分;
else选定PU为2N×N,并将CU进一步划分;
354)计算PU划分的率失真代价,对比并选择最小的一个;
355)检查当前的CU深度是否为4,且所有的四个N×N块是否已经处理完,若是,则执行步骤356),否则,将CU划分为四个子CU或者处理下一个CU,并跳到步骤351);
356)CTU的模式决策结束。
9.根据权利要求8所述的一种基于异构多处理平台的并行化视频编码方法,其特征在于,率失真代价Jpred,SAD的计算公式为:
Jpred,SAD=SA(T)D+λpred*Rpred
式中,Rpred为MVs的近似码率,SA(T)D包括SAD和SATD,SAD为绝对差和,用于整数像素ME,SATD为哈达码变换绝对差和,用于分数像素运动估计,λpred为拉格朗日因子。
CN201811361079.5A 2018-11-15 2018-11-15 一种基于异构多处理平台的并行化视频编码方法 Active CN109495743B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811361079.5A CN109495743B (zh) 2018-11-15 2018-11-15 一种基于异构多处理平台的并行化视频编码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811361079.5A CN109495743B (zh) 2018-11-15 2018-11-15 一种基于异构多处理平台的并行化视频编码方法

Publications (2)

Publication Number Publication Date
CN109495743A true CN109495743A (zh) 2019-03-19
CN109495743B CN109495743B (zh) 2021-10-08

Family

ID=65695012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811361079.5A Active CN109495743B (zh) 2018-11-15 2018-11-15 一种基于异构多处理平台的并行化视频编码方法

Country Status (1)

Country Link
CN (1) CN109495743B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109982095A (zh) * 2019-03-20 2019-07-05 南宁师范大学 基于cnn与gep的分形图像压缩编码方法
CN110113608A (zh) * 2019-04-30 2019-08-09 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN112385225A (zh) * 2019-09-02 2021-02-19 北京航迹科技有限公司 用于改进图像编码的方法和系统
CN114827614A (zh) * 2022-04-18 2022-07-29 重庆邮电大学 一种实现lcevc视频编码优化的方法
CN115759260A (zh) * 2022-11-17 2023-03-07 北京百度网讯科技有限公司 深度学习模型的推理方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497550A (zh) * 2011-12-05 2012-06-13 南京大学 H.264编码中运动补偿插值的并行加速方法及装置
CN104869398A (zh) * 2015-05-21 2015-08-26 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
US20170150181A1 (en) * 2015-11-20 2017-05-25 Nvidia Corporation Hybrid Parallel Decoder Techniques
CN108449603A (zh) * 2018-03-22 2018-08-24 南京邮电大学 基于多核平台多层次任务级与数据级并行的hevc解码方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497550A (zh) * 2011-12-05 2012-06-13 南京大学 H.264编码中运动补偿插值的并行加速方法及装置
CN104869398A (zh) * 2015-05-21 2015-08-26 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
US20170150181A1 (en) * 2015-11-20 2017-05-25 Nvidia Corporation Hybrid Parallel Decoder Techniques
CN108449603A (zh) * 2018-03-22 2018-08-24 南京邮电大学 基于多核平台多层次任务级与数据级并行的hevc解码方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
陈曦蕾: "《高效视频编码算法的CUDA优化》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
马爱迪: "《基于CPU+GPU混合平台的HEVC并行解码器》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109982095A (zh) * 2019-03-20 2019-07-05 南宁师范大学 基于cnn与gep的分形图像压缩编码方法
CN110113608A (zh) * 2019-04-30 2019-08-09 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN110113608B (zh) * 2019-04-30 2022-12-16 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN112385225A (zh) * 2019-09-02 2021-02-19 北京航迹科技有限公司 用于改进图像编码的方法和系统
CN114827614A (zh) * 2022-04-18 2022-07-29 重庆邮电大学 一种实现lcevc视频编码优化的方法
CN114827614B (zh) * 2022-04-18 2024-03-22 重庆邮电大学 一种实现lcevc视频编码优化的方法
CN115759260A (zh) * 2022-11-17 2023-03-07 北京百度网讯科技有限公司 深度学习模型的推理方法、装置、电子设备和存储介质
CN115759260B (zh) * 2022-11-17 2023-10-03 北京百度网讯科技有限公司 深度学习模型的推理方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN109495743B (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
CN109495743A (zh) 一种基于异构多处理平台的并行化视频编码方法
CN104980736B (zh) 对视频编码的方法和设备以及对视频解码的方法和设备
CN105992008B (zh) 一种在多核处理器平台上的多层次多任务并行解码方法
CN102547289B (zh) 基于gpu并行实现的快速运动估计方法
CN103119945B (zh) 通过帧内预测来对图像进行编码和解码的方法和设备
CN102547296B (zh) 移动估计加速电路、移动估计方法及环路滤波加速电路
CN105491377B (zh) 一种计算复杂度感知的视频解码宏块级并行调度方法
CN103414895A (zh) 一种适用于hevc标准的编码器帧内预测装置及方法
CN105791829B (zh) 一种基于多核平台的hevc并行帧内预测方法
CN101490968A (zh) 用于视频压缩的并行处理装置
CN104539949B (zh) Hevc屏幕编码中基于边缘方向的快速分块的方法及装置
CN107318026A (zh) 视频编码器以及视频编码方法
CN103686165A (zh) 深度图像帧内编解码方法及视频编解码器
JPWO2012086829A1 (ja) 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
CN105245896A (zh) Hevc并行运动补偿方法及装置
CN110419214A (zh) 帧内预测模式搜索方法及装置、视频编码方法及装置以及记录介质
CN105100799B (zh) 一种减少hevc编码器中帧内编码时延的方法
US20100040143A1 (en) Video coding apparatus and method
CN106231307B (zh) 一种图像压缩帧内编码预测方法及其硬件实现
JP6412589B2 (ja) 装置、コンピュータプログラムおよびコンピュータ実装方法
Xiao et al. A multi-grained parallel solution for HEVC encoding on heterogeneous platforms
CN116600134A (zh) 一种适配图形引擎的并行视频压缩方法和装置
Rodríguez-Sánchez et al. Reducing complexity in H. 264/AVC motion estimation by using a GPU
EP3742734A1 (en) Method and device for selecting prediction direction in image encoding, and storage medium
US20230063062A1 (en) Hardware codec accelerators for high-performance video encoding

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant