CN112422984B - 多核解码***的码流预处理装置、***及方法 - Google Patents

多核解码***的码流预处理装置、***及方法 Download PDF

Info

Publication number
CN112422984B
CN112422984B CN202011154927.2A CN202011154927A CN112422984B CN 112422984 B CN112422984 B CN 112422984B CN 202011154927 A CN202011154927 A CN 202011154927A CN 112422984 B CN112422984 B CN 112422984B
Authority
CN
China
Prior art keywords
code stream
decoding
code
competition
macro block
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
CN202011154927.2A
Other languages
English (en)
Other versions
CN112422984A (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 CN202011154927.2A priority Critical patent/CN112422984B/zh
Publication of CN112422984A publication Critical patent/CN112422984A/zh
Application granted granted Critical
Publication of CN112422984B publication Critical patent/CN112422984B/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/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/423Methods 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 characterised by memory arrangements
    • H04N19/426Methods 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 characterised by memory arrangements using memory downsizing methods
    • 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

本发明公开了一种多核解码***的码流预处理装置、***及方法,涉及视频解码技术领域。所述码流预处理装置,包括去防竞争码模块、码流缓存模块和熵解码模块;去防竞争码模块用于获取内存中的原始码流数据,并进行去防竞争码处理以获得码流净荷数据;码流缓存模块用于对码流净荷数据和其对应的防竞争码信息进行存储;熵解码模块用于读取码流缓存模块中码流净荷数据进行熵解码;在熵解码过程中,计算包括防竞争码在内的码流总比特数,以供多核解码***中宏块行对应的解码单核定位该宏块行的码流起始字段位置。本发明基于硬件实现了将码流按宏块行进行分段定位,使得多核解码***可以直接面向码流原始数据展开解码,资源占用少,节省了内存需求。

Description

多核解码***的码流预处理装置、***及方法
技术领域
本发明涉及视频解码技术领域,尤其涉及一种多核解码***的码流预处理装置、***及方法。
背景技术
超高清视频产业的发展,对驱动以视频为重要载体的5G、安防等行业智能化转型,以及提升我国信息产业和文化产业整体实力都具有重大意义。而超高清视频技术自然而然地对视频编解码处理提出了更高的要求。对于高清视频,现行的主流视频压缩标准包括Advanced Video Coding(简称AVC)和High Efficiency Video Coding(简称HEVC)等,软件解码会带来很大的CPU、功耗等开销,因此业界通常采用专门的硬件加速器作为视频解码器(简称VDEC(全称Video Decoder)来执行视频解码。以常用的单核硬件解码器为例,单核硬件解码器多采用流水线设计,以宏块(AVC中表示为MB,即Macro Block;HEVC中表示为CTB,即Coding Tree Blocks)作为流水单元。对于超高清视频,解码器要实现8K@30fps/4K@120fps性能,上述单核硬件解码器在600MHz时钟运行频率内已很难满足性能需求。因此,现有技术中提出了视频解码器的多核设计方案以实现高效并行解码,多核并行的良好可扩展性可以满足更高性能需求。
目前,在AVC/HEVC中,采用单一线程解码时,对一帧内的宏块(AVC中的MB,HEVC中的CTB)的处理顺序一般是从左到右、从上到下。一个宏块在熵解码、intra预测、inter预测、去块滤波等过程中通常会依赖到其左侧、上侧相邻宏块信息。要实现一帧内的宏块并行处理,就必须找出数据独立的宏块。现有技术中提供了一种2D)Wave按行并行解码算法,其类似于HEVC Wavefront思想。具体的,2D)Wave按行并行解码算法可以根据预设协议,令与一个宏块相互独立的最接近的宏块位于“右2,上1”的相对位置上,典型宏块的依赖关系参见图1所示,斜线宏块(x,y)和斜线宏块(x+2,y)1)为相互独立的宏块,宏块(x,y)的依赖宏块为点状宏块(x,y)1)和点状宏块(x+1,y)1)。如此,只要在多线程间加上同步限制,保证上行解码线程最少领先下行线程两个宏块,他们就能够同时被解码。参见图2所示,完整的是已解码宏块10,花格子的为解码中宏块20,空白的为未解码宏块30。视频解码时,每个线程负责一行宏块的解码,上下各行间保持前后波浪式向右递进解码,从而实现宏块并行处理。在4K/8K超高清应用场景中,通过2D)Wave算法可以大幅提升并行度,加速高清视频解码处理。
上述2D)Wave按行并行解码算法在进行并行处理时,需要预知各行对应码流字段的起始位置。然而,由于AVC/HEVC编码是将一帧内宏块行按从上到下的顺序进行熵编码压缩并将最终获得的压缩流按字节依序存储在内存当中,当各宏块行的码流长度不一时,下一宏块行的首个宏块对应的初始码流数据需要等上一宏块行的最末尾宏块解码按成才能进行定位。据此,现有技术中通常是通过设置一个预处理器来进行码流预解析处理,以便实现2D)Wave按行并行解码算法。现有的预处理器通常由一个熵解码(Entropy Decoder)模块和码流缓存(BitStream Buffer)模块构成,参见图3所示,所述预处理器能够在每个宏块行的行末尾宏块的熵解码完成后,记录当前宏块行所解析完的码流比特信息,并通过该记录信息标记定位下一宏块行的码流起始字段的偏移地址。
一方面,在AVC/HEVC视频编码标准中,整个***框架被分为了两个层面,包括视频编码层面(VCL:Video Coding Layer)和网络抽象层面(NAL:Network Abstract Layer)。其中,前者负责有效表示视频数据的内容,后者负责格式化数据并提供头信息,以保证数据适合在各种信道和存储介质上传输。现有的AVC/HEVC视频码流通常包括一系列的NAL单元,为了将相邻两个NAL单元分开形成一个界线(以方便解码器从视频流数据中分辨每个NALU的起始位置),相邻两个NAL单元之间会额外***一段起始码(Start Code)以标识一个新NAL单元的开始,所述起始码(Start Code)通常被设定为“0x00_00_00_01”或“0x00_00_01”等固定序列。同时,为了区分起始码(Start Code)和NAL单元内可能出现的“0x00_00_01”实质码流数据,编码器会在实质码流数据的最后一个字节0x01前***防竞争码——比如“0x03”——以区分起始码,通常为0xXX序列。参见图4所示,左侧为NAL单元内的实质码流数据,右侧为***防竞争码“0x03”后的封装码流数据。然后,解码器在NAL单元内部检测到“0x00_00_03”的序列时,将0x03丢弃,恢复为前述实质码流数据(或称码流净荷数据)。然而,由于熵解码每次是按不定长比特而非字节来解析码流,破坏了码流数据中的原始字节排列,使得熵解码自身无法检测码流数据中的防竞争码字节序列(即,0x00_00_03),即无法去除无效的防竞争码数据。
另一方面,现有技术中虽然也提出了将存储原始码流数据(***了防竞争码的码流)和实质码流数据(丢弃了防竞争码的码流)独立进行存储以便使用的技术方案,参见图5所示,原始码流数据(BitStream Source)存储在内存空间S中,对内存空间S中原始码流数据进行防竞争码丢弃操作后将得到的实质码流数据(或称码流净荷数据,BitStreamPayload)写入内存空间D中,使熵解码及后续并行解码的解析对象直接面向内存空间D中的实质码流数据。然而,上述技术方案会带来额外的内存读写带宽,并消耗额外的内存空间。
综上所述,如何基于现有技术提供一种适用于需要定位码流字段起始位置的并行解码算法的、资源占用少、内存需求小的多核解码***的码流预处理方案是当前亟需解决的技术问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种多核解码***的码流预处理装置、***及方法。本发明提供基于硬件实现了将码流按宏块行进行分段定位,可以精确获取各宏块行消耗的包括防竞争码在内的码流总比特数,并使得多核解码***可以直接面向码流原始数据展开解码,资源占用少,节省了内存需求。本发明适用于各种需要预知码流起始字段位置以便进行并行处理的并行解码算法,比如2D)Wave按行并行解码算法。
为实现上述目标,本发明提供了如下技术方案:
一种多核解码***的码流预处理装置,包括去防竞争码模块、码流缓存模块和熵解码模块;
所述去防竞争码模块与内存连接,用于获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据;
所述码流缓存模块与去防竞争码模块连接,用于对前述码流净荷数据和其对应的防竞争码信息进行存储;
所述熵解码模块与码流缓存模块连接,用于读取码流缓存模块中码流净荷数据进行熵解码;在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
进一步,所述去防竞争码模块被配置为:
从内存中读取原始码流数据,对所述原始码流数据进行防竞争码检测;在检测到预设格式的、与防竞争码相关的字节序列时,剔除该字节序列中的防竞争码后获得码流净荷数据,并将所述码流净荷数据和被剔除的防竞争码信息传输至码流缓存模块。
进一步,所述防竞争码信息为防竞争码字节数,所述码流缓存模块采用先进先出寄存器对码流净荷数据和防竞争码字节数进行读写。
进一步,所述熵解码模块被配置为:读取码流净荷数据进行熵解码,在当前码流净荷数据解析完成后,按顺序读取码流缓存模块中的下一段码流净荷数据;以及,在任一宏块行的熵解码过程中,获得解析至该宏块行所累计消耗的码流净荷数据比特数BitsNumbp和累计被剔除的防竞争码的字节数BytesNum03;以及,当该宏块行的行末尾宏块熵解码结束时,通过如下公式计算解析至该宏块行所累计消耗的基于原始码流数据的码流总比特数:码流总比特数BitsOffset=BitsNumbp+(BytesNum03×8),并将所述码流总比特数BitsOffset写入Line Queue中。
多核解码***中该宏块行对应的解码单核,通过读取前述Line Queue中的码流总比特数信息来定位该宏块行的码流起始字段位置。
进一步,所述防竞争码对应的字节序列为0x03,对应的,所述预设格式的、与防竞争码相关的字节序列为0x00_00_03。
本发明还提供了一种通用多核并行解码器***,包括通信连接的解码固件和多核硬件解码加速器;
所述解码固件用于解析视频码流上层的非熵编码数据;所述多核硬件解码加速器用于处理视频码流中宏块层的解码任务;所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器;
所述预处理器模块为前述的码流预处理装置,用于视频码流的熵解码任务;
每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块。
进一步,所述多核硬件解码加速器包括第一全功能硬件解码器和第二全功能硬件解码器,所述第一全功能硬件解码器用于处理第2N个宏块行的解码,所述第二全功能硬件解码器用于处理第2N+1个宏块行的解码,其中,N取0以上的整数;两个全功能硬件解码器共用一组行缓存形成双核共享,所述行缓存上存储有宏块之间的依赖关系信息;
全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。
本发明还提供了一种2D)Wave按行并行解码***,用于对视频码流进行并行解码,包括多个解码单核形成的多线程解码,每个解码单核负责一行宏块的解码,上下各宏块行间保持前后波浪式向右递进解码,所述***还包括前述的码流预处理装置。
进一步,所述视频为AVC视频或HEVC视频。
本发明还提供了一种多核解码***的码流预处理方法,包括如下步骤:
获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据;
将前述码流净荷数据和其对应的防竞争码信息写入缓存;
通过熵解码模块读取缓存的信息进行熵解码;在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:本发明提供的多核解码***的码流预处理装置,基于硬件实现了将码流按宏块行进行分段定位,可以精确获取各宏块行消耗的包括防竞争码在内的码流总比特数,从而使整个多核解码***可以直接面向码流原始数据展开解码,资源占用少,节省了内存需求。
一方面,本发明码流预处理装置通过设置一个硬件的去防竞争码模块,便于熵解码模块精确统计各宏块行消耗的包括防竞争码(0x03)在内的码流总比特数,从而使整个多核解码***直接面向NAL单元中的码流原始数据展开解码,无需消耗额外的内存空间。另一方面,本发明提出的多核解码***的码流预处理装置,实现了码流按宏块行分段定位,可用于2D-Wave按行并行解码算法中码流的预处理,适用于现行的主流视频压缩标准AVC和HEVC视频。
附图说明
图1为现有技术中的宏块的依赖关系示意图。
图2为现有技术中的多个线程进行并行解码处理的操作示意图。
图3为现有技术中的预处理器的模块结构示意图。
图4为现有技术中的针对NAL单元的码流进行防竞争码处理的操作示意图。
图5为现有技术中的通过软件进行码流处理的操作示意图。
图6为本发明实施例提供的预处理器的模块结构示意图。
图7为本发明实施例提供的去防竞争码模块的数据读写示意图。
图8为图7对应的时序图。
附图标记说明:
已解码宏块10,解码中宏块20,未解码宏块30。
具体实施方式
以下结合附图和具体实施例对本发明公开的多核解码***的码流预处理装置、***及方法作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
参见图6所示,为本发明实施例提供额一种多核解码***的码流预处理装置。
所述码流预处理装置(Pre)parser,或者预处理器)包括去防竞争码模块(DeStuffing Block)、码流缓存(BitStream Buffer)模块和熵解码(Entropy Decoder)模块。
所述去防竞争码模块与内存连接,用于获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据。
所述码流缓存模块与去防竞争码模块连接,用于对前述码流净荷数据和其对应的防竞争码信息进行存储。
所述熵解码模块与码流缓存模块连接,用于读取码流缓存模块中码流净荷数据进行熵解码。在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
具体的,所述去防竞争码模块(Destuffing Block)被配置为:从内存(DDR)中读取原始码流(BitStream source)数据(单段BitStream数据可以为64bit(位)数据),对所述原始码流数据进行防竞争码检测;以及,在检测到预设格式的、与防竞争码相关的字节序列时,剔除该字节序列中的防竞争码后获得码流净荷数据(64bit数据),并将所述码流净荷数据和被剔除的防竞争码信息传输至码流缓存模块。
作为典型方式的举例而非限制,所述防竞争码对应的字节序列可以为0x03,对应的,所述预设格式的、与防竞争码相关的字节序列为0x00_00_03。此时,读取原始码流数据,在检测到“0x00_00_03”字节序列时将其中的“0x03”剔除。然后将将剔除“0x03”后的码流净荷数据、以及该码流净荷数据中被剔除的“0x03”字节数一并写入码流缓存(BitStreamBuffer)模块中,参见图7所示。图7右侧为输入的原始码流数据,包括具有防竞争码0x03字节序列的数据“0x11_22_00_00_03_33_44_55_66_77_88_99_99_99_99_99”。图7左侧为经去防竞争码模块处理后的输出信息,包括码流净荷数据(Bitstream Payload)“0x11_22_00_00_33_44_55_66”和被剔除的防竞争码的字节数“0x1”。对应的时序图参见图8所示。
所述码流缓存(BitStream Buffer)模块,用于缓存去防竞争码模块的输出信息,包括码流净荷数据(Bitstream Payload)、防竞争码的0x03的字节数。本实施例中,码流缓存模块内部采用先进先出寄存器(FIFO)实现。
所述熵解码(Entropy Decoder)模块被配置为:
读取码流净荷数据进行熵解码,在当前码流净荷数据解析完成后,按顺序读取码流缓存模块中的下一段码流净荷数据。即,解析读完当前码流净荷数据后,接着读取码流缓存模块中的下一段数据进行熵解码。
以及,在任一宏块行的熵解码过程中,获得解析至该宏块行所累计消耗的码流净荷数据比特数BitsNumbp和累计被剔除的防竞争码的字节数BytesNum03。即,在宏块行的熵解码过程中不断统计更新所消耗的码流净荷数据比特数BitsNumbp、及所消耗的码流净荷数据对应被剔除的“0x03”字节数目BytesNum03
以及,当该宏块行的行末尾宏块熵解码结束时,通过如下公式计算解析至该宏块行所累计消耗的基于原始码流数据的码流总比特数:码流总比特数BitsOffset=BitsNumbp+(BytesNum03×8),即所述码流总比特数为累计消耗的码流净荷数据比特数与累计被剔除的防竞争码的字节数对应的比特数之和;然后将码流总比特数BitsOffset写入行缓存队列(Line Queue)中;该宏块行对应的解码单核,可以通过读取前述行缓存队列(Line Queue)中的码流总比特数BitsOffset来定位该宏块行的码流起始字段位置。
本发明提供的上述码流预处理装置,可以用于2D)Wave按行并行解码***中的码流预处理。所述2D)Wave按行并行解码***用于对视频码流进行并行解码,包括多个解码单核形成的多线程解码,每个解码单核负责一行宏块的解码,上下各宏块行间保持前后波浪式向右递进解码,通过前述的码流预处理装置进行码流预处理,对码流按宏块行进行分段定位。
具体的,通过码流预处理装置能够在每行行末宏块熵解码完成后,精确统计并记录各宏块行消耗的包括防竞争码(0x03)在内的码流总比特数,并将此信息写入对应的行缓存队列中,交互给2D)Wave并行解码***中各宏块行解码单核,此信息可以用于各宏块行解码单核定位该宏块行对应的码流起始字段位置。从而使整个多核解码***直接面向NAL单元中的码流原始数据展开解码,相比于现有技术,节省了软件处理的额外带宽、内存需求,适用于现行的主流视频压缩标准AVC和HEVC。
本发明的另一实施例,还提供了一种通用多核并行解码器***。
所述***包括通信连接的解码固件和多核硬件解码加速器。
所述解码固件用于解析视频码流上层的非熵编码数据。
所述多核硬件解码加速器,用于处理视频码流中宏块层的解码任务。本实施例中,多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器。所述的全功能硬件解码器,是指该硬件解码器至少能够处理宏块行解码所必需的反DCT变换、反量化、帧内帧间预测和像素重建几个步骤。
所述预处理器模块用于视频码流的熵解码任务,采用在前实施例中的码流预处理装置。所述码流预处理装置包括去防竞争码模块、码流缓存模块和熵解码模块。所述去防竞争码模块与内存连接,用于获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据。所述码流缓存模块与去防竞争码模块连接,用于对前述码流净荷数据和其对应的防竞争码信息进行存储。所述熵解码模块与码流缓存模块连接,用于读取码流缓存模块中码流净荷数据进行熵解码。在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
每个所述全功能硬件解码器负责对一行宏块行进行包括反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变换、反量化、帧内帧间预测、像素重建和去方块滤波等步骤。
在本实施例中,软/硬件以视频码流中Slice层级作为交互单元,通过视频解码器内部的Slice Queue(即,条队列)进行数据交互。解码固件VDEC_FW和多核硬件解码加速器VDEC_MCORE的交互流程可以如下:
1)解码固件VDEC_FW完成码流上层解析任务后,将Slice上层参数信息打包压入Slice Queue队列,即将信息放入(push)到Slice Queue的队列中进行排队。
此时,解码固件被配置为:完成视频码流上层解析后,将Slice上层参数信息打包压入Slice Queue。
2)多核硬件解码加速器VDEC_MCORE查询Slice Queue数据的ready信息(就绪状态信息),读取队列信息并完成配置后,全硬件解析当前Slice内宏块直至结束,并在结束时发出中断信号,释放Slice Queue,即释放(pop)Slice Queue的队列中的对应信息。
此时,多核硬件解码加速器被配置为:查询Slice Queue数据的ready信息,在读取队列并完成配置后,解析当前Slice内宏块直至该Slice内宏块解析完成,解析结束后发出中断信号,释放Slice Queue。
同构的全功能硬件解码器可以设置为两个以上(包括两个),设置为两个时称为双核硬件解码加速器,设置为三个时称为三核硬件解码加速器,设置为四个时称为四核硬件解码加速器,以此类推。每个全功能硬件解码器负责一行宏块行的解码,双核硬件解码加速器可以同时进行两行宏块行的并行解码工作,三核硬件解码加速器可以同时进行三行宏块行的并行解码工作,以此类推。
以双核硬件解码加速器为例,所述多核硬件解码加速器包括第一全功能硬件解码器和第二全功能硬件解码器,所述第一全功能硬件解码器用于处理第2N个宏块行的解码,所述第二全功能硬件解码器用于处理第2N+1个宏块行的解码,其中,N取0以上的整数;两个全功能硬件解码器共用一组行缓存形成双核共享,所述行缓存上存储有宏块之间的依赖关系信息。
在执行解码任务时,每个全功能硬件解码器可以检查各自的Line Queue(行队列)里是否有指令,而后根据指令的内容启动一个宏块行的解码。同时,每个全功能硬件解码器在解码过程中,还可以监控上一个宏块行对应的全功能硬件解码器的工作位置,必须比上一行的处理位置晚至少两个宏块。
两个全功能硬件解码器可以共用一组line buffer(行缓存)形成双核共享。所述line buffer上存储有宏块间的所有依赖关系信息。两个全功能硬件解码器可以共同维护line buffer,比如可以包括line buffer的读取、更新操作等。
此时,所述全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。具体实施时,可以通过设定多核同步机制来协调两个全功能硬件解码器的处理位置,以保持上下行正在解码宏块至少间隔两个宏块。本实施例中,优选的,通过行缓存仲裁器(即,line buffer arbiter)仲裁授权行缓存就绪标志(即,line buffer readyflag)的方式来实现双核同步解码:因为全功能硬件解码器在每个宏块启动时都需要先读取line buffer信息。所述第一全功能硬件解码器和第二全功能硬件解码器都通过行缓存仲裁器与行缓存通信连接,当全功能硬件解码器需要读取行缓存信息时,需要得到行缓存仲裁器授权的行缓存就绪标志。如此,通过预设行缓存仲裁器的仲裁规则,就可以协调第一全功能硬件解码器和第二全功能硬件解码器的处理速度。
码流预处理装置的其它技术特征参考在前实施例,在此不再赘述。
本发明的另一实施例,还提供了一种多核解码***的码流预处理方法。所述方法包括如下步骤:
步骤100,获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据。该步骤可以通过在前实施例中的去防竞争码模块执行。
步骤200,将前述码流净荷数据和其对应的防竞争码信息写入缓存。该步骤可以通过在前实施例中的码流缓存模块执行。
步骤300,通过熵解码模块读取缓存的信息进行熵解码;在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。该步骤可以通过在前实施例中的熵解码模块执行。
去防竞争码模块、码流缓存模块和熵解码模块的其它技术特征参考在前实施例,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (10)

