JP5006426B2 - Entropy coding to adapt coding between level mode and run length / level mode - Google Patents

Entropy coding to adapt coding between level mode and run length / level mode Download PDF

Info

Publication number
JP5006426B2
JP5006426B2 JP2010086985A JP2010086985A JP5006426B2 JP 5006426 B2 JP5006426 B2 JP 5006426B2 JP 2010086985 A JP2010086985 A JP 2010086985A JP 2010086985 A JP2010086985 A JP 2010086985A JP 5006426 B2 JP5006426 B2 JP 5006426B2
Authority
JP
Japan
Prior art keywords
code
vector
encoder
code table
escape
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.)
Expired - Lifetime
Application number
JP2010086985A
Other languages
Japanese (ja)
Other versions
JP2010160518A (en
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010160518A publication Critical patent/JP2010160518A/en
Application granted granted Critical
Publication of JP5006426B2 publication Critical patent/JP5006426B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、オーディオ・データの適応エントロピー符号化に関する。例えば、オーディオ符号器は、量子化されたオーディオ・データの直接レベルのハフマン符号化と、量子化されたオーディオ・データのラン・レングスおよびレベルの算術符号化の間で切替えを行う。   The present invention relates to adaptive entropy coding of audio data. For example, the audio encoder switches between direct level Huffman coding of quantized audio data and run length and level arithmetic coding of quantized audio data.

コンパクト・ディスク、デジタル無線電話網、およびインターネットを介するオーディオの配信の導入とともに、デジタル・オーディオが一般的になっている。技術者は、様々なテクニック(technique;技術、方法)を使用して、デジタル・オーディオの品質を維持しながらも、デジタル・オーディオを効率的に処理している。これらのテクニックを理解することは、オーディオ情報がコンピュータにおいてどのように表わされ、処理されるかを理解することに役立つ。   With the introduction of compact discs, digital wireless telephone networks, and the distribution of audio over the Internet, digital audio has become commonplace. Engineers use various techniques to efficiently process digital audio while maintaining digital audio quality. Understanding these techniques helps to understand how audio information is represented and processed in a computer.

I.コンピュータにおけるオーディオ情報の表現
コンピュータは、オーディオ情報を、オーディオ情報を表わす複数の数の連続として処理する。例えば、一つの数が、オーディオ・サンプルを表わすことが可能であり、それは、特定の時点における振幅値(すなわち、ラウドネス)である。サンプル深度(sample depth)、サンプリング・レート、およびチャネル・モードを含むいくつかのファクタ(factor)が、オーディオ情報の品質に影響を与える。
I. Representation of audio information in a computer A computer processes audio information as a series of numbers representing audio information. For example, a single number can represent an audio sample, which is the amplitude value (ie, loudness) at a particular point in time. Several factors affect the quality of the audio information, including sample depth, sampling rate, and channel mode.

サンプル深度(または精度)は、サンプルを表わすのに使用される数の範囲を示す。サンプルに関して使用可能であるその値が多いほど、品質が高くなる。というのは、その数が、振幅のより微妙な変動をキャプチャすることができるからである。例えば、8ビットのサンプルは、256の使用可能な値を有するが、16ビットのサンプルは、65,536の使用可能な値を有する。   Sample depth (or accuracy) indicates the range of numbers used to represent a sample. The more that value available for a sample, the higher the quality. This is because the number can capture more subtle variations in amplitude. For example, an 8-bit sample has 256 usable values, while a 16-bit sample has 65,536 usable values.

また、サンプリング・レート(通常、毎秒のサンプル数で測定される)も、品質に影響を与える。サンプリング・レートが高いほど、品質が高くなる。というのは、サウンドについてのより多くの周波数を表わすことができるからである。いくつかの一般的なサンプリング・レートは、毎秒8,000サンプル、毎秒11,025サンプル、毎秒22,050サンプル、毎秒32,000サンプル、毎秒44,100サンプル、毎秒48,000サンプル、および毎秒96,000サンプルである。   The sampling rate (usually measured in samples per second) also affects quality. The higher the sampling rate, the higher the quality. This is because it can represent more frequencies for the sound. Some common sampling rates are: 8,000 samples per second, 11,025 samples per second, 22,050 samples per second, 32,000 samples per second, 44,100 samples per second, 48,000 samples per second, and 96 per second 1,000 samples.

表1は、異なる品質レベルを有するいくつかのオーディオ形式、ならびに対応する生のビットレート・コストを示している。   Table 1 shows several audio formats with different quality levels, as well as the corresponding raw bit rate costs.

Figure 0005006426
Figure 0005006426

表1が示すとおり、CDオーディオなどの高品質オーディオ情報の費用は、高いビット・レートである。高品質オーディオ情報は、大量のコンピュータ・ストレージおよび伝送容量を消費する(使い尽くす)。ただし、企業および消費者は、高品質のオーディオ・コンテンツを作成し、配信し、再生するのに、ますますコンピュータに頼っている。   As Table 1 shows, the cost of high quality audio information such as CD audio is a high bit rate. High quality audio information consumes large amounts of computer storage and transmission capacity. However, businesses and consumers increasingly rely on computers to create, distribute, and play high-quality audio content.

II.オーディオの圧縮および圧縮解除
多くのコンピュータおよびコンピュータ網は、生のデジタル・オーディオを処理するリソースを欠いている。圧縮(符号化またはコーディングとも呼ばれる)は、情報をより低いビット・レートの形態に変換することによって、オーディオ情報の記憶および伝送の費用を低減する。圧縮は、ロスレス(lossless:損失がない)(品質が低下しない)、またはロッシー(lossy:損失がある)(品質が低下するが、ロスレス圧縮を超えたビット・レート低減が、より著しい)とすることが可能である。圧縮解除(復号化とも呼ばれる)が、圧縮された形態から元の情報の再構成されたバージョンを取り出す。
II. Audio compression and decompression Many computers and computer networks lack the resources to process raw digital audio. Compression (also called encoding or coding) reduces the cost of storing and transmitting audio information by converting the information to a lower bit rate form. Compression should be lossless (lossless) (not loss of quality) or lossy (lossy) (quality is reduced, but bit rate reduction over lossless compression is more significant) It is possible. Decompression (also called decryption) retrieves a reconstructed version of the original information from the compressed form.

一般に、オーディオ圧縮の目的は、可能な限り少量のビットで最大限の信号品質を提供するようにオーディオ信号をデジタル式に表わすことである。従来のオーディオ符号器/復号器[「コーデック」]システムは、サブバンド/変換符号化、量子化、速度制御、および可変長符号化を使用して圧縮を実現する。量子化およびその他のロッシー圧縮テクニックにより、聴き取られる可能性がある雑音がオーディオ信号に導入される。雑音の可聴性は、存在する雑音の量、また聴取者が知覚する雑音の量に依存する。第1のファクタは、主に客観的品質に関するが、第2のファクタは、サウンドの人間による知覚に依存する。したがって、従来のオーディオ符号器は、ビット・レートをさらに低下させるために、可変長符号化を使用して量子化されたデータを、損失なく、圧縮していた。   In general, the purpose of audio compression is to digitally represent an audio signal so as to provide maximum signal quality with as few bits as possible. Conventional audio encoder / decoder [“codec”] systems use subband / transform coding, quantization, rate control, and variable length coding to achieve compression. Quantization and other lossy compression techniques introduce noise that can be heard into the audio signal. The audibility of noise depends on the amount of noise present and the amount of noise perceived by the listener. The first factor is primarily related to objective quality, while the second factor depends on the human perception of the sound. Thus, conventional audio encoders have compressed data that has been quantized using variable length coding without loss in order to further reduce the bit rate.

A.オーディオ・データのロッシー圧縮および圧縮解除
従来、オーディオ符号器は、様々な異なるロッシーの圧縮テクニック技術を使用する。このロッシーの圧縮テクニックは、通常、周波数変換、知覚モデル化/重み付け、および量子化を必要とする。対応する圧縮解除には、逆量子化、逆重み付け、および逆周波数変換を必要とする。
A. Lossy compression and decompression of audio data Traditionally, audio encoders use a variety of different lossy compression technique techniques. This lossy compression technique typically requires frequency conversion, perceptual modeling / weighting, and quantization. Corresponding decompression requires inverse quantization, inverse weighting, and inverse frequency transform.

周波数変換テクニックは、知覚的に重要な情報を知覚的に重要でない情報から分けることをより容易にする形態にデータを変換する。次に、それほど重要でない情報は、より損失の多い圧縮を受けるようにし、他方、より重要な情報は、保存されるようにして、所与のビット・レートに関して最良の知覚される品質を提供するようにすることができる。周波数変換器が、通常、オーディオ・サンプルを受け取り、ときとして周波数係数またはスペクトル係数と呼ばれる周波数領域のデータに、それを変換する。   Frequency conversion techniques convert data into a form that makes it easier to separate perceptually important information from information that is not perceptually important. Second, less important information is subject to more lossy compression, while more important information is preserved to provide the best perceived quality for a given bit rate. Can be. A frequency converter typically receives audio samples and converts them into frequency domain data, sometimes called frequency coefficients or spectral coefficients.

会話や音楽などの自然のサウンドにおけるほとんどのエネルギーは、低周波数範囲に集中している。このことは、統計上、より高い周波数範囲におけるエネルギーの欠如を反映して、より高い周波数範囲がゼロまたはゼロに近い周波数係数をより多く有することになる、ことを意味する。   Most energy in natural sounds such as conversation and music is concentrated in the low frequency range. This means that, statistically, the higher frequency range will have more or zero frequency coefficients, reflecting the lack of energy in the higher frequency range.

知覚モデル化は、所与のビット・レートで再構成されたオーディオ信号の知覚される品質を向上させるように、人間聴覚システムのモデルに従ってオーディオ・データを処理することに意味する。例えば、聴覚モデルは、通常、人間の聴力の範囲、および臨界帯域(critical bands)を考慮する。知覚モデル化の結果を使用して、符号器は、所与のビット・レートに対して雑音の可聴性を最小限に抑える目的にもかかわらず、オーディオ・データ中に雑音(例えば、量子化雑音)を成形する。符号器は、ときとして、ビット・レートを低下させるために、雑音(例えば、量子化雑音)を導入しなければならないが、重み付けにより、符号器は、雑音がそれほど聞き取れない帯域により多くの雑音を入れ、雑音がよく聞き取れる帯域にはより少ない雑音しか入れないことが可能になる。   Perceptual modeling means processing audio data according to a model of the human auditory system so as to improve the perceived quality of the reconstructed audio signal at a given bit rate. For example, an auditory model typically considers the range of human hearing and critical bands. Using the results of perceptual modeling, the encoder can detect noise (eg, quantization noise) in audio data despite the goal of minimizing noise audibility for a given bit rate. ). Encoders sometimes have to introduce noise (eg, quantization noise) to reduce bit rate, but weighting allows the encoder to add more noise to bands where noise is not so audible. It is possible to put less noise in a band where noise can be heard well.

量子化は、入力値それぞれの範囲それぞれを、複数の単一の値にマップして不可逆性の情報の損失つまり量子化雑音を導入するが、符号器が、出力の品質とビット・レートを調整することも可能にする。ときとして、符号器は、ビット・レートおよび/または品質を調整するために量子化を調整する速度コントローラと連携して、量子化を達成する。適応量子化および非適応量子化、スカラー量子化およびベクトル量子化、一様な量子化および一様でない量子化を含め、様々な種類の量子化が存在する。知覚重み付け(perceptual weighting)は、ある形態の一様でない量子化と考えることができる。   Quantization maps each range of each input value to multiple single values to introduce irreversible information loss or quantization noise, but the encoder adjusts the output quality and bit rate It is also possible to do. Sometimes, the encoder achieves quantization in conjunction with a speed controller that adjusts the quantization to adjust the bit rate and / or quality. There are various types of quantization, including adaptive and non-adaptive quantization, scalar quantization and vector quantization, uniform quantization and non-uniform quantization. Perceptual weighting can be thought of as a form of non-uniform quantization.

逆量子化および逆重み付けにより、重みが付けられて量子化された周波数係数データが、元の周波数係数データの近似値に再構成される。次に、逆周波数変換器が、再構成された周波数係数データを再構成された時間領域オーディオ・サンプルに変換する。   By inverse quantization and inverse weighting, the weighted and quantized frequency coefficient data is reconstructed to an approximate value of the original frequency coefficient data. An inverse frequency transformer then converts the reconstructed frequency coefficient data into reconstructed time domain audio samples.

B.オーディオ・データのロスレス圧縮および圧縮解除
従来、オーディオ符号器は、様々な異なるロスレス圧縮テクニックの1つまたは複数を使用する。一般に、ロスレス圧縮テクニックには、ラン・レングス符号化、ハフマン符号化、および算術符号化が含まれる。対応する圧縮解除テクニックには、ラン・レングス復号化、ハフマン復号化、および算術復号化が含まれる。
B. Lossless compression and decompression of audio data Traditionally, audio encoders use one or more of a variety of different lossless compression techniques. In general, lossless compression techniques include run length coding, Huffman coding, and arithmetic coding. Corresponding decompression techniques include run length decoding, Huffman decoding, and arithmetic decoding.

ラン・レングス符号化は、カメラ・ビデオ、テキスト、およびその他のタイプのコンテンツに対して使用される単純な周知の圧縮テクニックである。一般に、ラン・レングス符号化は、同一の値を有する連続するシンボルのシーケンス(すなわち、ラン(run))をそのシーケンスの値および長さで置き換える。ラン・レングス復号化では、連続するシンボルのシーケンスが、ランの値およびランの長さ(run value and run length)から再構成される。ラン・レングス符号化/復号化の多数の変種が開発されている。ラン・レングス符号化/復号化、およびラン・レングス符号化/復号化の変種のいくつかに関するさらなる情報については、例えば、非特許文献1、非特許文献2、Mairs他に発行された特許文献1、Gill他に発行された特許文献2、およびChaddhaに発行された特許文献3を参照されたい。   Run-length encoding is a simple well-known compression technique used for camera video, text, and other types of content. In general, run length coding replaces a sequence of consecutive symbols having the same value (ie, a run) with the value and length of the sequence. In run length decoding, a sequence of consecutive symbols is reconstructed from run values and run lengths. A number of variants of run length encoding / decoding have been developed. For more information on run-length encoding / decoding and some of the variants of run-length encoding / decoding, see, for example, Non-Patent Document 1, Non-Patent Document 2, Mayrs et al. See, U.S. Pat. No. 6,037,028 issued to Gill et al., And U.S. Pat.

ラン・レベル符号化は、同一の値を有する連続するシンボルのランが、ランの長さで置き換えられることで、ラン・レングス符号化と同様である。ランの値は、データにおける顕著な値(例えば、0)であり、ランは、異なる値(例えば、ゼロでない値)を有する1つまたは複数のレベルによって隔てられる。   Run level coding is similar to run length coding in that runs of consecutive symbols having the same value are replaced with the run length. Run values are significant values in the data (eg, 0), and runs are separated by one or more levels having different values (eg, non-zero values).

ラン・レングス符号化(例えば、ランの値およびランの長さ)またはラン・レベル符号化の結果をハフマン符号化して、さらにビット・レートを低下させることが可能である。これが行われた場合、ハフマン符号化されたデータは、ラン・レングス復号化に先立ってハフマン復号化される。   Run length coding (eg, run value and run length) or run level coding results can be Huffman coded to further reduce the bit rate. When this is done, the Huffman encoded data is Huffman decoded prior to run length decoding.

ハフマン符号化は、カメラ・ビデオ、テキスト、およびその他のタイプのコンテンツに対して使用される別の周知の圧縮テクニックである。一般に、ハフマン符号テーブルは、可変長のハフマン符号を一意的なシンボル値(または、値の一意的な組合せ)に関連付ける。より短い符号に、より確率の高いシンボル値が割り当てられ、より長い符号に、それほど確率の高くないシンボル値が割り当てられる。この確率は、いくつかの種類のコンテンツの典型的な例に対して計算される。あるいは、この確率は、符号化されたばかりのデータ、または符号化されるデータに関して計算され、その場合、ハフマン符号は、一意的なシンボル値に関する確率の変化に適応する。静的なハフマン符号化と比べて、適応ハフマン符号化は、通常、データに関するより正確な確率を組み込むことによって圧縮されたデータのビット・レートを低下させるが、ハフマン符号を指定する追加の情報も伝送される必要がある可能性がある。   Huffman coding is another well-known compression technique used for camera video, text, and other types of content. In general, the Huffman code table associates variable length Huffman codes with unique symbol values (or unique combinations of values). Shorter codes are assigned more probable symbol values, and longer codes are assigned less probable symbol values. This probability is calculated for typical examples of several types of content. Alternatively, this probability is calculated for data that has just been encoded, or data that is to be encoded, in which case the Huffman code adapts to the change in probability for a unique symbol value. Compared to static Huffman coding, adaptive Huffman coding usually reduces the bit rate of the compressed data by incorporating a more accurate probability for the data, but additional information specifying the Huffman code is also present. May need to be transmitted.

シンボルを符号化するのに、ハフマン符号器は、シンボル値を、ハフマン符号テーブルの中でシンボル値に関連つけられた可変長のハフマン符号に置き換える。復号化するのに、ハフマン復号器は、ハフマン符号を、ハフマン符号に関連つけられたシンボル値に置き換える。   To encode a symbol, the Huffman encoder replaces the symbol value with a variable length Huffman code associated with the symbol value in the Huffman code table. To decode, the Huffman decoder replaces the Huffman code with a symbol value associated with the Huffman code.

スカラー・ハフマン符号化では、ハフマン符号テーブルは、1つの値に、例えば、量子化されたデータ値の直接レベルに、単一のハフマン符号を関連付ける。ベクトル・ハフマン符号化では、ハフマン符号テーブルは、値の組合せに、例えば、特定の順序の量子化されたデータ値の一群の直接レベルに単一のハフマン符号を関連付ける。ベクトル・ハフマン符号化は、スカラー・ハフマン符号化より(例えば、符号器が、2進ハフマン符号における確率を分数として利用することを可能にすることにより)良好なビット・レート低下をもたらす可能性がある。他方、ベクトル・ハフマン符号化用のコードブックは、単一の符号が大きいグループのシンボルを表わす場合、またはシンボルが大きい範囲の可能な値を有する(可能な組合せの数が多いことにより)場合、極端に大きい可能性がある。例えば、アルファベット・サイズが256(シンボル当たり0ないし255の値として)であり、ベクトル当たりのシンボルの数が4である場合、可能な組合せの数は、2564=4,294,967,296である。これは、コードブックを計算し、ハフマン符号を見つけ出す際に、メモリおよび処理資源(processing resources)を消費し(使い尽くし)、コードブックを伝送する際に伝送リソースを消費する(使い尽くす)。 In scalar Huffman coding, the Huffman code table associates a single Huffman code with a single value, eg, a direct level of quantized data values. In vector Huffman coding, the Huffman code table associates a single Huffman code with a combination of values, eg, a group of direct levels of quantized data values in a particular order. Vector Huffman coding can lead to better bit rate reduction than scalar Huffman coding (eg, by allowing the encoder to use the probability in binary Huffman codes as a fraction). is there. On the other hand, the codebook for vector Huffman coding is when a single code represents a large group of symbols, or when a symbol has a large range of possible values (by a large number of possible combinations): It can be extremely large. For example, if the alphabet size is 256 (as a value between 0 and 255 per symbol) and the number of symbols per vector is 4, the number of possible combinations is 256 4 = 4,294,967,296. is there. This consumes memory and processing resources when the codebook is calculated and finds the Huffman code (uses up), and consumes transmission resources when the codebook is transmitted (uses up).

ハフマン符号化/復号化の多数の変種が開発されている。ハフマン符号化/復号化、およびハフマン符号化/復号化の変種のいくつかに関するさらなる情報については、例えば、非特許文献1、非特許文献2を参照されたい。   A number of variants of Huffman encoding / decoding have been developed. See, for example, Non-Patent Document 1 and Non-Patent Document 2, for more information on Huffman encoding / decoding and some of the variants of Huffman encoding / decoding.

Chen他に発行された特許文献4は、オーディオ・データのマルチ・レベル・ラン・レングス符号化を説明している。周波数変換は、一続きの周波数係数値をもたらす。顕著な値がゼロである周波数スペクトルの部分に関して、マルチ・レベル・ラン・レングス符号器は、ゼロ値のランを隣接するゼロでない値に統計的に相関させ、可変長の符号語を割り当てる。符号器は、ゼロ値を有するスペクトル係数の後にゼロでない係数が続く入力ランを受け取る確率に関して生成された、特殊化されたコードブックを使用する。対応する復号器は、可変長の符号語を、ゼロ値の係数と隣接するゼロでない値の係数のランに関連付ける。   U.S. Patent No. 6,053,096 issued to Chen et al. Describes multi-level run length encoding of audio data. The frequency conversion results in a series of frequency coefficient values. For those portions of the frequency spectrum where the salient value is zero, the multi-level run length encoder statistically correlates zero value runs to adjacent non-zero values and assigns variable length codewords. The encoder uses a specialized codebook that is generated with respect to the probability of receiving an input run in which spectral coefficients having zero values are followed by non-zero coefficients. A corresponding decoder associates a variable length codeword with a run of zero-valued coefficients and adjacent non-zero-valued coefficients.

Chen他に発行された特許文献5は、オーディオ・データの可変−可変長符号化を説明している。符号器は、周波数係数値の可変サイズのグループに可変長の符号を割り当てる。   U.S. Patent No. 6,053,059 issued to Chen et al. Describes variable-variable length encoding of audio data. The encoder assigns variable length codes to variable size groups of frequency coefficient values.

Chen他に発行された特許文献6は、周波数領域オーディオ符号化に関するエントロピー符号モード切替えを説明している。周波数領域オーディオ符号器は、入力ストリームの特性に従って異なるエントロピー符号化モードのなかから選択を行う。詳細には、入力ストリームは、符号化されるべき典型的な入力または実際の入力の統計解析から導出された統計基準に従って複数の周波数範囲に区分される。各範囲には、その範囲のタイプのデータを符号化するように最適化されたエントロピー符号器が割り当てられる。符号化中および復号化中、モード選択器は、的確な方法を個々の周波数範囲に適用する。区分境界は、前もって決められ、復号器が、どの復号化方法が符号化されたデータに適用されるかを暗黙に知ることを可能にしている。あるいは、適応構成が使用されて、その構成において、出力ストリーム中で境界にフラグが設定されて、後続のデータに関する符号化モードの変更が示されるようにすることが可能である。例えば、区分境界は、主にゼロの量子化された周波数係数を、主にゼロでない量子化された係数から分離し、次に、そのようなデータに合わせて最適化された符号器を適用する。
Chenの特許に関するさらなる詳細については、特許自体を参照されたい。
U.S. Patent No. 6,053,096 issued to Chen et al. Describes entropy code mode switching for frequency domain audio coding. The frequency domain audio encoder selects between different entropy coding modes according to the characteristics of the input stream. Specifically, the input stream is partitioned into frequency ranges according to statistical criteria derived from a typical input to be encoded or a statistical analysis of the actual input. Each range is assigned an entropy encoder that is optimized to encode the type of data in that range. During encoding and decoding, the mode selector applies the exact method to the individual frequency ranges. Partition boundaries are predetermined and allow the decoder to implicitly know which decoding method is applied to the encoded data. Alternatively, an adaptive configuration can be used in which a flag is set at the boundary in the output stream to indicate a change in encoding mode for subsequent data. For example, a partition boundary separates primarily zero quantized frequency coefficients from non-zero quantized coefficients, and then applies an encoder optimized for such data .
For further details regarding the Chen patent, see the patent itself.

