CN112468821B - 基于hevc核心模块的并行解码方法、装置及介质 - Google Patents

基于hevc核心模块的并行解码方法、装置及介质 Download PDF

Info

Publication number
CN112468821B
CN112468821B CN202011159992.4A CN202011159992A CN112468821B CN 112468821 B CN112468821 B CN 112468821B CN 202011159992 A CN202011159992 A CN 202011159992A CN 112468821 B CN112468821 B CN 112468821B
Authority
CN
China
Prior art keywords
frame
ctu
thread
decoding
intra
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.)
Active
Application number
CN202011159992.4A
Other languages
English (en)
Other versions
CN112468821A (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.)
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing University of Posts and Telecommunications
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 Nanjing University of Posts and Telecommunications filed Critical Nanjing University of Posts and Telecommunications
Priority to CN202011159992.4A priority Critical patent/CN112468821B/zh
Publication of CN112468821A publication Critical patent/CN112468821A/zh
Application granted granted Critical
Publication of CN112468821B publication Critical patent/CN112468821B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • 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/96Tree coding, e.g. quad-tree coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种基于HEVC核心模块融合的并行解码方法、装置及介质。本方法在熵解码模块,利用已有的帧级并行熵解码方法;在环路滤波模块,引入一种区域待滤波边界估计方法及划分方法,并利用缓存,实现基于多线程负载均衡的联合并行环路滤波方法;在像素解码重构模块,利用帧内及帧间CTU之间的数据依赖关系,实现基于CTU的帧内/帧间融合并行方法;最后,在三个模块之间,使用分级线程调度策略,并引入流水线并行技术,实现核心模块融合的并行解码方法。本方法充分利用了多核处理器的并行计算资源,提高了HEVC的实时解码处理效率。

Description

