CN103119646B - 音频编码器、音频解码器、编码音频信息的方法以及解码音频信息的方法 - Google Patents

音频编码器、音频解码器、编码音频信息的方法以及解码音频信息的方法 Download PDF

Info

Publication number
CN103119646B
CN103119646B CN201180045309.7A CN201180045309A CN103119646B CN 103119646 B CN103119646 B CN 103119646B CN 201180045309 A CN201180045309 A CN 201180045309A CN 103119646 B CN103119646 B CN 103119646B
Authority
CN
China
Prior art keywords
value
hash
context
ari
spectrum
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
CN201180045309.7A
Other languages
English (en)
Other versions
CN103119646A (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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Publication of CN103119646A publication Critical patent/CN103119646A/zh
Application granted granted Critical
Publication of CN103119646B publication Critical patent/CN103119646B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • G10L19/07Line spectrum pair [LSP] vocoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Stereo-Broadcasting Methods (AREA)

Abstract

一种用于基于编码音频信息提供解码音频信息的音频解码器,包括用于基于频谱值的算术编码表示提供多个解码频谱值的算术解码器,以及使用所述解码频谱值提供时域音频表示以获得解码音频信息的频域至时域变换器。所述算术解码器被配置为依据由数值当前上下文值所描述的上下文状态来选择映射规则,所述映射规则描述表示频谱值,或频谱值的最高有效位平面的编码形式的码值,到表示频谱值,或频谱值的最高有效位平面的解码形式的符号码的映射。所述算术解码器被配置为依据多个事先解码的频谱值来确定数值当前上下文值。所述算术解码器被配置为评估散列表以选择映射规则,散列表的表项限定数值上下文值中的有效状态值及数值上下文值的区间边界,其中散列表ari_hash_m的定义如图22(1)、图22(2)、图22(3)及图22(4)中给出。所述算术解码器被配置为评估散列表,以确定数值当前上下文值是否与由散列表的表项所描述的表上下文值相同,或确定由散列表的表项所描述的数值当前上下文值所在的区间,并依据评估结果导出描述所选映射规则的映射规则索引值。

Description

音频编码器、音频解码器、编码音频信息的方法以及解码 音频信息的方法
技术领域
根据本发明的实施例涉及一种用于基于编码音频信息提供解码音频信息的音频解码器,用于基于输入音频信息提供编码音频信息的音频编码器,用于基于编码音频信息提供解码音频信息的方法,用于基于输入音频信息提供编码音频信息的方法及计算机程序。
根据本发明的实施例涉及一种经改良的频谱无噪声编码,其可用于音频编码器或音频解码器,例如所谓的统一语音及音频编码器(USAC)。
根据本发明的实施例涉及用于当前USAC规范的频谱编码表的更新。
背景技术
下文中,将简单阐述本发明的背景以有助于了解本发明及其优点。过去十年间大量努力致力于良好位率效率以数字方式存储并分配音频内容。就此方面而言的一项重要成就为国际标准ISO/IEC 14496-3的定义。此标准的第3部分涉及音频内容的编码及解码,而第3部分的第4子部分涉及一般音频编码。ISO/IEC 14496第3部分,第4子部分定义用于一般音频内容的编码及解码的构想。另外,提出了进一步改良以改善质量和/或减少所要求的位率。
根据该项标准描述的构想,时域音频信号被转换成时频表示。从时域变换成时频域通常使用时域样本的变换块执行,这些变换块也称为“帧”。已发现较佳是使用重叠帧,其移位例如半个帧,原因在于重叠允许有效地避免(或至少减少)假影。另外,已发现须进行开窗来避免源自于此种时间上有限的帧处理的假影。
通过将输入音频信号的开窗部分从时域变换到时频域,在许多情况下,获得能量压缩,使得部分频谱值包括比多个其他频谱值显著大的幅度。据此,在许多情况下,幅度显著高于频谱值平均幅度的频谱值的数量相对较少。结果导致能量压缩的时域至时频域变换的典型实例是所谓的修正离散余弦变换(MDCT)。
频谱值经常依据心理声学模型来定标及量化,使得针对心理声学上较高有效的频谱值的量化误差较小,而针对心理声学上较低有效的频谱值的量化误差较大。已定标及已量化的频谱值经编码来提供其位率有效的表示。
例如,量化频谱系数的所谓霍夫曼编码的使用在国际标准ISO/IEC14496-3:2005(E),第3部分,第4子部分中进行了描述。
然而,已发现频谱值的编码质量对所要求的位率具有显著影响。同样,已发现音频解码器的复杂度取决于用于编码频谱值的编码处理,其中,音频解码器经常实施为便携式消费者装置,因此须价廉且耗电量低。
鉴于这种情况,需要有一种用于编码并解码音频内容的构想,其提供位率效率与资源效率间的改进折衷。
发明内容
根据本发明的实施例,形成一种用于基于频谱值的算术解码表示提供多个解码频谱值的音频解码器。所述音频解码器还包括频域至时域变换器,用于使用所述解码频谱值提供时域音频表示,以获得所述解码音频信息。所述算术解码器被配置为依据由数值当前上下文值所描述的上下文状态来选择映射规则,所述映射规则描述表示频谱值,或频谱值的最高有效位平面的编码形式的码值,到表示频谱值,或频谱值的最高有效位平面的解码形式的符号码的映射。所述算术解码器被配置为依据多个事先解码的频谱值来确定所述数值当前上下文值。所述算术解码器被配置为评估散列表以选择所述映射规则,所述散列表的表项限定所述数值上下文值中的有效状态值及数值上下文值的区间边界。所述算术解码器被配置成评估散列表,以得出ari_hash_m[i]>>8等于或大于c的散列表索引值i,同时,如果得出的散列表索引值i大于0,那么值ari_hash_m[i-1]>>8小于c。此外,所述算术解码器被配置为成选择由概率模型索引(pki)确定的映射规则,当ari_hash_m[i-1]>>8等于c时,所述概率模型索引等于ari_hash_m[i]&&0xFF,否则等于ari_lookup_m[i]。在本实施例中,所述散列表ari_hash_m的定义如图22(1)、图22(2)、图22(3)及图22(4)中给出。此外,所述映射表ari_lookup_m的定义如图21中给出。
已发现上述算法与图22(1)至图22(4)的散列表的组合允许特别有效地选择映射规则,因为根据图22(1)至图22(4)的散列表以特别适合的方式限定所述数值上下文值中的有效值及状态区间。此外,所述算法与根据图22(1)至图22(4)的散列表之间的交互显示获得特别好的结果,同时保持计算复杂度合理的小。此外,图21中定义的映射表结合上述散列表使用时还特别适用于所述算法。总之,如图22(1)至图22(4)中给出的散列表以及如图22中定义的映射表结合如上所述算法使用获得良好的编码/解码效率及较低的计算复杂度。
在优选实施例中,算术解码器被配置为使用如图5e中定义的算法评估所述散列表,其中c为指明数值当前上下文值或其定标版本的变量,其中i为描述当前散列表索引值的变量,其中i_min为被初始化来指明所述散列表的第一表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量。在上述算法中,条件“c<(j>>8)”定义由变量c所描述的状态值小于由表项ari_hash_m[i]所描述的状态值。同样,在上述算法中,“j&0xFF”描述由表项ari_hash_m[i]所描述的映射规则索引值。进一步地,i_max为被初始化来指明所述散列表的最后一个表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量。条件“c>(j>>8)”定义由变量c所描述的状态值大于由表项ari_hash_m[i]所描述的状态值。所述算法的返回值指明概率模型的索引pki,且为映射规则索引值。“ari_hash_m”指明所述散列表,“ari_hash_m[i]”指明所述散列表ari_hash_m具有散列表索引值i的表项。“ari_lookup_m”指明映射表,“ari_lookup_m[i_max]”指明所述映射表ari_lookup_m具有映射表索引值i_max的表项。
已发现上述算法(如图5e所示)与图22(1)至图22(4)的散列表的组合允许特别有效地选择映射规则,因为根据图22(1)至图22(4)的散列表以特别适合的方式界定所述数值上下文值中的有效值及状态区间。此外,根据图5e的所述算法与根据图22(1)至图22(4)的散列表之间的交互结合表搜索的快速算法显示获得特别好的结果。此外,图21中定义的映射表结合上述散列表使用时还特别适用于所述算法。总之,如图22(1)至图22(4)中给出的散列表以及如图22中定义的映射表结合如图5e中所定义的算法使用获得良好的编码/解码效率及较低的计算复杂度。换句话说,已发现图5e的二分法非常适合利用表ari_hash_m及ari_lookup_m进行操作,如上所述。
然而,应注意的是,在不改变本发明的构想的情况下可以对搜索算法进行微小变化(其简单易行)或甚至更显著的变化。
换句话说,搜索方法不局限于所提及的方法。即使二分法(例如,根据图5e)的使用进一步改善了性能,但也可以执行简单的穷举搜索,从而使复杂一定程度地增加。
在优选实施例中,所述算法解码器被配置为基于映射规则索引值pki选择映射规则,所述映射规则描述码值到符号码的映射,所述映射规则索引值pki例如作为图5e中所示的算法的返回值提供。所述映射规则索引值pki的使用非常有效,因为上述表及上述算法的交互被优化以提供有意义的映射规则索引值。
在优选实施例中,所述算法解码器被配置为使用映射规则索引值作为表索引值来选择映射规则,所述映射规则描述码值到符号码的映射。映射规则索引值作为表索引值的使用允许映射规则进行计算有效的存储高效选择。
在优选实施例中,所述算术解码器被配置为选择如图23(1)、图23(2)、图23(3)中定义的表ari_cf_m[64][17]的子表中的一个作为选择映射规则。该构想基于由如图23(1)、图23(2)、图23(3)中定义的表ari_cf_m[64][17]的子表所定义的映射规则适于可以通过结合根据图21及图22(1)至图22(4)的表执行根据图5e的上述算法来实现的结果。
在优选实施例中,所述算术解码器被配置为基于数值先前上下文值使用根据图5c的算法来获得所述数值上下文值,其中所述算法接收作为输入值的表示数值先前上下文值的值或变量c,以及表示要在频谱值向量中要解码的频谱值的2元组的索引的值或变量i。值或变量N表示频域至时域变换器的重建相位窗口的窗口长度。所述算法提供作为输出值的表示数值当前上下文值的更新值或变量c。在该算法中,运算“c>>4”描述向值或变量c右边移4位。此外,q[0][i+l]指明与先前音频帧相关联且具有相关联的较大的频率索引i+1(比当前要解码的频谱值的2元组的当前频率索引大一)的上下文子区域值。同样,q[l][i--]指明与当前音频帧相关联且具有相关联的较小的频率索引i-1(比当前要解码的频谱值的2元组的当前频率索引小一)的上下文子区域值。q[l][i-2]表示与当前音频帧相关联且具有相关联的较小的频率索引i-2(比当前要解码的频谱值的2元组的当前频率索引小二)的上下文子区域值。q[l][i-3]表示与当前音频帧相关联且具有相关联的较小的频率索引i-3(比当前要解码的频谱值的2元组的当前频率索引小三)的上下文子区域值。已发现结合图21及图22(1)至图22(4)的表使用的根据图5e的算法适于基于使用图5c的算法获得的数值当前上下文值c提供映射规则索引值,其中使用图5c的算法获得数值当前上下文值的计算效率特别高,原因是根据图5c的算法只需要非常简单的计算。
在优选实施例中,所述算法解码器被配置为使用根据图5l的算法来更新与当前音频帧相关联且具有相关联的当前解码的频谱值的2元组的当前频率索引的上下文子区域值q[l][i],其中a指明当前解码的频谱值的2元组的第一频谱值的绝对值,并且其中b指明当前解码的频谱值的2元组的第二频谱值。可以看出,优选实施例非常适用于对上下文子区域值进行简单更新。
在优选实施例中,所述算术解码器被配置为使用根据图5g的算术解码算法提供表示解码频谱值的2元组的解码值m。已发现所述算术解码算法非常适用于与上述算法协作。
根据本发明的另一个实施例,形成一种用于基于编码音频信息提供解码音频信息的音频解码器。所述音频解码器包括算术解码器,用于基于频谱值的算术编码表示提供多个解码频谱值。所述音频解码器还包括频域至时域变换器,用于使用所述解码频谱值提供时域音频表示,以获得所述解码音频信息。所述算术解码器被配置为依据由数值当前上下文值所描述的上下文状态来选择映射规则,所述映射规则描述表示频谱值,或频谱值的最高有效位平面的编码形式的码值,到表示频谱值,或频谱值的最高有效位平面的解码形式的符号码的映射。所述算术解码器被配置为依据多个事先解码的频谱值来确定所述数值当前上下文值。所述算术解码器被配置为评估散列表以选择所述映射规则,所述散列表的表项限定所述数值上下文值中的有效状态值及数值上下文值的区间边界。所述散列表ari_hash_m的定义如图22(1)、图22(2)、图22(3)及图22(4)中给出。所述算术解码器被配置为评估散列表,以确定数值当前上下文值是否与由散列表的表项所描述的表上下文值相同或确定由散列表的表项所描述的数值当前上下文值所在的区间,并依据评估结果导出描述所选映射规则的映射规则索引值。已发现如图22(1)至图22(4)中给出的散列表ari_hash_m非常适用于针对由散列表的表项所描述的表上下文值及由散列表的表项所描述的区间进行解析,从而得出映射索引值。已发现表上下文值及根据图22(1)至图22(4)的散列表的区间的定义在结合评估散列表的简单构想使用时为映射规则的选择提供有效机制,使用所述散列表的表项来检查表上下文值并确定非表上下文值位于由散列表的表项所定义的哪个区间内。
在优选实施例中,所述算术解码器被配置为将所述数值当前上下文值或所述数值当前上下文值的定标版本与所述散列表的一系列数值排序的表项或子表项做比较,以便以迭代方式获得散列表表项的散列表索引值,使得所述数值当前上下文值位于由所获得的散列表索引值标示的所获得的散列表表项与相邻散列表表项所限定的区间内部。在这种情况下,所述算术解码器被配置为依据数值当前上下文值,或数值当前上下文值的定标版本,与当前表项或子表项之间的比较结果确定散列表的一系列表项的下一个表项。人们认识到该机制允许对根据图22(1)至图22(4)的散列表进行特别有效的评估。
在优选实施例中,所述算术解码器被配置为,如果发现数值当前上下文值或其定标版本等于由当前散列表索引值指明的散列表的第一子表项则选择由当前散列表索引值标示的散列表的第二子表项所限定的映射规则。因此,如根据图22(1)至图22(4)所定义的散列表的表项具有双重功能。散列表的第一子表项(即,表项的第一部分)用于识别数值(当前)上下文值的特别有效的状态,而散列表的第二子表项(即,此表项的第二部分)通过定义映射规则索引值来定义映射规则。因此,以非常有效地方式使用散列表的表项。同样,该机制在提供用于数值当前上下文值的特别有效状态的映射规则索引值方面尤其有效,其通过散列表的表项,或更精确地通过散列表的子表项进行描述。因此,如图22(1)至图22(4)所定义的散列表的完整表项限定数值(当前)上下文值的特别有效状态的映射至数值当前上下文值的较低有效状态的映射规则及区域(或区间)的区间边界。
在优选实施例中,所述算术解码器被配置为,如果未发现数值当前上下文值等于散列表的子表项,则选择由映射表ari_lookup_m的表项或子表项所限定的映射规则。在这种情况下,所述算术解码器被配置为依据以迭代方式获得的散列表索引值选择映射表的表项或子表项。因此,形成特别有效的二表机制,其允许有效为数值当前上下文值的特别有效状态及数值当前上下文值的较低有效状态提供映射规则索引值(其中,通过散列表的表项或子表项无法明确,即单独描述数值当前上下文值的较低有效状态)。
在优选实施例中,所述算术解码器被配置为,如果发现数值当前上下文值等于由当前散列表索引值标示的散列表的表项所限定的值,则选择性地提供由获得的散列表索引值指明的散列表的表项所限定的映射规则索引值。因此,存在一种使得散列表的表项得到两用的有效机制。
进一步地,本发明的实施例形成用于基于编码音频信息提供解码音频信息的方法。所述方法实现前面讨论的音频解码器的功能。因此,所述方法基于与音频解码器相同的理念和发现,以便为了简短起见省略讨论。应注意的是,可以利用音频解码器的任意特征和功能对所述方法进行补充。
根据本发明的另一个实施例,形成一种用于基于输入音频信息提供编码音频信息的音频编码器,所述音频编码器包括能量压缩时域至频域变换器,用于基于所述输入音频信息的时域表示提供频域音频表示,使得所述频域音频表示包括一组频谱值。所述音频编码器还包括算术编码器,被配置成使用可变长度码字来编码频谱值或其预处理版本。所述算术编码器被配置为将频谱值或者频谱值的最高有效位平面的值映射到码值。所述算术编码器还被配置为依据由数值当前上下文值所描述的上下文状态选择映射规则,所述映射规则描述频谱值或频谱值的最高有效位平面到码值的映射。所述算术编码器还被配置为依据多个事先编码的频谱值确定所述数值当前上下文值。所述算术编码器还被配置为评估散列表以选择所述映射规则,所述散列表的表项限定所述数值上下文值中的有效状态值及数值上下文值的区间边界。所述散列表ari_hash_m的定义如图22(1)至图22(4)中给出。所述算术编码器被配置为评估散列表,以确定数值当前上下文值是否与由散列表的表项所描述的表上下文值相同,或确定由散列表的表项所描述的数值当前上下文值所在的区间,并依据评估结果导出描述所选映射规则的映射规则索引值。应注意的是,音频编码器的功能与上文讨论的音频解码器的功能并行发生。因此,为了简洁起见参照音频解码器的关键理念的上述讨论。
此外,应注意的是,可以利用音频解码器的任意特征和功能对所述音频编码器进行补充。特别是,也可以在音频编码器中实现有关映射规则的选择的任意特征,其中编码的频谱值代替解码的频谱值,等等。
根据本发明的另一个实施例形成一种用于基于输入音频信息提供编码音频信息的方法。所述方法基于相同理念执行前面描述的音频编码器的功能。
根据本发明的另一个实施例形成一种用于执行前面描述的方法中的至少一种的计算机程序。
附图说明
随后将参照附图对根据本发明的实施例进行描述,其中:
图1示出了根据本发明的实施例的音频编码器的方框示意图;
图2示出了根据本发明的实施例的音频解码器的方框示意图;
图3示出了用于解码频谱值的算法“values_decode()”的伪程序码表示;
图4示出了用于状态计算的上下文的示意图;
图5a示出了用于映射上下文的一种算法“arith_map_context()”的伪程序码表示;
图5b示出了用于映射上下文的另一算法“arith_map_context()”的伪程序码表示;
图5c示出了用于获得上下文状态值的一种算法“arith_get_context()”的伪程序码表示;
图5d示出了用于获得上下文状态值的另一算法“arith_get_context()”的伪程序码表示;
图5e示出了用于从状态值(或状态变量)导出累积频率表索引值“pki”的一种算法“arith_get_pk()”的伪程序码表示;
图5f示出了用于从状态值(或状态变量)导出累积频率表索引值“pki”的另一算法“arith_get_pk()”的伪程序码表示;
图5g示出了用于从可变长度码字算术地解码符号的一种算法“arith_decode()”的伪程序码表示;
图5h示出了用于从可变长度码字算术地解码符号的另一算法“arith_decode()”的伪程序码表示的第一部分;
图5i示出了用于从可变长度码字算术地解码符号的另一算法“arith_decode()”的伪程序码表示的第二部分;
图5j示出了用于从共用值m导出频谱值的绝对值a,b的算法的伪程序码表示;
图5k示出了用于将解码值a,b输入解码频谱值数组的算法的伪程序码表示;
图5l示出了用于基于解码频谱值的绝对值a,b获得上下文子区域值的算法“arith_update_context()”的伪程序码表示;
图5m示出了用于填充解码频谱值数组及上下文子区域值数组的表项的算法“arith_finish()”的伪程序码表示;
图5n示出了用于从共用值m导出解码频谱值的绝对值a,b的另一算法的伪程序码表示;
图5o示出了用于更新解码频谱值数组及上下文子区域值数组的算法“arith_update_context()”的伪程序码表示;
图5p示出了用于填充解码频谱值数组的表项及上下文子区域值数组的表项的算法“arith_save_context()”的伪程序码表示;
图5q示出了定义的一个图例;
图5r示出了定义的另一图例;
图6a示出了统一语音及音频编码(USAC)原始数据块的语法表示;
图6b示出了单信道元素的语法表示;
图6c示出了成对信道元素的语法表示;
图6d示出了“ICS”控制信息的语法表示;
图6e示出了频域信道流的语法表示;
图6f示出了算术编码频谱数据的语法表示;
图6g示出了用于解码一组频谱值的一种语法表示;
图6h示出了用于解码一组频谱值的另一语法表示;
图6i示出了数据元素及变量的一个图例;
图6j示出了数据元素及变量的另一图例;
图6k示出了USAC单信道元素“UsacSingleChannelElement()”的语法表示;
图6l示出了USAC成对信道元素“UsacChannelPairElement()”的语法表示;
图6m示出了“ICS”控制信息的语法表示;
图6n示出了USAC核心编码器数据“UsacCoreCoderData”的语法表示;
图6o示出了频域信道流“fd_channel_stream()”的语法表示;
图6p示出了算术编码频谱数据“ac_spectral_data()”的语法表示;
图7示出了根据本发明的第一方面的音频编码器的方框示意图;
图8示出了根据本发明的第一方面的音频解码器的方框示意图;
图9示出了根据本发明的第一方面的数值当前上下文值到映射规则索引值的映射的图示;
图10示出了根据本发明的第二方面的音频编码器的方框示意图;
图11示出了根据本发明的第二方面的音频解码器的方框示意图;
图12示出了根据本发明的第三方面的音频编码器的方框示意图;
图13示出了根据本发明的第三方面的音频解码器的方框示意图;
图14a示出了用于根据USAC草拟标准的工作草案4的状态计算的上下文的示意图;
图14b示出了用于根据USAC草拟标准的工作草案4的算术编码方案的表格的概述;
图15a示出了用于根据本发明的实施例的状态计算的上下文的示意图;
图15b示出了用于根据比较实例的算术编码方案的表格的概述;
图16a示出了根据比较实例,根据USAC草拟标准的工作草案5,及根据AAC(先进音频编码)霍夫曼编码的用于无噪声编码方案的只读存储器需求的图示;
图16b示出了根据比较实例,及根据USAC草拟标准的工作草案5的构想的总USAC解码器数据只读存储器需求的图示;
图17示出了对根据USAC草拟标准的工作草案3或工作草案5的无噪声编码与根据比较实例的编码方案做比较的布置的示意图;
图18示出了根据USAC草拟标准的工作草案3及根据比较实例的USAC算术编码器产生的平均位率的表格表示;
图19示出了用于根据USAC草拟标准的工作草案3的算术解码器及根据比较实例的算术解码器的最小及最大位存储位阶(level)的表格表示;
图20示出了用于根据算术编码器的不同版本的USAC草拟标准的工作草案3解码32Kb位流的平均复杂度数量的表格表示;
图21示出了根据本发明的实施例的表“ari_lookup_m[742]”的内容的表格表示;
图22(1)至图22(4)示出了根据本发明的实施例的表“ari_hash_m[742]”的内容的表格表示;
图23(1)至图23(3)示出了根据本发明的实施例的表“ari_cf_m[64][17]”的内容的表格表示;
图24示出了表“ari_cf_r[]”的内容的表格表示;
图25示出了用于状态计算的上下文的示意图;
图26示出了用于比较实例(“M17558”)及用于根据本发明的实施例(“新提案”)的WD6参考质量位流的转码的平均编码效率的表格表示;
图27示出了用于比较实例(“M17558”)及用于根据本发明的实施例(“再训练表格”)的每个操作点的WD6参考质量位流的转码的编码效率的表格表示;
图28示出了用于比较实例(“M17558”)及用于根据本发明的实施例(“新提案”)的WD6的无噪声编码器存储需求的比较的表格表示;
图29示出了用于根据本发明的实施例(“再训练编码方案”)的表格的特征的表格表示;
图30示出了用于解码用于不同算术编码器版本的32Kb/s WD6参考质量位流的平均复杂度数量的表格表示;
图31示出了用于解码用于不同算术编码器版本的12Kb/s WD6参考质量位流的平均复杂度数量的表格表示;
图32示出了由根据本发明的实施例中以及在WD6中的算术编码器产生的平均位率的表格表示;
图33示出了基于帧的使用提议方案的最小、最大及平均位率的表格表示;
图34示出了使用WD6算术编码器及根据本发明的实施例(“新提案”)的编码器由USAC编码器产生的平均位率的表格表示;
图35示出了根据本发明的实施例的最佳情况及最差情况的表格表示;
图36示出了根据本发明的实施例的位存储极限的表格表示;
图37示出了根据本发明的实施例的算术编码数据“arith_data”的语法表示;
图38示出了帮助元素的定义的图例;
图39示出了定义的另一个图例;
图40a示出了根据本发明的实施例的函数或算法“arith_map_context”的伪编程码表示;
图40b示出了根据本发明的实施例的函数或算法“arith_get_context”的伪编程码表示;
图40c示出了根据本发明的实施例的函数或算法“arith_map_pk”的伪编程码表示;
图40d示出了根据本发明的实施例的函数或算法“arith_decode”的第一部分的伪编程码表示;
图40e示出了根据本发明的实施例的函数或算法“arith_decode”的第二部分的伪编程码表示;
图40f示出了根据本发明的实施例的用于解码一个或多个最低有效位的函数或算法的伪编程码表示;
图40g示出了根据本发明的实施例的函数或算法“arith_update_context”的伪编程码表示;
图40h示出了根据本发明的实施例的函数或算法“arith_save_context”的伪编程码表示;
图41(1)及图41(2)示出了根据本发明的实施例的表“ari_lookup_m[742]”的内容的表格表示;
图42(1)、42(2)、42(3)、42(4)示出了根据本发明的实施例的表“ari_hash_m[742]”的内容的表格表示;
图43(1)、43(2)、43(3)、43(4)、43(5)、43(6)示出了根据本发明的实施例的表“ari_cf_m[96][17]”的内容的表格表示;
图44示出了根据本发明的实施例的表“ari_cf_r[4]”的表格表示。
具体实施方式
1.根据图7的音频编码器
图7示出了根据本发明的实施例的音频编码器的方框示意图。音频编码器700被配置成接收输入音频信息710,及基于此来提供编码音频信息712。
音频编码器包括能量压缩时域至频域变换器720,其被配置成基于输入音频信息710的时域表示提供频域音频表示722,使得频域音频表示722包括一组频谱值。
音频编码器700还包括算术编码器730,其被配置成使用可变长度码字来编码(形成该频域音频表示722的这组频谱值中的)频谱值或其预处理版本,以获得编码音频信息712(其例如可包括多个可变长度码字)。
算术编码器730被配置成依据上下文状态将频谱值或频谱值的最高有效位平面值映射到码值(即,映射到可变长度码字)。
该算术编码器被配置成依据(当前)上下文状态选择描述频谱值或频谱值的最高有效位平面值到码值的映射的映射规则。算术编码器被配置成依据多个事先编码的(优选但不一定相邻的)频谱值来确定当前上下文状态,或描述该当前上下文状态的数值当前上下文值。
为了该目的,算术编码器被配置为评估散列表,其表项定义该数值上下文值中的有效状态值及该数值上下文值的区间边界。
散列表(在下文中也称为“ari_hash_m”)的定义优选在图22(1)、图22(2)、图22(3)及图22(4)的表格表示中给出。
此外,算术编码器优选地被配置为评估散列表(ari_hash_m),以确定数值当前上下文值是否与由散列表(ari_hash_m)的表项所描述的表上下文值相同和/或确定由散列表(ari_hash_m)的表项所描述的数值当前上下文值所在的区间,并依据评估结果得到描述所选映射规则的映射规则索引值(例如,本文用“pki”标示)。
在某些情况下,映射规则索引值可以与为有效状态值的数值(当前)上下文值个别地相关联。同样,共用映射规则索引值可以与位于由区间边界(其中该等区间边界优选由该散列表的表项所定义)所界定的区间内部的不同数值(当前)上下文值相关联。
如图可知,(频域音频表示722的)频谱值或频谱值的最高有效位平面到(编码音频信息712的)码值的映射可以使用映射规则742通过频谱值编码740执行。状态追踪器750可以被配置为追踪上下文状态。状态追踪器750提供描述当前上下文状态的信息754。描述当前上下文状态的信息754优选可以呈数值当前上下文值的形式。映射规则选择器760被配置为选择描述频谱值或频谱值的最高有效位平面到码值的映射的映射规则,例如累积频率表。据此,映射规则选择器760提供映射规则信息742给频谱值编码740。映射规则信息742可以采用映射规则索引值形式,或依据映射规则索引值而选择的累积频率表形式。映射规则选择器760包括(或至少评估)散列表752,其表项定义该数值上下文值中的有效状态值及该数值上下文值的区间边界。优选地,散列表762(ari_hash_m[742])的表项的定义如图22(1)至图22(4)的表格表示中给出。散列表762经评估来选择映射规则,即来提供映射规则信息742。
优选地,但不一定地,映射规则索引值可以与为有效状态值的数值上下文值个别相关联,共用映射规则索引值可以与位于由区间边界所界定的区间内部的不同数值上下文值相关联。
综上所述,音频编码器700执行由时域至频域变换器所提供的频域音频表示的算术编码。该算术编码为上下文相关,使得映射规则(例如,累积频率表)依据事先编码的频谱值来选择。据此,时间上和/或频率上(或至少在预定环境内部)彼此相邻和/或相邻于当前编码频谱值(即在当前编码频谱值的预定环境内部的频谱值)的频谱值在算术编码中进行考虑以调整由算术编码所评估的概率分布。当选择适当映射规则时,评估由状态追踪器750所提供的数值当前上下文值754。因不同映射规则的数目通常显著小于数值当前上下文值754的可能值数目,故映射规则选择器760分配相同映射规则(例如,由映射规则索引值描述的相同映射规则)给相对较大数目的不同数值上下文值。虽言如此,特殊映规则须相关联通常特定频谱配置(以特定数值上下文值表示)来获得良好编码效率。
已发现如果单一散列表定义有效状态值及数值(当前)上下文值的区间边界,则映射规则依据数值当前上下文值的选择可以以特高的计算效率进行。此外,已发现如图22(1)、图22(2)、图22(3)及图22(4)中所定义的散列表的使用获得特高的编码效率。已发现此机制结合所述散列表适应映射规则选择的要求,原因在于存在单一有效状态值(或有效数值上下文值)嵌于(共用映射规则相关联的)多个非有效状态值的左侧区间与(共用映射规则相关联的)多个非有效状态值的右侧区间之间的多种情况。同样,使用单一散列表的机制,其表项如图22(1)、图22(2)、图22(3)及图22(4)中所定义并定义有效状态值及数值(当前)上下文值的区间边界,可有效处理不同情况,其中例如有两个相邻的非有效状态值区间(也称为非有效数值上下文值),其间不含有效状态值。由于表存取数目维持少数,故可达成特高计算效率。例如,单一迭代表搜索在大部分实施例中足以找出该数值当前上下文值是否等于任何由所述散列表的表项定义的有效状态值,或该数值当前上下文值所在的非有效状态值区间。结果,既费时又耗能的表存取次数可维持少次。如此,使用散列表762的映射规则选择器760就计算复杂度而言,可考虑为特别有效的映射规则选择器,同时仍允许获得良好编码效率(就位率而言)。
下面将对有关从数值当前上下文值754导出映射规则信息742的进一步细节进行描述。
2.根据图8的音频解码器
图8示出了音频解码器800的方框示意图。音频解码器800被配置为接收编码音频信息810,并基于此而提供解码音频信息812。
音频解码器800包括算术解码器820,其被配置为基于频谱值的算术编码表示821提供多个频谱值822。
音频解码器800还包括频域至时域变换器830,其被配置为接收解码频谱值822并提供时域音频表示812,其可使用解码频谱值822组成解码音频信息以获得解码音频信息812。
算术解码器820包括频谱值确定器824,其被配置为将频谱值的算术编码表示821的码值映射到表示解码频谱值中的一个或多个或解码频谱值中的一个或多个的至少一部分(例如,最高有效位平面)的符号码。频谱值确定器824可以被配置为依据映射规则执行映射,映射规则通过映射规则信息828a进行描述。映射规则信息828a例如可以采用映射规则索引值的形式,或选择的累积频率表(例如,依据映射规则索引值选择)的形式。
算术解码器820被配置为选择映射规则(例如,累积频率表),其依据上下文状态(其可由上下文状态信息826a所描述),描述码值(由频谱值的算术编码表示821所描述)到符号码(描述一个或多个频谱值或其最高有效位平面)的映射。
算术解码器820被配置为依据多个事先解码的频谱值确定当前上下文状态(由数值当前上下文值所描述)。为了达成此目的,可使用状态追踪器826,其接收描述事先解码的频谱值的信息,并基于此而提供描述当前上下文状态的数值当前上下文值826a。
算术解码器也被配置为评估散列表829,其表项定义该数值上下文值中的有效状态值及该数值上下文值的区间边界以选择映射规则。优选地,散列表829(ari_hash_m[742])的表项的定义如图22(1)至图22(4)的表格表示给出。散列表829经评估来选择映射规则,即来提供映射规则信息829。
优选地,映射规则索引值与为有效状态值的数值上下文值个别地相关联,且共用映射规则索引值与位于由区间边界所界限的区间内部的不同数值上下文值相关联。散列表829的评估例如可使用散列表评估器执行,其可为映射规则选择器828的一部分。据此,例如映射规则索引值的形式的映射规则索引信息828a,基于描述当前上下文状态的数值当前上下文值826a而获得。映射规则选择器828例如可依据散列表829的评估结果确定映射规则索引信息828a。可供选择地,散列表829的评估可直接提供映射规则索引值。
有关音频信号解码器800的功能,应注意的是,算术解码器820被配置成选择映射规则(例如,累积频率表),其一般而言适于欲解码的频谱值,原因在于映射规则依据当前上下文状态(例如,通过数值当前上下文值所描述)来选择,而其又依据多个事先解码的频谱值来确定。据此,可探讨欲解码相邻频谱值间的统计相依性。此外,算术解码器820可使用映射规则选择器828有效地实施,在计算复杂度、表大小与编码效率间有良好折衷。通过评估表项描述有效状态值及非有效状态值区间的区间边界的(单一)散列表829,单一迭代表搜索可以足以从该数值当前上下文值826a导出映射规则信息828a。此外,已发现如图22(1)、图22(2)、图22(3)、图22(4)中所定义的散列表的使用获得特高的编码效率。据此,可能将相对较大数目的不同可能数值(当前)上下文值映射到相对较小数目的不同映射规则索引值。如前文说明,且如图22(1)至图22(4)的表格表示中所定义,通过使用散列表829可探讨下述发现:在许多情况下,单一经分离的有效状态值(有效上下文值)嵌在非有效状态值(非有效上下文值)的左侧区间与非有效状态值(非有效上下文值)的右侧区间之间,其中,比较左侧区间的状态值(上下文值)与右侧区间的状态值(上下文值)时,不同的映射规则索引值与不同的有效状态值(有效上下文值)相关联。然而,散列表829的使用也良好适合用于其中数值状态值的两个区间紧邻而无有效状态值介于其间的情况。
总结而言,当依据当前上下文状态(或依据描述当前上下文状态的数值当前上下文值)选择映射规则(或当提供映射规则索引值)时,评估散列表829“ari_hash_m[742]”的映射规则选择器828获得特佳效率,原因在于散列机制良好调整适应于音频解码器的典型上下文场景。
下文将对进一步细节进行描述。
3.根据图9的上下文值散列机制
在下文中,将公开上下文值散列机制,其可在映射规则选择器760和/或映射规则选择器828中实现。散列表762和/或散列表829,如图22(1)至图22(4)的表格表示中所定义,可用来实现该上下文值散列机制。
现在参照图9,其示出了数值当前上下文值散列场景,将对进一步细节进行描述。在图9的图示中,横坐标910描述数值当前上下文值(即数值上下文值)的值。纵坐标912描述映射规则索引值。记号914描述非有效数值上下文值(描述非有效状态)的映射规则索引值。记号916描述用于描述个别(实际)有效状态的“个别”(实际)有效数值上下文值的映射规则索引值。记号916描述用于描述“不当”有效状态的“不当”数值上下文值的映射规则索引值,其中“不当”有效状态是其相关联的映射规则索引值系与非有效数值上下文值的相邻区间中的一者的映射规则索引值相同的有效状态。
如图可知,散列表表项“ari_hash_m[i1]”描述具有数值上下文值c1的个别(实际)有效状态。如图可知,映射规则索引值mriv1与具有数值上下文值c1的个别(实际)有效状态相对应。据此,数值上下文值c1及映射规则索引值mriv1可由散列表表项“ari_hash_m[i1]”所描述。数值上下文值的区间932由数值上下文值c1所界限,其中数值上下文值c1并不属于区间932,使得区间932的最大数值上下文值等于c1-1。映射规则索引值mriv4(与mriv1不同)与区间932的数值上下文值相关联。映射规则索引值mriv4例如可由额外表“ari_lookup_m”的表项“ari_lookup_m[i1-1]”描述。
此外,映射规则索引值mriv2可与位于区间934内的数值上下文值相关联。区间934的下边界由数值上下文值c1确定,数值上下文值c1是有效数值上下文值,其中该数值上下文值c1不属于区间932。据此,区间934的最小值等于c1+1(假设整数数值上下文值)。区间934的另一边界由数值上下文值c2确定,其中该数值上下文值c2不属于区间934,使得区间934的最大值等于c2-1。数值上下文值c2为所谓的“不当”数值上下文值,其通过散列表表项“ari_hash_m[i2]”描述。例如,映射规则索引值mriv2可与数值上下文值c2相关联,使得与“不当”有效数值上下文值c2相关联的数值上下文值等于由该数值上下文值c2所界限的区间934相关联的映射规则索引值。此外,数值上下文值的区间936也由数值上下文值c2所界限,其中该数值上下文值c2不属于区间936,使得区间936的最小值等于c2+1。通常与映射规则索引值mriv2不同的映射规则索引值mriv3与区间936的数值上下文值相关联。
如图可知,与数值上下文值区间932相关联的映射规则索引值mriv4可通过表“ari_lookup_m”的表项“ari_lookup_m[i1-1]”描述;与数值上下文值区间934相关联的映射规则索引值mriv2可通过表“ari_lookup_m”的表项“ari_lookup_m[i1]”描述;且映射规则索引值mriv3可通过表“ari_lookup_m”的表项“ari_lookup_m[i2]”描述。于此处列举的实例中,散列表索引值i2可比散列表索引值i1大1。
如图9可知,映射规则选择器760或映射规则选择器828可接收数值当前上下文值764、826a,及经由评估表“ari_hash_m”的表项而判定数值当前上下文值是否为有效状态值(与其是否为“个别”有效状态值或“不当”有效状态值无关),或该数值当前上下文值是否位于由(“个别”或“不当”)有效状态c1、c2所界限的区间932、934、936中的一者内部。检查该数值当前上下文值是否等于数值上下文值c1、c2,以及评估该数值当前上下文值系位于区间932、934、936中的哪一个区间(在该数值当前上下文值不等于有效状态值的情况下),皆可使用单一共用散列表搜索执行。
此外,散列表“ari_hash_m”的评估可用来获得散列表索引值(例如i-1、i1或i2)。如此,映射规则选择器760、828可以被配置为通过评估单一散列表762、829(例如,散列表“ari_hash_m”),即可获得标示有效状态值(例如,c1或c2)和/或区间(例如,932、934、936)及该数值当前上下文值是否为有效上下文值(也称作有效状态值)的信息的散列表索引值(例如,i1-1、i1或i2)。
此外,若在散列表762、829(“ari_hash_m”)的评估中发现数值当前上下文值并非“有效”上下文值(或“有效”状态值),则得自散列表(“ari_hash_m”)评估的散列表索引值(例如,i1-1、i1或i2)可用来获得与数值上下文值的区间932、934、936相关联的映射规则索引值。例如,散列表索引值(例如,i1-1、i1或i2)可用来指示额外散列表(例如,“ari_hash_m”)的表项,其描述在该数值当前上下文值所在的区间932、934、936内部与该区间相关联的映射规则索引值。
有关进一步细节,可参考后文对算法“arith_get_pk”的详细讨论(其中对此种算法“arith_get_pk()”有不同选项,其实例示于图5e及图5f中)。
此外,应注意的是,区间大小可依情况而异。在某些情况下,数值上下文值的区间包括单一数值上下文值。但在许多情况下,一个区间可包括多个数值上下文值。
4.根据图10的音频编码器
图10示出了根据本发明的实施例的音频编码器1000的方框示意图。根据图10的音频编码器1000类似于根据图7的音频编码器700,因而相同信号及装置在图7及图10中用相同的参考标号表示。
音频编码器1000被配置成接收输入音频信息710,并基于此来提供编码音频信息712。该音频编码器1000包括能量压缩时域至频域变换器720,其被配置为基于输入音频信息710的时域表示提供频域表示722,使得该频域音频表示722包括一组频谱值。该音频编码器1000还包括算术编码器1030,其被配置为使用可变长度码字来编码(形成频域表示722的这组频谱值中的)频谱值或其预处理版本,以获得编码音频信息712(其例如,可包括多个可变长度码字)。
该算术编码器1030被配置为依据上下文状态将一个频谱值,或多个频谱值,或一个频谱值或多个频谱值的最高有效位平面值映射到码值(即,映射到可变长度码字)。该算术编码器1030被配置为依据上下文状态选择描述一个频谱值,或多个频谱值,或一个频谱值或多个频谱值的最高有效位平面值到码值的映射的映射规则。该算术编码器被配置为依据多个先前编码(优选但不一定相邻)频谱值来确定当前上下文状态。为了此目的,算术编码器被配置为依据上下文子区域值来修改描述与一个或多个先前编码频谱值相关联的上下文状态(例如,选择相对应映射规则)的数值先前上下文值的数字表示,以获得描述与一或多个欲编码频谱值相关联的上下文状态(例如,选择相对应映射规则)的数值当前上下文值的数字表示。
如图可知,将一个频谱值,或多个频谱值,或一个频谱值或多个频谱值的最高有效位平面值映射到码值可使用由映射规则信息742所描述的映射规则而通过频谱值编码740执行。状态追踪器750可以被配置为追踪上下文状态。状态追踪器750可以被配置为依据上下文子区域值来修改描述与一个或多个先前编码频谱值的编码相关联的上下文状态的数值先前上下文值的数字表示,以获得描述与一个或多个欲编码频谱值相关联的上下文状态的数值当前上下文值的数字表示。数值先前上下文值的数字表示的修改例如可以通过数字表示修改器1052进行,数字表示修改器1052接收数值先前上下文值及一个或多个上下文子区域值,并提供数值当前上下文值。据此,状态追踪器1050例如以数值当前上下文值形式提供描述当前上下文状态的信息754。映射规则选择器1060可选择映射规则,例如累积频率表,其描述一个频谱值,或多个频谱值,或一个频谱值或多个频谱值的最高有效位平面值映射到码值的映射关系。据此,映射规则选择器1060提供映射规则信息742给频谱值编码740。
在某些实施例中,应注意的是,状态追踪器1050可与状态追踪器750或状态追踪器826相同。还应注意的是,在某些实施例中,映射规则选择器1060可与映射规则选择器760或映射规则选择器828相同。优选地,映射规则选择器828可以被配置成使用如图22(1)至图22(4)的表格表示中所定义的散列表“ari_hash_m[742]”来选择映射规则。例如,映射规则选择器可以执行上文参照图7及图8描述的功能。
综上所述,音频编码器1000执行由时域至频域变换器所提供的频域音频表示的算术编码。算术编码为上下文相关,因而映射规则(例如累积频率表)依据事先编码的频谱值选择。据此,时间上和/或频率上(或至少在预定环境内部)彼此相邻和/或相邻于当前编码频谱值(即,在当前编码频谱值的预定环境内部的频谱值)的频谱值在算术编码中进行考虑以调整由算术编码所评估的概率分布。
当确定数值当前上下文值时,描述与一个或多个事先编码的频谱值相关联的上下文状态的数值先前上下文值的数字表示依据上下文子区域值来修改,以获得描述与一个或多个欲编码频谱值相关联的上下文状态的数值当前上下文值的数字表示。此办法使得避免完全重新计算数值当前上下文值,常规办法中完全重新计算耗用大量资源。有多种用于修改数值先前上下文值的数字表示的可能性存在,包括数值先前上下文值的数字表示的重新定标的组合,上下文子区域值或由其导出值加至数值先前上下文值的数字表示或加至已处理的数值先前上下文值的数字表示,依据上下文子区域值而置换部分数值先前上下文值的数字表示(而非全部数字表示)等。如此,数值当前上下文值的数字表示基于数值先前上下文值的数字表示,也基于至少一个上下文子区域值获得,其中通常执行计算组合来组合数值先前上下文值与上下文子区域值,例如,加法运算、减法运算、乘法运算、除法运算、布尔(Boolean)与门(AND)运算、布尔或门(OR)运算、布尔与非门(NAND)运算、布尔或非门(NOR)运算、布尔否定运算、补码计算或移位运算中的两种或多种运算。据此,当由数值先前上下文值导出数值当前上下文值时,通常至少部分数值先前上下文值的数字表示维持不变(除了选择性地移位至不同位置外)。相反地,数值先前上下文值的数字表示的其他部分依一个或多个上下文子区域值而改变。如此,可以以相对较少的计算量获得数值当前上下文值,同时避免完全重新计算数值当前上下文值。
如此,可获得有意义的数值当前上下文值,其极其适合映射规则选择器1060使用,且其特别适用于结合如图22(1)、图22(2)、图22(3)、图22(4)的表格表示中所定义的散列表ari_hash_m使用。
结果,通过维持上下文计算足够简单,可获得有效编码。
5.根据图11的音频解码器
图11示出了音频解码器1100的方框示意图。音频解码器1100类似于根据图8的音频解码器800,因而相同信号、装置及功能用相同参考标号表示。
音频解码器1100被配置为接收音频信息810,并基于此而提供解码音频信息812。音频解码器1100包括算术解码器1120,其被配置为基于频谱值的算术编码表示821提供多个解码频谱值822。音频解码器1100还包括频域至时域变换器830,其被配置为接收解码频谱值822并提供时域音频表示812,其可使用解码频谱值822组成解码音频信息以获得解码音频信息812。
算术解码器1120包括频谱值确定器824,其被配置为将频谱值的算术编码表示821的码值映射到表示解码频谱值中的一个或多个或解码频谱值中的一个或多个的至少一部分(例如,最高有效位平面)的符号码。频谱值确定器824可以被配置为依据映射规则执行映射,映射规则通过映射规则信息828a描述。映射规则信息828a例如可包括映射规则索引值,或可包括所选的一组累积频率表表项。
算术解码器1120被配置为依据上下文状态选择映射规则(例如,累积频率表),该映射规则描述码值(由频谱值的算术编码表示821所描述)到符号码(描述一个或多个频谱值)的映射,该上下文状态可由上下文状态信息1126a描述。上下文状态信息1126a可采用数值当前上下文值形式。算术解码器1120被配置为依据多个事先解码的频谱值822来确定当前上下文状态。为了此目的,可使用状态追踪器1126,其接收描述事先解码的频谱值的信息。算术解码器被配置为依据上下文子区域值修改描述与一个或多个事先解码的频谱值相关联的上下文状态的数值先前上下文值的数字表示,以获得描述与一个或多个欲解码频谱值相关联的上下文状态的数值当前上下文值的数字表示。数值先前上下文值的数字表示的修改如可通过数字表示修改器1127执行,该修改器为状态追踪器1126的一部分。据此,获得当前上下文状态信息1126a例如呈数值当前上下文值形式。映射规则的选择可通过映射规则选择器1128执行,该选择器由当前上下文状态信息1126a导出映射规则信息828a,并提供映射规则信息828a给频谱值确定器824。优选地,映射规则选择器1128可以被配置为使用如图22(1)至图22(4)的表格表示中所定义的散列表“ari_hash_m[742]”来选择映射规则。例如,映射规则选择器可以执行上文参照图7及图8描述的功能。
有关音频信号解码器1100的功能,应注意的是,算术解码器1120被配置为选择映射规则(例如,累积频率表),其一般而言良好适应于欲解码的频谱值,原因在于映射规则依据当前上下文状态而选择,而当前上下文状态依据多个事先解码的频谱值确定。据此,可探讨待解码的相邻频谱值间的统计相依性。
此外,通过依据上下文子区域值,修改描述与一个或多个事先解码的频谱值相关联的上下文状态的数值先前上下文值的数字表示,以获得描述与待解码的一个或多个频谱值的解码相关联的上下文状态的数值当前上下文值的数字表示,可以以相对较少的计算量获得有关当前上下文状态的有意义信息,其极为适合用于映射到映射规则索引值,并尤其适用于与图22(1)、图22(2)、图22(3)、图22(4)的表格表示中所定义的散列表ari_hash_m联合使用。通过维持至少部分数值先前上下文值的数字表示(可能呈位移位版本或定标(scaled,缩放)版本),同时依据上下文子区域值更新数值先前上下文值的数字表示的另一部分,上下文子区域值尚未在数值先前上下文值中进行考虑但应当在数值当前上下文值中进行考虑,因此,可维持导出数值当前上下文值的计算次数相当少。同样,可能探讨下述事实:用于解码相邻频谱值的上下文通常是相似或相关的。例如,用于解码第一频谱值(或第一多个频谱值)的上下文系取决于第一组事先解码的频谱值。用于解码其系相邻于第一频谱值(或第一组频谱值)的第二频谱值(或第二多个频谱值)的上下文取决于第二组事先解码的频谱值。因假设第一频谱值与第二频谱值相邻(例如,就相关联的频率而言),确定用于第一频谱值编码的上下文的第一组频谱值可与用于确定第二频谱值解码的上下文的第二组频谱值包括若干重叠。据此,容易理解用于第二频谱值解码的上下文状态包括与用于第一频谱值解码的上下文状态的若干相关性。上下文导出的,即数值当前上下文值的导出的计算效率可通过探讨此等相关性而达成。已发现,通过只修改取决于在导算数值先前上下文值时未被考虑的上下文子区域值的数值先前上下文值的部分,并通过从数值先前上下文值来导算数值当前上下文值,可有效利用用于相邻频谱值解码的上下文状态间(例如,由数值先前上下文值所描述的上下文状态与由数值当前上下文值所描述的上下文状态间)的相关性。
总结而言,本文所述构想允许导出数值当前上下文值时特佳的计算效率。
下文将对进一步细节进行描述。
6.根据图12的音频编码器
图12示出了根据本发明的实施例的音频编码器的方框示意图。根据图12的音频编码器1200类似与根据图7的音频编码器700,因而相同装置、信号及功能用相同参考标号表示。
音频编码器1200被配置为接收输入音频信息710,并基于此而提供编码音频信息712。音频编码器1200包括能量压缩时域至频域变换器720,其被配置为基于输入音频信息710的时域表示而提供频域音频表示722,使得频域音频表示722包括一组频谱值。音频编码器1200还包括算术编码器1230,其被配置为使用可变长度码字来编码一个频谱值(构成该频域音频表示722的这组频谱值以外的频谱值)或多个频谱值或其预处理版本,以获得编码音频信息712(其例如可包括多个可变长度码字)。
算术编码器1230被配置为依据上下文状态,将一个频谱值或多个频谱值、或一个频谱值或多个频谱值的最高有效位平面值映射到码值(即,映射到可变长度码字)。该算术编码器1230被配置为依据上下文状态,选择描述一个频谱值或多个频谱值、或一个频谱值或多个频谱值的最高有效位平面值映射到码值的映射规则。算术编码器被配置为依据多个事先编码的(优选但不一定相邻的)频谱值来确定当前上下文状态。为了此目的,算术编码器被配置为基于事先编码的频谱值来获得多个上下文子区域值,存储所述上下文子区域值,并依据所存储的上下文子区域值来导出与一个或多个待编码的频谱值相关联的数值当前上下文值。此外,该算术编码器被配置为计算由多个事先编码的频谱值所形成的向量的范数,以获得与多个事先编码的频谱值相关联的共用上下文子区域值。
如图可知,一个频谱值或多个频谱值、或一个频谱值或多个频谱值的最高有效位平面值到码值的映射可通过频谱值编码740使用由映射规则信息742所描述的映射规则执行。状态追踪器1250可以被配置为追踪上下文状态,且可包括上下文子区域值计算器1252来计算由多个事先编码的频谱值所形成的向量的范数,以获得与多个事先编码的频谱值相关联的共用上下文子区域值。优选地,状态追踪器1250还被配置为依据由上下文子区域值计算器1252所执行的上下文子区域值计算结果来确定当前上下文状态。据此,状态追踪器1250提供描述当前上下文状态的信息1254。映射规则选择器1260可选择描述一个频谱值或多个频谱值、或一个频谱值或多个频谱值的最高有效位平面值映射到码值的映射规则,例如,累积频率表。据此,映射规则选择器1260提供映射规则信息742给频谱编码740。优选地,映射规则选择器1260可以被配置为使用如图22(1)至图22(4)的表格表示中所定义的散列表“ari_hash_m[742]”来选择映射规则。例如,映射规则选择器可以执行上文参照图7及图8描述的功能。
综上所述,音频编码器1200执行由时域至频域变换器720所提供的频域音频表示的算术编码。该算术编码为上下文相关,使得映射规则(例如,累积频率表)依据事先编码的频谱值而选择。据此,时间上和/或频率上(或至少在预定环境内部)彼此相邻和/或相邻于当前编码频谱值(即,在当前编码频谱值的预定环境内部的频谱值)的频谱值在算术编码中进行考虑以调整由算术编码器所评估的概率分布。
为了提供数值当前上下文值,基于由多个事先编码的频谱值所形成的向量的范数的计算获得与多个事先编码的频谱值相关联的上下文子区域值。数值当前上下文值的确定结果应用于当前上下文状态的选择,即应用于映射规则的选择。
通过计算由多个事先编码的频谱值所形成的向量的范数,可获得描述一个或多个待编码频谱值的上下文的一部分的有意义信息,其中事先编码的频谱值的向量的范数通常可用相对少数的位表示。如此,需要存储供后来用于数值当前上下文值的导出的上下文信息量可通过应用前文讨论的上下文子区域值计算办法而维持足够少。已发现事先编码的频谱值的向量的范数通常包括有关上下文状态的最有效信息。相反地,已发现事先编码的频谱值符号通常包括对上下文状态的次要影响,因而合理地忽略事先编码的频谱值符号来减少存储供后来使用的信息量。同样,已发现事先编码的频谱值的向量的范数计算是用于导出上下文子区域值的合理办法,原因在于通常借范数计算所获得的平均效果对有关上下文状态的最重要信息实质上没有影响。概括而言,通过上下文子区域值计算器1252执行的上下文子区域值计算允许提供压缩上下文子区域值信息供存储以备以后再度使用,其中尽管信息量减少,仍然保有有关上下文状态的最相关信息。
此外,已发现如上文讨论的数值当前上下文值极其适用于使用如图22(1)至图22(4)的表格表示中所定义的散列表“ari_hash m[742]”来选择映射规则。例如,映射规则选择器可以执行上文参照图7及图8描述的功能。
据此,可实现输入音频信息710的有效编码,同时保持通过算术编码器1230存储的数据量及计算量足够小。
7.根据图13的音频解码器
图13示出音频解码器1300的方框示意图。音频解码器1300类似于根据图8的音频解码器800及根据图11的音频解码器1100,因而相同装置、信号及功能用相同参考标号表示。
音频解码器1300被配置为接收音频信息810,并基于此而提供解码音频信息812。音频解码器1300包括算术解码器1320,其被配置为基于频谱值的算术编码表示821提供多个解码频谱值822。音频解码器1300还包括频域至时域变换器830,其被配置为接收解码频谱值822,并提供时域音频表示812,其可使用解码频谱值822构成解码音频信息,以获得解码音频信息812。
算术解码器1320包括频谱值确定器824,其被配置为将频谱值的算术编码表示821的码值映射到表示解码频谱值中的一个或多个或解码频谱值中的一个或多个的至少一部分(例如,最高有效位平面)的符号码。频谱值确定器824可以被配置为依据映射规则执行映射,映射规则通过映射规则信息828a描述。映射规则信息828a例如可包括映射规则索引值,或可包括所选的一组累积频率表表项。
算术解码器1320被配置为依据上下文状态(其可由上下文状态信息1326a描述)选择描述码值(由频谱值的算术编码表示821所描述)到符号码(描述一个或多个频谱值)的映射的映射规则(例如,累积频率表)。优选地,算术解码器1320可以被配置为使用如图22(1)至图22(4)的表格表示中所定义的散列表“ari_hash_m[742]”来选择映射规则。例如,算术解码器1320可以执行上文参照图7及图8描述的功能。算术解码器1320被配置为依据多个事先解码的频谱值822来确定当前上下文状态。为了此目的,可使用状态追踪器1326,其接收描述事先解码的频谱值的信息。算术解码器也被配置为基于事先解码的频谱值而获得多个上下文子区域值,并存储所述上下文子区域值。该算术解码器被配置为依据所存储的上下文子区域值,而导出与一或多个待编码频谱值相关联的数值当前上下文值。算术解码器1320被配置为计算多个事先解码的频谱值形成的向量的范数,以获得与多个事先编码的频谱值相关联的共用上下文子区域值。
例如,可通过作为状态追踪器1326的一部分的上下文子区域值计算器1327来执行由多个事先编码的频谱值形成的向量的范数的计算,以获得与多个事先解码的频谱值相关联的共用上下文子区域值。据此,当前上下文状态信息1326a基于上下文子区域值获得,其中,优选地,该状态追踪器1326依据所存储的上下文子区域值来提供与一个或多个待编码频谱值相关联的数值当前上下文值。映射规则的选择可通过映射规则选择器1128执行,该选择器由当前上下文状态信息1126a导出映射规则信息828a,并提供映射规则信息828a给频谱值确定器824。
有关音频信号解码器1300的功能,应注意的是,算术解码器1320被配置为选择映射规则(例如,累积频率表),其一般而言良好适应于待解码的频谱值,原因在于映射规则依据当前上下文状态而选择,而当前上下文状态又依据多个事先解码的频谱值确定。据此,可探讨待解码的相邻频谱值间的统计相依性。
然而,已发现就内存的使用而言,存储基于由多个事先解码的频谱值所形成的向量的范数的计算的上下文子区域值,供以后确定数值上下文值时使用是有效的。已发现这种上下文子区域值仍然包括最相关的上下文信息。据此,状态追踪器1326使用的构想构成编码效率、计算效率与存储效率间的良好折衷。
下文将对进一步细节进行描述。
8.根据图1的音频编码器
在下文中,将对根据本发明的实施例的音频编码器进行描述。图1示出了此音频编码器100的方框示意图。
音频编码器100被配置为接收输入音频信息110,并基于此而提供位流112,其组成编码音频信息。音频编码器100选择性地包括预处理器120,其被配置成接收输入音频信息110,并基于此而提供经预处理的输入音频信息110a。该音频编码器100还包括能量压缩时域至频域信号变换器130,其也被称为信号变换器。信号变换器130被配置为接收输入音频信息110、110a并基于此而提供频域音频信息132,其优选地采用一组频谱值的形式。例如,信号变换器130可以被配置为接收输入音频信息110、110a的一帧(例如,时域样本的块),并提供表示各频帧的音频内容的一组频谱值。此外,信号变换器130可以被配置为接收多个接续重叠的或非重叠的输入音频信息110、110a的音频帧,并基于此而提供时频域音频表示,其包括一系列接续组的频谱值,每组频谱值与各个帧相关联。
能量压缩时域至频域信号变换器130可包括能量压缩滤波器组,其提供与不同的重叠的或非重叠的频率范围相关联的频谱值。例如,信号变换器130可包括开窗MDCT(修正离散余弦变换)变换器130a,其被配置为使用变换窗口来开窗该输入音频信息110、110a(或其帧),及对该已开窗输入音频信息110、110a(或其开窗帧)执行修正离散余弦变换(MDCT)。据此,频域音频表示132可包括一组例如与输入音频信息的帧相关联的MDCT系数的形式的1024频谱值。
可选地,音频编码器100可进一步包括频谱后处理器140,其被配置为接收频域音频表示132,并基于此而提供经后处理的频域音频表示142。频谱后处理器140例如可以被配置为执行时间噪声整形和/或长期预测和/或业界已知的任何其他频谱后处理。音频编码器进一步选择性地包括定标器/量化器150,其被配置为接收频域音频表示132或其后处理版本142,并提供已定标且已量化的频域音频表示152。
可选地,音频编码器100进一步包括心理声学模型处理器160,其被配置为接收输入音频信息110(或其后处理版本110a),并基于此而提供可选择的控制信息,其可用于能量压缩时域至频域信号变换器130的控制,用于可选择的频谱后处理器140的控制,和/或用于可选择的定标器/量化器150的控制。例如,心理声学模型处理器160可以被配置为分析输入音频信息,判定输入音频信息110、110a的哪些组分对音频内容的人类感知特别重要,及输入音频信息110、110a的哪些组分对音频内容感知不太重要。据此,心理声学模型处理器160可提供控制信息,其由音频编码器100用来调整定标器/量化器150对频域音频表示132、142的定标,和/或通过定标器/量化器150施加的量化分辨率。结果,感知上重要的定标因子频带(即对音频内容的人类感知特别重要的相邻频谱值组群)以大型定标因子定标且以较高分辨率量化,而感知上不太重要的定标因子频带(即,相邻频谱值组群)以小型定标因子定标且以较低的量化分辨率量化。据此,感知上较重要的频率的定标频谱值通常明显大于感知上不太重要的频率的频谱值。
音频编码器还包括算术编码器170,其被配置为接收频域音频表示132的已定标且已量化版本152(或者频域音频表示132的后处理版本142,或甚至频域音频表示132本身),并基于此而提供算术码字信息172a,使得算术码字信息表示频域音频表示152。
音频编码器100还包括位流有效载荷格式化器190,其被配置为接收算术码字信息172a。位流有效载荷格式化器190也通常被配置为接收额外信息,例如描述哪些定标因子已经由定标器/量化器150应用的定标因子信息。另外,位流有效载荷格式化器190可以被配置为接收其他控制信息。位流有效载荷格式化器190被配置为依据期望的位流语法来组装位流,而基于所接收的信息来提供位流112,下文将对这种情况进行描述。
在下文中将描述有关算术编码器170的细节。算术编码器170被配置为接收多个频域音频表示132的已经后处理且经定标与量化的频谱值。算术编码器包括最高有效位平面抽取器174,其被配置为从一个频谱值,或甚至从两个频谱值中抽取最高有效位平面m。此处应注意的是,最高有效位平面可包括一个或甚至多个位(例如,2或3位),其为该频谱值的最高有效位。如此,最高有效位平面抽取器174提供频谱值的最高有效位平面值176。
然而,可供选择地,最高有效位平面抽取器174可提供组合多个频谱值(例如,频谱值a及b)的最高有效位平面的组合最高有效位平面值m。频谱值a的最高有效位平面用m表示。另外,多个频谱值a、b的组合最高有效位平面值用m表示。
算术编码器170还包括第一码字确定器180,其被配置为确定表示最高有效位平面值m的算术码字acod_m[pki][m]。可选择地,码字确定器180也可提供一个或多个脱序码字(此处也用“ARITH_ESCAPE”表示),其指示例如有多少较低有效位平面可资利用(且,因此,指示最高有效位平面的数值权值)。第一码字确定器180可以被配置为使用具有(或以下述指称的)累积频率表索引pki的经择定的累积频率表来提供与最高有效位平面值m相关联的码字。
为了判定须选用哪一个累积频率表,算术编码器优选包括状态追踪器182,其被配置为例如通过观察哪些频谱值先前已经编码来追踪算术编码器的状态。结果状态追踪器182提供状态信息184,例如用“s”或“t”或“c”表示的状态值。算术编码器170还包括累积频率表选择器186,其被配置为接收状态信息184,并提供描述所选累积频率表的信息188给码字确定器180。例如,累积频率表选择器186可提供累积频率表索引“pki”,其描述选择一组64个累积频率表中哪个累积频率表来供码字确定器所使用。另外,累积频率表选择器186可提供整个所选的累积频率表或子表给码字确定器。如此,码字确定器180可使用所选的累积频率表或子表来提供最高有效位平面值m的码字acod_m[pki][m],使得编码该最高有效位平面值m的实际码字acod_m[pki][m]与m值及累积频率表索引pki具有相依性,并从而与当前状态信息184具有相依性。下文将对有关编码程序及所得码字格式的进一步细节进行描述。
然而,应注意的是,在某些实施例中,状态追踪器182可与状态追踪器750、状态追踪器1050或状态追踪器1250相同或具有相同功能。还应注意的是,在某些实施例中,累积频率表选择器186可与映射规则选择器760、映射规则选择器1060或映射规则选择器1260相同或具有相同功能。此外,在某些实施例中,第一码字确定器180可与频谱值编码740相同或具有相同功能。
算术编码器170进一步包括较低有效位平面抽取器189a,其被配置w为若待编码频谱值中的一个或多个超过只使用最高有效位平面的可编码值范围,则从已定标且已量化频域音频表示152中,抽取一个或多个较低有效位平面。根据需要,较低有效位平面可包括一个或多个位。据此,较低有效位平面抽取器189a提供较低有效位平面信息189b。算术编码器170还包括第二码字确定器189c,其被配置为接收较低有效位平面信息189d,并基于此而提供表示0、1或多个较低有效位平面内容的0、1或多个码字“acod_r”。第二码字确定器189c可被配置为应用算术编码算法或任何其他编码算法,以从较低有效位平面信息189b导出较低有效位平面码字“acod_r”。
此处应注意的是,较低有效位平面的数目依据已定标且已量化频谱值152的值而变化,使得若待编码的已定标且已量化频谱值相对较小,则完全没有较低有效位平面;使得若当前待编码的已定标且已量化频谱值属于中等范围,则可有一个较低有效位平面;以及使得若待编码的已定标且已量化频谱值具有相对较大值,则可有多于一个的较低有效位平面。
综上所述,算术编码器170被配置为使用阶层式编码程序来编码通过信息152描述的已定标且已量化频谱值。一个或多个频谱值的最高有效位平面(例如,包括每一频谱值1、2或3位)经编码来获得该最高有效位平面值m的算术码字“acod_m[pki][m]”。一个或多个频谱值的较低有效位平面(各个较低有效位平面例如包括1、2或3位)经编码来获得一个或多个码字“acod_r”。当编码最高有效位平面时,最高有效位平面值m被映射到码字acod_m[pki][m]。为了此目的,64个不同累积频率表可用于依据算术编码器170的状态,即依据事先编码的频谱值来编码值m。如此,获得码字“acod_m[pki][m]”。另外,若存在有一个或多个较低有效位平面,则提供一个或多个码字“acod_r”且包括在位流中。
重置描述
音频编码器100可选择性地被配置为判定通过重置上下文(例如通过将状态索引设定为默认值)是否可获得位率的改良。据此,音频编码器100可以被配置为提供重置信息(例如,命名为“arith_reset_flag”),其指示用于算术编码的上下文是否重置,且还指示在对应解码器中用于算术解码的上下文是否应重置。
下文将对有关位流格式及应用的累积频率表的细节进行讨论。
9.根据图2的音频解码器
在下文中将对根据本发明的实施例的音频解码器进行描述。图2示出了此音频解码器200的方框示意图。
音频解码器200被配置为接收位流210,位流210表示编码音频信息,且其可与由音频编码器100所提供的位流112相同。音频解码器200基于位流210提供解码音频信息212。
音频解码器200包括可选位流有效载荷解格式化器220,其被配置成接收位流210,并从该位流210抽取编码频域音频表示222。例如,位流有效载荷解格式化器220可以被配置为从位流210抽取算术编码频谱数据,例如表示频域音频表示的一个频谱值a或多个频谱值a、b的最高有效位平面值m的算术码字“acod_m[pki][m]”,及表示频域音频表示的一个频谱值a或多个频谱值a、b的较低有效位平面内容的码字“acod_r”。如此,编码频域音频表示222组成(或包括)频谱值的算术编码表示。位流有效载荷解格式化器220进一步被配置为从图2中未显示的位流抽取额外控制信息。此外,位流有效载荷解格式化器选择性地被配置成从位流210抽取状态重置信息224,其也标示为算术重置标记或“arith_reset_flag”。
音频解码器200包括算术解码器230,其也标示为“频谱无噪声解码器”。算术解码器230被配置为接收编码频域音频表示220及可选地状态重置信息224。算术解码器230也被配置为提供解码频域音频表示232,其可包括频谱值的解码表示。例如,解码频域音频表示232可包括频谱值的解码表示,其由编码频域音频表示220描述。
音频解码器200还包括可选反量化器/重定标器240,其被配置为接收解码频域音频表示232,并基于此而提供已反量化且已重定标的频域音频表示242。
音频解码器200进一步包括可选频谱预处理器250,其被配置为接收已反量化且已重定标的频域音频表示242,并基于此而提供该已反量化且已重定标的频域音频表示242的预处理版本252。音频解码器200还包括频域至时域信号变换器260,其也标示为“信号变换器”。信号变换器260被配置为接收该已反量化且已重定标的频域音频表示242(或另外该已反量化且已重定标的频域音频表示242或解码频域音频表示232)的预处理版本252,并基于此而提供该音频信息的时域表示262。频域至时域信号变换器260例如包括用于执行修正逆离散余弦反变换(IMDCT)及适当开窗(以及其他附属功能例如重叠与相加)的变换器。
音频解码器200可进一步包可选时域后处理器270,其被配置为接收该音频信息的时域表示262,并使用时域后处理来获得解码音频信息212。然而,若省略后处理,则时域表示262可与解码音频信息212完全相同。
此处应注意的是,反量化器/重定标器240、频谱预处理器250、频域至时域信号变换器260及时域后处理器270可依据控制信息而控制,通过位流有效载荷解格式化器220从位流210中抽取该控制信息。
总结音频解码器200的整体功能,解码频域音频表示232例如与编码音频信息的音频帧相关联的一组频谱值,可使用算术解码器230而基于编码频域音频表示222获得。随后,例如这组1024个频谱值被反量化、重定标并预处理,这些频谱值可以是MDCT系数。据此,获得经反量化、重定标及经频谱预处理的这组频谱值(例如,1024个MDCT系数)。随后,音频帧的时域表示由经反量化、重定标及经频谱预处理的这组频谱值(例如,MDCT系数)中导出。据此,获得音频帧的时域表示。给定音频帧的时域表示可与先前音频帧和/或后续音频帧的时域表示组合。例如,可执行后续音频帧的时域表示间的重叠与相加,以使相邻音频帧的时域表示间的变迁平滑化,并因而获得混迭消除。有关基于解码频域音频表示232而重新组成解码音频信息212的细节,例如可参考国际标准ISO/IEC 14496-3第3部分,第4子部分,其中给出了详细讨论。但也可使用其他更详尽的重叠及混迭消除方案。
在下文中将对有关算术解码器230的若干细节进行描述。算术解码器230包括最高有效位平面确定器284,其被配置为接收描述最高有效位平面值m的算术码字acod_m[pki][m]。最高有效位平面确定器284可以被配置为使用包括64个累积频率表的一组中的累积频率表从算术码字“acod_m[pki][m]”导出最高有效位平面值m。
最高有效位平面确定器284被配置为基于码字acod_m导出多个频谱值中的一个的最高有效位平面值286。算术解码器230进一步包括较低有效位平面确定器288,其被配置为接收表示频谱值的一个或多个较低有效位平面的一个或多个码字“acod_r”。据此,较低有效位平面确定器288被配置为提供一个或多个较低有效位平面的解码值290。音频解码器200还包括位平面组合器292,其被配置为接收一个或多个频谱值的最高有效位平面的解码值286,及若对当前频谱值可得较低有效位平面,则也可接收频谱值的一个或多个较低有效位平面的解码值290。据此,位平面组合器292提供解码频谱值,其为解码频域音频表示232的一部分。当然,算术解码器230通常被配置为提供多个频谱值,以获得与该音频内容的当前帧相关联的一整组解码频谱值。
算术解码器230进一步包括累积频率表选择器296,其被配置为依据描述算术解码器状态的状态索引298选择64个累积频率表ari_cf_m[64][17](每个表ari_cf_m[pki][17]具有17个表项,其中0≤pki≤63)中的一者。为了选择累积频率表中的一个,累积频率表选择器优选评估由图22(1)、图22(2)、图22(3)、图22(4)的表格表示所定义的散列表ari_hash_m[742]。下文将对有关该散列表ari_hash_m[742]的评估的细节进行描述。算术解码器230进一步包括状态追踪器299,其被配置为依据事先解码的频谱值追踪算术解码器的状态。该状态信息可选地响应于状态重置信息224而重置成默认状态信息。据此,累积频率表选择器296被配置为提供所选择的累积频率表的索引(例如pki)、或选择的累积频率表或其子表本身,用于应用于依据码字“acid_m”解码最高有效位平面值m。
总结音频解码器200的功能,音频解码器200被配置为接收经位率有效编码的频域音频表示222,并基于此而提供解码频域音频表示。在用于基于编码频域音频表示222获得解码频域音频表示232的算术解码器230中,通过使用被配置成应用累积频率表的算术解码器280来利用相邻频谱值的最高有效位平面值的不同组合概率。换言之,通过依据状态索引298而从包括64个不同累积频率表的一组中选出不同累积频率表来探讨频谱值间的统计相依性,通过观察事先算出的解码频谱值获得状态索引298。
应注意的是,状态追踪器299可与状态追踪器826、状态追踪器1126或状态追踪器1326相同或具有相同功能。累积频率表选择器296可与映射规则选择器828、映射规则选择器1128或映射规则选择器1328相同或具有相同功能。最高有效位平面确定器284可与频谱值确定器824相同或具有相同功能。
10.频谱无噪声编码工具的概述
在下文中将对有关例如借算术编码器170及算术解码器230执行的编码及解码算法的细节进行描述。
重点在于解码算法的描述。然而,应注意的是,可根据解码算法的教示执行相对应的编码算法,其中颠倒编码频谱值与解码频谱值间的映射关系,并且其中映射规则索引值的计算实质上是相同的。在编码器中,编码频谱值替代解码频谱值。同样,待编码频谱值替代待解码频谱值。
应注意的是,解码(容后详述)允许对通常已经后处理、经定标且经量化的频谱值进行所谓的“频谱无噪声编码”。频谱无噪声编码用于音频编码/解码构想(或任何其他编码/解码构想)以进一步减少借能量压缩时域至频域信号变换器所得的量化频谱的冗余。本发明的实施例中所使用的频谱无噪声编码方案以算术编码为基础,并结合动态调适上下文。
在根据本发明的某些实施例中,频谱无噪声编码方案以2元组为基础,换言之,两相邻频谱系数组合在一起。各个2元组系***成符号、最高有效逐2-位平面、及剩余的较低有效位平面。使用由四个事先解码的2元组导出的上下文相关累积频率表对最高有效逐2-位平面m进行无噪声编码。无噪声编码由量化频谱值馈入,且使用由四个事先解码的邻近的2元组导出的上下文相关累积频率表。此处,在时间及频谱上邻近的2元组被列入考虑,如图4所示。然后累积频率表(容后详述)由算术编码器用来产生可变长度二进制码(及通过算术解码器来从可变长度二进制码导出解码值)。
例如,算术编码器170对给定的一组符号及其个别概率(即,取决于其个别概率)产生二进制码。二进制码是通过将这组符号所在的概率区间映射到码字而产生的。
使用单一累积频率表对剩余的较低有效位平面r进行无噪声编码。累积频率例如与发生在较低有效位平面的符号的均匀分布相对应,即预期在较低有效位平面出现0或1的概率相等。然而,可以使用其他解决方案对剩余的较低有效位平面或多个较低有效位平面进行编码。
在下文中将给定频谱无噪声编码工具的另一项简短概述。频谱无噪声编码用来进一步减少量化频谱的冗余。频谱无噪声编码方案基于算术编码,结合动态调适性上下文。无噪声编码由量化频谱值馈入,且使用由频谱值的四个事先解码的邻近的2元组导出的上下文相关累积频率表。此处,在时间及频谱上邻近的2元组被列入考虑,如图4所示。然后累积频率表由算术编码器用来产生可变长度二进制码。
算术编码器对给定的一组符号及其个别概率产生二进制码。二进制码是通过将这组符号所在的概率区间映射到码字而产生的。
11.解码过程
11.1.解码过程概述
在下文中将参照图3给定频谱值编码过程的概述,该图示出了解码多个频谱值的过程的伪程序码表示。
多个频谱值的解码程序包括上下文的初始化310。上下文的初始化310包括使用函数“arith_map_context(N,arith_reset_flag)”从先前上下文导出当前上下文。从先前上下文导出当前上下文可选择性地包括上下文的重置。上下文的重置及从先前上下文导出当前上下文容后详述。优选地,可以使用根据图5a的函数“arith_map_context(N,arith_reset_flag)”,但可选地可以使用根据图5b的函数。
多个频谱值的解码还包括频谱值解码312及上下文更新313的迭代,该上下文更新313通过函数“arith_update_context(i,a,b)”执行,容后详述。除非检测到所谓的“ARITH_STOP”符号,否则频谱值解码312及上下文更新312重复1g/2次,此处1g/2指示待解码频谱值的2元组数目(例如,对音频帧而言)。此外,一组1g频谱值的解码还包括符号解码314及结束步骤315。
频谱值元组的解码312包括上下文值计算312a、最高有效位平面解码312b、算术终止符号检测312c、较低有效位平面加法312d,及数组更新312e。
状态值计算312a包括调用函数“arith_get_context(c,i,N)”,例如如图5c或5d所示。优选地,使用根据图5c的函数“arith_get_context(c,i,N)”。据此,数值当前上下文(状态)值c提供作为函数“arith_get_context(c,i,N)”的函数调用的返回值。如图可知,数值先前上下文值(也用“c”表示)作为函数“arith_get_context(c,i,N)”的输入变量,以返回值形式更新以获得数值当前上下文值c。
最高有效位平面解码312b包括解码算法312ba的迭代执行,及从算法312ba的结果值m导算312bb得到值a,b。在算法312ba的准备中,变量lev被初始化为零。算法312ba被重复直至达到“中断”指令(或条件)为止。算法312ba包括使用函数“arith_get_pk()”,依据数值当前上下文值c,且还依据位阶值“esc_nb”来计算状态索引“pki”(其也用作累积频率表索引),容后详述(且例如,图5e及5f显示实施例)。优选地,使用根据图5e的函数“arith_getjpk(c)”。算法312ba还包括依据通过调用函数“arith_get_pk”所返回的状态索引“pki”选择累积频率表,其中变量“cum_freq”可依据状态索引“pki”设定为64个累积频率表(或子表)中的一个的起始地址。变量“clf”也可被初始化为该选择累积频率表(或子表)的长度,该长度例如等于符号集中的符号数目,即可解码的不同值的数目。可利用来解码最高有效位平面值m的从“ari_cf_m[pki=0][17]”至“ari_cf_m[pki=63][17]”的全部累积频率表(或子表)的长度为17,原因在于可解码16个不同最高有效位平面值及一个脱序符号(“ARITH_ESCAPE”)。优选地,对如根据图23(1)、图23(2)、图23(3)的表格表示中所定义的累积频率表ari_cf_m[64][17]进行评估,以获得所选累积频率表(或子表),该累积频率表ari_cf_m[64][17]将累积频率表(或子表)“ari_cf_m[pki=0][17]”限定为“ari_cf_m[pki=63][17]”。
随后,考虑所选累积频率表(通过变量“cum_freq”及变量“cfl”描述),通过执行函数“arith_decode()”可获得最高有效位平面值m。当导出最高有效位平面值m时,可评估位流210中被命名为“acod_m”的位(例如,参照图6g或图6h)。优选地,使用根据图5g的函数“arith_decode(cum_freq,cfl)”,但可选地可以使用根据图5h及5i的函数“arith_decode(cum_freq,cfl)”。
算法312ba还包括检查最高有效位平面值m是否等于脱序符号“ARITH_ESCAPE”。若最高有效位平面值m不等于算术脱序(escape)符号,则舍弃算法312ba(“中断”条件),然后跳过算法312ba的其余指令。据此,通过在步骤312bb中设定值b及值a来继续执行程序。相反地,若最高有效位平面值m与该算术脱序符号或“ARITH_ESCAPE”相同,则位阶(level)值“lev”递增1。除非在位阶值“lev”大于7的情况下,位阶值“esc_nb”设定为等于7,否则位阶值“esc_nb”设定为等于位阶值“lev”。如上文所述,然后重复算法312ba直至解码最高有效位平面值m与算术脱序符号相异为止,其中使用的是经修改的上下文(原因在于函数“arith_get_pk()”的输入参数是依据变量“esc_nb”值而调整适应的)。
一旦最高有效位平面使用算法312ba的一次执行或迭代执行而解码时,即与算术脱序符号相异的最高有效位平面值m已经解码时,频谱值变量“b”被设定为等于最高有效位平面值m的多个(例如,2个)较高有效位;且频谱值变量“a”被设定为等于最高有效位平面值m的(例如,2个)最低位。有关此函数的细节例如参见参考标号312bb。
接着在步骤312c中检查是否存在算术终止符号。如果最高有效位平面值m等于零而变量“lev”大于零,则存在算术终止符号。据此,算术终止条件通过“不寻常”条件标示,其中最高有效位平面值m等于零,而变量“lev”指示增加的数值权值与最高有效位平面值m相关联。换言之,若位流指示高于最小数值权值的增加的数值权值给予等于零的最高有效位平面值(这种情况在正常编码情况下不会发生),则检测到算术终止条件。换言之,若编码算术脱序符号随后接着等于零的编码最高有效位平面值,则标示算术终止条件。
在步骤212c中执行是否存在算术终止条件后,获得较低有效位平面,例如如图3中的参考标号212d所示。对各个较低有效位平面,解码两个二进制值。二进制值中的一个与变量a(或频谱值元组的第一频谱值)相关联,而二进制值中的一个与变量b(或频谱值元组的第二频谱值)相关联。较低有效位平面的数目用变量lev表示。
在一个或多个最低有效位平面(若有)的解码中,迭代地执行算法212da,其中算法212da的执行次数由变量“lev”决定。此处应注意的是,算法212da的第一次迭代基于如步骤212bb中设定的变量a、b的值进行。算法212da的进一步迭代基于变量a、b的更新变量值进行。
在迭代开始时,选择累积频率表。随后,执行算术解码来获得变量r值,其中变量r值描述多个较低有效位,例如,一个与变量a相关联的较低有效位,及一个与变量b相关联的较低有效位。函数“ARITH_DECODE”(例如,如图5g所定义)用来获得值r,其中累积频率表“arith_cf_r”用于算术解码。
随后,更新变量a及b的值。为了此目的,变量a向左移位1位,而已移位的变量a的最低有效位设定成由值r的最低有效位所定义的值。变量b向左移位1位,而已移位的变量b的最低有效位设定成由变量r的位1所定义的值,其中在变量r的二进制表示中,变量r的位1具有等于2的数值权值。然后重复算法412ba直至全部最低有效位都被解码为止。
在较低有效位平面解码后,更新数组“x_ac_dec”,其中变量a、b的值存储在具有数组索引2*i及2*i+1的数组表项中。
随后,上下文状态通过调用函数“arith_update_context(i,a,b)”来更新,其细节参照图5g容后详述。优选地,可使用如图5l所定义的函数“arith_update_context(i,a,b)”。
在步骤313中所执行的上下文状态更新后,重复算法312及313直至运行变量i达到1g/2的值或直至检测到算术终止条件为止。
随后,执行结束算法“arith_finish()”,如从参考标号315可知。结束算法“arith_finish()”的细节将参照图5m描述如下。
在结束算法315之后,使用算法314解码频谱值的符号。如图可知,不等于零的频谱值的符号被单独解码。在算法314中,对具有索引i介于i=0至i=1g-1(其为非零)间的全部频谱值读取符号。对具有索引i介于i=0至i=1g-1间的各个非零频谱值,值(通常为单个位)s读取自位流。若读取自位流的s的值等于1,则该频谱值的符号反相。为了此目的,对数组“x_ac_dec”作存取,以判定具有索引i的频谱值是否等于零,同时更新解码频谱值的符号。然而,应注意的是,变量a、b的符号在符号解码314中保持不变。
通过在符号解码314之前执行结束算法315,可以在ARITH_STOP符号之后,重置全部所需二进制文件(bins)。
此处应注意的是,在根据本发明的某些实施例中,获得较低有效位平面值的构想并非特别有关。在某些实施例中,甚至忽略任何较低有效位平面的解码。另外,可使用不同解码算法来实现此目的。
11.2.根据图4的解码顺序
在下文中将对频谱值的解码顺序进行描述。
量化频谱系数“x_ac_dec[]”被无噪声编码,且从最低频率系数开始,朝向最高频率系数地传输(例如,在位流中)。
结果,量化频谱系数“x_ac_dec[]”从最低频率系数开始,朝向最高频率系数而被无噪声地解码。量化频谱系数通过集合成所谓的2元组(a,b)(也用{a,b}表示)的两个接续(例如,频率相邻的)系数a及b组解码。此处应注意的是,量化频谱系数有时也用“qdec”表示。
用于频域模式的解码系数“x_ac_dec[]”(例如,使用修正离散余弦变换(MDCT)获得的用于进阶音频编码的解码系数,例如在国际标准ISO/IEC 14496第3部分,第4子部分中所讨论的)被存储在数组“x_ac_quant[g][win][sfb][bin]”中。无噪声编码码字的传输顺序使得当其以所接收顺序解码并存储在数组中时,“bin”为最快速递增索引,而“g”为最慢递增索引。在码字内部,解码顺序为a,b(即,先a后b)。
用于变换编码激励(TCX)的解码系数“x_ac_dec[]”例如直接存储在数组“x_tcx_invquant[win][bin]”中,且无噪声编码码字的传输顺序使得当其以所接收的顺序解码且存储于数组时,“bin”为最快速递增索引,而“win”为最慢递增索引。在码字内部,解码顺序为a,b(即,先a后b)。换言之,若频谱值描述语音编码器的线性预测滤波器的变换编码激励,则频谱值a、b与变换编码激励的相邻且递增频率相关联。与较低频率相关联的频谱系数通常在与较高频率相关联的频谱系数之前编码与解码。
注意,音频解码器200可以被配置为应用由算术解码器230所提供的已解码频域表示232,用于使用频域至时域信号变换“直接”产生时域音频信号表示,及用于使用频域至时域解码器及通过频域至时域信号变换器的输出所激励的线性预测滤波器来“间接”提供时域音频信号表示。
换言之,此处详细讨论其功能的算术解码器极为适合用于解码在频域中编码的音频内容的时频域表示的频谱值,以及用于提供用于线性预测滤波器的激励信号的时频域表示,该滤波器适用于解码(或合成)于线性预测域编码的语音信号。如此,算术解码器极为适合用于音频解码器,其能够处理频域编码音频内容及线性预测频域编码音频内容(变换编码激励-线性预测域模式)。
11.3.根据图5a和图5b的上下文初始化
在下文中将描述在步骤310中执行的上下文初始化(也称为“上下文映射”)。
上下文初始化包括依据算法“arith_map_context()”在过去上下文与当前上下文间的映射,图5a示出了算法的第一实施例,图5b示出了算法的第二实施例。
如图可知,当前上下文被存储在全局变量“q[2][n_context]”中,其采用具有第一维为2而第二维为“n_context”的矩阵形式。过去上下文可可选地(但不一定)存储在变量“qs[n_context]”中,其采用具有一维“n_context”(若使用)的表的形式。
参照图5a的实例算法“arith_map_context”,输入变量N描述当前窗口长度,输入变量“arith_reset_flag”指示上下文是否应重置。此外,全局变量“previous_N”描述前一窗口的长度。此处应注意的是,通常,就时域样本而言,与窗口相关联的频谱值数目至少约等于该窗口长度的一半。此外,应注意的是,就时域样本而言,频谱值的2元组数目至少约等于该窗口长度的四分之一。
首先,应注意的是,标记“arith_reset_flag”确定是否必须重置上下文。
参照图5a的实例,上下文的映射可依据算法“arith_map_context()”执行。此处应注意的是,若标记“arith_reset_flag”为活动(active)并因此指示上下文须被重置,则对j=0至j=N/4-1,函数“arith_map_context()”设定当前上下文数组q的表项“q[0][j]”为零。否则,换言之,若标记“arith_reset_flag”为不活动(inactive),则当前上下文数组q的表项“q[0][j]”从当前上下文数组q的表项“q[1][j]”导出。应注意的是,若对j=k=0至j=k=N/4-1,与当前(例如,频域编码)音频帧相关联的频谱值数目等同于与前一音频帧相关联的频谱值数目,则依据图5a的函数“arith_map_context()”设置当前上下文数组q的表项“q[0][j]”为当前上下文数组q的值“q[1][k]”。
如果与当前音频帧相关联的频谱值数目与先前音频帧相关联的频谱值数目不同,执行更复杂的映射。但在此种情况下有关映射的细节与本发明的关键构想并无特殊关联,因此相关细节可参照图5a的伪程序码。
此外,数值当前上下文值c的初始化值由函数“arith_map_context()”返回。此初始化值例如等于表项“q[0][0]”的值向左移位12位。据此,数值(当前)上下文值c被正确初始化用于迭代更新。
此外,图5b示出了可做为选择使用的算法“arith_map_context()”的另一实例。有关其细节可参照图5a的伪程序码。
综上所述,标记“arith_reset_flag”判定上下文是否须重置。若标记为真,则调用算法“arith_map_context()”的重置子算法500a。但另外,若标记“arith_reset_flag”为非活动(其指出无需执行上下文的重置),则解码程序从初始化阶段开始,此处上下文元素向量(或数组)q通过拷贝并存储在q[1][]中的前一帧的上下文元素映射到q[0][]而更新。q内部的上下文元素以每2元组4-位存储。上下文元素的拷贝和/或映射在子算法500b中执行。
此外,应注意的是,如果无法可靠地确定上下文,例如,如果先前帧的数据不可用,且如果没有设置“arith_reset_flag”,则无法继续解码频谱数据且应跳过对当前“arith_data()”元素进行读取。
在图5b的实例中,解码程序从初始化阶段开始,此处映射在存储在qs中的所保存的过去上下文与当前帧q的上下文间进行。过去上下文qs以每频率线2-位存储。
11.4.根据图5c及图5d的状态值计算
在下文中将对状态值计算312a进行更详细描述。
第一优选算法将参照图5c进行描述,而第二可选实例算法将参照图5d进行描述。
应注意的是,数值当前上下文值c(如图3所示)可作为函数“arith_get_context(c,i,N)”的返回值而获得,其伪程序码表示在图5c中示出。但另外,数值当前上下文值c可作为函数“arith_get_context(c,i)”的返回值而获得,其伪程序码表示在图5d中示出。
有关状态值的计算,也参照图4,该图示出了用于状态评估的上下文,即用于数值当前上下文值c的计算。图4示出了频谱值在时间及频率两方面的二维表示。横坐标410描述时间,纵坐标412描述频率。如图4可知,待解码的频谱值(优选地,使用数值当前上下文值)的元组420与时间索引t0及频率索引i相关联。如图可知,对于时间索引t0,具有频率索引i-1、i-2及i-3的元组在具有频率索引i的元组120的频谱值待解码时已经解码。如图4可知,具有时间索引t0及频率索引i-1的频谱值430在频谱值的元组420解码之前已经解码,且考虑将频谱值的元组430用于解码频谱值的元组420的上下文。同理,具有时间索引t0-1及频率索引i-1的频谱值440、具有时间索引t0-1及频率索引i的频谱值450、及具有时间索引t0-1及频率索引i+1的频谱值460在频谱值的元组420解码之前已经解码,且考虑将其用于确定用以解码频谱值的元组420的上下文。当频谱值的元组420解码时已经解码且考虑用于上下文的频谱值(系数)以影线方块显示。相反地,已经解码(当元组420的频谱值被解码时)但未考虑用于上下文(用于解码元组420的频谱值)的若干其他频谱值以具有虚线的方块显示,而其他频谱值(当元组420的频谱值解码时尚未被解码)以具有虚线的圆显示。通过具有虚线的方块表示的元组及通过具有虚线的圆表示的元组并未用于确定用于解码元组420的频谱值的上下文。
然而,应注意的是,仍可评估未用于用以解码元组420的频谱值的上下文的“常规”或“正常”计算的那些频谱值中的某些频谱值,以检测多个事先解码的相邻频谱值,频谱值单独或一起满足有关其幅度的预定条件。有关此问题的细节容后详述。
现在参照图5c,将描述算法“arith_get_context(c,i,N)”的细节。图5c以伪程序码形式示出函数“arith_get_context(c,i,N)”的功能,其使用众所周知的C语言和/或C++语言协定。如此,将描述有关计算由函数“arith_get_context(c,i,N)”所执行的数值当前上下文值“c”的更多细节。
应注意的是,函数“arith_get_context(c,i,N)”接收可由数值当前上下文值c所描述的“旧状态上下文”作为输入变量。函数“arith_get_context(c,i,N)”也接收待解码频谱值的2元组的索引i作为输入变量。索引i通常为频率索引。输入变量N描述待解码频谱值的窗口的窗口长度。
函数“arith_get_context(c,i,N)”提供输入变量c的更新版本作为输出值,该输出值描述更新的状态上下文,且其可视为数值当前上下文值。概括而言,函数“arith_get_context(c,i,N)”接收数值当前上下文值c作为输入变量,并提供其更新版本,其可被视为数值当前上下文值。此外,函数“arith_get_context”考虑变量i、N,也评估“全局”数组q[][]。
有关函数“arith_get_context(c,i,N)”的细节,应注意的是,最初以二进制形式表示数值先前上下文值的变量c在步骤504a中向右移位4位。据此,舍弃数值先前上下文值(以输入变量c表示)的四个最低有效位。同样,数值先前上下文值的其他位的数值权值例如降低16的因数。
此外,若2元组的索引i小于N/4-1,即不取最大值,则数值当前上下文值经修改,表项q[0][i+1]的值加至步骤504a中所得的移位上下文值的位12至15(即,加至具有212、213、214及215数值权值的位)。为了此目的,数组q[][]的表项q[0][i+1](或更精确地说,该表项所表示的值的二进制表示)朝左移位12位。然后表项q[0][i+1]所表示的值的移位版本加至步骤504a导出的上下文值c,即加至数值先前上下文值的经位移位的(朝右移位4位)数字表示。此处应注意的是,数组q[][]的表项q[0][i+1]表示与音频内容的先前部分(例如,参考图4定义,具有时间索引t0-1的音频内容部分)相关联的子区域值,及具有比目前待解码频谱值的元组(使用由函数“arith_get_context(c,i,N)”所输出的数值当前上下文值c)更高的频率(如参考图4定义,具有频率索引i+1的频率)。换言之,如果频谱值的元组420要使用数值当前上下文值解码,那么表项q[0][i+1]可以基于事先解码的频谱值的元组460。
数组q[][]的表项q[0][i+1]的选择性加法(朝左移位12位)以参考标号504b示出。如图可知,表项q[0][i+1]表示的值的加法当然唯有在频率索引i并未标示具有最高频率索引i=N/4-1的频谱值的元组时执行。
随后,在步骤504c中,执行布尔与门运算,其中变量c的值与十六进制值0xFFF0通过与门组合来获得变量c的更新值。通过执行此种与门运算,变量c的四个最低有效位被有效地设定为零。
在步骤504d中,表项q[1][i-1]的值被加至在步骤504c中所得的变量c的值,借此更新变量c的值。但步骤504d中的变量c的更新仅在待解码的2元组的频率索引i大于零时才执行。应注意的是,对频率小于使用数值当前上下文值待解码频谱值的频率,表项q[1][i-1]为基于音频内容的当前部分的事先解码的频谱值的元组的上下文子区域值。例如,当假设频谱值的元组420要使用由当前执行函数“arith_get_context(c,i,N)”返回的数值当前上下文值解码时,数组q[][]的表项q[1][i-1]可与具有时间索引t0及频率索引i-1的元组430相关联。
总括起来,数值先前上下文值的位0、1、2及3(即,四个最低有效位部分)在步骤504a中通过将其移位出数值先前上下文值的二进制数字表示而舍弃。此外,移位变量c(即,移位数值先前上下文值)的位12、13、14及15在步骤504b中被设定为取由上下文子区域值q[0][i+1]所定义的值。移位数值先前上下文值的位0、1、2及3(即,原先移位数值先前上下文值的位4、5、6及7)在步骤504c及504d中由上下文子区域值q[1][i-1]所覆写。
因此,可以讲,数值先前上下文值的位0至3表示与频谱值的元组432相关联的上下文子区域值,数值先前上下文值的位4至7表示与事先解码频谱值的元组434相关联的上下文子区域值,数值先前上下文值的位8至11表示与事先解码频谱值的元组440相关联的上下文子区域值,且数值先前上下文值的位12至15表示与事先解码频谱值的元组450相关联的上下文子区域值。被输入函数“arith_get_context(c,i,N)”的数值先前上下文值与频谱值的元组430的解码相关联。
作为函数“arith_get_context(c,i,N)”的输出变量获得的数值当前上下文值与频谱值的元组420的解码相关联。据此,数值当前上下文值的位0至3描述与频谱值的元组430相关联的上下文子区域值,数值当前上下文值的位4至7描述与频谱值的元组440相关联的上下文子区域值,数值当前上下文值的位8至11描述与频谱值的元组450相关联的上下文子区域值,且数值当前上下文值的位12至15描述与频谱值的元组460相关联的上下文子区域值。如此,可知数值先前上下文值部分,即数值先前上下文值的位8至15也包括在数值当前上下文值中,作为数值当前上下文值的位4至11。相反地,当由数值先前上下文值的数字表示导出数值当前上下文值的数字表示时,当前的数值先前上下文值的位0至7被舍弃。
在步骤504e中,当待解码2元组的频率索引i大于例如3的预定数字时,表示数值当前上下文值的变量c被选择性地更新。在这种情况下,即若i大于3,则判定上下文子区域值q[1][i-3]、q[1][i-2]与q[1][i-1]的和是否小于(或等于)例如5的预定值。若发现该上下文子区域值的和小于该预定值,则例如0x10000的十六进制值被加至变量c。据此,变量c被设定为使得变量c指出是否有一种情况,其中上下文子区域值q[1][i-3]、q[1][i-2]与q[1][i-1]组成特别小的总和值。例如,数值当前上下文值的位16可用作标记以指出这种情况。
总结而言,函数“arith_get_context(c,i,N)”的返回值由步骤504a、504b、504c、504d及504e确定,其中数值当前上下文值在步骤504a、504b、504c及504d中由数值先前上下文值导出,且其中指出事先解码的频谱值通常具有特别小的绝对值的环境的标记在步骤504e中导出并加至变量c。如此,若在步骤504e中评估的条件未满足,则步骤504a、504b、504c、504d所得变量c的值在步骤504f中返回作为函数“arith_get_context(c,i,N)”的返回值。相反地,若在步骤504e中评估的条件满足,则在步骤504e,在步骤504a、504b、504c及504d中所导出的变量c的值借0x10000的十六进制值递增且返回此递增计算结果。
综上所述,应注意的是,无噪声解码器输出无符号量化频谱系数的2元组(容后详述)。首先,上下文状态c基于“环绕”欲解码2元组的事先解码的频谱系数计算。在优选实施例中,状态(例如,数值上下文值c表示的状态)使用最后一个解码的2元组(被称为数值先前上下文值)的上下文状态递增更新,只考虑两个新的2元组(例如,2元组430及460)。状态以17位编码(例如,使用数值当前上下文值的数字表示)且由函数“arith_get_context()”返回。有关其细节请参照图5c的程序码表示。
此外,应注意的是,函数“arith_get_context()”的另一实施例的伪程序码表在图5d中示出。根据图5d的函数“arith_get_context(c,i)”类似于根据图5c的函数“arith_get_context(c,i,N)”。然而,根据图5d的函数“arith_get_context(c,i)”并不包括对包括最小频率索引i=0或最大频率索引i=N/4-1的频谱值的元组的特别处理或解码。
11.5.映射规则选择
在下文中将描述映射规则,例如描述码字值映射到符号码的累积频率表的选择。映射规则的选择依据由数值当前上下文值c所描述的上下文状态进行。
11.5.1.使用根据图5e的算法的映射规则选择
在下文中将描述使用函数“arith_get_pk(c)”的映射规则的选择。应注意的是,在子算法312ba开始,当解码码值“acod_m”用于提供频谱值的元组时,调用函数“arith_get_pk()”。应注意的是,函数“arith_get_pk(c)”在算法312b的不同迭代时用不同参数(argument)调用。例如,在算法312b的第一次迭代中,函数“arith_get_pk(c)”用等于先前在步骤312a中执行函数“arith_get_pk(c,i,N)”时所提供的数值当前上下文值c的参数调用。相反地,在子算法312b的其他迭代中,函数“arith_get_pk(c)”用由函数“arith_get_pk(c,i,N)”在步骤312a中所提供的数值当前上下文值c,及变量“esc_nb”的值的经位移位版本的和作为参数调用,其中该变量“esc_nb”的值向左移位17位。如此,在算法的第一次迭代时,即在解码相对较小频谱值时,由函数“arith_get_pk(c,i,N)”所提供的数值当前上下文值c用作为函数“arith_get_pk()”的输入值。相反地,在解码相对较大频谱值时,函数“arith_get_pk()”的输入变量经修改,将变量“esc_nb”的值列入考虑,如图3所示。
现在参照图5e,其示出了函数“arith_get_pk(c)”的第一优选实施例的伪程序码表示,应注意的是,函数“arith_get_pk()”接收变量c作为输入值,其中变量c描述上下文状态,且其中至少在某些情况下,函数“arith_get_pk()”的输入变量c等于由函数“arith_get_pk()”提供作为返回变量的数值当前上下文值。此外,应注意的是,函数“arith_get_pk()”提供变量“pki”作为输出变量,其描述概率模型的索引且可被认为映射规则索引值。
参照图5e,可知函数“arith_get_pk()”包括变量初始化506a,其中变量“i_min”被初始化为取-1的值。类似地,变量i被设定为等于变量“i_min”,使得变量i也被初始化为值-1。变量“i_max”被初始化为具有比表“ari_lookup_m[]”的表项数目小1的值(其细节将参照图21进行说明)。据此,变量“i_min”与“i_max”界定一个区间。例如,i_max可以被初始化为值741。
随后,执行搜索506b来识别指明表“ari_hash_m”的表项的索引值,使得函数“arith_get_pk()”的输入变量c的值位于由该表项与一相邻表项所界定的区间内,该表的选择如图22(1)、图22(2)、图22(3)、图22(4)所定义。
在搜索506b中,重复子算法506ba,同时变量“i_min”与“i_max”间的差大于1。在子算法506ba中,变量i被设定为等于变量“i_min”与“i_max”的值的算术平均。结果,变量i标示在由变量“i_min”与“i_max”的值所界定的表区间中间的表“ari_hash_m[]”的表项。随后,变量j被设定为等于表“ari_hash_m[]”的表项“ari_hash_m[i]”的值。因此,变量j具有由表“ari_hash_m[]”的表项所定义的值,该表项位于由变量“i_min”与“i_max”的值所界定的表区间的中间。随后,若函数“arith_get_pk()”的输入变量c的值与由表“ari_hash_m[]”的表项“j=ari_hash_m[i]”的最高位所定义的状态值不同,则更新由变量“i_min”与“i_max”的值所界定的区间。例如,表“ari_hash_m[]”的表项的“较高位”(位8及以上)描述有效状态值。据此,值“j>>8”描述由散列表索引值i标示的表“ari_hash_m[]”的表项“j=ari_hash_m[i]”所表示的有效状态值。如此,若变量c值小于值“j>>8”,则这意味着由变量c所描述的状态值小于由表“ari_hash_m[]”的表项“j=ari_hash_m[i]”所描述的有效状态值。在这种情况下,变量“i_max”的值被设定为等于变量i的值,而这又具有使得由“i_min”与“i_max”所界定的区间大小缩小的效果,其中新区间约等于前一区间的下半部。若发现函数“arith_get_pk()”的输入变量c大于值“j>>8”,这意味着变量c所描述的上下文值大于由数组“ari_hash_m[]”的表项“j=ari_hash_m[i]”所描述的有效状态值,变量“i_min”的值被设定为等于变量i的值。如此,由变量“i_min”与“i_max”所界定的区间大小缩小至由变量“i_min”与“i_max”的先前值所界定的先前区间大小的一半。更精确地说,在变量c的值大于由表项“ari_hash_m[i]”所定义的有效状态值的情况下,由更新的变量“i_min”的值与由变量“i_max”的先前(未改变的)值所界定的区间约等于先前区间的上半部。
然而,如果发现由算法“arith_get_pk()”的输入变量c所描述的上下文值等于由表项“ari_hash_m[i]”所定义的有效状态值(即c==(j>>8))时,则返回由表项“ari_hash_m[i]”的最低8位所定义的映射规则索引值作为函数“arith_get_pk()”的返回值(指令“return(j&0xFF)”)。
综上所述,表项“ari_hash_m[i]”,其最高位(位8及以上)描述有效状态值,在各次迭代506ba中评估,且由函数“arith_get_pk()”的输入变量c所描述的上下文值(或数值当前上下文值)与由该表项“ari_hash_m[i]”所描述的有效状态值作比较。若由输入变量c所表示的上下文值小于由表项“ari_hash_m[i]”所表示的有效状态值,则该表项的上边界(由值“i_max”所描述)缩小,且若由输入变量c所描述的上下文值大于由该表表项“ari_hash_m[i]”所描述的有效状态值,则该表表项的下边界(由值“i_min”所描述)增加。在这两种情况下,除非区间(由“i_min”与“i_max”间的差所限定)大小小于或等于1,否则重复子算法506ba。相反地,若由输入变量c所描述的上下文值等于由该表表项“ari_hash_m[i]”所描述的有效状态值,则函数“arith_get_pk()”被舍弃,其中返回值由表表项“ari_hash_m[i]”的最低8位所界定。
然而,如果因区间大小达到其最小值(“i_max”-“i_min”小于或等于1)而结束搜索506b,则函数“arith_get_pk()”的返回值通过表“ari_lookup_m[]”的表项“ari_lookup_m[i_max]”确定,这从参考标号506c可知。表ari_lookup_m[]的选择优选如图21的表格表示中所定义,并因此可以等于表ari_lookup_m[742]。据此,表“ari_hash_m[]”的表项定义有效状态值及区间边界。在子算法506ba中,搜索区间边界“i_min”与“i_max”迭代地调整,使得散列表索引i所在的表“ari_hash_m[]”的表项“ari_hash_m[i]”至少约位于由区间边界值“i_min”与“i_max”所界定的搜索区间的中心,至少近似由输入变量c所描述的上下文值。因此,除非由输入变量c所描述的上下文值等于由表“ari_hash_m[]”的表项所描述的有效状态值,否则在子算法506ba的迭代完成后,由输入变量c所描述的上下文值位于由“ari_hash_m[i_min]”和“ari_hash_m[i_max]”所限定的区间内部。
然而,如果因区间大小(由“i_max-i_min”定义)达到或超过其最小值而结束子算法506ba的迭代时,则假设由输入变量c所描述的上下文值并非有效状态值。在这种情况下,仍然使用标示区间上边界的索引“i_max”。子算法506ba的最后一次迭代所达到的区间上限值“i_max”重新用作存取表“ari_lookup_m”(其可以等于图21的表ari_lookup_m[742])的表索引值。表“ari_lookup_m[]”描述与多个相邻数值上下文值的区间相关联的映射规则索引。与由表“ari_lookup_m[]”的表项所描述的映射规则索引相关联的区间通过表“ari_hash_m[]”的表项所描述的有效状态值定义。表“ari_hash_m[]”的表项定义相邻数值上下文值的有效状态值及区间的区间边界。在执行算法506b时,判定由输入变量c所描述的数值上下文值是否等于有效状态值;且若并非此种情况,则判定由输入变量c所描述的上下文值位于数值上下文值的哪一个区间(从多个区间中选出,所述区间的边界由有效状态值定义)。因此,算法506b满足双重功能:判定输入变量c是否描述有效状态值;若否,则识别由输入变量c所表示的上下文值所在的且由有效状态值所界限的区间。因此,算法506e特别有效率且只需要相对较少次的表存取。
综上所述,上下文状态c确定用来解码最高有效逐2-位平面m的累积频率表。如同函数“arith_get_pk()”执行的从c到相对应的累积频率表索引“pki”的映射。已参照图5e对该函数“arith_get_pk()”的伪程序码表示进行阐述。
进一步综上所述,使用用累积频率表“arith_cf_m[pki][]”调用的函数“arith_decode()”(在下文中更详细地加以描述)解码值m,其中“pki”对应于参照图5e描述的由呈伪C码形式的函数“arith_get_pk()”所返回的索引(也称为映射规则索引值)。
11.5.2.使用根据图5f的算法的映射规则选择
在下文中,将参照图5f描述映射规则选择算法“arith_get_pk()”的另一实施例,该图示出了此种算法的伪程序码表示,其可用于频谱值的元组的解码。根据图5f的算法可视为算法“get_pk()”或算法“arith_get_pk()”的优化版本(例如,速度优化版本)。
根据图5f的算法“arith_get_pk()”接收描述上下文状态的变量c作为输入变量。输入变量c例如可表示数值当前上下文值。
算法“arith_get_pk()”提供变量“pki”作为输出变量,该变量描述与由输入变量c所描述的上下文状态相关联的概率分布(或概率模型)索引。变量“pki”例如可以是映射规则索引值。
根据图5f的算法包括数组“i_diff[]”内容的定义。如图可知,数组“i_diff[]”的第一表项(具有数组索引0)等于299,而其他数组表项(具有数组索引1至8)具有值149、74、37、18、9、4、2及1。据此,用于选择散列表索引值“i_min”的步长大小随着各次迭代而缩小,原因在于数组“i_diff[]”的表项定义该等步长大小。详情请参照下文的讨论。
然而,实际上可选择不同步长大小,例如数组“i_diff[]”的不同内容,其中数组“i_diff[]”的内容自然可经调整而适应散列表“ari_hash_m[i]”的大小。
应注意的是,恰在算法“arith_get_pk()”开始时,变量“i_min”被初始化为取0值。
在初始化步骤508a中,变量s依据输入变量c而初始化,其中变量c的数字表示向左移位8位以获得变量s的数字表示。
随后,执行表搜索508b,以识别散列表“ari_hash_m[]”的表项的散列表索引值“i_min”,使得由上下文值c所描述的上下文值位于由散列表表项“ari_hash_m[i_min]”所描述的上下文值与另一散列表表项“ari_hash_m”所描述的上下文值所界限的区间,该另一散列表表项“ari_hash_m”相邻于(就其散列表索引值而言)散列表表项“ari_hash_m[i_min]”。因此,算法508b允许确定标示散列表“ari_hash_m[]”的表项“j=ari_hash_m[i_min]”的散列表索引值“i_min”,使得散列表表项“ari_hash_m[i_min]”至少近似于由输入变量c所描述的上下文值。
表搜索508b包括子算法508ba的迭代执行,其中子算法508ba被执行预定次数,例如,9次迭代。在子算法508ba的第一步骤中,变量i被设定为等于变量“i_min”的值与表表项“i_diff[k]”的值之和。此处应注意的是,k为运行变量,其针对子算法508ba的各次迭代,从k=0的初值开始递增。数组“i_diff[]”定义预定递增值,其中递增值随表索引k的增加,即随迭代次数的增加而减小。
在子算法508ba的第二步骤中,表项“ari_hash_m[]”的值被拷贝到变量j中。优选地,表“ari_hash_m[]”的表项的最高位描述数值上下文值的有效状态值,表“ari_hash_m[]”的表项的最低位(位0至7)描述与个别有效状态值相关联的映射规则索引值。
在子算法508ba的第三步骤中,将变量S的值与变量j的值作比较,如果变量s的值大于变量j的值,变量“i_min”选择性地设定为值“i+1”。随后,子算法508ba的第一步骤、第二步骤、及第三步骤重复预定次数,例如九次。因此,在每次执行子算法508ba时,当且仅当由当且有效散列表索引i_min+i_diff[]所描述的上下文值小于由输入变量c所描述的上下文值时,变量“i_min”的值递增i_diff[]+1。据此,在每次执行子算法508ba时,当(且仅当)由输入变量c且因此由变量s所描述的上下文值大于由表项“ari_hash_m[i=i_min+diff[k]]”所描述的上下文值时,散列表索引值“i_min”(迭代地)增加。
此外,应注意的是,在每次执行子算法508ba时,只执行单次比较,即比较变量s值是否大于变量j的值。据此,算法508ba的计算特别有效率。此外,应注意的是,就变量“i_min”的终值而言,有不同的可能结果。例如,在最后一次执行子算法512ba后,变量“i_min”的值可能使得由表项“ari_hash_m[i_min]”所描述的上下文值小于由输入变量c所描述的上下文值,且由表项“ari_hash_m[i_min+1]”所描述的上下文值大于由输入变量c所描述的上下文值。另外,可能在最后一次执行子算法508ba后,由散列表表项“ari_hash_m[i_min-1]”所描述的上下文值小于由输入变量c所描述的上下文值,且由表项“ari_hash_m[i_min]”所描述的上下文值大于由输入变量c所描述的上下文值。但另外,由散列表表项“ari_hash_m[i_min]”所描述的上下文值等于由输入变量c所描述的上下文值。
出于这个原因,执行基于决策的返回值提供508c。变量j被设定为取散列表表项“ari_hash_m[i_min]”的值。随后,判定由输入变量c(及也由变量s)所描述的上下文值是否大于由表项“ari_hash_m[i_min]”所描述的上下文值(由条件“s>j”定义的第一种情况),或由输入变量c所描述的上下文值是否小于由表项“ari_hash_m[i_min]”所描述的上下文值(由条件“c<j>>8”定义的第二种情况),或由输入变量c所描述的上下文值是否等于由表项“ari_hash_m[i_min]”所描述的上下文值(第三种情况)。
在第一种情况(s>j)下,由表索引值“i_min+1”标示的表“ari_lookup_m[]”的表项“ari_lookup_m[i_min+1]”返回作为函数“arith_get_pk()”的输出值。在第二种情况(c<(j>>8))下,由表索引值“i_min”标示的表“ari_lookup_m[]”的表项“ari_lookup_m[i_min]”返回作为函数“arith_get_pk()”的输出值。在第三种情况(即,当由输入变量c所描述的上下文值等于由表表项“ari_hash_m[i_min]”所描述的有效状态值时)下,由散列表表项“ari_hash_m[i_min]”的最低8位所描述的映射规则索引值返回作为函数“arith_get_pk()”的输出值。
综上所述,在步骤508b中执行特别简单的表搜索,其中该表搜索提供变量“i_min”的变量值,而未区别由输入变量c所描述的上下文值是否等于由表项“ari_hash_m[]”所描述的有效状态值。在继表搜索508b之后执行的步骤508c中,评估由输入变量c所描述的上下文值与由散列表表项“ari_hash_m[i_min]”所描述的有效状态值间的幅度关系,依据该评估结果而选择函数“arith_get_pk()”的返回值,其中考虑在表评估508b中所确定的变量“i_min”的值来选择映射规则索引值,即便由输入变量c所描述的上下文值系与由散列表表项“ari_hash_m[i_min]”所描述的有效状态值不同。
进一步应注意的是,算法中的比较优选地(或另外地)在上下文索引(数值上下文值)c与j=ari_hash_m[i]>>8间进行。实际上,表“ari_hash_m[]”的各个表项表示一个上下文索引,编码超过第八位,且其相对应的概率模型用最先的八个位(最低有效位)来编码。在当前实现中,发明人主要感兴趣的是当前上下文c是否大于ari_hash_m[i]>>8,其相当于检测s=c<<8是否也大于ari_hash_m[i]。
综上所述,一旦上下文状态信息被算出(例如,可使用根据图5c的算法“arith_get_context(c,i,N)”或根据图5d的算法“arith_get_context(c,i)”达成),最高有效逐2-位平面使用用与上下文状态对应的概率模型相对应的适当累积频率表调用的算法“arith_decode”(容后详述)来解码。对应关系系通过函数“arith_get_pk()”来完成,例如已经参照图5f讨论的函数“arith_get_pk()”。
11.6.算术解码
11.6.1.使用根据图5g的算法的算术解码
在下文中将参照图5g讨论函数“arith_decode()”的功能。图5g示出了描述所使用的算法的伪C码。
应注意的是,函数“arith_decode()”使用辅助函数“arith_first_symbol(void)”,若其是序列的第一符号,则返回TRUE,否则返回FALSE。函数“arith_decode()”还使用辅助函数“arith_get_next_bit(void)”,其获得且提供该位流的下一位。
另外,函数“arith_decode()”使用全局变量“低”、“高”及“值”。而且,函数“arith_decode()”接收变量“cum_freq[]”作为输入变量,其指向所选累积频率表或累积频率子表(优选地,表ari_cf_m[64][17]的子表ari_cf_m[pki=0][17]至ari_cf_m[pki=63][17]中的一个,如图23(1)、23(2)、23(3)的表格表示所定义)的第一表项或元素(具有元素索引或表项索引0)。并且,函数“arith_decode()”使用输入变量“cfl”,其指示用变量“cum_freq[]”表示的所选累积频率表或累积频率子表的长度。
函数“arith_decode()”包括变量初始化570a作为第一步骤,若辅助函数“arith_first_symbol()”指示正在解码一系列符号的第一符号,则执行此一步骤。值初始化550a依据使用辅助函数“arith_get_next_bit”而得自位流的多个,例如16个位而将变量“值”初始化,使得变量“值”具有由这些位所表示的值。同样,变量“低”被初始化成取0值,而变量“高”被初始化为取65535的值。
在第二步骤570b中,变量“范围”被设定为比变量“高”与“低”值间的差值大1的值。变量“cum”被设定为表示变量“值”的值在变量“高”值与变量“低”值间的相对位置的值。据此,依据变量“值”的值,变量“cum”取例如0至216间的值。
指针p被初始化为比所选累积频率表或子表的起始地址小1的值。
算法“arith_decode()”还包括迭代的累积频率表搜索570c。迭代的累积频率表搜索重复执行直至变量cfl小于或等于1为止。在迭代的累积频率表搜索570c中,指针变量q被设定为一值,其等于指针变量p与变量“cfl”的值的一半的和。若所选累积频率表的表项*q(该表项借指针变量q来寻址)的值大于变量“cum”的值,则指针变量p被设定为指针变量q的值,且变量“cfl”增加。最后,变量“cfl”向右移位一位,借此有效地将变量“cfl”的值除以2并忽略模部分。
据此,迭代的累积频率表搜索570c有效地比较变量“cum”的值与所选累积频率表的多个表项来识别所选累积频率表内部的区间,该区间由该累积频率表的表项所界限,使得值cum位于所识别的区间内部。如此,所选累积频率表的表项界定区间,其中个别符号值与所选累积频率表的区间各自相关联。而且,累积频率表的两个相邻值之间的区间宽度定义与该等区间相关联的符号的概率,使得所选累积频率表整体界定不同符号(或符号值)的概率分布。有关可用累积频率表或累积频率子表的细节将参照图23讨论如下。
再次参照图5g,符号值从指针变量p的值导出,其中该符号值如参考标号570d所示而导出。如此,指针变量p的值与起始地址“cum_freq”的值之间的差被评估来获得符号值,其用变量“符号”表示。
算法“arith_decode”还包括变量“高”及“低”的适应性570e。若以变量“符号”表示的符号值不等于零,则更新变量“高”,如参考标号570e所示。同样,更新变量“低”的值,如参考标号570e所示。变量“高”被设定为由变量“低”、变量“范围”及所选累积频率表或累积频率子表中具有索引“符号-1”的表项所测定的值。变量“低”增加,其中增加幅度由变量“范围”及所选累积频率表中具有索引“符号”的表项所确定。如此,变量“低”与“高”的值间的差依据所选累积频率表的两相邻表项间的数值差来调整。
因此,若检测到具有低概率的符号值,则变量“低”与“高”的值间的区间缩小成狭窄宽度。相反地,若检测到的符号值包括相当高的概率,则变量“低”与“高”的值间的区间设定为较大值。再者,变量“低”与“高”的值间的区间宽度取决于所检测的符号及对应的累积频率表表项。
算法“arith_decode()”还包括区间重整化570f,其中在步骤570e中确定的区间迭代地移位与定标直至达到“中断”条件。在区间重整化570f中,执行选择性的向下移位操作570fa。若变量“高”小于32768,则不做任何动作,且区间重整化继续执行区间大小增加操作570fb。但若变量“高”不小于32768,且若变量“低”大于或等于32768,则变量“值”、“低”及“高”全部减少32768,使得由变量“低”及“高”所限定的区间向下移位,且使得变量“值”的值也向下移位。但若发现变量“高”的值不小于32768,且若变量“低”不大于或等于32768,且变量“低”大于或等于16384,且若变量“高”小于49152,则变量“值”、“低”及“高”全部减少16384,借此变量“高”与“低”的值间的区间,及变量“值”的值也向下移位。但若未满足前述任一条件,则舍弃区间重整化。
然而,若满足步骤570fa中所评估的前述任一条件,则执行区间增加操作570fb。在区间增加操作570fb中,变量“低”的值加倍。同样,变量“高”的值也加倍,加倍结果再加1。同样,变量“值”的值加倍(向左移位一个位),且通过辅助函数“arith_get_next_bit”所得位流的位用作最低有效位。据此,变量“低”与“高”的值间的区间大小约略加倍,且变量“值”的精度通过使用位流的新位而增加。如前文提到的,重复步骤570fa及570fb直至达到“中断”条件,即直至变量“低”与“高”的值间的区间足够大为止。
有关算法“arith_decode()”的功能,应注意的是,变量“低”与“高”的值间的区间在步骤570e中缩小,这取决于由变量“cum_freq”引用的累积频率表的两相邻表项。若所选累积频率表的两相邻值间的区间很小,即若相邻值相对较为接近,则步骤570e中所得的变量“低”与“高”的值间的区间将较小。相反地,若累积频率表的两相邻表项间隔较远,则步骤570e中所得的变量“低”与“高”的值间的区间将相对较大。
结果,若步骤570e中所得的变量“低”与“高”的值间的区间相对较小,则将执行大量区间重整步骤将区间重定标至“足够”大小(使得条件评估570fa的条件皆未满足)。据此,将使用来自位流的较大数目的位来增高变量“值”的精度。相反地,若步骤570e所得区间大小相对较大,要求较少数的区间重整步骤570fa及570fb的重复来将变量“低”与“高”的值间的区间重整为“足够”大小。据此,将只使用相对较少数的来自位流的位来增加变量“值”的精度,并准备下一符号的解码。
综上所述,若解码符号,其包括相对较高概率,及所选累积频率表表项相关联的大区间,则将从该位流只读取较少数的位以允许解码接续其后的符号。相反地,若解码符号,其包括相对较低概率,及所选累积频率表表项相关联的小区间,则将从该位流只读取较大数的位来准备解码下一符号。
据此,累积频率表的表项反映不同符号的概率,同时也反映解码一系列符号所需的位数目。通过依据上下文,即依据先前解码符号(或频谱值),例如,通过依据上下文选择不同的累积频率表而变更累积频率表,可探讨不同符号间的随机相依性,其允许特别比位率有效的随后(或相邻)符号的编码。
综上所述,已参照图5g描述的函数“arith_decode()”用与对应于由函数“arith_get_pk()”返回的索引“pki”的累积频率表“arith_cf_m[pki][]”调用,以确定最高有效位平面值m(其可设定为由返回变量“符号”所表示的符号值)。
综上所述,算术解码器是使用以定标而产生标签的方法的整数实现。有关其细节请参考书籍“Introduction to Data Compression”,作者K.Sayood,2006年,第三版,Elsevier Inc.。
根据图5g的计算机程序码描述根据本发明的实施例所使用的算法。
11.6.2.使用根据图5h及图5i的算法的算术解码
图5h及图5i示出了算法“arith_decode()”的另一实施例的伪程序码表示,其可用作参照图5g所述算法“arith_decode”的替代物。
应注意的是,根据图5g及根据图5h及5i的算法均可用于根据图3的算法“arith_decode()”。
简言之,值m使用用累积频率表“arith_cf_m[pki][]”(优选地,其是图23(1)、图23(2)、图23(3)的表格表示中所定义的表ari_cf_m[67][17]的子表)调用的函数“arith_decode()”来解码,其中“pki”对应于由函数“arith_get_pk()”所返回的索引。算术编码器(或解码器)是使用以定标而产生标签的方法的整数实现。有关其细节请参考书籍“Introduction toData Compression”,作者K.Sayood,2006年,第三版,Elsevier Inc.。根据图5h及5i的计算机程序码描述所使用的算法。
11.7.脱序机制
在下文中将简短讨论用于根据图3的解码算法“values_decode()”的脱序机制。
当解码值m(作为函数“arith_decode()”的返回值而被提供)为脱序符号“ARITH_ESCAPE”时,变量“lev”及“esc_nb”递增1,而另一个值m被解码。在这种情况下,函数“arith_get_pk()”(或“get_pk()”)以值“c+esc_nb<<17”作为输入参数而被再次调用,其中变量“esc_nb”描述先前对相同的2元组解码且限于7的脱序符号的数目。
简言之,当识别出脱序符号时,假设最高有效位平面值m包括增加的数值权值。此外,重复当前数值解码,其中修改的数值当前上下文值“c+esc_nb<<17”用作函数“arith_get_pk()”的输入变量。据此,在子算法312ba的不同迭代中,通常获得不同映射规则索引值“pki”。
11.8.算术终止机制
在下文中将描述算术终止机制。在音频编码器中较高频率部分被完全量化为0的情况下,算术终止机制允许减少所需的位数目。
在一个实施例中,算术终止机制可实施如下:一旦值m不是脱序符号“ARITH_ESCAPE”,解码器就检查连续的m是否形成“ARITH_ESCAPE”符号。若条件“(esc_nb>0&&m==0)”为真,则检测到“ARITH_ESCAPE”符号并结束解码程序。在这种情况下,解码器直接跳至下文描述的符号解码,或下文描述的“arith_finish()”函数。该条件意味着该帧其余部分由0值组成。
11.9.较低有效位平面解码
在下文中将描述一个或多个较低有效位平面的解码。较低有效位平面的解码例如在图3中所示步骤312d中进行。然而,可供选择地,也可使用图5j及图5n中所示的算法,其中图5j的算法是优选算法。
11.9.1.根据图5j的较低有效位平面解码
现在参照图5j,可知变量a及b的值从值m导出。值m的数字表示向右移位2位来获得变量b的数字表示。此外,变量a的值通过从变量m的值减去变量b的值的向左移位2位的位移位版本而获得。
随后,重复最低有效位平面值r的算术解码,其中重复次数由变量“lev”的值确定。最低有效位平面值r使用函数“arith_decode”获得,其中使用适应于最低有效位平面的解码的累积频率表(累积频率表“arith_cf_r”)变量r的最低有效位(具有数值权值1)描述由变量a所表示的频谱值的较低有效位平面,且变量r的具有数值权值2的位描述变量b所表示的频谱值的较低有效位。据此,变量a通过将变量a向左移位1位并加上变量r的具有数值权值1的位作为最低有效位而更新。类似地,变量b通过将变量b向左移位1位并加上变量r的具有数值权值2的位而更新。
据此,变量a、b的两个载有最高有效信息的位通过最高有效位平面值m确定,且值a及b的一个或多个最低有效位(若有)由一个或多个最低有效位平面值r确定。
综上所述,当不满足“ARITH_STOP”符号时,对当前2元组解码其余位平面(若存在)。其余位平面通过调用使用累积频率表“arith_cf_r[]”的函数“arith_decode()”“lev”次数而从最高有效位阶至最低有效位阶解码。已解码位平面r允许依据算法来改进事先解码的值m,图5j中示出了其伪程序码。
11.9.2.根据图5n的较低有效位频带解码
然而,可供选择地,其伪程序码表示示于图5n的算法也可用于较低有效位平面解码。在这种情况下,若不满足“ARITH_STOP”符号,则对当前2元组其余位平面(若存在)解码。其余位平面通过调用使用累积频率表“arith_cf_r()”的“arith_decode()”“lev”次数而从最高有效位阶至最低有效位阶解码。已解码位平面r允许根据图5n中所示的算法来改进事先解码的值m。
11.10.上下文更新
11.10.1.根据图5k、图5l及图5m的上下文更新
在下文中将参照图5k及图5l,描述用于完成频谱值的元组解码的操作。此外,将描述用来完成与音频内容的当前部分(例如,当前帧)相关联的频谱值的一组元组解码的操作。
应注意的是,即便可以使用可选算法,但优选根据5k、图5l及图5m的算法。
现在参照图5k,可知在最低有效位解码312d之后,数组“x_ac_dec[]”的具有表项索引2*i的表项被设定为等于a,且数组“x_ac_dec[]”的具有表项索引“2*i+1”的表项被设定为等于b。换言之,在较低有效位解码312d之后,2元组{a,b}的无符号值被完全解码。根据图5k中所示的算法,存储在保有频谱系数的数组(例如,数组“x_ac_dec[]”)中。
随后,也对下一个2元组更新上下文“q”。应注意的是,此上下文更新也须对最后一个2元组执行。此上下文更新通过其伪程序码表示示于图5l的函数“arith_update_context()”来执行。
现在参照图5l,可知函数“arith_update_context(i,a,b)”接收2元组的已解码无符号的已量化频谱系数(或频谱值)a,b作为输入变量。此外,函数“arith_update_context()”也接收欲解码的已量化频谱值的索引i(例如频率索引)作为输入变量。换言之,输入变量i例如可以是其绝对值由输入变量a、b所定义的频谱值的元组索引。如图可知,数组“q[][]”的表项“q[1][i]”可设定为等于a+b+1的值。此外,数组“q[][]”的表项“q[1][i]”的值可限于“0xF”的十六进制值。如此,数组“q[][]”的表项“q[1][i]”通过计算具有频率索引i的频谱值的当前解码元组{a,b}的绝对值之和并将和值结果加1而获得。
此处应注意的是,数组“q[][]”的表项“q[1][i]”可被视为上下文子区域值,原因在于其描述用于额外频谱值(或频谱值的元组)随后解码的上下文的子区域。
此处应注意的是,两个当前解码频谱值的绝对值a及b(其有符号版本存储在数组“x_ac_dec[]”的表项“x_ac_dec[2*i]”及“x_ac_dec[2*i+1]”中)的加总可被视为解码频谱值的范数(例如,L1范数)的计算。
已发现描述由多个事先解码的频谱值形成的向量的范数的上下文子区域值(即,数组“q[][]”的表项)特别有意义且内存有效。已发现基于多个事先解码的频谱值算出的此种范数包括精简形式的有意义的上下文信息。已发现频谱值符号通常与上下文的选择并非特别相关。还发现经过多个事先解码的频谱值的范数的形成,即便舍弃若干细节,通常也仍保有最重要的信息。此外,已发现数值当前上下文值限制在最大值内通常不会导致信息的严重遗漏。反而,已发现对大于预定临界值的有效频谱值使用相同上下文状态更加有效。如此,对上下文子区域值加以限制使内存效率进一步改良。此外,已发现将上下文子区域值限制在某个最大值内允许特别简单且计算有效的数值当前上下文值的更新,这例如已参照图5c及图5d描述。通过将上下文子区域值限制在相对较小的值(例如,限制于值15),基于多个上下文子区域值的上下文状态可以有效形式表示,已参照图5c及图5d讨论。
此外,已发现将上下文子区域值限制在1至15之间的值,获得准确度与内存效率间的特佳折衷,原因在于4个位即足以存储此种上下文子区域值。
然而,应注意的是,在若干其他实施例中,上下文子区域值可只以单一解码频谱值为基础。在这种情况下,范数的形成可以可选地被删除。
该帧的下一个2元组在函数“arith_update_context”完成后被解码,解码方式是通过i递增1,且从函数“arith_update_context()”开始重做前述相同程序。
当在帧内部解码lg/2个2元组或依据“ARITH_STOP”的终止符号出现时,频谱幅度的解码程序结束而符号的解码开始。
有关符号解码的细节已经参照图3讨论,其中参考标号314中示出了符号的解码。
一旦全部无符号且已量化的频谱系数都已解码,就加上对应符号。对“x_ac_dec”的各个非空(non-null)量化值,读取一位。若所读取的位值等于1,则该量化值为正,不做任何动作,且符号值等于事先解码的无符号值。否则(即,若所读取的位值等于0)即为负,且2的补码取自无符号值。符号位从低频自高频读取。有关细节参照图3讨论及参照符号的解码314的说明。
通过调用函数“arith_finish()”完成解码。其余频谱系数被设定为0。个别上下文状态据此而更新。
详情请参考图5m,其示出了函数“arith_finish()”的伪程序码表示。如图可知,函数“arith_finish()”接收输入变量lg,其描述已解码的已量化频谱系数。优选地,函数“arith_finish”的输入变量lg描述实际上解码的频谱系数数目,未考虑响应于“ARITH_STOP”符号的检测被分配0值的频谱系数。函数“arith_finish”的输入变量N描述当前窗口(即与音频内容的当前部分相关联的窗口)的窗口长度。通常,与长度N的窗口相关联的频谱值数目等于N/2,而与窗口长度N的窗口相关联的频谱值的2元组数目等于N/4。
函数“arith_finish”也接收解码频谱值的向量“x_ac_dec”,或至少接收此解码频谱系数的向量的指标作为输入值。
函数“arith_finish”被配置为将因算术终止条件的存在而无频谱值被解码的数组(或向量)“x_ac_dec”的表项设定为0。此外,函数“arith_finish”设定上下文子区域值“q[1][i]”为预定值1,上下文子区域值与因算术终止条件的存在而无任何值被解码的频谱值相关联。预定值1与频谱值的元组(其中两个频谱值均等于0)相对应。
据此,函数“arith_finish()”允许更新频谱值的整个数组(或向量)“x_ac_dec[]”以及整个上下文子区域值数组“q[1][i]”,即便在算术终止条件存在下亦如此。
11.10.2.根据图5o及图5p的上下文更新
在下文中将参照图5o及图5p描述上下文更新的另一实施例。2元组(a,b)的无符号值被完全解码时点,对下一个2元组更新上下文q。若当前2元组为最后一个2元组,也进行更新。两项更新都通过函数“arith_update_context()”执行,图5o中示出了其伪程序码表示。
然后,该帧的下一个2元组通过将i递增1及调用函数“arith_decode()”而被解码。若lg/2个2元组已经利用帧进行解码,或若出现终止符号“ARITH_STOP”,则调用函数“arith_finish()”。保持上下文,并存储在下一帧的数组(或向量)“qs”中。图5p中示出了函数“arith_save_context()”的伪程序码。
一旦全部无符号且已量化的频谱系数已经解码,则补上符号。对各个未经量化值“qdec”,读取位。若读取位值等于0,则量化值为正,不做任何动作,且有符号值等于事先解码的无符号值。否则,解码系数为负,并从无符号值读2的补码。有符号位从低频至高频读取。
11.11.解码程序的概要
在下文中,将简短概述解码程序。有关其细节请参考前文讨论及图3、4、5a、5c、5e、5g、5j、5k、5l及5m。量化频谱系数“x_ac_dec[]”从最低频系数开始并前进至最高频系数而无噪声地解码。它们由集合在所谓的2元组(a,b)(同样用{a,b}表示)中的成组的两个连续系数a,b解码。
然后,频域(即,频域模式)的解码系数“x_ac_dec[]”存储在数组“x_ac_quant[g][win][sfb][bin]”中。无噪声编码码字的传输顺序使得当其以所接收的顺序解码并存储在数组中时,“bin”为最快递增的索引,“g”为最慢递增的索引。在码字内部,解码顺序为a,然后为b。“TCX”的解码系数“x_ac_dec[]”(即,使用变换编码激励的音频解码)存储(例如,直接存储)在数组“x_tcx_invquant[win][bin]”中,且无噪声编码码字的传输顺序使得当其以所接收的顺序解码并存储在数组中时,“bin”为最快递增的索引,“win”为最慢递增的索引。在码字内部,解码顺序为a,然后为b。
首先,标记“arith_reset_flag”判定上下文是否必须重置。若标记为真,则在函数“arith_map_context”中考虑此点。
解码过程从初始化阶段开始,其中通过拷贝并映射存储在“q[1][]”中的前一帧的上下文元素至“q[0][]”,更新上下文元素向量“q”。“q”内部的上下文元素以每2元组4位存储。有关其细节请参考图5a的伪程序码。
无噪声解码器输出无符号且已量化的频谱系数的2元组。首先,上下文状态c基于环绕待解码2元组的事先解码频谱系数来计算。因此,只考虑两个新的2元组,使用最后一个解码2元组的上下文状态,递增地更新状态。状态以17位解码,及由函数“arith_get_context”返回。图5c中示出了设定函数“arith_get_context”的伪程序码表示。
上下文状态c确定用于解码最高有效逐2位平面m的累积频率表。从c映射到相对应的累积频率表“pki”通过函数“arith_get_pk()”执行。图5e中示出了函数“arith_get_pk()”的伪程序码表示。
使用用累积频率表“arith_cf_m[pki][]”调用的函数“arith_decode()”来解码值m,此处“pki”对应于由“arith_get_pk()”返回的索引。算术编码器(及解码器)为使用以定标而产生标签的方法的整数实现。根据图5g的伪程序码描述所使用的算法。
当解码值m为脱序符号“ARITH_ESCAPE”时,变量“lev”及“esc_nb”递增1,而另一值m被解码。在这种情况下,函数“get_pk()”再次以值“c+esc_nb<<17”作为输入参数而被调用,此处“esc_nb”是先前对相同2元组解码且限于7的脱序符号的数目。
一旦值m不是脱序符号“ARITH_ESCAPE”,解码器就检查连续的m是否形成“ARITH_STOP”符号。若条件“(esc_nb>0&&m==0)”为真,则检测到“ARITH_STOP”符号且结束解码过程。解码器直接跳至后述的符号解码。该条件表示该帧其余部分由0值组成。
若不满足“ARITH_STOP”符号,则对当前2元组解码其余位平面(若存在)。其余位平面通过使用调用累积频率表“arith_cf_r[]”的“arith_decode()”“lev”次而从最高有效位阶至最低有效位阶解码。已解码位平面r允许根据图5j中所示的伪程序码表示的算法来改进事先解码的值m。此时,2元组(a,b)的无符号值被完全经解码。其根据图5k中所示的伪程序码表示的算法被存储到保有频谱系数的元素中。
上下文“q”也对下一个2元组更新。应注意的是,此上下文更新也对最后一个2元组执行。此上下文更新通过图5l中所示的伪程序码表示显示的函数“arith_update_context()”执行。
该帧的下一个2元组然后通过i递增1,且通过从函数“arith_get_context()”开始重做如前文所述的相同程序而被解码。当lg/2个2元组在帧内部解码或出现终止符号“ARITH_STOP”时,频谱幅度的解码程序结束而符号的解码开始。
解码通过调用函数“arith_finish()”完成。其余频谱系数被设定为0。个别上下文状态被对应地更新。图5m中示出了函数“arith_finish()”的伪程序码表示。
一旦全部无符号且已量化的频谱系数都已解码,就补上对应符号。对“x_ac_dec”的各个非空量化值,读取位。若所读取的位值等于0,则该量化值为正,不做任何动作,且符号值等于事先解码的无符号值。否则,解码系数为负,2的补码取自无符号值。符号位从低频至高频读取。
11.12.图例
图5q示出了与根据图5a、5c、5e、5f、5g、5j、5k、5l及5m的算法相关的定义的图例。
图5r示出了与根据图5b、5d、5f、5h、5i、5n、5o及5p的算法相关的定义的图例。
12.映射表
在根据本发明的实施例中,特别有用的表“ari_lookup_m”、“ari_hash_m”及“ari_cf_m”用于根据5e图或图5f的函数“arith_get_pk()”的实现,以及用于参照图5g、5h及5i讨论的函数“arith_decode()”的执行。但应注意的是,不同的表可用于某些可选实施例。
12.1.根据图22(1)、22(2)、22(3)及22(4)的表“ari_hash_m[742]”
图22(1)至图22(4)的表中示出了函数“arith_get_pk”(其第一优选实施例参照图5e描述且其第二实施例参照图5f描述)所使用的表“ari_hash_m”的特别有用的实施例的内容。应注意的是,图22(1)至图22(4)的表列举表(或数组)“ari_hash_m[742]”的742个表项。还应注意的是,图22(1)至图22(4)的表表示以元素索引的顺序显示元素,使得第一个值“"0x00000104UL”对应于具元素索引(或表索引)0的表表项“ari_hash_m[0]”,且使得最后一个值“0xFFFFFF00UL”对应于具元素索引或表索引741的表表项“ari_hash_m[741]”。此处应注意的是,“0x”指出表“ari_hash_m[]”的表项以十六进制格式表示。此外,此处应注意的是,字尾“UL”指出表“ari_hash_m[]”的表项以无符号的“长”整数值(具有32位的精度)表示。
此外,应注意的是,根据图22(1)至图22(4)的表“ari_hash_m[]”的表项以数值顺序排列,以允许函数“arith_get_pk()”的表搜索506b、508b、510b的执行。
进一步应注意的是,表“ari_hash_m”的表项的最高有效24位表示某些有效状态值(且可以被视为第一子表项),而最低有效8位表示映射规则索引值“pki”(且可以被视为第二子表项)。如此,表“ari_hash_m[]”的表项描述上下文值到映射规则索引值“pki”的“直接命中”映射。
然而,表“ari_hash_m[]”的表项的最高有效24位同时表示与相同映射规则索引值相关联的数值上下文值的区间的区间边界。有关此构想的细节已经在前面讨论过。
12.2.根据图21的表“ari_lookup_m”
图21的表中示出了表“ari_lookup_m”的特别有利的实施例的内容。此处应注意的是,图21的表列举表“ari_lookup_m”的表项。表项以一维整数型表项索引(也称为“元素索引”或“数组索引”或“表索引”)引用,其例如用“i_max”、“i_min”或“i”表示。应注意的是,表“ari_lookup_m”共包括742个表项,极为适合根据图5e图或图5f的函数“arith_get_pk”使用。还应注意的是,根据图21的表“ari_lookup_m”适用于与根据图22的表“ari_hash_m”共同作用。
应注意的是,表“ari_lookup_m[742]”的表项以0至741间的表索引“i”(例如“i_max”、“i_min”或“i”)的上升顺序列举。项“0x”指示以十六进制格式描述该表的表项。据此,第一个表项“0x01”对应于具有表索引0的表项“ari_lookup_m[0]”,且最后一个表项“0x27”对应于具有表索引741的表项“ari_lookup_m[741]”。
还应注意的是,表“ari_lookup_m[]”的表项与由表“ari_hash_m[]”的相邻表项限定的区间相关联。如此,表“ari_lookup_m”的表项描述与数值上下文值的区间相关联的映射规则索引值,其中区间由表“ari_hash_m”的表项限定。
12.3.根据图23(1)、23(2)及23(3)的表“ari_cf_m[64][17]”
图23示出了一组64个累积频率表(或子表)“ari_cf_m[pki][17]”,其中的一个由音频编码器100、700或音频解码器200、800选择,用于执行函数“arith_decode()”,即用于最高有效位平面值的解码。图23(1)至图23(3)中所示的64个累积频率表(或子表)中的一个选择累积频率表(或子表)在执行函数“arith_decode()”中发挥表“cum_freq[]”的功能。
如图23(1)至图23(3)可知,各个子块或线表示具17个表项的一个累积频率表。例如,第一子块或线2310表示“pki=0”的累积频率表的17个表项。第二子块或线2312表示“pki=1”的累积频率表的17个表项。最后,第64个子块或线2364表示“pki=63”的累积频率表的17个表项。如此,图23(1)至图23(3)有效表示对应于“pki=0”至“pki=95”的64个不同累积频率表(或子表),其中64个累积频率表各自以一个子块(以大括号括出)或线表示,且其中每个所述累积频率表均包括17个表项。
在一个子块或线(例如,子块或线2310或2312,或子块或线2396)内部,第一个值(例如,第一子块2310的第一个值708)描述由子块或线表示的累积频率表的第一个表项(具有数组索引或表索引0),且最后一个值(例如,第一子块或线2310的最后一个值0)描述由子块或线表示的累积频率表的最后一个表项(具有数组索引或表索引16)。
据此,图23的表格表示的各个子块或线2310、2312、2364表示由根据图5g或根据图5h及5i的函数“arith_decode”所使用的累积频率表的表项。函数“arith_decode”的输入变量“cum_freq[]”描述64个累积频率表(以表“arith_cf_m”的17个表项的个别子块表示)中的哪一个须用于当前频谱系数的解码。
12.4.根据图24的表“ari_cf_r[]”
图24示出了表“ari_cf_r[]”的内容。
图24中示出了所述表的四个表项。然而,应注意的是,在其他实施例中,表“ari_cf_r”最终可能不同。
13.概述、效能评估及优点
根据本发明的实施例使用如前文讨论的更新的函数(或算法)及更新的一组表,以获得计算复杂度、内存需求与编码效率间的改良折衷。
总地来说,根据本发明的实施例创建改良型频谱无噪声编码。根据本发明的实施例描述以USAC(统一语音及音频编码)的频谱无噪声编码的加强。
根据本发明的实施例,对基于MPEG输入报告ml6912及ml7002中所提出的方案的改良型频谱噪声编码的CE,形成更新的提案。这两个提案经评估,消除了潜在缺点,并结合了优势。另外,本发明的实施例包括更新无噪声频谱编码表以便用于当前USAC规范。
13.1.概述
在下文中,将给出简短概述。在正在标准化USAC(统一语音及音频编码)的过程中,提出了USAC中的增强频谱无噪声编码方案(也称为熵编码方案)。该增强频谱无噪声编码方案有助于更有效地无损地编码量化频谱系数。因此,将频谱系数映射到可变长度的对应码字。熵编码方案以基于上下文的算术编码方案为基础:频谱系数的上下文(即,相邻频谱系数)确定用于频谱系数算术编码的概率分布(累积频率表)。
根据本发明的实施例使用更新的一组表用于频谱编码方案,如先前在USAC的上下文中提出。给了给出背景,应注意的是,传统的频谱无噪声编码技术首先由算法组成,其次由一组训练表组成(或至少包括算法及一组训练表)。这种传统的训练表基于USAC WD4位流。由于USAC现在已发展成WD7,且显著变化同时适用于USAC规范,因此在根据本发明的实施例中使用一组新的再训练表,以最近的USAC版WD7为基础。该算法本身保持不变。由此,再训练表具有比任何事先提出的方案好的压缩效率。
根据本发明,提出用这里提出的再训练表替代传统的训练表,从而使得编码效率增加。
13.2.概论
在下文中,将提出概论。
对于USAC工作项目,在最后会议中以协作方式提出了更新无噪声编码方案的几项提案。然而,基本上在第89届会议上启动该工作。从那时起,对有关频谱系数编码的所有提案来说普遍的做法是基于USAC WD4参考质量位流示出性能结果以及基于WD4训练数据库的训练。
同时,USAC的其他领域的很大改进,尤其是立体处理及开窗的很大改进至今已并入USAC规范。人们发现,这些改进对频谱无噪声编码的统计也略有影响。因此,针对无噪声编码CE示出的结果可以被视为是并不理想的,原因是不对应于最近的WD修订。
据此,提出了频谱无噪声编码表,其更加适于更新的算法及待编码解码的频谱值的统计。
13.3.算法简述
在下文中,将对算法进行简述。
为了克服内存占用(footprint)及计算复杂度的问题,提出改良型无噪声编码方案来取代工作草案6/7(WD6/7)中的方案。开发的主要焦点放在减少内存需求,同时维持压缩效率且不增加计算复杂度。更明确地说,目的是为了实现压缩效率、复杂度及内存需求的多维复杂度空间的最佳折衷。
新颖编码方案提案借用WD6/7无噪声编码器的主要特征,即上下文适应性。上下文使用事先解码的频谱系数导出,如同在WD6/7中,该频谱系数来自于过去帧及当前帧。然而,频谱系数现在通过将两个系数组合在一起以形成2元组而被编码。另一个差异在于频谱系数现在被***成三部分:符号、MSB及LSB。符号与幅度独立地编码,其又再划分成两部分:两个最高有效位及其余的位(若存在)。两个元素的幅度小于或等于3的2元组通过MSB编码而直接编码。否则,首先传输脱序码字来标示任何额外位平面。在基础版本中,遗漏的信息,即LSB及符号,皆使用均匀概率分布编码。
表大小的缩小仍属可能,原因在于:
●只需存储17个符号的概率:{[0;+3],[0;+3]}+ESC符号;
●无需存储群组表(egroups、dgroups、dgvectors);以及
●散列表的大小可以通过适当训练加以缩小。
13.3.1. MSB编码
在下文中将对MSB编码进行描述。
如前文已述,WD6/7,先前提案与本提案间的主要差异为符号的维度。WD6/7中,4元组被考虑用于上下文的产生及无噪声编码。在先前提案中,使用1元组取而代之用来减少ROM需求。在开发过程中,发现2元组为减少ROM需求,而不增加计算复杂度的最佳折衷。对于上下文更新,现在考虑四个2元组,而不考虑四个4元组。如第25图所示,三个2元组来自过去帧,且一个2元组来自当前帧。
表的大小缩小是由于三个主要因素。首先,只需存储17个符号的概率(即,{[0;+3],[0;+3]}+ESC符号)。不再需要群组表(即,egroups、dgroups、dgvectors)。而且,散列表的大小可通过实施适当训练加以缩小。
虽然维度从4减至2,但复杂度仍维持与WD6/7相同的范围。这是通过简化上下文产生及散列表存取而实现的。
不同的简化及优化以编码效率不受影响,甚至略有改良的方式进行。
13.3.2. LSB编码
LSB以均匀概率分布编码。与WD6/7比较,LSB现在被考虑进2元组而非4-元组。然而,最低有效位的不同编码是可能的。
13.3.3.符号编码
为了减少复杂度,符号并未使用算术核心编码器编码。唯有当相对应幅度为非空时符号才以1-位传输。0表示正值而1表示负值。
13.4.提议的表格更新
该贡献为USAC频谱无噪声编码方案提供一组更新的表。该表基于当前USAC WD6/7位流被再训练。除了由训练过程产生的实际表之外,该算法保持不变。
为了调查再训练的效果,将新表的编码效率及内存需求与先前提案(M17558)及WD6进行比较。WD6被选择作用参考点,因为a)相对于该参考而给出第92届会议的结果,b)WD6与WD7之间的差异只有极小(仅错误更正,对熵编码或频谱系数的分布没有影响)。
13.4.1.编码效率
首先,将提议的一组新表的编码效率与在M17558中提议的USACWD6及CE进行比较。如从图26的表格表示可知,通过单纯的再训练,编码效率平均增加(与WD6相比)可以从1.74%(M17558)增加至2.45%(新提案,根据本发明的实施例)。与M17558相比,在根据本发明的实施例中压缩增益由此可以增加大约0.7%。
图27可视化地示出了用于所有操作点的压缩增益。如图可知,与WD6相比,可以使用根据本发明的实施例达到至少2%的最小压缩增益。对于低位率,比如12kbit/s及16kbit/s,压缩增益轻微增加。还以诸如64kbit/s的更高位率保持良好的性能,其中可以观察到大于3%的编码效率显著增加。
应注意的是,在不违背位存储约束的情况下证明可以对所有WD6参考质量位流进行无损转码。13.6章节中将给出更详细的结果。
13.4.2.内存需求及复杂度
其次,将内存需求及复杂度与在M17558中提议的USAC WD6及CE进行比较。图28的表将在M17558及根据本发明的实施例的新提案中提议的WD6的无噪声编码器的内侧需求进行比较。可以清楚地看到,采用新算法明显降低内存需求,如M17558中所提议。更进一步地,可以看出对于新提案来说,表的总大小甚至可以稍微减小差不多80个字(32位),从而产生1441字的总ROM需求及每音频信道64字(32位)的总RAM需求。ROM需求的少量保存是通过自动训练算法基于一组新的WD6训练位流得出的概率模型数目与散列表大小之间的良好折衷的结果。有关更多细节请参考图29的表。
就复杂度而言,将新提议的方案的计算复杂度与USAC中的当前无噪声的优化版本进行比较。通过“笔纸法”并通过指示代码发现,新的编码方案与当前方案具有相同的复杂度。据针对32kbps立体声的图30的表及针对12kbps单声道操作点的图31的表报道,所估计的复杂度分别示出了WD6无噪声解码器的优化实现内的0.006加权MOPS及0.024加权MOPS的增加。与大约11.7PCU[2]的整体复杂度相比,这些差异被认为是无足轻重的。
13.5.结论
在下文中,将提供一些结论。
提出了USAC频谱无噪声编码方案的一组新表。与由基于更旧位流的培训结果的先前提案相比,现在在当前USAC WD位流上对提议的新表进行训练,其中使用了先进的训练概念。通过该再训练,在不牺牲较低内存需求或增加复杂度的情况下,可以提高当前USAC位流的编码效率。与USAC WD6相比,可以显著降低内存需求。
13.6.关于WD6位流转码的详细信息
关于工作草案6(WD6)位流转码的详细信息由图32、33、34、35及36的表格表示可知。
图32示出了由根据本发明的实施例中以及在WD6中的算术编码器产生的平均位率的表格表示。
图33示出了基于帧的使用提议方案的最小、最大及平均位率的表格表示。
图34示出了使用WD6算术编码器及根据本发明的实施例(“新提案”)的编码器由USAC编码器产生的平均位率的表格表示。
图35示出了根据本发明的实施例的最佳情况及最差情况的表格表示。
图36示出了根据本发明的实施例的位存储极限的表格表示。
14.与工作草案6或工作草案7相比时的变化
在下文中,将描述与传统无噪声编码相比时的无噪声编码的变化。据此,当与USAC草案标准的工作草案6或工作草案7相比时,针对修改定义实施例。
特别地,将描述WD文本的变化。换言之,该章节列举了USAC规范WD7的一整组变化。
14.1.技术说明的变化
提议的新的无噪声编码对下文将描述的MPEG USAC WD造成修改。标出主要差别。
14.1.1.语法及有效载荷的变化
图7示出了算术编码数据“arith_data()”的语法的表示。标出主要差别。
在下文中,将描述相对于频谱无噪声编码器的有效载荷的变化。
来自“线性预测域”编码信号及“频域”编码信号的频谱系数经定标量化,然后通过适应性上下文相关算术编码而无噪声地编码。量化系数在从最低频传输至最高频之前收集成2元组。应注意的是,当与频谱无噪声编码的先前版本相比时,使用2元组构成变化。
然而,另一个变化是各个2元组***成符号s、最高有效逐2位平面m,及其余的较低有效位平面r。同样,变化在于值m根据系数邻近关系而被编码,且其余的较低有效位平面r经熵编码而未考虑上下文。同样,针对一部分先前版本的变化在于值m及r形成算术编码器的符号。最后,针对一部分先前版本的变化在于对每个非空量化系数而言,符号s使用1位而在算术编码器外部编码。
下面在章节14.2.3中对详细的算术解码程序进行描述。
14.1.2.定义及辅助元素的变化
在图38中的定义及辅助元素的表示中示出定义及辅助元素的变化。
14.2.频谱无噪声编码
在下文中,将概述根据实施例的频谱无噪声编码。
14.2.1.工具描述
频谱无噪声编码用于进一步减少量化频谱的冗余。
频谱无噪声编码方案基于算术编码,并结合动态调适上下文。无噪声编码通过量化频谱值馈送并使用源自四个事先解码的相邻关系的上下文相关累积频谱表。这里,要考虑时间和频率的相邻关系,如图25所示。累积频率表然后由算术编码器用来生成可变长度二进制码。
算术编码器产生用于一组给定的符号及各自的概率的二进制码。通过映射概率区间而生成二进制码,其中对码字来说存在一组符号。
14.2.2.定义
图39中描述了定义及辅助元素。标记与算术编码的先前版本相比时的变化。
14.2.3.解码过程
量化频谱系数qdec从最低频率系数开始无噪声地解码并发展成最高频率系数。通过集成所谓的2元组{a,b}的成组的两个连续系数a及b进行解码。
然后将用于AAC的解码系数存储在数组x_ac_quant[g][win][sfb][bin]中。无噪声编码码字的传输顺序使得当按照数组中接收并存储的顺序进行解码时,bin是最快递增索引,g是最慢递增索引。在码字内,解码顺序为a,然后为b。
将用于TCX的解码系数存储在数组x_ac_quant[g][win][sfb][bin]中,且无噪声编码码字的传输顺序使得当按照数组中接收并存储的顺序进行解码时,bin是最快递增索引,win是最慢递增索引。在码字内,解码顺序为a,然后为b。
解码程序从初始化阶段开始,其中在存储在qs中的保存过去上下文及当前帧q的上下文之间进行映射。过去上下文qs以每频率线2位存储。
有关更多细节请参考图40a中的算法“arith_map_context”的伪编程码表示。
无噪声解码器输出无符号且已量化的频谱系数的2元组。首先,上下文状态c基于环绕欲解码2元组的事先解码频谱系数来计算。因此,只考虑两个新的2元组,使用最后一个解码2元组的上下文状态,递增地更新状态。状态以17位解码,及由函数“arith_get_context()”返回。
图40b中示出了函数“arith_get_context()”的伪程序码表示。
一旦计算出上下文状态c,就使用具有对应于概率模型的合适累积频率表的arith_decode()来解码最有效逐2位平面m,该概率模型对应于上下文状态。通过函数arxth_get_k()进行对应。
图40c中示出了函数“arith_get_pk()”的伪程序码表示。
使用用累积频率表“arith_cf_m[pki][]”调用的函数“arith decode()”来解码值m,此处“pki”对应于由“arith_get_pk()”返回的索引。算术编码器为使用以定标而产生标签的方法的整数实现。图40d及图40e中所示的伪C码描述所使用的算法。
当解码值m为脱序符号“ARITH_ESCAPE”时,变量“lev”及“esc_nb”递增1,而另一值m被解码。在这种情况下,函数“get_pk()”再次以值“c&esc_nb<<17”作为输入参数而被调用,此处“esc_nb”是先前对相同2元组解码且限于7的脱序符号的数目。
一旦值m不是脱序符号“ARITH_ESCAPE”,解码器就检查连续的m是否形成“ARITH_STOP”符号。若条件“(esc_nb>0&&m==0)”为真,则检测到“ARITH_STOP”符号且结束解码过程。解码器直接跳至arith_save_context()函数。该条件表示该帧其余部分由零值组成。
若不满足“ARITH_STOP”符号,则对当前2元组解码其余位平面(若存在)解码。其余位平面通过使用用累积频率表“arith_cf_r[]”调用的“arith_decode()”“lev”次而从最高有效位阶至最低有效位阶解码。已解码位平面r允许根据图40f中所示的伪程序码表示的函数或算法来改进事先解码的值m。
此时,2元组{a,b}的无符号值被完全经解码。上下文“q”也针对下一个2元组更新。此上下文更新也对最后一个2元组执行。更新通过函数“arith_update_context()”,图40g中所示的伪程序码表示执行。
该帧的下一个2元组然后通过i递增1,且通过调用函数进行解码。当lg/2个2元组利用帧解码或出现终止符号“ARITH_STOP”时,调用函数“arith_save_context()”。针对下一帧将上下文保存并存储在“qs”中。图40h中示出了函数或算法“arith_save_context()”的伪程序码表示。
一旦全部无符号且已量化的频谱系数都已解码,就补上符号。对“qdec”的各个非空量化值,读取位。若所读取的位值等于0,则该量化值为正,不做任何动作,且符号值等于事先解码的无符号值。否则,解码系数为负,2的补码取自无符号值。符号位从低频至高频读取。
14.2.4.更新的表
图41(1)、41(2)、42(1)、42(2)、42(3)、42(4)、43(1)、43(2)、43(3)、43(4)、43(5)、43(6)及44中示出了与上述算法一起使用的一组再训练表。
图41(1)和图41(2)示出了根据本发明的实施例的表“ari_lookup_m[742]”的内容的表格表示;
图42(1)、42(2)、42(3)、42(4)示出了根据本发明的实施例的表“ari_hash_m[742]”的内容的表格表示;
图43(1)、43(2)、43(3)、43(4)、43(5)、43(6)示出了根据本发明的实施例的表“ari_cf_m[96][17]”的内容的表格表示;
图44示出了根据本发明的实施例的表“ari_cf_r[4]”的表格表示。
综上所述,可知根据本发明的实施例提供计算复杂度、内存需求与编码效率间的特佳折衷。
15.位流语法
15.1.频谱无噪声编码器的有效载荷
在下文中将描述有关频谱无噪声编码器的有效载荷的若干细节。在某些实施例中,有多种不同编码模式,诸如所谓的“线性预测域”编码模式及“频域”编码模式。在线性预测域编码模式中,噪声整形基于音频信号的线性预测分析来执行,且在频域编码模式中,噪声整形(shaping)基于心理声学分析来执行,且音频内容的噪声整形版本在频域中编码。
来自“线性预测域”编码信号及“频域”编码信号的频谱系数经定标量化,然后通过适应性上下文相关算术编码而无噪声地编码。量化系数在从最低频传输至最高频之前收集成2元组。各个2元组***成符号s、最高有效逐2-位平面m,及其余的一个或多个较低有效位平面r(若有)。值m根据由邻近的频谱系数所定义的上下文编码。换言之,m根据系数邻近关系而被编码。其余的较低有效位平面r经熵编码而未考虑上下文。利用m及r,这些频谱系数的幅度在解码器侧重构。对于全部非空符号而言,符号s使用1位而在算术编码器外部编码。换言之,值m及r形成算术编码的符号。最后,对每个非空量化系数而言,符号s使用1位而在算术编码器外部编码。
本文对详细的算术编码程序进行了描述。
15.2.根据图6a至图6i的语法元素
在下文中将参照图6a至6j描述携带算术编码频谱信息的位流的位流语法。
图6a示出了所谓的USAC原始数据块(“usac_raw_data_block()”)的语法表示。
USAC原始数据块包括一个或多个单一信道元素(“single_channel_element()”)和/或一个或多个成对信道元素(“channel_pair_element()”)。
现在参照图6b,描述单一信道元素的语法。视核心模式而定,单一信道元素包括线性预测域信道流(“lpd_channel_stream()”)或频域信道流(“fd_channel_stream()”)。
图6c示出了成对信道元素的语法表示。成对信道元素包括核心模式信息(“core_mode0”、“core_mode1”)。另外,成对信道元素可以包括配置信息“ics_info()”。此外,依据核心模式信息,成对信道元素包括与信道中的第一个相关联的线性预测域信道流或频域信道流,且成对信道元素还包括与信道中的第二个相关联的线性预测域信道流或频域信道流。
其语法表示显示在图6d中的配置信息“ics_info()”包括多个不同配置信息项,其对本发明并无特别的关联。
其语法表示示出在图6e中的频域信道流(“fd_channel_stream()”)包括增益信息(“global_gain”)及配置信息“ics_info()”。此外,频域信道流包括定标因子数据(“scale_factor_data()”),其描述用于不同定标因子频带的频谱值的定标的定标因子,且例如通过定标器150及重定标器240应用。频域信道流还包括表示算术编码频谱值的算术编码频谱数据(“ac_spectral_data()”)。
其语法表示示出在图6f中的算术编码频谱数据(“ac_spectral_data()”)包括用于选择性地重置上下文(如前所述)的选择性算术重置标记(“arith_reset_flag”)。此外,算术编码频谱数据包括携带该等算术编码频谱值的多个算术数据块(“arith_data”)。算术编码数据块的结构取决于频带数目(通过变量“num_bands”表示),且还取决于算术重置标记的状态,容后详述。
在下文中将参照图6g描述算术编码数据块的结构,其示出了所述算术编码数据块的语法表示。在算术编码数据块内部的数据表示取决于待编码频谱值的数目lg、算术重置标记的状态,也取决于上下文,即事先编码的频谱值。
频谱值的当前集合(例如,2元组)的编码用上下文依据参考标号660所示上下文确定算法来确定。有关上下文测定算法的细节已经参照图5a及图5b在上文中描述过。算术编码数据块包括lg/2各码字集合,各个码字集合表示多个(例如,一个2元组)频谱值。码字集合包括使用1至20个位表示频谱值的元组的最高有效位平面值m的算术码字“acod_m[pki][m]”。此外,为了正确表示,如果频谱值的元组要求比正确表示的最高有效位平面更多的位平面,码字集合包括一个或多个码字“acod_r[r]”。码字“acod_r[r]”使用1至14个位来表示较低有效位平面。
然而,若为了频谱值的适当表示要求一个或多个较低有效位平面(除了最高有效位平面之外)时,使用一个或多个算术脱序码字(“ARITH_ESCAPE”)来表示。如此,通常,对频谱值,确定需要多少个位平面(最高有效位平面,及可能,一个或多个额外较低有效位平面)。若要求一个或多个较低有效位平面,则通过一个或多个算术脱序码字“acod_m[pki][ARITH_ESCAPE]”来表示,这些算术脱序码字依据当前选择的累积频率表而编码,当前选择的累积频率表的累积频率索引由变量“pki”给定。此外,如由参考标号664、662可知,若一个或多个算术脱序码字包括在位流中,则上下文被修改。如参考标号663所示,在算术脱序码字之后,算术码字“acod_m[pki][m]”包括在位流中,其中“pki”标示当前有效概率模型索引(将通过包括算术脱序码字所造成的上下文适应性列入考虑),且其中m标示待编码或待解码频谱值的最高有效位平面值(其中,m不同于“ARITH_ESCAPE”码字)。
如前文讨论,任何较低有效位平面的存在会导致一个或多个码字“acod_r[r]”的存在,其各自表示第一个频谱值的最低有效位平面的位,且其各自也表示第二个频谱值的最低有效位平面的位。一个或多个码字“acod_r[r]”依据对应的累积频率表来编码,该表例如可为常数及上下文非相依性。但也可能使用不同选择机制来选择用于一个或多个码字“acod_r[r]”解码的累积频率表。
此外,应注意的是,在各个频谱值元组编码后,上下文被更新,如参考标号668所示,使得上下文通常变得不同,以用于随后接续的两个频谱值元组的编码及解码。
图6i示出了定义算数编码数据块的语法的定义及辅助元素的图例。
此外,图6h中示出了算术数据“arith_data()”的其他语法,而图6j中示出了相对应的定义及辅助元素的图例。
综上所述,已经描述可由音频编码器100提供且可由音频解码器200评估的位流格式。算术编码频谱值的位流经编码使得其适合前文讨论的解码算法。
另外,一般情况下应注意的是,编码为解码的逆向运算,因而通常可假设编码器使用前文讨论的表执行表查找,近似为通过解码器执行的表查找的反向。一般而言,可以说知晓解码算法和/或期望的位流语法的本领域的技术人员将容易设计出一种提供位流语法中定义的及算术解码器所需的数据的算术编码器。
此外,应注意的是,用于确定数值当前上下文值及用于导出映射规则索引值的机制在音频编码器及音频解码器中可能是相同的,原因在于通常期望音频解码器使用与音频编码器相同的上下文,使得解码与编码相适应。
15.3.根据图6k、图6l、图6m、图6n、图6o及图6p的语法元素
在下文中,将参照图6k、6l、6m、6n、6o及6p对来自替代位流语法的摘录进行描述。
图6k示出了位流元素“UsacSingleChannelElement(indepFlag)”的语法表示。所述语法元素“UsacSingleChanneIEIement(indepFlag)”包括描述一个核心编码器信道的语法元素“UsacCoreCoderData”。
图6l示出了位流元素“UsacChannelPairElement(indepFlag)”的语法表示。所述语法元素“UsacChannelPairElement(indepFlag)”包括描述一个或两个核心编码器信道的语法元素“UsacCoreCoderData”,这取决于立体构型。
图6m示出了位流元素“ics_info()”的语法表示,其包括若干参数的定义,如图6m可知。
图6n示出了位流元素“UsacCoreCoderData()”的语法表示。该位流元素“UsacCoreCoderData()”包括一个或多个线性预测域信道流“lpd_channel_srream()”和/或一个或多个频域信道流“fd_channel_stream()”。其他控制信息可以任选包括在位流元素“UsacCoreCoderData()”中,如图6n可知。
图6o示出了位流元素“fd_channel_stream()”的语法表示。该位流元素“fd_channel_stream()”包括其他可选位流元素中的位流元素“scale_factor_data()”及位流元素“ac_spectral_data()”。
图6p示出了位流元素“ac_spectral data()”的语法表示。该位流元素“ac_spectral data()”可选包括位流元素“arith_reset_flag”。此外,位流元素还包括若干算术编码数据“arith_data()”。算术编码数据例如可以遵循参照图6g描述的位流语法。
16.实现的替代方案
虽然已就装置上下文描述了若干方面,但显然这些方面也表示对应方法的描述,其中块或装置对应于方法步骤或方法步骤的特征。类似地,就方法步骤的上下文所描述的方面也表示对应装置的对应块或项目或特征的描述。部分或全部方法步骤可通过(或使用)硬件装置,例如微处理器、可编程计算机或电子电路来执行。在某些实施例中,最重要的方法步骤中的某一个或多个可通过这种装置来执行。
本发明的编码音频信号可存储在数字存储介质或可在诸如无线传输介质或诸如因特网的有线传输介质的传输介质上传输。
依据某些实现要求,本发明的实施例可以以硬件或软件形式来实现。实现可使用数字传输介质执行,例如软盘、DVD、蓝光盘、CD、ROM、PROM、EPROM、EEPROM、或闪存,其上存储有电子可读取控制信号,所述电子可读取控制信号与可编程计算机***协作(或可协作),因而可执行该方法。因此,数字存储介质可能是计算机可读取的。
根据本发明的某些实施例包括具有电子可读取控制信号的数据载体,该电子可读取控制信号能够与可编程计算机***协作,因而执行本文所述方法中的一种。
一般而言,本发明的实施例能实施为带有程序码的计算机程序产品,当该计算机程序码产品在计算机上运行时,该程序码可操作来执行这些方法中的一种。程序码,例如可存储在机器可读取载体上。
其他实施例包括存储在机器可读取载体上用于执行本文所述方法中的一种的计算机程序。
因此,换言之,本发明方法的实施例是一种计算机程序,该计算机程序具有,当该计算机程序在计算机上运行时,用于执行本文所述方法中的一种的程序码。
因此,本发明方法的又一实施例是一种数据载体(或数字存储介质或计算机可读取介质),它包括记录于其上的用于执行本文所述方法中的一种的计算机程序。该数据载体、数字存储介质或记录介质通常是具体有形的和/或非暂态的。
因此,本发明方法的又一实施例是表示用于执行本文所述方法中的一种的数据流或一系列信号。该数据流或一系列信号例如可以被配置成通过数据通讯连接,例如通过因特网传输。
又一实施例包括一种处理装置,例如计算机或可编程逻辑设备,其被配置为或适用于执行本文所述方法中的一种。
又一实施例包括一种计算机,其上安装有用于执行本文所述方法中的一种的计算机程序。
根据本发明的又一实施例,包括一种被配置为传输(例如,以电子方式或光学方式)用于执行本文所述方法中的一种的计算机程序给接收器的装置或***。该接收器例如可以是计算机、移动装置、存储装置等。该装置或***例如可包括一种用来传输计算机程序给接收器的文件服务器。
在某些实施例中,一种可编程逻辑设备(例如,现场可编程门阵列)可用来执行本文所述方法的功能中的部分或全部。在某些实施例中,现场可编程门阵列可与微处理器协作以执行本文所述方法中的一种。一般而言,该方法优选地通过任一种硬件装置来执行。
上述实施例仅供举例说明本发明的原理。须理解,本文所述的配置及细节的修改及变化对本领域的技术人员来说是显而易见的。因此,意图只受随附的专利权利要求的范围的限制而不受举例说明与解释本文实施例所呈现的特定细节的限制。
17.结论
总结言之,根据本发明的实施例包括下列方面中的一个或多个,其中这些方面可单独使用或组合使用。
a)上下文状态散列机制
根据本发明的一方面,散列表的状态被视为有效状态及群组边界。这允许显著缩小所需表的大小。
b)增量上下文更新
根据一方面,根据本发明的某些实施例包括用于更新上下文的计算有效的方式。某些实施例使用增量上下文更新,其中数值当前上下文值从数值先前上下文值导出。
c)上下文导出
根据本发明的一方面,使用两个频谱绝对值的和与截取运算相结合。属于一种频谱系数的增益向量量化(而与传统的形状增益向量量化相反)。其目的在于限制上下文顺序,同时从邻近传输最有意义的信息。
d)更新的表
根据本发明的一方面,在编码效率与计算复杂度之间具有特别好的折衷的优化表ari_hash_rn[742]、ari lookup_m[742]及ari_cf_m[64][17]适用。
应用于根据本发明的实施例的其他技术记载在专利申请案PCTEP2101/065725、PCT EP2010/065726、及PCT EP2010/065727中。此外,在根据本发明的某些实施例中,使用终止符号。此外,在某些实施例中,只有无符号值被考虑用于上下文。
但上文提到的国际专利申请公开了根据本发明的某些实施例仍在使用的方面。
例如,零区的识别用在本发明的某些实施例中。据此,设定所谓的“小值标记”(例如,数值当前上下文值c的位16)。
在某些实施例中,可使用区域相依性上下文计算。但在其他实施例中,可省略区域相依性上下文计算以保持复杂度及表大小相当小。
此外,使用散列函数的上下文散列是本发明的一个重要方面。上下文散列可基于前述未曾公开国际专利申请所述的二表构想。但上下文散列的特定适应性可用在某些实施例中来提高计算效率。虽说如此,在根据本发明的其他实施例中,可使用在上述国际专利申请案中所述的上下文散列。
此外,应注意的是,增量上下文散列相当简单且计算效率高。同样,上下文与在本发明的某些实施例中使用的数值符号的非相依性协助简化上下文,从而保持内存需求相当低。
在本发明的某些实施例中,使用利用两个频谱值的和与上下文限制的上下文导出。这两方面可组合。二者的目的都在于通过从邻近传输最有意义的信息而限制上下文顺序。
在某些实施例中,使用小值标记,其可能类似于一组多个零值的识别。
在根据本发明的某些实施例中,使用算术终止机制。该构想类似于JPEG中具有类似功能的符号“块结束”的使用。但在本发明的某些实施例中,符号(“ARITH_STOP”)并未明确地包括在熵编码器中。取而代之,使用先前可能未出现的已存在的符号组合,即“ESC+0”。换言之,音频解码器被配置为检测现存符号的组合,其通常并未用来表示数值,且将已存符号的组合的出现解译为算术终止条件。
根据本发明的实施例使用一种二表上下文散列机制。
进一步综上所述,根据本发明的某些实施例可包括下列五个主要方面中的一个或多个。
●改进的表;
●用于检测零区或邻近的小幅度区域的扩展上下文;
●上下文散列;
●上下文状态产生:上下文状态的增量更新;以及
●下文导出:包括幅度加法及限制的上下文值的特定量化。
进一步得出结论,根据本发明的实施例的一个方面在于增量上下文更新。根据本发明的实施例包括一种用于上下文更新的有效构想,其避免工作草案(例如,工作草案5)的大规模计算。更确切地说,在某些实施例中,使用简单的移位计算及逻辑计算。简单的上下文更新显著地协助上下文的计算。
在某些实施例中,上下文与数值(例如,解码频谱值)的符号独立无关。上下文与数值的符号的这组非相依性使上下文变量的计算复杂度减低。此构想以忽略上下文的符号不会造成编码效率的显著降级的发现为基础。
根据本发明的一方面,上下文使用两个频谱值的和导出。据此,用于上下文存储的内存需求显著减低。如此,在某些情况下,表示两个频谱值的和的上下文值的使用可视为是有利的。
同样,在某些情况下,上下文限制带来显著改良。在某些实施例中,除了使用两个频谱值之和导出上下文之外,上下文数组“q”的表项被限于“0xF”的最大值,而这又导致内存需求的限制。对上下文数组“q”的值加以限制带来若干优点。
在某些实施例中,使用所谓的“小值标记”。在获得上下文变量c(也称为数值当前上下文值)时,如果某些表项当前上下文数组“q[1][i-3]”至“q[1][i-1]”的值很小,则设定标记。据此,可以高效率执行上下文的计算。可获得特别有意义的上下文值(例如,数值当前上下文值)。
在某些实施例中,使用算术终止机制。当只余零值时,“ARITH_STOP”机制允许算术编码或解码的有效停止。据此,就复杂度而言,可以中等成本改良编码效率。
根据本发明的一方面,使用二表上下文散列机制。上下文的映射使用区间划分算法评估表“ari_hash_m”并结合随后的对表“ari_lookup_m”的查找表评估来执行。此算法比WD3算法更有效。
后文将讨论若干额外细节。
此处应注意的是,表“ari_hash_m[742]”及表“ari_lookup_m[742]”是两个不同的表。第一个表用来将单一上下文索引(例如,数值上下文值)映射到概率模型索引(例如,映射规则索引值),而第二个表用来将由“arith_hash_m[]”中的上下文索引所界限的一组连续上下文映射到单一概率模型。
进一步应注意的是,表“arith_cf_msb[64][16]”可用作表“ari_cf_m[64][17]”的替代物,即使维度略为不同亦如此。“ari_cf_m[][]”与“ari_cf_msb[][]”可指同一表,原因在于概率模型的第17个系数经常地为零。当计算用于存储表所需的空间时,偶尔并未将其列入考虑。
综上所述,根据本发明的某些实施例提供一种所提出的新颖无噪声编解码(编码或解码),其产生MPEG USAC工作草案(例如,MPEG USAC工作草案的WD5)的修正。所述修正可见于附图及相关描述。
作为结束语,应注意的是,变量、数组、函数等名称的前缀词“ari”及前缀词“arith”可互换使用。

