CN112422987B - 适用于avc的熵解码硬件并行计算方法及应用 - Google Patents

适用于avc的熵解码硬件并行计算方法及应用 Download PDF

Info

Publication number
CN112422987B
CN112422987B CN202011155929.3A CN202011155929A CN112422987B CN 112422987 B CN112422987 B CN 112422987B CN 202011155929 A CN202011155929 A CN 202011155929A CN 112422987 B CN112422987 B CN 112422987B
Authority
CN
China
Prior art keywords
decoding
bypass
engine
decoding engine
bin
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
CN202011155929.3A
Other languages
English (en)
Other versions
CN112422987A (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 CN202011155929.3A priority Critical patent/CN112422987B/zh
Publication of CN112422987A publication Critical patent/CN112422987A/zh
Application granted granted Critical
Publication of CN112422987B publication Critical patent/CN112422987B/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/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/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

本发明公开了适用于AVC的熵解码硬件并行计算方法及应用,涉及视频解码技术领域。所述方法将多个常规解码引擎串联形成常规解码引擎串行链,其能够在一个时钟周期内进行多个bin的并行常规算术解码;其中,串联多个常规解码引擎的步骤为:获取当前进行常规算术解码的bin,在当前bin解出的值是MPS时,在该当前bin对应的第N‑1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。本发明将算术引擎串行成链,从电路级做到熵解码的并行计算,通用性好。

Description

适用于AVC的熵解码硬件并行计算方法及应用
技术领域
本发明涉及视频解码技术领域,尤其涉及一种适用于AVC的熵解码硬件并行计算方法及应用。
背景技术
H.264/AVC(即Advanced Video Coding)是现行的主流视频压缩标准之一,随着4K、8K超高清视频技术的到来,虽然AVC能带来上百倍的视频压缩率,但也难以避免越来越大的视频压缩流码率。作为举例,比如AVC Level 6.0能支持的最大码率可以高达240Mbps(兆比特/秒),由于熵解码自身具有较高的串行计算特性,采用高码率视频压缩流将直接导致熵解码计算时间的增加。因此,熵解码执行效率成为了视频解码器(Video Decoder)的一大性能瓶颈。熵编码压缩是一种无损压缩,其实现原理是使用新的编码来表示输入的数据,从而达到压缩的效果。
AVC标准有两种熵编码,分别为CABAC(Context-based Adaptive BinaryArithmetic Coding,即基于上下文自适应二进制算术编码)和CAVLC(Context-basedAdaptive Variable-Length Code,即基于上下文的自适应变长编码),CABAC熵解码是CABAC熵编码的逆过程,CAVLC熵解码是上述CAVLC熵编码的逆过程。其中,CABAC是基于上下文的自适应二进制算术编码,它的核心算法就是算术编码(Arithmetic Coding),具有以下特点:1)根据每一个语法元素的上下文来选取预测模型。2)使用本地的统计数据来估计概率。3)使用算术编码去除信息冗余。基于以上三点,CABAC相较CAVLC有更高的压缩比,CABAC也成为了H.265/HEVC标准中使用的唯一熵编码算法。
算术编码是基于概率统计学原理,即一个字符出现的概率越大,携带信息量就越少(高出现概率表明高可预测性),其所需要编码的长度就可以越小。CABAC中字符只有bit0、bit1两种,其主要编码步骤可以概括如下:步骤1),二值化:将语法元素值按照一定的方法转换成适合进行二进制算术编码的二进制字符串,每个字符为bit0或bit1(下文统称一个bin),常见二值化方法包括FL、U、TU、EGK等。二值算术编码过程的基本思想是用[0,1]中的实数来编码信源。步骤2),选择上下文模型:上下文模型是指对二值化后bin进行编码时使用的概率模型。概率模型与最近编码bin相关,会有多个概率模型可供选择。步骤3),算术编码:算术编码器根据第2步选择的概率模型对每个bin进行编码,需要注意的是每个bin只有两个数:0和1。步骤4),更新上下文模型:根据实际编码bin值来更新相应预测模型。例如,如果所编码的二进制bin为1,则预测模型中的1计数要增加。从上述步骤也可以看出,CABAC编码需要根据当前编码bin不断的动态更新概率表给后续参考,属于严格的串行计算。CABAC熵解码为以上步骤的逆过程,需要依次执行选择上下文模型、算术解码、更新模型、逆二值化得到最终语法元素值。传统的熵解码硬件电路,在编/解码时,一个时钟周期往往只能完成一个bin的计算(1bin/T)。
一方面,要实现熵解码的并行计算,就需要找到CABAC解码相互独立的宏块。在AVC中,CABAC以Slice(即,条)为一个编码周期,在同一周期内,编码过程具有极高的相关性,前述的CABAC解码的高度串行计算特性是指在同一个Slice下的特性。在新的Slice或者Frame(即,帧)解码时,CABAC会进行完整的初始化,包括初始化概率模型、模型范围区间Range等,使得新的Slice或者Frame解码与前序的Slice或者Frame相对独立。现有的熵解码并行计算研究也是多基于上述原理,其通常是在Slice或者Frame层利用多线程并行计算。然而,上述现有技术存在如下缺陷:由于其并行度完全受独立的Slice/Frame限制,这种并行计算通用性差,也难以为多核硬件解码器提供预解码。
虽然现有技术也提出了通过对未完全解码的输出比特进行预测的并行CABAC解码方法以满足高清视频图像的实时解码要求,比如中国专利z1200610167355.5,其公开了一种高效并行CABAC解码方法:该解码方法中包括语法元素分类处理方法,并行概率生成方法,并行算术解码方法,以及并行概率模型更新方法;所述的并行概率生成方法是生成多个相邻的输出比特的概率值时,不进行完成的算术解码,而是假设所有当前待解码的输出比特均为大概率值,按照这种假设的解码结果对语法元素类型和概率模型进行更新,得到算术解码所需要的新的概率值;所述的并行算术解码方法,在生成多个相邻的输出比特时,对每一个输出比特,设定该输出比特前面的所有同时解码的输出比特均为大概率值,按照这种设定对算术解码器的范围和偏移进行更新,根据更新过后的范围和偏移值进行完整的算术解码;所述的并行概率模型更新方法是利用输出有效标记来进行并行概率模型更新,每一个输出比特都对应一个有效标记,对于每一个输出比特,当该输出比特前面的所有同时解码的输出比特的完整解码值确实均为大概率值时,认为该输出比特有效,否则无效,并行概率模型更新模块只依据有效的输出比特进行概率模型的更新。然而,上述并行解码方法的步骤较为复杂和繁琐,硬件资源消耗高。
另一方面,常规解码的二进制算术解码和归一化过程主要包括比较、减法、查表、移位操作。在AVC中,为了减少计算的复杂度,CABAC首先建立一个64×4的二维表格TabRangeLPS[64][4]来存放预先计算好的乘法结果,表格的入口参数是pStateIdx和qCodIRangeIdx,其中qCodIRangeIdx由变量codIRange量化而来,量化方法是(codIRange>>6)&3。建立了概率模型和乘法模型后,在递进计算过程中CABAC必须保存一下变量:当前区间的下限codIOffset、当前区间的大小codIRange、当前MPS(大概率符号)字va1MPS、LPS(小概率符号)的概率编号pStateIdx。用transIdxLPS[pStateIdx]和transIdxMPS[pStateIdx]表示两个深度为64项的表格,其中pStateIdx的取值为0-63。接下来是归一化判断,当codIRange小于0x0100时,需进行归一化,如此,能在1个时钟周期内完成二进制化和归一化步骤。下面结合图1至图3描述现有技术中AVC协议下的一个bin的主要的算术解码过程。
参见图1所示,示例了AVC协议下的一个bin的算术解码过程。其中,符号CtxIdx表示查找计算得到的该bin对应的上下文模型索引号,DecodeBin(CtxIdx)表示根据CtxIdx值进行解码。解码时,需要根据CtxIdx值区分出三种不同解码类型,分别为:旁路算术解码,结束符算术解码和常规算术解码。其中,旁路算术解码类型对应图1中BypassFlag=1,按DecodeBypass解析,其对应的解码运算不需要参考概率模型,即无CtxIdx,上述旁路算术运算单元可以称为旁路解码引擎(Bypass Engine)。结束符算术解码类型对应图1中CtxIdx=276,按DecodeTerminate解析,这是解析CABAC“Slice结束符”这一特定语法元素时的独有类型,其对应的算术运算单元可以称为结束符解码引擎(Terminate Engine)。常规算术解码类型,也是最主要的算术解码类型,需要查询、维护概率表(需要输入CtxIdx),其对应的解码运算按DecodeDecision(ctxIdx)解析,其对应的算术运算单元可以称为常规解码引擎(Normal Engine)。
参见图2所示,示例了上述常规解码引擎(Normal Engine)解出一个bin的解码流程。图2中,binVal表示解出的bin值。MPS、LPS分别表示当前概率表上的大概率符号、小概率符号,为动态概率表中存储的信息之一,概率表由CtxIdx索引。MPS可为0或者1,对应的LPS可为1或者0,即MPS=0时LPS=1,反之MPS=1时LPS=0。概率表更新时,MPS、LPS可能会随解出的binVal为0、1概率发生对调。pStateIdx表示当前概率表上的状态值,为动态概率表中存储的信息之一,概率表由CtxIdx索引。Range表示当前区间的大小长度,即解码区间值。Offset表示当前区间的内偏移值,即解码过程中的偏移值。TabRangeLPS表示固定查找表,用于更新Range,由当前Range和当前pStateIdx索引。transIdxMPS表示固定查找表,用于更新binVal等于MPS时的pStateIdx,由当前pStateIdx索引。transIdxLPS表示固定查找表,用于更新binVa1等于LPS时的pStateIdx,由当前pStateIdx索引。
用于更新上述pStateIdx的查找表transIdxMPS和transIdxLPS的具体二维格式表参见图3所示。
是否能够基于前述的bin的算术解码过程中的固定查找表的更新机制,以及常规解码引擎中针对binVal为MPS或LPS时的区别运算方式来实现一个时钟周期内解析多个bin的并行计算,从而提供一种硬件资源消耗合理、通用性好、并行度高的熵解码硬件并行加速方法,是当前亟需解决的技术问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种适用于AVC的熵解码硬件并行计算方法及应用。本发明基于CABAC的算术运算引擎的硬件电路特点,将符合预设条件的算术运算引擎串行成链,从而实现在单时钟周期并行计算多个bin,从电路级做到熵解码的并行计算,通用性好。
为实现上述目标,本发明提供了如下技术方案:
一种适用于AVC的熵解码硬件并行计算方法,将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码;
其中,串联多个常规解码引擎的步骤为:获取当前进行常规算术解码的bin,在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
进一步,对于包括n+1个常规解码引擎的常规解码引擎串行链,最大的MPS串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
进一步,根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
进一步,还可以包括步骤:将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码;
其中,串联多个旁路解码引擎的步骤为:获取当前解码的bin对应的上下文模型索引号CtxIdx,根据CtxIdx值判定对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
进一步,对于包括n+1个旁路解码引擎的旁路解码引擎串行链,最大的旁路串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
本发明还提供了一种适用于AVC的熵解码硬件并行计算装置,包括常规解码引擎串联单元,其用于将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码;
其中,所述常规解码引擎串联单元包括信息采集模块和串联设置模块,
所述信息采集模块,用于获取当前进行常规算术解码的bin,并判断当前bin解出的值是MPS还是LPS;
所述串联设置模块,用于在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;以及,在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
进一步,对于包括n+1个常规解码引擎的常规解码引擎串行链,最大的MPS串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
进一步,还可以包括解码类型判断单元,其被配置为:根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;以及,
根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
进一步,还可以包括旁路解码引擎串联单元,其用于将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码;
其中,所述旁路解码引擎串联单元包括信息采集模块和串联设置模块;
所述信息采集模块,用于获取当前解码的bin对应的上下文模型索引号CtxIdx,并根据CtxIdx值判断对应的解码类型是否是旁路算术解码;
所述串联设置模块,用于在对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;以及,在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
本发明还提供了一种适用于AVC的视频解码器,包括用于进行熵解码的熵解码器,所述熵解码器包括前述任一项所述的熵解码硬件并行计算装置。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:
1)基于CABAC的算术运算引擎的硬件电路特点,将符合预设条件的算术运算引擎串行成链,从而实现在单时钟周期并行计算多个bin,从电路级做到熵解码的并行计算,通用性好。
2)本发明提出的CABAC熵解码硬件并行计算方法,针对像素点残差这一占视频压缩流码率主体的熵解码的算术解码计算展开优化,可获得n倍的并行度,并行度高。
附图说明
图1为AVC协议下的一个bin的算术解码过程示意图。
图2为常规解码引擎解出一个bin的解码运算流程图。
图3为CABAC建立的二维查找表。
图4为本发明实施例提供的常规解码引擎的输入输出系统的信息传输图。
图5为本发明实施例提供的常规解码引擎的运算电路的路径分析示意图。
图6为本发明实施例提供的常规解码引擎串行链的电路结构示意图。
图7为本发明实施例提供的旁路解码引擎的运算流程图。
图8为本发明实施例提供的旁路解码引擎的运算电路的结构示意图。
图9为本发明实施例提供的旁路解码引擎串行链的电路结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明公开的适用于AVC的熵解码硬件并行计算方法及应用作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
通过分析图2中的常规解码引擎的解码运算流程,可以抽象出常规解码引擎(Normal Engine)的输入输出系统的信息传输框图,参见图4所示。对于常规解码引擎的输入输出系统,输入信息可以包括当前Range、当前0ffset、当前pStateIdx和当前MPS,输出信息可以包括更新的Range、更新的0ffset、更新的pStateIdx和更新的MPS,以及解出的binVal(bin值)。
而通过分析图3中的查找表的更新机制,可以获得的pStateIdx的预测公式如下:
更新的pStateIdx=(当前pStateIdx≤62)?当前pStateIdx+1:当前pStateIdx。
即,判断当前pStateIdx是否小于等于62,判定当前pStateIdx小于等于62成立时(为真),更新的pStateIdx的值为当前pStateIdx的值加1,即pStateIdx++,判定当前pAtateIdx小于等于62不成立时(为假),更新的pStateIdx的值为当前pStateIdx。
如果常规解码引擎(Normal Engine)解出的当前bin值是MPS时,动态概率表中的MPS将保持不变,由于更新的pStateIdx可以通过上述预测公式直接预测,使得概率模型值能够直接预测而无需再查找固定表。也就是说,如果下一个bin与当前bin是属于同一个概率表CtxIdx,其概率模型值能够通过直接预测获得而无需再通过查找表获得。
一方面,根据AVC熵编码规则,语法元素coeff_abs_level_minus1在binidx≥1后的所有bin共享同一个CtxIdx,正好符合上述MPS优化条件。考虑到高码率码流通常都是源自大残差值,因此集中优化coeff_abs_level_minus1的并行计算可以极大的加速高码率流的熵解码过程。
另一方面,通过分析现有的常规解码引擎(Normal Engine)的运算电路,参见图5所示,当bin是MPS时,电路最长路径是经过一个加法器延时,之后经过最多1bit(比特)的左移,而当bin是LPS时,需经过两个加法器延时并叠加最多7bit(比特)的左移运算。也就是说,Bin为MPS时的运算电路延时明显小于Bin为LPS时。
本发明基于以上两点,提出了将多个相关解码引擎串联形成解码引擎串行链,从而实现在一个时钟周期内进行多个bin的并行解码方案。下面结合图6详细描述本发明提供的适用于AVC的熵解码硬件并行计算方法。
所述方法包括步骤:将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码。
具体的,串联多个常规解码引擎的步骤为:获取当前进行常规算术解码的bin。在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值。在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
作为举例而非显著,结合图6所示,比如获取当前进行常规算术解码的bin,在当前bin解出的值是MPS时,在该当前bin对应的第0号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第1号常规解码引擎;在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
也就是说,在电路时序满足的情况下,只要当前bin解出是MPS,便可以接着串入下一个常规解码引擎(Norma1 Engine),直到出现LPS。事实上,由于二值化过程的存在,解为MPS的连续bin出现概率极高,使得图6中的MPS串行链并行计算效率显著提高。
图6中示例了一个包括n+1个常规解码引擎的常规解码引擎串行链(分别为常规解码引擎0,常规解码引擎1,......,常规解码引擎n-1,常规解码引擎n),最大的MPS串行链级数n依赖于具体工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。本实施例中,最大串行链级数n,还可以根据实际提供的硬件资源进行调整,使得用户可以根据实际需要灵活调整常规解码引擎的串行数量。
本实施例中,一个bin的算术解码过程可以概括如下:获取当前待解码的bin对应的上下文模型索引号CtxIdx值,根据CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
具体的,可以首先判断BypassFlag是否等于1,BypassFlag等于1时判定为旁路算术解码类型,触发旁路解码引擎进行旁路算术解码;否则继续判断CtxIdx是否等于276,CtxIdx等于1时判定为结束符算术解码类型,触发结束符解码引擎进行结束符算术解码;否则判定为常规算术解码类型,触发常规解码引擎进行DecodeDecision(ctxIdx)解析。
考虑到除了常规解码引擎,旁路解码引擎也是较常用的熵解码计算单元,本发明还针旁路算术单元进行了并行优化。
对于旁路解码引擎(Bypass Engine),其不需要访问上下文概率表模型,其运算流程参见图7所示。一个引擎可以只设置一个加法器进行延时,旁路解码引擎的电路结构参见图8所示。
据此,本发明提出了将多个旁路解码引擎串行成链以加速并行运算。下面结合图9详细描述形成并行的旁路算术解码步骤。
将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码。
具体的,串联多个旁路解码引擎的步骤为:
获取当前解码的bin对应的上下文模型索引号CtxIdx。根据CtxIdx值判定对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值。在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
图9示例了包括n+1个旁路解码引擎的旁路解码引擎串行链,最大的旁路串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
当然,对于最大串行链级数n,用户可以根据实际提供的硬件资源进行调整,使得用户可以根据实际需要灵活调整旁路解码引擎的串行数量。
本发明提供的上述技术方案,基于MPS概率模型可预测、旁路算术解码无需概率模型的特点,在电路级实现熵解码的并行加速计算。
本发明的另一实施例,还提供了一种适用于AVC的熵解码硬件并行计算装置。
所述熵解码硬件并行计算装置包括常规解码引擎串联单元。
所述常规解码引擎串联单元,用于将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码。
具体的,所述常规解码引擎串联单元包括信息采集模块和串联设置模块。
所述信息采集模块,用于获取当前进行常规算术解码的bin,并判断当前bin解出的值是MPS还是LPS。
所述串联设置模块,用于在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;以及,在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
本实施例中,对于包括n+1个常规解码引擎的常规解码引擎串行链,最大的MPS串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
本实施例中,还可以包括解码类型判断单元,其被配置为:根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;以及,根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
本实施例中,还可以包括旁路解码引擎串联单元,其用于将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码。
具体的,所述旁路解码引擎串联单元包括信息采集模块和串联设置模块。
所述信息采集模块,用于获取当前解码的bin对应的上下文模型索引号CtxIdx,并根据CtxIdx值判断对应的解码类型是否是旁路算术解码。
所述串联设置模块,用于在对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;以及,在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
其它技术特征参考在前实施例,在此不再赘述。
本发明的另一实施例,还提供了一种适用于AVC的视频解码器,包括用于进行熵解码的熵解码器。
所述熵解码器包括熵解码硬件并行计算装置。所述熵解码硬件并行计算装置包括常规解码引擎串联单元。
所述常规解码引擎串联单元,用于将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码。
具体的,所述常规解码引擎串联单元包括信息采集模块和串联设置模块。
所述信息采集模块,用于获取当前进行常规算术解码的bin,并判断当前bin解出的值是MPS还是LPS。
所述串联设置模块,用于在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;以及,在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
本实施例中,还可以包括解码类型判断单元,其被配置为:根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;以及,根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
本实施例中,还可以包括旁路解码引擎串联单元,其用于将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码。
具体的,所述旁路解码引擎串联单元包括信息采集模块和串联设置模块。
所述信息采集模块,用于获取当前解码的bin对应的上下文模型索引号CtxIdx,并根据CtxIdx值判断对应的解码类型是否是旁路算术解码。
所述串联设置模块,用于在对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;以及,在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
其它技术特征参考在前实施例,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (10)