基于HEVC核心模块的并行解码方法、装置及介质
技术领域
本发明涉及数字视频信号编码解码领域,具体涉及一种基于多核处理器平 台的HEVC核心模块融合的并行解码方法。
背景技术
网络传输和存储技术的发展,也带动了视频应用的创新,同时工业生产和 人们日常生活中对2K高清及4K超高清视频的需求日益广泛,这些因素都使得 视频压缩技术面临更大的挑战。为了应对这些挑战,2010年,JCT-VC(视频编码 联合工作组)—由VCEG(视频编码专家组)和动态图像专家组MPEG(动态图像专 家组)组建—开始制定新的视频编码标准,并于2013年4月正式发布,即 H.265/HEVC。这个新的视频编码标准在继承了之前标准的众多优良特性基础上 引入了创新技术,使得其能够保证在编码与H.264/AVC标准相同质量视频的同 时,减少一半的码率,但新技术的引入也使得H.265/HEVC标准运算的复杂度 相比于H.264/AVC大约提升了2到3倍。与此同时,高清、超高清视频包含比 以往标清视频更大规模的数据量,这些问题都给传统单核处理器带来了巨大压 力。目前,单纯依靠增加单核处理器的时钟频率来提升处理速度的方法已达到 极限,并且这种做法还会使得功耗变得更高。使用多核处理器技术成为解决上 述问题的重要途径。
国内外的学者已经在多核处理器上结合视频编解码标准做出了一些研究。 国际上,在韩国学者Seunghyun Cho和HyunMi Kim发表在2015年的IEEE Transactions onmultimedia上的论文“Efficient In-Loop Filtering Across Tile Boundaries forMulti-Core HEVC Hardware Decoders with 4K/8K-UHD Video Applications”中,结合多核HEVC硬件解码器提出了一种控制环路滤波的方法。 该方法允许在跨越Tile边界时,解码器的内核继续处理下一个编码树单元 (CTU),而无需等待其他解码器完成对其他Tile中相邻CTU的ILF处理。 Mauriocio Alvarez-Mesa,Chi Ching Chi等人在发表于2012年的IEEETransactions on circuits and systems for video technology的论文“ParallelScalability and Efficiency of HEVC Parallelization Approaches”中,在一个12核,运行于3.33GHz 的平台上比较了Tile、WPP和OWF在并行处理时的表现,实验结果显示Tile的性能略高于WPP,在12个核上,对所有给出的分辨率视频,解码速度平均提 高了7%。OWF有着更高的性能,平均比Tile高28%。HyunMi Kim等人在发表 的论文“An EfficientArchitecture of In-Loop Filters for Multicore Scalable HEVC HardwareDecoders”(2018)提出一种基于多核平台的高效环路滤波(ILF)方 案,解决了多个处理单元间的数据依赖问题,并能够灵活地对多个图像区域进 行滤波。国内学者也提出了一些多核平台的解码方法。大连理工大学信息与通 信工程学院的马爱迪等(2014年)提出了基于CPU+GPU混合平台的HEVC并 行解码器,采用CUDA硬件平台,且利用硬件优势完成系统优化。南京邮电大 学图像处理与图像通信实验室的方狄(2015年)提出了基于Tilera多核处理器的HEVC多层次并行解码方法,实现了包括帧级CABAC并行熵解码,基于CTU 行的并行像素解码重构和CTU行级并行去方块滤波在内的三种并行方案,降低 了模块间的解码延迟。同实验室的韩峰(2018年)提出基于Tilera多核处理器 的任务级与数据级相结合的HEVC并行解码技术,将HEVC解码流程划分成码 流读取,熵解码解析,像素解码重构,去方块滤波,SAO等多个环节,采用流 水线方式实现各环节间的并行处理,实现任务级与数据级的结合。同实验室的 张文祥(2019年)提出了细粒度多层次并行解码方案,进一步减少了系统整体 延迟,并且实现了在Tilera平台上同时处理两路视频流的实时解码,使多核资源 得到更加充分的利用。
前述学者提出的基于多核平台的HEVC并行解码研究成果虽然已经对多核 并行编解码方案做出了很大改进,但是解码效率上依然存在一些可以改进之处。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于HEVC核心模块 融合的并行解码方法、装置及介质,解决在保证解码图像质量的前提下,进一 步提高并行解码效率的技术问题。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种基于HEVC核心模块融合的并行解码方法, 包括以下步骤:
步骤1:主线程进行初始化操作,包括初始化HEVC解码器,申请寄存器 单元,初始化缓存,初始化解码任务队列,置空任务队列;
步骤2:读入HEVC编码的序列码流,调用网络适配层NAL解析函数,解 析封装的各类参数信息,得到解码所需的profile、level、图像帧类型、图像尺寸 参数和环路滤波参数信息;
步骤3:根据步骤2中网络适配层解析生成的各类参数信息,在线程池中创 建与图像CTU行数相同数量的线程,通过多核函数库将每个线程绑定到不同的 核,保证各个线程能够进行多核并行解码,然后进入解码主循环;
步骤4、主线程对读入的视频流进行解析,若检测到是多个同级别的B帧, 则执行并行熵解码;否则,则调用单个帧级线程串行执行CABAC熵解码;
步骤5、若是步骤4中是对I帧的熵解码,则在一帧熵解码完成后,主线程 负责总体任务调度及根据I帧建立帧内CTU依赖表;帧级线程根据CTU依赖关 系表建立CTU任务队列,并根据任务队列,通知主线程调度帧内线程进行帧内 CTU的并行像素解码重构;帧级线程判断当前帧内CTU单元间的依赖,并通知 主线程更新依赖表,当依赖表中某个CTU单元的所有依赖都完成解码时,该CTU 单元被帧级线程被加入待解码任务队列中,帧级线程通知主线程调度空闲的帧 内线程,解码帧内CTU待解码任务队列中的CTU;根据每个帧内线程的消息判 断该CTU是否解码已结束,若结束,则该帧级会重新回归空闲状态,回到线程 池等待;同时,帧级线程通知主线程更新帧内CTU依赖表;如果被更新的项依 赖变成0,将其加入到帧内CTU待解码任务队列;
步骤6:在帧内线程进行帧内像素重构的过程中,帧级线程判断是否当前帧 至少有两行CTU已完成像素重构,若完成,则检测线程池是否为空,若不为空, 则根据此时完成像素的CTU行数调用若干线程进行基于多线程负载均衡的联合 并行环路滤波,设置最多调取N-1个线程,N是已完成解码的CTU行数,且N 不小于2;若当前线程池为空,则暂时不进行环路滤波,帧级线程持续对线程池 进行监测,直到线程池不为空;
步骤7、帧级线程根据帧内CTU任务队列对帧内线程进行调度,同时对相 邻帧进行判断,进行基于CTU的帧内或帧间融合并行解码;
步骤8、帧级线程判断之前帧是否已经全部完成,若已完成,则根据下一帧 的解码完成情况,通知主线程对尚未完成解码的CTU建立CTU依赖表;帧内 线程对之前已解码完成的区域直接进行环路滤波;若当前帧的下一帧为I帧,则 需等待当前帧全部完成解码,并且从当前帧的下一帧开始,重新执行步骤6-8, 直至当前帧图像解码完成后,执行步骤9;
步骤9、检测视频码流是否全部解码完成,若完成则释放所有的资源;否则, 跳转执行步骤6。
进一步的,所述步骤6中,依据当前帧像素解码重构完成的区域中,CTU 划分方式不同,不同线程所承担的去方块滤波边界数不同;设计区域待滤波边 界统计方法与区域划分方法,将待滤波边界均分给多个线程,从而实现线程间 负载均衡。
进一步的,图像中全部CTU待滤波边界数统计方式如下:
Figure BDA0002743967320000051
Figure BDA0002743967320000052
其中,
Figure BDA0002743967320000053
表示第i帧的去方块滤波边界数目估计,L表示一帧中 CTU的个数;
Figure BDA0002743967320000054
表示第i帧中第j个CTU的滤波计算复杂度估计,Ni,j表示第i帧的第j个CTU中CU的个数;Compcu,也即CU中包含的待滤波边 界数目,可由TU划分信息得到;CTU待滤波边界数的具体对应关系为两个数 组,数组中的数字表示待滤波边界数,数组的元素索引为当前CU的在CTU四 叉树结构中的划分深度:若当前CU是进行了TU划分,数组1为{32,16,8,2},表示CU进行了TU划分,若CU未进行TU划分,数组2为{16,8,4,2}。
进一步的,区域CTU待滤波边界统计结束后,区域划分方式如下:
Figure BDA0002743967320000061
value=m (4)
Key为映射表的键,floor为向下取整函数;m为对应的CTU的索引,Value为 值。
即从一帧图像的第一个CTU开始,为每个CTU的各四叉树叶子节点CU的 亮度分量CB块边界估计做累加,也即求出从第一个CTU到当前CTU的所有 CompCTU之和;然后,通过CTU的最大的估计计算复杂度对这个累加值进行归 一化,归一化的值作为映射表的键Key,m为对应的CTU的索引,把索引作为 值Value,从而形成键值对,对每个CTU均进行该键值对映射计算。
进一步的,所述方法还包括:利用缓存,将CTU边界处去方块滤波后的边 界两侧数据进行缓存,减少去方块滤波与样本自适应补偿间的延迟;整体实现 基于多线程负载均衡的联合并行环路滤波。
进一步的,所述步骤5和所述步骤7中,主线程负责总体任务调度和CTU 依赖表的建立与更新;帧级线程根据CTU依赖表更新帧内CTU任务队列,并 根据该帧内CTU任务队列对帧内线程进行调度,同时对相邻帧类型进行判断, 若当前帧为I帧或P帧,且下一帧为P或B帧,则帧级线程对帧内CTU待解码队 列进行判断,调用帧内线程执行基于CTU的帧内或帧间融合的并行解码,即如 果当前帧中无待解码CTU且存在空闲线程,并且当前帧相对于下一帧的可参考 区域的部分CTU间像素依赖以及运动矢量依赖已满足,空闲线程即可以直接对 下一帧中依赖关系满足的CTU进行解码;若帧级线程检测到当前帧是B帧或P 帧且下一帧为I帧,则等待当前帧全部解码完成,再根据下一个I帧重置CTU 依赖表。
进一步的,利用分级线程调度策略及流水线技术,实现三个并行处理核心 模块的融合;所述三个并行处理核心模块为:熵解码模块、像素解码重构模块 及环路滤波模块。
进一步的,所述利用分级线程调度策略及流水线技术,实现三个并行处理 核心模块的融合的方法包括以下步骤:将线程划分为主线程和工作线程;按照 所负责的任务,将工作线程分为两类,包括负责帧级任务判断的帧级线程以及 负责帧内CTU解码和滤波任务的帧内线程;根据当前任务分配与完成情况,所 述帧级线程和所述帧内线程能够相互动态转化;在实现基于CTU的帧内或帧间 融合并行解码和核心模块融合并行处理时,通过主线程负责总体调度和CTU依 赖表的建立,通过帧级线程判断帧任务的完成情况和帧类型,及时调度空闲帧 内线程去解码数据依赖满足的CTU或者对解码完成的区域进行并行环路滤波, 以实现对相邻帧中的CTU的并行解码。
第二方面,本发明提供了一种基于HEVC核心模块融合的并行解码装置, 包括处理器及存储介质;所述存储介质用于存储指令;所述处理器用于根据所 述指令进行操作以执行第一方面所述方法的步骤。
第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序, 该程序被处理器执行时实现第一方面所述方法的步骤。
与现有技术相比,本发明所达到的有益效果:
1、本发明通过使用多线程设计模式可以提高程序的实时响应能力,改进程 序的设计结构,更有效地发挥处理器的功能,减少对系统资源的频繁调度和切 换,降低了对线程对象创建和销毁的开销。多线程设计中多个线程访问共享资 源时,通过锁定、解锁操作配合条件变量来协调正确的并发操作,从而整体地 提高了系统的解码效率;
2、三个核心模块之间利用分级线程调度策略以及流水线技术实现了融合并 行处理,进一步发挥了多核处理器的高并行计算性能,本发明在并行度提升、 解码速度等方面均有较好性能,实现了对全高清1080P、超高清1600P HEVC视 频流的高效并行解码;利用分级线程调度策略和流水线技术,实现核心模块间 的融合并行处理,减少模块间的延迟,提高并行解码效率及多核资源的利用率。
附图说明
图1是HEVC解码流程框图;
图2是去方块滤波时,一个CTU中CU深度与对应亮度分量CB的滤波边 界示例;
图3是EO模式样本自适应补偿中相邻CTU之间的边界数据依赖关系图;
图4是CTU边界像素样本间的数据依赖关系及相邻CTU边界两侧像素样 本缓存;
图5是图像区域CTU中待滤波边界估计流程图;
图6是联合并行环路滤波算法流程图;
图7是CTU间数据依赖关系图;
图8是基于CTU的帧内/帧间融合并行解码的帧内CTU依赖表及任务调度 图;
图9是基于CTU的帧内/帧间融合不同类型帧间CTU依赖示意图;
图10是环路滤波对于帧间CTU并行解码的限制示意图;
图11是基于CTU的帧内/帧间融合并行解码算法执行时的示意图
图12是基于CTU的帧内/帧间融合的分级线程调度策略图;
图13是核心模块融合的算法流程框图;
图14是核心模块融合的算法和细粒度多层次高效并行解码算法实验对比结 果。
具体实施方式
本发明的基本思想是:利用多核处理器的高并行计算性能,将HEVC解码器 划分为三个核心模块,包括熵解码、像素解码重构以及环路滤波,熵解码模块 引用了已有的帧级并行熵解码方法;像素解码重构模块,考虑结合OWF方法和 细粒度帧内波前并行方法的优点,将细粒度并行扩展至帧间,实现基于CTU的 帧内/帧间融合并行解码方法;环路滤波模块,考虑将图像不同区域的待滤波边 界均分给多个线程,并结合样本自适应补偿对于去方块滤波后相邻CTU边界处 的数据依赖,利用缓存,实现了基于多线程负载均衡的联合并行环路滤波方法。 最后,利用分级线程调度策略和流水线技术,实现核心模块间的融合并行处理, 减少模块间的延迟,提高并行解码效率及多核资源的利用率。
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明 本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例一:
本实施例提供一种基于HEVC核心模块融合的并行解码方法;HEVC是 HighEfficiency Video Coding的缩写,是一种新的视频压缩标准,用来以替代 H.264/AVC编码标准,2013年1月26号,HEVC正式成为国际标准。
本实施例针对多核处理器的超高并行计算性能来实现HEVC的高清及超高清 视频的实时并行解码。
图1所示为HEVC解码器框图:首先对经过编码后的二进制比特流进行熵解 码,从而得到量化系数以及控制信息,再对量化系数进行反量化和反变换,得 到残差信息。接下来解码器利用控制信息进行帧内预测以及帧间预测,预测信 息与还原出的残差信息进行结合,再经过去方块滤波以及样点自适应补偿的环 路滤波处理,得到输出的图像。HEVC编解码原理的基本结构和H.264/AVC基本 一致,但HEVC的编解码在性能上的提升源于一系列模块级的深入优化和一些设 计元素上的创新。其中针对高清视频编解码的性能提升较为重要的新特性有: 基于四叉树的循环分层结构的编码单元CU;为了解决高清视频的巨大数据量提 供了多种并行化实现。
编码树单元(英语:CodingTreeUnit,缩写:CTU)是H.265/高效率视讯编码(HighEfficiencyVideoCoding,HEVC)的处理单元。
图2所示为一个CTU中CU深度与对应亮度分量CB的去方块滤波边界示例。 图像区域纹理不同而使得CTU划分特征不同,可以根据CTU划分深度以及TU和 PU划分信息,对图像中的滤波边界做估计,并将总的工作量均分给多个线程, 从而尽可能地在并行去方块滤波中实现多线程间的负载均衡。因此,需要对此 设计计算量估计模型以及区域划分方案。
图3是EO模式样本自适应补偿SAO中相邻CTU之间的边界数据依赖关系示 例。EO模式中,确定当前像素值补偿类别,需要利用相邻的像素样本,而这些 相邻的像素样本是从去方块滤波阶段得到的,并没有被SAO处理,这种结构使 得EO模式在多核并行化中存在数据依赖问题。EO模式在相邻CTU间的数据依赖 关系如图所示,这里以45°的SAO为例,在处理当前CTU中的像素样本补偿时, 需要参考上方、右上方以及右方相邻CTU中的像素。
图4是CTU边界像素样本间的数据依赖关系及相邻CTU边界两侧像素样本 缓存。SAO依赖于去方块滤波中水平边界垂直滤波后的数据,对于光栅顺序的 SAO处理,在所有相邻CTU的SAO完成之前,应存储CTU的边界样本,也即是, 对于图3的示例,需要存储上方和右方CTU的边界样本。不同于光栅顺序SAO 过程中的数据依赖,并行SAO处理需要考虑八个方向数据依赖性,解码器应为 所有CTB存储八个方向相邻样本,才能保证满足并行处理时的数据依赖。
图5是图像区域CTU待滤波边界估计流程图。将CU深度CU_Depth作为数 组索引,初始化CTU复杂度CTU_Comp为0,按照光栅扫描的顺序遍历所有CTU 获取CU,按照提出的统计方法进行边界数统计。
图6是联合并行环路滤波方法流程图。具体流程如下:(1)主线程读取像素 解码重构完成的一帧图像,并按照光栅扫描顺序,对图像进行遍历。(2)遍历获 取各CTU的叶子节点CU,根据当前CU深度以及是否进行TU划分,并结合所设 计的CU计算复杂度数组,对CTU中的滤波边界进行累加,直到一帧滤波复杂度 估计结束。(3)一帧滤波复杂度估计结束后,根据设计的归一化映射表公式,对 帧中的CTU进行分组。依旧是按照光栅扫描顺序,将各CTU累加、归一化后的 值以及对应索引分别作为键和值存入映射表中。这个过程中,不同CTU中会产 生相同的键,此时,就将按在光栅扫描顺序中这个键最后出现时的那个CTU对 应的索引存入映射表,最终形成一个键值一一对应的映射表,并得到一个最大 的键Keymax。(4)映射表形成后,可以开启M个工作线程。线程启动后,用上一 步得到的Keymax除以M,并向下取整,可以得到一个键,根据这个键就可得到 存储在映射表中的CTU索引,该索引对应的CTU就是第一个线程处理区域的尾 部边界CTU。(5)用第四步获得的第一个线程的键,乘以M-n(n=M-1,M-2,…,1), 即可获得后续线程对应的键,从而得到线程各自区域的尾部边界CTU索引。这 样,每个线程处理的区域位置为上一个线程区域尾部CTU的下一个位置到自己 区域尾部的CTU。(6)对于第一个线程,负责区域是从帧首部第一个CTU到其所 分配区域尾部CTU。对于最后一个线程,则负责从倒数第二个线程区域的尾部CTU的下一个位置的CTU到帧结束的全部范围。
图7是CTU间数据依赖关系图。当前CTU的正确解码,依赖于其左方、左 上方、上方以及右上方四个CTU的数据信息。
图8是基于CTU的帧内/帧间融合并行解码的帧内CTU依赖表及任务调度图。 首先将一帧划分为多个CTU单元,并建立一个CTU依赖关系映射表,表中记录 的是当前CTU所依赖的CTU数目,当某个CTU解码完成时,对其有依赖性的CTU 在映射表中的数值将减一,表示有当前CTU所依赖的信息已经满足。依赖表中 记录的不仅包括帧内预测模式和相邻像素信息,同时也包括相邻下一帧中对应 CTU的运动矢量信息。如果某个CTU对应的数值减到0,则将其放入CTU待解码 任务队列,若存在空闲线程,其就会从CTU解码任务队列(该任务队列为先入 先出队列)中取出CTU进行解码。在每个GOP中,第一个I帧包含有该GOP的 主要信息,因此,可以以这个I帧为基础,进行帧内并行粒度细化及帧内CTU 间依赖关系表的建立。
图9是基于CTU的帧内/帧间融合不同类型帧间CTU依赖示意图。在细化了 帧内并行粒度之后,可以进一步以OWF的思想为参考,同时减少参考帧运动矢 量的依赖范围,从而将这种细粒度并行扩展至相邻帧间。可以将当前帧中后续 CTU行解码阻塞的线程或者平台线程池中部分空闲线程用于重构后续P帧或B帧 中满足条件的CTU,减少线程空闲时间。图中序号表示解码的总体顺序,箭头表 示部分帧间CTU的依赖关系。
图10是环路滤波对于帧间CTU并行解码的限制示意图。在当前CTU行上应 用环路滤波之后,CTU边界周围的样本的状态。其中R0-R7表示当前CTU的八个 像素样本行,除了水平CTU边界下未解码的像素样本外,像素样本行R0-R2可 能会被下一个CTU行的环路滤波改变,因此不可用作下一帧参考。由于八抽头 亮度和四抽头色度运动补偿插值,参考当前CTU行的其他帧的运动矢量不能穿 过像素样本行R6,因为R6以下的分像素样本插值需要来自R0-R2的样本。总之, 在R0-R7像素样本进行环路滤波后,运动矢量的安全范围应该是上面的七个像 素样本行。同时,根据图4所示的CTU间的依赖性,限制前一帧应至少有两行 CTU完成解码,才能将后续空闲线程用于对后续帧中满足依赖条件的CTU进行解 码。
图11是基于CTU的帧内/帧间融合并行解码方法执行时的示意图。如果当 前帧对应的CTU任务队列中,没有待处理的帧内CTU且有线程空闲,或者线程 池中有工作线程因为无任务处理而处于空闲状态时,空闲线程可以直接用于下 一个P帧或B帧中满足帧间依赖关系的CTU的解码处理。如图开启了6个工作 线程,当之前的帧中存在解码复杂度较高的CTU使得当前帧无CTU等待解码, 则空闲的两个线程直接用于下一帧中满足依赖的CTU的解码。
图12是基于CTU的帧内/帧间融合的分级线程调度策略图。将工作线程又 分为帧级线程和帧内线程,这两者属于一个线程池,并且是动态变化的。主线 程负责总体调度和CTU依赖表的建立,帧级线程判断帧任务的完成情况和帧类 型,以实现在当前帧内无CTU待解码时,能及时通知主线程调度空闲帧内线程 去解码相邻帧中数据依赖满足的CTU。
图13是核心模块融合的方法流程框图。具体流程如下;
步骤1:主线程申请寄存器单元,初始化缓存、解码任务队列以及HEVC解 码器;
步骤2:读入HEVC编码的序列码流,调用网络适配层NAL解析函数,解析 封装的各类参数信息,得到解码所需的profile、level、图像帧类型、图像尺 寸参数和环路滤波参数等信息;
步骤3:根据步骤2中解析生成的参数信息,在线程池中创建与图像CTU行 数相同数量的线程,通过多核函数库将每个线程绑定到不同的核,保证各个线 程能够进行多核并行解码,然后进入解码主循环;
步骤4、主线程对读入的视频流进行解析,若检测到是多个同级别的B帧, 则执行并行熵解码;否则,则调用单个帧级线程串行执行CABAC熵解码;
步骤5、若是步骤4中是对I帧的熵解码,则在一帧熵解码完成后,主线程 负则总体任务调度及根据I帧建立帧内CTU依赖表;帧级线程根据CTU依赖关 系表建立CTU任务队列,并根据任务队列调度帧内线程进行帧内CTU的并行像 素解码重构;帧级线程判断当前帧内CTU单元间的依赖,并通知主线程更新依 赖表,当依赖表中某个CTU单元的所有依赖都完成解码时,该CTU单元被帧级 线程被加入待解码任务队列中,帧级线程调度空闲的帧内线程,解码帧内CTU 待解码任务队列中的CTU;根据每个帧内线程的消息判断CTU是否解码已结束, 若结束,则该帧级会重新回归空闲状态,回到线程池等待;同时,帧级线程通 知主线程更新帧内CTU依赖表;如果被更新的项依赖变成0,表明可以开始解码, 因此加入到帧内CTU待解码任务队列;
步骤6:在帧内线程进行帧内像素重构的过程中,帧级线程判断是否当前帧 至少有两行CTU已完成像素重构,若完成,则检测线程池是否为空,若不为空, 则根据此时完成像素的CTU行数调用若干线程进行基于多线程负载均衡的联合 并行环路滤波,设置最多调取N-1个线程,N(≥2)是已完成解码的CTU行数;若 当前线程池为空,则暂时不进行环路滤波,帧级线程持续对线程池进行监测, 直到线程池不为空;
步骤7、帧级线程根据帧内CTU任务队列对帧内线程进行调度,同时对相邻 帧进行判断,进行基于CTU的帧内/帧间融合并行解码;
步骤8、帧级线程判断之前帧是否已经全部完成,若已完成,则根据下一帧 的解码完成情况,通知主线程对尚未完成解码的CTU建立CTU依赖表。帧内线 程会首先对之前已解码完成的区域直接进行环路滤波,后续CTU按步骤6进行。 若下一帧为I帧,则需等待当前帧全部完成解码,并且从下一帧开始,重新执 行步骤6-8;
步骤9、判断是否处理完成全部视频序列,若是,释放资源。否则,继续从 步骤6执行。
具体的,所述步骤6中,依据当前帧像素解码重构完成的区域中,CTU划 分方式不同,不同线程所承担的去方块滤波边界数不同;设计区域待滤波边界 统计方法与区域划分方法,将待滤波边界均分给多个线程,从而实现线程间负 载均衡。
具体的,图像中全部CTU待滤波边界数统计方式如下:
Figure BDA0002743967320000151
Figure BDA0002743967320000152
其中,
Figure BDA0002743967320000153
表示第i帧的去方块滤波边界数目估计,L表示一帧中 CTU的个数;
Figure BDA0002743967320000154
表示第i帧中第j个CTU的滤波计算复杂度估计,Ni,j表示第i帧的第j个CTU中CU的个数;Compcu,也即CU中包含的待滤波边 界数目,可由TU划分信息得到;CTU待滤波边界数的具体对应关系为两个数 组,数组中的数字表示待滤波边界数,数组的元素索引为当前CU的在CTU四 叉树结构中的划分深度:若当前CU是进行了TU划分,数组1为{32,16,8,2},表示CU进行了TU划分,若CU未进行TU划分,数组2为{16,8,4,2}。
具体的,区域CTU待滤波边界统计结束后,区域划分方式如下:
Figure BDA0002743967320000155
value=m (4)
Key为映射表的键,m为对应的CTU的索引,Value为值;
即从一帧图像的第一个CTU开始,为每个CTU的各四叉树叶子节点CU的 亮度分量CB块边界估计做累加,也即求出从第一个CTU到当前CTU的所有 CompCTU之和;然后,通过CTU的最大的估计计算复杂度对这个累加值进行归 一化,归一化的值作为映射表的键Key,m为对应的CTU的索引,把索引作为 值Value,从而形成键值对,对每个CTU均进行该键值对映射计算。
具体的,所述方法还包括:利用缓存,将CTU边界处去方块滤波后的边界 两侧数据进行缓存,减少去方块滤波与样本自适应补偿间的延迟;整体实现基 于多线程负载均衡的联合并行环路滤波。
具体的,所述步骤5和所述步骤7中,主线程负责总体任务调度和CTU依 赖表的建立与更新;帧级线程根据CTU依赖表更新帧内CTU任务队列,并根 据该帧内CTU任务队列对帧内线程进行调度,同时对相邻帧类型进行判断,若 当前帧为I帧或P帧,且下一帧为P或B帧,则帧级线程对帧内CTU待解码队列 进行判断,调用帧内线程执行基于CTU的帧内或帧间融合的并行解码,即如果 当前帧中无待解码CTU且存在空闲线程,并且当前帧相对于下一帧的可参考区 域的部分CTU间像素依赖以及运动矢量依赖已满足,空闲线程即可以直接对下 一帧中依赖关系满足的CTU进行解码;若帧级线程检测到当前帧是B帧或P帧 且下一帧为I帧,则等待当前帧全部解码完成,再根据下一个I帧重置CTU依 赖表。
具体的,利用分级线程调度策略及流水线技术,实现三个并行处理核心模 块的融合;所述三个并行处理核心模块为:熵解码模块、像素解码重构模块及 环路滤波模块。
具体的,所述利用分级线程调度策略及流水线技术,实现三个并行处理核 心模块的融合的方法包括以下步骤:将线程划分为主线程和工作线程;按照所 负责的任务,将工作线程分为两类,包括负责帧级任务判断的帧级线程以及负 责帧内CTU解码和滤波任务的帧内线程;根据当前任务分配与完成情况,所述 帧级线程和所述帧内线程能够相互动态转化;在实现基于CTU的帧内或帧间融 合并行解码和核心模块融合并行处理时,通过主线程负责总体调度和CTU依赖 表的建立,通过帧级线程判断帧任务的完成情况和帧类型,及时调度空闲帧内 线程去解码数据依赖满足的CTU或者对解码完成的区域进行并行环路滤波,以 实现对相邻帧中的CTU的并行解码。
I帧为帧内编码帧,I帧特点为它是一个全帧压缩编码帧,它将全帧图像信 息进行JPEG压缩编码及传输;P帧为前向预测编码帧,P帧是以I帧为参考帧, 在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传 送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以 得到P帧“某点”样值,从而可得到完整的P帧。B帧为双向预测内插编码帧, B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值 和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到 完整的B帧。
图14是核心模块融合的方法和细粒度多层次高效并行解码方法实验对比结 果。
实施例二:
本实施例采用Tilera-GX36多核处理器的作为实验平台,它由36个Tile 核组成,Tilera多核处理器拥有一套完整的多核开发工具。进行了以下验证实 验:选取2种视频序列,分辨率为1080P的“Kimono”,分辨率为1600P的 “Traffic”,QP为22,27,32和37,视频编码方式选择RA(Random Access), 编码CTU大小为64×64。
实验结果如表1所示。同时通过对比2019年南京邮电大学图像处理与图像 通信实验室张文祥的基于多核处理器的细粒度多层次并行解码方法,作出实际 对比分析。用CMP表示细粒度多层次并行解码方法,用DCP表示本发明设计实 现的核心模块融合并行解码方法。
表1实验结果
Figure BDA0002743967320000181
Figure BDA0002743967320000191
从表1中可以看出,本文提出的DCP方法,相比于CMP方法,四种量化参 数的情况下,对于1080P的Kimono视频序列,最大并行加速比平均提升了约 8.4%;对于1600P的Traffic视频序列,最大并行加速比平均提升了约7.9%。 总体并行性能提升约8.15%。从图14是绘制出的方案对比折线图。从图中可看 出,初始时,核线程数较少,两种方案能够达到的并行解码加速比相差并不大; 但随着核线程数增多,差距也越加明显。24个核线程之后,DCP折线上升趋势 更明显,因而说明,DCP的并行扩展性更优。
结合从表1和图14的实验结果可以看出:本发明所提出的核心模块融合的 并行解码方法,解码效率及多核并行加速比都有了较大的提升。
实施例三:
本发明实施例还提供了一种基于HEVC核心模块融合的并行解码装置,包 括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行下述方法的步骤:
步骤1:主线程申请寄存器单元,初始化缓存,初始化解码任务队列以及 HEVC解码器;
步骤2:读入HEVC编码的序列码流,调用网络适配层NAL解析函数,解 析封装的各类参数信息,得到解码所需的profile、level、图像帧类型、图像尺寸 参数和环路滤波参数等信息;
步骤3:根据步骤2中解析生成的参数信息,在线程池中创建与图像CTU 行数相同数量的线程,通过多核函数库将每个线程绑定到不同的核,保证各个 线程能够进行多核并行解码,然后进入解码主循环;
步骤4、主线程对读入的视频流进行解析,若检测到是多个同级别的B帧, 则执行并行熵解码;否则,则调用单个帧级线程串行执行CABAC熵解码;
步骤5、若是步骤4中是对I帧的熵解码,则在一帧熵解码完成后,主线程 负责总体任务调度及根据I帧建立帧内CTU依赖表;帧级线程根据CTU依赖关 系表建立CTU任务队列,并根据任务队列,通知主线程调度帧内线程进行帧内CTU的并行像素解码重构;帧级线程判断当前帧内CTU单元间的依赖,并通知 主线程更新依赖表,当依赖表中某个CTU单元的所有依赖都完成解码时,该CTU 单元被帧级线程被加入待解码任务队列中,帧级线程通知主线程调度空闲的帧 内线程,解码帧内CTU待解码任务队列中的CTU;根据每个帧内线程的消息判 断该CTU是否解码已结束,若结束,则该帧级会重新回归空闲状态,回到线程 池等待;同时,帧级线程通知主线程更新帧内CTU依赖表;如果被更新的项依 赖变成0,表明可以开始解码,因此加入到帧内CTU待解码任务队列;
步骤6:在帧内线程进行帧内像素重构的过程中,帧级线程判断是否当前帧 至少有两行CTU已完成像素重构,若完成,则检测线程池是否为空,若不为空, 则根据此时完成像素的CTU行数调用若干线程进行基于多线程负载均衡的联合 并行环路滤波,设置最多调取N-1个线程,N(≥2)是已完成解码的CTU行数; 若当前线程池为空,则暂时不进行环路滤波,帧级线程持续对线程池进行监测, 直到线程池不为空;
步骤7、帧级线程根据帧内CTU任务队列对帧内线程进行调度,同时对相 邻帧进行判断,进行基于CTU的帧内/帧间融合并行解码;
步骤8、帧级线程判断之前帧是否已经全部完成,若已完成,则根据下一帧 的解码完成情况,通知主线程对尚未完成解码的CTU建立CTU依赖表。帧内 线程会首先对之前已解码完成的区域直接进行环路滤波,后续CTU按步骤6进 行。若下一帧为I帧,则需等待当前帧全部完成解码,并且从下一帧开始,重新 执行步骤6-8;
步骤9、判断是否处理完成全部视频序列,若是,释放资源。否则,继续从 步骤6执行。
实施例四:
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序, 该程序被处理器执行时实现下述方法的步骤:
步骤1:主线程申请寄存器单元,初始化缓存,初始化解码任务队列以及 HEVC解码器;
步骤2:读入HEVC编码的序列码流,调用网络适配层NAL解析函数,解 析封装的各类参数信息,得到解码所需的profile、level、图像帧类型、图像尺寸 参数和环路滤波参数等信息;
步骤3:根据步骤2中解析生成的参数信息,在线程池中创建与图像CTU 行数相同数量的线程,通过多核函数库将每个线程绑定到不同的核,保证各个 线程能够进行多核并行解码,然后进入解码主循环;
步骤4、主线程对读入的视频流进行解析,若检测到是多个同级别的B帧, 则执行并行熵解码;否则,则调用单个帧级线程串行执行CABAC熵解码;
步骤5、若是步骤4中是对I帧的熵解码,则在一帧熵解码完成后,主线程 负责总体任务调度及根据I帧建立帧内CTU依赖表;帧级线程根据CTU依赖关 系表建立CTU任务队列,并根据任务队列,通知主线程调度帧内线程进行帧内 CTU的并行像素解码重构;帧级线程判断当前帧内CTU单元间的依赖,并通知 主线程更新依赖表,当依赖表中某个CTU单元的所有依赖都完成解码时,该CTU 单元被帧级线程被加入待解码任务队列中,帧级线程通知主线程调度空闲的帧 内线程,解码帧内CTU待解码任务队列中的CTU;根据每个帧内线程的消息判 断该CTU是否解码已结束,若结束,则该帧级会重新回归空闲状态,回到线程 池等待;同时,帧级线程通知主线程更新帧内CTU依赖表;如果被更新的项依 赖变成0,表明可以开始解码,因此加入到帧内CTU待解码任务队列;
步骤6:在帧内线程进行帧内像素重构的过程中,帧级线程判断是否当前帧 至少有两行CTU已完成像素重构,若完成,则检测线程池是否为空,若不为空, 则根据此时完成像素的CTU行数调用若干线程进行基于多线程负载均衡的联合 并行环路滤波,设置最多调取N-1个线程,N(≥2)是已完成解码的CTU行数; 若当前线程池为空,则暂时不进行环路滤波,帧级线程持续对线程池进行监测, 直到线程池不为空;
步骤7、帧级线程根据帧内CTU任务队列对帧内线程进行调度,同时对相 邻帧进行判断,进行基于CTU的帧内/帧间融合并行解码;
步骤8、帧级线程判断之前帧是否已经全部完成,若已完成,则根据下一帧 的解码完成情况,通知主线程对尚未完成解码的CTU建立CTU依赖表。帧内 线程会首先对之前已解码完成的区域直接进行环路滤波,后续CTU按步骤6进 行。若下一帧为I帧,则需等待当前帧全部完成解码,并且从下一帧开始,重新 执行步骤6-8;
步骤9、判断是否处理完成全部视频序列,若是,释放资源。否则,继续从 步骤6执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计 算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结 合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包 含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、 CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品 的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/ 或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或 方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式 处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机 或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流 程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备 以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的 指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流 程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变 形,这些改进和变形也应视为本发明的保护范围。