Claims (18)

1.一种音频解码器(200;800),用于基于编码音频信息(210;810)提供解码音频信息(212;812),所述音频解码器包括:
算术解码器(230;820),用于基于频谱值的算术编码表示(222;821)提供多个解码频谱值(232;822);以及
频域至时域变换器(260;830),用于使用所述解码频谱值(232;822)提供时域音频表示(262;812),以获得所述解码音频信息(212;812);
其中,所述算术解码器(230;820)被配置为依据由数值当前上下文值(c)所描述的上下文状态(s)来选择映射规则(297;cum_freq[ ]),所述映射规则描述表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的编码形式的频谱值的所述算术编码表示的码值(value),到表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的解码形式的符号码(symbol)的映射;
其中,所述算术解码器(230;820)被配置为依据多个事先解码的频谱值来确定所述数值当前上下文值(c);
其中,所述算术解码器被配置为评估散列表(ari_hash_m[ ])以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界,
其中,所述算术解码器被配置为评估散列表,以得出ari_hash_m[i]>>8等于或大于c的散列表索引值i,同时,如果得出的散列表索引值i大于0,那么值ari_hash_m[i-1]>>8小于c;
其中,所述算术解码器被配置为选择由概率模型索引(pki)确定的映射规则,当ari_hash_m[i-1]>>8等于c时,所述概率模型索引等于ari_hash_m[i]&&0xFF,否则等于ari_lookup_m[i];
其中,所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出
表1,
表2,
表3,
表4;以及
其中,映射表ari_lookup_m的定义如以下表5中给出
表5;
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联;以及
其中,ari_hash_m[i]指明所述散列表ari_hash_m具有散列表索引值i的表项,
其中,“>>”表示右移。
2.根据权利要求1所述的音频解码器,其中,所述算术解码器被配置为使用以下算法来评估所述散列表:
return ari_lookup_m[i_max];其中c指明表示所述数值当前上下文值或其定标版本的变量;
其中i为描述当前散列表索引值的变量;
其中i_min为被初始化来指明所述散列表的第一表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量;
其中条件“c<(j>>8)”定义由变量c所描述的状态值小于由所述表项ari_hash_m[i]所描述的状态值;
其中“j&0xFF”描述由所述表项ari_hash_m[i]所描述的映射规则索引值;
其中i_max为被初始化来指明所述散列表的最后一个表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量;
其中条件“c>(j>>8)”定义由变量c所描述的状态值大于由所述表项ari_hash_m[i]所描述的状态值;
其中j为变量;
其中返回值表示概率模型的索引pki,且为映射规则索引值;
其中ari_hash_m指明所述散列表;
其中ari_hash_m[i]指明所述散列表ari_hash_m具有散列表索引值i的表项;
其中ari_lookup_m指明映射表;以及
其中ari_lookup_m[i_max]指明所述映射表ari_lookup_m具有映射表索引值i_max的表项。
3.根据权利要求1所述的音频解码器(200;800),
其中,所述算术解码器被配置为依据所述映射规则索引值pki来选择描述码值(value)到符号码(symbol)的映射的所述映射规则(297;cum_freq[ ])。
4.根据权利要求3所述的音频解码器(200;800),
其中,所述算术解码器被配置为使用映射规则索引值作为表索引值来选择描述码值(value)到符号码(symbol)的映射的所述映射规则(297;cum_freq[ ])。
5.根据权利要求1所述的音频解码器(200;800),其中所述算术解码器被配置为选择如下表6、表7、表8中给出的表ari_cf_m[64][17]的子表(ari_cf_m[pki][17])中的一个作为所选择的所述映射规则,
表6
表7
表8。
6.根据权利要求1所述的音频解码器,
其中,所述算术解码器被配置为基于数值先前上下文值使用以下算法来获得所述数值当前上下文值:
其中,所述算法接收作为输入值的表示数值先前上下文值的值或变量c,以及表示要在频谱值向量中解码的频谱值的2元组的索引的值或变量i;
其中值或变量N表示频域至时域变换器的重建窗口的窗口长度;并且
其中所述算法提供作为输出值的表示所述数值当前上下文值的更新值或变量c;
其中运算“c>>4”描述向值或变量c右边移4位;
其中q[0][i+l]指明与先前音频帧相关联且具有相关联的较大的频率索引i+1的上下文子区域值,所述较大的频率索引i+1比当前待解码的频谱值的2元组的当前频率索引大一;以及
其中q[l][i-l]指明与当前音频帧相关联且具有相关联的较小的频率索引i-1的上下文子区域值,所述较小的频率索引i-1比当前解码的频谱值的2元组的当前频率索引小一;
其中q[l][i-2]指明与当前音频帧相关联且具有相关联的较小的频率索引i-2的上下文子区域值,其中所述较小的频率索引i-2比当前待解码的频谱值的2元组的当前频率索引小二;
其中q[l][i-3]指明与当前音频帧相关联且具有相关联的较小的频率索引i-3的上下文子区域值,所述较小的频率索引i-3比当前待解码的频谱值的2元组的当前频率索引小三。
7.根据权利要求6所述的音频解码器,
其中,所述算术解码器被配置为使用当前解码的多个频谱值的组合来更新与当前音频帧相关联且具有相关联的当前解码的频谱值的2元组的当前频率索引的上下文子区域值q[l][i]。
8.根据权利要求6所述的音频解码器,
其中,所述算术解码器被配置为使用以下算法来更新与当前音频帧相关联且具有相关联的当前解码的频谱值的2元组的频率索引的上下文子区域值q[l][i]:
其中a和b为当前解码的2元组的解码无符号量化频谱系数;以及
其中i为当前解码的频谱值的2元组的频率索引。
9.根据权利要求1所述的音频解码器,
其中,所述算术解码器被配置为使用以下算术解码算法来提供表示解码频谱值的2元组的解码值m:
其中“cum_freq”为描述选择表或子表(ari_cf_m[pki][17])的开始的变量,所述选择表或子表描述码值(value)到符号码(symbol)的映射;
其中“cfl”为描述选择表或子表(ari_cf_m[pki][17])的长度的值或变量,所述选择表或子表描述码值(value)到符号码(symbol)的映射;
其中,如果待解码的符号为一系列符号的第一符号,那么辅助函数arith_first_symbol( )返回真,否则返回假;
其中辅助函数get_next_bit( )提供位流的下一个位元;
其中变量“low”为全局变量;
其中变量“high”为全局变量;
其中变量“value”为全局变量;
其中“range”为变量;
其中“cum”为变量;
其中“p”为指向选择表或子表(ari_cf_m[pki][17])的元素的变量,所述选择表或子表描述码值(value)到符号码(symbol)的映射;
其中“q”为指向选择表或子表(ari_cf_m[pki][17])的元素的变量,所述选择表或子表描述码值(value)到符号码(symbol)的映射;
其中“*q”为变量q指向的选择表或子表(ari_cf_m[pki][17])的表元素或子表元素,所述选择表或子表描述码值(value)到符号码(symbol)的映射;
其中变量“symbol”通过算术解码算法返回;以及
其中所述算法解码器被配置为由所述算术解码算法的返回值得到当前解码的频谱值的2元组的最高有效位平面值,
其中,“<<”表示左移。
10.一种音频解码器(200;800),用于基于编码音频信息(210;810)提供解码音频信息(212;812),所述音频解码器包括:
算术解码器(230;820),用于基于频谱值的算术编码表示(222;821)提供多个解码频谱值(232;822);以及
频域至时域变换器(260;830),用于使用所述解码频谱值(232;822)提供时域音频表示(262;812),以获得所述解码音频信息(212;812);
其中,所述算术解码器(232;820)被配置为依据由数值当前上下文值(c)所描述的上下文状态(s)来选择映射规则(297;cum_freq[ ]),所述映射规则描述表示一个或多个频谱值、或一个或多个所述频谱值的最高有效位平面的编码形式的频谱值的所述算术编码表示的码值(value),到表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的解码形式的符号码(symbol)的映射;
其中,所述算术解码器(230;820)被配置为依据多个事先解码的频谱值来确定所述数值当前上下文值(c);
其中,所述算术解码器被配置为评估散列表(ari_hash_m[ ])以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界,
其中,所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出,
表1
表2
表3
表4;
其中,所述算术解码器被配置为评估所述散列表(ari_hash_m),以确定所述数值当前上下文值是否与由散列表(ari_hash_m)的表项所描述的表上下文值相同或确定由散列表(ari_hash_m)的表项所描述的数值当前上下文值所在的区间,并依据评估结果导出描述所选映射规则的映射规则索引值(pki),
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联,
其中,“>>”表示右移。
11.根据权利要求10所述的音频解码器,
其中,所述算术解码器被配置为将所述数值当前上下文值(c)或所述数值当前上下文值的定标版本(s)与所述散列表(ari_hash_m[ ])的一系列数值排序的表项(j=ari_hash_m[i])或子表项做比较,以便以迭代方式获得散列表表项(ari_lookup_m[i_max])的散列表索引值(i_max),使得所述数值当前上下文值(c)位于由所获得的散列表索引值(i_max)指明的所获得的散列表表项(ari_hash_m[i_max])与相邻散列表表项(ari_hash_m[i_max-l])所限定的区间内部,以及
其中,所述算术解码器被配置为依据数值当前上下文值(c),或数值当前上下文值的定标版本(s),与散列表的当前表项或子表项(ari_hash_m[i])之间的比较结果确定散列表(ari_hash_m[ ])的一系列表项的下一个表项。
12.根据权利要求11所述的音频解码器,
其中,所述算术解码器被配置为,如果发现数值当前上下文值(c)或其定标版本(s)等于由当前散列表索引值(i)指明的散列表(j=ari_hash_m[i])的第一子表项(j>>8),则选择由当前散列表索引值(i)指明的散列表(ari_hash_m)的第二子表项(j&0xFF)所限定的映射规则。
13.根据权利要求11所述的音频解码器,
其中,所述算术解码器被配置为,如果未发现所述数值当前上下文值等于所述散列表(ari_hash_m)的子表项,则选择由映射表ari_lookup_m的表项或子表项(ari_lookup_m[i_max])所限定的映射规则,其中所述算术解码器被配置为依据以迭代方式获得的散列表索引值(i_max)选择映射表的表项或子表项。
14.根据权利要求10所述的音频解码器,其中,所述算术解码器被配置为,如果发现所述数值当前上下文值(c)等于由当前散列表索引值(i)指明的散列表的表项(ari_hash_m[i])所限定的值(j>>8),则选择性地提供由所述当前散列表索引值指明的散列表的表项所限定的映射规则索引值。
15.一种用于基于编码音频信息(210;810)提供解码音频信息(212;812)的方法,所述方法包括以下步骤:
基于频谱值的算术编码表示(222;821)提供多个解码频谱值(232;822);以及
使用所述解码频谱值(232;822)提供时域音频表示(262;812),以获得所述解码音频信息(212;812);
其中,提供多个解码频谱值包括依据由数值当前上下文值(c)所描述的上下文状态(s)来选择映射规则(297;cum_freq[ ]),所述映射规则描述表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的编码形式的频谱值的所述算术编码表示的码值(value),到表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的解码形式的符号码(symbol)的映射;
其中,依据多个事先解码的频谱值来确定所述数值当前上下文值(c);
其中,评估散列表(ari_hash_m[ ])以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界,
其中,使用以下算法评估所述散列表:
其中c指明表示所述数值当前上下文值或其定标版本的变量;
其中i为描述当前散列表索引值的变量;
其中i_min为被初始化来指明所述散列表的第一表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量;
其中条件“c<(j>>8)”定义由变量c所描述的状态值小于由表项ari_hash_m[i]所描述的状态值;
其中“j&0xFF”指明由所述表项ari_hash_m[i]所描述的映射规则索引值;
其中i_max为被初始化来指明所述散列表的最后一个表项的散列表索引值并依据c和(j>>8)之间的比较而选择性地更新的变量;
其中条件“c>(j>>8)”定义由变量c所描述的状态值大于由表项ari_hash_m[i]所描述的状态值;
其中j为变量;
其中返回值指明概率模型的索引pki,且为映射规则索引值;
其中ari_hash_m指明所述散列表;
其中ari_hash_m[i]指明所述散列表ari_hash_m具有散列表索引值i的表项;
其中ari_lookup_m指明映射表;
其中ari_lookup_m[i_max]指明所述映射表ari_lookup_m具有映射表索引值i_max的表项;
其中所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出,
表1
表2
表3
表4;以及
其中所述映射表ari_lookup_m的定义如以下表5中给出,
表5;以及
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联,
其中,“>>”表示右移。
16.一种用于基于编码音频信息(210;810)提供解码音频信息(212;812)的方法,所述方法包括以下步骤:
基于频谱值的算术编码表示(222;821)提供多个解码频谱值(232;822);以及
使用所述解码频谱值(232;822)提供时域音频表示(262;812),以获得所述解码音频信息(212;812);
其中,提供多个解码频谱值包括依据由数值当前上下文值(c)所描述的上下文状态(s)来选择映射规则(297;cum_freq[ ]),所述映射规则描述表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的编码形式的频谱值的所述算术编码表示的码值(value),到表示一个或多个所述频谱值、或一个或多个所述频谱值的最高有效位平面的解码形式的符号码(symbol)的映射;
其中,依据多个事先解码的频谱值来确定所述数值当前上下文值(c);
其中评估散列表(ari_hash_m[ ])以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界;
其中所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出,
表1
表2
表3
表4;
其中评估散列表(ari_hash_m),以确定所述数值当前上下文值是否与由散列表(ari_hash_m)的表项所描述的表上下文值相同或确定由散列表(ari_hash_m)的表项所描述的所述数值当前上下文值所在的区间,以及
其中依据所述评估的结果得到描述所选映射规则的映射规则索引值(pki);
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联。
17.一种用于基于输入音频信息(110;710)提供编码音频信息(112;712)的音频编码器(100;700),所述音频编码器包括:
能量压缩时域至频域变换器(130;720),用于基于所述输入音频信息的时域表示(110;710)提供频域音频表示(132;722),使得所述频域音频表示(132;722)包括一组频谱值;以及
算术编码器(170;730),被配置为使用可变长度码字(acod_m,acod_r)来编码一个或多个所述频谱值(a)或其预处理版本,其中所述算术编码器(170)被配置为将一个或多个所述频谱值(a)或者一个或多个所述频谱值(a)的最高有效位平面的值(m)映射到码值(acod_m),
其中所述算术编码器被配置为依据由数值当前上下文值(c)所描述的上下文状态(s)选择映射规则,所述映射规则描述一个或多个所述频谱值或一个或多个所述频谱值的最高有效位平面到所述码值的映射;以及
其中所述算术编码器被配置为依据多个事先编码的频谱值确定所述数值当前上下文值(c);以及
其中所述算术编码器被配置为评估散列表以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界;
其中所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出,
表1
表2
表3
表4;
其中所述算术编码器被配置为评估散列表(ari_hash_m),以确定所述数值当前上下文值是否与由散列表(ari_hash_m)的表项所描述的表上下文值相同或确定由散列表(ari_hash_m)的表项所描述的数值当前上下文值所在的区间,并依据所述评估的结果导出描述所选择的映射规则的映射规则索引值(pki);
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联。
18.一种用于基于输入音频信息(110;710)提供编码音频信息(112;712)的方法,所述方法包括以下步骤:
使用能量压缩时域至频域变换基于所述输入音频信息的时域表示(110;710)提供频域音频表示(132;722),使得所述频域音频表示(132;722)包括一组频谱值;以及
使用可变长度码字(acod_m,acod_r)来算术编码一个或多个所述频谱值(a)或其预处理版本,其中将一个或多个所述频谱值(a)或者一个或多个所述频谱值(a)的最高有效位平面的值(m)映射到码值(acod_m),
其中依据由数值当前上下文值(c)所描述的上下文状态(s)选择描述一个或多个所述频谱值或一个或多个所述频谱值的最高有效位平面到码值的映射的映射规则;以及
其中依据多个事先编码的频谱值确定所述数值当前上下文值(c);以及
其中评估散列表以选择所述映射规则,所述散列表的表项限定数值上下文值中的有效状态值及非有效状态值的区间边界;
其中所述散列表ari_hash_m的定义如以下表1、表2、表3、表4中给出,
表1
表2
表3
表4;以及
其中评估所述散列表(ari_hash_m),以确定数值当前上下文值是否与由散列表(ari_hash_m)的表项所描述的表上下文值相同,或确定由散列表(ari_hash_m)的表项所描述的所述数值当前上下文值所在的区间,并且其中依据所述评估的结果导出描述所选择的映射规则的映射规则索引值(pki);
其中,映射规则索引值与为有效状态值的数值上下文值个别相关联。
CN201180045309.7A 2010-07-20 2011-07-20 音频编码器、音频解码器、编码音频信息的方法以及解码音频信息的方法 Active CN103119646B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36593610P 2010-07-20 2010-07-20
US61/365,936 2010-07-20
PCT/EP2011/062478 WO2012016839A1 (en) 2010-07-20 2011-07-20 Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an optimized hash table