算術符号化は、カメラ・ビデオ、およびその他のタイプのコンテンツに対して使用される別の周知の圧縮テクニックである。いくつかの個々の入力シンボルの間で統計上の相関が存在するケースで、算術符号化は、ときとして、所与の入力シンボルを符号化する最適なビット数が、分数のビット数である適用例において使用される。算術符号化は、一般に、入力シーケンスを所与の範囲内の単一の数として表わすことに関わる。通常、その数は、0と1の中間の分数である。入力シーケンス中のシンボルは、0と1の間の空間の部分を示す範囲に関連付けられる。この範囲は、特定のシンボルが入力シーケンスの中で生起する確率に基づいて計算される。入力シーケンスを表わすのに使用される分数は、その範囲に関連して構成される。したがって、入力シンボルの確率分布は、算術符号化スキームにおいて重要である。   Arithmetic coding is another well-known compression technique used for camera video and other types of content. In cases where there is a statistical correlation between several individual input symbols, arithmetic coding is sometimes applied where the optimal number of bits to encode a given input symbol is a fractional number of bits. Used in examples. Arithmetic coding generally involves representing an input sequence as a single number within a given range. Usually, the number is a fraction between 0 and 1. Symbols in the input sequence are associated with a range indicating a portion of space between 0 and 1. This range is calculated based on the probability that a particular symbol occurs in the input sequence. The fraction used to represent the input sequence is constructed in relation to that range. Therefore, the probability distribution of the input symbols is important in the arithmetic coding scheme.

コンテキスト・ベースの算術符号化では、入力シンボルの異なる確率分布が、異なるコンテキストに関連付けられる。入力シーケンスを符号化するのに使用される確率分布は、コンテキストが変化する際に変化する。コンテキストは、入力シーケンスの中で生起する特定の入力シンボルの確率に影響を与えると予期される異なるファクタを測定することによって計算することができる。算術符号化/復号化、および算術符号化の変種のいくつかに関するさらなる情報については、非特許文献3を参照されたい。   In context-based arithmetic coding, different probability distributions of input symbols are associated with different contexts. The probability distribution used to encode the input sequence changes as the context changes. The context can be calculated by measuring different factors that are expected to affect the probability of a particular input symbol occurring in the input sequence. See Non-Patent Document 3 for more information on arithmetic coding / decoding and some of the variants of arithmetic coding.

マイクロソフト・コーポレーションのWindows(登録商標)Media Audio[「WMA」]符号器および復号器のバージョンを含む様々なコーデック・システムおよびコーデック標準が、ロスレス圧縮および圧縮解除を使用している。他のコーデック・システムは、Motion Picture Experts Group、Audio Layer 3[「MP3」]標準、Motion Picture Experts Group 2、Advanced Audio Coding[「AAC」]標準、およびドルビー(Dolby)AC3によって提供されるか、または規定されている。さらなる情報に関しては、それぞれの標準または技術刊行物を参照されたい。   Various codec systems and codec standards, including versions of Microsoft Corporation's Windows Media [“WMA”] encoder and decoder, use lossless compression and decompression. Other codec systems include Motion Picture Experts Group, Audio Layer 3 [“MP3”] standard, Motion Picture Experts Group 2, Advanced Audio Coding [“AAC”] standard, and Dolby (provided by Dolby, AC3) Or is prescribed. For further information, please refer to the respective standards or technical publications.

米国特許第6,304,928号明細書US Pat. No. 6,304,928 米国特許第5,883,633号明細書US Pat. No. 5,883,633 米国特許第6,233,017号明細書US Pat. No. 6,233,017 米国特許第6,233,162号明細書US Pat. No. 6,233,162 米国特許第6,377,930号明細書US Pat. No. 6,377,930 米国特許第6,300,888号明細書US Pat. No. 6,300,888

Bell et al., Text Compression, Prentice Hall PTR, pages 105-107, 1990Bell et al., Text Compression, Prentice Hall PTR, pages 105-107, 1990 Gibson et al., Digital Compression for Multimedia, Morgan Kaufmann, pages 17-62, 1998Gibson et al., Digital Compression for Multimedia, Morgan Kaufmann, pages 17-62, 1998 Nelson, The Data Compression Book, "Huffman One Better: Arithmetic Coding," Chapter 5, pp. 123-65(1992)Nelson, The Data Compression Book, "Huffman One Better: Arithmetic Coding," Chapter 5, pp. 123-65 (1992)

オーディオ・データのロスレス圧縮についての従来の技術およびシステムの利点がどのようなものであれ、従来のテクニックおよびシステムは、本発明の利点を有さない。   Whatever the advantages of conventional techniques and systems for lossless compression of audio data, conventional techniques and systems do not have the advantages of the present invention.

要約すると、詳細な説明は、オーディオ・データの適応エントロピー符号化および適応エントロピー復号化のための様々なテクニックおよびツールを対象としている。この様々なテクニックおよびツールは、組合せで、または独立して使用することができる。   In summary, the detailed description is directed to various techniques and tools for adaptive entropy coding and adaptive entropy decoding of audio data. The various techniques and tools can be used in combination or independently.

一態様では、符号器は、オーディオ・データ・シーケンスの第1の部分を直接可変次元ベクトル・ハフマン符号化モード(variable-dimension vector Huffman encoding)で符号化し、切替えポイントでラン・レベル符号化モードに切り換わり、第2の部分をラン・レベル符号化モード(例えば、コンテキスト・ベースの算術符号化、ハフマン符号化、ベクトル・ハフマン符号化)で符号化する。例えば、第1の部分は、主にゼロでない量子化されたオーディオ係数から成り、第2の部分は、主にゼロ値の量子化されたオーディオ係数から成る。切替えポイントは、予め決定されていること(例えば、その切替えポイントを使用してシーケンスを符号化する効率を試験することにより)、または適応して(adaptively)決定することができる。符号器は、符号化されたビットストリームで、切替えポイントを示すフラグを送ることができる。   In one aspect, the encoder encodes the first portion of the audio data sequence directly in variable-dimension vector Huffman encoding mode and switches to run level encoding mode at the switch point. Switching, the second part is encoded in a run level encoding mode (eg, context-based arithmetic encoding, Huffman encoding, vector Huffman encoding). For example, the first part consists mainly of non-zero quantized audio coefficients, and the second part consists mainly of zero-valued quantized audio coefficients. The switching point can be predetermined (eg, by testing the efficiency of encoding a sequence using the switching point) or can be determined adaptively. The encoder can send a flag indicating the switching point in the encoded bitstream.

代替の態様では、復号器は、符号化されたシーケンスの第1の部分を直接可変次元ベクトル・ハフマン復号化モードで復号化し、切替えポイントでラン・レベル復号化モードに切り換わり、第2の部分をラン・レベル復号化モード(例えば、コンテキスト・ベースの算術復号化、ハフマン復号化、ベクトル・ハフマン復号化)で復号化する。切替えを行うのに先立ち、復号器は、切替えポイントを示すフラグを受け取ることができる。   In an alternative aspect, the decoder decodes the first part of the encoded sequence directly in the variable dimension vector Huffman decoding mode, switches to the run level decoding mode at the switching point, and the second part Are decoded in a run level decoding mode (eg, context-based arithmetic decoding, Huffman decoding, vector Huffman decoding). Prior to performing the switch, the decoder can receive a flag indicating the switch point.

別の態様では、符号器または復号器が、シーケンスの第1の部分を直接コンテキスト・ベースの算術モードで符号化または復号化し、切替えポイントでラン・レベル・モードに切り換わり、第2の部分をラン・レベル・モードで符号化または復号化する。ラン・レベル・モードは、コンテキスト・ベースの算術モードであることが可能である。   In another aspect, an encoder or decoder encodes or decodes a first portion of a sequence directly in a context-based arithmetic mode, switches to run level mode at a switch point, and Encode or decode in run level mode. The run level mode can be a context-based arithmetic mode.

別の態様では、符号器が、第1のベクトルにおけるシンボルの数に基づいて1組の複数の符号テーブルから第1の符号テーブルを選択し、第1のベクトルを第1の符号テーブルからの符号で表わす。第1の符号テーブルは、そのシンボル数を有する可能性の高いベクトルを表わすための符号、およびそれほど可能性の高くないベクトルを表わすエスケープ符号を含むことが可能である。また、符号器は、異なるシンボル数を有する第2のベクトルも符号化する。例えば、第1のベクトルは、第2のベクトルより多い数のシンボルを有し、第2のベクトルより高い生起確率を有する。第2のベクトルを符号化するため、符号器は、第2のベクトルにおけるシンボルの数に基づいて第2の異なる符号テーブルを選択することができる。第2のベクトルが1つのシンボルを有する場合、符号器は、テーブルのない符号化テクニックを使用して第2のベクトルを表わすことができる。   In another aspect, an encoder selects a first code table from a set of multiple code tables based on the number of symbols in the first vector, and the first vector is a code from the first code table. It expresses by. The first code table may include codes to represent vectors that are likely to have that number of symbols and escape codes that represent vectors that are less likely. The encoder also encodes second vectors having different numbers of symbols. For example, the first vector has a greater number of symbols than the second vector and has a higher probability of occurrence than the second vector. To encode the second vector, the encoder can select a second different code table based on the number of symbols in the second vector. If the second vector has one symbol, the encoder can represent the second vector using a tableless encoding technique.

別の態様では、復号器が、第1の符号を受け取り、第1の符号テーブルの中で第1の符号をルックアップすることによって第1のベクトルを復号化する。第1の符号がエスケープ符号である場合、復号器は、第1のテーブルの中に存在しない第2の符号を受け取って復号化する。第1の符号がエスケープ符号ではない場合、復号器は、第1のテーブルにおいて第1のベクトルに関するシンボル(複数)をルックアップし、そのシンボル(複数)を復号化されたデータストリームの中に含める。第1のベクトルにおけるシンボルの数は、第1の符号がエスケープ符号であるかどうかについての基準である。復号器は、第2の符号を第2のテーブルの中でルックアップすることによって第2の符号を復号化することができる。第2の符号がエスケープ符号である場合、復号器は、第2のテーブルの中に存在しない第1のベクトルを表わす第3の符号を受け取り、復号化する。第2の符号がエスケープ符号でない場合、復号器は、第2のテーブルの中で第1のベクトルに関するシンボルをルックアップし、そのシンボルを復号化されたデータストリームの中に含める。   In another aspect, a decoder receives a first code and decodes the first vector by looking up the first code in a first code table. If the first code is an escape code, the decoder receives and decodes a second code that does not exist in the first table. If the first code is not an escape code, the decoder looks up the symbol (s) for the first vector in the first table and includes the symbol (s) in the decoded data stream. . The number of symbols in the first vector is a criterion as to whether the first code is an escape code. The decoder can decode the second code by looking up the second code in the second table. If the second code is an escape code, the decoder receives and decodes a third code representing the first vector that is not present in the second table. If the second code is not an escape code, the decoder looks up the symbol for the first vector in the second table and includes the symbol in the decoded data stream.

別の態様では、符号器が、テーブルのない符号化テクニックを使用してオーディオ・データ係数を符号化する。係数が第1の値範囲(value range)内にある場合、符号器は、その係数を1ビット符号の後に8ビットの符号化された値が続く符号で符号化する。その他の値範囲の場合、符号器は、その係数を2ビット符号の後に16ビットの符号化された値が続く符号、3ビット符号の後に24ビットの符号化された値が続く符号、または異なる3ビット符号の後に31ビットの符号化された値が続く符号で符号化する。   In another aspect, the encoder encodes the audio data coefficients using a tableless encoding technique. If the coefficient is within the first value range, the encoder encodes the coefficient with a code that is a 1-bit code followed by an 8-bit encoded value. For other value ranges, the encoder may code its coefficients with a 2-bit code followed by a 16-bit encoded value, a 3-bit code followed by a 24-bit encoded value, or different Encoding is performed using a code in which a 3-bit code is followed by a 31-bit encoded value.

別の態様では、ベクトル・ハフマン符号化スキームにおいて、符号器が、一群のハフマン符号からベクトルを符号化するために使用するハフマン符号を決め、そのハフマン符号を使用してベクトルを符号化する。符号の決定は、ベクトルにおけるオーディオ・データのシンボルの値の合計に基づく。ハフマン符号がエスケープ符号である場合、ハフマン符号は、n次元ベクトルが、少なくとも1つの異なる符号テーブルを使用してx個のn/x次元のベクトルとして符号化されるべきことを示す。符号器は、その合計をベクトルにおけるシンボルの数に依存するしきい値と比較することができる。例えば、しきい値は、4つのシンボルに対して6であり、2つのシンボルに対して16であり、あるいは1つのシンボルに対して100である。   In another aspect, in a vector Huffman coding scheme, an encoder determines a Huffman code to use to encode a vector from a group of Huffman codes and uses the Huffman code to encode the vector. The determination of the sign is based on the sum of the values of the audio data symbols in the vector. If the Huffman code is an escape code, the Huffman code indicates that the n-dimensional vector should be encoded as x n / x-dimensional vectors using at least one different code table. The encoder can compare the sum to a threshold that depends on the number of symbols in the vector. For example, the threshold is 6 for 4 symbols, 16 for 2 symbols, or 100 for 1 symbol.

別の態様では、符号器が、オーディオ・データのシーケンスを受け取り、コンテキスト・ベースの算術符号化を使用してそのシーケンスの少なくとも一部を符号化する。復号器が、オーディオ・データ係数の符号化されたシーケンスを受け取り、コンテキスト・ベースの算術復号化を使用して符号化されたシーケンスの少なくとも一部を復号化する。   In another aspect, an encoder receives a sequence of audio data and encodes at least a portion of the sequence using context-based arithmetic coding. A decoder receives the encoded sequence of audio data coefficients and decodes at least a portion of the encoded sequence using context-based arithmetic decoding.

別の態様では、符号器が、コンテキスト・ベースの算術符号化を使用してオーディオ・データ係数を符号化する。1つまたは複数のコンテキストが、係数の確率を表わす関連する確率分布を有する。符号器は、現在の係数の表現のモードに少なくともある程度、基づいて現在の係数に関するコンテキストを、適応して(adaptively)特定し、そのコンテキストを使用して現在の係数を符号化する。例えば、表現のモードが直接である場合、符号器は、前の係数(例えば、現在の係数の直前の2つの係数)の直接レベルに少なくともある程度、基づいてコンテキストを、適応して(adaptively)特定する。表現のモードがラン・レベルである場合、符号器は、オーディオ入力シーケンス中のゼロ値係数の前のラン・レングス、ゼロ値係数のパーセンテージに少なくともある程度、基づいてコンテキストを、適応して(adaptively)特定する。表現のモードがラン・レベルであり、符号器が、ゼロ値係数の現在のラン・レングス、ゼロ値係数の前のラン・レングス、および前の係数の直接レベルに少なくともある程度、基づいてコンテキストを、適応して(adaptively)特定する。   In another aspect, the encoder encodes audio data coefficients using context-based arithmetic coding. One or more contexts have an associated probability distribution that represents the probability of the coefficients. The encoder adaptively identifies the context for the current coefficient based at least in part on the mode of representation of the current coefficient and uses the context to encode the current coefficient. For example, if the mode of expression is direct, the encoder will adaptively identify the context based at least in part on the direct level of the previous coefficient (eg, the two coefficients immediately preceding the current coefficient). To do. If the mode of representation is run level, the encoder adaptively adapts the context based at least in part on the run length, the percentage of the zero value coefficient, before the zero value coefficient in the audio input sequence. Identify. The mode of representation is run level, and the encoder determines a context based at least in part on the current run length of the zero value coefficient, the previous run length of the zero value coefficient, and the direct level of the previous coefficient, Adaptively identify.

別の態様では、符号器または復号器が、直接符号化または直接復号化を使用し、顕著な値(predominant value)(例えば、0)に等しい連続する係数のカウントを維持してオーディオ・データの第1の部分を符号化、または復号化する。カウントがしきい値を超えた場合、符号器または復号器は、ラン・レベル符号化またはラン・レベル復号化を使用してオーディオ・データの第2の部分を符号化、または復号化する。しきい値は、静的であること、または適応して(adaptively)決定されることが可能である。しきい値は、係数のブロックのサイズに依存することが可能である。例えば、しきい値は、256の係数のブロックに対して4であり、あるいは512の係数のブロックに対して8であることが可能である。   In another aspect, an encoder or decoder uses direct encoding or direct decoding to maintain a count of consecutive coefficients equal to a predominant value (eg, 0) to maintain audio data The first part is encoded or decoded. If the count exceeds the threshold, the encoder or decoder encodes or decodes the second portion of the audio data using run level encoding or run level decoding. The threshold can be static or can be determined adaptively. The threshold can depend on the size of the block of coefficients. For example, the threshold can be 4 for a block of 256 coefficients or 8 for a block of 512 coefficients.

別の態様では、符号器または復号器が、第1の符号テーブルを使用してシーケンスの第1の部分を符号化、または復号化し、第2の符号テーブルを使用してシーケンスの第2の部分を符号化、または復号化する。第1のテーブルは、顕著な値(例えば、0)に等しい連続する係数のより長いランの可能性が高い場合に使用され、第2のテーブルは、等しい値の連続する係数のより短いランの可能性が高い場合に使用される。使用されるテーブルは、シグナル・ビットによって示されることが可能である。   In another aspect, an encoder or decoder encodes or decodes a first portion of a sequence using a first code table and uses a second code table to generate a second portion of the sequence. Is encoded or decoded. The first table is used when there is a high probability of longer runs of consecutive coefficients equal to a significant value (eg, 0), and the second table is used for shorter runs of equal coefficients of consecutive coefficients. Used when likelihood is high. The table used can be indicated by a signal bit.

適応エントロピー符号化テクニックおよび適応エントロピー復号化テクニックの特徴および利点は、添付の図面を参照して行われる様々な実施形態の以下の詳細な説明から明白となる。   The features and advantages of the adaptive entropy encoding technique and adaptive entropy decoding technique will become apparent from the following detailed description of various embodiments, which proceeds with reference to the accompanying drawings.

説明する実施形態を実装することが可能な適切なコンピューティング環境を示すブロック図である。1 is a block diagram illustrating a suitable computing environment in which the described embodiments can be implemented. 説明する実施形態を実装することが可能なオーディオ符号器を示すブロック図である。FIG. 2 is a block diagram illustrating an audio encoder that can implement the described embodiments. 説明する実施形態を実装することが可能なオーディオ復号器を示すブロック図である。FIG. 6 is a block diagram illustrating an audio decoder capable of implementing the described embodiments. 一般化されたマルチ・モード・オーディオ符号化テクニックを示す流れ図である。2 is a flow diagram illustrating a generalized multi-mode audio encoding technique. 適応切替えポイント計算を伴うマルチ・モード・オーディオ符号化テクニックを示す流れ図である。2 is a flow diagram illustrating a multi-mode audio encoding technique with adaptive switch point calculation. 一般化されたマルチ・モード・オーディオ復号化テクニックを示す流れ図である。3 is a flow diagram illustrating a generalized multi-mode audio decoding technique. 一般化された可変次元ベクトル・ハフマン符号化テクニックを示す流れ図である。2 is a flow diagram illustrating a generalized variable dimensional vector Huffman coding technique. 可変次元ベクトル・ハフマン符号化を使用してオーディオ・データを符号化するための詳細なテクニックを示す流れ図である。2 is a flow diagram illustrating a detailed technique for encoding audio data using variable dimension vector Huffman coding. 符号器がラン・レングスおよび信号レベルの符号化に変更するための切替えポイントを、適応して決定する態様の、直接信号レベルの可変次元ベクトル・ハフマン符号化のためのテクニックを示す流れ図である。FIG. 6 is a flow diagram illustrating a technique for direct signal level variable dimensional vector Huffman coding in an manner that adaptively determines a switch point for the encoder to change to run length and signal level coding. 一般化された可変次元ベクトル・ハフマン復号化テクニックを示す流れ図である。Figure 3 is a flow diagram illustrating a generalized variable dimensional vector Huffman decoding technique. 可変次元ベクトル・ハフマン符号化を使用して符号化されたベクトルを復号化するための詳細なテクニックを示す流れ図である。Figure 3 is a flow diagram illustrating a detailed technique for decoding a vector encoded using variable dimensional vector Huffman encoding. 復号器がラン・レングスおよび信号レベルの復号化に変更するための切替えポイントを、適応して決定する態様の、直接信号レベルの可変次元ベクトル・ハフマン復号化のためのテクニックを示す流れ図である。FIG. 6 is a flow diagram illustrating a technique for direct signal level variable dimensional vector Huffman decoding in an adaptive manner of determining switch points for a decoder to change to run length and signal level decoding. コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。FIG. 6 is a diagram illustrating a probability distribution for non-run length levels in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。FIG. 6 is a diagram illustrating a probability distribution for non-run length levels in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。FIG. 6 is a diagram illustrating a probability distribution for non-run length levels in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける非ラン・レングスレベルに関する確率分布を示す図である。FIG. 6 is a diagram illustrating a probability distribution for non-run length levels in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおける異なるラン・レングスに関する確率分布を示す図である。FIG. 6 shows probability distributions for different run lengths in a context-based arithmetic coding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. コンテキスト・ベースの算術符号化スキームにおけるラン・レングス符号化されたレベルに関する確率分布を示す図である。FIG. 6 illustrates a probability distribution for run-length encoded levels in a context-based arithmetic encoding scheme. ラン・レングスおよびラン・レベルの符号化に変更するための切替えポイントが符号器によって適応して決められる態様の、係数の直接コンテキスト・ベースの算術符号化のためのテクニックを示す流れ図である。FIG. 6 is a flow diagram illustrating a technique for direct context-based arithmetic coding of coefficients in a manner in which switching points for changing to run length and run level coding are adaptively determined by an encoder. 復号器がラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを、適応して決定する態様の、コンテキスト・ベースの算術復号化のテクニックを示す流れ図である。FIG. 6 is a flow diagram illustrating a context-based arithmetic decoding technique in an aspect that adaptively determines a switch point for the decoder to switch to run length and signal level decoding.

