JP6909265B2 - オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置 - Google Patents

オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置 Download PDF

Info

Publication number
JP6909265B2
JP6909265B2 JP2019181619A JP2019181619A JP6909265B2 JP 6909265 B2 JP6909265 B2 JP 6909265B2 JP 2019181619 A JP2019181619 A JP 2019181619A JP 2019181619 A JP2019181619 A JP 2019181619A JP 6909265 B2 JP6909265 B2 JP 6909265B2
Authority
JP
Japan
Prior art keywords
vector
sign
index
leading
input vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019181619A
Other languages
English (en)
Other versions
JP2020024431A (ja
Inventor
スヴェドベリ, ヨナス
ヨナス スヴェドベリ,
Original Assignee
テレフオンアクチーボラゲット エルエム エリクソン(パブル)
テレフオンアクチーボラゲット エルエム エリクソン(パブル)
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=52774513&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP6909265(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by テレフオンアクチーボラゲット エルエム エリクソン(パブル), テレフオンアクチーボラゲット エルエム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エルエム エリクソン(パブル)
Publication of JP2020024431A publication Critical patent/JP2020024431A/ja
Application granted granted Critical
Publication of JP6909265B2 publication Critical patent/JP6909265B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

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

Description

提案される技術は、一般にオーディオ/ビデオ信号の符号化/復号化に関し、特に、オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置に関する。
オーディオ信号又はビデオ信号が送信又記憶されるべき場合に、通常、信号は符号化される。符号化器では、オーディオ/ビデオ信号サンプルを表すベクトルが複数の係数又はパラメータにより表されるように符号化される。それらの係数又はパラメータは、その後、効率よく送信又は記憶可能である。係数又はパラメータが受信又は検索された場合に、元のオーディオ/ビデオ信号を検索するために、係数又はパラメータのオーディオ/ビデオ信号サンプルへの復号化が実行される。オーディオ/ビデオ信号に対して多くの異なる種類の符号化技術が使用されている。
1つの方法はベクトル量子化(VQ)に基づく。無制約ベクトル量子化(VQ)は、特定の長さのグループ化サンプル(ベクトル)に関して最適の量子化方法であることが知られている。しかし、メモリ及び探索の複雑度に制約があるため、構造化ベクトル量子化器が開発されることになった。構造が異なれば、探索の複雑度及びメモリ要件に関連するトレードオフも異なる。そのような方法の1つは利得−形状ベクトル量子化であり、この場合、目標ベクトルxは、形状ベクトルvec及び利得Gを使用して次のように表される。
Figure 0006909265
本概念は、目標ベクトルを直接量子化するのではなく、{vec,G}の対を量子化することである。次に、正規化形状入力に合わせて調整された形状量子化器及び信号のダイナミクスを処理する利得量子化器を使用して、利得成分及び形状成分が符号化される。ダイナミクス及び形状(又は微細構造)への分割は聴知覚モデルによく適合するので、この構造は、例えばオーディオ符号化でよく使用されている。
まず、構造の知識を使用して、選択された構造化ベクトル量子化器の有効エントリが探索される(例えば、L1(絶対振幅)−正規化又はL2(エネルギー)−正規化)。有効ベクトルが発見された後、その特定のベクトルを表すインデックス(又は符号語)を効率よく作成し、次に、そのインデックスを受信機へ送信する必要がある。インデックス作成(インデクシング又は列挙としても知られる)は、選択された構造の特性を使用し、構造化VQで発見されたベクトルに関して固有のインデックス(符号語)を作成する。
受信側では、復号器は、インデックスを符号化器側で判定された同じベクトルに効率よく分解する必要がある。この分解は、大型テーブルルックアップを使用することにより動作に関して非常に低い複雑度で実行可能であるが、巨大な読み取り専用メモリ(ROM)テーブルを記憶するためのコストが必要となる。あるいは、分解が選択された構造の知識と、おそらくはインデックスをアルゴリズムによって固有ベクトルに効率よく分解するために利用可能な目標ハードウェア数値演算とを使用するように分解(デインデクシングとしても知られる)を設計できる。
適切に設計された構造化VQは、100万命令毎秒(MOPS)に関連して且つ要求されるプログラムROM及びダイナミックランダムアクセスメモリ(RAM)に関連して、また、テーブルROMに関連して、符号化器の探索の複雑度、符号化器のインデクシングの複雑度及び復号器のデインデクシングの複雑度の均衡を適切に保つ。
CELT、IETF/Opus−Audio及びITU−T G.719などの多くのオーディオコーデックは、目標オーディオ信号のスペクトル係数を(修正離散余弦変換(MDCT)ドメインで)符号化するためにエンベロープ及び形状VQ並びにエンベロープ混合利得−形状VQを使用する。CELT/IETF OPUS−AudioがPVQベクトル量子化器を使用するのに対し、G.719は、R=1ビット/次元符号化の場合はRE8代数ベクトル量子化器を使用し、わずかに拡張させ、1ビット/次元より高いVQレートに関しては非常に複雑度の低いD8格子量子化器を使用する。PVQはピラミッドベクトル量子化器を表し、これは、高速探索を可能にするためにL1ノルム(Σabs(vector))を使用するVQである。PVQは極めて効率のよいインデクシングを提供できることもわかっている。PVQはかなり以前から存在していたが、1983〜86年にFischerにより初めて開発された。
PVQ量子化器は、音声符号化器で時間領域及び線形予測(LP)残存ドメインサンプルの符号化、並びに周波数領域離散余弦変換(DCT)係数の符号化にも使用されてきた。他の構造化VQと比較してPVQを使用することの利点は、PVQがどのようなベクトル次元でも当然処理できるのに対し、他の構造化VQは、多くの場合、倍数である次元、例えば、4の倍数又は8の倍数である次元に限定されることである。
オーディオモードのIETF/OPUSコーデックは、32ビットに設定されるPVQインデックス/(短)符号語の最大サイズを有する再帰的PVQインデクシング/デインデクシング方式を採用している。量子化されるべき目標ベクトルが32ビットを超える場合に、当初の目標ベクトルは、すべてのサブベクトルが32ビット短符号語インデクシングドメインに当てはまるまで、更に低い次元に再帰的に2分割される。再帰的2値次元分割の過程で、2つの分割されたサブ目標ベクトルの間にエネルギー関係(量子化角度により表される相対エネルギー)を符号化するための符号語を追加するというコストが追加される。OPUS−Audioでは、取得された低い次元の分割目標サブベクトルに対して構造化PVQ探索が実行される。
最初のCELTコーデック(2009年にValin、Terribery及びMaxwellにより開発された)は、同様のPVQインデクシング/デインデクシング方式(32ビット符号語限界を有する)を採用しているが、CELTの2値次元分割は、探索後、初期PVQ構造化ベクトルを確立した後にインデクシングドメインで実行される。次に、インデクシングすべき整数PVQベクトルは、整数ドメインで32ビットPVQベクトルサブユニット以下になるまで再帰的に縮小される。これも、同様に、分割のために追加符号語を追加することにより実現されるが、この場合には、「左」整数サブベクトルと「右」整数サブベクトルとの整数関係に関して実行されるので、復号器でサブPVQベクトルの各々のL1ノルムを知ることができる。CELT探索後整数インデクシング分割方式はレートを可変にするので(可変合計サイズインデックス)、メディア搬送に固定レート符号化が要求される場合に、これは欠点になりうる。
1997年及び1998年に、Tsern及びMengは、PVQインデクシングの少数の変形の誤り頑健度を調査し、PVQ列挙(インデクシング)の問題を次のようにまとめた(lはベクトル次元であり、kは単位パルスの数である)。
「列挙は、PVQコードブックP(l,k)のすべての可能なベクトルに固有のインデックスを割り当て、PVQコードブックベクトルに分類順序を与える。」
「列挙のための系統的分類は、ピラミッド中のベクトルの数に関する係数公式を通して実行され、これは、すべてのピラミッド列挙技術に共通する概念である。」
「ピラミッドコードブックP(l,k)のベクトルの数はN(l,k)と示される。これは、ceil(log2(N(l,k)))ビットである2値符号語インデックス長に関連する。N(l,k)は、1つのベクトルの整数値がkの絶対和を有することができる方法の数lとみなすことができる。」
Hung他は、PVQインデクシング/列挙方式の1対の変形に関してPVQ符号語のビット誤り頑健性を研究したが、実際のハードウェア実現形態に関してPVQ列挙の実現の効率を向上し且つ十分に複雑度を低下させることに研究の主眼を置かなかった。PVQインデクシングのCELT及びIETF/OPUS−AudioのPVQ実現形態は、32ビット符号なし整数に基づくハードウェアに対して、可能な限り列挙の複雑度を低下させること(符号化及び復号化の双方)に焦点を絞ったが、PVQがビット誤りを起こしやすいことを無視していた。また、1999年に、Ashleyは、サイズ計算及びオフセット計算に使用される二項式組み合わせ関数の複雑度の低い確定的近似の使用によって製品コードPVQ列挙を実現するために複雑度を低下させる方法を提案し、Ashley他は、この技術を階乗パルス符号化(FPC)と呼び、この方式は、ITU−G.718音声コーデック規格で採用されている。
CELT及びIETF/OPUS−Audioでは、PVQ符号語は、1つのビットの粒度により制限されない。これら2つのコーデックは、8分の1(1/8)ビットの分解能を使用する更に粒度の高い方式を使用する。これは、ビットストリームを搬送するためのインタフェースの中間ステップとして算術符号化器/復号器を使用することにより実現され(CELT/OPUS−Audioは、算術符号化器/復号器としてレンジエンコーダ/デコーダを使用する)、PVQ符号語により使用されるビットの数を小数部ビットにすることができる。ビット分解能BITRES=8(8分の1)である場合、小数部PVQ符号語長はceil(log2(N(l,k)*BITRES))/BITRESとなる。例えば、l=64、k=5及びBITRES=8である場合に、この結果、NPVQ=N(l,k)=286680704、log2(NPVQ)=28.0948696及びceil(log2(NPVQ)*BITRES)/BITRES=28.125ビットとなる。小数部ビットを使用することにより、N(l,k)PVQコード語サイズの多くに対して切り捨て損失ははるかに少なくなり、特にコーデックがPVQ量子化器の多くのセル/インスタンスを使用している場合、これによりコーデックの効率は向上する。
構造化ベクトル量子化の一般的な問題点の1つは、効率のよい探索、効率のよい符号語インデクシング及び効率のよい符号語デインデクシングを含む適切な総合的折衷案を見出すということである。
長いインデックス符号語(例えば、400ビット整数符号語)は、インデクシング計算及びデインデクシング計算で大きな複雑度オーバヘッドを発生させる(また、長い符号語の合成及び分解では、それらの大きな整数の乗算及び除算に特別なソフトウェアルーチンが必要になる)。
短いインデックス符号語は効率のよいハードウェア演算子(例えば、32ビットデジタルシグナルプロセッサ(DSP)における単一命令多重データ(SIMD)命令)を使用できるが、目標VQベクトルの事前分割が必要になるか(IETF/OPUS−Audioのように)、又は整数PVQ探索結果ベクトルの探索後分割が必要になる(当初のCELTのように)という問題がある。それらの次元分割方法は、分割情報符号語に関して送信コストを追加し(分割オーバヘッド)、可能なインデックス符号語が短いほど、必要とされる分割の数は多くなり、その結果、長いインデックス符号語の分割のためにオーバヘッドが増加する。例えば、16ビットの短いPVQ符号語では、32ビットの短い符号語より分割の数は多くなり、従って、分割のオーバヘッドは増加する。
PVQ(ピラミッドベクトル量子化器)は、L1正規化によって非常に効率のよい探索を可能にする。通常、絶対和正規化目標ベクトルが作成され、続いて、ベクトル切り捨て(又は丸め)が実行され、次に、PVQベクトル(PVQ-vec)の目標L1ノルムに到達するために、訂正反復の限定セットが実行される。
先に述べた従来の技術のCELT/OPUS短符号語インデクシング方式の問題点は、それらの方式が32ビット整数範囲(符号なし32ビット整数)に限定されることであり、更に、符号付き32ビット整数に関する高速命令のみを支援するDSPアーキテクチャでは効率よく実現できないことである。
ここで提示される技術の目的は、最適の演算ビットサイズを有するハードウェアで処理可能なPVQによりインデクシングされるベクトルのサイズを拡張することである。
この目的及び他の目的は、提案される技術の実施形態により達成される。
第1の態様によれば、オーディオ/ビデオ信号のピラミッドベクトル量子化インデクシングの方法が提供される。方法は、整数入力ベクトルを取得することを備え、整数入力ベクトルはオーディオ/ビデオ信号サンプルを表し、整数入力ベクトルは複数の整数値係数を有し、整数入力ベクトルから先行符号を抽出することを備え、先行符号は、整数入力ベクトル中の終端非零係数の符号であり、終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングすることを備え、出力インデックスは、先行符号と共に前記オーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は、終端非零係数の符号を無視するように設計され、出力インデックスを第1の符号語として出力ビットストリームへ出力し、先行符号を第2の符号語として出力ビットストリームへ出力することを備える。
一実施形態において、抽出は列挙の前に実行される。別の実施形態では、抽出は、列挙と同時に、列挙と協働して実行される。一実施形態において、本開示ではU(n,k)として示されるオフセットパラメータは、先行する0を持たず、先行値kを持たず、先行する正の値を有し且つ正の次の先行符号を有する、nの次元及びkのL1ノルムの整数ベクトルの数として定義される。その実施形態では、オフセットパラメータUは、列挙で使用されるインデクシング方式の計算に使用される。別の実施形態では、インデックス計算は、Uパラメータ及び本開示ではA(n,k)として示されるオフセットパラメータの双方に従属し、このA(n,k)オフセットパラメータは、正の先行値を有し且つ先行する0を持たない、次元n及びkのL1ノルムの整数ベクトルの数として定義される。更に別の実施形態では、列挙におけるインデックス計算は、Uに基づくか又はUとAの組み合わせに基づく列挙手順に一部従属する。言い換えれば、列挙は、最初のMPVQ先行符号列挙段階と、次に続くベクトルの残存部分に対する他の何らかの効率のよいPVQ列挙方式とを採用してもよい。
第2の態様によれば、オーディオ/ビデオ信号のピラミッドベクトル量子化デインデクシングの方法が提供される。方法は、入力ビットストリームから、第1の符号語としての先行符号及び第2の符号語としての入力インデックスを受信することを備え、先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表し、先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトルの中の終端非零係数の符号であり、整数出力ベクトルは複数の整数値係数を有し、終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、ピラミッドベクトル量子化列挙解除方式に従って入力インデックスを整数出力ベクトルにデインデクシングすることを備え、列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計され、整数出力ベクトル中の終端非零係数の符号を受信された先行符号に従って割り当てることを備え、整数出力ベクトルを出力することを備える。
第3の態様によれば、オーディオ/ビデオ信号を通信する方法が提供される。方法は、第1の態様による方法に従って、送信機の符号化器においてオーディオ/ビデオサンプルを符号化することを備え、出力インデックス及び先行符号を送信機から受信機へ送信することを備え、出力インデックス及び先行符号は入力インデックス及び先行符号として受信され、受信機の復号器において、前記入力インデックス及び前記先行符号を第2の態様による方法に従って復号化することを備える。
第4の態様によれば、オーディオ/ビデオ信号をピラミッドベクトル量子化によりインデクシングする符号化器が提供される。符号化器は、複数の整数値係数を有する整数入力ベクトルを取得するように動作し、整数入力ベクトルはオーディオ/ビデオ信号サンプルを表し、符号化器は、整数入力ベクトル中の終端非零係数の符号である先行符号を整数入力ベクトルから抽出するように更に動作し、終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、符号化器は、整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングするように更に動作し、出力インデックスは、先行符号と共にオーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は、終端非零係数の符号を無視するように設計され、符号化器は、第1の符号語としての先行符号及び第2の符号語としての出力インデックスを出力ビットストリームへ出力するように更に動作する。
第5の態様によれば、オーディオ/ビデオ信号をピラミッドベクトル量子化によりデインデクシングする復号器が提供される。復号器は、入力ビットストリームから、第1の符号語としての先行符号及び第2の符号語としての入力インデックスを受信するように動作し、先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表し、先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトルの中の終端非零係数の符号であり、整数出力ベクトルは複数の整数値係数を有し、終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、復号器は、ピラミッドベクトル量子化列挙解除方式に従って入力インデックスを整数出力ベクトルにデインデクシングするように更に動作し、列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計され、復号器は、終端非零係数の符号を受信された先行符号に従って割り当て、整数出力ベクトルを出力するように更に動作する。
第6の態様によれば、オーディオ/ビデオ信号サンプルをピラミッドベクトル量子化インデクシングする符号化器が提供される。符号化器は、整数入力ベクトルを取得する入力モジュールを備え、整数入力ベクトルはオーディオ/ビデオ信号サンプルを表し、整数入力ベクトルは複数の整数値係数を有する。符号化器は、整数入力ベクトルから先行符号を抽出する抽出モジュールを更に備える。先行符号は、整数入力ベクトル中の終端非零係数の符号である。終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方である。符号化器は、整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングするインデクシングモジュールを更に備え、出力インデックスは、先行符号と共にオーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は、終端非零係数の符号を無視するように設計される。符号化器は、第1の符号語としての先行符号及び第2の符号語としての出力インデックスを出力ビットストリームへ出力する出力モジュールを更に備える。
第7の態様によれば、オーディオ/ビデオ信号サンプルを復号化する復号器が提供される。復号器は、第1の符号語としての先行符号及び第2の符号語としての入力インデックスを入力ビットストリームから受信する受信機を備える。先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表す。先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号である。整数出力ベクトルは複数の整数値係数を有する。終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方である。復号器は、入力インデックスをピラミッドベクトル量子化列挙解除方式に従って整数出力ベクトルにデインデクシングするデインデクシングモジュールを更に備え、列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計される。復号器は、整数出力ベクトル中の終端非零係数の符号を受信された先行符号に従って割り当てる割り当てモジュールを更に備える。復号器は、整数出力ベクトルを出力する出力モジュールを更に備える。
第8の態様によれば、第4又は第6の態様による符号化器及び/又は第5又は第7の態様による符号化器を備えるネットワークノードが提供される。
第9の態様によれば、第4又は第6の態様による符号化器及び/又は第5又は第7の態様による符号化器を備えるユーザ機器が提供される。
第10の態様によれば、オーディオ/ビデオ信号サンプルを符号化するコンピュータプログラムが提供され、コンピュータプログラムは、少なくとも1つのプロセッサにより実行される場合に、プロセッサに整数入力ベクトルを取得させる命令を備え、整数入力ベクトルはオーディオ/ビデオ信号サンプルを表す。整数入力ベクトルは複数の整数値係数を有する。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに整数入力ベクトルから先行符号を抽出させる更なる命令を備える。先行符号は、整数入力ベクトル中の終端非零係数の符号である。終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方である。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに、整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングさせる更なる命令を備え、出力インデックスは、前記先行符号と共にオーディオ/ビデオ信号サンプルを表す。ピラミッドベクトル量子化列挙方式は、前記終端非零係数の符号を無視するように設計される。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに第1の符号語としての先行符号及び第2の符号語としての出力インデックスを出力ビットストリームへ出力させる更なる命令を備える。
第11の態様によれば、オーディオ/ビデオ信号を復号化するコンピュータプログラムが提供され、コンピュータプログラムは、少なくとも1つのプロセッサにより実行される場合に、プロセッサに入力ビットストリームから第1の符号語としての先行符号及び第2の符号語としての入力インデックスを受信させる命令を備える。先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表す。先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号である。整数出力ベクトルは複数の整数値係数を有する。終端非零係数は、前記整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方である。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに入力インデックスをピラミッドベクトル量子化列挙解除方式によって整数出力ベクトルにデインデクシングさせる更なる命令を備える。列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計される。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに終端非零係数の符号を受信された先行符号に従って割り当てさせる更なる命令を備える。コンピュータプログラムは、プロセッサにより実行される場合に、プロセッサに整数出力ベクトルを出力させる更なる命令を備える。
第12の態様によれば、第10及び第11の態様のうち少なくとも一方のコンピュータプログラムを備えるキャリアが提供される。キャリアは、電子信号、光信号、電磁信号、磁気信号、電気信号、無線信号、マイクロ波信号又はコンピュータ可読記憶媒体のうち1つである。
ここで提示される技術の利点の1つは、必要とされるインデクシングオフセットに必要なダイナミックレンジが縮小され、それにより、使用されるハードウェアの許容ビットサイズに対する要求が軽減されることである。
インデクシングアルゴリズムは、PVQ構造及びインデックスを先行符号区分に繰り返し分解するのが好ましい。分解は、発見されたインデクシングすべきPVQベクトル中の非零要素の数にかかわらず、常に1つの先行符号が抽出されるように実行される。この複雑度の低い符号抽出は、ランタイム計算PVQインデクシングオフセットに関する縮小ダイナミックレンジの形成を更に可能にする。
特定の一例として、改善されたインデクシングアルゴリズム及びデインデクシングアルゴリズムは、MOPS、RAM、ROM及びプログラム読み取り専用メモリ(P−ROM)のすべてに関して追加コストを限界内に抑えて、32ビットDSPハードウェアで33ビットPVQインデックスの使用を可能にする。更に、アルゴリズムは、符号付き32ビット演算のみを支援するDSPハードウェアにおいて32ビットPVQインデックスの使用を可能にする。
他の利点は、詳細な説明を読むことにより理解されるだろう。
実施形態は、その更なる目的及び利点と共に、添付の図面に関する以下の説明を参照することにより最もよく理解されるだろう。
図1は、オーディオ符号化システムの一例を示す概略図である。 図2は、符号化器の一実施形態を示す概略ブロック図である。 図3は、復号器の一実施形態を示す概略ブロック図である。 図4は、オフセットの一実施形態及び構造中のベクトルの合計との関係を示す表の形の構造図である。 図5は、オーディオ/ビデオサンプルのピラミッドベクトル量子化インデクシングの方法の一実施形態のステップを示すフローチャートである。 図6は、一般的レベルのMPVQインデクシングの一実施形態のステップを示すフローチャートである。 図7A及び図7Bは、MPVQインデックス合成の方法の一実施形態のステップを示すフローチャートである。 図8は、基本MPVQ反復の一実施形態を示す表の形のハイレベル構造図である。 図9は、次元を増加させる場合のMPVQ−A/Uオフセット再帰の3つの実施形態の組み合わせのステップを示すフローチャートである。 図10は、オーディオ/ビデオサンプルのピラミッドベクトル量子化デインデクシングの方法の一実施形態のステップを示すフローチャートである。 図11は、MPVQデインデクシングの一実施形態のステップを示すフローチャートである。 図12は、サイズ及びオフセットを発見する手順の一実施形態のステップを示すフローチャートである。 図13は、MPVQインデックス分解の一実施形態のステップを示すフローチャートである。 図14は、次の係数の振幅を発見する実施形態のステップを示すフローチャートである。 図15は、次の先行符号を発見し、抽出された符号情報を除去する手順の一実施形態のステップを示すフローチャートである。 図16は、次元を1減少させる場合のオフセット更新の手順の一実施形態のステップを示すフローチャートである。 図17Aは、いくつかの共通ハードウェアビット限界に関するPVQ符号語の概要を示す図である。 図17Bは、異なるBIT限界を有する最適なPVQ符号語量子化器に関するビット/サンプルにおける関連R値の概要を示す図である。 図17Cは、結果として得られるPVQの形状整合能力に直接相関される対応する実現可能パルス密度を示す図である。 図17Dは、従来の方式のPVQの例及び新規な方式MPVQに関してインデクシング/デインデクシングの最悪の場合のMOPS命令トレードオフを示す図である。 図18は、事前抽出された先行符号を使用するMPVQインデックス合成の一実施形態のステップを示すフローチャートである。 図19は、符号抽出機能の一実施形態のステップを示すフローチャートである。 図20は、符号化器の一実施形態を概略的に示す図である。 図21は、復号器の一実施形態を概略的に示す図である。 図22は、符号化器の一実施形態を概略的に示す図である。 図23は、復号器の一実施形態を概略的に示す図である。
実施形態は、その更なる目的及び利点と共に、添付の図面に関連する以下の説明を参照することにより最もよく理解されるだろう。
図面を通して、同じ図中符号は、類似する要素又は対応する要素に使用される。
インデクシングアルゴリズムは、PVQ構造及びインデックスを先行符号区分に反復して分解する。分解は、発見されるPVQベクトルのインデクシングすべき非零要素の数にかかわらず常に1つの先行符号が抽出されるように実行される。符号抽出の複雑度がこのように低いため、ランタイム計算PVQインデクシングオフセットに関して縮小ダイナミックレンジを作成できる。
PVQインデクシングオフセットは、PVQインデックス合成及びPVQインデックス分解で使用される。構造化PVQ量子化器は本質的に次元(l)及び単位パルス(k)の大きな変化、従って、ビットレートの大きな変化に対処できるので、通常、オフセットは、符号化されるべき現在の次元及び現在の単位パルスの数に関してのみ計算される。ビットレートはlog2(NPVQ(l,k))に対応し、その結果、可能なPVQオフセットは膨大な量になる。オフセットはダイナミックRAMに記憶される。しかし、l,k限定PVQ量子化器の実現形態は、インデクシング/デインデクシングオフセットを記憶するためにテーブルルックアップを使用してもよい。
提案される技術を更によく理解するために、付録Aにまとめられた従来の技術のIETF/OPUS探索/インデクシング/デインデクシングの説明の抜粋を参照することは有用だろう。
図1には、本明細書で提示される方式を使用するオーディオ符号化システムの一例が示される。これは、MPVQインデクシング及びデインデクシングを使用する符号化器10及び復号器60を有するオーディオコーデックシステムの一例である。第1の部分は、符号化器10に含まれる部分に対応し、図の第2の部分は、復号器60に含まれる部分に対応する。入力サンプル1は符号化器10に提供される。符号化器10は、入力ベクトルを少なくともMPVQインデックス及び先行符号として表すビットストリーム2を提供する。符号化器10からの好ましくは本質的にビットストリーム2と等しいビットストリーム2’は復号器60に提供され、復号器は、MPVQインデックス及び先行符号を再構成サンプル3に復号化する。通常、MPVQインデックス及び先行符号は個別の符号語として提供される。
符号化器10の一実施形態が図2に更に詳細に示される。オーディオ/ビデオサンプルxを表す入力サンプル1が受信される。ノルム計算器12で、ノルム係数gが計算される。ノルム量子化器14は、入力ベクトルのノルムを表すノルム量子化ビットNORMQ-bitsを作成する。それらのビットは、通常、ビットストリームに含まれるように提供される。入力ベクトルは、ノルム係数により正規化ベクトル4として正規化される。ノルム量子化器14は、オプションとして、ノルム係数を例えばNORMQ-bitsとしてビット割り当て部16にも提供しており、ビット割り当て部16は、N及びKの適切な値、すなわち、整数ベクトルの次元及び単位パルスの合計を計算するか、又はルックアップテーブルから検索する。それらの値は、オプションとして、出力ビットストリームで提供されるか、又は受信側でビットストリーム中の先行パラメータから導出されてもよい。PVQ形状探索部18は、正規化ベクトル4をPVQの整数入力ベクトル5に変換する。整数入力ベクトル5はMPVQインデクシング部20に提供され、そこで実際のMPVQインデクシングが実行される。このことは以下に更に詳細に説明される。第1の符号語である先行符号15及び第2の符号語である出力インデックス、通常はMPVQサイズが付随するMPVQインデックス25は、MPVQインデクシング部20からビットストリームマルチプレクサMUX30へ出力される。そこで、異なる情報量が1つのビットストリーム2に併合され、ビットストリームMUX30から出力される。
復号器60の一実施形態が図3に更に詳細に示される。入力ビットストリーム2’はビットストリームDEMUX80に提供される。そこで、情報の異なる部分は複数の部分に分割される。N値及びK値又はNORMQ-bitsなどのビット割り当てを支援する情報はビット割り当て部62に提供され、ビット割り当て部は、N及びKの関連値をサイズ/オフセット計算部64及びMPVQデインデクシング部70へ出力する。サイズ/オフセット計算部64は、N値及びK値並びに通常はMPVQサイズが付随する、再構成MPVQインデックス25’の情報25’から取得され、MPVQデインデクシング区分70に提供されるMPVQサイズに基づいて、オフセット8を計算する。第2の符号語である再構成MPVQインデックス25’及び第1の符号語である再構成先行符号15’もMPVQデインデクシング区分70に提供され、そこで、実際のMPVQデインデクシングが実行される。このことは以下に更に詳細に説明される。符号化器における整数入力ベクトルの再構成である整数出力ベクトル6’は単位エネルギー正規化部68へ出力され、そこで正規化が確保される。ノルム逆量子化器66は、NORMQ-bitsを使用してノルム係数
Figure 0006909265
を提供する。次に、ノルム係数は、元のオーディオ/ビデオサンプルの再構成サンプル3である最終出力ベクトル
Figure 0006909265
を形成するために使用される。
尚、MPVQ方式は、図2及び図3の特定のシステムに限定されず、どのようなPVQベース量子化システムのインデクシングにも、例えば、線形予測(LP)ヴォコーダにおける時間領域信号又はビデオコーデックにおける変換領域係数にも採用可能である。
例えば、図2及び図3において、「ビットストリームMUX」ブロック及び「ビットストリームDEMUX」ブロックは、オプションとして、本開示の別の場所で説明されるようにPVQインデックス切り捨て損失を制限するために算術符号化器及び算術復号器をそれぞれ採用してもよい。「MUX」ブロック及び「DEMUX」ブロックは、MPVQ(n,k)符号語に関する正しいビット数を抽出可能にするために、短い各PVQ符号語の整数サイズ(MPVQサイズ)を知る必要がある。算術符号化器/復号器なしの場合、短いMPVQ(n,k)符号語に関するビットストリームをパースするときにcell(log2(MPVQ-size))完全非分数ビットを使用する。算術符号化器/復号器対を使用する場合には、算術符号化器/復号器対により使用されるビット分解能及び分布関数は、「MUX」ブロック及び「DEMUX」ブロックにより使用される分数ビットを決定する。算術符号化器/復号器対は、ビットストリームから復号化されたビット(この時点で分数)をどのようにパースすべきかを判定するために整数MPVQサイズを更に必要とする。
このような演算は当業者にはよく知られており、以下の説明中、PVQシステムの当然の一部分であると想定される。
図2では、MPVQサイズはMPVQインデクシングループの一部として計算され、その後、MUXに提供される。図3では、復号器で、MPVQオフセット及びMPVQサイズを計算する関数がまず呼び出され、次に、この整数サイズ情報を使用してMUXから符号語が抽出される。抽出されたインデックス(第2の符号語)及び初期オフセットは、その後、MPVQデインデクシングブロックに提供される。
図2及び図3の符号化器部分及び/又は復号器部分は、いくつかの用途では、通信ネットワークの1つのノード又はユーザ機器に構成されてもよい。通信ネットワークのノードは、例えば、無線ネットワークノード、例えば、基地局であってもよい。符号化器部分と復号器部分との間の通信は、有線送信及び/又は無線送信により実行可能である。符号化器部分及び復号器部分は個別に動作してもよい。例えば、符号化器部分は記録機器の一部であることが可能であり、生成されるビットストリームは将来の使用に備えて記憶されることが可能だろう。同様に、復号器部分は、再生機器の一部であることが可能であり、再生機器は、例えば、記憶装置からビットストリームを検索し、ビットストリームをオーディオ/ビデオ信号に復号化する。
MPVQ列挙方法の一実施形態は、本発明による組み合わせ大きさ/単一先行符号ビットベース列挙、NPVQ(l,k)=2*NMPVQ(l,k)を使用しており、MPVQ方式は、反復付加大きさ列挙を使用しているのが好ましく、残存ベクトルにおける第1の非零要素の確定済み先行符号に基づくのが更に好ましい。
従来の技術のIETF/OPUSコーデックは、当初のフィッシャー列挙の最適化バージョンを使用しており、行ごとの直接行オフセット計算再帰、ラッピング乗算による高速厳密整数除算並びに直接非再帰方程式オフセット及びサイズ計算は改善される(次元l及び単位パルスの数kがそのような直接計算を可能にするのに十分に低い場合)。IETF/OPUS−AudioPVQ実現形態及びOPUS−c符号参照のRFCテキスト説明の抜粋に関して付録Aを参照。OPUSの実現の複雑度を軽減するために、PVQ符号語の最大インデックス値は232-1(多くのデスクトップコンピュータで典型的なフォーマットである符号なし32ビット整数算術で表すことが可能なインデックス値)に制限される。
ここで提示されている技術の第1の部分では、先行符号方式を使用する先行符号モジュラーPVQ(MPVQ)列挙を説明する。この新規な改善されたMPQ列挙は、同一の一般技術(例えば、行ごと、直接行オフセット計算再帰、厳密整数除算及び直接非再帰方程式オフセット及びサイズ計算)を使用しているが、別の再帰方式を採用することによりこれを実行する。オフセットのダイナミクス及びサイズ計算は軽減されるので、短いPVQ符号語のインデクシングを効率よく実現でき、効率よくインデクシング及びデインデクシングすることが可能な符号語中のエントリの数のサイズは2倍になる(1ビット多い)。
このインデクシング/デインデクシングの改善は、特定の一例では、33ビットインデックスに関して複雑度の低い割り当て手順を可能にし、1ビットにより使用できる可能な限り大きいPVQを拡張しようとするものである(あるいは32ビットにわたるPVQに関して符号付き算術を使用できるように列挙を変形することにより、PVQを1+31ビットに保持する)。
オフセットパラメータU(n,k)を、先行する0を持たず、先行値kを持たず、先行する正の値を有し且つ正の先行符号を有する次元n及びkのL1ノルムの整数ベクトルの数として定義する。先行符号は、再帰の方向に現在の値の後に遭遇する最初の符号である。
オフセットパラメータA(n,k)を、正の先行値を有し且つ先行する0を持たない次元n及びkのL1ノルムの整数ベクトルの数として定義する。
そこで、A(n,k)=1+2*U(n,k)となる。「1」は単一の初期「k」値ベクトルに由来し、因数「2」は、次の先行符号が正の符号及び負の符号になる可能性による。A(n,k)は、従来の技術インデクシングオフセットとして使用されていた和である(NPVQ(n,k-1)+NPVQ(n-1,k-1))/2にも等しい。
U(n,k)及びそれとNMPVQ(n,k)ベクトルを有するMPVQ(n,k)構造におけるベクトルの合計との関係の表構造の図に関して図4を参照。図4は、次の先行符号情報の最下位ビット(LSB)の最初の「インタリービング」を使用する、好適な最下位ビット(LSB)先行符号列挙の変形を含む基本MPVQ反復の一実施形態のハイレベル概略図を示す。好適な解では、先行符号インタリービングは、pos[0]固有振幅k_deltaごとに、例えば、k_delta=k-1又はk-2ブロックに対して実行される。pos[0]値=「k」の場合、すべての単位パルスはpos[0]で消費され、反復を停止できる。pos[0]値が0ではない正又は負の次の先行符号である場合、最初に遭遇する非零位置符号は1ビットの情報を必要とする。これは、LSBビットとして常に偶数サイズの「2*U(n-k)」サブセクションに記憶される。pos[0]値=「k」である場合、反復は、新たな先行符号情報なしでpos[0]に拡張される。
この第1の部分の基本インデクシング/列挙方式を以下に説明する。インデクシング/列挙すべきPVQベクトルは、[0...2B+1-1]の範囲にあることがわかっており、B+1ビットに当てはまる。この場合、通常、現在のDSPハードウェアではB=32ビットである。例えば、PVQ(N,K)である場合、すなわち、次元がN,単位パルスの数がKである場合、インデックスの数はNPVQ≦(2B+1-1)である。
図5は、オーディオ/ビデオサンプルのピラミッドベクトル量子化インデクシングの方法の一実施形態のステップのフローチャートを示す。方法はステップ400で開始される。ステップ402で、オーディオ/ビデオ信号サンプルを表す整数入力ベクトルが取得される。整数入力ベクトルは複数の整数値係数を有する。ステップ404で、整数入力ベクトルから先行符号が抽出される。先行符号は、整数入力ベクトルにおける終端非零係数の符号である。終端非零係数は、整数入力ベクトルにおける最初の非零係数及び最後の非零係数のうち一方である。ステップ406で、整数入力ベクトルは、ピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングされ、この出力インデックスは、先行符号と共にオーディオ/ビデオ信号サンプルを表す。ピラミッドベクトル量子化列挙方式は、前記終端非零係数の符号を無視するように設計される。別の実施形態では、ステップ406は、ステップ404と組み合わせて同時に実行可能であるか又はステップ404の前に実行可能である。ステップ408で、先行符号及び出力インデックスは、第1の符号語及び第2の符号語としてそれぞれ出力ビットストリームへ出力される。手順はステップ449で終了する。
特定の一実施形態では、インデクシングするステップ406は反復列挙手順により実行される。更に別の特定の一実施形態では、反復列挙手順は、考慮に入れるために整数入力ベクトルの1つの現在係数を考慮するために選択する反復ステップの繰り返しを含む。反復ステップは、整数入力ベクトルの現在係数の前に処理された前記整数入力ベクトルのすべての係数と関連するオフセットパラメータを発見することと、オフセットパラメータに応じて累積インデックスを増加させることとを順次含む。繰り返しは、少なくとも整数入力ベクトルのすべての係数が考慮されるまで、現在の係数として順次選択される整数入力ベクトルの係数を用いて継続される。反復列挙手順は、すべての反復ステップが終了した後に出力インデックスが累積インデックスと等しくなるように設定される終了ステップを含む。
図6は、一般的レベルのMPQインデクシングの一実施形態を示す。MPVQインデクシングの送信側の態様を実現する詳細なブロック図は以下に示される。MPVQインデクシング処理はステップ200で開始され、ステップ210で、コーデックビット割り当てループからVQ次元N及び単位パルスの数Kが取得される。ステップ220で、PVQ探索からPVQベクトル「PVQ-vec」が取得される。ステップ230で、先行符号ビット及びMPVQサイズを発見することによりMPVQインデックスが合成される。ステップ240で、先行符号はビットストリームへ送信され、ステップ245で、インデックスはビットストリームへ送信される。手順はステップ249で終了する。
図5のフローチャートと比較して、ステップ210及び220は、ステップ402に含まれると考えることができる。ステップ404及び406は、同様にステップ230に含まれると考えることができる。最後に、ステップ240及び250はステップ408に含まれると考えらえる。
図7A及び図7Bは、MPVQインデックス合成の一実施形態を示し、例えば、図6のステップ230として提供される。図7A及び図7Bにおいて、MPVQインデックスの合成並びに先行符号及びMPVQサイズの発見はステップ300で開始される。本実施形態は、LSB位置にあるベクトルの次の符号による解に基づく。ステップ302において、処理は、既知のオフセット反復ベースケースにより初期化される。ステップ304において、現在位置パラメータが設定される。本実施形態では、インデクシングは、ベクトルの終端から始めに向かって実行される。インデクシングはデインデクシングと比較して逆の位置順序で実行される。以下の更なる説明を参照。これは、先行符号により発生されるように各反復ステップで累積インデックスを増加させる場合に、整数入力ベクトル中の以前の先行符号に従って、累積インデックスが最下位ビットを与えられることを意味する。
別の実施形態では、インデクシングとデインデクシングとの間でベクトルの位置順序を変更できる。
ステップ306で、累積インデックスは0に初期化される。パラメータk_accは、解析される累積単位パルスを示し、0に初期化される。フラグgot_sign_flagは、符号が抽出されるか否かを示し、当初は同様に0に設定される。ステップ308で、ベクトルからの現在係数「vec(pos)」はパラメータ「val」として考慮される。ステップ310で、第1の符号が発見され、現在係数が0に等しくない場合に、処理はステップ312へ続くが、0に等しい場合には、処理はステップ314へ直接続く。ステップ312で、以前のステップからセーブされた先行符号情報がLSBに導入される。以前のステップにおける負の符号は、値next_sign_ind=1に対応し、正の符号は、値next_sign_ind=0に対応する。ステップ314で、現在符号の探索が開始される。値が0に等しい場合、新たな符号は存在せず、最前の符号が転送されるべきであり、これは、処理がステップ324(図7B)へ直接続くことを意味する。現在の係数が0ではない場合に、まず、ステップ316で、符号が発見されたというフラグがセットされる。これは実際には第1の符号に関してのみ必要であるが、本実施形態では、流れを簡略にするため、非零値が発見されるたびにフラグはセットされる。ステップ318で、next_sign_ind、すなわち、次の符号の標識が正の符号を指示するように設定される。ステップ320で、現在係数の値が実際に正であるか否かが検査される。現在係数が正であることが発見された場合、流れはステップ324へ続き、正でない場合には、next_sign_ind、すなわち、次の符号の標識は負の符号を指示するように変更される。
ステップ324で、現在次元n及び解析される累積単位パルスに基づいてオフセット値に従って累積インデックスは増加される。言い換えれば、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元n及びk_accのL1ノルムの整数ベクトルの数に対応する数だけカウントアップされる。本実施形態では、累積インデックスの修正にAオフセットが使用される。以下に更に説明されるように、他の実施形態では、Aオフセットの代わりに、Uオフセットを使用でき、あるいはAオフセットとUオフセットの組み合わせを使用できる。ステップ326で、現在係数の値を加算することにより、k_accパラメータは更新される。ベクトルのすべての位置が考慮されてはいない場合、すなわち、パラメータ「pos」が0より大きい場合、次の繰り返しが準備される。ステップ330で、以下に更に詳細に説明されるように、次元は増加され、オフセットは更新される。ステップ332で、現在係数の位置は1ステップだけ減少される。次に、処理は、考慮されるべき整数入力ベクトルからの新たな現在係数による別の繰り返しのためにステップ308(図7A)に戻る。
ベクトルのすべての位置が考慮されていた場合には、流れはステップ334へ続き、先行符号は、現在の次符号指示と等しくなるように設定される。言い換えれば、ベクトルのまさに最初の符号は累積インデックスには含まれておらず、インデクシングの残存部分に影響を与えない別のパラメータとして抽出されることになる。これは、使用されるピラミッドベクトル量子化列挙方式が最初の非零係数の符号を無視することを意味する。その代わりに、この符号は、インデクシング処理から「押し出され」、「先行符号」又は「lead_sign」として示される。その他の符号も、通常、反復中に抽出されるが、インデックス累積に影響を与える。最後に、ステップ336で、MPVQサイズが計算され、本実施形態では、この計算を2つの異なる方法で実行できる。累積インデックスは、MPVQピラミッドベクトル量子化列挙方式の出力インデックスとしてこの処理から抜ける。手順はステップ349で終了する。
上記の構造は、符号化されるべき非零ベクトル値のすべての符号を選択された方向に次の非零係数へ1ステップシフトするように動作する。次の位置が存在しない場合、すなわち、処理が当初のベクトルの外にある場合には、その符号を残存lead_signとして記憶する。この符号シフトは、以下の説明から更にわかるように別の前処理ステップとして実行可能であるが、好適な実施形態では、前述のように次元反復ループ全体の中にある。そこで、lead_sign(+1又は−1)をビットストリーム中の個別のビットとして、lead_sign_ind(0又は1)として送信可能である。
残存シフト済み符号及び当初のベクトルの振幅は、当初のPVQベクトルから常に厳密に1つの符号が抽出/シフトされることを利用する変形インデクシング/列挙方式によって符号化される。この抽出は、当初のPVQ目標ベクトルPVQ_vecの非零要素の数とは無関係である。
図7A及び図7Bの構造を容易に理解するために、以下に3つの例を説明する。説明を限度内にとどめ、例全体を理解できるようにするために、それらの例は極めて複雑度の低いものである。しかし、通常の現実の例では、次元及び単位パルスの数は、それよりはるかに多い。しかし、原理は同一である。
第1の例では、次元N=3及び単位パルスの数K=5として、[2,2,-1]の整数入力ベクトルを考える。初期化が実行され、「pos」は「2」に設定され、インデックスk_accは「0」に設定され、次元はn=1に設定され、got_sign_flagはセットされない(=0)。第1の値「val」はベクトルの係数2として、すなわち、−1として選択される。(ベクトルの係数は0、1及び2と番号付けされる。)非零値はまだ評価されていないので、符号は抽出されておらず、流れは、検出された符号に基づくインデックスの調整を飛び越す。これにより、流れは、0と同じではない値「val」の評価へ直接進む。この結果、符号フラグはセットされる。第1の符号が検出されており、検出された符号に従ってnext_sign_indは設定され、この場合next_sign_ind=1、すなわち、負の値(−1)に設定される。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元1の及び0のL1ノルムの整数ベクトルの数に対応するオフセットA(1,0)だけカウントアップされる。A(1,0)は0に等しい。そこで、累積インデックスはindex=0となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、1単位だけ更新され、すなわち、k_acc=1となる。
数nを1増加させ、すなわち、n=2とし且つ位置標識「pos」を1減少させ、例えば、pos=1とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置の新たな値1が選択され、すなわち、この例では、val=vec(1)=2となる。符号フラグ「got_sign_flag」は、符号が検出されたことを指示し、現在の値「val」は0に等しくないので、「next_sign_ind」はLSBとして累積インデックス「index」に加算され、累積インデックスは1(=2*0+1)となる。流れは値「val」の評価へ続き、この場合も、値「val」は0と同じではない。next_sign_indは検出された符号に従って設定され、この場合、next_sign_ind=0、すなわち、正の値(2)となる。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元2及び1のL1ノルムの整数ベクトルの数に対応するオフセットA(2,1)だけカウントアップされる。A(2,1)は1に等しい。そこで、累積インデックスはindex=2となる。次に、累積kパラメータk_accは、vec(1)の絶対値だけ、すなわち2単位だけ更新され、すなわち、k_acc=3となる。
数nを1増加させ、すなわち、n=3とし且つ位置標識「pos」を1減少させ、例えば、pos=0とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置の新たな値0が選択され、すなわち、この例ではval=vec(0)=2となる。符号フラグ「got_sign_flag」は、符号が検出されたことを指示し、現在の値「val」は0に等しくないので、「next_sign_ind」はLSBとして累積インデックス「index」に加算され、累積インデックスは4(=2*2+0)となる。流れは、値「val」の評価へ続き、この場合にも、値「val」は0と同じではない。next_sign_indは、検出された符号に従って設定され、この場合、next_sign_ind=0となり、すなわち、正の値(2)となる。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元3及び3のL1ノルムの整数ベクトルの数に対応するオフセットA(3,3)だけカウントアップされる。A(3,3)は13に等しい。そこで、累積インデックスはindex=17となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、2単位だけ更新され、すなわち、k_acc=5となる。
この時点で累積kaccは最大のK=5に等しく、ベクトルのすべての位置が考慮されている。従って、出力インデックスは現在累積インデックスに等しく、すなわち、出力インデックスは17である。最後に識別された符号は累積インデックスにはまだ含まれておらず、別のパラメータとして、すなわち、先行符号=「+1」(next_sign_ind=0)として抽出される。
第2の例では、次元N=3且つ単位パルスの数K=5として、[-4,0,-1]の整数入力ベクトルを考える。初期化が実行され、「pos」は「2」に設定され、インデックス、k_accは「0」に設定され、次元n=1に設定され、got_sign_flagはセットされない(=0)。第1の値「val」はベクトルの係数2として、すなわち−1として選択される。非零値はまだ評価されていないので、符号は抽出されておらず、流れは、検出された符号に基づくインデックスの調整を飛び越す。これにより、流れは値「val」の評価へ直接進み、値「val」は0と同じではない。これにより、符号フラグはセットされる。第1の符号が検出されており、next_sign_indは、検出された符号に従って設定され、この場合、next_sign_ind=1、すなわち、負の値(−1)に設定される。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元1及び0のL1ノルムの整数ベクトルの数に対応するオフセットA(1,0)だけカウントアップされる。A(1,0)は0に等しい。そこで、累積インデックスはindex=0となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、1単位だけ更新され、すなわち、k_acc=1となる。
数nを1増加させ、すなわち、n=2とし且つ位置標識「pos」を1減少させ、例えば、pos=1とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置1の新たな値が選択され、すなわち、この例では、val=vec(1)=0となる。符号フラグ「got_sign_flag」は、符号が検出されたことを指示するが、現在の値「val」は0に等しいので、「next_sign_flag」は次の繰り返しのためにセーブされる。流れは値「val」の評価へ続き、値「val」は0と同じである。従って、next_sign_indは変更されない。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元2及び1のL1ノルムの整数ベクトルの数に対応するオフセットA(2,1)だけカウントアップされる。A(2,1)は1に等しい。そこで、累積インデックスはindex=1となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、0単位だけ更新され、すなわち、依然としてk_acc=1である。
数nを1増加させ、すなわちn=3とし且つ位置標識「pos」を1減少させ、例えば、pos=0とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置0の新たな値が選択され、すなわち、この例では、val=vec(0)=-4となる。符号フラグ「got_sign_flag」は、符号が検出されたことを指示し、現在の値「val」は0に等しくないので、ベクトル位置2から生じる「next_sign_ind」はLSBとして累積インデックス「index」に加算され、この結果、累積インデックスは3(=2*1+1)となる。流れは値「val」の評価へ続き、値「val」は0と同じではない。next_sign_indは、検出された符号に従って設定され、この場合、next_sign_ind=1となり、すなわち、負の値(−4)である。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元3及び1のL1ノルムの整数ベクトルの数に対応するオフセットA(3,1)だけカウントアップされる。A(3,1)は1に等しい。そこで、累積インデックスはindex=4となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、4単位だけ更新され、すなわち、k_acc=5となる。
この時点で、累積k_accは最大限のK=5に等しく、ベクトルのすべての位置が考慮されている。従って、出力インデックスは、現在の累積インデックスに等しく、出力インデックス4となる。最後に識別された符号は累積インデックスにまだ含まれておらず、別のパラメータとして、すなわち、先行符号=「−1」(next_sign_ind=1)として抽出される。
第3の例では、次元N=3とし且つ単位パルスの数K=5として、[0,5,0]の整数入力ベクトルを考える。初期化が実行され、「pos」は「2」に設定され、インデックス、k_accは「0」に設定され、次元n=1に設定され、got_sign_flagはセットされない(=0)。第1の値「val」は、ベクトルの係数2として、すなわち、0として選択される。非零値はまだ評価されていないので、符号は抽出されておらず、流れは、検出された符号に基づくインデックスの調整を飛び越す。これにより、流れは、値「val」の評価へ直接進み、値「val」は0と同じである。これにより、符号フラグのトリギング(trigging)は飛び越される。従って、第1の符号はまだ検出されていない。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元1及び0のL1ノルムの整数ベクトルの数に対応するオフセットA(1,0)だけカウントアップされる。A(1,0)は0に等しい。そこで、累積インデックスはindex=0となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、0単位だけ更新され、すなわち、依然としてk_acc=0である。
数nを1増加させ、すなわち、n=2とし且つ位置標識「pos」を1減少させ、例えば、pos=1とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置1の新たな値が選択され、すなわち、この例では、val=vec(1)=5となる。符号フラグ「got_sign_flag」は、符号がまだ検出されていないことを指示する。これにより、流れは、値「val」の評価へ直接進み、値「val」は0と同じではない。これにより、符号フラグはセットされる。この時点で第1の符号が検出されており、next_sign_indは、検出された符号に従って設定され、すなわち、この場合、next_sign_ind=0となり、すなわち、正の値(5)である。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元2及び0のL1ノルムの整数ベクトルの数に対応するオフセットA(2,0)だけカウントアップされる。A(2,0)は0に等しい。そこで、累積インデックスは依然としてindex=0である。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、5単位だけ更新され、すなわち、k_acc=5となる。
数nを1増加させ、すなわち、n=3とし且つ位置標識「pos」を1減少させ、例えば、pos=0とすることにより、次の繰り返しが準備される。流れはステップ308に戻り、位置0の新たな値が選択され、すなわち、本例ではval=vec(0)=0となる。符号フラグ「got_sign_flag」は、符号が検出されたことを指示するが、現在の値「val」は0に等しいので、「next_sign_ind」は、次の繰り返しのために又は本例では最終ステップのためにセーブされる。流れは、値「val」の評価へ続き、値「val」は0と同じである。従って、next_sign_indは変更されない。次に、累積インデックスは、正の先行値を有し且つ先行する0を持たない、次元3及び5のL1ノルムの整数ベクトルの数に対応するオフセットA(3,5)だけカウントアップされる。A(3,5)は41に等しい。そこで、累積インデックスはindex=41となる。次に、累積kパラメータk_accは、「val」の絶対値だけ、すなわち、0単位だけ更新され、すなわち、依然としてk_acc=5である。
累積k_accはこの時点で最大限のK=5に等しく、ベクトルのすべての位置が考慮されている。従って、出力インデックスは現在の累積インデックスに等しく、すなわち、出力インデックス41となる。最後に識別された符号は累積インデックスにまだ含まれておらず、別のパラメータとして、すなわち、先行符号=「+1」(next_sign_ind=0)として抽出される。
図8には、代わりに区分化先行符号符号化を使用する基本MPVQ反復の一実施形態のハイレベル概略図が示される。図は、先行符号情報の区分化を使用する基本MPVQ反復の一実施形態のハイレベル概略図を示す。好適な解では、固有pos[0]振幅k_deltaごとに、例えば、k_delta=[k-1,k-2,...1]に関して2つの符号区分が実現される。pos[0]値=「k」の場合、すべての単位パルスはpos[0]で消費され、反復を停止できる。pos[0]値が非零の場合に、最初に遭遇した非零位置符号である正の次の先行符号は1ビットの情報を必要とする。pos[0]値が非零の場合、最初に遭遇した非零位置符号である負の次の先行符号は1ビットの情報を必要とする。pos[0]値=「0」である場合、反復は、新たな先行符号情報を必要とすることなくpos[0]に拡張される。
以上のような反復の定義から、次のような式を確立できる。
M(n,k)=1+U(n,k)+U(n,k)+M(n-1,k)=1+2*U(n,k)+M(n-1,k)
M(n,k)-M(n-1,k)=1+2*U(n,k)
フィッシャーのPVQ再帰を適用することにより、次の式が得られる。
M(n,k)-M(n-1,k)=M(n-1,k-1)+M(n,k-1)
1+2*U(n,k)=M(n-1,k-1)+M(n,k-1)-M(n-1,k-1)+M(n-1,k-1)
1+2*U(n,k)=1+2*U(n,k-1)+2*M(n-1,k-1)
U(n,k)=U(n,k-1)+M(n-1,k-1)
M(n-1,k-1)=U(n,k)-U(n,k-1)
この結果、
M(n-1,k)=[U(n,k+1)-U(n,k)]
となる。再帰の定義から、次のことがわかる。
M(n,k)=1+2*U(n,k)+[U(n,k+1)-U(n,k)]=1+U(n,k)+U(n,k+1)
そこで、MPVQサイズを再帰的に次のように判定できる。
NMPVQ(n,k)=M(n,k)=1+U(n,k)+U(n,k+1)
採用されるMPVQ再帰公式の導出に関しては、更に付録Bを参照。
NMPVQ(n,k)=1+2*U(n,k)+NMPVQ(n-1,k)
列挙/インデクシングでは、以下に定義される特性(a〜g)のいずれかを使用する。
a)NPVQ(n,k)=2*NMPVQ(n,k)、
(効率のよいインデクシングのために再帰的に適用される)
b)U(n,k)=1+U(n,k-1)+U(n-1,k-1)+U(n-1,k)、
初期条件はU(0,*)=0、U(*,0)=0、U(1,*)=0、U(*,1)=0及びU(a,b)=U(b,a)であり、効率を得るために更にU(2,k)=k-1及びU(n,2)=n-1及びU(3,k)=K*(k-1)及びU(n,3)=n(n-1)を使用できる。
c)NMPVQ(n,k)=1+U(n,k)+U(n,k+1)、
(最終MPVQサイズ計算)
d)NMPVQ(n,k)=1+floor((A(n,k))/2)+U(n,k+1)、
(代替最終サイズ計算)
e)NMPVQ(n,k)-NMPVQ(n-1,k)=1+2*U(n,k)=A(n,k)、
(反復振幅インデックス追加判定に使用可能である)
f)A(n,k)=A(n,k-1)+A(n-1,k-1)+A(n-1,k)、
(例えば、CELT/OPUS−audioでも使用されるこの再帰は、複雑度の低い振幅インデクシングオフセット更新にも使用できる)
g)PVQオフセット=U(n,k=0..K+1)を反復更新するか、又は好ましくはA(n,k=0...K)及びU(n,K+1)を反復更新する。A(n,k)再帰はU(n,k)再帰よりわずかに速く、最終要素U(n,K+1)はA(n,K+1)より低いダイナミックレンジを有する。
この場合、c)及びd)は、ビットストリームからインデックスを取得するために必要とされるか、あるいはビットストリーム又はビットストリームにインタフェースする演算符号化器/復号器に提供される最終MPVQ(n,k)符号語のサイズを計算するために使用される。
図9は、次元を増加させる場合のPVQ−A/Uオフセット再帰の3つの実施形態の組み合わせを示す。
オフセットを更新する手順はステップ350で開始される。入力パラメータは、次元n及びk_max+1値である。この手順は、行nのインデクシングオフセットに行n-1のインデクシングオフセットを提供し、0...(k_max+1)のkに関するオフセットの更新を含む。ステップ352で、Aオフセットのみが使用されるべきか否かが決定される。Aオフセットのみが使用されるべきである場合、ステップ354で、A(n,k)が次のように計算される。
A(n,k)=A(n-1,k)+A(n-1,k-1)+A(n,k-1)
この特定の再帰は従来の技術でも利用されているが、PVQインデクシング処理の効率は劣る。ステップ397で、A(n,k)は返送される。ステップ356で、Uオフセットのみが使用されるべきか否かが決定される。Uオフセットのみが使用されるべきである場合、ステップ358で、U(n,k)が次のように計算される。
U(n,k)=1+U(n-1,k-1)+U(n-1,k)+U(n,k-1)
ステップ398で、U(n,k)は返送される。ステップ360で、AオフセットとUオフセットの組み合わせが使用されるべきである。ステップ362において、k=0...(k_max)に関する再帰は、
A(n,k)=A(n-1,k)+A(n-1,k-1)+A(n,k-1)
に従って実行される。この特定の再帰は従来の技術でも利用されているが、PVQインデクシング処理の効率は劣る。最高ダイナミクスオフセット(k_max+1)に関して、ステップ364で再帰が実行される。特定の一実施形態において、
U(n,k_max+1)=1+U(n-1,k_max)+U(n-1,k_max+1)+U(n,k_max)
に従って純粋U再帰が使用される。別の特定の実施形態では、
U(n,k_max+1)=1+(A(n-1,k_max)>>1)+(A(n,k_max)>>)+U(n-1,k_max+1)
に従って混合A/U再帰が使用される。式中、(y>>1)はy=floor(y/2)を意味する。ステップ399において、A(n,k)及びU(n,k_max+1)は返送される。
受信機側では、逆の手順が実行されなければならず、先行符号及びインデックスは整数出力ベクトルに変換される。図10は、オーディオ/ビデオサンプルのピラミッドベクトル量子化デインデクシングの方法の一実施形態のステップのフローチャートを示す。方法はステップ450で開始される。ステップ452で、第1の符号語としての先行符号及び第2の符号語としての入力インデックスが入力ビットストリームから受信される。先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表す。先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号である。整数出力ベクトルは複数の整数値係数を有する。終端非零係数は、前記整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方である。ステップ454で、入力インデックスはピラミッドベクトル量子化列挙解除方式によって整数出力ベクトルにデインデクシングされる。列挙方式により作成される入力インデックスは、終端非零係数の符号を無視している。ステップ456で、整数出力ベクトル中の終端非零係数の符号は、受信された先行符号に従って割り当てられる。別の実施形態では、ステップ456は、ステップ454と同時に、ステップ456と組み合わせて又はステップ456の前に実行可能である。ステップ458で、整数出力ベクトルは出力される。処理はステップ499で終了する。
特定の一実施形態において、デインデクシングするステップ454は、反復列挙解除手順により実行される。更なる特定の実施形態では、反復列挙解除手順は、残存インデックスが入力インデックスと等しくなるように設定される初期化ステップと、考慮に入れるために整数出力ベクトルの1つの現在係数が選択される反復ステップの繰り返しとを含む。反復ステップは、整数出力ベクトルの中の現在係数の位置及び残存インデックスに適合しているオフセットパラメータを発見することと、オフセットパラメータに応じて残存インデックスを減少させることと、整数入力ベクトルの現在係数の振幅をオフセットパラメータと関連する振幅と等しくなるように設定することとを含む。繰り返しは、残存インデックスが0に等しくなるまで、整数入力ベクトルの係数が現在係数として順次選択されている間は継続される。
MPVQデインデクシングの受信側のいくつかの態様が処理の実施形態を実現する詳細なブロック図を使用して以下に例示される。MPVQデインデクシングの一実施形態の概要が図11に示される。MPVQデインデクシングはステップ250で開始される。ステップ260で、コーデックビット割り当てループからVQ次元N及び単位パルスの数Kが獲得される。ステップ270で、サイズ及びオフセットが発見される。ステップ280で、入力ビットストリームから先行符号が抽出され、ステップ285で、入力ビットストリームからMPVQインデックスが取得される。これらの量は、MPVQインデックスが分解されるステップ290で利用される。処理はステップ299で終了する。
図10のフローチャートと比較して、ステップ260、270、280及び285は、ステップ452に含まれると考えることができる。ステップ454及び456も同様にステップ290に含まれると考えられる。
例えば、図11のステップ270に対応するサイズ及びオフセットを発見するための手順の一実施形態が図12に示される。デインデクシングにおけるA(n,k)オフセットは、通常、振幅オフセットであるが、残存符号も考慮に入れる。U(n,k)オフセットも同様である。これも振幅オフセットである。しかし、U(n,k)オフセットは第1の先行符号(「2」)を含まず、残存先行符号の残りのすべてが含まれる。一般に、オフセットは、振幅及び先行符号の残存する可能な組み合わせに関するセクションサイズを示す。場合によっては、これは、現在の先行符号(A(n,k))によって実行されるが、次の先行符号なしで、残存するすべての先行符号によって実行されることもある(U(n,k)の場合)。k=0〜k=K+1で次元Nに関してMPVQサイズNMPVQ(N,K)及びインデクシングオフセットA、Uを発見するための手順はステップ500で開始される。尚、A(n,k)の直接式、A(n,k)行専用再帰及びA基本再帰は従来の技術で知られている。ステップ502で、サイズ及びオフセットがROMテーブルに記憶されているか否かが検査される。N及びKの双方がローであるときに現実に起こりうるように、記憶されている場合、手順はステップ519によって直接継続する。ステップ504で、効率のよい直接計算が可能であるか否かが検査される。Nがローであるときに現実に起こりうるように、可能である場合、処理はステップ506へ続き、MPVQサイズ(N,K)及び振幅オフセットA(N,K)に対して直接式が使用される。次に、手順はステップ519へ続く。ステップ508で、効率のよい行再帰が可能であるか否かが検査される。いくつかのKに対して現実的であるように、可能である場合、処理はステップ510へ続き、A(N,k=0...K)及びU(N,K+1)を計算するために行Nに対して再帰行専用式が使用される。次に、手順はステップ514へ続く。ステップ508で行専用再帰が実現不可能であることが判明した場合に、手順はステップ512へ続き、オフセットをA(N,k=0...K)及びU(N,K+1)として計算するために行0〜行Nに対して基本列/行オフセット再帰式に関してオフセット更新処理が使用される。これは、すべてのN及びKに対して可能である。そのようなオフセット更新ルーチンの一例は、例えば、図9で見られる。ステップ514において、MPVQサイズをMPVQ-size=1+(A(N,K)>>1)+U(N,K+1)として、あるいはMPVQ-size=1+U(N,K)+U(N,K+1)として計算できる。ステップ519において、オフセット(A,U)及びMPVQサイズを返送することにより、手順は終了する。
図13は、MPVQインデックス分解の一実施形態を示す。MPVQインデックスを分解する手順はステップ520で開始される。パラメータN、K、入力インデックス及び先行符号並びにオフセット値が提供される。残存インデックスは入力インデックスと等しくなるように設定される。ステップ522で、出力ベクトル「vec」は0によって初期化される。ステップ524で、ローカル最大値k、k_max_localはKと等しくなるように設定され、ベクトル中の位置は0から開始され、nはNに設定される。ステップ526で、ベクトル中のすべての位置が考慮された否かが検査される。すべての位置が考慮されていた場合、ステップ548で、出力ベクトルとしてベクトルが返送され、すなわち、最終位置の後の処理を抜ける。ステップ528で、残存インデックスが0であるか否かが検査される。0である場合に、非零値で充填されるべきベクトル位置はそれ以上残っていない。手順はステップ530へ続き、先行符号が組み込まれ、ステップ549で、出力ベクトルとしてベクトルが返送され、すなわち、最終位置の前の処理を速く抜ける。残存インデックスが0より大きい場合に、手順はステップ532へ続き、k_delta、すなわち、検査すべきベクトル位置の絶対振幅及び振幅オフセット「amp_offset」が発見される。このことは以下に更に詳細に説明される。ステップ534で、残存インデックスは振幅オフセットだけ減少される。ステップ536の検査に従って、ベクトル位置の振幅が非零の場合に、手順はステップ538へ続き、ベクトル位置は、振幅に先行符号を乗算した値に等しい値を与えられる。最初の非零係数の場合、先行符号は、ビットストリームから抽出される先行符号である。ステップ540で、将来位置に関する次の先行符号が推論される。このことは以下に更に詳細に説明される。ステップ542で、ローカル最大k値は現在のk値「k_delta」によって減少される。次に、ステップ544で次元nを増加させ、オフセットを更新し且つベクトル中の位置を1ステップ増分することにより、次の繰り返しが準備される。次に、手順はステップ526に戻る。
図13に示されるように、受信されたインデックスから、現在位置の振幅「k_delta」が判定される。これは、利用可能なA(n,k)オフセット及び/又はU(n,k)オフセットを使用することにより実行されるのが好ましい。振幅情報オフセットが更に推論され、残存インデックスは、この振幅情報オフセット「amp_offset」だけ減少される。そのような手順の一実施形態が図14に示される。
振幅k_delta及び振幅オフセットamp_offsetを発見する手順の一実施形態はステップ550で開始される。言い換えれば、この手順は、現在位置の振幅及び対応するインデックスオフセットを発見することであると想定される。A(n,k)のオフセットを使用する線形探索又はツリー探索自体は、従来の技術で利用可能である。入力パラメータは、ローカル最大値k「k_max_local」、インデックス及びオフセットH(n,k)=A(n,k)である。ステップ552でツリー探索又は線形探索が選択される。線形探索を選択した場合、ステップ554は、累積k値k_accをローカル最大値kと等しくなるように設定し、振幅オフセットは、現在のn及び累積k値に関するオフセットと等しくなるように設定される。ステップ556で、オフセットがインデックスより大きいか否かが検査される。大きい場合に、ステップ558でk_acc値は1単位減少され、新たな振幅オフセットが導出される。次に、手順はステップ556に戻る。残存インデックス以下の最大振幅オフセット値が発見されるまで、これが繰り返される。次に、手順はステップ560へ続き、k_delta、すなわち、現在位置の振幅は、k_acc値だけ減少されたローカル最大k値として計算される。
ツリー手順が選択された場合、ステップ562でハイパラメータ及びローパラメータが定義され、n及びハイパラメータに関する振幅オフセットが推論される。ステップ564で、探索すべきk領域は、k_testパラメータによって2つの部分に分割され、n及びハイパラメータに関する振幅オフセットが推論される。ステップ566で決定されるような、振幅オフセットがインデックスより大きいか又は小さいかに応じて、ステップ568でハイパラメータが変更されるか、又はステップ572でローパラメータが変更される。ステップ570及び574でそれぞれ検査されるように、振幅オフセットとインデックスとの差が0になるか、又はk_testポイントがハイパラメータと等しくなるまで、これが繰り返される。ステップ576で、k_delta、すなわち、現在位置の振幅は、k_test値だけ減少されたローカル最大k値として計算される。ステップ579で、振幅k_delta、k_acc及びamp_offsetは区分化符号符号化に使用され、この場合、k_acc=k_max_local-k_deltaである。
図13のステップ536で、大きさが0ではなく、最大残存K単位パルス値より小さい場合に、ステップ538で、以前に抽出(記憶)された先行符号が現在位置振幅に適用される。その後、次の先行符号は、受信され、分解されたMPVQインデックスから抽出されるべきである。次の先行符号を発見し、抽出された符号情報(ビット又はsign_offset)をインデックスから除去する手順の一実施形態は図15に示される。
次の先行符号を獲得する手順はステップ580で開始される。入力パラメータは残存インデックス、オフセット及び累積k値k_accである。ステップ582で符号位置決め方法が選択される。現時点で好適な実施形態であると考えられるLSB方式が選択された場合に、ステップ584で、先行符号は、最初に正(+1)に設定される。ステップ586で、ビットごと「and」演算を使用してインデックス中の最下位ビットが判定される。ビットが「1」である場合に、これは負の符号を意味し、その結果、ステップ588で先行符号は「−1」に変更される。ステップ590でインデックスは位置1つだけシフトされ、すなわち、符号ビットをシフトアウトする。
LSB方式よりわずかに複雑である区分化先行符号復号化が選択された場合に、ステップ592で、先行符号は、最初に正(1)に設定される。ステップ594で、k_deltaセグメントのサイズは2分割される。インデックスがこの符号オフセット以上である場合に、符号は負であり、その結果、ステップ597で先行符号は変更される。ステップ598で、インデックスも、発見された符号オフセットだけ減少される。ステップ599で、先行符号及び修正後のインデックスが返送される。
再び図13に戻ると、現在位置が0振幅を有する場合に、先行符号は保持され、すなわち、現在位置の後の次の位置で使用するために記憶される。
大きさが最大残存K単位パルス値と等しい場合に、記憶された先行符号が適用される。オプションとしてこの最後の非零エントリの代わりに処理を反復して速く抜けることができ、一連の末尾0によって早期に処理を抜けることができる。DSP−HWでは、最適化一定長ループを条件付きで処理を抜けることのコストは、場合によってはループにとどまることより高いので、これは任意である。
残存ベクトルに関してオフセットA(n,k)又はU(n,k)を再帰的に更新することができ、その場合、デインデクシングするために1次元減少させ且つデインデクシングするために単位パルスを「k_delta」だけ減少させる。1次元減少させる場合のオフセット更新の手順の一実施形態が図16に示される。手順は図9に提示される手順に類似しているが、この場合、次元は増加されるのではなく、減少される。
オフセットを更新する手順はステップ600で開始される。入力パラメータは、次元n及びk_max値である。この手順は、0...k_maxのkに関するオフセットを更新することを含めて、行n+1のインデクシングオフセットを行nのインデクシングオフセットに提供する。ステップ602で、Aオフセットのみが使用されるべきであるか否かが決定される。Aオフセットのみが使用されるべきである場合に、ステップ604で、A(n,k)は次のように計算される。
A(n,k)=A(n+1,k)-A(n,k-1)-A(n+1,k-1)
この特定の再帰は従来の技術でも利用されているが、PVQインデクシング処理の効率は劣る。ステップ617でA(n,k)が返送される。ステップ606で、Uオフセットのみが使用されるべきであるか否かが決定される。Uオフセットのみが使用されるべきである場合に、ステップ608で、U(n,k)は次のように計算される。
U(n,k)=U(n+1,k)-U(n,k-1)-U(n+1,k-1)-1
ステップ618でU(n,k)は返送される。ステップ610で、AオフセットとUオフセットの組み合わせが使用されるべきである。ステップ612で、k=0...(k_max-1)に関する再帰は、
A(n,k)=A(n+1,k)-A(n,k-1)-A(n+1,k-1)
に従って実行される。この特定の再帰は従来の技術でも利用されているが、PVQインデクシング処理の効率は劣る。k_max=K+1である場合の最高ダイナミクスオフセットk_maxに関して、ステップ614で再帰が実行される。特定の一実施形態では、純粋なU再帰は、
U(n,k_max)=U(n+1,k_max)-U(n,k_max-1)-U(n+1,k_max-1)-1
に従って使用される。別の特定の実施形態では、
U(n,k_max)=U(n+1,k_max)-(A(n,k_max-1)>>1)-(A(n+1,k_max-1)>>1)-1
に従って混合A/U再帰が使用され、式中、(y>>1)は、y=floor(y/2)を意味する。ステップ619で、A(n,k)及びU(n,k_max)が返送される。
ここで、図13の構造を容易に理解するために、3つの例を以下に説明する。説明を限度内にとどめ、例全体を理解できるようにするために、それらの例は極めて複雑度の低いものである。しかし、通常の現実の例では、次元及び単位パルスの数は、それよりはるかに多い。しかし、原理は同一である。
第1の例では、次元N=3及び単位パルスの数K=5として、17の入力インデックス及び先行符号「+1」、すなわち、正の符号を考える。初期化が実行され、「pos」は「0」に設定され、すなわち、デインデクシングは、ベクトル中の第1の係数から開始され、k_max_localが5とされ、次元n=3とされる。入力インデックスは残存インデックスに「リネーム」される。位置は3より低く、残存インデックスは0ではない。振幅k_delta及びオフセットamp_offsetが探索される(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(3,0...5)が検査され、まだ残存インデックス以下である最大AオフセットはA(3,3)=13である。従って、k_accは3になり、k_deltaは2になり、amp_offsetは13に等しい。残存インデックスはamp_offsetだけ減少され、4に等しくなる。k_deltaは0に等しくないので、適用されるべき符号は存在する。従って、ベクトル位置は、絶対値(k_delta)と、受信され、記憶された正である先行符号との積に設定される。そこで、出力ベクトルは[2,0,0]になる。次に、例えば、図15に従って、次の先行符号の判定が実行される。LSB符号位置決めを想定すると、残存インデックス(4)のLSBは0であり、これは正の符号に対応する。従って、lead_signは「+1」に設定される。残存インデックスは、インデックスを1ステップシフトすることにより減少され、すなわち、2による整数除算に等しい。そこで、残存インデックスは2に等しくなる。最後に、残存パルス単位k_max_localが更新され、この時点で3になる。
数nを1減少させ、すなわち、n=2とし且つ位置標識「pos」を1増加させ、例えば、pos=1とすることにより、次の繰り返しが準備される。新たなnに従って、利用可能オフセットも更新される。流れはステップ526に戻り、新たな振幅及びオフセットが発見されるべきである(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(2,0...3)が検査され、まだ残存インデックス以下である最大AオフセットはA(2,1)=1である。従って、k_accは1になり、k_deltaは2になり、amp_offsetは1に等しい。残存インデックスはamp_offsetだけ減少され、1に等しくなる。k_deltaは0に等しくないので、適用されるべき符号は存在する。従って、ベクトル位置は、絶対値(k_delta)と、最近抽出され、正であった先行符号との積に設定される。そこで、出力ベクトルは[2,2,0]になる。次に、例えば、図15に従って、次の先行符号の判定が実行される。LSB符号位置決めを想定すると、残存インデックス(1)のLSBは1であり、これは負の符号に対応する。従って、lead_signは−1に設定される。残存インデックスも、インデックスを1ステップシフトすることにより減少され、すなわち、2による整数除算に等しい。そこで、残存インデックスは0に等しくなる。最後に、残存パルス単位k_max_localが更新され、この時点で1になる。
数nを1減少させ、すなわちn=1とし且つ位置標識「pos」を1増加させて、例えば、pos=2とすることにより、次の繰り返しが準備される。新たなnに従って、利用可能オフセットも更新される。流れはステップ526に戻る。残存インデックスは0であるので、最後のベクトル係数を提供するためにステップ530が実行される。lead_signは−1に等しく、k_max_localは1に等しく、これにより、[2,2,-1]の出力ベクトルが得られる。
第2の例では、次元N=3とし且つ単位パルスの数K=5として、4の入力インデックス及び負の先行符号を考える。初期化が実行され、「pos」は「0」に設定され、すなわち、デインデクシングは、ベクトル中の第1の係数、k_max_local「5」及び次元n=3から開始される。入力インデックスは残存インデックスに「リネーム」される。位置は3より低く、残存インデックスは0ではない。振幅k_delta及びオフセットamp_offsetが探索される(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(3,0...5)が検査され、まだ残存インデックス以下である最大AオフセットはA(3,1)=1である。従って、k_accは1になり、k_deltaは4になり、amp_offsetは1に等しい。残存インデックスはamp_offsetだけ減少され、3に等しくなる。k_deltaは0に等しくないので、適用されるべき符号は存在する。従って、ベクトル位置は、絶対値(k_delta)と、受信され、負であった先行符号との積に設定される。そこで、出力ベクトルは[-4,0,0]になる。次に、例えば、図15に従って、次の先行符号の判定が実行される。LSB符号位置決めを想定すると、残存インデックス(3)のLSBは1であり、これは負の符号に対応する。従って、lead_signは−1に設定される。残存インデックスは、インデックスを1ステップシフトすることにより減少され、すなわち、2による整数除算に等しい。そこで、残存インデックスは2に等しくなる。最後に、残存パルス単位k_max_localが更新され、この時点で1になる。
数nを1減少させ、すなわち、n=2とし且つ位置標識「pos」を1増加させて、例えば、pos=1とすることにより、次の繰り返しが準備される。新たなnに従って、利用可能オフセットも更新される。流れはステップ526に戻り、新たな振幅及びオフセットが発見されるべきである(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(2,0...1)が検査され、まだ残存インデックスより小さい最大AオフセットはA(2,1)=1である。従って、k_accは1になり、k_deltaは0になり、amp_offsetは1に等しい。残存インデックスはamp_offsetだけ減少され、1に等しくなる。k_deltaは0に等しいので、次の繰り返しに備えて最後の抽出符号がセーブされる。出力ベクトルは依然として[-4,0,0]である。
数nを1減少させ、すなわち、n=1とし且つ位置標識「pos」を1増加させて、例えば、pos=2とすることにより、次の繰り返しが準備される。新たなnに従って、利用可能オフセットも更新される。流れはステップ526に戻り、新たな振幅及びオフセットが発見されるべきである(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(1,0...1)が検査され、まだ残存インデックス以下である最大AオフセットはA(1,1)=1である。従って、k_accは1になり、k_deltaは0になり、amp_offsetは1に等しい。残存インデックスはamp_offsetだけ減少され、0に等しくなる。k_deltaは0に等しくないので、適用されるべき符号は存在する。従って、ベクトル位置は、絶対値(k_delta)と、先に抽出され、負であった先行符号との積に設定される。最終出力ベクトルは[-4,0,-1]になる。
第3の例では、次元N=3とし且つ単位パルスの数K=5として、41の入力インデックス及び正の先行符号を考える。初期化が実行され、「pos」は「0」に設定され、すなわち、デインデクシングは、ベクトル中の第1の係数、k_max_local「5」及び次元n=3から開始される。入力インデックスは残存インデックスに「リネーム」される。位置は3より低く、残存インデックスは0ではない。振幅k_delta及びオフセットamp_offsetが探索される(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(3,0...5)が検査され、まだ残存インデックス以下である最大AオフセットはA(3,5)=41である。従って、k_accは5になり、k_deltaは0になり、amp_offsetは41に等しい。残存インデックスはamp_offsetだけ減少され、0に等しくなる。k_deltaは0に等しいので、後の反復に備えて符号はセーブされる。出力ベクトルは依然として[0,0,0]である。
数nを1減少させ、すなわち、n=2とし且つ位置標識「pos」を1増加させて、例えば、pos=1とすることにより、次の繰り返しが準備される。新たなnに従って、利用可能オフセットも更新される。流れはステップ526に戻り、新たな振幅及びオフセットが発見されるべきである(例えば、図14に従って)。例えば、Aオフセットが使用される場合に、オフセット群A(2,0...5)が検査され、まだ残存インデックス以下である最大AオフセットはA(2,0)=0である。従って、k_accは0になり、k_deltaは5になり、amp_offsetは0に等しい。残存インデックスはamp_offsetだけ減少され、0に等しくなる。k_deltaは0に等しくないので、適用されるべき符号は存在する。従って、ベクトル位置は、絶対値(k_delta)と、受信され、記憶された、正であった先行符号とを乗算した値に設定される。そこで、出力ベクトルは[0,5,0]になる。
数nを1減少させ、すなわち、n=1とし且つ位置標識「pos」を1増加させて、例えば、pos=2とすることにより、次の繰り返しが準備される。流れはステップ526に戻る。ステップ528で、インデックスは0であり、ステップ530及び549を介して処理を速く抜けれることがわかる。
本開示で提示されるこの新規なインデクシング方式は、改善された複雑度の低い短符号語方式である。設計上、これは、最適化された純粋大きさインデクシング方式(Fischer/Hung/Opus/CELT)であるが、それに加えて、あらゆるPVQ構造の大きさは常に偶数のベクトルであるという事実を効率よく利用する。
非常に大きなPVQベクトル(1+Bより大きい)ビットを効率よく処理する必要がある。これは、例えば、目標ベクトル次元分割、PVQベクトル次元分割又はコストが高いダイナミックレンジ整数計算、例えば、n*16又はn*32仮想、ソフトウェア定義の大きな整数により実行可能である。
BビットからB+1ビットへ(例えば、32ビットから33ビットへ)移行することの利得は、拡張R=ビット/係数範囲能力として定量化でき、この場合、所定の次元に関して次元分割は必要とされない。例えば、次元N=8の場合、R=32/8=4ビット/係数(又はサンプル)から係数又はサンプルごとにR=33/8=4.125ビットへ移行する。通常、高品質周波数領域オーディオPVQ方式では、R=7形状ビット/係数(又はサンプル)が要求される。
図17Aは、いくつかの一般的なハードウェアビット限界に関するPVQ符号語の概要を示す。曲線900はPVQ(n,k)ビット限界33を示し、曲線901はPVQ(n,k)ビット限界32を示し、曲線902はPVQ(n,k)ビット限界31を示し、曲線903はPVQ(n,k)ビット限界17を示し、曲線904はPVQ(n,k)ビット限界16を示し、曲線905はPVQ(n,k)ビット限界15を示す。33ビットは、新規な方式及び符号なし32ビット整数と共に使用可能であり、32ビットは符号なし32ビット整数に対応し、31ビットは符号付き32ビット整数に対応し、17ビットは、新規な方式及び符号なし16ビット整数と共に使用可能であり、16ビットは符号なし16ビット整数に対応し、15ビットは符号付き16ビット整数に対応する。
図17Bは、異なるBIT限界を有する最適のPVQ符号語量子化器に関するビット/サンプル単位の関連R値の概要を示す。曲線910はPVQ(n,k)ビット限界33を示し、曲線911はPVQ(n,k)ビット限界32を示し、曲線912はPVQ(n,k)ビット限界31を示し、曲線913はPVQ(n,k)ビット限界17を示し、曲線914はPVQ(n,k)ビット限界16を示し、曲線915はPVQ(n,k)ビット限界15を示す。R値が高いほど、高い符号化品質を実現できる。
図17Cは、利得−形状PVQの結果である形状整合能力に直接相関させた対応する実現可能なパルス密度を示す。曲線920はPVQ(n,k)ビット限界33を示し、曲線921はPVQ(n,k)ビット限界32を示し、曲線922はPVQ(n,k)ビット限界31を示し、曲線923はPVQ(n,k)ビット限界17を示し、曲線924はPVQ(n,k)ビット限界16を示し、曲線925はPVQ(n,k)ビット限界15を示す。R値が高いほど、高い符号化品質を実現できる。異なるBIT限界と共に、最適PVQ符号語量子化器に関する可能なパルス密度が示される。パルス密度が高いほど、高い符号化品質、例えば、高いVQ SNRを実現できる。
図17Dは、公正な比較のために、共に最大サイズ32のPVQ符号語を使用する従来の方式PVQの例及び新規な方式MPVQに関するインデクシング/デインデクシングにおけるワーストケースのMOPS命令トレードオフを示す。曲線930はMPVQに関する総合的複雑度を示し、曲線931はPVQに関する総合的複雑度を示し、曲線932はMPVQに関するデインデクシング複雑度を示し、曲線933はPVQに関するデインデクシング複雑度を示し、曲線934はMPVQに関するインデクシング複雑度を示し、曲線935はPVQに関するインデクシング複雑度を示す。上記のMPVQは符号付き32ビットアーキテクチャで実現可能であり、従来の技術のPVQは符号なし32ビットアーキテクチャを要求する。
ここで提示される技術の第2の部分では、オフセットの低ダイナミックMPVQランタイム計算が説明される。付録Aには、背景としてOPUS RFCからのハイレベルテキスト記述が転載される。IETF−OPUS c−code(cwrs.c)では、符号インデクシング及び振幅インデクシングの双方で動的にランタイム計算されたインデクシングオフセットA(n,k)が使用される。しかし、尚OPUS c−code内で異なるオフセット可変名が使用される。数A(n,k)は、第1の位置で正の非零値から開始されるベクトルPVQ(n,k)の数を表す。従来の技術では、
A(n,k)=(NPVQ(n,k-1)+NPVQ(n-1,k-1))/2
であることがわかっている。言い換えれば、数Aは、PVQサイズマトリクスN(n,k)の行nの要素と先行する行n-1の要素との加重和である。
A(n,k)に関する表1は、従来の技術(CELT/OPUS)のPVQオフセットデータ方式が使用され、メモリ効率に関して前方再帰の所定のポイントでRAMメモリに1つの行のみ、例えば、n=3が記憶され、その後、行n=3に基づいてn=4が計算され、それが繰り返される例を示す。
尚、音声及びオーディオの符号化の実世界におけるPVQ実現形態の場合、目標DSPの容量に応じて、次元nは256になり、単位パルスkの数は約512になる可能性がある。従って、n*k個のオフセットを記憶することは多くの場合に実現不可能である。
Figure 0006909265
表1 例えば、IETF−OPUS−Audioのようなインデクシング方式でPVQ復号化/符号化を実行する場合に計算されるPVQ(n=6,k=5)に必要とされる従来の技術のA(n,k)オフセット。
しかし、動的インデクシングオフセット計算を改善することができる。ここで提案される新規な再帰は次の通りである。
U(n,k)=U(n,k-1)+U(n-1,k-1)+U(n-1,k)+1
これは、以前に採用されていた従来の技術のOPUS/CELTのオフセットA(n,k)と次のように関連していることがわかる。
A(n,k)=2*U(n,k)+1
U(n,k)の整数レンジダイナミクスは常にA(n,k)レンジの少なくとも2分の1である。これは、例えば32ビット語の中で高速インデクシングのために1ビット余分に利用可能にできることを意味する。また、U(2,k)及びU(3,k)をA(2,k)及びA(3,k)の場合より速く、対称的にU(2,k)=k-1,U(3,k)=k*(k-1)及びU(a,b)=U(b,a)として直接計算できる。
Figure 0006909265
表2 MPVQ(n=6,k=5)に関して計算された新たな低ダイナミックレンジU(n,k)インデクシングオフセット。
上記の表1及び表2から、A(n=6,k=6)=1683は10ビットの中に当てはまらないことがわかる。10ビットは1024のエントリ、例えば、値0〜1023に対応する。しかし、新たなオフセットU(n=6,k=6)は10ビットの中に当てはまる。正確なインデクシング/デインデクシングを成功させるためにはインデクシングオフセットを正確に計算する必要があるので、オフセットA(6,6)が1023で飽和するか、又は不正確な低い値で完了することは許されない。
以前の(IETF/OPUS−Audio PVQ−従来の技術)再帰は
A(n,k)=A(n,k-1)+A(n-1,k-1)+A(n-1,k)
である。これは3つの追加の項を有するため、4つの項が追加される新たなU(n,k)再帰と比較して、特に高いn又は高いkに関しては計算がわずかに速くなる。
再帰効率を保ち且つ必要に応じて低いダイナミックレンジを維持するために、別の実施形態では、好適な混合再帰を定義することが可能であり、混合再帰の場合、U(n,KMAX)は、以前のA(n,低いk)オフセット値の関数であり、Bビット語のレンジ限界に近いダイナミック再帰データに関してのみ使用される。これは、通常、N行ベース再帰における最終列KMAXに関しては真である。表3では、最終エントリが10ビットを超える表1と比較して、オフセットは10ビットに収まっていることがわかる。
Figure 0006909265
表3 効率がよく且つレンジが保障されたインデクシング再帰のために計算された混合A(n,k)及び最終k列U(n,6=KMAX)オフセット。
尚、通常、ダイナミックレンジの支障を引き起こすのは最終n行NMAX(この場合は6)及び最高のk(この場合はk=6)である。しかし、場合によっては、例えば、読み取り専用再帰計算において、除算の分子がハードウェアビット限界に近いときに、最後から2番目の行(NMAX-1)がレンジの問題を引き起こすこともある。
MPVQ方式に関する上記の再帰関係の導出を付録Bで確認できる。
従来の技術のPVQインデクシング方式の一例が表4に示される。この場合、最大インデックス値A(n,k)+A(k+1)-1は、例えば、232より小さくなければならない。従来の技術のOPUS/CELTでは、符号切り替え[{+,0}/−]を伴う表4の方式が使用される。注:a)ベクトル[-2,-1,1];b)インデックス25〜40に関して、位置p0における0のデインデクシングは、p1では最終的には正の値又は負の値又は0になってもよい;c)p0正の決定限界。
[{+,0}/−]PVQインデクシングPVQ再帰デインデクシング方式PVQ(n=3,k=4)、NPVQ=66による従来のPVQ−インデクシング、[{−,0}/+]従来のインデクシング(青色、白色)セルpX=3次元ベクトル[p0,p1,p2]における位置、k=4単位パルスを符号化でき、例えば、復号化されたインデックス7→ベクトル[-2,-1,1]であり、符号を判定するためにオフセットA(n,k)が使用され、それらのオフセットからサイズを判定するために、関係NPVQ(n=3,k=4)=A(n,k)+A(n,k+1)が使用される。
Figure 0006909265
Figure 0006909265
Figure 0006909265
表4 従来のPVQインデクシング方式の例。
AとUの関係は、MPVQ(3,5)の例に関して、先行符号再帰解法を使用して、表5に図式的に示される。NPVQ(n=3,k=5)=2*NMPVQ(3,5)=2*51=102となり、式中、「2」は、ここで事前抽出される先行符号ビットに対応する。ベクトルPVQ-vec=[p0,p1,p2]、例えば、復号化されたインデックス8は[3,-1,1]、和(abs(PVQ-vec))=5である。以下の表5では、ここで事前抽出される初期符号は正(+)であり、すなわち、以下に示す値p0は常に0以上である。この例において、次の先行符号は、2*U(n,k)個の区分のLSBビットに記憶される。
Figure 0006909265
Figure 0006909265
表5 例 MPVQ(3,5)LSBに基づく先行符号列挙。
表6は、表5に従ったインデックス構成の例を示す。
Figure 0006909265
Figure 0006909265
表6 MPVQ(3,5)LSBに基づく先行符号列挙の例、インデックス構成例。
尚、すべてのn,kに対してA(n,k+1)を2*NMPVQ(n,k)ビット限界(例えば、32ビット)の中で保障なく計算することは不可能であるので、表5のPVQサイズは、ここではNMPVQ=1+U(n,k)+U(n,K+1)を使用して計算されなければならない。従来の技術は、PVQ-size=A(n,K+1)+A(n,k)を使用するか、あるいはMOPSのコストの高い組み合わせ関数又は記憶された値のコストの高いROMテーブルルックアップを使用する非零要素の合計を使用する。
図5(先行符号の区分化位置決め)及び図2(先行符号のLSB位置決め)の基本再帰の概要では、A(n,k)を1+2*U(n,k)とみなすこともできる。
ここで提示される技術の別の部分では、符号の符号化位置の事前抽出による最適化MPVQインデクシングが説明される。符号の符号化位置encode_sign[0...N-1]のベクトルへのMPVQ先行符号、並びにその位置で符号化すべき実際の符号及び残存初期先行符号を事前抽出することによって符号化器側MPVQインデックス合成内部ループを最適化することも可能である。しかし、このためには、前処理符号シフト関数を実行しなければならず、パルス数が少ない場合、そのコストは高くなるだろう。しかし、場合によっては、インデックス合成の内部ループはいっそう容易になり、例えば、DSPパイプライン化に関して強力に最適化されることが可能であるので、MPVQインデクシングを実現することは好適な方法であるといえる。
以下の符号事前シフトの例はN=8及びK=13を利用する。
Figure 0006909265
上記の例では、符号化は右から左へ、すなわち、位置(N-1)から位置0に向かって実行される。
事前シフト関数は、第1の符号を変数「lead_sign」へシフトし、PVQ-vecの残存する符号は次の(左側の)非零位置へシフトされる。PVQ-vecの最後の非零位置は、encode_signベクトルでは常に0の値を獲得する。
図18は、事前抽出された先行符号を使用するMPVQインデックス合成の一実施形態を示す。図18には、このMPVQインデックス合成の実現形態に関して詳細なブロック図の実施形態が示される。事前抽出された先行符号及びMPVQサイズによってMPVQインデックスを合成するための手順はステップ700で開始される。本実施形態は、LSB位置の次の符号による解法に基づく。入力パラメータは、N、K及び「vec」としてのPVQベクトルである。ステップ702は、既知のオフセット再帰ベースケースを伴う初期化ステップであり、n=1を設定する。ステップ704で、位置パラメータはN-1に設定され、すなわち、ベクトルは、最終位置から始めて、最初に向かって終端から解析される。ステップ706で、累積インデックス及び累積パルスは0に設定される。最初に、ステップ708で符号が解析されるが、このことは以下に更に詳細に説明される。これにより、先行符号が判定され、符号ベクトルを利用可能である。ステップ710で、値は現在入力ベクトル係数と等しくなるように設定される。ステップ712〜720では、係数が非零である場合に、本実施形態ではLSBを追加することにより、累積インデックスは係数の符号に適応される。ステップ722で、残存単位パルス及び現在次元と関連するオフセットに従って、累積インデックスが修正される。ステップ724の検査に従って、現在位置が非零である場合、すなわち、探索が入力ベクトルの前部にまだ到達していない場合、ステップ726及び728で新たな繰り返しが準備され、手順はステップ710に戻る。ベクトル全体が探索されていた場合には、ステップ730でMPVQ-SIZEが計算され、ステップ739で、出力インデックス、先行符号及びMPVQサイズが提供される。
図19は、符号抽出関数の一実施形態である。手順はステップ740で開始される。ステップ742で、初期化が実行され、正の先行符号を想定して符号化符号ベクトルに0係数が与えられ、初期非零係数の一次的位置は−1と設定され、位置番号0から開始される。ステップ744で、位置が最大に至っておらず、まだ先行符号が発見されていないかどうかが検査される。その通りである場合に、ステップ746で、現在位置のベクトル係数が0であるか否かが検査される。0である場合に、ステップ754で、現在位置は1ステップ前へ進められ、処理が反復される。現在ベクトル係数が非零の場合、手順はステップ748へ続き、ステップ750で、負の係数は負のlead_signをもたらす。ステップ752で、第1の非零係数の位置がinitial_posとして記録され、その後、手順はステップ754へ続く。ステップ744で、先行符号が発見されたと判定された場合に、手順はステップ756へ続き、符号ベクトルencode_sign手順は初期化される。ステップ758〜766は、非零係数に関して入力ベクトルを探索し続け、符号ベクトル中の対応する位置は、続く非零係数の符号を与えられる。すべての位置が検査され終わると、ステップ769で、先行符号及び符号ベクトルが返送される。
この方式の利点は、先行符号の符号化位置の事前シフト又は事前特定により、インデクシング内部反復ループにおける先行符号のシャッフルを回避できることである。これは、分岐(IFs/ELSEs)を実現することのコストが大きい特定のハードウェアにおいて符号化内部ループを最適化することが望まれる場合に有益であるといえる。
表7は、MPVQ区分化先行符号反復の例を示す。NPVQ(n=3,k=5)=2*NMPVQ(3,5)=2*51=102であり、式中、「2」は、現時点で事前抽出された先行符号ビットに対応する。ベクトルPVQ-vec=[p0,p1,p2]であり、例えば、復号化インデックス8は[3,0,2]であり、sum(abs(PVQ-vec))=5となる。表7において、現時点で事前抽出された初期符号は正であり、この例で、2*U(n,k)初期振幅区分のロー/ハイ区分から導出された次の先行符号である。
Figure 0006909265
Figure 0006909265
表7 MPVQ(3,5)区分化先行符号列挙の例。
表8は、表7に従ったインデックス構成の例を示す。
現時点で提示される技術の更に別の部分では、混合低ダイナミクス行専用再帰が説明される。k値が十分に低い場合に、以下に更に提示される新たな行専用再帰公式を使用して、オフセットマトリクスA(n,k)の所定の行nに関して必要とされるオフセットを計算することが可能である。新たな再帰公式の詳細な抜粋は付録Bに示される。PVQ差オフセットA(n,k)の所定の行nに関する一般再帰式は、2012従来技術IETF/OPUS−Audio符号で使用される。
A(n,k)=A(n,k-2)+((2*n-1)*A(n,k-1)-A(n,k-2)) /(k-1)
Figure 0006909265
Figure 0006909265
表8 MPVQ(3,5)区分化先行符号列挙の例、インデックス構成例。
上記の式のマッサージング(massaging)及び操作により、新たな関係
U(n,k)=(A(n,k)-1)/2,
を使用して、新たな好適な低ダイナミックレンジ混合再帰公式
U(n,k)=U(n,k-2)+(n*A(n,k-1)-NMPVQ(n,k-2))/(k-1)
を取得でき、式中、NMPVQ(n,k)=1+U(n,k)+U(n,k+1)、(MPVQ(n,k)サイズ)である。
ここで新たな分子項n*A(n,k-1)は、対応する従来の技術の分子項(2*n-1)*A(n,k-1)よりはるかに低いダイナミックレンジである。
好適な解法では、k>0の場合にA(n,k)は奇数であるという事実を使用することにより、行nに関する以前のA(n,k)のみを使用するために、この行専用再帰を更にマッサージングすることができる。そこで、新たな非常に効率のよい混合再帰公式
U(n,k)=A(n,k-2)>>1+(n*A(n,k-1)-(1+A(n,k-1)>>1+A(n,k-2)>>1))/(k-1)
を取得し、式中、「>>」は2による整数除算であり、多くのハードウェアにおいて低コストの右シフトである。
これにより、従来の技術の行専用再帰より高いn及び高いkに対して、限定された精度で、例えば、64ビット以内又は32ビット以内又は33ビット以内の高速行専用再帰を使用可能である。言い換えれば、行再帰に関してn又はkの範囲を拡大したので、新たなn*A(n,k-1)の項は、旧来の項2*n*A(n,k-1)より遅くオーバフロー/終結する。
U(n,k)の結果のオフセットは、以前に使用されていたA(n,k)より低いダイナミクスを有するので、最適化行専用再帰のダイナミクスに関わる利点は、表2の縮小ダイナミックオフセットから間接的に見て取ることができ、また、表3の混合再帰オフセットでもわかる。
ここで提示される技術の更に別の部分では、混合MPVQ先行符号反復及びいずれかのレガシーPVQ反復が説明される。それに代わる別の可能な列挙方式は、ベクトルの残存部分に関して、初期MPVQ先行符号列挙段階及びそれに続く他の何らかの効率のよいPVQ列挙方式を採用することである。言い換えれば、第2の先行符号が列挙されるべきである場合、その都度、使用されるPVQ列挙方法をレガシー方式に切り替えることができる。初期先行符号MPVQ段階は、レガシー短符号語方式より1ビット多いビットを使用することを可能にし、初期MPVQ段階は、第1のMPVQ段階の後にオフセット(A,U)のダイナミクスを少なくとも1ビット少なくなるように縮小する。
表9は、デインデクシング構造の一例、並びに第1のMPVQ段階と、その後に続く第2のOPUS/IETF−Audio大きさ及び(サイズPVQ(n,k)=A(n,k)+A(n,k+1))ベース列挙段階とのハイブリッドな組み合わせであるMPVQHの結果とを示す。
Figure 0006909265
Figure 0006909265
表9 MPVQH(3,5)ハイブリッド単一先行符号列挙の例。
(n=3,k=5)の場合のMPVQの変形例。このハイブリッドバージョンは、単一先行符号反復インデクシング段階と、その後に続く従来の技術のIETF/OPUSに類似する[{−,0}/+]の大きさに基づくPVQインデクシング段階セルとを使用し、NPVQ=2*NMPVQH=2*51=102となり、式中、「2」は、単一の初期単一抽出先行符号ビットに対応する。
第1のMPVQ(n,k)段階を使用し、次に、第2の符号が追加されるべき場合に別のピラミッドベースPVQ列挙段階(IETF/OPUSに類似する大きさ段階)を使用するハイブリッド方式の欠点は(先に例示したMPVQHと同様に)、PROM符号サイズがきわめて大きくなることと、反復ループ内でインデクシング方法を切り替えるために、クリティカル反復ループの中で更に別のDSPサイクルを要求する更なる決定論理が必要になることである。また、いくつかのオフセットメモリを維持しなければならない。しかし、ハイブリッドMPVQ単一先行符号段階と、それに続く後続正規PVQ方式の段階とは、総合的な短符号語サイズを1ビット拡張するという利点、例えば、32ビットから33ビットに拡張するという利点も提供できる。
以上説明した実施形態において、先行符号は、ベクトル中の最初の非零係数の符号として選択されていた。しかし、他の実施形態では、ベクトル中の最後の非零係数として先行符号を選択することも可能である。従って、先行符号は、整数入力ベクトル又は整数出力ベクトルの終端非零係数の符号である。終端非零係数は、整数入力ベクトル又は整数出力ベクトルの最初の非零係数及び最後の非零係数のうち一方である。先行符号を抽出することにより、残りのインデクシングを簡略化できる。顕著な理由の1つは、インデクシング方式を2分の1にまで縮小できることである。インデクシング前に、処理すべきベクトルの中にどれほどの数の非零係数が存在するかはわかっていない。しかし、常に終端非零係数は存在する。
以上説明した実施形態において、整数入力ベクトルのインデクシングは最後の係数から開始され、最初の係数で終了すること、及びデインデクシングは整数出力ベクトルの最初の係数で開始され、最後の係数で終了するということも想定されていた。別の実施形態では、その代わりに、インデクシングは最初のベクトル係数で開始され、最後のベクトル係数で終了してもよく、デインデクシングは最後の係数で開始され、最初の係数で終了する。これに代わる終端非零係数の中の係数のいずれかとこれを組み合わせることができる。更なる実施形態では、インデクシングは、整数入力ベクトルの係数を何らかの所定の順序で取り上げてもよく、その場合、対応するデインデクシングは、整数出力ベクトルの係数を逆方向にたどる。ピラミッドベクトル量子化列挙方式及びピラミッドベクトル量子化列挙解除方式は、それに従って適応されてもよい。特定の一実施形態では、整数入力/出力ベクトル中の「位置」は、想定される処理順序における位置であることが可能であり、ベクトル自体の中の実際の位置に対応する必要はない。
提案される技術は、特定の実施形態において、有線デバイス又は無線デバイスのいずれであってもよいユーザ端末又はユーザ機器に適用されてもよい。
本明細書で使用される場合の非限定的な用語「ユーザ機器」(UE)及び「無線デバイス」は、移動電話、携帯電話、無線通信能力を備えるパーソナルデジタルアシスタント(PDA)、スマートフォン、内部又は外部にモバイルブロードバンドモデムを備えるラップトップコンピュータ又はパーソナルコンピュータ、無線通信能力を有するタブレットPC、目標デバイス、デバイスツーデバイスUE、マシン型UE又はマシンツーマシン通信が可能なUE、iPAD、顧客構内機器(CPE)、ラップトップ組み込み機器(LEE)、ラップトップ実装機器(LME)、ユニバーサルシリアルバス(USB)ドングル、ポータブル電子無線通信デバイス、無線通信能力を備えるセンサデバイスなどを表してもよい。特に、用語「UE」及び用語「無線デバイス」は、セルラ通信システム又は移動通信システムで無線ネットワークノードと通信するあらゆる種類の無線デバイス、あるいはセルラ通信システム又は移動通信システムの中における通信に関する何らかの関連規格に従った無線通信のための無線回路網を備えるあらゆるデバイスを含む非限定的な用語として解釈されるべきである。
本明細書で使用される場合の用語「有線デバイス」は、ネットワークに有線接続するように構成又は準備されたあらゆるデバイスを表してもよい。特に、有線デバイスは、無線通信能力を備えているか又は備えていないかにかかわらず、有線接続するように構成されている場合の上記のデバイスのうち少なくともいくつかであってもよい。
提案される技術は、特定の実施形態において、有線デバイス又は無線デバイスのいずれであってもよいネットワークノードに適用されてもよい。
特定の実施形態において、ネットワークノードは無線ネットワークノードであることが可能である。本明細書で使用される場合の非限定的な用語「無線ネットワークノード」は、基地局、ネットワークコントローラなどのネットワーク制御ノード、無線ネットワークコントローラ、基地局コントローラなどを表してもよい。特に、用語「基地局」は、Node B又は進化型Node B(eNB)などの標準化基地局を含み、マクロ/マイクロ/ピコ無線基地局、フェムト基地局としても知られるホーム基地局、リレーノード、中継局、無線アクセスポイント、基地トランシーバ局(BTS)、更には1つ以上の遠隔無線ユニット(RRU)を制御する無線制御ノードなどを更に含む異なる種類の無線基地局を含んでもよい。
ネットワークノードは、特定の実施形態において、有線通信システムの中のネットワークノードであることが可能である。
UE又はネットワークノードは、情報の送信及び/又は受信を含めて、1つ以上の他のノードと通信するための無線回路を更に含んでもよい。
本明細書で説明される方法及びデバイスは多様な方法で組み合わせ可能且つ再配置可能であることが理解されるだろう。
例えば、実施形態は、ハードウェアで実現されてもよく、適切な処理回路により実行するためにソフトウェアで実現されてもよく、あるいはハードウェアとソフトウェアの組み合わせで実現されてもよい。
本明細書で説明されるステップ、機能、手順、モジュール及び/又はブロックは、汎用電子回路網及び特定用途向け回路網の双方を含めて、ディスクリート回路技術又は集積回路技術のような従来のいずれかの技術を使用してハードウェアで実現されてもよい。
特定の例は、1つ以上の適切に構成されたデジタルシグナルプロセッサ及び他の既知の電子回路、例えば、特殊化機能を実行するように相互に接続された個別の論理ゲート又は特定用途向け集積回路(ASIC)を含む。
あるいは、本明細書で説明されるステップ、機能、手順、モジュール及び/又はブロックのうち少なくともいくつかは、1つ以上のプロセッサ又は処理ユニットなどの適切な処理回路網により実行するためのコンピュータプログラムのようなソフトウェアで実現されてもよい。
従って、本明細書で提示されるフローチャートは、1つ以上のプロセッサにより実行される場合にコンピュータフローチャートとみなされてもよい。対応する装置は機能モジュール群として定義されてもよく、プロセッサにより実行される各ステップは1つの機能モジュールに対応する。この場合、機能モジュールは、プロセッサで実行されるコンピュータプログラムとして実現される。
処理回路網の例は、1つ以上のマイクロプロセッサ、1つ以上のデジタルシグナルプロセッサ(DSP)、1つ以上の中央処理装置(CPU)、ビデオアクセラレーションハードウェア及び/又は1つ以上のフィールドプログラマブルゲートアレイ(FPGA)又は1つ以上のプログラマブルロジックコントローラ(PLC)のような何らかの適切なプログラム可能論理回路網を含むが、それらに限定されない。
また、提案される技術が実現される従来の何らかのデバイス又はユニットの汎用処理能力を再利用することも可能だろうということを理解すべきである。更に、既存のソフトウェアの再プログラミングにより又は新たなソフトウェアコンポーネントの追加により既存のソフトウェアを再利用することも可能だろう。
提案される技術は、オーディオ/ビデオ信号を符号化するように構成された符号化器を提供し、符号化器は、オーディオ/ビデオ信号サンプルを表す整数入力ベクトルを取得するように構成され、前記整数入力ベクトルは複数の整数値係数を有し、符号化器は、前記整数入力ベクトルから先行符号を抽出するように更に構成され、前記先行符号は、入力ベクトル中の終端非零係数の符号であり、前記終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、符号化器は、前記整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングするように更に構成され、前記出力インデックスは、前記先行符号と共にオーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は、終端非零係数の符号を無視するように設計され、符号化器は、先行符号を第1の符号語として且つ出力インデックスを第2の符号語として出力ビットストリームへ出力するように更に構成される。
特定の一例において、符号化器はプロセッサ及びメモリを備える。メモリは、プロセッサにより実行可能な命令を備え、それにより、符号化器/プロセッサは、オーディオ/ビデオ信号サンプルを表す整数入力ベクトルを取得するように動作し、前記整数入力ベクトルは複数の整数値係数を有し、符号化器/プロセッサは、前記整数入力ベクトルから先行符号を抽出するように更に動作し、前記先行符号は、入力ベクトル中の終端非零係数の符号であり、前記終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、符号化器/プロセッサは、前記整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングするように更に動作し、前記出力インデックスは、先行符号と共にオーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は、終端非零係数の符号を無視するように設計され、符号化器/プロセッサは、先行符号を第1の符号語として且つ出力インデックスを第2の符号語として出力ビットストリームへ出力するように更に動作する。
提案される技術は、ピラミッドベクトル量子化によりオーディオ/ビデオサンプルにデインデクシングするように構成された復号器を更に提供し、復号器は、入力ビットストリームから先行符号を第1の符号語として受信し、入力インデックスを第2の符号語として受信するように構成され、先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表し、先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号であり、整数出力ベクトルは複数の整数値係数を有し、終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、復号器は、入力インデックスをピラミッドベクトル量子化列挙解除方式によって整数出力ベクトルにデインデクシングするように更に構成され、列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計され、復号器は、終端非零係数の符号を受信された先行符号に従って割り当て、ベクトルを出力するように更に構成される。
特定の一例において、復号器はプロセッサ及びメモリを備える。メモリは、プロセッサにより実行可能な命令を備え、それにより、復号器/プロセッサは、入力ビットストリームから先行符号を第1の符号語として受信し、入力インデックスを第2の符号語として受信するように動作し、先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表し、先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号であり、整数出力ベクトルは複数の整数値係数を有し、終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、復号器/プロセッサは、入力インデックスをピラミッドベクトル量子化列挙解除方式によって整数出力ベクトルにデインデクシングするように更に動作し、列挙方式により作成される入力インデックスは、終端非零係数の符号を無視するように設計され、復号器/プロセッサは、終端非零係数の符号を受信された先行符号に従って割り当て、ベクトルを出力するように更に動作する。
以下に、図20を参照して、コンピュータ実現形態の一例を説明する。符号化器10は、1つ以上のプロセッサ800などの処理回路網及びメモリ810を備える。この特定の例では、本明細書で説明されるステップ、機能、手順、モジュール及び/又はブロックのうち少なくともいくつかは、処理回路網により実行するためにメモリにロードされるコンピュータプログラム820〜826で実現される。処理回路網及びメモリは、通常のソフトウェア実行を可能にするために互いに接続される。オプションの入力/出力デバイス804〜808も、入力パラメータ及び/又は生成される出力パラメータなどの関連データの入力及び/又は出力を可能にするために処理回路網及び/又はメモリに相互接続されてよい。
以下に、図21を参照して、コンピュータ実現形態の別の例を説明する。復号器60は、1つ以上のプロセッサ850などの処理回路網及びメモリ860を備える。この特定の例では、本明細書で説明されるステップ、機能、手順、モジュール及び/又はブロックのうち少なくともいくつかは、処理回路網により実行するためにメモリにロードされるコンピュータプログラム870〜876で実現される。処理回路網及びメモリは、通常のソフトウェア実行を可能にするために互いに接続される。オプションの入力/出力デバイス854〜858も、入力パラメータ及び/又は生成される出力パラメータなどの関連データの入力及び/又は出力を可能にするために処理回路網及び/又はメモリに相互接続されてよい。
用語「コンピュータ」は、一般的な意味で、特定の処理、判定又は計算タスクを実行するためにプログラムコード又はコンピュータプログラム命令を実行することが可能な何らかのシステム又はデバイスとして解釈されるべきである。
特定の一実施形態において、コンピュータプログラムは命令を備え、命令は、少なくとも1つのプロセッサにより実行される場合に、プロセッサに、前記オーディオ/ビデオ信号サンプルを表す整数入力ベクトルを取得させ、整数入力ベクトルは複数の整数値係数を有し、命令は、更に、プロセッサに、整数入力ベクトルから先行符号を抽出させ、先行符号は、整数入力ベクトル中の終端非零係数の符号であり、終端非零係数は、整数入力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、命令は、更に、プロセッサに、整数入力ベクトルをピラミッドベクトル量子化列挙方式によって出力インデックスにインデクシングさせ、出力インデックスは、先行符号と共にオーディオ/ビデオ信号サンプルを表し、ピラミッドベクトル量子化列挙方式は終端非零係数の符号を無視し、命令は、更に、プロセッサに、第1の符号語としての先行符号及び第2の符号語としての出力インデックスを出力ビットストリームへ出力させる。
特定の一実施形態において、コンピュータプログラムは命令を備え、命令は、少なくとも1つのプロセッサにより実行される場合に、プロセッサに、入力ビットストリームから第1の符号語としての先行符号及び第2の符号語としての入力インデックスを受信させ、先行符号及び入力インデックスはオーディオ/ビデオ信号サンプルを表し、先行符号は、オーディオ/ビデオ信号サンプルを表す符号であって、作成されるべき整数出力ベクトル中の終端非零係数の符号であり、整数出力ベクトルは複数の整数値係数を有し、終端非零係数は、整数出力ベクトル中の最初の非零係数及び最後の非零係数のうち一方であり、命令は、更に、プロセッサに、入力インデックスをピラミッドベクトル量子化列挙解除方式によって整数出力ベクトルにデインデクシングさせ、入力インデックスは、前記終端非零係数の符号を無視する列挙方式により作成され、命令は、更に、プロセッサに、終端非零係数の符号を受信された先行符号に従って割り当てさせ、整数出力ベクトルを出力させる。
提案される技術は、コンピュータプログラムを備えるキャリアを更に提供し、キャリアは、電子信号、光信号、電磁信号、磁気信号、電気信号、無線信号、マイクロ波信号又はコンピュータ可読記憶媒体のうち1つである。
従って、ソフトウェアプログラム又はコンピュータプログラムは、通常はコンピュータ可読媒体で搬送されるか又はコンピュータ可読媒体に記憶されるコンピュータプログラムとして実現されてもよい。コンピュータ可読媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、ブルーレイディスク、ユニバーサルシリアルバス(USB)メモリ、ハードディスクドライブ(HDD)記憶デバイス、フラッシュメモリ、磁気テープ又は他の何らかの従来のメモリデバイスを含む1つ以上の取り外し可能な又は取り外し不可能なメモリデバイスを含んでもよいが、それらに限定されない。従って、コンピュータプログラムは、コンピュータ又はそれと同等の処理デバイスの処理回路網により実行するために、コンピュータ又はそれと同等の処理デバイスのオペレーティングメモリにロードされてもよい。
本明細書で指示されるように、符号化器は機能モジュール群として定義されてもよく、それらの機能モジュールは、少なくとも1つのプロセッサで実行されるコンピュータプログラムとして実現される。
図22は、機能モジュール群830〜836を備える符号化器10の一例を示す概略ブロック図である。
メモリ810に常駐するコンピュータプログラムは、プロセッサ800により実行される場合に、本明細書で説明されるステップ及び/又はタスクの少なくとも一部を実行するように構成された適切な機能モジュール830〜836として編成されてもよい。そのような機能モジュール830〜836の一例が図22に示される。
本明細書で指示されるように、復号器は機能モジュール群として定義されてもよく、それらの機能モジュールは、少なくとも1つのプロセッサで実行されるコンピュータプログラムとして実現される。
図23は、機能モジュール群880〜886を備える復号器60の一例を示す概略ブロック図である。
メモリ860に常駐するコンピュータプログラムは、プロセッサ850により実行される場合に、本明細書で説明されるステップ及び/又はタスクの少なくとも一部を実行するように構成された適切な機能モジュール880〜886として編成されてもよい。そのような機能モジュール880〜886の一例が図23に示される。
提案される方式は、短符号語に基づくピラミッドベクトル量子化方式の性能を改善する。この方式は、必要とされるインデクシングオフセットのダイナミックレンジを縮小する。ダイナミックレンジの縮小に伴う望ましい副次効果は、所定のHWに対して、重大なペナルティなく1ビット大きい「短」PVQ符号語を使用できることである。
これにより、Bビット符号なし演算を支援するDSPハードウェアでB+1ビットPVQ符号語方式を使用することが可能になり、また、符号付きBビット整数演算(B−1ビットの大きさによる)のみを支援するDSPハードウェアでBビットPVQ符号語方式を実現することが可能になる。
更に、1ビット大きい符号語を効率よく符号化可能であるため、分割側情報を送信するために必要とされるオーバヘッドが減少される。次元N=128でk個の均等に分散したパルスのPVQ符号化を例にとると、2値次元分割ごとに関係を符号化するために5ビットが使用され、次元N=128にわたり、オーディオコーデックビット割り当てアルゴリズムにより71ビットがPVQに割り当てられた。
最適の無制限PVQは次の結果を与える。
log2(NPVQ(N=128,k=12))=67.2ビット、
log2(NMPVQ(N=128,k=12+1))=71.5ビット
67.2<71<71.5であり、すなわち、N=128にわたり最適無制限PVQを使用すると、12の単位パルスが可能であり、その結果、パルス密度は12/128となる。
レガシーB=32ビット方式は、ほぼ等しい次元[N1=43,N2=43,N3=42]への2回の分割を必要とするので、
2*log2(NPVQ(43,4))+log2(NPVQ(42,4))+2*5=63.25+2*5=73.25ビット
となり、73.25はビット予定71を超える。パルスの数を1減少させて11にしようと試みることにより、次の式が取得される。
2*log2(NPVQ(43,4))+log2(NPVQ(42,3))+2*5=58.84+2*5=68.84<71
この結果得られるパルス密度は11/128となる。
レガシーB=32ビット方式は、不均一分割次元[N1=64,N2=32,N3=32]への2回の分割を必要とするので、
log2(NPVQ(64,6))+2*log2(NPVQ(32,3))+2*5=53.34+2*5=73.34ビット
となり、73.25はビット予定71を超える。パルスの数を1減少させて11にしようと試みることにより、次の式が取得される。
2*log2(NPVQ(32,3))+log2(NPVQ(64,5))+2*5=58.92+2*5=68.9<71
この結果得られるパルス密度は11/128となる。
新規な(B+1)33ビットMPVQ方式は、[N1=64,N2=64]への1回の分割を必要とする。
2*log2(2*NMPVQ(64,6))+5=2*32.51+5=70.02ビット<71
式中、
2*NMPVQ(64,6)=NPVQ(64,6)=32.51>B
この結果得られるパルス密度は12/128となる。言い換えれば、次元N=128のベクトルに割り当てられる71ビットが与えられた場合、以前の32ビット符号語方式は11パルスしか提供できないが、新規な33ビット符号語方式は12個のパルスを提供できる。
符号化範囲が1ビット大きくなって33ビットになることによって、追加のベクトル分割のオーバヘッドを(多くの場合に)減少できるので、新規な方式は、オーディオコーデックの当初のビット割り当て命令に従ったビットの割り当てに更に適切に適合される。
オーディオコーデックビット割り当て方式の一例は、ITU−TG.719仕様、第7.5.2章又はOPUS RFC716、第4.3.4.1章で確認できる。
以上説明した実施形態は単なる例として提示されたにすぎず、提案される技術がそれらに限定されないことを理解すべきである。添付の特許請求の範囲により定義される本発明の範囲から逸脱せずに、種々の変形、組み合わせ及び変更が実施されてもよいことは当業者には理解されるだろう。特に、異なる実施形態における異なる部分の解法は、技術的に可能であれば、他の構成で組み合わせることができる。
略語
VQ ベクトル量子化器/量子化
PVQ ピラミッドVQ
PVQ(n,k) 次元n及び単位パルスの数kを有するPVQ構造、PVQ(n,k)はkと等しいL1ノルムを有するピラミッド構造である。
MPVQ 先行符号モジュールPVQ
MPVQ(n,k) 次元n及び単位パルスの数kを有するMPVQ構造、MPVQ(n,k)構造はスライスされたPVQ(n,k)ピラミッド構造であり、MPVQ(n,k)のL1ノルムはkである。
NPVQ(N,K) PVQ(次元N、単位パルスの数K)のサイズ
NMPVQ(N,K) MPVQ(次元N,単位パルスの数K)のサイズ
SIMD 単一命令多重データ(DSP命令カテゴリ)
DSP デジタルシグナルプロセッサ
HW ハードウェア
SW ソフトウェア
N、dim 次元
n、l 現在次元
k、K PVQ(n,k)及びMPVQ(n,k)の単位パルスの数
KMAX 最大K値
B 効率のよい動作のための目標ハードウェアシステムにおけるビット限界、今日のプロセッサでは通常(16)、32又は64ビット
R サンプルごとのビット数又は係数ごとのビット数
X 目標ベクトル
r、vec 形状ベクトル(残存ベクトルと呼ばれる場合もある)
G 目標ベクトルをスケーリングするための利得(スカラ又はベクトル)
RAM ランダムアクセスメモリ
OPS 毎秒演算回数
MOPS 100万命令毎秒
P-ROM プログラムROM
ROM 読み取り専用メモリ(通常、事前記憶データ)
LSB 最下位ビット
MSB 最上位ビット
LP 線形予測
付録A
本付録には、従来の技術の状態を確認するために、IETF/OPUS audio PVQの章からの関連事項の抜粋が含まれる。改善され、最適化されたOPUS−Audio PVQインデクシング/デインデクシングアルゴリズムは、RFC6716のテキスト説明では説明されないが、付属のIETF/OPUS−Audio RFC6716 PVQ−デインデクシングではc−コードファイル(cwrs.c)として提供されるいくつかの最適化を含む。
「PVQ復号化
PVQベクトルの復号化はdecode_pulses()(cwrs.c)で実現される。固有符号語インデックスは、均一に分散する0とV(N,K)−1との間の整数値として復号化され、V(N,K)は、N個のサンプル中のK個のパルスの可能な組み合わせの数である。次に、インデックスは、[PVQ]で指定されるのと同一の方法でベクトルに変換される。インデクシングはV(N,K)の計算に基づく([PVQ]ではN(L,K)と示される)。
組み合わせの数は、V(N,K)=N(N-1,K)+V(N,K-1)+V(N-1,K-1)として再帰的に計算可能であり、V(N,0)=1及びV(0,K)=0、K!=0である。事前計算テーブル及び再帰公式化の直接使用を含めて、V(N,K)を計算する多くの異なる方法が存在する。基準実現形態は、任意の行を初期化するための代替一変量反復及び小さなNに対する直接多項式解法と共に、メモリ使用時にセーブするために、再帰的公式化を一度に1行(又は1列)適用する。これらの方法はすべて同等であり、速度、メモリ利用度及び符号サイズに関して様々に異なるトレードオフを有する。実現形態は、数学的定義と同等であるならば、好適であるどの方法を使用してもよい。
復号化ベクトルXは次のように回復される。ft=V(N,K)として、第4.1.5章の手順によって復号化されるインデックスをiとすると、0≦iV(N,K)である。k=Kとする。そこで、jを0以上、(N-1)以下として、次のことを実行する。
1.p=(V(N-j-1,k)+N(N-j,k))/2とする。
2.i<pである場合、sgn=1とし、そうでない場合には、sgn=-1とし且つi=i-pと設定する。
3.k0=k及びp=p-V(N-j-1,k)と設定する。
4.p>iである場合、k=k-1及びp=p-V(N-j-1,k)と設定する。
5.X[j]=sgn*(k0-k)及びi=i-pと設定する。
次に、復号化ベクトルXのL2ノルムが1に等しくなるように、復号化ベクトルXは正規化される。
IETF/OPUS−audio PVQ符号語の限界及び分割
「分割復号化
PVQ符号ベクトルを復号化する場合に多精度計算の必要を回避するために、コードブックに許容される最大サイズは32ビットである。これより大型のコードブックが必要とされる場合、ベクトルは、サイズN/2の2つのサブベクトルに分割される。現在の割り当てから導出される精度を有する量子化利得ベクトルは、分割の各側の相対利得を表すためにエントロピー符号化され、復号化処理全体は再帰的に適用される。LM+1回の分割という限界まで、多数の分割レベルが適用されてもよい。ステレオオーディオの合同符号化には同一の再帰メカニズムが適用される。」
IETF/OPUS Audio RFC−6716 PVQ探索
「球形ベクトル量子化
CELTは、ピッチ予測器により予測されなかった各帯域のスペクトルの詳細を量子化するためにピラミッドベクトル量子化器(PVQ)[PVQ]を使用する。PVQコードブックは、N個のサンプルから成るベクトル中のK個の符号付きパルスのすべての和から構成され、同一の位置の2つのパルスは同一の符号を有することが要求される。従って、コードブックは、sum(abs(y(j)))=Kを満たすN個の次元のすべての整数符号ベクトルyを含む。
割り当てられた十分な数のビットが存在する帯域では、第5.3.2章の正規化の結果得られた単位ベクトルを直接符号化するためにPVQが使用される。PVQ符号ベクトルyが与えられた場合、単位ベクトルXはX=y/||y||として取得され、式中、||.||はL2ノルムを示す。」
「PVQ探索
最良の符号ベクトルyの探索は、alg_quant()(vq.c)により実行される。探索のためのいくつかの可能な方式があり、それらの方式では、品質と複雑度とのトレードオフが図られる。基準実現形態で使用される方法は、正規化スペクトルXをK-1個のパルスのコードブックピラミッドに投影することにより初期符号語y1を計算する。
y0=truncate_towards_zero((K-1)*X/sum(abs(X)))
N、K及び入力データに応じて、初期符号語y0は、0〜K-1個の非零値を含んでもよい。最後のパルスを除き、すべての残存パルスは、yとXとの正規化相関を最小限にする貪欲探索によって繰り返し発見される。
T
J=-X*y/||y||
以上説明した探索は、品質と計算コストとの適切なトレードオフであると考えられる。しかし、PVQコードブックを探索する他の方法も可能であり、実現に際しては、他のどのような探索方法を使用してもよい。celt/vq.cのalg_quant()を参照。」
IETF/OPUS Audio RFC6716 PVQインデクシング
「PVQインデクシング
符号化すべきベクトルXは、0≦i<V(N,K)となるように次のようにインデックスiに変換される。次に、(N-1)以下、0以上のjに対して、次のことを実行する。
1.k>0である場合、i=i+(V(N-j-1,k-1)+V(N-j,k-1))/2と設定する。
2.k=k+abs(X[j])と設定する。
3.X[j]<0である場合、i=i+(V(N-j-1,k)+V(N-j,k))/2と設定する。
次に、ft=V(N,K)として、第5.1.4章の手順を使用してインデックスiは符号化される。
付録B
MPVQ関連再帰式の導出
フィシャーの公式を使用するU(n,k)とM(n,k)=NMPVQ(n,k)とのサイズ関係の導出:
k個の単位パルスを有する次元nのPVQベクトルの数であるNPVQ(n,k)の短縮表記としてN(n,k)を使用する。
フィッシャーの1986年当時の当初のPVQ再帰は、
N(n,k)=N(n-1,k)+N(n-1,k-1)+N(n-1,k) (1)
である。
M(n,k)=N(n,k)/2と定義する。 (2)
M(n,k)は、NMPVQ(n,k)を表す短縮表記として以下のように使用される。
正の初期符号を有するPVQベクトルの数であるM(n,k)は、完全PVQピラミッドN(n,k)のエントリの数の2分の1である。
U(n,k)をsum(j=1,j=k-1,M(n-1,j)と定義する。 (3)
「k」の初期位置値を有するベクトルを除き且つ「0」の初期位置値を有するベクトルを除く残存先行+(正)符号を有するベクトルの数。
M(n,k)=1+2*U(n,k)+M(n-1,k); (4)
k=KMAXの場合に1、新たな/次の先行符号を有するベクトルの数に関して可能なただ1つのそのような先行ベクトル2*U(n,k)(新たな/次の先行符号が正又は負であるために「2」)(「(U(n,k)」ベクトルは初期正振幅[KMAX-1,KMAX-2...1]を有し、先行0値を有する残存ベクトルに関してM(n-1,k)
(M(n,k)=NMPVQ(n,k)と同等)
NMPVQ(n,k)=1+2*U(n,k)+NMPVQ(n-1,k); (4b)
M(n,k)-M(n-1,k)=1+2*U(n,k)=A(n,k) (5)
(1)、(2)、(5)を組み合わせると、
M(n-1,k)=U(n,k+1)-U(n,k) (6)
(4)、(6)を組み合わせると、
M(n,k)=1+U(n,k)+U(n,k+1) (7)
ここで、U(n,k)及びU(n,k+1)の双方が<M(n,k)(5)であるように、(7)をサイズ計算に使用でき、差(5)(A(n,k))は、振幅オフセット反復に依然として使用でき、A(n,KMAX+1)のようにA(n,KMAX)までのオフセットにのみ使用される場合に、M(n,KMAX)を超えてもよく、従って、精度が限定されたハードウェアで数値の問題を引き起こしうる。
U(n,k)に関する直接行計算再帰の導出
U(n,k)=(A(n,k)-1)/2 (式(5)から)
CELT/OPUS−Audioで使用されるPVQ差行A(n,k)に関する一般式
は次の通りである。
A(n,k)=A(n,k-2)+((2*n-1)*A(n,k-1)-A(n,k-2))/(k-1) (8)
(5)、(8)を組み合わせると、
U(n,k)=((2*n-1)*(U(n,k-1)+(k-2)*U(n,k-2)+n-1)/(k-1) (9)
あるいは、混合再帰を可能にすると、
U(n,k)=(A(n,k-2)-1)/2+((2*n-1)*A(n,k-1)-A(n,k-2))/(2*(k-1)) (10)
(8及び9、10)の分子のダイナミックレンジが高いため、特に精度が限定された演算システム(例えば、32ビットシステム)においては、この直接関数を評価する場合に特別な注意を払わなければならない。
(8)はIETF/OPUS及び元来のCELTで使用される。
先行するすべてのA(n,k<KMAX+1)が十分に低い値を有することは事前にわかっているので、(10)はU(n,KMAX+1)のMPVQシステム計算で使用できる。
(10)を更に簡略化できる(k>1の場合、A(n,k)は常に奇数であるため)。
U(n,k)=floor(A(n,k-2)/2)+(n*A(n,k-1)-(floor(A(n,k-1)/2)+floor(A(n,k-2)/2+1)))/(k-1) (11)
又はU(n,k)=U(n,k-2)+(n*A(n,k-1)-NMPVQ(n,k-2))/(k-1) (11b)
MPVQ n,k-マトリクス再帰関係
フィッシャーの関係(1)から、N(n,k)=N(n-1,k)+N(n-1,k-1)+N(n-1,k)。
(7)と(5)を組み合わせると、次のような再帰関係を発見できる。
初期条件
U(0,*)=0、U(1,*)=0、及びU(a,b)=U(b,a)
の場合、
U(n,k+1)=1+U(n-1,k)+U(n-1,k+1)+U(n,k) (12)
初期条件
A(0,0)=1、A(0,1+)=0、A(1,*)=1、及びA(a,b)=A(b,a)
の場合、
A(n,k+1)=A(n-1,k)+A(n-1,k+1)+A(n,k) (13)
A(n,k)に関して先行ベクトル行n-1,k=0:KMAXから行n,k=0:KMAXを反復計算するために(13)を使用でき、また、U(n,k)に関して先行ベクトル行n-1,k=0:KMAX+1から行n,k=0:KMAX+1を反復計算するために(12)を使用できる。
(13)はIETF−OPUS−Audioで使用される。
(12)及びA(n,k)が奇数であるという事実を使用して、新たな効率のよい混合再帰公式
U(n,k+1)=1+A(n-1,k)>>1+U(n-1,k+1)+A(n,k)>>1 (14)
を取得し、式中、「>>」は2による整数除算(右シフト)であり、A(大きなn,k+1)は飽和してもよいので、所定のダイナミックレンジ、例えば(最後の(k+1)オフセット列に関して32ビット)の中にとどまるために式14が使用される。
ベクトル半径関係、列挙の副次的結果及びベクトル長再帰関係
1998年に、Hung、Tsern、Mengは、サイズがN(l,k)=NPVQ(l,k)であるPVQ(1==n,k)ピラミッドに関していくつかの関連する追加の関係を更に要約している。以下に示すベクトル半径再帰関係「(43)」は、行l=nに関する基本行専用サイズ関係である。
以下の列挙公式の副次的結果「(44)」は、PVQサイズに関するいくつかの非零要素ベース積関係である。
Figure 0006909265
ベクトル長再帰(42)
Figure 0006909265
ベクトル半径再帰(43)
Figure 0006909265
列挙公式の副次的結果(44)

Claims (16)

  1. オーディオ又はビデオ信号から導出される係数のピラミッドベクトル量子化インデクシングのための方法であって、前記方法は、
    複数の前記係数を有する入力ベクトルを取得することと、
    前記入力ベクトルにおける最初又は最後の非零係数の符号である先行符号を、前記入力ベクトルから抽出することと、
    変形ピラミッドベクトル量子化列挙方式を用いて、前記入力ベクトルを、前記先行符号と共に前記係数を表す出力インデクスにインデクシングすることと、
    前記変形ピラミッドベクトル量子化列挙方式が、前記入力ベクトルの前記出力インデクスへの前記インデクシングを実行する際に、前記先行符号を無視することと、
    前記先行符号と前記出力インデクスとを、出力ビットストリームにおけるコードワードとして出力することと、
    を有することを特徴とする方法。
  2. 前記変形ピラミッドベクトル量子化列挙方式を用いた前記入力ベクトルの前記インデクシングは、非零係数の符号をシフトして、そのシフトした符号が前記入力ベクトルの前記出力インデクスへの前記インデクシングの方向における次の非零係数と関連付けられて符号化されるようにすることを含む、ことを特徴とする請求項1に記載の方法。
  3. 前記入力ベクトルの前記取得は、前記複数の前記係数を有する整数入力ベクトルを取得することを含む、ことを特徴とする請求項1に記載の方法。
  4. 前記インデクシングは、反復列挙手順によって実行され、
    前記反復列挙手順は、前記入力ベクトルのうちの1つの現在の係数を考慮するために選択する反復ステップの繰り返しを含み、
    前記反復ステップは、順に、
    前記入力ベクトルの前記現在の係数の前に処理された前記入力ベクトルのすべての係数と関連するオフセットパラメータを発見することと、
    前記オフセットパラメータに従って累積インデクスを増加させることと、
    を含み、
    前記反復ステップの前記繰り返しは、少なくとも前記入力ベクトルのすべての前記係数が考慮されるまで、前記現在の係数として順次選択されている前記入力ベクトルの係数を用いて継続され、
    前記反復列挙手順は、前記反復ステップの繰り返しが終了したことに応答して、前記累積インデクスの値に基づいて前記出力インデクスが設定される終了ステップをさらに含む、
    ことを特徴とする請求項1に記載の方法。
  5. 前記反復ステップの前記繰り返しは、少なくとも前記入力ベクトルにおける前記係数の全てが考慮されるまで、前記現在の係数として順次選択されている前記入力ベクトルの係数を用いて継続され、
    前記反復列挙手順の前記終了ステップは、前記反復ステップの前記繰り返しの前記終了に応答して、前記累積インデクスと等しい前記出力インデクスを設定する、ことを特徴とする請求項に記載の方法。
  6. 各反復ステップにおける前記累積インデクスの前記増加は、前記入力ベクトルにおける以前の非零係数の符号に従った最下位ビットに基づく、ことを特徴とする請求項に記載の方法。
  7. 前記累積インデクスの前記増加は、nが前記入力ベクトルの次元でありkが単位パルスの数である場合の第1のオフセットパラメータU(n,k)に少なくとも部分的に基づき、前記第1のオフセットパラメータU(n,k)は、先行する0を持たず、先行値kを持たず、先行する正の値を有し且つ正の次の先行符号を有した、次元n及びkのL1ノルムのベクトルの数として定められる、ことを特徴とする請求項に記載の方法。
  8. 前記累積インデクスの前記増加は、nが前記入力ベクトルの次元でありkが単位パルスの数である場合の第2のオフセットパラメータA(n,k)に少なくとも部分的に基づき、前記第2のオフセットパラメータA(n,k)は、正の先行値を有するとともに先行する0を持たない、次元n及びkのL1ノルムのベクトルの数として定められる、ことを特徴とする請求項に記載の方法。
  9. オーディオ又はビデオ信号から導出される係数のピラミッドベクトル量子化インデクシングを実行するように構成されたエンコーダであって、前記エンコーダは、
    複数の前記係数を有する入力ベクトルを取得することと、
    前記入力ベクトルにおける最初又は最後の非零係数の符号である先行符号を、前記入力ベクトルから抽出することと、
    変形ピラミッドベクトル量子化列挙方式を用いて、前記入力ベクトルを、前記先行符号と共に前記係数を表す出力インデクスにインデクシングすることと、
    前記変形ピラミッドベクトル量子化列挙方式が、前記入力ベクトルの前記出力インデクスへの前記インデクシングを実行する際に、前記先行符号を無視することと、
    前記先行符号と前記出力インデクスとを、出力ビットストリームにおけるコードワードとして出力することと、
    を含んだ動作を実行するように構成されたことを特徴とするエンコーダ。
  10. 前記変形ピラミッドベクトル量子化列挙方式を用いて前記入力ベクトルを前記インデクシングする動作は、非零係数の符号をシフトして、そのシフトした符号が前記入力ベクトルの前記出力インデクスへの前記インデクシングの方向における次の非零係数と関連付けられて符号化されるようにすることを含む、ことを特徴とする請求項に記載のエンコーダ。
  11. 前記入力ベクトルの前記取得の動作は、前記複数の前記係数を有する整数入力ベクトルを取得することを含む、ことを特徴とする請求項に記載のエンコーダ。
  12. 前記インデクシングの動作は、反復列挙手順によって実行され、
    前記反復列挙手順は、前記入力ベクトルのうちの1つの現在の係数を考慮するために選択する反復動作の繰り返しを含み、
    前記反復動作は、順に、
    前記入力ベクトルの前記現在の係数の前に処理された前記入力ベクトルのすべての係数と関連するオフセットパラメータを発見することと、
    前記オフセットパラメータに従って累積インデクスを増加させることと、
    を含み、
    前記反復動作の前記繰り返しは、少なくとも前記入力ベクトルのすべての前記係数が考慮されるまで、前記現在の係数として順次選択されている前記入力ベクトルの係数を用いて継続され、
    前記反復列挙手順は、前記反復動作の繰り返しが終了したことに応答して、前記累積インデクスの値に基づいて前記出力インデクスが設定される終了動作をさらに含む、
    ことを特徴とする請求項に記載のエンコーダ。
  13. 前記反復動作の前記繰り返しは、少なくとも前記入力ベクトルにおける前記係数の全てが考慮されるまで、前記現在の係数として順次選択されている前記入力ベクトルの係数を用いて継続され、
    前記反復列挙手順の前記終了動作は、前記反復動作の前記繰り返しの前記終了に応答して、前記累積インデクスと等しい前記出力インデクスを設定する、ことを特徴とする請求項1に記載のエンコーダ。
  14. 各反復動作における前記累積インデクスの前記増加の動作は、前記入力ベクトルにおける以前の非零係数の符号に従った最下位ビットに基づく、ことを特徴とする請求項1に記載のエンコーダ。
  15. 前記累積インデクスの前記増加は、nが前記入力ベクトルの次元でありkが単位パルスの数である場合の第1のオフセットパラメータU(n,k)に少なくとも部分的に基づき、前記第1のオフセットパラメータU(n,k)は、先行する0を持たず、先行値kを持たず、先行する正の値を有し且つ正の次の先行符号を有した、次元n及びkのL1ノルムのベクトルの数として定められる、ことを特徴とする請求項1に記載のエンコーダ。
  16. 前記累積インデクスの前記増加は、nが前記入力ベクトルの次元でありkが単位パルスの数である場合の第2のオフセットパラメータA(n,k)に少なくとも部分的に基づき、前記第2のオフセットパラメータA(n,k)は、正の先行値を有するとともに先行する0を持たない、次元n及びkのL1ノルムのベクトルの数として定められる、ことを特徴とする請求項1に記載のエンコーダ。
JP2019181619A 2014-02-27 2019-10-01 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置 Active JP6909265B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461945403P 2014-02-27 2014-02-27
US61/945,403 2014-02-27
JP2018153568A JP6598947B2 (ja) 2014-02-27 2018-08-17 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018153568A Division JP6598947B2 (ja) 2014-02-27 2018-08-17 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置

Publications (2)

Publication Number Publication Date
JP2020024431A JP2020024431A (ja) 2020-02-13
JP6909265B2 true JP6909265B2 (ja) 2021-07-28

Family

ID=52774513

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2016544453A Active JP6389525B2 (ja) 2014-02-27 2015-02-26 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置
JP2018153568A Active JP6598947B2 (ja) 2014-02-27 2018-08-17 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置
JP2019181619A Active JP6909265B2 (ja) 2014-02-27 2019-10-01 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2016544453A Active JP6389525B2 (ja) 2014-02-27 2015-02-26 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置
JP2018153568A Active JP6598947B2 (ja) 2014-02-27 2018-08-17 オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置

Country Status (12)

Country Link
US (5) US9774854B2 (ja)
EP (2) EP3917016B1 (ja)
JP (3) JP6389525B2 (ja)
KR (4) KR102132522B1 (ja)
CN (3) CN110033779B (ja)
CA (1) CA2940382C (ja)
DK (1) DK3111560T3 (ja)
ES (1) ES2880779T3 (ja)
PL (1) PL3111560T3 (ja)
PT (1) PT3111560T (ja)
TW (3) TWI768295B (ja)
WO (1) WO2015130210A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10045014B2 (en) * 2013-07-15 2018-08-07 Mediatek Singapore Pte. Ltd. Method of disparity derived depth coding in 3D video coding
EP3917016B1 (en) * 2014-02-27 2024-04-03 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for pyramid vector quantization indexing
JP6170575B2 (ja) 2014-07-28 2017-07-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピラミッドベクトル量子化器形状サーチ
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
ES2821141T3 (es) * 2016-12-16 2021-04-23 Ericsson Telefon Ab L M Método y codificador para manejar coeficientes de representación de envolvente
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
US10586546B2 (en) 2018-04-26 2020-03-10 Qualcomm Incorporated Inversely enumerated pyramid vector quantizers for efficient rate adaptation in audio coding
US10573331B2 (en) * 2018-05-01 2020-02-25 Qualcomm Incorporated Cooperative pyramid vector quantizers for scalable audio coding
CN108833927B (zh) * 2018-05-03 2019-08-16 北京大学深圳研究生院 一种基于删除量化矩阵中0元素的点云属性压缩方法
US10734006B2 (en) * 2018-06-01 2020-08-04 Qualcomm Incorporated Audio coding based on audio pattern recognition
CN109003615B (zh) * 2018-08-27 2020-12-25 合肥工业大学 语音流嵌入信息方法及装置、语音流解码信息方法及装置
US10727868B2 (en) * 2018-12-03 2020-07-28 Samsung Electronics Co., Ltd. Apparatus and method for offset optimization for low-density parity-check (LDPC) code
US20200402523A1 (en) * 2019-06-24 2020-12-24 Qualcomm Incorporated Psychoacoustic audio coding of ambisonic audio data
KR102532567B1 (ko) * 2020-12-31 2023-05-16 세메스 주식회사 기판형 센서, 및 약액의 탄착점 및 타력 측정 방법

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956674A (en) * 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
JP3246715B2 (ja) * 1996-07-01 2002-01-15 松下電器産業株式会社 オーディオ信号圧縮方法,およびオーディオ信号圧縮装置
NO307240B1 (no) * 1997-07-28 2000-02-28 Fast Search & Transfer As Fremgangsmate ved kompresjonskoding
US6006179A (en) 1997-10-28 1999-12-21 America Online, Inc. Audio codec using adaptive sparse vector quantization with subband vector classification
WO1999063523A1 (de) * 1998-05-29 1999-12-09 Siemens Aktiengesellschaft Verfahren und anordnung zur sprachcodierung
US6463407B2 (en) * 1998-11-13 2002-10-08 Qualcomm Inc. Low bit-rate coding of unvoiced segments of speech
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
EP1296524A1 (en) * 2001-09-20 2003-03-26 STMicroelectronics S.r.l. Process and apparatus for the compression of digital video signals, a system and a computer program product therefor
KR100487719B1 (ko) 2003-03-05 2005-05-04 한국전자통신연구원 광대역 음성 부호화를 위한 엘에스에프 계수 벡터 양자화기
US8238424B2 (en) * 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
TWI433545B (zh) * 2007-10-30 2014-04-01 Nippon Telegraph & Telephone 影像編碼裝置及影像解碼裝置
WO2010031131A1 (en) * 2008-09-18 2010-03-25 Commonwealth Scientific And Industrial Research Organisation Vector quantization in wireless communication
CN102081926B (zh) * 2009-11-27 2013-06-05 中兴通讯股份有限公司 格型矢量量化音频编解码方法和系统
CN102081927B (zh) * 2009-11-27 2012-07-18 中兴通讯股份有限公司 一种可分层音频编码、解码方法及系统
CN102158692B (zh) * 2010-02-11 2013-02-13 华为技术有限公司 编码方法、解码方法、编码器和解码器
JPWO2011158657A1 (ja) * 2010-06-17 2013-08-19 シャープ株式会社 画像フィルタ装置、復号装置、符号化装置、および、データ構造
CN102959873A (zh) * 2010-07-05 2013-03-06 日本电信电话株式会社 编码方法、解码方法、装置、程序及记录介质
US8879634B2 (en) * 2010-08-13 2014-11-04 Qualcomm Incorporated Coding blocks of data using one-to-one codes
US9135922B2 (en) * 2010-08-24 2015-09-15 Lg Electronics Inc. Method for processing audio signals, involves determining codebook index by searching for codebook corresponding to shape vector generated by using location information and spectral coefficients
CN102081936B (zh) * 2011-02-23 2012-06-06 凌阳科技股份有限公司 资料还原方法与装置
WO2012122303A1 (en) * 2011-03-07 2012-09-13 Xiph. Org Method and system for two-step spreading for tonal artifact avoidance in audio coding
WO2012122299A1 (en) * 2011-03-07 2012-09-13 Xiph. Org. Bit allocation and partitioning in gain-shape vector quantization for audio coding
US8694474B2 (en) * 2011-07-06 2014-04-08 Microsoft Corporation Block entropy encoding for word compression
US9591304B2 (en) * 2011-11-08 2017-03-07 Tektronix, Inc. Evaluation of perceptual visual quality
US9560386B2 (en) * 2013-02-21 2017-01-31 Mozilla Corporation Pyramid vector quantization for video coding
JP6313981B2 (ja) * 2014-01-22 2018-04-18 株式会社デンソーテン レーダ装置、車両制御システム、および、信号処理方法
EP3917016B1 (en) * 2014-02-27 2024-04-03 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for pyramid vector quantization indexing
US20160093308A1 (en) * 2014-09-26 2016-03-31 Qualcomm Incorporated Predictive vector quantization techniques in a higher order ambisonics (hoa) framework
US9747910B2 (en) * 2014-09-26 2017-08-29 Qualcomm Incorporated Switching between predictive and non-predictive quantization techniques in a higher order ambisonics (HOA) framework
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer

Also Published As

Publication number Publication date
JP2020024431A (ja) 2020-02-13
PL3111560T3 (pl) 2021-12-06
US20190098309A1 (en) 2019-03-28
KR101790463B1 (ko) 2017-11-20
TWI587640B (zh) 2017-06-11
CA2940382A1 (en) 2015-09-03
US9774854B2 (en) 2017-09-26
KR102280943B1 (ko) 2021-07-22
WO2015130210A1 (en) 2015-09-03
JP2017516121A (ja) 2017-06-15
EP3917016C0 (en) 2024-04-03
CN105993178A (zh) 2016-10-05
PT3111560T (pt) 2021-07-08
US10158854B2 (en) 2018-12-18
TWI683547B (zh) 2020-01-21
US20170272753A1 (en) 2017-09-21
JP2019035962A (ja) 2019-03-07
EP3917016A1 (en) 2021-12-01
CN110033779A (zh) 2019-07-19
CN109905718A (zh) 2019-06-18
US20160088297A1 (en) 2016-03-24
ES2880779T3 (es) 2021-11-25
CA2940382C (en) 2019-03-05
TW201545485A (zh) 2015-12-01
TWI768295B (zh) 2022-06-21
CN110033779B (zh) 2023-11-17
EP3917016B1 (en) 2024-04-03
EP3111560B1 (en) 2021-05-26
TW201722089A (zh) 2017-06-16
KR20210006002A (ko) 2021-01-15
EP3111560A1 (en) 2017-01-04
KR20160122209A (ko) 2016-10-21
US10404984B2 (en) 2019-09-03
KR102132522B1 (ko) 2020-07-09
KR102202260B1 (ko) 2021-01-12
CN109905718B (zh) 2023-05-12
CN105993178B (zh) 2019-03-29
JP6389525B2 (ja) 2018-09-12
TW202103457A (zh) 2021-01-16
US20190342552A1 (en) 2019-11-07
KR20200084913A (ko) 2020-07-13
US10715807B2 (en) 2020-07-14
JP6598947B2 (ja) 2019-10-30
KR20170118236A (ko) 2017-10-24
US10841584B2 (en) 2020-11-17
US20200296375A1 (en) 2020-09-17
DK3111560T3 (da) 2021-06-28

Similar Documents

Publication Publication Date Title
JP6909265B2 (ja) オーディオ/ビデオサンプルベクトルのピラミッドベクトル量子化インデクシング及びデインデクシングの方法及び装置
RU2762329C2 (ru) Поиск формы пирамидального векторного квантователя
CN106537914B (zh) 通过限制的进位运算来执行算术编译的方法和设备
FI110373B (fi) Menetelmä pakatun audiosignaalin purkamiseksi

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191023

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210301

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210303

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: 20210614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210702

R150 Certificate of patent or registration of utility model

Ref document number: 6909265

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150