1.一种适用于AVC的熵解码硬件并行计算方法,其特征在于:将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码;
其中,串联多个常规解码引擎的步骤为:获取当前进行常规算术解码的bin,在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
2.根据权利要求1所述的方法,其特征在于:对于包括n+1个常规解码引擎的常规解码引擎串行链,最大的MPS串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
3.根据权利要求1所述的方法,其特征在于:根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
4.根据权利要求3所述的方法,其特征在于还包括步骤:将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码;
其中,串联多个旁路解码引擎的步骤为:获取当前解码的bin对应的上下文模型索引号CtxIdx,根据CtxIdx值判定对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
5.根据权利要求4所述的方法,其特征在于:对于包括n+1个旁路解码引擎的旁路解码引擎串行链,最大的旁路串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
6.一种适用于AVC的熵解码硬件并行计算装置,其特征在于:包括常规解码引擎串联单元,其用于将多个常规解码引擎串联形成常规解码引擎串行链,一个常规解码引擎负责一个bin的常规算术解码使得所述常规解码引擎串行链能够在一个时钟周期内进行多个bin的并行常规算术解码;
其中,所述常规解码引擎串联单元包括信息采集模块和串联设置模块;
所述信息采集模块,用于获取当前进行常规算术解码的bin,并判断当前bin解出的值是MPS还是LPS;
所述串联设置模块,用于在当前bin解出的值是MPS时,在该当前bin对应的第N-1号常规解码引擎的后面串联接入下一个常规解码引擎作为常规解码引擎串行链的第N号常规解码引擎,所述N为大于等于1的值;以及,在当前bin解出的值是LPS时,终止常规解码引擎的串联操作。
7.根据权利要求6所述的熵解码硬件并行计算装置,其特征在于:对于包括n+1个常规解码引擎的常规解码引擎串行链,最大的MPS串行链级数n依赖于工艺对应的电路速度,最大解码速度为n bin/T,其中,n为大于等于1的数,T表示时钟周期。
8.根据权利要求7所述的熵解码硬件并行计算装置,其特征在于:还包括解码类型判断单元,其被配置为:根据当前待解码的bin对应的上下文模型索引号CtxIdx值选择对应的解码类型,所述解码类型包括旁路算术解码、结束符算术解码和常规算术解码三个类型;以及,根据前述对应的解码类型,分别选择旁路解码引擎、结束符解码引擎或常规解码引擎进行解码操作。
9.根据权利要求8所述的熵解码硬件并行计算装置,其特征在于:还包括旁路解码引擎串联单元,其用于将多个旁路解码引擎串联形成旁路解码引擎串行链,一个旁路解码引擎负责一个bin的旁路算术解码使得所述旁路解码引擎串行链能够在一个时钟周期内进行多个bin的并行旁路算术解码;
其中,所述旁路解码引擎串联单元包括信息采集模块和串联设置模块;
所述信息采集模块,用于获取当前解码的bin对应的上下文模型索引号CtxIdx,并根据CtxIdx值判断对应的解码类型是否是旁路算术解码;
所述串联设置模块,用于在对应的解码类型是旁路算术解码时,在该当前解码的bin对应的第M-1号旁路解码引擎的后面串联接入下一个旁路解码引擎作为旁路解码引擎串行链的第M号旁路解码引擎,所述M为大于等于1的值;以及,在判定对应的解码类型不是旁路算术解码时,终止旁路解码引擎的串联操作。
10.一种适用于AVC的视频解码器,包括用于进行熵解码的熵解码器,其特征在于:所述熵解码器包括权利要求6-9中任一项所述的熵解码硬件并行计算装置。
CN202011155929.3A 2020-10-26 2020-10-26 适用于avc的熵解码硬件并行计算方法及应用 Active CN112422987B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011155929.3A CN112422987B (zh) 2020-10-26 2020-10-26 适用于avc的熵解码硬件并行计算方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011155929.3A CN112422987B (zh) 2020-10-26 2020-10-26 适用于avc的熵解码硬件并行计算方法及应用