説明される実施形態では、オーディオ符号器は、いくつかの適応エントロピー符号化テクニックを実行する。ビット・レートを低減し、かつ/または品質を向上させる適応エントロピー符号化テクニックは、符号器のパフォーマンスを改良する。復号器は、対応するエントロピー復号化テクニックを行う。これらのテクニックは、単一の統合されたシステムの一環としてところどころで説明しているが、これらのテクニックは、別々に、場合により、他のテクニックと組み合わせて適用することも可能である。   In the described embodiment, the audio encoder performs several adaptive entropy encoding techniques. Adaptive entropy coding techniques that reduce bit rate and / or improve quality improve the performance of the encoder. The decoder performs a corresponding entropy decoding technique. Although these techniques are described in several places as part of a single integrated system, these techniques can also be applied separately and possibly in combination with other techniques.

オーディオ符号器およびオーディオ復号器は、離散オーディオ信号を処理する。説明される実施形態では、オーディオ信号は、周波数変換されたオーディオ信号からの量子化された係数である。代替として、符号器および復号器は、別の種類の離散オーディオ信号、あるいはビデオまたは別の種類の情報を表わす離散信号を処理する。   The audio encoder and audio decoder process discrete audio signals. In the described embodiment, the audio signal is a quantized coefficient from the frequency converted audio signal. Alternatively, the encoder and decoder process another type of discrete audio signal or a discrete signal representing video or another type of information.

一部の実施形態では、オーディオ符号器は、直接信号レベル(direct signal levels)の符号化と、ラン・レングスおよび信号レベルの符号化の間で、適応して切替えを行う。符号器は、スカラー・ハフマン符号化、ベクトル・ハフマン符号化、算術符号化、または別のテクニックを使用して直接信号レベルを符号化する。ラン・レングス/レベル符号化(ラン・レベル符号化とも呼ばれる)では、各ラン・レングスが、ゼロ、またはより多くのゼロのランを表わし、各信号レベルが、ゼロでない値を表わす。ラン・レベル・イベント空間において、符号器は、ハフマン符号化、算術符号化、または別のテクニックを使用してそのイベント空間内でラン・レングスおよびレベルを符号化する。復号器は、復号化中に、対応する適応切替えを行う。適応切替えは、ゼロ値レベルのしきい値数に達した際に行われる。代替として、符号器および復号器は、さらなる基準または他の基準に基づいて切替えを行う。   In some embodiments, the audio encoder adaptively switches between direct signal levels encoding and run length and signal level encoding. The encoder encodes the signal level directly using scalar Huffman coding, vector Huffman coding, arithmetic coding, or another technique. In run length / level coding (also called run level coding), each run length represents zero or more zero runs and each signal level represents a non-zero value. In the run level event space, the encoder encodes run lengths and levels in the event space using Huffman coding, arithmetic coding, or another technique. The decoder performs corresponding adaptive switching during decoding. Adaptive switching is performed when the number of thresholds at the zero value level is reached. Alternatively, the encoder and decoder switch based on further criteria or other criteria.

一部の実施形態では、オーディオ符号器は、可変次元ベクトル・ハフマン符号化を使用する。可変次元ベクトル・ハフマン符号化は、符号器が、シンボルのより確率の高い組合せをより大きい次元のベクトルを使用して表わし、シンボルのそれほど確率の高くない組合せをより小さい次元のベクトルまたはスカラーを使用して表わす、ハフマン符号を使用することができるようにする。復号器は、対応する可変次元のハフマン復号化を行う。   In some embodiments, the audio encoder uses variable dimensional vector Huffman coding. Variable dimensional vector Huffman coding is where the encoder represents a more probable combination of symbols using a larger dimensional vector and a less probable combination of symbols using a smaller dimensional vector or scalar It is possible to use the Huffman code represented by The decoder performs corresponding variable dimension Huffman decoding.

一部の実施形態では、オーディオ符号器は、コンテキスト・ベースの算術符号化を使用する。符号器によって使用されるコンテキストは、オーディオ・データの個々の種類についての効率的な圧縮を可能にする。復号器は、対応するコンテキスト・ベースの算術復号化を行う。   In some embodiments, the audio encoder uses context-based arithmetic coding. The context used by the encoder allows efficient compression for individual types of audio data. The decoder performs corresponding context-based arithmetic decoding.

説明する実施形態では、オーディオ符号器およびオーディオ復号器は、様々なテクニックを実行する。これらのテクニックに関する動作は、通常、提示のため特定の順序で説明するが、この説明の仕方は、動作の順序のいくらかの並べ替えも包含するものと理解されたい。さらに簡明にするため、流れ図は、通常、特定のテクニックを他のテクニックと併せて使用することができる様々なやり方は示していない。   In the described embodiment, the audio encoder and audio decoder perform various techniques. The operations relating to these techniques are usually described in a specific order for presentation, but it should be understood that this description encompasses some permutation of the order of operations. For further simplicity, flowcharts typically do not show the various ways in which a particular technique can be used in conjunction with other techniques.

I.コンピューティング環境
図1は、説明する実施形態を実装することが可能な適切なコンピューティング環境(100)の一般化された例を示している。コンピューティング環境(100)は、本発明の使用または機能の範囲に関して何ら限定を示唆するものではない。というのは、本発明は、多種多様な汎用または特殊目的のコンピューティング環境において実装できるからである。
I. Computing Environment FIG. 1 illustrates a generalized example of a suitable computing environment (100) in which the described embodiments can be implemented. The computing environment (100) is not intended to suggest any limitation as to the scope of use or functionality of the invention. This is because the present invention can be implemented in a wide variety of general purpose or special purpose computing environments.

図1を参照すると、コンピューティング環境(100)は、少なくとも1つの処理ユニット(110)およびメモリ(120)を含む。図1で、この最も基本的な構成(130)が、破線内に含まれている。処理ユニット(110)は、コンピュータ実行可能命令を実行し、現実のプロセッサまたは仮想プロセッサであることが可能である。多重処理システムでは、複数の処理ユニットが、コンピュータ実行可能命令を実行して処理能力を高める。メモリ(120)は、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュ・メモリ等)、または揮発性メモリと不揮発性メモリの何らかの組合せであることが可能である。メモリ(120)は、オーディオ・データの適応エントロピー符号化/復号化を行うオーディオ符号器/復号器を実装するソフトウェア(180)を記憶する。   With reference to FIG. 1, the computing environment (100) includes at least one processing unit (110) and memory (120). In FIG. 1, this most basic configuration (130) is contained within a dashed line. The processing unit (110) executes computer-executable instructions and can be a real or virtual processor. In a multiprocessing system, multiple processing units execute computer-executable instructions to increase processing power. The memory (120) may be volatile memory (eg, registers, cache, RAM), non-volatile memory (eg, ROM, EEPROM, flash memory, etc.), or some combination of volatile and non-volatile memory. Is possible. The memory (120) stores software (180) that implements an audio encoder / decoder that performs adaptive entropy encoding / decoding of audio data.

コンピューティング環境は、さらなる特徴を有することが可能である。例えば、コンピューティング環境(100)は、ストレージ(140)と、1つまたは複数の入力デバイス(150)と、1つまたは複数の出力デバイス(160)と、1つまたは複数の通信接続(170)とを含む。バス、コントローラ、またはネットワークなどの相互接続機構(図示せず)が、コンピューティング環境(100)の構成要素を互いに接続する。通常、オペレーティング・システム・ソフトウェア(図示せず)は、コンピューティング環境(100)において実行されている他のソフトウェアのための動作環境を提供し、コンピューティング環境(100)の構成要素の活動を協調させる。   A computing environment may have additional features. For example, the computing environment (100) includes a storage (140), one or more input devices (150), one or more output devices (160), and one or more communication connections (170). Including. An interconnection mechanism (not shown) such as a bus, controller, or network connects the components of the computing environment (100) to each other. Typically, operating system software (not shown) provides an operating environment for other software running in the computing environment (100) and coordinates the activities of the components of the computing environment (100). Let

ストレージ(140)は、取外し可能、または取外し不可能であることが可能であり、磁気ディスク、磁気テープまたは磁気カセット、CD−ROM、CD−RW、DVD、または情報を記憶するのに使用することができ、コンピューティング環境(100)内でアクセスすることができる任意の他の媒体が含まれる。ストレージ(140)は、オーディオ・データの適応エントロピー符号化/復号化を行うオーディオ符号器/復号器を実装するソフトウェア(180)のための命令を記憶する。   The storage (140) can be removable or non-removable and is used to store magnetic disks, magnetic tapes or cassettes, CD-ROMs, CD-RWs, DVDs, or information. And any other medium that can be accessed within the computing environment (100). The storage (140) stores instructions for software (180) implementing an audio encoder / decoder that performs adaptive entropy encoding / decoding of audio data.

入力デバイス(150)は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力デバイスであること、走査デバイス、ネットワーク・アダプタ、またはコンピューティング環境(100)に入力を提供する別のデバイスであることが可能である。オーディオの場合、入力デバイス(150)は、サウンド・カードであること、またはアナログ形態またはデジタル形態でオーディオ入力を受け入れる同様のデバイスであること、またはオーディオ・サンプルをコンピューティング環境に提供するCD−ROM読取り装置であることが可能である。出力デバイス(160)は、ディスプレイ、プリンタ、スピーカ、CD/DVD書込み装置、ネットワーク・アダプタ、またはコンピューティング環境(100)から出力を提供する別のデバイスであることが可能である。   The input device (150) is a touch input device such as a keyboard, mouse, pen, or trackball, is a scanning device, a network adapter, or another device that provides input to the computing environment (100) Is possible. For audio, the input device (150) is a sound card, or a similar device that accepts audio input in analog or digital form, or a CD-ROM that provides audio samples to the computing environment. It can be a reader. The output device (160) can be a display, printer, speaker, CD / DVD writer, network adapter, or another device that provides output from the computing environment (100).

通信接続(170)は、通信媒体を介して別のコンピューティング・エンティティに対する通信を可能にする。通信媒体は、コンピュータ実行可能命令、圧縮されたオーディオ情報、または変調されたデータ信号中にその他のデータなどの情報を伝える。変調されたデータ信号とは、信号の中に情報を符号化するように特性の1つまたは複数が設定されている、または変更されている信号である。例として、限定としてではなく、通信媒体には、電気、光、RF、赤外線、音響、またはその他の搬送波を使用して実装される有線または無線のテクニックが含まれる。   A communication connection (170) enables communication to another computing entity via a communication medium. Communication media conveys information, such as computer-executable instructions, compressed audio information, or other data in a modulated data signal. A modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired or wireless techniques implemented using electrical, optical, RF, infrared, acoustic, or other carrier waves.

本発明は、コンピュータ可読媒体の一般的な文脈で説明することができる。コンピュータ可読媒体は、コンピューティング環境内でアクセスすることが可能な任意の可用な媒体である。例として、限定としてではなく、コンピューティング環境(100)内で、コンピュータ可読媒体には、メモリ(120)、ストレージ(140)、通信媒体、および以上のいずれの組合せも含まれる。   The invention can be described in the general context of computer-readable media. Computer readable media can be any available media that can be accessed within a computing environment. By way of example, and not limitation, within computing environment (100), computer-readable media include memory (120), storage (140), communication media, and any combination of the above.

本発明は、プログラム・モジュールの中に含まれ、コンピューティング環境において、目標の現実のプロセッサ上または仮想のプロセッサ上で実行されるコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールには、特定のタスクを行う、または特定の抽象データ・タイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、構成要素、データ構造等が含まれる。プログラム・モジュールの機能は、様々な実施形態において所望に応じて組み合わせること、またはプログラム・モジュールの間で分割することができる。プログラム・モジュールのためのコンピュータ実行可能命令は、ローカルのコンピューティング環境内で、または分散コンピューティング環境において実行することができる。   The invention may be described in the general context of computer-executable instructions contained within program modules and executed in a computing environment on a target real or virtual processor. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The functions of the program modules can be combined as desired in various embodiments or divided among the program modules. Computer-executable instructions for program modules may be executed within a local computing environment or in a distributed computing environment.

提示のため、詳細な説明では、コンピューティング環境におけるコンピュータ動作を説明するのに「解析する(analyze)」、「送る(send)」、「比較する(compare)」、および「調べる(check)」のような用語を使用する。これらの用語は、コンピュータによって行われる動作の高レベルの抽象化であり、人間によって行われる動作と混同してはならない。これらの用語に対応する実際のコンピュータ動作は、実装形態に応じて異なる。   For presentation purposes, the detailed description includes "analyze", "send", "compare", and "check" to describe computer behavior in a computing environment. Use terms like These terms are high-level abstractions of operations performed by computers and should not be confused with operations performed by humans. The actual computer operations corresponding to these terms vary depending on the implementation.

II.一般化されたオーディオ符号器およびオーディオ復号器
図2は、説明する実施形態を実装することが可能な一般化されたオーディオ符号器(200)を示すブロック図である。符号器(200)は、オーディオ・データの適応エントロピー符号化を行う。図3は、説明する実施形態を実装することができる一般化されたオーディオ復号器(300)を示すブロック図である。復号器(300)は、符号化されたオーディオ・データを復号化する。
II. Generalized Audio Encoder and Audio Decoder FIG. 2 is a block diagram illustrating a generalized audio encoder (200) that can implement the described embodiments. The encoder (200) performs adaptive entropy encoding of audio data. FIG. 3 is a block diagram illustrating a generalized audio decoder (300) that may implement the described embodiments. The decoder (300) decodes the encoded audio data.

符号器内部のモジュール間の関係、および復号器内部のモジュール間の関係は、例示的な符号器および例示的な復号器における情報の流れを示しており、他の関係は、簡明にするため、図示していない。実装形態に、および所望される圧縮のタイプに応じて、符号器または復号器のモジュールは、追加すること、省略すること、複数のモジュールに分割すること、他のモジュールと組み合わせること、および/または同様のモジュールで置き換えることができる。代替の実施形態では、異なるモジュールおよび/または他の構成を有する符号器または復号器が、オーディオ・データの適応エントロピー符号化、および適応エントロピー復号化を行う。   The relationship between the modules within the encoder and the relationship between the modules within the decoder shows the flow of information in the exemplary encoder and exemplary decoder, and other relationships are for simplicity. Not shown. Depending on the implementation and the type of compression desired, an encoder or decoder module may be added, omitted, split into multiple modules, combined with other modules, and / or It can be replaced with a similar module. In alternative embodiments, encoders or decoders with different modules and / or other configurations perform adaptive entropy encoding and adaptive entropy decoding of audio data.

A.一般化されたオーディオ符号器
一般化されたオーディオ符号器(200)は、選択器(208)、マルチ・チャネル・プリ・プロセッサ(210)、区分器/タイル構成器(partitioner/tile configurer)(220)、周波数変換器(230)、知覚モデル化器(perception modeler)(240)、重み付け器(weighter)(242)、マルチ・チャネル変換器(250)、量子化器(260)、エントロピー符号器(270)、コントローラ(280)、複合/純粋(mixed/pure)ロスレス符号器(272)および関連するエントロピー符号器(274)、ならびにビットストリーム・マルチプレクサ[「MUX」](290)を含む。符号器(200)のモジュールのいくつかについて以下に説明する。一部の実施形態における符号器(200)のその他のモジュールに関する説明については、関連出願データのセクションで言及している出願を参照されたい。
A. Generalized Audio Encoder Generalized audio encoder (200) includes a selector (208), a multi-channel pre-processor (210), a partitioner / tile configurer (220). ), Frequency converter (230), perception modeler (240), weighter (242), multi-channel transformer (250), quantizer (260), entropy encoder ( 270), controller (280), mixed / pure lossless encoder (272) and associated entropy encoder (274), and bitstream multiplexer ["MUX"] (290). Some of the modules of the encoder (200) are described below. For descriptions of other modules of the encoder (200) in some embodiments, please refer to the applications mentioned in the Related Application Data section.

符号器(200)は、何らかのサンプリング深度およびサンプリング・レートで時系列の入力オーディオ・サンプル(205)をパルス符号変調された(pulse code modulated)[「PCM」]形式で受け取る。入力オーディオサンプル(205)は、マルチ・チャネル・オーディオ(例えば、ステレオ・モード、サラウンド(surround))であること、またはモノラルであることが可能である。符号器(200)は、オーディオ・サンプル(205)を圧縮し、符号器(200)の様々なモジュールによって生成される情報を多重化して、Windows(登録商標)Media Audio[「WMA」]形式またはAdvanced Streaming Format[[ASF]]などの形式でビットストリーム(295)を出力する。代替として、符号器(200)は、他の入力形式および/または出力形式で機能する。   The encoder (200) receives time-sequential input audio samples (205) at some sampling depth and rate in pulse code modulated ["PCM"] format. The input audio samples (205) can be multi-channel audio (eg, stereo mode, surround) or mono. The encoder (200) compresses audio samples (205) and multiplexes the information generated by the various modules of the encoder (200) to form a Windows Media Audio [“WMA”] format or A bit stream (295) is output in a format such as Advanced Streaming Format [[ASF]]. Alternatively, the encoder (200) functions with other input and / or output formats.

最初、選択器(208)が、オーディオ・サンプル(205)に対して複数の符号化モードのなかから選択を行う。図2で、選択器(208)は、2つのモード、すなわち、複合/純粋ロスレス符号化モード(mixed/pure lossless coding mode)とロッシー符号化モード(lossy coding mode)の間で切替えを行う。ロスレス符号化モードは、複合/純粋ロスレス符号器(272)を含み、通常、高品質(および高いビットレート)の圧縮のために使用される。ロッシー符号化モードは、重み付け器(242)や量子化器(260)などの構成要素を含み、通常、調整可能な品質(また規制されたビットレート)の圧縮のために使用される。選択器(208)における選択決定は、ユーザ入力(例えば、ユーザが、高品質のオーディオ・コピーを作成するためにロスレス符号化を選択すること)に、またはその他の基準に、依存する。その他の状況(例えば、ロッシー圧縮が、十分な品質をもたらすことができない場合、またはビットを過剰に生じさせる場合)では、符号器(200)は、フレームまたは1組のフレームに関してロッシー符号化から複合/純粋ロスレス符号化に切り換わることが可能である。   Initially, the selector (208) selects from a plurality of encoding modes for the audio sample (205). In FIG. 2, the selector (208) switches between two modes: a mixed / pure lossless coding mode and a lossy coding mode. The lossless coding mode includes a composite / pure lossless encoder (272) and is typically used for high quality (and high bit rate) compression. The lossy coding mode includes components such as a weighter (242) and a quantizer (260) and is typically used for compression of adjustable quality (and regulated bit rate). The selection decision in the selector (208) depends on user input (eg, the user selecting lossless encoding to create a high quality audio copy) or other criteria. In other situations (eg, when lossy compression cannot provide sufficient quality, or excessive bits are generated), the encoder (200) may combine from lossy encoding for a frame or set of frames. / It is possible to switch to pure lossless coding.

周波数変換器(230)は、オーディオ・サンプル(205)を受け取り、オーディオ・サンプル(205)を周波数領域内のデータに変換する。周波数変換器(230)は、周波数係数データのブロックを重み付け器(242)に出力し、ブロックサイズなどの副次情報をMUX(290)に出力する。周波数変換器(230)は、周波数係数と副次情報をともに知覚モデル化器(240)に出力する。   A frequency converter (230) receives the audio samples (205) and converts the audio samples (205) into data in the frequency domain. The frequency converter (230) outputs a block of frequency coefficient data to the weighter (242), and outputs secondary information such as a block size to the MUX (290). The frequency converter (230) outputs both the frequency coefficient and the side information to the perceptual modeler (240).

知覚モデル化器(240)は、人間聴覚システムの特性をモデル化して、所与のビット・レートで再構成されるオーディオ信号の知覚される品質を向上させる。一般に、知覚モデル化器(240)は、聴覚モデルに従ってオーディオ・データを処理した後、オーディオ・データに関する重み付け係数を生成するのに使用することができる重み付け器(242)に情報を提供する。知覚モデル化器(240)は、様々な聴覚モデルのいずれかを使用し、励起パターン情報、またはその他の情報を重み付け器(242)に送る。   A perceptual modeler (240) models the characteristics of the human auditory system to improve the perceived quality of an audio signal that is reconstructed at a given bit rate. In general, the perceptual modeler (240) provides information to a weighter (242) that can be used to generate weighting factors for the audio data after processing the audio data according to the auditory model. The perceptual modeler (240) uses any of a variety of auditory models and sends excitation pattern information, or other information, to the weighter (242).

量子化バンド重み付け器として、重み付け器(242)は、知覚モデル化器(240)から受け取られた情報に基づいて量子化マトリックスのための重み付け係数を生成し、その重み付け係数を周波数変換器(230)から受け取られたデータに適用する。重み付け器(242)は、重み付け係数のセットなどの副次情報をMUX(290)に出力する。次に、チャネル重み付け器として、重み付け器(242)は、知覚モデル化器(240)から受け取られた情報に基づき、またローカルで再構成された信号の品質にも基づいてチャネル特有の重み付け係数を生成する。このスカラー重み(scalar weight)により、再構成されたチャネルが、ほぼ一様な品質を有することが可能になる。重み付け器(242)は、係数データの重み付けされたブロックをマルチ・チャネル変換器(250)に出力し、チャネル重み係数のセットなどの副次情報をMUX(290)に出力する。代替として、符号器(200)は、別の形態の重み付けを使用するか、重み付けを省く。   As a quantization band weighter, the weighter (242) generates a weighting factor for the quantization matrix based on the information received from the perceptual modeler (240) and converts the weighting factor to the frequency converter (230). Applies to data received from The weighter (242) outputs secondary information such as a set of weighting coefficients to the MUX (290). Next, as a channel weighter, the weighter (242) uses a channel-specific weighting factor based on information received from the perceptual modeler (240) and based on the quality of the locally reconstructed signal. Generate. This scalar weight allows the reconstructed channel to have a nearly uniform quality. The weighter (242) outputs a weighted block of coefficient data to the multi-channel converter (250) and outputs side information such as a set of channel weight coefficients to the MUX (290). Alternatively, the encoder (200) uses another form of weighting or omits the weighting.

