熵解码方法

文档序号:7724257阅读:192来源:国知局
专利名称:熵解码方法
技术领域
本发明涉及视频解码,尤其涉及一种熵解码方法。
背景技术
H. 264/AVC是ITU-T和MPEG组织共同推出的最新一代视频压缩标准,其压缩效率 较H. 263和MPEG-4 simple profile有显著提高。在相同的重建图像质量下,H. 264/AVC比 H. 263节约50%左右的码率。因其更高的压缩比、更好的因特网和无线网络信道的适应性, 在数字视频通信和存储领域得到越来越广泛的应用。H. 264/AVC视频解码标准详细的规定了解码的流程,具体包括反量化、反离散余弦 转换 Qnverse Discrete Cosine Transform, IDCT)、熵解码等多个部分。H. ^4/AVC 代码 中熵解码部分占了较大一部分的计算量,若能提升熵解码的速度,将直接提升H. 264/AVC 视频解码的速度。

发明内容
有鉴于此,需提供一种熵解码方法,用于提升熵解码的速度。本发明实施方式中的熵解码方法,用于为多段视频解码数据进行熵解码,多段视 频解码数据与多种解码树相对应。所述熵解码方法包括提供多组微码,与多种解码树一一 对应,其中每一组微码包括多个微码,每一个微码对应一个最大可能标志;装载解码所需的 解码树对应的一组微码;从一组微码中读取一个微码;读取微码对应的视频解码数据;根 据微码对其对应的视频解码数据进行熵解码运算;在进行熵解码运算的同时,判断是否已 经根据该组微码执行了一轮完整的运算;若尚未根据该组微码执行完一轮完整的运算,则 根据与该微码对应的最大可能标志预测下一微码,并读取下一微码对应的视频解码数据; 在熵解码运算完成后,判断最大可能标志是否符合熵解码运算的结果;及若最大可能标志 符合熵解码运算的结果,则根据下一微码对其对应的视频解码数据进行下一熵解码运算。本发明实施方式所提供的熵解码方法通过提供多组与解码树对应的微码,借助最 大可能标志来预测下一微码,来同时实现数据读取与微码执行,能有效提升熵解码的运算 速率。