Publications (2)

Publication Number Publication Date
CN112422987A CN112422987A (zh) 2021-02-26
CN112422987B true CN112422987B (zh) 2022-02-22

Family

ID=74840535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011155929.3A Active CN112422987B (zh) 2020-10-26 2020-10-26 适用于avc的熵解码硬件并行计算方法及应用

Country Status (1)

Country Link
CN (1) CN112422987B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115334313A (zh) * 2022-06-22 2022-11-11 百果园技术(新加坡)有限公司 一种视频解码方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949873A (zh) * 2005-10-12 2007-04-18 华为技术有限公司 Cabac解码系统及方法
JP2009207029A (ja) * 2008-02-29 2009-09-10 Sony Corp 算術復号装置
CN107342091A (zh) * 2011-03-18 2017-11-10 弗劳恩霍夫应用研究促进协会 计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10009606B2 (en) * 2012-10-11 2018-06-26 Nvidia Corporation Low power context adaptive binary arithmetic decoder engine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949873A (zh) * 2005-10-12 2007-04-18 华为技术有限公司 Cabac解码系统及方法
JP2009207029A (ja) * 2008-02-29 2009-09-10 Sony Corp 算術復号装置
CN107342091A (zh) * 2011-03-18 2017-11-10 弗劳恩霍夫应用研究促进协会 计算机可读介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
《A 3D-DCT video encoder using advanced coding techniques for low power mobile device》;Jeoong SungPark;《Journal of Visual Communication and Image Representation》;20170615;全文 *
H.264/AVC自适应算术解码器结构设计;王明明等;《微电子学与计算机》;20080705(第07期);全文 *
一种高效的CABAC解码器硬件结构设计;徐美华等;《中国图象图形学报》;20061230(第11期);全文 *