マルチ・チャネル・オーディオ・データの場合、重み付け器(242)によって生成される雑音形状の周波数係数データについて複数のチャネルは、しばしば、相関する。この相関を活用するため、マルチ・チャネル変換器(250)は、オーディオ・データにマルチ・チャネル変換を適用することができる。マルチ・チャネル変換器(250)は、例えば、使用されたマルチ・チャネル変換、およびフレームのマルチ・チャネル変換された部分、を示す副次情報をMUX(290)に対して生成する。   For multi-channel audio data, multiple channels are often correlated for noise-shaped frequency coefficient data generated by the weighter (242). To take advantage of this correlation, the multi-channel converter (250) can apply multi-channel conversion to the audio data. Multi-channel converter (250) generates side information to MUX (290) indicating, for example, the multi-channel conversion used and the multi-channel converted portion of the frame.

量子化器(260)は、マルチ・チャネル変換器(250)の出力を量子化し、エントロピー符号器(270)への量子化された係数データを生成し、MUX(290)への量子化ステップ・サイズを含む副次情報を生成する。量子化により、情報の不可逆な損失が導入されるが、コントローラ(280)と連携して出力ビットストリーム(295)の品質およびビット・レートを符号器(200)が調整することも可能になる。一部の実施形態では、量子化器(260)は、適応型の、一様な、スカラー量子化器である。代替の実施形態では、量子化器は、一様でない量子化器、ベクトル量子化器、および/または適応型でない量子化器であるか、または適応型の、一様な、スカラー量子化の異なる形態を使用する。   The quantizer (260) quantizes the output of the multi-channel converter (250), generates quantized coefficient data to the entropy encoder (270), and performs a quantization step to the MUX (290). Generate side information including size. Quantization introduces irreversible loss of information, but also allows the encoder (200) to adjust the quality and bit rate of the output bitstream (295) in conjunction with the controller (280). In some embodiments, the quantizer (260) is an adaptive, uniform, scalar quantizer. In alternative embodiments, the quantizer is a non-uniform quantizer, a vector quantizer, and / or a non-adaptive quantizer, or an adaptive, uniform, scalar quantization different Use form.

エントロピー符号器(270)は、量子化器(260)から受け取られた量子化された係数データを損失なく圧縮する。一部の実施形態では、エントロピー符号器(270)は、以下のセクションで説明するとおり、適応型のエントロピー符号化を使用する。エントロピー符号器(270)は、オーディオ情報を符号化するのに費やされたビットの数を計算し、その情報を速度/品質コントローラ(280)に送ることができる。   The entropy encoder (270) compresses the quantized coefficient data received from the quantizer (260) without loss. In some embodiments, the entropy encoder (270) uses adaptive entropy coding as described in the following sections. The entropy encoder (270) can calculate the number of bits spent encoding audio information and send the information to the speed / quality controller (280).

コントローラ(280)は、量子化器(260)と協働して、符号器(200)の出力のビット・レートおよび/または品質を調整する。コントローラ(280)は、符号器(200)の他のモジュールから情報を受け取り、受け取られた情報を処理して、現行の条件に与えられた所望の量子化係数を決定する。コントローラ(280)は、品質制約および/またはビット・レート制約を満たす目標を使用して、その量子化ファクタ(quantization factors)を量子化器(260)に出力する。   The controller (280) cooperates with the quantizer (260) to adjust the bit rate and / or quality of the output of the encoder (200). The controller (280) receives information from other modules of the encoder (200) and processes the received information to determine the desired quantization factor given the current condition. The controller (280) outputs the quantization factors to the quantizer (260) using a goal that satisfies the quality constraint and / or the bit rate constraint.

複合ロスレス/純粋ロスレス符号器(272)および関連するエントロピー符号器(274)が、複合/純粋ロスレス符号化モードの間オーディオ・データを圧縮する。符号器(200)は、シーケンス全体に関して複合/純粋ロスレス符号化モードを使用するか、またはフレームごとに、またはその他の基準で、符号化モード間で切替えを行う。   A composite lossless / pure lossless encoder (272) and associated entropy encoder (274) compress audio data during the composite / pure lossless encoding mode. The encoder (200) uses a composite / pure lossless coding mode for the entire sequence, or switches between coding modes on a frame-by-frame basis or other criteria.

MUX(290)が、オーディオ符号器(200)のその他のモジュールから受け取られた副次情報を、エントロピー符号器(270)から受け取られたエントロピー符号化されたデータとともに多重化する。MUX(290)は、その情報をWMA形式で、またはオーディオ復号器が認識する別の形式で出力する。MUX(290)は、符号器(200)によって出力されるビットストリーム(295)を記憶する仮想バッファを含む。バッファの現在の充満度(fullness)、バッファの充満度の変化の速度、およびバッファのその他の特性が、コントローラ(280)によって使用されて、個々の適用例に合わせて品質および/またはビット・レートが調整される(例えば、一定の品質/可変のビット・レートに、または一定のビット・レート/可変の品質に、またはそれを下回るように)ことが可能である。   MUX (290) multiplexes the side information received from the other modules of audio encoder (200) along with the entropy encoded data received from entropy encoder (270). MUX (290) outputs the information in WMA format or in another format recognized by the audio decoder. The MUX (290) includes a virtual buffer that stores the bitstream (295) output by the encoder (200). The current fullness of the buffer, the rate of change of the buffer fullness, and other characteristics of the buffer are used by the controller (280) to suit the quality and / or bit rate for the particular application. Can be adjusted (eg, to a constant quality / variable bit rate, or to a constant bit rate / variable quality, or below).

B.一般化されたオーディオ復号器
図3を参照すると、一般化されたオーディオ復号器(300)が、ビットストリーム・デマルチプレクサ[「DEMUX」](310)と、1つまたは複数の復号器(320)と、複合/純粋ロスレス復号器(322)と、タイル構成(tile configuration)復号器(330)と、逆マルチ/チャネル変換器(340)と、逆量子化器/逆重み付け器(350)と、逆周波数変換器(360)と、重ね合わせ器(overlapper)/追加器(adder)(370)と、マルチ・チャネル・ポスト・プロセッサ(380)とを含む。復号器(300)は、速度/品質制御または知覚モデル化のためのモジュールを含まないため、符号器(300)よりいくぶん単純である。復号器(300)のモジュールのいくつかについて以下に説明する。一部の実施形態における復号器(300)のその他のモジュールに関する説明については、関連出願データのセクションにおいて言及している出願を参照されたい。
B. Generalized Audio Decoder Referring to FIG. 3, a generalized audio decoder (300) includes a bitstream demultiplexer ["DEMUX"] (310) and one or more decoders (320). A composite / pure lossless decoder (322), a tile configuration decoder (330), an inverse multi / channel converter (340), an inverse quantizer / inverse weighter (350), It includes an inverse frequency converter (360), an overlapper / adder (370), and a multi-channel post processor (380). The decoder (300) is somewhat simpler than the encoder (300) because it does not include modules for speed / quality control or perceptual modeling. Some of the modules of the decoder (300) are described below. For descriptions of other modules of the decoder (300) in some embodiments, please refer to the applications mentioned in the Related Application Data section.

復号器(300)は、圧縮されたオーディオ情報のビットストリーム(305)をWMA形式または別の形式で受け取る。ビットストリーム(305)は、エントロピー符号化されたデータ、ならびに復号器(300)がオーディオ・サンプル(395)を再構成する元にする副次情報、を含む。   The decoder (300) receives a bitstream (305) of compressed audio information in WMA format or another format. Bitstream (305) includes entropy encoded data as well as side information from which decoder (300) reconstructs audio samples (395).

DEMUX(310)が、ビットストリーム(305)中の情報を構文解析し、情報を復号器(300)の各モジュールに送る。DEMUX(310)は、オーディオの複雑さの変動、ネットワーク・ジッタ、および/またはその他のファクタ、に起因するビット・レートの短期の変動を補償するように1つまたは複数のバッファを含む。   The DEMUX (310) parses the information in the bitstream (305) and sends the information to each module of the decoder (300). The DEMUX (310) includes one or more buffers to compensate for short-term variations in bit rate due to audio complexity variations, network jitter, and / or other factors.

1つまたは複数のエントロピー復号器(320)が、DEMUX(310)から受け取られたエントロピー符号を損失なく圧縮解除する。簡明にするため、1つのエントロピー復号器を図3に示しているが、異なるエントロピー復号器を、ロスレス符号化モードとロッシー符号化モードのために、または各モード内に、使用してもよい。また、簡明にするため、図3は、モード選択論理を示していない。エントロピー復号器(320)は、通常、符号器(200)において使用されたエントロピー符号化テクニックの逆を適用する。ロッシー符号化モードで圧縮されたデータを復号化する際、エントロピー復号器(320)は、量子化された周波数係数データを生成する。   One or more entropy decoders (320) decompress the entropy code received from the DEMUX (310) without loss. For simplicity, one entropy decoder is shown in FIG. 3, but different entropy decoders may be used for the lossless and lossy encoding modes, or within each mode. Also, for simplicity, FIG. 3 does not show mode selection logic. The entropy decoder (320) typically applies the inverse of the entropy coding technique used in the encoder (200). When decoding the data compressed in the lossy encoding mode, the entropy decoder (320) generates quantized frequency coefficient data.

複合/純粋ロスレス復号器(322)および関連するエントロピー復号器(320)が、複合/純粋ロスレス符号化モードに関して符号化されたオーディオ・データを損失なく圧縮解除する。復号器(300)は、シーケンス全体に関して特定の復号化モードを使用するか、あるいはフレームごとに、またはその他の基準で復号化モードを切り換える。   A composite / pure lossless decoder (322) and associated entropy decoder (320) decompress the audio data encoded for the composite / pure lossless coding mode without loss. The decoder (300) uses a specific decoding mode for the entire sequence, or switches decoding modes on a frame-by-frame basis or on other criteria.

逆マルチ・チャネル変換器(340)が、エントロピー復号器(320)からのエントロピー復号化された量子化された周波数係数データ、ならびに例えば、使用されたマルチ・チャネル変換、およびフレームの変換された部分を示すDEMUX(310)からの副次情報を受け取る。   An inverse multi-channel transformer (340) is entropy-decoded quantized frequency coefficient data from the entropy decoder (320), and, for example, the multi-channel transform used and the transformed portion of the frame Sub-information is received from the DEMUX (310) indicating

逆量子化器/逆重み付け器(350)は、DEMUX(310)から量子化係数ならびに量子化マトリックスを受け取り、逆マルチ・チャネル変換器(340)から量子化された周波数係数データを受け取る。逆量子化器/重み付け器(350)は、受け取られた量子化係数/マトリックス情報を必要に応じて圧縮解除し、次に、逆量子化および逆重み付けを行う。   The inverse quantizer / inverse weighter (350) receives the quantized coefficients as well as the quantization matrix from the DEMUX (310) and receives the quantized frequency coefficient data from the inverse multi-channel transformer (340). An inverse quantizer / weighter (350) decompresses the received quantized coefficient / matrix information as necessary, and then performs inverse quantization and inverse weighting.

逆周波数変換器(360)が、逆量子化器/逆重み付け器(350)によって出力された周波数係数データ、ならびにDEMUX(310)からの副次情報を受け取る。逆周波数変換器(360)は、符号器において使用された周波数変換の逆を適用し、ブロックを重ね合わせ器/追加器(370)に出力する。   An inverse frequency transformer (360) receives the frequency coefficient data output by the inverse quantizer / inverse weighter (350) as well as side information from the DEMUX (310). The inverse frequency transformer (360) applies the inverse of the frequency transform used in the encoder and outputs the block to the overlay / adder (370).

重ね合わせ器/追加器(370)は、逆周波数変換器(360)および/または複合/純粋ロスレス復号器(322)から復号化された情報を受け取る。重ね合わせ器/追加器(overlapper/adder)(370)は、必要に応じてオーディオ・データを重ね合わせ、追加し、異なるモードで符号化されたオーディオ・データのフレームまたはその他のシーケンスをインターリーブする。   The superimposer / adder (370) receives the decoded information from the inverse frequency converter (360) and / or the composite / pure lossless decoder (322). An overlapper / adder (370) overlays and adds audio data as needed, and interleaves frames or other sequences of audio data encoded in different modes.

III.適応エントロピー符号化/復号化モード切替え(Adaptive Entropy Encoding/Decoding Mode Switching)
入力シーケンスが単一の値(例えば、0)の多数の生起を含む場合、ラン・レベル符号化法が、しばしば、レベルの直接符号化よりも効果的である。ただし、ゼロでない量子化された変換係数がオーディオ・データ入力シーケンスにおいて、特に低い方の周波数で、一般的であるため、ラン・レベル符号化は、周波数範囲全体にわたって有効なわけではない。さらに、より高い品質のオーディオでは、ゼロでない量子化された変換係数が、高い方の周波数においてさえも、より一般的になる。(より高い品質のオーディオでは、量子化レベルは、通常、より小さい。)したがって、一部の実施形態では、図2の符号器(200)などの符号器が、オーディオ・データ入力シーケンスのある部分に関してラン・レベル符号化を使用し、そのシーケンスの別の部分に関してレベルの直接符号化を使用することができるマルチ・モード符号化テクニックを実施する。図3の復号器(300)のような復号器が、対応するマルチ・モード復号化テクニックを実施する。
III. Adaptive Entropy Encoding / Decoding Mode Switching
If the input sequence includes multiple occurrences of a single value (eg, 0), run level encoding is often more effective than direct level encoding. However, run level coding is not effective over the entire frequency range, since non-zero quantized transform coefficients are common in audio data input sequences, especially at lower frequencies. Furthermore, for higher quality audio, non-zero quantized transform coefficients become more common even at higher frequencies. (For higher quality audio, the quantization level is usually smaller.) Thus, in some embodiments, an encoder, such as the encoder (200) of FIG. 2, may be part of an audio data input sequence. Implement a multi-mode encoding technique that can use run-level coding for and use direct level coding for another part of the sequence. A decoder such as the decoder (300) of FIG. 3 implements the corresponding multi-mode decoding technique.

A.適応エントロピー符号化モード切替え
図4を参照すると、マルチ・モード符号化テクニック(technique;技術、方法)400において、符号器は、まず、入力ストリーム中の信号レベルを直接に符号化する(410)。例えば、符号器は、信号レベルに対して直接に可変次元ハフマン符号化、コンテキスト・ベースの算術符号化、または別のエントロピー符号化テクニックを実施する。
A. Adaptive Entropy Coding Mode Switching With reference to FIG. 4, in a multi-mode coding technique 400, the encoder first directly codes the signal level in the input stream (410). For example, the encoder performs variable dimension Huffman coding, context-based arithmetic coding, or another entropy coding technique directly on the signal level.

符号化中の切替えポイントにおいて、符号器は、符号化スキームを切り換える(420)。符号器は、予め決められた切替えポイントにおいて符号化スキーム(scheme;仕組み、方式)を切り換えること、または入力データを解析して符号化スキームを切り換える適切なポイントを決定することができる。例えば、符号器は、入力シーケンスを解析して、ラン・レベル符号化に切り換える最良のポイントを見つけ出し、その切替えポイントを出力ビットストリームの中で復号器に送ることができる。あるいは、符号器は、入力データ中の連続するゼロ(または代替として、別の顕著な値)をカウントすることによって切替えポイントを、適応して計算し、連続するゼロの特定のしきい値数がカウントされた場合にラン・レベル符号化に切り換えることができる。復号器も同じやり方で切替えポイントを計算することができ、したがって、切替えポイントは、ビットストリームに含められる必要がない。あるいは、符号器および復号器は、何らかの他の基準を使用して切替えポイントを決定する。   At the switching point during encoding, the encoder switches the encoding scheme (420). The encoder can switch coding schemes at predetermined switching points, or can analyze input data to determine an appropriate point to switch coding schemes. For example, the encoder can parse the input sequence to find the best point to switch to run-level encoding and send the switch point in the output bitstream to the decoder. Alternatively, the encoder adaptively calculates the switching point by counting consecutive zeros (or alternatively another significant value) in the input data, and a specific threshold number of consecutive zeros When counted, it can be switched to run level encoding. The decoder can also calculate the switch point in the same way, so the switch point does not need to be included in the bitstream. Alternatively, the encoder and decoder use some other criteria to determine the switch point.

切替えポイント後、符号器は、残りの信号レベルをラン・レベル符号化を使用して符号化する(430)。例えば、符号器は、ラン・レングスおよび信号レベルに対してハフマン符号化、コンテキスト・ベースの算術符号化、または別のエントロピー符号化テクニックを実施する。符号器は、切替えポイントの前と後で同一のテクニック(例えば、コンテキスト・ベースの算術符号化)を使用しても、または異なるテクニックを使用してもよい。   After the switch point, the encoder encodes the remaining signal level using run level encoding (430). For example, the encoder performs Huffman coding, context-based arithmetic coding, or another entropy coding technique on run lengths and signal levels. The encoder may use the same technique (eg, context-based arithmetic coding) before and after the switch point, or may use a different technique.

さらに、図4、および適用例の様々な他の図は、単一の切替えポイントを示しているが、追加の切替えポイントを使用して入力データを2つより多くの部分に分割することもできる。例えば、連続するゼロのより高いしきい値に対して追加の適応切替えポイントを設定することができる。これにより、異なる符号化スキームを異なる部分に適用することができる。あるいは、符号器は、シーケンスにおける様々な分割ポイントを試して、異なる分割構成に関する符号化効率を、復号器にその異なる構成を通知する(signaling)費用を加え、評価することができる。   Furthermore, although FIG. 4 and various other illustrations of the application show a single switching point, additional switching points can be used to split the input data into more than two parts. . For example, additional adaptive switching points can be set for higher thresholds of consecutive zeros. This allows different coding schemes to be applied to different parts. Alternatively, the encoder can try various split points in the sequence to evaluate the coding efficiency for the different split configurations, at the cost of signaling the different configurations to the decoder.

図5は、一実装形態による適応切替えポイント計算を伴うマルチ・モード符号化テクニック(500)を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数それぞれの信号レベルである。実際には、切替えポイントの位置は、圧縮されている信号、および符号化のビット・レート/品質に依存する。代替として、入力データは、別の形態および/または編成のオーディオ・データである。   FIG. 5 illustrates a multi-mode encoding technique (500) with adaptive switch point calculation according to one implementation. The adaptive switching point depends on the count of consecutive zero value coefficients. The input data is the signal level of each quantized transform coefficient that proceeds from the lowest frequency coefficient to the highest frequency coefficient. In practice, the position of the switching point depends on the signal being compressed and the bit rate / quality of the encoding. Alternatively, the input data is another form and / or organization of audio data.

最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を0に設定し(510)、符号化状態変数を「直接(direct)」に設定する(512)。   Initially, the encoder initializes several variables. Specifically, the encoder sets the run count variable to 0 (510) and the encoding state variable to “direct” (512).

符号器は、次の係数QCを入力として受け取る(520)。次に、符号器は、その係数QCがゼロであるかどうかを調べる(530)。係数QCがゼロでない場合、符号器は、ラン・カウントをリセットする(538)。それ以外の場合(すなわち、係数QCがゼロである場合)、符号器は、ラン・カウント変数を増分し(532)、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる(534)。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズなどのファクタに依存すること(例えば、256の係数のシーケンスに対して4のラン・カウントしきい値、512の係数のシーケンスに対して8のラン・カウントしきい値等)、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化(run-level encoding)[「RLE」]に切り換える(536)。   The encoder receives the next coefficient QC as input (520). The encoder then checks (530) whether the coefficient QC is zero. If the coefficient QC is not zero, the encoder resets the run count (538). Otherwise (ie, if the coefficient QC is zero), the encoder increments the run count variable (532) to see if the current run count exceeds the run count threshold. (534). The run count threshold is static or depends on factors such as the size of the block of coefficients (eg, 4 run count threshold for a sequence of 256 coefficients, 512 coefficients For example, a run count threshold of 8), or some other form of adaptation. If the run count exceeds the threshold, the encoder switches the encoding state to run-level encoding ["RLE"] (536).

次に、符号器は、適切な場合、係数QCを符号化する(540)。(一部のケースでは、グループの係数が、ベクトル・ハフマン符号化などのテクニックを使用して一緒に符号化される。そのようなケースでは、符号器は、係数QCを符号化することを延期することができる。)   The encoder then encodes the coefficient QC, if appropriate (540). (In some cases, the group coefficients are encoded together using techniques such as vector Huffman coding. In such cases, the encoder defers encoding the coefficient QC. can do.)

次に、符号器は、符号化モードを切り換えるべきかどうかを調べる(550)。詳細には、符号器は、符号化状態を調べる。符号化状態がもはや直接ではない場合(例えば、ゼロ係数がしきい値数に達した結果として、符号器が符号化状態をRLEに切り換えた場合)、符号器は、係数のラン・レベル符号化を開始する(560)。(やはり、係数のグループが一緒に符号化されるケースでは、符号器は、一群の係数に関して好都合なブレークポイントに達するまで、切替えの決定を延期することができる。)   Next, the encoder checks if the encoding mode should be switched (550). Specifically, the encoder checks the encoding state. If the coding state is no longer direct (eg, the encoder switches the coding state to RLE as a result of the zero coefficient reaching the threshold number), the encoder will perform a run level coding of the coefficient. Is started (560). (Still, in the case where groups of coefficients are encoded together, the encoder can defer switching decisions until a convenient breakpoint is reached for a group of coefficients.)

符号器は、符号化モードを切り換えない場合、係数を符号化することを終えたかどうかを調べる(570)。終えている場合、符号器は、終了する。終えていない場合、符号器は、次の係数を入力して(520)符号化プロセスを続ける。   If the encoder does not switch encoding modes, the encoder checks to see if it has finished encoding the coefficients (570). If so, the encoder ends. If not, the encoder inputs the next coefficient (520) and continues the encoding process.

B.適合エントロピー復号化モード切替え
図6を参照すると、マルチ・モード復号化テクニック(600)において、復号器は、符号化された信号レベルを直接に復号化する(610)。例えば、復号器は、符号化された信号レベルに対して直接に、可変次元ハフマン復号化、コンテキスト・ベースの算術復号化、または別のエントロピー復号化テクニックを実施する。
B. Adaptive Entropy Decoding Mode Switching Referring to FIG. 6, in a multi-mode decoding technique (600), the decoder directly decodes the encoded signal level (610). For example, the decoder performs variable dimension Huffman decoding, context-based arithmetic decoding, or another entropy decoding technique directly on the encoded signal level.