Claims (10)

1.一种基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,包括以下步骤:
步骤1:主线程进行初始化操作,包括初始化HEVC解码器,申请寄存器单元,初始化缓存,初始化解码任务队列,置空任务队列;
步骤2:读入HEVC编码的序列码流,调用网络适配层NAL解析函数,解析封装的各类参数信息,得到解码所需的profile、level、图像帧类型、图像尺寸参数和环路滤波参数信息;
步骤3:根据步骤2中网络适配层解析生成的各类参数信息,在线程池中创建与图像CTU行数相同数量的线程,通过多核函数库将每个线程绑定到不同的核,保证各个线程能够进行多核并行解码,然后进入解码主循环;
步骤4、主线程对读入的视频流进行解析,若检测到是多个同级别的B帧,则执行并行熵解码;否则,则调用单个帧级线程串行执行CABAC熵解码;
步骤5、若是步骤4中是对I帧的熵解码,则在该帧熵解码完成后,主线程负责总体任务调度及根据I帧建立帧内CTU依赖表;帧级线程根据CTU依赖关系表建立CTU任务队列,并根据任务队列,通知主线程调度帧内线程进行帧内CTU的并行像素解码重构;帧级线程判断当前帧内CTU单元间的依赖,并通知主线程更新依赖表,当依赖表中某个CTU单元的所有依赖都完成解码时,该CTU单元被帧级线程被加入待解码任务队列中,帧级线程通知主线程调度空闲的帧内线程,解码帧内CTU待解码任务队列中的CTU;根据每个帧内线程的消息判断该CTU是否解码已结束,若结束,则该帧级线程会重新回归空闲状态,回到线程池等待,同时,帧级线程通知主线程更新帧内CTU依赖表;如果被更新的项依赖变成0,将其加入到帧内CTU待解码任务队列;
步骤6:在帧内线程进行帧内像素重构的过程中,帧级线程判断是否当前帧至少有两行CTU已完成像素重构,若完成,则检测线程池是否为空,若不为空,则根据此时完成像素的CTU行数调用若干线程进行基于多线程负载均衡的联合并行环路滤波,设置最多调取N-1个线程,N是已完成解码的CTU行数,且N不小于2;若当前线程池为空,则暂时不进行环路滤波,帧级线程持续对线程池进行监测,直到线程池不为空;
步骤7、帧级线程根据帧内CTU任务队列对帧内线程进行调度,同时对相邻帧进行判断,进行基于CTU的帧内或帧间融合并行解码;
步骤8、帧级线程判断之前帧是否已经全部完成,若已完成,则根据下一帧的解码完成情况,通知主线程对尚未完成解码的CTU建立CTU依赖表;帧内线程对之前已解码完成的区域直接进行环路滤波;若当前帧的下一帧为I帧,则需等待当前帧全部完成解码,并且从当前帧的下一帧开始,跳转执行步骤6-8,直至当前帧图像解码完成后,执行步骤9;
步骤9、检测视频码流是否全部解码完成,若完成则释放所有的资源;否则,跳转执行步骤6。
2.根据权利要求1所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,所述步骤6中,依据当前帧像素解码重构完成的区域中,CTU划分方式不同,不同线程所承担的去方块滤波边界数不同;设计区域待滤波边界统计方法与区域划分方法,将待滤波边界均分给多个线程,从而实现线程间负载均衡。
3.根据权利要求2所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,图像中全部CTU待滤波边界数统计方式如下:
Figure FDA0003922015040000031
Figure FDA0003922015040000032
其中,
Figure FDA0003922015040000034
表示第i帧的去方块滤波边界数目估计,L表示一帧中CTU的个数;
Figure FDA0003922015040000035
表示第i帧中第j个CTU的滤波计算复杂度估计,Ni,j表示第i帧的第j个CTU中CU的个数;Compcu,也即CU中包含的待滤波边界数目,可由TU划分信息得到;CTU待滤波边界数的具体对应关系为两个数组,数组中的数字表示待滤波边界数,数组的元素索引为当前CU的在CTU四叉树结构中的划分深度:若当前CU是进行了TU划分,数组1为{32,16,8,2},表示CU进行了TU划分,若CU未进行TU划分,数组2为{16,8,4,2}。
4.根据权利要求3所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,区域CTU待滤波边界统计结束后,区域划分方式如下:
Figure FDA0003922015040000033
value=m (4)
Key为映射表的键,floor为向下取整函数;m为对应的CTU的索引,Value为值;
即从一帧图像的第一个CTU开始,为每个CTU的各四叉树叶子节点CU的亮度分量CB块边界估计做累加,也即求出从第一个CTU到当前CTU的所有CompCTU之和;然后,通过CTU的最大的估计计算复杂度对这个累加值进行归一化,归一化的值作为映射表的键Key,m为对应的CTU的索引,把索引作为值Value,从而形成键值对,对每个CTU均进行该键值对映射计算。
5.根据权利要求3所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,所述方法还包括:利用缓存,将CTU边界处去方块滤波后的边界两侧数据进行缓存,减少去方块滤波与样本自适应补偿间的延迟;整体实现基于多线程负载均衡的联合并行环路滤波。
6.根据权利要求1所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,所述步骤5和步骤7中,主线程负责总体任务调度和CTU依赖表的建立与更新;帧级线程根据CTU依赖表更新帧内CTU任务队列,并根据该帧内CTU任务队列对帧内线程进行调度,同时对相邻帧类型进行判断,若当前帧为I帧或P帧,且下一帧为P或B帧,则帧级线程对帧内CTU待解码队列进行判断,调用帧内线程执行基于CTU的帧内或帧间融合的并行解码,即如果当前帧中无待解码CTU且存在空闲线程,并且当前帧相对于下一帧的可参考区域的部分CTU间像素依赖以及运动矢量依赖已满足,空闲线程即可以直接对下一帧中依赖关系满足的CTU进行解码;若帧级线程检测到当前帧是B帧或P帧且下一帧为I帧,则等待当前帧全部解码完成,再根据下一个I帧重置CTU依赖表。
7.根据权利要求1所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,利用分级线程调度策略及流水线技术,实现三个并行处理核心模块的融合;所述三个并行处理核心模块为:熵解码模块、像素解码重构模块及环路滤波模块。
8.根据权利要求7所述的基于多核处理器的HEVC核心模块融合的并行解码方法,其特征在于,所述利用分级线程调度策略及流水线技术,实现三个并行处理核心模块的融合的方法包括以下步骤:
将线程划分为主线程和工作线程;
按照所负责的任务,将工作线程分为两类,包括负责帧级任务判断的帧级线程以及负责帧内CTU解码和滤波任务的帧内线程;根据当前任务分配与完成情况,所述帧级线程和所述帧内线程能够相互动态转化;
在实现基于CTU的帧内或帧间融合并行解码和核心模块融合并行处理时,通过主线程负责总体调度和CTU依赖表的建立,通过帧级线程判断帧任务的完成情况和帧类型,及时调度空闲帧内线程去解码数据依赖满足的CTU或者对解码完成的区域进行并行环路滤波,以实现对相邻帧中的CTU的并行解码。
9.一种基于多核处理器的基于HEVC核心模块融合的并行解码装置,其特征在于,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1~8任一项所述方法的步骤。
10.计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~8任一项所述方法的步骤。
CN202011159992.4A 2020-10-27 2020-10-27 基于hevc核心模块的并行解码方法、装置及介质 Active CN112468821B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011159992.4A CN112468821B (zh) 2020-10-27 2020-10-27 基于hevc核心模块的并行解码方法、装置及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011159992.4A CN112468821B (zh) 2020-10-27 2020-10-27 基于hevc核心模块的并行解码方法、装置及介质