Also Published As

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

Similar Documents

Publication Publication Date Title
US5045852A (en) Dynamic model selection during data compression
EP2191650B1 (en) Architecture for multi-stage decoding of a cabac bitstream
US7564384B2 (en) Binarizing method and device thereof
US7199735B1 (en) Method and apparatus for entropy coding
CN101562455B (zh) 内容可适性二元算数编码的译码装置及其译码方法
CN100525450C (zh) 一种实现霍夫曼译码的方法和装置
Langdon et al. A double-adaptive file compression algorithm
CN109587483B (zh) 码流提取模块
CN102438145A (zh) 一种基于Huffman编码的图片无损压缩方法
CN112422987B (zh) 适用于avc的熵解码硬件并行计算方法及应用
CN103974066B (zh) 视频编码方法和设备
Ramos et al. High-throughput binary arithmetic encoder using multiple-bypass bins processing for HEVC CABAC
WO2018218950A1 (zh) 熵解码方法、装置及存储介质
US7928868B1 (en) Entropy decoding device
CN111818335A (zh) 一种熵编码方法和装置、电子设备
Lin et al. A branch selection multi-symbol high throughput CABAC decoder architecture for H. 264/AVC
Li et al. A vlsi implement of cabac encoder for h. 265/hevc
CN101267559A (zh) 视频解码器的通用熵解码方法及装置
US8421655B2 (en) Apparatus for parallel entropy encoding and decoding
Chen et al. A low cost context adaptive arithmetic coder for H. 264/MPEG-4 AVC video coding
Bingbo et al. A high-performance VLSI architecture for CABAC decoding in H. 264/AVC
Saidani et al. Implementation of JPEG 2000 MQ-coder
KR102109768B1 (ko) Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기
Higgie et al. Efficient encoding and decoding algorithms for variable-length entropy codes
Auli-Llinas Highly efficient, low complexity arithmetic coder for JPEG2000

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