1.一种多核解码***的码流预处理装置,其特征在于:包括去防竞争码模块、码流缓存模块和熵解码模块;
所述去防竞争码模块与内存连接,用于获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据;
所述码流缓存模块与去防竞争码模块连接,用于对前述码流净荷数据和其对应的防竞争码信息进行存储;
所述熵解码模块与码流缓存模块连接,用于读取码流缓存模块中码流净荷数据进行熵解码;在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
2.根据权利要求1所述的码流预处理装置,其特征在于:所述去防竞争码模块被配置为,
从内存中读取原始码流数据,对所述原始码流数据进行防竞争码检测;在检测到预设格式的、与防竞争码相关的字节序列时,剔除该字节序列中的防竞争码后获得码流净荷数据,并将所述码流净荷数据和被剔除的防竞争码信息传输至码流缓存模块。
3.根据权利要求2所述的码流预处理装置,其特征在于:所述防竞争码信息为防竞争码字节数,所述码流缓存模块采用先进先出寄存器对码流净荷数据和防竞争码字节数进行读写。
4.根据权利要求3所述的码流预处理装置,其特征在于:所述熵解码模块被配置为,读取码流净荷数据进行熵解码,在当前码流净荷数据解析完成后,按顺序读取码流缓存模块中的下一段码流净荷数据;以及,在任一宏块行的熵解码过程中,获得解析至该宏块行所累计消耗的码流净荷数据比特数BitsNumbp和累计被剔除的防竞争码的字节数BytesNum03;以及,当该宏块行的行末尾宏块熵解码结束时,通过如下公式计算解析至该宏块行所累计消耗的基于原始码流数据的码流总比特数:码流总比特数BitsOffset = BitsNumbp +(BytesNum03 ×8),并将所述码流总比特数BitsOffset写入Line Queue中;
多核解码***中该宏块行对应的解码单核,通过读取前述Line Queue中的码流总比特数信息来定位该宏块行的码流起始字段位置。
5.根据权利要求2所述的码流预处理装置,其特征在于:所述防竞争码对应的字节序列为0x03,对应的,所述预设格式的、与防竞争码相关的字节序列为0x00_00_03。
6.一种通用多核并行解码器***,其特征在于:包括通信连接的解码固件和多核硬件解码加速器;
所述解码固件用于解析视频码流上层的非熵编码数据;所述多核硬件解码加速器用于处理视频码流中宏块层的解码任务;所述解码固件和多核硬件解码加速器之间以视频码流中的Slice层级数据作为交互单元,通过Slice Queue进行Slice并行处理;
多核硬件解码加速器包括预处理器模块和至少两个同构的全功能硬件解码器;
所述预处理器模块为权利要求1-5中任一项所述的码流预处理装置,用于视频码流的熵解码任务;
每个所述全功能硬件解码器负责对一行宏块行进行包括反DCT变换、反量化、帧内帧间预测和像素重建步骤在内的解码,并使两个相邻的上下行中正在解码的宏块至少间隔两个宏块。
7.根据权利要求6所述的通用多核并行解码器***,其特征在于:所述多核硬件解码加速器包括第一全功能硬件解码器和第二全功能硬件解码器,所述第一全功能硬件解码器用于处理第2N个宏块行的解码,所述第二全功能硬件解码器用于处理第2N+1个宏块行的解码,其中,N取0以上的整数;两个全功能硬件解码器共用一组行缓存形成双核共享,所述行缓存上存储有宏块之间的依赖关系信息;
全功能硬件解码器被配置为:检查各自的Line Queue里是否有指令,包含指令时,根据指令的内容启动一个宏块行的解码;以及,在解码过程中,监控上一个宏块行对应的全功能硬件解码的工作位置,并使自己的处理位置比上一个宏块行的处理位置晚至少两个宏块。
8.一种2D-Wave按行并行解码***,用于对视频码流进行并行解码,包括多个解码单核形成的多线程解码,每个解码单核负责一行宏块的解码,上下各宏块行间保持前后波浪式向右递进解码,其特征在于:
还包括权利要求1-5中任一项所述的码流预处理装置。
9.根据权利要求8所述的***,其特征在于:所述视频为AVC视频或HEVC视频。
10.一种多核解码***的码流预处理方法,其特征在于包括如下步骤:
获取内存中的原始码流数据,并对原始码流数据进行去防竞争码处理以获得码流净荷数据;
将前述码流净荷数据和其对应的防竞争码信息写入缓存;
通过熵解码模块读取缓存的码流净荷数据进行熵解码;在熵解码过程中,当一个宏块行的行末尾宏块完成熵解码时,获得解析到该宏块行所累计消耗的包括防竞争码在内的码流总比特数,所述码流总比特数用于供该宏块行对应的解码单核定位该宏块行的码流起始字段位置。
CN202011154927.2A 2020-10-26 2020-10-26 多核解码***的码流预处理装置、***及方法 Active CN112422984B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011154927.2A CN112422984B (zh) 2020-10-26 2020-10-26 多核解码***的码流预处理装置、***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011154927.2A CN112422984B (zh) 2020-10-26 2020-10-26 多核解码***的码流预处理装置、***及方法