復号化中に切替えポイントにおいて、復号器は、復号化スキームを切り換える(620)。切替えポイントが予め決められている場合、復号器は、フラグまたは他の通知機構の形態で、復号化スキームをいつ切り換えるかを復号器に明示的に告げるデータを受け取ることができる。あるいは、復号器は、自らが受け取る入力データに基づいて復号化スキームをいつ切り換えるかを、適応して計算することができる。復号器は、切替えポイントを計算する場合、符号器によって使用されたのと同じ計算テクニックを使用して、復号化スキームが正しいポイントで切り換わることを確実にする。例えば、復号器は、連続するゼロ(または代替として、別の顕著な値)をカウントして切替えポイントを、適応して決定する。一実装形態では、復号器は、図5に示した符号器テクニックに対応する技術を使用する。あるいは、復号器は、何らかの他の基準を使用して切替えポイントを決定する。   At the switch point during decoding, the decoder switches (620) the decoding scheme. If the switch point is predetermined, the decoder can receive data in the form of a flag or other notification mechanism that explicitly tells the decoder when to switch the decoding scheme. Alternatively, the decoder can adaptively calculate when to switch decoding schemes based on the input data it receives. When the decoder calculates the switching point, it uses the same calculation technique used by the encoder to ensure that the decoding scheme switches at the correct point. For example, the decoder adaptively determines the switch point by counting consecutive zeros (or alternatively, another significant value). In one implementation, the decoder uses a technique corresponding to the encoder technique shown in FIG. Alternatively, the decoder uses some other criteria to determine the switch point.

切替えポイント後、復号器は、残りのラン・レベル符号化された信号レベルを復号化する(630)。例えば、復号器は、符号化されたラン・レングスおよび信号レベルに対して、ハフマン復号化技術、コンテキスト・ベースの算術復号化技術、または別のエントロピー復号化テクニックを実施する。復号器は、切替えポイントの前と後で同じテクニック(例えば、コンテキスト・ベースの算術復号化)を使用しても、または異なるテクニックを使用してもよい。   After the switch point, the decoder decodes (630) the remaining run level encoded signal levels. For example, the decoder performs a Huffman decoding technique, a context-based arithmetic decoding technique, or another entropy decoding technique on the encoded run length and signal level. The decoder may use the same technique (eg, context-based arithmetic decoding) before and after the switch point, or may use a different technique.