Publications (2)

Publication Number Publication Date
CN112468821A CN112468821A (zh) 2021-03-09
CN112468821B true CN112468821B (zh) 2023-02-10

Family

ID=74834513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011159992.4A Active CN112468821B (zh) 2020-10-27 2020-10-27 基于hevc核心模块的并行解码方法、装置及介质

Country Status (1)

Country Link
CN (1) CN112468821B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113395523B (zh) * 2021-06-11 2023-05-30 深圳万兴软件有限公司 基于并行线程的图像解码方法、装置、设备及存储介质
CN113660496B (zh) * 2021-07-12 2024-06-07 珠海全志科技股份有限公司 基于多核并行的视频流解码方法及装置
CN113852814B (zh) * 2021-07-19 2023-06-16 南京邮电大学 数据级和任务级融合的并行解码方法、装置及存储介质
CN115686871B (zh) * 2022-12-30 2023-04-07 摩尔线程智能科技(北京)有限责任公司 用于多核系统的核心调度方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130136188A1 (en) * 2011-11-30 2013-05-30 Freescale Semiconductor, Inc Multi-core decompression of block coded video data
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法
CN108449603A (zh) * 2018-03-22 2018-08-24 南京邮电大学 基于多核平台多层次任务级与数据级并行的hevc解码方法
CN110337002A (zh) * 2019-08-15 2019-10-15 南京邮电大学 一种在多核处理器平台上hevc多层次高效并行解码算法
CN110446043A (zh) * 2019-08-08 2019-11-12 南京邮电大学 一种基于多核平台的hevc细粒度并行编码方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130136188A1 (en) * 2011-11-30 2013-05-30 Freescale Semiconductor, Inc Multi-core decompression of block coded video data
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法
CN108449603A (zh) * 2018-03-22 2018-08-24 南京邮电大学 基于多核平台多层次任务级与数据级并行的hevc解码方法
CN110446043A (zh) * 2019-08-08 2019-11-12 南京邮电大学 一种基于多核平台的hevc细粒度并行编码方法
CN110337002A (zh) * 2019-08-15 2019-10-15 南京邮电大学 一种在多核处理器平台上hevc多层次高效并行解码算法