Publications (2)

Publication Number Publication Date
CN103119646A CN103119646A (zh) 2013-05-22
CN103119646B true CN103119646B (zh) 2016-09-07

Family

ID=44509264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180045309.7A Active CN103119646B (zh) 2010-07-20 2011-07-20 音频编码器、音频解码器、编码音频信息的方法以及解码音频信息的方法

Country Status (16)

Country Link
US (1) US8914296B2 (zh)
EP (3) EP2596494B1 (zh)
JP (1) JP5600805B2 (zh)
KR (1) KR101573829B1 (zh)
CN (1) CN103119646B (zh)
AU (1) AU2011287747B2 (zh)
CA (1) CA2806000C (zh)
ES (2) ES2937066T3 (zh)
FI (1) FI3751564T3 (zh)
MX (1) MX338171B (zh)
MY (1) MY179769A (zh)
PL (2) PL2596494T3 (zh)
PT (2) PT3751564T (zh)
RU (1) RU2568381C2 (zh)
SG (1) SG187164A1 (zh)
WO (1) WO2012016839A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI451403B (zh) * 2009-10-20 2014-09-01 Fraunhofer Ges Forschung 音訊編碼器、音訊解碼器、用以將音訊資訊編碼之方法、用以將音訊資訊解碼之方法及使用區域從屬算術編碼對映規則之電腦程式
KR101647576B1 (ko) * 2012-05-29 2016-08-10 노키아 테크놀로지스 오와이 스테레오 오디오 신호 인코더
CN103035249B (zh) * 2012-11-14 2015-04-08 北京理工大学 一种基于时频平面上下文的音频算术编码方法
TR201900472T4 (tr) * 2014-04-24 2019-02-21 Nippon Telegraph & Telephone Frekans alanı parametre dizisi oluşturma metodu, kodlama metodu, kod çözme metodu, frekans alanı parametre dizisi oluşturma aparatı, kodlama aparatı, kod çözme aparatı, programı ve kayıt ortamı.
US9640376B1 (en) 2014-06-16 2017-05-02 Protein Metrics Inc. Interactive analysis of mass spectrometry data
US9385751B2 (en) * 2014-10-07 2016-07-05 Protein Metrics Inc. Enhanced data compression for sparse multidimensional ordered series data
US20160227235A1 (en) * 2015-02-02 2016-08-04 Yaniv Frishman Wireless bandwidth reduction in an encoder
US10354421B2 (en) 2015-03-10 2019-07-16 Protein Metrics Inc. Apparatuses and methods for annotated peptide mapping
CN105070292B (zh) * 2015-07-10 2018-11-16 珠海市杰理科技股份有限公司 音频文件数据重排序的方法和***
RU2611022C1 (ru) * 2016-01-28 2017-02-17 федеральное государственное казенное военное образовательное учреждение высшего образования "Военная академия связи имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Способ совместного арифметического и помехоустойчивого кодирования (варианты)
FR3048808A1 (fr) * 2016-03-10 2017-09-15 Orange Codage et decodage optimise d'informations de spatialisation pour le codage et le decodage parametrique d'un signal audio multicanal
US10319573B2 (en) 2017-01-26 2019-06-11 Protein Metrics Inc. Methods and apparatuses for determining the intact mass of large molecules from mass spectrographic data
GB2559200A (en) 2017-01-31 2018-08-01 Nokia Technologies Oy Stereo audio signal encoder
US10546736B2 (en) 2017-08-01 2020-01-28 Protein Metrics Inc. Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US11626274B2 (en) 2017-08-01 2023-04-11 Protein Metrics, Llc Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US10510521B2 (en) 2017-09-29 2019-12-17 Protein Metrics Inc. Interactive analysis of mass spectrometry data
EP3483886A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Selecting pitch lag
EP3483884A1 (en) * 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Signal filtering
WO2019091576A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits
EP3483879A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analysis/synthesis windowing function for modulated lapped transformation
WO2019091573A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters
EP3483878A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio decoder supporting a set of different loss concealment tools
EP3483880A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Temporal noise shaping
EP3483882A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Controlling bandwidth in encoders and/or decoders
EP3483883A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio coding and decoding with selective postfiltering
US11044495B1 (en) 2018-02-13 2021-06-22 Cyborg Inc. Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation
GB2574873A (en) * 2018-06-21 2019-12-25 Nokia Technologies Oy Determination of spatial audio parameter encoding and associated decoding
US11640901B2 (en) 2018-09-05 2023-05-02 Protein Metrics, Llc Methods and apparatuses for deconvolution of mass spectrometry data
GB2579568B (en) * 2018-12-03 2022-04-27 Advanced Risc Mach Ltd Encoding data arrays
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order
US11106437B2 (en) * 2019-01-14 2021-08-31 Microsoft Technology Licensing, Llc Lookup table optimization for programming languages that target synchronous digital circuits
US11113176B2 (en) 2019-01-14 2021-09-07 Microsoft Technology Licensing, Llc Generating a debugging network for a synchronous digital circuit during compilation of program source code
US11275568B2 (en) 2019-01-14 2022-03-15 Microsoft Technology Licensing, Llc Generating a synchronous digital circuit from a source code construct defining a function call
US11144286B2 (en) 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
US10491240B1 (en) * 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation
US11308036B2 (en) * 2019-04-11 2022-04-19 EMC IP Holding Company LLC Selection of digest hash function for different data sets
US11346844B2 (en) 2019-04-26 2022-05-31 Protein Metrics Inc. Intact mass reconstruction from peptide level data and facilitated comparison with experimental intact observation
RU2739936C1 (ru) * 2019-11-20 2020-12-29 Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) Способ внесения цифровых меток в цифровое изображение и устройство для осуществления способа
WO2022047368A1 (en) 2020-08-31 2022-03-03 Protein Metrics Inc. Data compression for multidimensional time series data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1681213A (zh) * 2004-03-10 2005-10-12 三星电子株式会社 无损音频编码/解码方法和装置
CN1684371A (zh) * 2004-02-27 2005-10-19 三星电子株式会社 无损音频解码/编码方法和装置
CN101162584A (zh) * 2006-09-18 2008-04-16 三星电子株式会社 使用带宽扩展技术对音频信号编码和解码的方法和设备
CN101601087A (zh) * 2006-11-16 2009-12-09 弗劳恩霍夫应用研究促进协会 用于编码和解码的设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269338B1 (en) * 1996-10-10 2001-07-31 U.S. Philips Corporation Data compression and expansion of an audio signal
AU2003221378B9 (en) * 2002-03-27 2009-01-08 Panasonic Intellectual Property Corporation Of America Variable length encoding method, storage medium, and variable length encoding device.
US6915256B2 (en) * 2003-02-07 2005-07-05 Motorola, Inc. Pitch quantization for distributed speech recognition
EP2077551B1 (en) * 2008-01-04 2011-03-02 Dolby Sweden AB Audio encoder and decoder
KR101247891B1 (ko) * 2008-04-28 2013-03-26 고리츠다이가쿠호징 오사카후리츠다이가쿠 물체 인식용 화상 데이터베이스의 작성 방법, 처리 장치 및 처리용 프로그램
PL2346029T3 (pl) * 2008-07-11 2013-11-29 Fraunhofer Ges Forschung Koder sygnału audio, sposób kodowania sygnału audio i odpowiadający mu program komputerowy
EP2144230A1 (en) 2008-07-11 2010-01-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Low bitrate audio encoding/decoding scheme having cascaded switches
EP3937167B1 (en) * 2008-07-11 2023-05-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder and audio decoder
MX2011003824A (es) * 2008-10-08 2011-05-02 Fraunhofer Ges Forschung Esquema de codificacion/decodificacion de audio conmutado de resolucion multiple.
KR20100136890A (ko) * 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
TWI451403B (zh) * 2009-10-20 2014-09-01 Fraunhofer Ges Forschung 音訊編碼器、音訊解碼器、用以將音訊資訊編碼之方法、用以將音訊資訊解碼之方法及使用區域從屬算術編碼對映規則之電腦程式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1684371A (zh) * 2004-02-27 2005-10-19 三星电子株式会社 无损音频解码/编码方法和装置
CN1681213A (zh) * 2004-03-10 2005-10-12 三星电子株式会社 无损音频编码/解码方法和装置
CN101162584A (zh) * 2006-09-18 2008-04-16 三星电子株式会社 使用带宽扩展技术对音频信号编码和解码的方法和设备
CN101601087A (zh) * 2006-11-16 2009-12-09 弗劳恩霍夫应用研究促进协会 用于编码和解码的设备