IV.可変次元ハフマン符号化および可変次元ハフマン復号化
直接信号レベルなどのシンボルを、スカラー・ハフマン符号化を使用して符号化することができるが、そのような手法は、シンボルを符号化するための最適なビット数が分数である場合、限界がある。また、スカラー・ハフマン符号化は、またスカラー・ハフマン符号がシンボル間の統計上の相関を考慮に入れることができないことによって、限界がある。ベクトル・ハフマン符号化は、スカラー・ハフマン符号化よりも良好なビット・レート低下をもたらす(例えば、符号器が、2進ハフマン符号における確率を分数として活用できるようにすることにより)。また、一般に、より高い次元のベクトルは、より小さい次元のベクトルより良好なビット・レート低下をもたらす。ただし、符号(code)がそれぞれ可能なシンボルの組合せに割り当てられる場合、ベクトル次元が増加するにつれてコードブック・サイズが指数関数的に増大する。例えば、32ビットのシステムでは、4次元ベクトルに関する可能な組合せの数は、(2324である。また、ベクトルを照合して、ハフマン符号を見つけ出すのにかかる探索時間も、コードブック・サイズが増大するにつれて劇的に増加する。
IV. Variable Dimension Huffman Coding and Variable Dimension Huffman Decoding Symbols such as direct signal levels can be encoded using scalar Huffman coding, but such techniques are optimal for encoding symbols. If the number of bits is a fraction, there is a limit. Scalar Huffman coding is also limited by the fact that scalar Huffman codes cannot take into account the statistical correlation between symbols. Vector Huffman coding results in better bit rate reduction than scalar Huffman coding (eg, by allowing the encoder to exploit the probability in binary Huffman codes as a fraction). Also, in general, higher dimensional vectors result in better bit rate reduction than smaller dimensional vectors. However, if a code is assigned to each possible symbol combination, the codebook size increases exponentially as the vector dimension increases. For example, in a 32-bit system, the number of possible combinations for a four-dimensional vector is (2 32 ) 4 . Also, the search time taken to match vectors to find a Huffman code increases dramatically as the codebook size increases.

一部の実施形態では、コードブック・サイズを小さくするため、図2の符号器(200)のような符号器が、可変次元ベクトル・ハフマン符号化テクニックを使用する。コードブック符号(codebook code)をそれぞれの可能なn次元の組合せに割り当てるのではなく、限られた数の最も確率の高いn次元ベクトルに符号が割り当てられる。特定のn次元ベクトルに符号(code)が割り当てられない場合、n次元ベクトルは、代わりに、より小さい次元のベクトル(例えば、2つのn/2次元ベクトル)として、ハフマン符号を有するスカラーとして、または離散値を表わすために何らかのテーブルのないテクニックを使用するスカラーとして、符号化される。図3の復号器(300)のような復号器が、ベクトルに対する符号を見つけ出し、関連する値を見つけ出すことによってベクトルを再構成する。   In some embodiments, to reduce the codebook size, an encoder such as the encoder (200) of FIG. 2 uses a variable dimension vector Huffman encoding technique. Rather than assigning a codebook code to each possible n-dimensional combination, a code is assigned to a limited number of the most probable n-dimensional vectors. If no code is assigned to a particular n-dimensional vector, the n-dimensional vector is instead instead as a smaller-dimensional vector (eg, two n / 2-dimensional vectors), as a scalar with a Huffman code, or Encoded as a scalar that uses some tableless technique to represent discrete values. A decoder, such as the decoder (300) of FIG. 3, finds the code for the vector and reconstructs the vector by finding the associated value.

例えば、シンボル当たり256の値が可能な4次元ベクトルの場合、符号器は、500の最も確率の高い4次元ベクトルをハフマン符号を使用して符号化し、その他のベクトルを示すのにエスケープ符号を使用する。符号器は、そのような他のベクトルを2次元ベクトルに分割する。符号器は、500の最も確率の高い2次元ベクトルをハフマン符号を使用して符号化し、その他のベクトルを示すのにエスケープ符号を使用し、このその他のベクトルは、分割されて、スカラー・ハフマン符号を使用して符号化される。したがって、符号器は、501+501+256個の符号を使用する。   For example, for a four-dimensional vector that allows 256 values per symbol, the encoder encodes the 500 most probable four-dimensional vector using a Huffman code and uses an escape code to indicate other vectors. To do. The encoder splits such other vectors into two-dimensional vectors. The encoder encodes the 500 most probable two-dimensional vector using a Huffman code and uses an escape code to indicate the other vector, which is divided into scalar Huffman codes Is encoded using Therefore, the encoder uses 501 + 501 + 256 codes.

どのベクトルまたはどのスカラーがテーブル中のハフマン符号で表わされるかを決定することに関して、またハフマン符号自体をテーブルに割り当てることに関して、コードブック構成は、静的であること、以前に符号化されたデータに適応すること、または符号化されるべきデータに適応することが可能である。   With respect to determining which vector or which scalar is represented by the Huffman code in the table, and with respect to assigning the Huffman code itself to the table, the codebook structure is static, previously encoded data It is possible to adapt to the data to be encoded.

A.可変次元ベクトル・ハフマン符号化
図7を参照すると、符号器が、可変次元ベクトル・ハフマン(variable-dimension vector Huffman)[「VDVH」]符号化テクニック(700)を使用する。例えば、符号器は、このテクニック(700)を使用して、オーディオ・データの周波数係数に関する信号レベルを直接に符号化する。代替として、符号器は、このテクニック(700)を使用して別の形態のオーディオ・データを符号化する。簡明にするため、図7は、コードブック構成を示していない。コードブック構成は、静的であること、以前に符号化されたデータに適応すること、または符号化されるべきデータに適応することが可能である。
A. Variable Dimension Vector Huffman Coding Referring to FIG. 7, the encoder uses a variable-dimension vector Huffman [“VDVH”] coding technique (700). For example, the encoder uses this technique (700) to directly encode the signal level for the frequency coefficient of the audio data. Alternatively, the encoder uses this technique (700) to encode another form of audio data. For simplicity, FIG. 7 does not show the codebook structure. The codebook structure can be static, adapt to previously encoded data, or adapt to the data to be encoded.

符号器は、n個のシンボルの次のベクトルを獲得する(710)。例えば、符号器は、次の4個のシンボルを順次に獲得する。   The encoder obtains a next vector of n symbols (710). For example, the encoder obtains the next four symbols sequentially.

符号器は、コードブックがそのベクトルに対する符号を含むかどうかを調べる(720)。含む場合、符号器は、単一のハフマン符号を使用して(730)そのベクトルを符号化する。例えば、n次元ベクトルをどのように符号化するかを決定するのに、符号器は、そのベクトルに関連する符号に関してn次元ベクトル符号テーブルを調べる。より大きい次元のベクトルは、通常、より大幅なビット・レート節約をもたらすため、符号器は、最も確率の高いn次元ベクトルに対してハフマン符号を使用する。ただし、テーブルのサイズを制限するため、n次元ベクトルの一部だけが、関連する符号を有する。   The encoder checks (720) whether the codebook contains a code for the vector. If so, the encoder encodes (730) the vector using a single Huffman code. For example, to determine how to encode an n-dimensional vector, the encoder looks up an n-dimensional vector code table for codes associated with that vector. Encoders use Huffman codes for the most probable n-dimensional vectors because larger dimensional vectors typically provide greater bit rate savings. However, to limit the size of the table, only a part of the n-dimensional vector has an associated code.

コードブックがベクトルに対する符号を含まない場合、符号器は、そのベクトルをより小さいベクトルおよび/またはスカラーに分割し(740)、そのより小さいベクトルおよび/またはスカラーを符号化する。例えば、符号器は、n個のシンボルのベクトルをx個のn/xシンボル・ベクトルに分割する。各n/xシンボル・ベクトルに関して、符号器は、符号化テクニックを再帰的に繰り返し、n/xシンボル・ベクトル、またはn/シンボル・ベクトルを構成するベクトル/スカラーが、ハフマン符号で、または(スカラーに関して)離散値を表わすために、テーブルのないテクニックを使用して符号化された時点で終了する。   If the codebook does not include a code for the vector, the encoder divides the vector into smaller vectors and / or scalars (740) and encodes the smaller vectors and / or scalars. For example, the encoder splits a vector of n symbols into x n / x symbol vectors. For each n / x symbol vector, the encoder recursively repeats the encoding technique and the n / x symbol vector, or the vector / scalar comprising the n / symbol vector, is a Huffman code or (scalar In order to represent discrete values, it ends when encoded using a tableless technique.

次に、符号器は、符号化されるべきさらなるベクトルが存在するかどうかを調べる(750)。存在しない場合、符号器は、終了する。存在する場合、符号器は、n個のシンボルの次のベクトルを獲得する(710)。   The encoder then checks (750) if there are more vectors to be encoded. If not, the encoder ends. If so, the encoder obtains the next vector of n symbols (710).

1.例としての実装形態
図8は、一実装形態におけるVDVH符号化を使用してベクトルを符号化するための詳細なテクニック(800)を示している。このテクニック(800)では、符号器は、複数シンボルから成るベクトル中のシンボルの整数値を合計して、そのベクトルを単一のハフマン符号を使用して符号化するか、またはそのベクトルをより小さいベクトル/スカラーに分割するかを決定する。これにより、コードブック・サイズが実質的に制限され、符号の探索が迅速になる。
1. Exemplary Implementation FIG. 8 shows a detailed technique (800) for encoding a vector using VDVH encoding in one implementation. In this technique (800), the encoder sums the integer values of symbols in a vector of symbols and encodes the vector using a single Huffman code or makes the vector smaller Decide whether to split into vector / scalar. This substantially limits the codebook size and speeds up the code search.

n次元[「n−dim」]ベクトルに対するコードブック・テーブルは、L1個のn次元ベクトルに対するハフマン符号を含む。また、コードブック・テーブルは、エスケープ符号も含む。L1個の符号は、ベクトル成分(整数である)の合計が特定のしきい値T1を下回る各ベクトルに対するものである。例えば、nが4であり、4次元ベクトルに関するしきい値T1が6であるものと想定する。4次元ベクトルに関するそのコードブック・テーブルは、エスケープ符号および126個の符号を含み、それぞれの可能なベクトルの成分(例えば、成分の絶対値)の合計が6より小さい−(0,0,0,0)、(0,0,0,1)などである。ベクトルの成分合計に基づいてテーブルサイズを制限することは、一般に、最も確率の高いベクトルがより小さい成分合計を有するベクトルであるため、有効である。 The codebook table for an n-dimensional [“n-dim”] vector contains Huffman codes for L 1 n-dimensional vectors. The codebook table also includes an escape code. The L 1 codes are for each vector whose sum of vector components (which is an integer) is below a certain threshold T 1 . For example, suppose n is 4 and the threshold T 1 for a 4D vector is 6. The codebook table for a four-dimensional vector includes an escape code and 126 codes, where the sum of the components of each possible vector (eg, the absolute value of the component) is less than 6 − (0,0,0, 0), (0, 0, 0, 1), etc. Limiting the table size based on the vector component sum is generally useful because the most probable vector is the vector with the smaller component sum.

n次元ベクトルに対するコードブック・テーブルが、特定のn次元ベクトルに対するハフマン符号を有さない場合、符号器は、出力ビットストリームにエスケープ符号を追加し、他のコードブック・テーブルの中でより小さい次元の複数のベクトルまたは複数のスカラーをルックアップして、そのn次元ベクトルをより小さい次元の複数のベクトルまたは複数のスカラーとして符号化する。例えば、より小さい次元は、n/2が1でない限り、n/2であり、n/2が1である場合、n次元ベクトルは、複数のスカラーに分割される。代替として、n次元ベクトルは、何らかの別の仕方で分割される。   If the codebook table for an n-dimensional vector does not have a Huffman code for a particular n-dimensional vector, the encoder adds an escape code to the output bitstream and has a smaller dimension than other codebook tables. The plurality of vectors or scalars are looked up and the n-dimensional vector is encoded as a vector of smaller dimensions or a plurality of scalars. For example, the smaller dimension is n / 2 unless n / 2 is 1, and if n / 2 is 1, the n-dimensional vector is divided into multiple scalars. Alternatively, n-dimensional vectors are divided in some other way.

より小さい次元のベクトルに対するコードブック・テーブルは、L2個のより小さい次元のベクトルに対するハフマン符号、ならびにエスケープ符号を含む。L2個の符号は、より小さい次元のテーブルに対してベクトル成分の合計が特定のしきい値T2を下回る各ベクトルに対する符号である。例えば、より小さい次元が2であり、2次元ベクトルに関するしきい値T2が16であるものと想定する。2次元ベクトルに対するコードブック・テーブルは、エスケープ符号、および成分(例えば、成分の絶対値)の合計が16を下回るそれぞれの可能なベクトルごとに1つの136個の符号、−(0,0),(0,1)、などを含む。 The codebook table for the smaller dimension vectors includes Huffman codes for L 2 smaller dimension vectors, as well as escape codes. The L 2 codes are codes for each vector whose sum of vector components is below a certain threshold T 2 for a table of smaller dimensions. For example, assume that the smaller dimension is 2 and the threshold T 2 for a 2D vector is 16. The codebook table for a two-dimensional vector is an escape code and 136 codes, one for each possible vector whose sum of components (eg, absolute values of components) is less than 16,-(0,0), (0, 1), etc.

より小さい次元のベクトルに対するコードブック・テーブルが特定のより小さい次元のベクトルに対するハフマン符号を有さない場合、符号器は、エスケープ符号を出力ビットストリームに追加し、他のコードブック・テーブルを使用してそのベクトルをさらに小さい次元のベクトルまたはスカラーとして符号化する。このプロセスは、スカラー・レベルに至るまで繰り返される。例えば、分割は、スカラー・レベルに至るまで2の累乗で行われる。代替として、ベクトルは、何らかの別の仕方で分割される。   If the codebook table for a smaller dimension vector does not have a Huffman code for a particular smaller dimension vector, the encoder adds an escape code to the output bitstream and uses the other codebook table. The vector as a smaller dimension vector or scalar. This process is repeated until the scalar level. For example, the division is performed in powers of 2 up to the scalar level. Alternatively, the vector is split in some other way.

スカラー・レベルで、コードブック・テーブルは、L3個のスカラー、ならびにエスケープ符号を含む。L3個の符号は、特定のしきい値T3(小さい値の確率が高いと想定する)を下回る各スカラーに対するものである。例えば、スカラーに関するしきい値T3が100であるものと想定する。スカラーに関するコードブック・テーブルは、100個の符号、およびエスケープ符号を含む。スカラーは、スカラー符号テーブルの中で関連する符号を有さない場合、エスケープ符号、およびテーブルなしのテクニックによる値(例えば、リテラル(literal))を使用して符号化される。このセクションで与えた数値的な例のすべてを使用すると、テーブルは、合計で126+1+136+1+100+1=365個の符号を含む。 At the scalar level, the codebook table contains L 3 scalars as well as escape codes. L 3 codes are for each scalar below a certain threshold T 3 (assuming a small probability of probability is high). For example, assume that the threshold T 3 for a scalar is 100. The codebook table for scalars contains 100 codes and escape codes. A scalar is encoded using an escape code and a value from a tableless technique (eg, literal) if it does not have an associated code in the scalar code table. Using all of the numerical examples given in this section, the table contains a total of 126 + 1 + 136 + 1 + 100 + 1 = 365 codes.

テーブルの次元サイズ、ベクトル分割ファクタ、ベクトル成分合計に関するしきい値は、実装形態に依存する。その他の実装形態は、異なるベクトル・サイズ、異なる分割係数、および/または異なるしきい値を使用する。代替として、符号器は、VDVH符号化を行う際にベクトル成分合計以外の基準を使用してベクトル・サイズ/コードブック・テーブル切替えを行う。   The thresholds for table dimension size, vector partition factor, and vector component sum depend on the implementation. Other implementations use different vector sizes, different division factors, and / or different thresholds. Alternatively, the encoder performs a vector size / codebook table switch using criteria other than the sum of vector components when performing VDVH encoding.

図8を参照すると、符号器はまず、n次元ベクトルを獲得する(810)。n次元ベクトルは、各シンボルが、例えば、オーディオ・データの周波数係数に関する量子化されたレベルを表わす値を有するn個のシンボルを含む。   Referring to FIG. 8, the encoder first obtains an n-dimensional vector (810). An n-dimensional vector includes n symbols, each symbol having a value representing a quantized level, for example, with respect to the frequency coefficient of the audio data.

符号器は、ベクトル成分を合計して(812)、その合計をn次元ベクトルに関するしきい値と比較する(820)。合計がしきい値より小さいか、またはしきい値に等しい場合、符号器は、符号テーブルからのハフマン符号を使用してそのn次元ベクトルを符号化し(822)、符号化が完了するまで継続する(824)。合計がしきい値より大きい場合、符号器は、エスケープ符号を送り(826)、そのn次元ベクトルをn/2の次元を有する2つのより小さいベクトルに分割する(830)。   The encoder sums the vector components (812) and compares the sum to a threshold for the n-dimensional vector (820). If the sum is less than or equal to the threshold, the encoder encodes the n-dimensional vector using the Huffman code from the code table (822) and continues until the encoding is complete (824). If the sum is greater than the threshold, the encoder sends an escape code (826) and splits the n-dimensional vector into two smaller vectors having n / 2 dimensions (830).

符号器は、次のn/2次元ベクトルを獲得し(840)、そのn/2次元ベクトルの成分を合計する(842)。符号器は、n/2次元ベクトルに関連するしきい値に対してその合計をチェックする(850)。合計がしきい値より小さいか、またはしきい値に等しい場合、符号器は、n/2次元ベクトルに関する符号テーブルからのハフマン符号を使用してそのn/2次元ベクトルを符号化し(852)、符号器がn/2次元ベクトルを符号化することを終えていない場合(854)、次のn/2次元ベクトルを獲得する(840)。合計がn/2次元ベクトルに関するしきい値より大きい場合、符号器は、別のエスケープ符号を送る(856)。   The encoder obtains the next n / 2-dimensional vector (840) and sums the components of the n / 2-dimensional vector (842). The encoder checks the sum against a threshold associated with the n / 2-dimensional vector (850). If the sum is less than or equal to the threshold, the encoder encodes the n / 2-dimensional vector using the Huffman code from the code table for the n / 2-dimensional vector (852); If the encoder has not finished encoding the n / 2-dimensional vector (854), the next n / 2-dimensional vector is obtained (840). If the sum is greater than the threshold for the n / 2-dimensional vector, the encoder sends another escape code (856).

符号器は、一般に、ベクトルを処理する際にこのパターンに従い、各ベクトルを符号化するか、またはそのベクトルをより小さい次元のベクトルに分割する。符号器がベクトルを2つのスカラー(1次元)成分に分割する場合(860)、符号器は、次のスカラーを獲得し(870)、そのスカラーの値をスカラー値に関連するしきい値と比較する(880)。スカラー値がしきい値より小さいか、しきい値に等しい場合(880)、符号器は、スカラーに関する符号テーブル(882)からのハフマン符号を使用してスカラーを符号化する。スカラー値がしきい値より大きい場合、符号器は、テーブルのないテクニックを使用してそのスカラーを符号化する(884)。次に、符号器は、スカラーを処理するのを終えていない場合(886)、次のスカラーを獲得する(870)。   The encoder generally follows this pattern when processing the vectors and either encodes each vector or divides it into smaller dimensional vectors. If the encoder divides the vector into two scalar (one-dimensional) components (860), the encoder obtains the next scalar (870) and compares the value of that scalar with a threshold value associated with the scalar value. (880). If the scalar value is less than or equal to the threshold (880), the encoder encodes the scalar using the Huffman code from the code table (882) for the scalar. If the scalar value is greater than the threshold, the encoder encodes the scalar using a tableless technique (884). Next, if the encoder has not finished processing the scalar (886), it obtains the next scalar (870).

代替として、符号器は、VDVH符号化を行う際に、異なる次元サイズを有するテーブルを使用し、ベクトルを2の累乗による以外の何らかの形で分割し、かつ/またはベクトル成分合計以外の基準を使用してベクトル・サイズ/コードブック・テーブルを切り換える。   Alternatively, the encoder uses a table with a different dimension size when performing VDVH encoding, splits the vector in some way other than by a power of 2, and / or uses a criterion other than the sum of vector components To switch the vector size / codebook table.

2.適応切替え
図9は、符号器が、ラン・レングスおよび信号レベルの符号化に切り換えるための切替えポイントを一実装形態に従って適応して決定する態様で、直接信号レベルの係数のVDVH符号化をするテクニック(900)を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、入力データは、別の形態および/または編成のオーディオ・データである。
2. Adaptive Switching FIG. 9 illustrates a technique for VDVH encoding of direct signal level coefficients in a manner in which the encoder adaptively determines switching points for switching to run length and signal level encoding according to one implementation. (900). The adaptive switching point depends on the count of consecutive zero value coefficients. The input data is the signal level for the quantized transform coefficients that progress from the lowest frequency coefficient to the highest frequency coefficient. Alternatively, the input data is another form and / or organization of audio data.

最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を0に設定し(910)、現在のベクトル変数を空(empty)に設定し(912)、符号化状態変数を直接可変次元ベクトル・ハフマン[「DVDVH」]に設定する(914)。   Initially, the encoder initializes several variables. Specifically, the encoder sets the run count variable to 0 (910), sets the current vector variable to empty (912), and sets the encoding state variable directly to the variable dimensional vector Huffman [ “DVDVH”] is set (914).

符号器は、次の係数QCを入力として受け取る(920)。次に、符号器は、その係数がゼロであるかどうかを調べる(930)。係数QCがゼロでない場合、符号器は、ラン・カウントをリセットし(938)、その係数QCを現在のベクトルに追加する(940)。それ以外の場合(すなわち、係数QCがゼロである場合)、符号器は、ラン・カウント変数を増分し(932)、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる(934)。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ(例えば、256個の係数の入力シーケンス中の4つのゼロ)などのファクタに依存すること、または何らかの他の形で適応することが可能である。例えば、しきい値は、入力シーケンス中の係数に関連して、または関連せずに増分、または減分することができる。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化[「RLE」]に切り換え(936)、係数QCは、現在のベクトルの成分として追加される(940)。   The encoder receives the next coefficient QC as input (920). The encoder then checks 930 whether the coefficient is zero. If the coefficient QC is not zero, the encoder resets the run count (938) and adds the coefficient QC to the current vector (940). Otherwise (ie, if the coefficient QC is zero), the encoder increments the run count variable (932) to see if the current run count exceeds the run count threshold. (934). The run count threshold is static or depends on factors such as the size of the block of coefficients (eg, four zeros in an input sequence of 256 coefficients) or in some other way It is possible to adapt. For example, the threshold value can be incremented or decremented with or without associated coefficients in the input sequence. If the run count exceeds the threshold, the encoder switches the encoding state to run level encoding ["RLE"] (936) and the coefficient QC is added as a component of the current vector ( 940).

係数QCを現在のベクトルに追加することにより、ベクトルの次元が増分される。符号器は、現在のベクトル中の成分の数を現在のベクトルの最大次元と比較することにより、現在のベクトルが符号化される用意ができているかどうかを判定する(950)。用意ができている場合、符号器は、DVDVH符号化を使用して現在のベクトルを符号化する(960)。現在のベクトルが最大次元より小さいが、係数QCがシーケンスの最後である場合、符号器は、現在のベクトルに埋込みを行い、DVDVH符号化を使用して現在のベクトルを符号化する(960)。最大次元は、実装形態に依存する。一実装形態では、最大次元は、8である。ただし、最大次元は、例えば、コードブックを作成する、記憶する、または伝送するのに利用可能なリソースの量に応じて、大きくする、または小さくすることができる。   By adding the coefficient QC to the current vector, the vector dimension is incremented. The encoder determines whether the current vector is ready to be encoded by comparing the number of components in the current vector with the maximum dimension of the current vector (950). If so, the encoder encodes the current vector using DVDVH encoding (960). If the current vector is less than the maximum dimension, but the coefficient QC is the end of the sequence, the encoder embeds the current vector and encodes the current vector using DVDVH encoding (960). The maximum dimension depends on the implementation. In one implementation, the maximum dimension is 8. However, the maximum dimension can be increased or decreased depending on the amount of resources available to create, store, or transmit a codebook, for example.

ベクトルを符号化した後、符号器は、符号化状態を調べる(970)。符号化状態がもはやDVDVHではない場合(例えば、ゼロ係数のしきい値数を超えた結果、符号器が、符号化状態をRLEに切り換えている場合)、符号器は、ラン・レングスおよびレベルとして係数の符号化を開始する(980)。ラン・レベル符号化は、例えば、ハフマン符号化、ベクトル・ハフマン符号化、またはコンテキスト・ベースの算術符号化を含め、いくつかの仕方で行うことができる。一部の実施形態では、ラン・レベル符号化は、1つのテーブルが、より短いランの可能性が高いデータを符号化するのに使用され、もう1つのテーブルが、より長いランの可能性が高いデータを符号化するために使用される2つのハフマン符号テーブルを有するハフマン符号化を使用して行われる。符号器は、各テーブルを試みて、どちらのテーブルを符号器が使用したかを示すシグナル・ビットと共に、ひとつのテーブルからの符号を選択する。   After encoding the vector, the encoder checks the encoding state (970). If the encoding state is no longer DVDVH (eg, if the encoder has switched the encoding state to RLE as a result of exceeding the zero coefficient threshold number), the encoder will Coding of coefficients is started (980). Run level coding can be done in several ways, including, for example, Huffman coding, vector Huffman coding, or context-based arithmetic coding. In some embodiments, run level encoding is used to encode data where one table is likely to have a shorter run and another table is likely to be a longer run. This is done using Huffman coding with two Huffman code tables used to encode high data. The encoder tries each table and selects a code from one table with a signal bit indicating which table the encoder used.

符号化状態が切り換わっていない、または現在のベクトルが、符号化の用意ができていない場合、符号器は、符号化されるべきさらなる係数が存在するかどうかを判定する(990)。存在する場合、符号器は、次の係数を入力し(920)、符号化プロセスを続ける。   If the encoding state has not switched or the current vector is not ready for encoding, the encoder determines whether there are more coefficients to be encoded (990). If so, the encoder inputs the next coefficient (920) and continues the encoding process.

B.可変次元ベクトル・ハフマン復号化
図10は、図7に示したVDVH符号化テクニック(700)に対応するVDVH復号化テクニック(1000)を示している。例えば、復号器は、このテクニック(1000)を使用して、オーディオ・データの周波数係数に関する符号化された信号レベルを直接に復号化する。代替として、復号器は、このテクニックを使用して別の形態のオーディオ・データを復号化する。
B. Variable Dimension Vector Huffman Decoding FIG. 10 illustrates a VDVH decoding technique (1000) corresponding to the VDVH encoding technique (700) shown in FIG. For example, the decoder uses this technique (1000) to directly decode the encoded signal levels for the frequency coefficients of the audio data. Alternatively, the decoder uses this technique to decode another form of audio data.

復号器は、n次元ベクトル・ハフマン符号テーブルに関する次のハフマン符号を獲得する(1010)。例えば、復号器は、シーケンス内の4つのシンボルの対する次のハフマン符号を獲得する。   The decoder obtains the next Huffman code for the n-dimensional vector Huffman code table (1010). For example, the decoder obtains the next Huffman code for four symbols in the sequence.

復号器は、ハフマン符号がn次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる(1020)。エスケープ符号ではない場合、復号器は、そのハフマン符号によって表わされるn個のシンボルを獲得する(1030)。例えば、復号器は、4次元ベクトル・ハフマン・コードブックの中でそのハフマン符号に関連する4つのシンボルを獲得する。   The decoder checks if the Huffman code is an escape code for the n-dimensional vector Huffman code table (1020). If it is not an escape code, the decoder obtains n symbols represented by the Huffman code (1030). For example, the decoder obtains four symbols associated with the Huffman code in a four-dimensional vector Huffman codebook.

符号がエスケープ符号である場合、n次元のコードブックはそのベクトルに対する符号を含まず、復号器は、より小さいベクトルおよび/またはスカラーに対するハフマン符号を獲得する(1040)。例えば、復号器は、x個のn/xシンボル・ベクトルに対する符号を獲得する。各n/xシンボル・ベクトルに関して、復号器は、復号化テクニックを再帰的に繰り返し、n/xシンボル・ベクトル、またはn/xシンボル・ベクトルを構成するベクトル/スカラーが復号化された時点で終了する。   If the code is an escape code, the n-dimensional codebook does not include a code for that vector, and the decoder obtains a Huffman code for the smaller vector and / or scalar (1040). For example, the decoder obtains a code for x n / x symbol vectors. For each n / x symbol vector, the decoder recursively repeats the decoding technique and ends when the n / x symbol vector or the vectors / scalars that make up the n / x symbol vector are decoded. To do.

次に、復号器は、復号化されるべきn次元ベクトル・ハフマン符号テーブルに関するさらなる符号が存在するかどうかを調べる(1050)。存在しない場合、復号器は終了する。存在する場合、復号器は、次のそのようなハフマン符号を獲得する(1010)。   The decoder then checks if there are more codes for the n-dimensional vector Huffman code table to be decoded (1050). If not, the decoder ends. If so, the decoder obtains the next such Huffman code (1010).

1.例示的な実装形態
図11は、一実装形態におけるVDVH符号化を使用して符号化されたベクトルを復号化するための詳細なテクニック(1100)を示している。この復号化テクニック(1100)は、図8に示した符号化テクニック(800)に対応する。
1. Exemplary Implementation FIG. 11 shows a detailed technique (1100) for decoding a vector encoded using VDVH encoding in one implementation. This decoding technique (1100) corresponds to the encoding technique (800) shown in FIG.

図11を参照すると、復号器は、n次元ベクトル・ハフマン符号テーブルに関する次の符号を獲得する(1110)。復号器は、その符号が、n次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる(1120)。エスケープ符号ではない場合、復号器は、n次元ベクトルテーブルの中でその符号によって表わされるn個のシンボルを獲得する(1122)。復号器は、符号化されたデータを処理することを終えるまで継続する(1124)。   Referring to FIG. 11, the decoder obtains the next code for the n-dimensional vector Huffman code table (1110). The decoder checks if the code is an escape code for an n-dimensional vector Huffman code table (1120). If not an escape code, the decoder obtains n symbols represented by that code in the n-dimensional vector table (1122). The decoder continues until it finishes processing the encoded data (1124).

符号がn次元ベクトル・ハフマン符号テーブルに関するエスケープ符号である場合、復号器は、n/2次元ベクトル・ハフマン符号テーブルを使用して、そのn次元ベクトルを2つのn/2次元ベクトルとして復号化する。具体的には、復号器は、n/2次元ベクトル・ハフマン符号テーブルに関する次の符号を獲得する(1130)。復号器は、符号がn/2次元ベクトル・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる(1140)。エスケープ符号ではない場合、復号器は、n/2次元ベクトル・ハフマン符号テーブルの中でその符号によって表わされるn/2個のシンボルを獲得する(1142)。復号器は、そのような符号の処理が完了するまで、n/2次元ベクトル・ハフマン符号テーブルに関する符号を処理することを続ける(1144)。   If the code is an escape code for an n-dimensional vector Huffman code table, the decoder uses the n / 2-dimensional vector Huffman code table to decode the n-dimensional vector as two n / 2-dimensional vectors. . Specifically, the decoder obtains the next code for the n / 2-dimensional vector Huffman code table (1130). The decoder checks if the code is an escape code for an n / 2-dimensional vector Huffman code table (1140). If not, the decoder obtains n / 2 symbols represented by the code in the n / 2-dimensional vector Huffman code table (1142). The decoder continues to process codes for the n / 2-dimensional vector Huffman code table until the processing of such codes is complete (1144).

符号がn/2次元ベクトル・ハフマン符号テーブルに関するエスケープ符号である場合、復号器は、そのn/2次元ベクトルを2つのn/4次元ベクトルとして復号化する。この際、この2つのn/4次元ベクトルは、スカラーであることが可能であるといった具合である。   If the code is an escape code for an n / 2-dimensional vector Huffman code table, the decoder decodes the n / 2-dimensional vector as two n / 4-dimensional vectors. At this time, the two n / 4-dimensional vectors can be scalars.

復号器は、一般に、エスケープ符号が検出された場合、復号化されるべきベクトルがスカラー(1次元ベクトル)になるまで、より大きい次元のベクトルを2つのより小さい次元のベクトルとして復号化するこのパターンに従う。スカラーになった時点で、復号器は、スカラー・ハフマン符号テーブルに関する次の符号を獲得する(1150)。復号器は、その符号がスカラー・ハフマン符号テーブルに関するエスケープ符号であるかどうかを調べる(1160)。エスケープ符号ではない場合、復号器は、スカラー・ハフマン符号テーブルの中でその符号によって表されるスカラーを獲得する(1162)。復号器は、そのような符号の処理が完了するまで、スカラーに対する符号を処理することを続ける(1164)。符号がスカラー・ハフマン符号テーブルに関するエスケープ符号であった場合、そのスカラーは、テーブルのないテクニックを使用して符号化され、復号器は、その値を獲得する(1170)。   The decoder generally decodes a larger dimension vector as two smaller dimension vectors until an escape code is detected, until the vector to be decoded is a scalar (one-dimensional vector). Follow. At that point, the decoder obtains the next code for the scalar Huffman code table (1150). The decoder checks if the code is an escape code for a scalar Huffman code table (1160). If not, the decoder obtains the scalar represented by the code in the scalar Huffman code table (1162). The decoder continues to process the code for the scalar until the processing of such code is complete (1164). If the code was an escape code for a scalar Huffman code table, the scalar is encoded using a tableless technique and the decoder obtains its value (1170).

代替として、復号器は、VDVH復号化を行う際、異なる次元サイズを有するテーブルを使用し、かつ/または2の累乗による以外の何らかの別の形でベクトルを分割する。   Alternatively, when performing VDVH decoding, the decoder uses a table with a different dimension size and / or splits the vector in some other way other than by a power of two.

2.適応切替え
図12は、復号器が、ラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを適応して決定する態様で、VDVH符号化を使用して符号化されたベクトルを、復号化するための一実装形態によるテクニック(1200)を示している。適応切替えポイントは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルであるデータ中の連続するゼロ値係数のカウンタに依存する。代替として、データは、別の形態および/または編成のオーディオ・データである。
2. Adaptive Switching FIG. 12 illustrates decoding of a vector encoded using VDVH coding in a manner in which the decoder adaptively determines switching points for switching to run length and signal level decoding. FIG. 6 shows a technique (1200) according to one implementation for doing so. The adaptive switch point relies on a counter of consecutive zero value coefficients in the data that is the signal level for the quantized transform coefficients that go from the lowest frequency coefficient to the highest frequency coefficient. Alternatively, the data is another form and / or organization of audio data.

最初に、復号器は、いくつかの変数を初期設定する。具体的には、復号器は、ラン・カウントを0に設定し(1210)、復号化状態をDVDVHに設定する(1212)。   Initially, the decoder initializes several variables. Specifically, the decoder sets the run count to 0 (1210) and sets the decoding state to DVDVH (1212).

復号器は、次のベクトルを、ハフマン符号テーブルの中でそのベクトルに対する符号をルックアップすることによって復号化する(1220)。例えば、復号器は、図11に示した復号化テクニック(1100)を行う。次に、復号器は、復号化されたベクトルに基づいてラン・カウントを更新する(1230)(具体的には、復号化されたベクトルにおけるゼロ値の数を使用して、ラン・カウントをリセットする、増分する、または別の仕方で調整する)。   The decoder decodes (1220) the next vector by looking up the code for that vector in the Huffman code table. For example, the decoder performs the decoding technique (1100) shown in FIG. The decoder then updates (1230) the run count based on the decoded vector (specifically, resets the run count using the number of zero values in the decoded vector). , Increment, or otherwise adjust).

復号器は、ラン・カウントがしきい値を超えているかどうかを調べる(1240)。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ(例えば、256個の係数の入力シーケンス中の4つのゼロ)などのファクタに依存すること、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、復号器は、ラン・レベル復号化を使用して符号化されている係数を復号化することを開始する(1250)。ラン・レベル復号化は、例えば、ハフマン復号化、ベクトル・ハフマン復号化、またはコンテキスト・ベースの算術復号化を含むいくつかのやり方で行うことができる。   The decoder checks (1240) whether the run count exceeds a threshold. The run count threshold is static or depends on factors such as the size of the block of coefficients (eg, four zeros in an input sequence of 256 coefficients), or in some other way It is possible to adapt. If the run count exceeds the threshold, the decoder begins decoding coefficients that have been encoded using run level decoding (1250). Run level decoding may be performed in several ways including, for example, Huffman decoding, vector Huffman decoding, or context-based arithmetic decoding.

一部の実施形態では、ラン・レベル復号化は、1つのテーブルが、より短いランの可能性が高いデータを復号化するために使用され、もう1つのテーブルが、より長いランの可能性が高いデータを復号化するために使用される、2つの可能なハフマン符号テーブルを有するハフマン復号化を使用して行われる。復号器が符号を受け取った際、その符号中のシグナル・ビットは、どちらのテーブルを符号器が使用したかを示し、復号器は、適切なテーブルの中でその符号をルックアップする。   In some embodiments, run level decoding is used where one table is used to decode data that is more likely to be a shorter run and another table is likely to be a longer run. This is done using Huffman decoding with two possible Huffman code tables used to decode high data. When the decoder receives a code, the signal bit in the code indicates which table the encoder used, and the decoder looks up the code in the appropriate table.

ラン・カウントがしきい値を超えていない場合、復号器は、復号化が終了するまでベクトルを処理することを続ける(1260)。   If the run count does not exceed the threshold, the decoder continues to process the vector until decoding is complete (1260).

V.コンテキスト・ベースの算術符号化およびコンテキスト・ベースの算術復号化
一部の実施形態では、図2の符号器(200)のような符号器が、コンテキスト・ベースの算術(context-based arithmetic)[「CBA」]符号化を使用してオーディオ・データのシーケンスを符号化する。CBA符号化では、入力シンボルに関する異なる確率分布が、異なるコンテキストに関連付けられる。入力シーケンスを符号化するのに使用される確率分布は、コンテキストが変化した際に変化する。コンテキストは、入力シーケンスの中で出現する特定の入力シンボルの確率に影響を及ぼすと予期される様々なファクタを測定することによって計算することができる。図3の復号器(300)のような復号器が、対応する算術復号化(arithmetic decoding)を行う。
V. Context-Based Arithmetic Coding and Context-Based Arithmetic Decoding In some embodiments, an encoder such as the encoder (200) of FIG. 2 may be connected to a context-based arithmetic [" CBA "] encoding is used to encode the sequence of audio data. In CBA coding, different probability distributions for input symbols are associated with different contexts. The probability distribution used to encode the input sequence changes when the context changes. The context can be calculated by measuring various factors that are expected to affect the probability of a particular input symbol appearing in the input sequence. A decoder, such as the decoder (300) of FIG. 3, performs the corresponding arithmetic decoding.

係数を直接に(すなわち、直接レベルとして)符号化する際、符号器は、シーケンス中の前の係数の値を含むファクタを使用してコンテキストを計算する。ラン・レベル符号化を使用して係数を符号化する際、符号器は、前の係数の値に加え、現在のランの長さおよび前のランの長さを含むファクタを使用してコンテキストを計算する。符号器は、計算されたコンテキストに関連する確率分布を使用して、そのデータに適切な算術符号を決定する。したがって、コンテキストを計算する際に様々なファクタを使用することにより、符号器は、データに対して、またそのデータの表現のモード(すなわち、直接、ランレベル)に対して適応するようにコンテキストを決定することができる。   When encoding a coefficient directly (ie, as a direct level), the encoder calculates the context using a factor that includes the value of the previous coefficient in the sequence. When encoding a coefficient using run-level encoding, the encoder uses a factor that includes the current run length and the previous run length in addition to the previous coefficient value. calculate. The encoder uses the probability distribution associated with the calculated context to determine the appropriate arithmetic code for the data. Thus, by using various factors in calculating the context, the encoder adapts the context to adapt to the data and to the mode of representation of that data (ie, directly, runlevel). Can be determined.

代替の実施形態では、符号器は、追加のファクタを使用すること、いくつかのファクタを省くこと、または前述したファクタを他の組合せで使用することができる。   In alternative embodiments, the encoder may use additional factors, omit some factors, or use the aforementioned factors in other combinations.

A.コンテキストの例示的な実装形態
表2〜5および図13A〜13D、14A〜14H、および15A〜15Hは、例示的な実装形態において、それぞれ、CBA符号化を行う際、およびCBA復号化を行う際に使用されるコンテキストおよび確率分布を示している。代替として、CBA符号化およびCBA復号化は、異なるコンテキストおよび/または異なる確率分布を使用する。
A. Exemplary Context Implementations Tables 2-5 and FIGS. 13A-13D, 14A-14H, and 15A-15H are shown in the exemplary implementation when performing CBA encoding and CBA decoding, respectively. Shows the context and probability distribution used. Alternatively, CBA encoding and CBA decoding use different contexts and / or different probability distributions.

以下の説明は、例示的な実装形態における符号器におけるコンテキスト計算を中心的に扱うが、復号器は、以前に復号化されたオーディオ・データを使用して復号化中に対応するコンテキスト計算を行う。   The following description focuses on context calculations at the encoder in the exemplary implementation, but the decoder uses the previously decoded audio data to perform the corresponding context calculations during decoding. .

前述したとおり、符号器は、直接レベルだけを符号化していても、またはラン・レングスおよび直接レベルを符号化していても、CBA符号化を使用して係数を符号化することができる。ただし、一実装形態では、コンテキストを計算するためのテクニックは、符号器が直接レベルだけを符号化しているか、またはラン・レングスおよび直接レベルを符号化しているかに応じて異なる。さらに、ラン・レングスおよび直接レベルを符号化する際、符号器は、ラン・レングスを符号化しているか、または直接レベルを符号化しているかに応じて異なるコンテキストを使用する。   As described above, the encoder can encode the coefficients using CBA encoding, whether it is encoding only the direct level or the run length and direct level. However, in one implementation, the technique for calculating the context varies depending on whether the encoder is encoding only the direct level or the run length and the direct level. Further, when encoding run lengths and direct levels, the encoder uses different contexts depending on whether it is encoding run lengths or direct levels.

符号器は、因果(関係を示す)コンテキスト(causal context)を使用する直接レベルの算術符号化中に、4コンテキスト・システムを、コンテキストを計算するために使用する。符号器は、前のレベル(L[n−1])の値、および前のレベルの直前のレベル([L[n−2]])に基づいて現在のレベルL[n]に関するコンテキストを計算する。このコンテキスト計算は、
1)前のレベルが低である場合、現在のレベルは、低である可能性が高いという想定、および
2)前の2つのレベルは、その他のレベルより良好な現在のレベルの予測因子(predictor)である可能性が高いという想定、
に基づいている。表2は、4コンテキスト・システムにおける前の2つのレベルの値に関連するコンテキストを示している。図13A〜13Dは、それらのコンテキストに関する現在のレベルに関する確率分布を示している。
The encoder uses a 4-context system to compute the context during direct level arithmetic coding using a causal context. The encoder calculates the context for the current level L [n] based on the value of the previous level (L [n−1]) and the level immediately preceding the previous level ([L [n−2]]) To do. This context calculation is
1) an assumption that if the previous level is low, the current level is likely to be low, and
2) the assumption that the previous two levels are likely to be better predictors of the current level than the other levels;
Based on. Table 2 shows the context associated with the previous two levels of values in a four context system. 13A-13D show the probability distributions for the current level for those contexts.