Also Published As

Publication number Publication date
CN112468821A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN112468821B (zh) 基于hevc核心模块的并行解码方法、装置及介质
CN105992008B (zh) 一种在多核处理器平台上的多层次多任务并行解码方法
KR101991074B1 (ko) 비디오 인코딩 및 디코딩
CN110337002B (zh) 一种在多核处理器平台上hevc多层次并行解码方法
US20090245351A1 (en) Moving picture decoding apparatus and moving picture decoding method
Sampaio et al. Motion vectors merging: low complexity prediction unit decision heuristic for the inter-prediction of HEVC encoders
Shen et al. Ultra fast H. 264/AVC to HEVC transcoder
CN103220529A (zh) 一种视频编解码环路滤波的实现方法
CN103348681A (zh) 用于确定参考单元的方法和装置
CN105491377A (zh) 一种计算复杂度感知的视频解码宏块级并行调度方法
CN104811696A (zh) 一种视频数据的编码方法和装置
CN105516728A (zh) 一种H.265/HEVC中8x8子宏块的并行帧内预测方法
KR20230162989A (ko) 멀티미디어 데이터 프로세싱 방법, 장치, 디바이스, 컴퓨터-판독가능 저장 매체, 및 컴퓨터 프로그램 제품
CN101841722B (zh) 滤波边界强度的检测装置的检测方法
CN102595137B (zh) 基于图像像素块行/列流水线的快速模式判决装置和方法
Gudumasu et al. Software-based versatile video coding decoder parallelization
WO2018205781A1 (zh) 一种实现运动估计的方法及电子设备
Malossi et al. Adjusting video tiling to available resources in a per-frame basis in high efficiency video coding
CN112422983B (zh) 通用多核并行解码器系统及其应用
CN101977317B (zh) 帧内预测方法及装置
Tsai et al. Encoder hardware architecture for HEVC
Takeuchi et al. Scalable parallel processing for H. 264 encoding application to multi/many-core processor
Wen et al. Data parallelism exploiting for h. 264 encoder
WO2018205780A1 (zh) 一种运动估计实现方法及电子设备
CN113852814B (zh) 数据级和任务级融合的并行解码方法、装置及存储介质

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