图1为本发明一实施方式的熵解码装置的模块图。图2为图1中微码存储模块内存储的微码的结构示意图。图3为本发明一实施方式的熵解码方法的流程图。
具体实施例方式请参阅图1,所示为本发明一实施方式的熵解码(entropy)装置10的模块图。 在本实施方式中,熵解码装置10用于对依照H. ^4/AVC标准来进行二进制算术(BinaryArithmetic Code,BAC)编码的视频资料进行熵解码。H. 264/AVC标准规定了详细的解码表 及解码流程,每一解码表对应一解码树,每一解码树包括多个结点,熵解码即为根据视频资 料来确定访问解码树的路径,并依据该路径读取其特定位置的叶子结点内存储的值。在其 他实施方式中,熵解码装置10也可以用于处理能兼容H. ^4/AVC标准的其它视频编解码标 准。在本实施方式中,熵解码装置10包括数据存储模块100、微码存储模块102、微码 装载模块104、数据读取模块106与微码执行电路108。数据存储模块100用于存储需解码的多段视频解码数据。多段视频解码数据与多 种解码树相对应,其中每一段视频解码数据对应一种解码树。在本实施方式中,数据存储模 块100为缓存器。微码存储模块102用于存储多组微码,与多种解码树一一对应。每一组微码包括 多个微码,在本实施方式中,每一微码包括解码指令与解码参数,用来控制根据该微码执行 的解码运算。微码装载模块104用于从微码存储模块102装载解码所需的解码树对应的一组微码。数据读取模块106用于从数据存储模块100内读取微码对应的视频解码数据。微码执行电路108用于根据微码的解码指令及解码参数对该微码对应的视频解 码数据进行熵解码运算,以获得解码结果。请参阅图2,所示为本发明微码存储模块102内存储的微码的结构示意图。在本实 施方式中,微码是预先根据解码树来编制的,每一解码树对应一组微码。其中,解码树的每 一个非叶子结点都连接一个左结点与一个右结点,每一个非叶子结点都对应两个微码,一 个为访问左结点的微码,另一个为访问右结点的微码。编制好的微码根据树的结点顺序存 储在微码存储模块102内。在本实施方式中,微码为二进制数,在微码存储模块102内占用 一定的存储空间。H. 264/AVC标准针对每一解码树的每一个非叶子结点都规定有一个最大可能标志 (Most Probable Symbol,mps),用来表示下一个结点是往左还是往右的几率更大,一般采 用0与1来表示,其中0用来表示往左的几率大,1用来表示往右的几率大。这样,每一个非 叶子结点对应的微码就对应一个最大可能标志。在本实施方式中,最大可能标志的取值来 源于H. 264/AVC标准规定的mps。在本实施方式中,每一微码包括一个解码指令与四个解码参数共五个字段。需要 注意的是,微码并非限于仅仅包括这些字段,还可以根据实际需要设置为包括更多的解码 指令与解码参数。解码指令用于控制针对视频解码数据所进行的熵解码运算。在本实施方式中,解 码指令包括解码运算与返回结果运算。解码运算用于计算出微码的执行顺序。在本实施方式中,解码运算一般为针对非 叶子结点的运算,如BDS运算,其得出来的结果表示下一步应该执行左边结点还是右边结 点对应的微码。返回结果运算ret val用于根据解码运算所计算出的微码的执行顺序来获取并返 回解码结果。在本实施方式中,返回结果运算一般为针对叶子结点的运算,得出来的结果即为解码结果。解码参数用于为熵解码指令所控制的熵解码运算提供其所需的参数。在本实施方 式中,解码参数包括上下文(context)参数ctx、结果参数val、次数参数N、地址参数pc。 在本实施方式中,为了节省存储微码所需的空间,这些解码参数皆采用增量的方式来表示, 即上下文增量ctx_diff、结果增量val_diff、次数增量N_diff与地址增量pc_diff,其中 增量表示先后执行的两个相邻微码的解码参数之间的差值。上下文参数、结果参数、次数参 数、地址参数皆分别对应一个初始值,其中,根结点对应的解码参数增量为根结点对应的解 码参数与各解码参数初始值之间的差值。在其他实施方式中,这些解码参数也可不采用增 量的方式,而是直接由其具体数值来表示。上下文参数,用于控制根据解码指令所执行的熵解码运算(如BDS运算)所依据 的解码几率表。H. 264/AVC标准定义了多种解码几率表,每一微码中的BDS运算皆会依据 其上下文参数ctx来选择使用H. 264/AVC标准定义的一种解码几率表。上下文增量ctx_ diff用于与上下文参数的初始值或上一相邻微码的上下文参数相加,以获得当前微码的上 下文参数。在本实施方式中,上下文参数ctx等于其初始值或上次解码所采用的上下文参 数 ctx,加上下文增量 ctx_diff,即 ctx = ctx,+ctx_diff0结果参数用于控制根据解码指令所执行的熵解码运算的返回结果。结果增量用 于与结果参数的初始值或上一相邻微码的结果参数相加,以获得当前微码的结果参数。在 本实施方式中,结果参数等于其初始值或上一相邻微码的结果参数加结果增量,即val = val' +val_diff。因此,根据解码树中叶子的值,可以为每一个结点的微码设置对应的结果 增量val_difT,使得沿着解码树的路径对结果参数自加结果增量val_difT,最后得到叶子 的值即可。这样,如果根据视频解码数据来确定执行微码的顺序,相当于根据视频解码数据 确定访问解码树的路径,就可以顺利找到叶子的值,从而得到解码结果。次数参数用于控制一组微码需返回解码结果的个数。次数增量用于与次数参数的 初始值或上一相邻微码的次数参数相加,以获得当前微码的次数参数。在本实施方式中,执 行一组微码一轮就返回一个解码结果,每组微码需返回的解码结果的次数等于次数参数的 初始值加该组微码内所有需执行的微码的次数增量的递增结果,即针对所有需执行的微码 执行N = N’+N_diff运算,直至返回解码结果。若返回解码结果时N不为0,则表示还需要 再根据该组微码进行N次解码。若返回解码结果时N等于0,则表示不需要再次根据该组微 码进行解码,此时,就需要装载下一组微码。地址参数用于指示下一微码的存储地址。地址增量用于与地址参数的初始值或上 一相邻微码的地址参数相加,以获得当前微码的地址参数。在本实施方式中,地址增量包括 第一增量与第二增量。其中,第一增量用来表示左结点对应的微码的存储地址,第二增量 用来表示右结点对应的微码的存储地址。若最大可能标志或解码指令中的执行结果表示 应取左结点对应的微码,则地址增量为第一增量,若最大可能标志或解码指令中的执行结 果表示应取右结点对应的微码,则地址增量为第二增量。具体而言,每一个微码设立第一 增量pc_difT0与第二增量pc_difTl,通过多工器选择输出左结点或右结点对应的地址增 量,如可以根据最大可能标志来选择输出pc_diff0或pc_diff 1来做为pc_diff。在本实 施方式中,下一微码的存储地址等于其初始值或当前微码的存储地址加地址增量,即PC = pc, +pc_diff。
在其他实施方式中,也可以采用其他方式来指示微码的存储地址,比如,可以将大 小相同的微码按先左边结点后右边结点的顺序存储起来,此时,地址增量是相同的,那么若 需要读取左边结点对应的微码,则可以通过计算pc = pc’ +pc_diff来得到其地址pc,如 果需要读取右边结点对应的微码,则可以通过两次运算,即PC’ = pC”+pC_difT与PC = pc,+pc_diff来得到其地址pc。微码的每一字段皆可根据其大小分配其所占用的空间。举例说明,如每一微码设 计为占用18个比特,即0-17位,其中,解码指令可设为占用17-13位,上下文增量可设为占 用12-9位,结果增量可设为占用8-6位,次数增量可设为占用5-4位,地址增量可设为占用 3-0 位。请参阅图3,所示为本发明一实施方式的熵解码方法的流程图。在本实施方式中, 熵解码方法通过图1所示的模块来完成,用于根据多组微码对视频解码数据进行熵解码。在步骤S300,微码装载模块104从微码存储模块102内读取并装载解码所需的解 码树对应的一组微码。在步骤S301,微码执行电路108从微码装载模块104所装载的一组微码中读取一 个微码。在本实施方式中,微码执行电路108根据地址参数的初始值读取第一个须执行的 微码。在步骤S302,数据读取模块106从数据存储模块100内读取微码对应的视频解码数据。在步骤S304,微码执行电路108根据微码的解码指令及解码参数对读取的视频解 码数据进行熵解码运算。在本实施方式中,微码执行电路108先根据解码参数增量计算出 解码参数,再根据微码的解码指令及解码参数进行熵解码运算。举例来说,在微码的解码指 令为BDS时,微码执行电路108根据上下文增量进行BDS运算。具体而言,微码执行电路 108先将当前的上下文参数ctx与上下文增量ctx_diff做加法运算,再根据加法运算的结 果进行BDS运算。又如,在微码的解码指令为ret val时,微码执行电路108根据结果增 量val_diff返回解码结果。具体而言,微码执行电路108先将当前的结果参数与结果增量 val_diff做加法运算,再根据加法运算的结果返回解码结果。在执行第一个微码时,各解码 参数的当前值皆为其初始值,各解码参数的初始值皆可从外部接收,也可预先定义。在步骤S306,在微码执行电路108进行熵解码运算的同时,数据读取模块106判断 微码执行电路108是否已经根据该组微码执行了一轮完整的运算。在本实施方式中,如果 微码的解码指令为ret val运算,则表示根据该组微码执行了一轮完整的运算。若微码执行电路108尚未根据该组微码执行完一轮完整的运算,则在步骤S308, 数据读取模块106根据与该微码对应的最大可能标志预测下一微码,并读取该下一微码对 应的视频解码数据。在步骤S310,在熵解码运算完成后,微码执行电路108判断最大可能标志是否符 合该熵解码运算的结果。举例而言,在最大可能标志表示下一个结点往左访问可能性最大 时,若熵解码运算的结果表示为往左访问,则表示最大可能标志符合熵解码运算的结果,下 一微码预测正确,反之则表示最大可能标志不符合熵解码运算的结果,下一微码预测错误。若最大可能标志符合熵解码运算的结果,即预测正确,则在步骤S304,微码执行电 路108根据下一微码的解码指令及解码参数对下一微码对应的视频解码数据进行熵解码运算。此时,因为在执行熵解码的同时就读出了视频解码数据,则省去了读取视频解码数据 所需的时钟周期,从而有效增加了熵解码的速度。若最大可能标志不符合熵解码运算的结果,即预测错误,则在步骤S312,微码执行 电路108抛弃下一微码对应的视频解码数据,并读取熵解码运算结果对应的另一微码。在 本实施方式中,微码执行电路108先根据熵解码运算的结果选择第一增量或第二增量作为 地址增量,再根据地址增量计算出另一微码的地址。在步骤S302,数据读取模块106读取该另一微码对应的视频解码数据。在步骤S304,微码执行电路108根据该另一微码的解码指令及解码参数对其对应 的视频解码数据进行熵解码运算。若微码执行电路108已经根据该组微码执行了一轮完整的运算,此时,微码执行 电路108已经完成了熵解码运算,并返回了解码结果,则在步骤S314,微码执行电路108判 断是否还需要针对该组微码进行新一轮运算。在本实施方式中,微码执行电路108判断N 是否等于0。其中N等于0表示不需要针对该组微码进行新一轮运算,N不等于0表示需要 针对该组微码进行新一轮运算。如果还需要针对该组微码进行新一轮运算,则在步骤S302,返回该组微码的起始 位置,微码执行电路108重新从微码装载模块104所装载的该组微码中读取一个微码。在 本实施方式中,微码执行电路108根据地址参数的初始值读取第一个须执行的微码。如果已经不需要针对该组微码进行新一轮运算,则表示依据该组微码的解码运算 已经完成。此时,微码装载模块104会重新从微码存储模块102装载下一解码树对应的一 组微码,直至所有的视频解码资料皆完成解码。本发明实施方式所提供的熵解码方法通过提供多组与解码树对应的微码,借助最 大可能标志来预测下一微码,并利用数据读取模块106与微码执行电路108同时实现数据 读取与微码执行,来有效提升熵解码的运算速率。同时,通过提供采用增量方式的微码格 式,能够有效减少微码所占用的空间,从而有效节省成本。
权利要求
1.一种熵解码方法,用于为多段视频解码数据进行熵解码,所述多段视频解码数据与 多种解码树相对应,其特征在于,所述熵解码方法包括提供多组微码,与所述多种解码树一一对应,其中每一组微码包括多个微码,每一个微 码对应一个最大可能标志;装载解码所需的解码树对应的一组微码; 从所述一组微码中读取一个微码; 读取所述微码对应的视频解码数据; 根据所述微码对其对应的视频解码数据进行熵解码运算;在进行所述熵解码运算的同时,判断是否已经根据该组微码执行了一轮完整的运算; 若尚未根据该组微码执行完一轮完整的运算,则根据与该微码对应的最大可能标志预 测下一微码,并读取所述下一微码对应的视频解码数据;在所述熵解码运算完成后,判断所述最大可能标志是否符合所述熵解码运算的结果;及若所述最大可能标志符合所述熵解码运算的结果,则根据所述下一微码对其对应的视 频解码数据进行下一熵解码运算。
2.如权利要求1所述的熵解码方法,其特征在于,还包括若所述最大可能标志不符合所述熵解码运算的结果,则抛弃所读取的所述下一微码对 应的视频解码数据,并根据所述熵解码运算结果选择另一微码; 读取所述另一微码对应的视频解码数据;及 根据所述另一微码对其对应的视频解码数据进行另一熵解码运算。
3.如权利要求1所述的熵解码方法,其特征在于,所述微码包括 解码指令,用于控制针对所述视频解码数据进行的熵解码运算;及解码参数增量,用于为所述解码指令控制的熵解码运算提供其所需的解码参数,其中 增量表示先后执行的两个相邻微码的解码参数之间的差值。
4.如权利要求3所述的熵解码方法,其特征在于,所述解码指令包括 解码运算,用于计算出微码的执行顺序;及返回结果运算,用于根据解码运算所计算出的微码的执行顺序来获取并返回解码结^ ο
5.如权利要求4所述的熵解码方法,其特征在于,所述解码参数包括上下文参数,用于控制根据所述解码指令所执行的熵解码运算所依据的解码几率表; 结果参数,用于控制根据所述解码指令所执行的熵解码运算的返回结果; 次数参数,用于控制一组微码需返回解码结果的个数;及 地址参数,用于指示下一微码的存储地址。
6.如权利要求5所述的熵解码方法,其特征在于,还包括若已经根据该组微码执行完一轮完整的运算,则判断是否还需要针对该组微码进行新 一轮运算;及若还需要针对该组微码进行新一轮运算,则返回该组微码的起始位置,重新从所装载 的该组微码中读取一个微码。
7.如权利要求6所述的熵解码方法,其特征在于,所述判断是否还需要针对该组微码进行新一轮运算的步骤包括判断当前微码的所述次数参数是否为0 ;若当前微码的所述次数参数为0,则表示不需要针对该组微码进行新一轮运算;及若当前微码的所述次数参数不为0,则表示还需要针对该组微码进行新一轮运算。
8.如权利要求5所述的熵解码方法,其特征在于,所述解码参数增量包括上下文增量,用于与所述上下文参数的初始值或上一相邻微码对应的上下文参数相 加,以获得当前微码对应的上下文参数;结果增量,用于与所述结果参数的初始值或上一相邻微码对应的结果参数相加,以获 得当前微码对应的结果参数;次数增量,用于与所述次数参数的初始值或上一相邻微码对应的次数参数相加,以获 得当前微码对应的次数参数;及地址增量,用于与所述地址参数的初始值或上一相邻微码对应的地址参数相加,以获 得当前微码对应的地址参数。
9.如权利要求8所述的熵解码方法,其特征在于,所述地址增量包括第一增量,用来表示左结点对应的微码的存储地址;及第二增量,用来表示右结点对应的微码的存储地址;其中,若所述最大可能标志或所述解码指令的执行结果表示应取左结点对应的微码, 则所述地址增量为第一增量,若所述最大可能标志或解码指令中的执行结果表示应取右结 点对应的微码,则所述地址增量为第二增量。
10.如权利要求1所述的熵解码方法,其特征在于,所述视频解码数据所采用的编码方 法为根据H. 264/AVC标准进行的二进制算术编码。
全文摘要
一种熵解码方法,包括提供多组微码;装载解码所需的解码树对应的一组微码;从一组微码中读取一个微码;读取微码对应的视频解码数据;根据微码对其对应的视频解码数据进行熵解码运算;在进行熵解码运算的同时,判断是否已经根据该组微码执行了一轮完整的运算;若尚未根据该组微码执行完一轮完整的运算,则根据与该微码对应的最大可能标志预测下一微码,并读取下一微码对应的视频解码数据;在熵解码运算完成后,判断最大可能标志是否符合熵解码运算的结果;及若最大可能标志符合熵解码运算的结果,则根据下一微码对其对应的视频解码数据进行下一熵解码运算。本发明所提供的熵解码方法可同时实现数据读取与微码执行,有效提升熵解码的运算速率。
文档编号H04N7/26GK102045558SQ20091030865
公开日2011年5月4日 申请日期2009年10月22日 优先权日2009年10月22日
发明者李一心, 童怡新, 蔡协甫, 黄圣哲 申请人:鸿富锦精密工业(深圳)有限公司, 鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1