Figure 0005006426
Figure 0005006426

図13A〜13Dの確率分布は、前の2つのレベルがゼロか、またはゼロに近い場合、現在のレベルは、ゼロであるか、またはゼロに近い可能性がより高い、という傾向を示している。   The probability distributions of FIGS. 13A-13D show that if the previous two levels are zero or close to zero, the current level tends to be zero or more likely to be zero. .

また、符号器は、レベルのラン・レングス符号化を行う際にもCBA符号化を使用することができる。ラン・レングスを符号化する際、コンテキストを計算するために符号器によって使用されるファクタには、入力シーケンス中のゼロのパーセンテージ(シーケンスの一部、またはすべてにわたるその時点までの合計(running total))、およびゼロの前のランの長さ(R[n−1])が含まれる。符号器は、表3で以下に示すとおり、入力シーケンス中のゼロのパーセンテージに基づいてゼロ・パーセンテージ指標を計算する。   The encoder can also use CBA encoding when performing level run length encoding. When encoding run lengths, the factor used by the encoder to calculate the context includes the percentage of zeros in the input sequence (running total over part or all of the sequence up to that point) ), And the run length before the zero (R [n-1]). The encoder calculates a zero percentage index based on the percentage of zeros in the input sequence as shown below in Table 3.

Figure 0005006426
Figure 0005006426

符号器は、ゼロ・パーセンテージ指標を前のランの長さとともに使用して、表4に示すとおり、現在のラン・レングスを符号化するためのコンテキストを計算する。図14A〜14Hは、それらのコンテキストに関連するラン・レングス値に関する確率分布を示している。   The encoder uses the zero percentage indicator along with the length of the previous run to calculate the context for encoding the current run length as shown in Table 4. 14A-14H show probability distributions for run length values associated with those contexts.

Figure 0005006426
Figure 0005006426

例えば、レベルの91%がゼロである(0というゼロ・パーセンテージ指標をもたらす)入力シーケンスでは、ゼロの前のランの長さが15であった場合、コンテキストは、4である。図14A〜14Hの確率分布は、入力シーケンス中のゼロのパーセンテージがより高い場合、より長いラン・レングスの可能性が高いことを示している。また、その確率分布は、所与のゼロ・パーセンテージ指標の範囲内で、ゼロのラン・レングスに続くラン・レングスは、ゼロより大きいラン・レングスに続くラン・レングスより短い可能性が高い、という傾向を示している。   For example, in an input sequence where 91% of the levels are zero (resulting in a zero percentage index of 0), if the run length before zero was 15, then the context is 4. The probability distributions of FIGS. 14A-14H show that the higher the percentage of zeros in the input sequence, the greater the likelihood of a longer run length. Also, the probability distribution is within the range of a given zero percentage indicator, and the run length following a run length of zero is likely to be shorter than the run length following a run length greater than zero. It shows a trend.

ラン・レベル・データ中のレベルを符号化する際、コンテキストを計算するために符号器によって使用されるファクタには、現在のランの長さ(R[n])、前のランの長さ(R[n−1])、および前の2つのレベル(L[n−1]およびL[n−2])の値が含まれる。このコンテキスト計算は、現在のレベルは、レベル間の間隔(すなわち、ランレングス)が大き過ぎない限り、2つの前のレベルに依存するという所見に基づいている。また、前のレベルが低い場合、および前のランが短い場合、現在のレベルは、低である可能性がより高い。前のランが長い場合、前のレベルは、現在のレベルに対してそれほど影響を有さない。   When encoding levels in run level data, the factors used by the encoder to calculate the context include the current run length (R [n]), the previous run length ( R [n-1]) and the values of the previous two levels (L [n-1] and L [n-2]) are included. This context calculation is based on the observation that the current level depends on the two previous levels unless the interval between levels (ie, run length) is too large. Also, if the previous level is low, and if the previous run is short, the current level is more likely to be low. If the previous run is long, the previous level has less impact on the current level.

現在のラン・レングスの値、前のラン・レングスの値、および前の2つのレベルの値に関連付けられたコンテキストを以下に表5で示している。図15A〜15Hは、それらのコンテキストに関連するレベルに関する確率分布を示している。   The context associated with the current run length value, the previous run length value, and the previous two levels of values is shown below in Table 5. Figures 15A-15H show probability distributions for the levels associated with those contexts.

Figure 0005006426
Figure 0005006426

例えば、ゼロの現在のランの長さが1であり、ゼロの前のランの長さが2であり、前のレベルが1である入力シーケンスでは、コンテキストは、1である。図15A〜15Hの確率分布は、前のレベルが低い場合、および現在のラン・レングスおよび前のラン・レングスが短い場合、現在のレベルは、ゼロであるか、またはゼロに近い可能性がより高い。   For example, in an input sequence where the length of the current run of zero is 1, the length of the previous run of zero is 2, and the previous level is 1, the context is 1. The probability distributions of FIGS. 15A-15H are more likely to be zero or close to zero if the previous level is low, and if the current run length and the previous run length are short. high.

B.適応切替え
図16は、符号器がラン・レングスおよび信号レベルの符号化に切り換えるための切替えポイントを、適応して決定する態様で、直接信号レベルの係数のCBA符号化のための一実装施形態によるテクニック(1600)を示している。適応切替えポイントは、連続するゼロ値係数のカウントに依存する。入力データは、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、入力データは、別の形態および/または編成のオーディオ・データである。
B. Adaptive Switching FIG. 16 illustrates one implementation for direct CBA coding of coefficient at the signal level in a manner that adaptively determines switching points for the encoder to switch to run length and signal level coding. Shows the technique (1600). The adaptive switching point depends on the count of consecutive zero value coefficients. The input data is the signal level for the quantized transform coefficients that progress from the lowest frequency coefficient to the highest frequency coefficient. Alternatively, the input data is another form and / or organization of audio data.

最初に、符号器は、いくつかの変数を初期設定する。具体的には、符号器は、ラン・カウント変数を0に設定し(1610)、符号化状態変数を直接コンテキスト・ベースの算術(direct context-based arithmetic)(DCBA)に設定する(1612)。   Initially, the encoder initializes several variables. Specifically, the encoder sets the run count variable to 0 (1610) and sets the encoding state variable to direct context-based arithmetic (DCBA) (1612).

符号器は、次の係数QCを入力として受け取る(1620)。次に、符号器は、その係数がゼロであるかどうかを調べる(1630)。係数QCがゼロでない場合、符号器は、ラン・カウントをリセットし(1638)、DCBA符号化を使用してその係数を符号化する(1640)。   The encoder receives the next coefficient QC as input (1620). The encoder then checks (1630) whether the coefficient is zero. If the coefficient QC is not zero, the encoder resets the run count (1638) and encodes the coefficient using DCBA encoding (1640).

それ以外の場合(すなわち、係数QCがゼロである場合)、符号器は、ラン・カウント変数を増分し(1632)、現在のラン・カウントがラン・カウントしきい値を超えているかどうかを調べる(1634)。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ(例えば、256個の係数の入力シーケンス中の4つのゼロ)などのファクタに依存すること、または何らかの別の形で適応することが可能である。例えば、しきい値は、入力シーケンス中の係数の数に関連して、または関連せずに上げること、または下げることができる。ラン・カウントがしきい値を超えた場合、符号器は、符号化状態をラン・レベル符号化[「RLE」]に切り換える(1636)。次に、符号器は、DCBA符号化を使用してその係数を符号化する(1640)。   Otherwise (ie, if the coefficient QC is zero), the encoder increments the run count variable (1632) to see if the current run count exceeds the run count threshold. (1634). The run count threshold is static or depends on factors such as the size of the block of coefficients (eg, four zeros in an input sequence of 256 coefficients), or in some other way It is possible to adapt. For example, the threshold can be raised or lowered with or without the number of coefficients in the input sequence. If the run count exceeds the threshold, the encoder switches the encoding state to run level encoding ["RLE"] (1636). The encoder then encodes the coefficients using DCBA encoding (1640).

係数を符号化した後、符号器は、符号化状態を調べる(1650)。符号化状態がもはやDCBAでない場合(例えば、ゼロ係数のしきい値数を超えた結果、符号器が、符号化状態をRLEに切り換えた場合)、符号器は、ラン・レングスおよびレベルとして係数を符号化することを始める(1660)。ラン・レベル符号化は、例えば、ハフマン符号化、ベクトル・ハフマン符号化、またはCBA符号化(場合により、前述した以前のCBA符号化とは異なるコンテキストを伴う)を含むいくつかの仕方で行うことができる。一部の実施形態では、ラン・レベル符号化は、1つのテーブルが、より短いランの可能性が高いデータを符号化するのに使用され、もう1つのテーブルが、より長いランの可能性が高いデータを符号化するために使用される2つのハフマン符号テーブルを有するハフマン符号化を使用して行われる。符号器は、各テーブルを試みて、どちらのテーブルを符号器が使用したかを示すシグナル・ビットと共に、一つのテーブルからの符号を選択する。   After encoding the coefficients, the encoder checks the encoding state (1650). If the coding state is no longer DCBA (for example, if the encoder has switched the coding state to RLE as a result of exceeding the zero coefficient threshold number), the encoder uses the coefficients as run length and level. Begin encoding (1660). Run level encoding can be done in several ways, including, for example, Huffman coding, vector Huffman coding, or CBA coding (possibly with a different context than the previous CBA coding described above) Can do. In some embodiments, run level encoding is used to encode data where one table is likely to have a shorter run and another table is likely to be a longer run. This is done using Huffman coding with two Huffman code tables used to encode high data. The encoder tries each table and selects a code from one table with a signal bit indicating which table the encoder used.

符号化状態が切り換わっていない場合、符号器は、符号化されるべきさらなる係数が存在するかどうかを判定する(1670)。存在する場合、符号器は、次の係数を入力し(1620)、符号化プロセスを続ける。   If the encoding state has not switched, the encoder determines whether there are additional coefficients to be encoded (1670). If so, the encoder inputs the next coefficient (1620) and continues the encoding process.

C.コンテキスト・ベースの算術復号化
図17は、復号器がラン・レングスおよび信号レベルの復号化に切り換えるための切替えポイントを、適応して決定する態様で、CBA符号化を使用して符号化された係数を復号化するため一実装形態によるテクニック(1700)を示している。適応切替えポイントは、データ中の連続するゼロ値係数のカウントに依存し、この連続するゼロ値係数は、最低周波数係数から最高周波数係数まで進む量子化された変換係数に関する信号レベルである。代替として、データは、別の形態および/または編成のオーディオ・データである。
C. Context-Based Arithmetic Decoding FIG. 17 was encoded using CBA coding in a manner that the decoder adaptively determines the switch point for switching to run length and signal level decoding. FIG. 7 illustrates a technique (1700) according to one implementation for decoding coefficients. The adaptive switch point depends on the count of consecutive zero value coefficients in the data, which is the signal level for the quantized transform coefficients that progress from the lowest frequency coefficient to the highest frequency coefficient. Alternatively, the data is another form and / or organization of audio data.

最初に、符号器は、いくつかの変数を初期設定する。具体的には、復号器は、ラン・カウントを0に設定し(1710)、復号化状態を直接コンテキスト・ベースの算術(DCBA)に設定する(1712)。   Initially, the encoder initializes several variables. Specifically, the decoder sets the run count to 0 (1710) and the decoding state directly to context-based arithmetic (DCBA) (1712).

復号器は、算術符号化において係数を表わすのに符号器が使用した数を参照し、その数から係数の値を抽出することにより、次の量子化された係数をDCBAを使用して復号化する(1720)。次に、復号器は、復号化された係数に基づいてラン・カウントを更新する(1730)(具体的には、復号化された係数がゼロ値であるかどうかに基づき、ラン・カウントをリセットするか、または増分する)。   The decoder references the number used by the encoder to represent the coefficient in arithmetic coding and extracts the value of the coefficient from that number, thereby decoding the next quantized coefficient using DCBA (1720). Next, the decoder updates the run count based on the decoded coefficient (1730) (specifically, resets the run count based on whether the decoded coefficient is zero). Or increment).

復号器は、ラン・カウントがしきい値を超えているかどうかを調べる(1740)。ラン・カウントしきい値は、静的であること、または係数のブロックのサイズ(例えば、256個の係数の入力シーケンス中の4つのゼロ)などのファクタに依存すること、または何らかの別の形で適応することが可能である。ラン・カウントがしきい値を超えた場合、復号器は、ラン・レベル復号化を使用して符号化された係数を復号化することを開始する(1750)。ラン・レベル復号化は、例えば、ハフマン復号化、ベクトル・ハフマン復号化、またはCBA復号化(場合により、前述した以前のCBA復号化とは異なるコンテキストを伴う)を含むいくつかの仕方で行われることが可能である。   The decoder checks (1740) whether the run count exceeds a threshold. The run count threshold is static or depends on factors such as the size of the block of coefficients (eg, four zeros in an input sequence of 256 coefficients), or in some other way It is possible to adapt. If the run count exceeds the threshold, the decoder begins decoding 1750 the coefficients that were encoded using run level decoding. Run level decoding is performed in several ways including, for example, Huffman decoding, vector Huffman decoding, or CBA decoding (possibly with a different context than the previous CBA decoding described above). It is possible.

一部の実施形態では、ラン・レベル復号化は、1つのテーブルが、より短いランの可能性が高いデータを復号化するために使用され、もう1つのテーブルが、より長いランの可能性が高いデータを復号化するために使用される、2つの可能なハフマン符号テーブルを有するハフマン符号化を使用して行われる。復号器が符号を受け取った際、その符号中のシグナル・ビットは、どちらのテーブルを符号器が使用したかを示し、復号器は、適切なテーブルの中でその符号をルックアップする。
ラン・カウントがしきい値を超えていない場合、復号器は、復号化が終わるまで係数を処理することを続ける(1760)。
In some embodiments, run level decoding is used where one table is used to decode data that is more likely to be a shorter run and another table is likely to be a longer run. This is done using Huffman coding with two possible Huffman code tables used to decode high data. When the decoder receives a code, the signal bit in the code indicates which table the encoder used, and the decoder looks up the code in the appropriate table.
If the run count does not exceed the threshold, the decoder continues to process the coefficients until decoding is complete (1760).