Also Published As

Publication number Publication date
EP3751564B1 (en) 2022-10-26
PT2596494T (pt) 2020-11-05
WO2012016839A1 (en) 2012-02-09
RU2568381C2 (ru) 2015-11-20
EP2596494A1 (en) 2013-05-29
US20130226594A1 (en) 2013-08-29
JP2013538364A (ja) 2013-10-10
PL2596494T3 (pl) 2021-01-25
KR20130054993A (ko) 2013-05-27
CA2806000C (en) 2016-07-05
MX338171B (es) 2016-04-06
CN103119646A (zh) 2013-05-22
US8914296B2 (en) 2014-12-16
SG187164A1 (en) 2013-02-28
EP3751564A1 (en) 2020-12-16
EP2596494B1 (en) 2020-08-05
PL3751564T3 (pl) 2023-03-06
EP4131258A1 (en) 2023-02-08
FI3751564T3 (fi) 2023-01-31
ES2828429T3 (es) 2021-05-26
AU2011287747B2 (en) 2015-02-05
PT3751564T (pt) 2023-01-06
CA2806000A1 (en) 2012-02-09
AU2011287747A1 (en) 2013-02-28
MX2013000749A (es) 2013-05-17
ES2937066T3 (es) 2023-03-23
RU2013107375A (ru) 2014-08-27
KR101573829B1 (ko) 2015-12-02
MY179769A (en) 2020-11-13
JP5600805B2 (ja) 2014-10-01

Similar Documents

Publication Publication Date Title
CN103119646B (zh) 音频编码器、音频解码器、编码音频信息的方法以及解码音频信息的方法
CN102859583B (zh) 利用对数值先前脉络值的数字表示之修改的音频编码器、音频解码器、编码音频信息的方法及解码音频信息的方法
KR101419148B1 (ko) 반복 구간 사이즈 감소를 이용한 오디오 인코더, 오디오 디코더, 오디오 정보 인코딩 방법, 오디오 정보 디코딩 방법, 및 컴퓨터 프로그램
RU2574848C2 (ru) Аудио кодер, аудио декодер, способ кодирования аудио информации, способ декодирования аудио информации и компьютерная программа, использующая хэш-таблицу, которая описывает значимые значения состояния и границы интервала

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Munich, Germany

Applicant after: Fraunhofer Application and Research Promotion Association

Address before: Munich, Germany

Applicant before: Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant