CN112422983B - 通用多核并行解码器***及其应用 - Google Patents

通用多核并行解码器***及其应用 Download PDF

Info

Publication number
CN112422983B
CN112422983B CN202011154537.5A CN202011154537A CN112422983B CN 112422983 B CN112422983 B CN 112422983B CN 202011154537 A CN202011154537 A CN 202011154537A CN 112422983 B CN112422983 B CN 112422983B
Authority
CN
China
Prior art keywords
decoding
line
core
macro block
full
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
CN202011154537.5A
Other languages
English (en)
Other versions
CN112422983A (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.)
Mouxin Technology Shanghai Co ltd
Original Assignee
Mouxin Technology Shanghai Co ltd
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 Mouxin Technology Shanghai Co ltd filed Critical Mouxin Technology Shanghai Co ltd
Priority to CN202011154537.5A priority Critical patent/CN112422983B/zh
Publication of CN112422983A publication Critical patent/CN112422983A/zh
Application granted granted Critical
Publication of CN112422983B publication Critical patent/CN112422983B/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/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了通用多核并行解码器***及其应用,涉及视频解码技术领域。所述***包括通信连接的解码固件和多核硬件解码加速器,二者之间以视频码流中的Slice层级数据作为交互单元;解码固件用于解析视频码流上层的非熵编码数据,多核硬件解码加速器用于处理视频码流中宏块层的解码任务;多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器,预处理器模块用于视频码流的熵解码任务;每个全功能硬件解码器负责一行宏块行的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块。本发明的并行度不受条/片分割数量限制,实现了通用解码,可扩展性好,并行处理效率高。

Description