Publications (2)

Publication Number Publication Date
CN112422984A CN112422984A (zh) 2021-02-26
CN112422984B true CN112422984B (zh) 2023-02-28

Family

ID=74841725

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011154927.2A Active CN112422984B (zh) 2020-10-26 2020-10-26 多核解码***的码流预处理装置、***及方法

Country Status (1)

Country Link
CN (1) CN112422984B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660496B (zh) * 2021-07-12 2024-06-07 珠海全志科技股份有限公司 基于多核并行的视频流解码方法及装置
CN115866254A (zh) * 2022-11-24 2023-03-28 亮风台(上海)信息科技有限公司 一种传输视频帧及摄像参数信息的方法与设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829299B1 (en) * 1997-10-02 2004-12-07 Kabushiki Kaisha Toshiba Variable length decoder and decoding method
CN102469344A (zh) * 2010-11-16 2012-05-23 腾讯科技(深圳)有限公司 一种视频码流加、解密方法、装置及通信、存储终端

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829299B1 (en) * 1997-10-02 2004-12-07 Kabushiki Kaisha Toshiba Variable length decoder and decoding method
CN102469344A (zh) * 2010-11-16 2012-05-23 腾讯科技(深圳)有限公司 一种视频码流加、解密方法、装置及通信、存储终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AVS视频编码器中熵编码的研究;王智;《中国优秀硕士学位论文全文数据库》;20090215(第02期);全文 *

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6721638B2 (ja) 並列処理を許容している符号化概念、トランスポートデマルチプレクサおよびビデオビットストリーム
US9210421B2 (en) Memory management for video decoding
TWI636687B (zh) 視訊資料串流概念技術
TWI586179B (zh) 用以自資料串流重構圖像的解碼器及方法、用以將圖像編碼入資料串流的編碼器及方法、與相關電腦程式及機器可存取媒體
EP2324639B1 (en) System and method for decoding using parallel processing
CN112422984B (zh) 多核解码***的码流预处理装置、***及方法
JP7343663B2 (ja) ランダムアクセスポイントおよびピクチャタイプの識別方法
US10045037B2 (en) Method for encoding digital video data
JP2023015265A (ja) ネットワーク抽象化ユニットヘッダからのタイルの識別化
US20190356911A1 (en) Region-based processing of predicted pixels
EP2760211B1 (en) Image encoding apparatus
US8443413B2 (en) Low-latency multichannel video port aggregator
CN118075456A (zh) 视频解码、编码方法和解码器、编码器以及电子设备
US9344720B2 (en) Entropy coding techniques and protocol to support parallel processing with low latency
US20140092987A1 (en) Entropy coding techniques and protocol to support parallel processing with low latency
CN112422983B (zh) 通用多核并行解码器***及其应用
WO2020215216A1 (zh) 图像解码方法、解码器以及存储介质
CN112449196A (zh) 一种并发视频会话ip帧图像组的解码方法
RU2787711C1 (ru) Управление буфером декодированных изображений для кодирования видеосигналов
US20240146975A1 (en) Dynamic queuing of entropy-coded data for transmission in a bitstream
KR20170053031A (ko) 복수개의 블록 기반의 파이프라인을 이용한 데이터 처리 속도 개선 장치 및 그 동작 방법

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