VI.テーブルのない符号化(table-less coding)
ハフマン符号化を使用する一部の実施形態では、図2の符号器(200)のような符号器が、ハフマン符号テーブルに関するエスケープ符号を使用して、特定のシンボル(またはシンボルの組合せ)がテーブルの中で関連する符号を有さないことを示す。ときとして、エスケープ符号は、特定のシンボル(例えば、レベルに関するスカラー・ハフマン符号テーブルの中で表わされていないレベル、ラン・レングスに関するスカラー・ハフマン符号テーブルの中で表わされていないラン・レングス等に関するスカラー値)が、ハフマン・テーブルからの符号を使用せずに符号化されるべきことを示すのに使用される。言い換えれば、そのシンボルは、「テーブルのない(table-less)」符号化テクニックを使用して符号化されることになる。
VI. Table-less coding
In some embodiments using Huffman coding, an encoder such as the encoder (200) of FIG. 2 uses an escape code for the Huffman code table to table a particular symbol (or combination of symbols). Indicates that there is no associated code. Occasionally, an escape code is a specific symbol (eg, a level not represented in the scalar Huffman code table for the level, a run length not represented in the scalar Huffman code table for the run length. Is used to indicate that it should be encoded without using the code from the Huffman table. In other words, the symbol will be encoded using a “table-less” encoding technique.

算術符号化を使用する一部の実施形態では、エスケープ符号は、ときとして、特定のシンボルが算術符号化されるべきでないことを示すのに使用される。そのシンボルは、ハフマン・テーブルからの符号を使用して符号化されることが可能であり、または「テーブルのない」符号化テクニックを使用して符号化されることも可能である。   In some embodiments that use arithmetic encoding, escape codes are sometimes used to indicate that a particular symbol should not be arithmetic encoded. The symbols can be encoded using codes from the Huffman table, or can be encoded using "tableless" encoding techniques.

一部のテーブルのない符号化技術は、固定長の符号を使用してシンボルを表わす。ただし、固定長の符号を使用することは、不必要に長い符号をもたらす可能性がある。   Some tableless coding techniques represent symbols using a fixed-length code. However, using a fixed-length code can result in an unnecessarily long code.

したがって、一部の実施形態では、テーブルのない符号化テクニックにおいて、量子化された変換係数などのシンボルが、それ以外で符号化されない場合、可変長の符号を使用して表わされる。図3の復号器(300)のような復号器が、対応するテーブルのない復号化テクニックを実施する。   Thus, in some embodiments, in a tableless encoding technique, symbols such as quantized transform coefficients are represented using variable length codes if they are not otherwise encoded. A decoder such as the decoder (300) of FIG. 3 performs a decoding technique without a corresponding table.

例えば、テーブル6が、そのようなテーブルのない符号化テクニックの一実装形態に関する擬似コードを示している。   For example, Table 6 shows pseudo code for one implementation of an encoding technique without such a table.

テーブル6:一実装形態におけるテーブルのない符号化テクニックのための擬似コード
If (value < 28) {
Send “0”;
Send value using 8 bits;
}
else if (value < 216) {
Send “10”;
Send value using 16 bits
}
else if (value < 224) {
Send “110”;
Send value using 24 bits;
}
else if (value < 231) {
Send “111”;
Send value using 31 bits;
}
Table 6: Pseudocode for tableless encoding technique in one implementation
If (value <2 8 ) {
Send “0”;
Send value using 8 bits;
}
else if (value <2 16 ) {
Send “10”;
Send value using 16 bits
}
else if (value <2 24 ) {
Send “110”;
Send value using 24 bits;
}
else if (value <2 31 ) {
Send “111”;
Send value using 31 bits;
}

係数を符号化するのに符号器が使用するビットの数は、その係数の値に依存する。符号器は、1ビットの値、2ビットの値、または3ビットの値を送って値を符号化するのに使用されるビットの数を示し、次に、8ビット、16ビット、24ビット、または31ビットを使用して符号化された値自体を送る。係数を符号化するのに符号器が使用するビットの総数は、28より小さい値に関する9ビットから、224に等しいか、それより大きいが、231より小さい値に対する34ビットまでの範囲である。 The number of bits that the encoder uses to encode a coefficient depends on the value of the coefficient. The encoder indicates the number of bits used to encode the value by sending a 1-bit value, 2-bit value, or 3-bit value, then 8 bits, 16 bits, 24 bits, Or send the value itself encoded using 31 bits. The total number of bits used by the encoder to encode the coefficients ranges from 9 bits for values less than 2 8 to 34 bits for values less than 2 31 but greater than or equal to 2 24. is there.

一続きの係数に関して、送られる平均のビットは、
P(0≦C<28*9+P(28≦C<216*18+P(216≦C<224*27+P(224≦C<231*34
であり、ただし、P(m≦C<n)は、入力シーケンスにおける示された範囲内の係数Cの生起確率である。したがって、係数の大きいパーセンテージが小さい(例えば、216より小さい)場合、相当なビットの節約が可能である。
For a series of coefficients, the average bit sent is
P (0 ≦ C <2 8 ) * 9 + P (2 8 ≦ C <2 16 ) * 18 + P (2 16 ≦ C <2 24 ) * 27 + P (2 24 ≦ C <2 31 ) * 34
Where P (m ≦ C <n) is the probability of occurrence of coefficient C within the indicated range in the input sequence. Thus, if the large percentage of coefficients is small (eg, less than 2 16 ), significant bit savings are possible.

代替として、符号器および復号器は、別のテーブルのない符号化テクニック/復号化テクニックを使用する。   Alternatively, the encoder and decoder use an encoding / decoding technique without a separate table.

様々な前述の実施形態に関連して本発明の原理を説明し、例示してきたが、そのような原理を逸脱することなく、前述の実施形態の構成および詳細を変更できることが認められよう。本明細書で説明したプログラム、プロセス、または方法は、特に明記しない限り、いずれの特定のタイプのコンピューティング環境にも関連する、または限定されることはないことを理解されたい。様々なタイプの汎用コンピューティング環境または特殊化されたコンピューティング環境が、本明細書で説明した教示による動作とともに使用すること、またはその動作を行うことが可能である。ソフトウェアで示した前述の実施形態の要素は、ハードウェアで実装することができ、またその逆も該当する。   While the principles of the invention have been described and illustrated in connection with various previous embodiments, it will be appreciated that the configuration and details of the foregoing embodiments may be changed without departing from such principles. It is to be understood that the programs, processes, or methods described herein are not related or limited to any particular type of computing environment, unless explicitly stated otherwise. Various types of general purpose or specialized computing environments can be used with or perform operations in accordance with the teachings described herein. Elements of the above-described embodiments shown in software can be implemented in hardware and vice versa.

本発明の原理を適用することができる多くの可能な実施形態に鑑みて、頭記の特許請求の範囲の範囲および趣旨に含まれる可能性があるようなすべての実施形態、ならびに等価形態を本発明として主張する。   In view of the many possible embodiments to which the principles of the present invention may be applied, all embodiments that may fall within the scope and spirit of the appended claims, as well as equivalent forms, are described herein. Claim as an invention.

100 コンピューティング環境
110 処理ユニット
120 メモリ
130 基本的構成
140 ストレージ
150 入力デバイス
160 出力デバイス
170 通信接続
180 ソフトウェア
100 computing environment 110 processing unit 120 memory 130 basic configuration 140 storage 150 input device 160 output device 170 communication connection 180 software

Claims (12)

コンピュータ・システムにおいて、複数の符号化されたベクトルを備えるデータを復号化する方法であって、
第1の符号を復号するステップを備え、前記第1の符号を復号化するステップは、
前記第1の符号を受け取るステップと、
一群の複数の符号テーブル中の第1の符号テーブルで前記第1の符号をルックアップするステップと、
前記第1の符号が、前記第1の符号テーブルからのエスケープ符号であるか否かを判定するステップと、
前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号であった場合に、前記第1の符号テーブルの中に含まれない第2の符号を受け取り、前記第2の符号を復号化するステップと、
前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号ではなかった場合に、前記第1の符号テーブルで、第1の数のシンボルを有する第1のベクトルをルックアップし、前記第1のベクトルの前記第1の数のシンボルを復号化されたデータストリームの中に含めるステップであって、前記第1のベクトルは、前記第1の符号テーブルの前記第1の符号と関連づけられているステップと
を備え、
前記第1の数の値は、前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号であるか、前記エスケープ符号ではないかについての基準であり、
前記第2の符号は、第2の符号テーブルで、第2の数のシンボルを有する第2のベクトルと関連づけられ、
前記第1の数は、前記第2の数と2倍だけ異なることを特徴とすることを特徴とする方法。
In a computer system, a method for decoding data comprising a plurality of encoded vectors, comprising:
Decoding the first code, and decoding the first code comprises:
Receiving the first code;
Looking up the first code in a first code table in a group of code tables;
Determining whether the first code is an escape code from the first code table;
If the first code is the escape code from the first code table, a second code not included in the first code table is received and the second code is decoded And steps to
If the first code is not the escape code from the first code table, look up a first vector having a first number of symbols in the first code table; Including the first number of symbols of a vector in a decoded data stream, wherein the first vector is associated with the first code of the first code table. And comprising steps
The value of the first number is a criterion as to whether the first code is the escape code from the first code table or not the escape code;
The second code is associated with a second vector having a second number of symbols in a second code table;
The method of claim 1, wherein the first number differs from the second number by a factor of two.
前記第2の符号を復号化するステップは、
前記一群の複数の符号テーブル中の前記第2の符号テーブルで前記第2の符号をルックアップするステップと、
前記第2の符号が前記第2の符号テーブルからのエスケープ符号であるか否かを判定するステップと、
前記第2の符号が前記第2の符号テーブルからの前記エスケープ符号であった場合に、前記第2の符号テーブルの中に含まれない第3の符号を受け取り、前記第3の符号を復号化するステップと、
前記第2の符号が前記第2の符号テーブルからの前記エスケープ符号ではなかった場合に、前記第2の符号テーブルで、前記第2の数のシンボルを有する前記第2のベクトルをルックアップし、前記第2のベクトルの前記第2の数のシンボルを前記復号化されたデータストリームの中に含めるステップと
を備え、
前記第2の符号テーブルは、前記第1の符号テーブルとは異なることを特徴とする請求項1に記載の方法。
Decoding the second code comprises:
Looking up the second code in the second code table of the group of code tables;
Determining whether the second code is an escape code from the second code table;
If the second code is the escape code from the second code table, a third code not included in the second code table is received and the third code is decoded And steps to
If the second code is not the escape code from the second code table, look up the second vector having the second number of symbols in the second code table; Including the second number of symbols of the second vector in the decoded data stream;
The method of claim 1, wherein the second code table is different from the first code table.
前記第2の符号は、前記第2の符号テーブルからの前記エスケープ符号であり、
前記第3の符号は、1つのシンボルを有する第3のベクトルと関連づけられ、
前記第3の符号を復号化するステップは、テーブルのない復号化テクニックを使用して前記1つのシンボルを見つけ出し、前記1つのシンボルを前記復号化されたデータストリームの中に含めるステップを備えることを特徴とする請求項2に記載の方法。
The second code is the escape code from the second code table;
The third code is associated with a third vector having one symbol;
Decoding the third code comprises finding the one symbol using a tableless decoding technique and including the one symbol in the decoded data stream. 3. A method according to claim 2, characterized in that
前記第1の数は4であり、
前記第1の符号テーブルは、(a)それぞれが4つのシンボルを有するシンボルの組合せに、第1の符号の値を関連づける複数の関連づけと、(b)前記第1の符号テーブルからの前記エスケープ符号とを備え、
前記一群の複数の符号テーブルは、前記第2の符号テーブルを備え、
前記第2の符号テーブルは、(c)それぞれが2つのシンボルを有するシンボルの組合せに、第2の符号の値を関連づける複数の関連づけと、(d)前記第2の符号テーブルからのエスケープ符号とを備え、
前記第2の符号テーブルからのエスケープ符号は、(e)個別のシンボルに第3の符号の値を関連づける複数の関連づけと、(f)第3の符号テーブルからのエスケープ符号とを備える第3の符号テーブルを用いた個別のシンボルの復号化への遷移を示し、
前記第3の符号テーブルからの前記エスケープ符号は、テーブルのない復号化テクニックを使用した個別のシンボルの復号化への遷移を示すことを特徴とする請求項1に記載の方法。
The first number is four;
The first code table includes: (a) a plurality of associations associating a value of the first code with a combination of symbols each having four symbols; and (b) the escape code from the first code table. And
The group of code tables includes the second code table;
The second code table includes: (c) a plurality of associations that associate a value of the second code with a combination of symbols each having two symbols; and (d) an escape code from the second code table; With
The escape code from the second code table comprises: (e) a plurality of associations for associating the value of the third code with individual symbols; and (f) an escape code from the third code table. Show the transition to decoding of individual symbols using a code table,
The method of claim 1, wherein the escape code from the third code table indicates a transition to decoding individual symbols using a tableless decoding technique.
コンピュータ・システムにおいて、複数のベクトルを備えるデータを符号化する方法であって、
第1の数のシンボルを有する第1のベクトルを符号化するステップを備え、前記第1のベクトルを符号化するステップは、
一群の複数の符号テーブル中の第1の符号テーブルに前記第1のベクトルを表す符号が含まれるか否かを判定するステップと、
前記第1の符号テーブルに前記第1のベクトルを表す前記符号が含まれない場合に、前記第1の符号テーブルからのエスケープ符号を符号化されたデータストリームの中に含めるステップと、
前記第1の符号テーブルに前記第1のベクトルを表す前記符号が含まれる場合に、前記第1のベクトルを表す前記符号を前記符号化されたデータストリームの中に含めるステップと
を備え、
前記第1の数の値は、前記第1の符号テーブルに前記第1のベクトルを表す前記符号が含まれるか否かについての基準であり、
前記第1の符号テーブルに、前記第1のベクトルを表す前記符号が含まれず、前記方法は、
第2の数のシンボルを有する第2のベクトルを符号化するステップをさらに備え、前記第2のベクトルを符号化するステップは、
前記一群の複数の符号テーブルの中の第2の符号テーブルに前記第2にベクトルを表す符号が含まれるか否かを判定するステップと、
前記第2の符号テーブルに前記第2のベクトルを表す前記符号が含まれない場合に、前記第2の符号テーブルからのエスケープ符号を前記符号化されたデータストリームの中に含めるステップと、
前記第2の符号テーブルに前記第2のベクトルを表す前記符号が含まれる場合に、前記第2のベクトルを表す前記符号を前記符号化されたデータストリームの中に含めるステップと
を備え、
前記第2の数の値は、前記第2の符号テーブルに前記第2のベクトルを表す前記符号が含まれるか否かについての基準であり、
前記第2の符号テーブルは前記第1の符号テーブルと異なり、
前記第1の数は、前記第2の数と2倍だけ異なることを特徴とする方法。
A method for encoding data comprising a plurality of vectors in a computer system, comprising:
Encoding a first vector having a first number of symbols, encoding the first vector comprises:
Determining whether a code representing the first vector is included in a first code table in a group of a plurality of code tables;
Including an escape code from the first code table in the encoded data stream if the first code table does not include the code representing the first vector;
Including the code representing the first vector in the encoded data stream when the code representing the first vector is included in the first code table;
The value of the first number is a criterion as to whether or not the code representing the first vector is included in the first code table;
The code representing the first vector is not included in the first code table, and the method includes:
Encoding a second vector having a second number of symbols, encoding the second vector comprises the steps of:
Determining whether a second code table in the group of code tables includes a code representing the second vector;
Including an escape code from the second code table in the encoded data stream if the second code table does not include the code representing the second vector;
Including the code representing the second vector in the encoded data stream when the code representing the second vector is included in the second code table;
The value of the second number is a criterion as to whether or not the code representing the second vector is included in the second code table;
The second code table is different from the first code table,
The method wherein the first number differs from the second number by a factor of two.
前記第2の符号テーブルに、前記第2のベクトルを表す前記符号が含まれず、
前記方法は、
テーブルのない符号化テクニックを使用して、1つのシンボルを有する第3のベクトルを符号化するステップと、
前記1つのシンボルの符号化された表現を前記符号化されたデータストリームの中に含めるステップと
をさらに備えることを特徴とする請求項5に記載の方法。
The code representing the second vector is not included in the second code table,
The method
Encoding a third vector having one symbol using a tableless encoding technique;
6. The method of claim 5, further comprising including an encoded representation of the one symbol in the encoded data stream.
前記第1の数は4であり、
前記第1の符号テーブルは、(a)それぞれが4つのシンボルを有するシンボルの組合せに、第1の符号の値を関連づける複数の関連づけと、(b)前記第1の符号テーブルからの前記エスケープ符号とを備え、
前記一群の複数の符号テーブルは、前記第2の符号テーブルを備え、
前記第2の符号テーブルは、(c)それぞれが2つのシンボルを有するシンボルの組合せに、第2の符号の値を関連づける複数の関連づけと、(d)前記第2の符号テーブルからのエスケープ符号とを備え、
前記第2の符号テーブルからのエスケープ符号は、(e)個別のシンボルに第3の符号の値を関連づける複数の関連づけと、(f)第3の符号テーブルからのエスケープ符号とを備える第3の符号テーブルを用いた個別のシンボルの符号化への遷移を示し、
前記第3の符号テーブルからの前記エスケープ符号は、テーブルのない符号化テクニックを使用した個別のシンボルの符号化への遷移を示すことを特徴とする請求項5に記載の方法。
The first number is four;
The first code table includes: (a) a plurality of associations associating a value of the first code with a combination of symbols each having four symbols; and (b) the escape code from the first code table. And
The group of code tables includes the second code table;
The second code table includes: (c) a plurality of associations that associate a value of the second code with a combination of symbols each having two symbols; and (d) an escape code from the second code table; With
The escape code from the second code table comprises: (e) a plurality of associations for associating the value of the third code with individual symbols; and (f) an escape code from the third code table. Show the transition to encoding of individual symbols using the code table,
6. The method of claim 5, wherein the escape code from the third code table indicates a transition to encoding individual symbols using a tableless encoding technique.
請求項5に記載の方法をコンピュータに実行させるためのプログラムを記憶したコンピュータ可読記憶媒体。   A computer-readable storage medium storing a program for causing a computer to execute the method according to claim 5. 複数の符号化されたベクトルを備えるデータを復号化する方法をコンピュータに実行させるためのプログラムを記憶したコンピュータ可読記憶媒体であって、
第1の符号を復号するステップを備え、前記第1の符号を復号化するステップは、
前記第1の符号を受け取るステップと、
一群の複数の符号テーブル中の第1の符号テーブルで前記第1の符号をルックアップするステップと、
前記第1の符号が、前記第1の符号テーブルからのエスケープ符号であるか否かを判定するステップと、
前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号であった場合に、前記第1の符号テーブルの中に含まれない第2の符号を受け取り、前記第2の符号を復号化するステップと、
前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号ではなかった場合に、前記第1の符号テーブルで、第1の数のシンボルを有する第1のベクトルをルックアップし、前記第1のベクトルの前記第1の数のシンボルを復号化されたデータストリームの中に含めるステップであって、前記第1のベクトルは、前記第1の符号テーブルの前記第1の符号と関連づけられているステップと
を備え、
前記第1の数の値は、前記第1の符号が前記第1の符号テーブルからの前記エスケープ符号であるか、前記エスケープ符号ではないかについての基準であり、
前記第2の符号は、第2の符号テーブルで、第2の数のシンボルを有する第2のベクトルと関連づけられ、
前記第1の数は、前記第2の数と2倍だけ異なることを特徴とすることを特徴とするコンピュータ可読記憶媒体。
A computer-readable storage medium storing a program for causing a computer to execute a method of decoding data comprising a plurality of encoded vectors,
Decoding the first code, and decoding the first code comprises:
Receiving the first code;
Looking up the first code in a first code table in a group of code tables;
Determining whether the first code is an escape code from the first code table;
If the first code is the escape code from the first code table, a second code not included in the first code table is received and the second code is decoded And steps to
If the first code is not the escape code from the first code table, look up a first vector having a first number of symbols in the first code table; Including the first number of symbols of a vector in a decoded data stream, wherein the first vector is associated with the first code of the first code table. And comprising steps
The value of the first number is a criterion as to whether the first code is the escape code from the first code table or not the escape code;
The second code is associated with a second vector having a second number of symbols in a second code table;
The computer-readable storage medium, wherein the first number differs from the second number by a factor of two.
前記第2の符号を復号化するステップは、
前記一群の複数の符号テーブル中の前記第2の符号テーブルで前記第2の符号をルックアップするステップと、
前記第2の符号が前記第2の符号テーブルからのエスケープ符号であるか否かを判定するステップと、
前記第2の符号が前記第2の符号テーブルからの前記エスケープ符号であった場合に、前記第2の符号テーブルの中に含まれない第3の符号を受け取り、前記第3の符号を復号化するステップと、
前記第2の符号が前記第2の符号テーブルからの前記エスケープ符号ではなかった場合に、前記第2の符号テーブルで、前記第2の数のシンボルを有する前記第2のベクトルをルックアップし、前記第2のベクトルの前記第2の数のシンボルを前記復号化されたデータストリームの中に含めるステップと
を備え、
前記第2の符号テーブルは、前記第1の符号テーブルとは異なることを特徴とする請求項9に記載のコンピュータ可読記憶媒体。
Decoding the second code comprises:
Looking up the second code in the second code table of the group of code tables;
Determining whether the second code is an escape code from the second code table;
If the second code is the escape code from the second code table, a third code not included in the second code table is received and the third code is decoded And steps to
If the second code is not the escape code from the second code table, look up the second vector having the second number of symbols in the second code table; Including the second number of symbols of the second vector in the decoded data stream;
The computer-readable storage medium according to claim 9, wherein the second code table is different from the first code table.
前記第2の符号は、前記第2の符号テーブルからの前記エスケープ符号であり、
前記第3の符号は、1つのシンボルを有する第3のベクトルと関連づけられ、
前記第3の符号を復号化するステップは、テーブルのない復号化テクニックを使用して前記1つのシンボルを見つけ出し、前記1つのシンボルを前記復号化されたデータストリームの中に含めるステップを備えることを特徴とする請求項10に記載のコンピュータ可読記憶媒体。
The second code is the escape code from the second code table;
The third code is associated with a third vector having one symbol;
Decoding the third code comprises finding the one symbol using a tableless decoding technique and including the one symbol in the decoded data stream. The computer-readable storage medium according to claim 10.
前記第1の数は4であり、
前記第1の符号テーブルは、(a)それぞれが4つのシンボルを有するシンボルの組合せに、第1の符号の値を関連づける複数の関連づけと、(b)前記第1の符号テーブルからの前記エスケープ符号とを備え、
前記一群の複数の符号テーブルは、前記第2の符号テーブルを備え、
前記第2の符号テーブルは、(c)それぞれが2つのシンボルを有するシンボルの組合せに、第2の符号の値を関連づける複数の関連づけと、(d)前記第2の符号テーブルからのエスケープ符号とを備え、
前記第2の符号テーブルからのエスケープ符号は、(e)個別のシンボルに第3の符号の値を関連づける複数の関連づけと、(f)第3の符号テーブルからのエスケープ符号とを備える第3の符号テーブルを用いた個別のシンボルの復号化への遷移を示し、
前記第3の符号テーブルからの前記エスケープ符号は、テーブルのない復号化テクニックを使用した個別のシンボルの復号化への遷移を示すことを特徴とする請求項9に記載のコンピュータ可読記憶媒体。
The first number is four;
The first code table includes: (a) a plurality of associations associating a value of the first code with a combination of symbols each having four symbols; and (b) the escape code from the first code table. And
The group of code tables includes the second code table;
The second code table includes: (c) a plurality of associations that associate a value of the second code with a combination of symbols each having two symbols; and (d) an escape code from the second code table; With
The escape code from the second code table comprises: (e) a plurality of associations for associating the value of the third code with individual symbols; and (f) an escape code from the third code table. Show the transition to decoding of individual symbols using a code table,
The computer-readable storage medium of claim 9, wherein the escape code from the third code table indicates a transition to decoding individual symbols using a tableless decoding technique.
JP2010086985A 2002-09-04 2010-04-05 Entropy coding to adapt coding between level mode and run length / level mode Expired - Lifetime JP5006426B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US40853802P 2002-09-04 2002-09-04
US60/408,538 2002-09-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003311939A Division JP4728568B2 (en) 2002-09-04 2003-09-03 Entropy coding to adapt coding between level mode and run length / level mode

Publications (2)

Publication Number Publication Date
JP2010160518A JP2010160518A (en) 2010-07-22
JP5006426B2 true JP5006426B2 (en) 2012-08-22

Family

ID=33130515

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2003311939A Expired - Lifetime JP4728568B2 (en) 2002-09-04 2003-09-03 Entropy coding to adapt coding between level mode and run length / level mode
JP2010086985A Expired - Lifetime JP5006426B2 (en) 2002-09-04 2010-04-05 Entropy coding to adapt coding between level mode and run length / level mode
JP2010086984A Expired - Lifetime JP5343032B2 (en) 2002-09-04 2010-04-05 Entropy coding to adapt coding between level mode and run length / level mode
JP2013146784A Expired - Lifetime JP5688861B2 (en) 2002-09-04 2013-07-12 Entropy coding to adapt coding between level mode and run length / level mode

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2003311939A Expired - Lifetime JP4728568B2 (en) 2002-09-04 2003-09-03 Entropy coding to adapt coding between level mode and run length / level mode

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2010086984A Expired - Lifetime JP5343032B2 (en) 2002-09-04 2010-04-05 Entropy coding to adapt coding between level mode and run length / level mode
JP2013146784A Expired - Lifetime JP5688861B2 (en) 2002-09-04 2013-07-12 Entropy coding to adapt coding between level mode and run length / level mode

Country Status (1)

Country Link
JP (4) JP4728568B2 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
KR101485339B1 (en) 2008-09-29 2015-01-26 삼성전자주식회사 Apparatus and method for lossless coding and decoding
US8576927B2 (en) 2008-10-10 2013-11-05 Nippon Telegraph And Telephone Corporation Encoding method, encoding device, decoding method, decoding device, program, and recording medium
CN101615910B (en) * 2009-05-31 2010-12-22 华为技术有限公司 Method, device and equipment of compression coding and compression coding method
JP5754899B2 (en) 2009-10-07 2015-07-29 ソニー株式会社 Decoding apparatus and method, and program
JP5850216B2 (en) 2010-04-13 2016-02-03 ソニー株式会社 Signal processing apparatus and method, encoding apparatus and method, decoding apparatus and method, and program
JP5609737B2 (en) 2010-04-13 2014-10-22 ソニー株式会社 Signal processing apparatus and method, encoding apparatus and method, decoding apparatus and method, and program
JP5652658B2 (en) 2010-04-13 2015-01-14 ソニー株式会社 Signal processing apparatus and method, encoding apparatus and method, decoding apparatus and method, and program
JP6103324B2 (en) * 2010-04-13 2017-03-29 ソニー株式会社 Signal processing apparatus and method, and program
JP5707842B2 (en) 2010-10-15 2015-04-30 ソニー株式会社 Encoding apparatus and method, decoding apparatus and method, and program
JP2012182753A (en) * 2011-03-02 2012-09-20 Sharp Corp Image decoding device, image coding device, and data structure of coding data
RU2464649C1 (en) 2011-06-01 2012-10-20 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Audio signal processing method
JP5942358B2 (en) 2011-08-24 2016-06-29 ソニー株式会社 Encoding apparatus and method, decoding apparatus and method, and program
CN105531762B (en) 2013-09-19 2019-10-01 索尼公司 Code device and method, decoding apparatus and method and program
JP6593173B2 (en) 2013-12-27 2019-10-23 ソニー株式会社 Decoding apparatus and method, and program
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

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0191587A (en) * 1987-10-02 1989-04-11 Kokusai Denshin Denwa Co Ltd <Kdd> Prediction code vector quantizing system
JPH0773249B2 (en) * 1989-06-29 1995-08-02 富士通株式会社 Speech encoding / decoding transmission method
DE19840835C2 (en) * 1998-09-07 2003-01-09 Fraunhofer Ges Forschung Apparatus and method for entropy coding information words and apparatus and method for decoding entropy coded information words
US6300888B1 (en) * 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
JP3434260B2 (en) * 1999-03-23 2003-08-04 日本電信電話株式会社 Audio signal encoding method and decoding method, these devices and program recording medium
JP3323175B2 (en) * 1999-04-20 2002-09-09 松下電器産業株式会社 Encoding device
JP3419371B2 (en) * 1999-12-28 2003-06-23 松下電器産業株式会社 Code length calculation device and coding device
JP4508490B2 (en) * 2000-09-11 2010-07-21 パナソニック株式会社 Encoding device and decoding device
JP3580251B2 (en) * 2000-12-27 2004-10-20 日本電気株式会社 Data compression apparatus, compression method, and recording medium recording control program therefor

Also Published As

Publication number Publication date
JP2010160517A (en) 2010-07-22
JP2013250563A (en) 2013-12-12
JP5688861B2 (en) 2015-03-25
JP2010160518A (en) 2010-07-22
JP2004258603A (en) 2004-09-16
JP5343032B2 (en) 2013-11-13
JP4728568B2 (en) 2011-07-20

Similar Documents

Publication Publication Date Title
JP5688861B2 (en) Entropy coding to adapt coding between level mode and run length / level mode
US9390720B2 (en) Entropy encoding and decoding using direct level and run-length/level context-adaptive arithmetic coding/decoding modes
US7433824B2 (en) Entropy coding by adapting coding between level and run-length/level modes
JP5658307B2 (en) Frequency segmentation to obtain bands for efficient coding of digital media.
KR20010021226A (en) A digital acoustic signal coding apparatus, a method of coding a digital acoustic signal, and a recording medium for recording a program of coding the digital acoustic signal
KR20080025404A (en) Modification of codewords in dictionary used for efficient coding of digital media spectral data
EP1854218B1 (en) Lossless encoding of information with guaranteed maximum bitrate
EP1187338A2 (en) Method and apparatus for performing variable-size vector entropy coding
JP2006163414A (en) Method and apparatus for transforming audio signal, method and apparatus for adaptively encoding audio signal, method and apparatus for inversely transforming audio signal, and method and apparatus for adaptively decoding audio signal
JP3900000B2 (en) Encoding method and apparatus, decoding method and apparatus, and program
JP4848049B2 (en) Encoding method, decoding method, apparatus thereof, program, and recording medium
JPH0934493A (en) Acoustic signal encoding device, decoding device, and acoustic signal processing device
JPH11177435A (en) Quantizer

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120518

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120524

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5006426

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term