通用多核并行解码器***及其应用
技术领域
本发明涉及视频解码技术领域,尤其涉及一种通用多核并行解码器***及其应用。
背景技术
在2019年印发的《超高清视频产业发展行动计划(2019-2022年)》中,明确提出将按照“4K先行、兼顾8K”的总体技术路线,大力推进超高清视频产业发展和相关领域的应用。加快发展超高清视频产业,对驱动以视频为重要载体的5G、安防等行业智能化转型,以及提升我国信息产业和文化产业整体实力都具有重大意义。而超高清视频技术自然而然地对视频编解码处理提出了更高的要求。对于高清视频,现行的主流视频压缩标准包括AdvancedVideo Coding(简称AVC)和High Efficiency Video Coding(简称HEVC)等,软件解码会带来很大的CPU、功耗等开销,因此业界通常采用专门的硬件加速器作为视频解码器(简称VDEC,全称Video Decoder)来执行视频解码。以常用的单核硬件解码器为例,单核硬件解码器多采用流水线设计,以宏块(AVC中表示为MB,即Macro Block;HEVC中表示为CTB,即Coding Tree Blocks)作为流水单元。以HEVC为例,其主要流水级划分可以参见图1所示。图1中包括4个级别,各级功能描述如下:第一级Entropy Dec:熵解码(CABAC/CAVLC);第二级IQT、IDCT:反量化,反DCT变换;第三级IPred、ReC:intra、inter预测,图像重建。第四级Dblock、SAO:去块滤波,自适应补偿。
对于超高清视频,解码器要实现8K@30fps/4K@120fps性能,上述单核硬件解码器在600MHz时钟运行频率内已很难满足性能需求。因此,现有技术中提出了视频解码器的多核设计方案以实现高效并行解码,多核的良好可扩展性可以满足更高性能需求。目前,并行解码方案一般是围绕Frame(即,帧)、Slice(即,条)、Tile(即,片)、MB/CTB line(即,宏块行)等层级展开的,主流的并行解码方案有如下几种。
第一种,Frame并行解码。AVC/HEVC帧分为I、P、B帧,其中B帧经常被用作非参考帧,由于此类B帧与其他帧数据不相关,可以用来并行处理。
第二种,Slice并行解码。AVC/HEVC每一帧图像都能分成一个或者多个Slice,一个条由整数个相继排列的宏块组成。Slice的目的是为了增强传输出错时的鲁棒性,一旦传输出现错误,没有出错的Slice并不会受到影响。
第三种,Tile并行解码。HEVC为提高并行度,引入了Tile的分割方式,即将一帧分割成M x N个矩形幅面并行计算(其中,M、N为整数,M≥1,N≥1)。
第四种,WPP并行解码。HEVC为提高并行度,编码时提供了一种特别的WavefrontParallel Processing(简称WPP)方案,编码时在每个CTB行的行头直接初始化熵解码,而不需要等到上一行熵解码完全结束,以此阻断熵解码的宏块行间串行特性,实现宏块行并行计算。
然而,上述解码方案存在如下缺陷:对于第一种解码方案,由于P帧间的B帧的数量通常较少,导致并行度不高;同时,在某些协议标准中,可能会将B帧作为参考帧,此类B帧就无法进行上述Frame并行解码。对于第二种解码方案,虽然一帧图像的各个Slice通常是相互独立的,但是由于去块滤波是能超越Slice边界的,在这种应用场景下,基于Slice的并行解码会失效;同时,Slice并行解码时,并行度直接受一帧内Slice分割数的影响,对Slice分割数的依赖性过高。对于第三种解码方案,同前述Slice并行解码一样,某些协议标准中去块滤波仍有可超越Tile边界的选项,在这种应用场景下,基于Tile的并行解码会同样失效;同时,并行度也直接受一帧内Tile分割数的影响,对Tile分割数的依赖性过高。对于第四种解码方案,由于每行初始化会使视频码率增大,在一定程度上影响了WPP并行解码模式的应用。
另一方面,在AVC/HEVC中,采用单一线程解码时,对一帧内的宏块(AVC中的MB,HEVC中的CTB)的处理顺序一般是从左到右、从上到下。一个宏块在熵解码、intra预测、inter预测、去块滤波等过程中通常会依赖到其左侧、上侧相邻宏块信息。要实现一帧内的宏块并行处理,就必须找出数据独立的宏块。现有技术中提供了一种2D-Wave算法,2D-Wave算法类似于HEVC Wavefront思想。具体的,2D-Wave算法可以根据预设协议,令与一个宏块相互独立的最接近的宏块位于“右2,上1”的相对位置上,典型宏块的依赖关系参见图2所示,斜线宏块(x,y)和斜线宏块(x+2,y-1)为相互独立的宏块,宏块(x,y)的依赖宏块为点状宏块(x,y-1)和点状宏块(x+1,y-1)。如此,只要在多线程间加上同步限制,保证上行解码线程最少领先下行线程两个宏块,他们就能够同时被解码。参见图3所示,完整的是已解码宏块10,花格子的为解码中宏块20,空白的为未解码宏块30。视频解码时,每个线程负责一行宏块的解码,上下各行间保持前后波浪式向右递进解码,从而实现宏块并行处理。2D-Wave有着良好的可扩展性,其并行度不受一帧内Slice/Tile(即,条/片)分割数量的限制,它最大并行度(即可以同时处理的宏块数)与帧的宽高相关,通常可以用公式ParMBmax,2D=min(mb_width/2,mb_height)来确定最大并行度,其中,ParMBmax,2D表示最大并行度,mb_width表示帧宽度上的宏块数目,mb_height表示帧高度上的宏块数目。作为举例,比如对于尺寸为1920x1080(宽*高)像素的图像帧,宏块数目为120×68(宽*高)MBs,通过上述公式计算得到的最大并行度ParMBmax,2D为120/2=60(取120/2和68中的最小值)。在4K/8K超高清应用场景中,通过2D-Wave算法可以大幅提升并行度,加速高清视频解码处理。
然而,2D-Wave算法存在如下缺陷:一方面,由于熵解码是完全串行的(Slice中每个宏块的熵解码都与它的前一个宏块相关),下行首个宏块需要获取其上一行的最末宏块解码完后的现场信息;另一方面,Slice中的码流数据是完全串行的,下行首个宏块对应的码流数据同样需要等其上一行最末宏块解码完成才能呈现,在一定程度上影响了并行处理效率。
综上所述,已有的并行解码方案,无法在通用性、可扩展性、并行度和并行处理效率等方面实现面面俱到,且往往只能局限在一定框架内的编码流上实现多核并行,如何提供一种并行度不受一帧内Slice/Tile分割数量的限制的、可扩展性好、通用性强的通用多核并行解码方案是当前亟需解决的技术问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种通用多核并行解码器***及其应用。本发明根据码流数据特性,将视频解码器(VDEC)划分为解码固件(简称VDEC_FW,全称Video FirmWare)和多核硬件解码加速器(简称VDEC_MCORE,全称VDEC Multi-Core)以分别进行非熵编码数据解析和宏块层解码,软硬件并行处理可以提高并行处理效率;同时,在多核硬件解码加速器中采用预处理器和全功能硬件解码器多核设计,并设定多核同步机制实现上下宏块行的同步并行处理。本发明可对任何编码方式的码流的一帧内宏块行进行并行处理,且其并行度不受一帧内Slice/Tile(即,条/片)分割数量的限制,实现了通用解码,可扩展性好,并行处理效率高。
为实现上述目标,本发明提供了如下技术方案:
一种通用多核并行解码器***,包括通信连接的解码固件和多核硬件解码加速器;
所述解码固件用于解析视频码流上层的非熵编码数据;所述多核硬件解码加速器用于处理视频码流中宏块层的解码任务;所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器;所述预处理器模块用于视频码流的熵解码任务;每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块。
进一步,通过Slice Queue进行Slice并行处理时,所述解码固件被配置为:完成视频码流上层解析后,将Silice上层参数信息打包压入Slice Queue;
所述多核硬件解码加速器被配置为:查询Slice Queue数据的ready信息,在读取队列并完成配置后,解析当前Slice内宏块直至该Slice内宏块解析完成,解析结束后发出中断信号,释放Slice Queue。
进一步,所述预处理器模块被配置为:
仅执行视频码流的熵解码任务,在每个宏块行的行首记录必要信息,并以CommandQueue方式将上述必要信息分别压入每个全功能硬件解码器的Line Queue中。
进一步,多核硬件解码加速器包括第一全功能硬件解码器和第二全功能硬件解码器,所述第一全功能硬件解码器用于处理第2N个宏块行的解码,所述第二全功能硬件解码器用于处理第2N+1个宏块行的解码,其中,N取0以上的整数;两个全功能硬件解码器共用一组行缓存形成双核共享,所述行缓存上存储有宏块之间的依赖关系信息;
全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。
进一步,利用行缓存仲裁器授权行缓存就绪标志来实现双核同步解码;
所述多核硬件解码加速器被配置为:在每个宏块启动时,通过分配的全功能硬件解码器先读取行缓存信息,协调上下宏块行的全功能硬件解码器的处理速度使得对于正在解码中的两个上下宏块行,下宏块行的处理位置总落后于相邻上宏块行的处理位置至少两个宏块;在垂直方向上,当第一全功能硬件解码器开始新的第2(N+1)个宏块行的解码时,保证第2(N+1)个宏块行的处理位置落后于在前的第2N+1个宏块行的处理位置至少两个宏块。
进一步,对应每个全功能硬件解码器设置有单核行缓存预取模块,其包括由第一缓存和第二缓存组成的乒乓预取缓存,通过乒乓预取缓存来存放上一宏块行的行缓存数据;
所述单核行缓存预取模块被配置为:从一个宏块行的最左侧宏块开始,先从双核共享的行缓存中将需要的数据读入乒乓预取缓存中,首次填入时,将第一缓存和第二缓存全部填满;待解码器内部的一个宏块解码完成后,更新相应的第一缓存或第二缓存并将对应缓存所记载的信息回写至共享行缓存上;回写完成后回收该缓存并预取下一个宏块所需要的行缓存数据,如此反复操作直到图像的最右侧。
进一步,所述非熵编码数据包括组成视频参数集VPS、序列参数集SPS、图像参数集PPS和Slice头信息中的一种或多种。
进一步,所述宏块层的解码任务,包括全硬件的码流读取,熵解码,反DCT变换,反量化,帧内帧间预测,运动补偿,像素重建和去方块滤波步骤。
本发明还提供了一种视频解码方法,包括如下步骤:
接收视频码流数据;
通过解码固件解析视频码流上层的非熵编码数据,通过多核硬件解码加速器处理视频码流中宏块层的解码任务,所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
其中,
所述多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器,通过预处理器模块进行视频码流的熵解码,每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块以实现多核同步解码。
进一步,所述视频为AVC视频或HEVC视频。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:
1)基于现行的主流视频压缩标准AVC和HEVC,根据码流数据特性,将视频解码器(即,VDEC)划分为解码固件和多核硬件解码加速器两部分。固件(即,FirmWare)是嵌入在硬件设备中的软件,通常为写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序,解码固件作为软件部分用于解析视频码流上层的非熵编码数据,多核硬件解码加速器作为硬件部分集中处理视频码流中宏块层的所有解码工作,同时以视频流中Slice(即,条)层级作为VDEC_FW和VDEC_MCORE的交互单元,通过VDEC内部的Slice Queue(即,条队列)进行数据交互,通过软硬件并行处理提高并行处理效率。
2)在VDEC_MCORE中采用预处理器和全功能硬件解码器多核设计,利用Line Queue(即,行队列)策略,可以实现上下宏块行的并行处理,并设定多核同步机制实现上下宏块行的同步并行处理。
3)利用多核间Line buffer(即,行缓存)的数据共享及同步管理机制,提高了宏块行并行解码的准确性和稳定性。
本发明提供的技术方案,可以对任何编码方式的码流的一帧内宏块行进行并行处理,且其并行度不受一帧内Slice/Tile分割数量的限制,实现了通用解码,同时具有可扩展性好、并行处理效率高的有点。
附图说明
图1为现有技术中的单核硬件解码器的流水线设计示意图。
图2为现有技术中的宏块的依赖关系示意图。
图3为现有技术中的多个线程进行并行解码处理的操作示意图。
图4为本发明实施例提供的***的模块结构交互示意图。
图5为本发明实施例提供的多核硬件解码加速器的双核结构示意图。
图6为本发明实施例提供的双核并行解码的操作示意图。
图7为本发明实施例提供的行缓存仲裁器设定双核同步的信息传输示意图。
图8为本发明实施例提供的双核协调的宏块处理位置示意图。
图9为本发明实施例提供的设置乒乓预取缓存的硬件解码器的结构示意图。
图10为本发明实施例提供的进行乒乓预取处理的流程示意图。
附图标记说明:
已解码宏块10,解码中宏块20,未解码宏块30。
具体实施方式
以下结合附图和具体实施例对本发明公开的通用多核并行解码器***及其应用作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
参见图4所示,为本发明提供了一种通用多核并行解码器***。所述***包括通信连接的解码固件(图4中的VDEC_FW,全称Video FirmWare)和多核硬件解码加速器(图4中的VDEC_MCORE,全称VDEC Multi-Core)。
所述解码固件,用于解析视频码流上层的非熵编码数据。
所述多核硬件解码加速器,用于处理视频码流中宏块层的解码任务。本实施例中,多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器。
所述预处理器模块用于视频码流的熵解码任务。
每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块以实现多核同步解码。
所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理。
AVC视频和HEVC视频的码流采用分层结构,将属于GOP层、Slice层中共用的大部分语法游离出来,组成了视频参数集VPS(即,Video Parameter Set),序列参数集SPS(即,Sequence Parameter Set)和图像参数集PPS(即,Picture Parameter Set)等,由于这部分数据占比很小且解析简单,非常适合软件解析。根据上述码流数据的特性,本实施例提供的解码器***将视频解码器VDEC分为解码固件VDEC_FW和多核硬件解码加速器VDEC_MCORE两部分,其中,解码固件作为软件部分可以用于解析视频码流上层的非熵编码数据,多核硬件解码加速器作为硬件部分可以用于集中处理视频码流中宏块层的所有解码工作。
优选的,将码流上层的视频参数集VPS、序列参数集SPS、图像参数集PPS和Slice头信息(即,Slice header)等非熵编码数据由解码固件VDEC_FW负责解析;而多核硬件解码加速器则用于集中处理视频码流中宏块层的所有解码工作,可以包括全硬件的码流读取、熵解码、反DCT变换、反量化、帧内帧间预测、像素重建和去方块滤波等步骤。
继续参见图4所示,在本实施例中,软/硬件以视频码流中Slice层级作为交互单元,通过视频解码器内部的Slice Queue(即,条队列)进行数据交互。解码固件VDEC_FW和多核硬件解码加速器VDEC_MCORE的交互流程可以如下:
1)解码固件VDEC_FW完成码流上层解析任务后,将Slice上层参数信息打包压入Slice Queue队列,即将信息放入(push)到Slice Queue的队列中进行排队。图4中朝下的箭头表示压入Slice Queue的操作。
此时,解码固件被配置为:完成视频码流上层解析后,将Slice上层参数信息打包压入Slice Queue。
2)多核硬件解码加速器VDEC_MCORE查询Slice Queue数据的ready信息(就绪状态信息),读取队列信息并完成配置后,全硬件解析当前Slice内宏块直至结束,并在结束时发出中断信号,释放Slice Queue,即释放(pop)Slice Queue的队列中的对应信息。图4中朝上的箭头表示释放Slice Queue的操作。
此时,多核硬件解码加速器被配置为:查询Slice Queue数据的ready信息,在读取队列并完成配置后,解析当前Slice内宏块直至该Slice内宏块解析完成,解析结束后发出中断信号,释放Slice Queue。
如此,通过软硬件划分结合Slice queue来实现Slice并行处理,软硬件并行处理能够显著节省软件处理时间,进而提高了并行处理效率。
多核硬件解码加速器VDEC_MCORE可以包括预处理器(Pre-Parser)模块和多个同构的全功能硬件解码器(Full-fuction Decoder)。所述的全功能硬件解码器,是指该硬件解码器至少能够处理宏块行解码所必需的反DCT变换、反量化、帧内帧间预测和像素重建几个步骤。
同构的全功能硬件解码器可以设置为两个以上(包括两个),设置为两个时称为双核硬件解码加速器,设置为三个时称为三核硬件解码加速器,设置为四个时称为四核硬件解码加速器,以此类推。每个全功能硬件解码器负责一行宏块行的解码,双核硬件解码加速器可以同时进行两行宏块行的并行解码工作,三核硬件解码加速器可以同时进行三行宏块行的并行解码工作,以此类推。
优选的,所述预处理器模块被配置为仅执行视频码流的熵解码任务。具体的,预处理器模块可以在每个宏块行的行首记录必要信息,并以Command Queue(即,命令队列)方式将上述必要信息分别压入每个全功能硬件解码器的Line Queue(即,行队列)中,即,将信息放入(push)到Line Queue的队列中进行排队。
下面以双核硬件解码加速器作为优选来详细描述本实施例。
参见图5所示,双核硬件解码加速器包括一个预处理器(Pre-Parser)模块和两个同构的全功能硬件解码器(Full-fuction Decoder),具体包括第一全功能硬件解码器(Full-fuction Decoder Core0)和第二全功能硬件解码器(Full-fuction DecoderCore1)。
所述Pre-Parser模块是基于熵解码的串行特性设置的。由于熵解码的串行特性,在全功能硬件解码器进行解码工作之前,需要向全功能硬件解码器提供每个宏块行在码流中的起始地址和熵解码起始状态等信息,因此通过设置预处理器(Pre-Parser)模块来执行码流熵解码任务。
Pre-Parser模块可以单纯执行码流熵解码任务,在每个宏块行行首记录必要信息,随即以Command Queue方式将这些信息分别压入(放入)每个全功能硬件解码器的LineQueue的队列中。由于Pre-Parser模块只负责熵解码,容易通过精细化设计使其工作在高时钟频率上以提高熵解码处理速度,从而匹配多核Full-fuction Decoder性能。
作为举例而非限制,所述第一全功能硬件解码器可以用于处理第2N个宏块行的解码,所述第二全功能硬件解码器可以用于处理第2N+1个宏块行的解码,其中,N取0以上的整数,参见图6所示。
在执行解码任务时,每个全功能硬件解码器可以检查各自的Line Queue(行队列)里是否有指令,而后根据指令的内容启动一个宏块行的解码。同时,每个全功能硬件解码器在解码过程中,还可以监控上一个宏块行对应的全功能硬件解码器的工作位置,必须比上一行的处理位置晚至少两个宏块。
两个全功能硬件解码器可以共用一组line buffer(行缓存)形成双核共享。所述line buffer上存储有宏块间的所有依赖关系信息。两个全功能硬件解码器可以共同维护line buffer,比如可以包括line buffer的读取、更新操作等。
此时,全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。
具体实施时,可以通过设定多核同步机制来协调两个全功能硬件解码器的处理位置,以保持上下行正在解码宏块至少间隔两个宏块。本实施例中,优选的,通过行缓存仲裁器(即,line buffer arbiter)仲裁授权行缓存就绪标志(即,line buffer ready flag)的方式来实现双核同步解码:因为全功能硬件解码器在每个宏块启动时都需要先读取linebuffer信息。结合图6、图7和图8进步描述双核同步机制。
参见图7所示,所述第一全功能硬件解码器和第二全功能硬件解码器都通过行缓存仲裁器与行缓存通信连接,当全功能硬件解码器需要读取行缓存信息时,需要得到行缓存仲裁器授权的行缓存就绪标志。如此,通过预设行缓存仲裁器的仲裁规则,就可以协调第一全功能硬件解码器和第二全功能硬件解码器的处理速度。
此时,所述多核硬件解码加速器被配置为:在每个宏块启动时,通过分配的全功能硬件解码器先读取行缓存信息,协调上下宏块行的全功能硬件解码器的处理速度使得对于正在解码中的两个上下宏块行,下宏块行的处理位置总落后于相邻上宏块行的处理位置至少两个宏块。该技术方案中,line buffer除了在水平方向上保证第一全功能硬件解码器(对应图6中的Core0)的处理位置至少领先第二全功能硬件解码器(对应图6中的Core1)处理位置两个宏块间隔,还需要保证在垂直方向上,当Core0开始新的第2(N+1)个宏块行的解码时(Core0进入下一轮宏块行处理),第2(N+1)个宏块行的处理位置落后于在前的第2N+1个宏块行的处理位置至少两个宏块。此时,第2N+1个宏块行由Corel处理,由于前一轮宏块行处理时Core0领先Core1至少两个宏块位置,Core0新进入下一轮宏块行处理时,Core1仍在进行上一轮宏块行处理,此时Core1处理的宏块行(第2N+1行)为Core0处理的宏块行(第2(N+1)行)的上一行。图8中,点状宏块表示Core1处理的宏块(属于第2N+1行),斜线状宏块表示Core0开始处理的新的一行的宏块(属于2(N+1)),Core0处理的宏块位于Core1处理的宏块的后面。
本实施例中,考虑到仲裁授权的line buffer ready flag因多核同步机制会产生滞后,为了消除由此带来的时间开销,还可以对应每个全功能硬件解码器设置一组乒乓预取缓存(Ping-Pong buffer)来存放上一行的line buffer数据。
参见图9所示,在每个全功能硬件解码器中,设置有一个单核行缓存预取模块。所述单核行缓存预取模块是由第一缓存(buf0)和第二缓存(buf1)组成的乒乓预取缓存,通过乒乓预取缓存来存放上一宏块行的行缓存数据。
具体的,可以通过第一缓存和第二缓存进行轮流切换,在第一缓存执行当前第一个命令时第二缓存预取下一个命令需要的数据,前述第一个命令执行完成时切换到第二缓存执行前述下一个命令,以此类推,通过在第一缓存和第二缓存进行轮流切换节省硬件执行过程中的时间开销。
此时,所述单核行缓存预取模块被配置为:从一个宏块行的最左侧宏块开始,先从双核共享的行缓存中将需要的数据读入乒乓预取缓存中,首次填入时,将第一缓存和第二缓存全部填满,待解码器内部的一个宏块解码完成后,更新相应的第一缓存或第二缓存并将对应缓存所记载的信息回写至共享行缓存上;回写完成后回收该缓存并预取下一个宏块所需要的行缓存数据,如此反复操作直到图像的最右侧。
参见图10所示,示例了从一行的最左侧开始启动时,先从双核共享的行缓存(linebuffer,buffer可简称buf)将需要的数据读入乒乓预取缓存(Ping-Pong buffer)。
首次写入数据时,可以先把第一缓存(buf0)和第二缓存(buf1)全部填满。如果不是首次写入数据,则通过一个缓存一一比如第一缓存一一进行解码器内部存取(internalaccess)操作,内部存取时先读后写。待解码器内部的一个宏块解码完成后,更新相应的第一缓存并将该第一缓存记载的信息回写至共享行缓存上(update bufx to line buf,图10中的bufx表示第x缓存,x可以取0和1,分别表示buf0和buf1),回写完成后回收所述第一缓存并预取下一个宏块所需要的行缓存(line buffer)数据(prefetch line buf to bufx);如此反复操作直到图像的右侧。
需要说明的是,图10中的步骤update bufx to line buf到prefetch line bufto bufx是基于同一个bufx的连续操作,属于乒乓预取缓存(Ping-Pong buffer)的原子操作。
本发明的另一实施例,还提供了利用前述实施例中的通用多核并行解码器***的视频解码方法。所述方法包括如下步骤:
步骤100,接收视频码流数据。
步骤200,通过解码固件解析视频码流上层的非熵编码数据,通过多核硬件解码加速器处理视频码流中宏块层的解码任务,所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理。
其中,所述多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器,通过预处理器模块进行视频码流的熵解码,每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块以实现多核同步解码。
本实施例中,所述视频可以为AVC视频或HEVC视频。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明提供的上述技术方案,可以用于AVC视频或HEVC视频的多核并行解码,通过对视频解码器进行软硬件划分,结合Slice Queue策略,实现了软硬件并行处理。同时,采用预处理器和多核全功能硬件解码器,结合Line Queue策略,实现了上下宏块行的并行处理。再则,设置了多核间Line buffer数据共享及同步管理方案,可以提高宏块行并行解码的准确性和稳定性。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (8)

1.一种通用多核并行解码器***,其特征在于:包括通信连接的解码固件和多核硬件解码加速器;
所述解码固件用于解析视频码流上层的非熵编码数据;所述多核硬件解码加速器用于处理视频码流中宏块层的解码任务;所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器,所述至少两个同构的全功能硬件解码器同时进行至少两行宏块行的并行解码;所述至少两个同构的全功能硬件解码器共用一组行缓存形成多核共享,所述行缓存上存储有宏块之间的依赖关系信息;所述预处理器模块用于视频码流的熵解码任务;每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块;
其中,所述预处理器模块被配置为:仅执行视频码流的熵解码任务,在每个宏块行的行首记录必要信息,并以Command Queue方式将上述必要信息分别压入每个全功能硬件解码器的Line Queue中;
通过Slice Queue进行Slice并行处理时,所述解码固件被配置为:完成视频码流上层解析后,将Slice上层参数信息打包压入Slice Queue;所述多核硬件解码加速器被配置为:查询Slice Queue数据的ready信息,在读取队列并完成配置后,解析当前Slice内宏块直至该Slice内宏块解析完成,解析结束后发出中断信号,释放Slice Queue。
2.根据权利要求1所述的通用多核并行解码器***,其特征在于:多核硬件解码加速器包括第一全功能硬件解码器和第二全功能硬件解码器,所述第一全功能硬件解码器用于处理第2N个宏块行的解码,所述第二全功能硬件解码器用于处理第2N+1个宏块行的解码,其中,N取0以上的整数;两个全功能硬件解码器共用一组行缓存形成双核共享,所述行缓存上存储有宏块之间的依赖关系信息;
全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。
3.根据权利要求2所述的通用多核并行解码器***,其特征在于:利用行缓存仲裁器授权行缓存就绪标志来实现双核同步解码;
所述多核硬件解码加速器被配置为:在每个宏块启动时,通过分配的全功能硬件解码器先读取行缓存信息,协调上下宏块行的全功能硬件解码器的处理速度使得对于正在解码中的两个上下宏块行,下宏块行的处理位置总落后于相邻上宏块行的处理位置至少两个宏块;在垂直方向上,当第一全功能硬件解码器开始新的第2(N+1)个宏块行的解码时,保证第2(N+1)个宏块行的处理位置落后于在前的第2N+1个宏块行的处理位置至少两个宏块。
4.根据权利要求3所述的通用多核并行解码器***,其特征在于:对应每个全功能硬件解码器设置有单核行缓存预取模块,其包括由第一缓存和第二缓存组成的乒乓预取缓存,通过乒乓预取缓存来存放上一宏块行的行缓存数据;
所述单核行缓存预取模块被配置为:从一个宏块行的最左侧宏块开始,先从双核共享的行缓存中将需要的数据读入乒乓预取缓存中,首次填入时,将第一缓存和第二缓存全部填满;待解码器内部的一个宏块解码完成后,更新相应的第一缓存或第二缓存并将对应缓存所记载的信息回写至共享行缓存上;回写完成后回收该缓存并预取下一个宏块所需要的行缓存数据,如此反复操作直到图像的最右侧。
5.根据权利要求1至4中任一项所述的通用多核并行解码器***,其特征在于:所述非熵编码数据包括组成视频参数集VPS、序列参数集SPS、图像参数集PPS和Slice头信息中的一种或多种。
6.根据权利要求1至4中任一项所述的通用多核并行解码器***,其特征在于:所述宏块层的解码任务,包括全硬件的码流读取,熵解码, 反 DCT 变换,反量化,帧内帧间预测,运动补偿,像素重建和去方块滤波步骤。
7.一种根据权利要求1所述***的视频解码方法,其特征在于包括步骤:
接收视频码流数据;
通过解码固件解析视频码流上层的非熵编码数据,通过多核硬件解码加速器处理视频码流中宏块层的解码任务,所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
其中,
所述多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器,通过预处理器模块进行视频码流的熵解码,每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块。
8.根据权利要求7所述的视频解码方法,其特征在于:所述视频为AVC视频或HEVC视频。
CN202011154537.5A 2020-10-26 2020-10-26 通用多核并行解码器***及其应用 Active CN112422983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011154537.5A CN112422983B (zh) 2020-10-26 2020-10-26 通用多核并行解码器***及其应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011154537.5A CN112422983B (zh) 2020-10-26 2020-10-26 通用多核并行解码器***及其应用

Publications (2)

Publication Number Publication Date
CN112422983A CN112422983A (zh) 2021-02-26
CN112422983B true CN112422983B (zh) 2023-05-23

Family

ID=74840251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011154537.5A Active CN112422983B (zh) 2020-10-26 2020-10-26 通用多核并行解码器***及其应用

Country Status (1)

Country Link
CN (1) CN112422983B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660496B (zh) * 2021-07-12 2024-06-07 珠海全志科技股份有限公司 基于多核并行的视频流解码方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011166273A (ja) * 2010-02-05 2011-08-25 Mitsubishi Electric Corp 動画像符号化装置及び動画像符号化方法
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070217702A1 (en) * 2006-03-14 2007-09-20 Sung Chih-Ta S Method and apparatus for decoding digital video stream
JP4789200B2 (ja) * 2006-08-07 2011-10-12 ルネサスエレクトロニクス株式会社 動画符号化と動画復号とのいずれかを実行する機能モジュールおよびそれを含む半導体集積回路
CN101179720B (zh) * 2007-11-16 2010-09-01 海信集团有限公司 一种视频解码方法
CN101466037A (zh) * 2007-12-21 2009-06-24 北京中电华大电子设计有限责任公司 一种软硬件配合的视频解码器实现方法
CN107277505B (zh) * 2017-05-19 2020-06-16 北京大学 基于软硬件分区的avs-2视频解码器装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011166273A (ja) * 2010-02-05 2011-08-25 Mitsubishi Electric Corp 動画像符号化装置及び動画像符号化方法
CN105992008A (zh) * 2016-03-30 2016-10-05 南京邮电大学 一种在多核处理器平台上的多层次多任务并行解码算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
parallel video decoding in the emerging hevc standard;mauricio alvarez-mesa;《2012 IEEE international conference on acoustics speech and signal processing》;全文 *

Also Published As

Publication number Publication date
CN112422983A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
USRE49727E1 (en) System and method for decoding using parallel processing
US9210421B2 (en) Memory management for video decoding
CA2760425C (en) Method and system for parallel encoding of a video
US8213518B1 (en) Multi-threaded streaming data decoding
KR102144881B1 (ko) 비디오 처리를 위한 송신 장치 및 방법
US20080152014A1 (en) Method and apparatus for encoding and decoding of video streams
US9948941B2 (en) Circuit, method and video decoder for video decoding
CN104025594A (zh) 视频编码中的瓦片大小
US9020286B2 (en) Apparatus for dividing image data and encoding and decoding image data in parallel, and operating method of the same
KR20170077295A (ko) 병렬 처리, 전송 디멀티플렉서 및 비디오 비트스트림을 허용하는 코딩 개념
US20080298473A1 (en) Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
JP2013102298A (ja) 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
Chi et al. Improving the parallelization efficiency of HEVC decoding
US8090028B2 (en) Video deblocking memory utilization
US7680351B2 (en) Video deblocking method and apparatus
CN112422983B (zh) 通用多核并行解码器***及其应用
CN112422984B (zh) 多核解码***的码流预处理装置、***及方法
CN102075753B (zh) 一种视频编解码中去块滤波方法
Baaklini et al. H. 264 macroblock line level parallel video decoding on embedded multicore processors
CN113660496A (zh) 基于多核并行的视频流解码方法及装置
KR102171119B1 (ko) 복수개의 블록 기반의 파이프라인을 이용한 데이터 처리 속도 개선 장치 및 그 동작 방법
KR100821922B1 (ko) 미디어 디코딩용 국부 메모리 관리 장치
CN113115043A (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