JP6170575B2 - ピラミッドベクトル量子化器形状サーチ - Google Patents

ピラミッドベクトル量子化器形状サーチ Download PDF

Info

Publication number
JP6170575B2
JP6170575B2 JP2015563093A JP2015563093A JP6170575B2 JP 6170575 B2 JP6170575 B2 JP 6170575B2 JP 2015563093 A JP2015563093 A JP 2015563093A JP 2015563093 A JP2015563093 A JP 2015563093A JP 6170575 B2 JP6170575 B2 JP 6170575B2
Authority
JP
Japan
Prior art keywords
loop
vector
inner dimension
enloop
represent
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
JP2015563093A
Other languages
English (en)
Other versions
JP2016527527A (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
Application filed by テレフオンアクチーボラゲット エルエム エリクソン(パブル), テレフオンアクチーボラゲット エルエム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エルエム エリクソン(パブル)
Publication of JP2016527527A publication Critical patent/JP2016527527A/ja
Application granted granted Critical
Publication of JP6170575B2 publication Critical patent/JP6170575B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • 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
    • 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • 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
    • G10L2019/0001Codebooks
    • G10L2019/0013Codebook search algorithms

Landscapes

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

Description

本開示は主に符号器により行われるベクトル量子化(VQ)に関する。
非拘束ベクトル量子化は所定長のグループ化されたサンプル、すなわちベクトルについての最適な量子化方法であることが知られている。しかしながら、非拘束ベクトル量子化の実装は、複雑さとメモリ容量に関する高い要求を暗示する。メモリ拘束およびサーチ複雑さの拘束を伴う状況においてもベクトル量子化を実装可能とするという願いにより、いわゆるストラクチャードベクトル量子化器の開発が導かれた。異なる構造は、サーチ複雑さおよびメモリ要求に関する異なるトレードオフを与える。そのような方法のひとつはいわゆる利得−形状ベクトル量子化であり、ターゲットベクトルtは形状ベクトルxおよび利得値Gを使用して表される。
(式0)
利得−形状ベクトル量子化のコンセプトは、ターゲットベクトルtを直接量子化する代わりに{x、G}のペアを量子化することである。正規化された形状入力に対して調整された形状量子化器および信号のダイナミクスを取り扱う利得量子化器を使用して、利得(G)成分および形状(x)成分が符号化される。ダイナミクスと形状とへの分割は、ファインストラクチャとも呼ばれ、知覚的聴覚モデルによく合うので、この利得−形状構造は音声符号化においてよく使用される。利得−形状コンセプトは、離散コサイン変換係数やビデオ符号化で使用される他の係数に適用可能である。
ITU−T G.718やIETF Opus(RFC6716)などの多くのスピーチおよびオーディオコーデックは、ターゲットスピーチ/オーディオ信号のスペクトル係数を符号化するためにストラクチャードPVQに基づく利得−形状VQを使用する。
PVQコーディングコンセプトはR.Fischerにより1983年〜1986年頃に紹介され、それ以来、より効率的なデジタルシグナルプロセッサ、DSPsの登場により実用化に至るまで発展してきた。PVQ符号化コンセプトは、K単位パルスの整数L1ノルムを伴うN次元ハイパーピラミッド上の点をサーチして見つけ、符号化することを含む。いわゆるL1ノルムは、ベクトルの絶対値の和である。すなわち、符号付き整数のPVQベクトルの絶対値和は正確にKになるよう拘束されている。ここで、単位パルスは整数値「1」により表される。非負の整数のみを表すことができる符号なしの場合との関係で、符号付き整数は負の整数を表すことができる。
他の多くのストラクチャードVQsと比べた場合のストラクチャードPVQコーディングアプローチの興味深い利点のひとつは、次元Nに関して生来的な制限はなく、したがってPVQコーディングのために開発されたサーチ方法は任意の次元Nおよび任意のK値に対して適用可能であることである。
ストラクチャードPVQ−形状量子化に伴うひとつの課題は、リーズナブルな複雑さを使用して最良の可能な量子化ベクトルを見つけることである。スピーチおよびオーディオコーディングのレートがより高い場合には許される単位パルスの数Kが非常に大きくなりかつ次元Nも大きくなりうるが、そのような場合には、効率的なPVQ−サーチを得つつも再構成されたスピーチ/オーディオの例えば信号対雑音比、SNRの観点での質を維持するというより強い要請が存在する。
さらに、PVQコンセプトの使用はスピーチおよびオーディオコーディング分野に限られるものではない。現在、いわゆるインターネットエンジニアリングタスクフォース、IETFはビデオコーデック開発を進めており、そこではPVQベースのアルゴリズムを使用して離散コサイン変換、DCT係数が符号化される。ビデオコーディングでは、ディスプレイが大きくなると係数の数も非常に大きくなりうるので、効率的なサーチ手順を有することがオーディオコーディングの場合よりも重要である。
ストラクチャードPVQについて、高い信号対雑音比を提供しつつも計算効率のよい形状サーチを可能とすることが望まれている。特に、固定精度DSPを含む実装について。本明細書で提供される解決法は、改良されたPVQファインサーチを提供することで、計算効率のよいPVQ形状サーチを可能とする。
第1の態様によると、符号器により行われるPVQ形状サーチ方法が提供される。PVQは、前提として、ターゲットベクトルxを入力として取得することと、インナ次元サーチループに単位パルスを繰り返し加えることでベクトルyを導くことと、を含む。提供される方法は、単位パルス追加のための次のインナ次元サーチループに入る前に、変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定することを含む。変数enloopは今度のインナ次元ループにおけるyの累積エネルギに係る。
第2の態様によると、PVQ形状サーチのための符号器が提供される。PVQは、前提として、ターゲットベクトルxを入力として取得することと、インナ次元サーチループに単位パルスを繰り返し加えることでベクトルyを導くことと、を含む。提供される符号器は、単位パルス追加のための次のインナ次元サーチループに入る前に、変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定するよう構成される。変数enloopは今度のインナ次元ループにおけるyの累積エネルギに係る。
単位パルス追加のための次のインナ次元ループに入る前に、xとベクトルyとの間の次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、入力ベクトルxの最大絶対値、xabsmaxに基づいて、決定することを方法が含んでもよいし、符号器がそのように決定するよう構成されてもよい。
enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すためにより長いビットワード長を使用してインナループ計算を行うことを方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。
enloopを表すために現在のビットワード長より多くが必要な場合、インナループにおけるxとベクトルyとの間の二乗累積インループ相関値、corrxy を表すためにより長いビットワード長を使用してインナループ計算を行うことを方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。
enloopを表すために現在のビットワード長より多くが必要でない場合、enloopを表すために第1ビットワード長を使用した第1単位パルス追加ループを用いることによりインナループ計算を行うことと、enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すために、第1単位パルス追加ループよりも長いビットワード長を使用した第2単位パルス追加ループを用いることによりインナループ計算を行うことと、を方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。
enloopを表すために現在のビットワード長より多くが必要か否かをmaxampに基づいて決定することは、今度のインナサーチループにおいて単位パルスがmaxampに関連付けられたyにおける位置に加えられる場合の特性を決定することを含んでもよい。
単位パルス追加のためのインナ次元サーチループにおいて、yにおける各位置nについて、現在のnの相関およびエネルギ値と、以前のnの値から保存された二乗相関、BestCorrSqおよびエネルギ値bestEnと、のたすき掛けを評価することで単位パルス追加のためのyにおける位置nbest
のように決定することをさらに方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。
ターゲットベクトルxに関連するKの最終値がしきい値を超える場合、maxampを追跡することを方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。ここで、Kの現在の値が上の文で言及されたしきい値であってもよいしきい値を超える場合にのみ、エネルギマージンen_marginを計算することを方法が含んでもよいし、符号器がそれを行うよう構成されてもよい。
第3の態様によると、第2の態様に係る符号器を備える通信デバイスが提供される。
第4の態様によると、DSPなどの少なくともひとつのプロセッサ上で実行された場合、第1の態様に係る方法を少なくともひとつのプロセッサに実行させるインストラクションを備えるコンピュータプログラムが提供される。
第5の態様によると、第4の態様に係るコンピュータプログラムを含むキャリアが提供される。このキャリアは、電気信号、光信号、無線信号、またはコンピュータ可読保持媒体のうちのひとつである。
第6の態様によると、PVQ形状サーチのために構成された符号器が提供される。PVQはターゲットベクトルxを入力として取得し、インナ次元サーチループに単位パルスを繰り返し加えることでベクトルyを導く。提供される符号器は第1決定部を備える。第1決定部は、単位パルス追加のための次のインナ次元サーチループに入る前に、今度のインナ次元ループにおけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定するためのものである。
第6の態様に係る符号器は、単位パルス追加のための次のインナ次元ループに入る前に、xとベクトルyとの間の次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、入力ベクトルxの最大絶対値、xabsmaxに基づいて、決定するための第2決定部を備えてもよい。
第6の態様に係る符号器は、enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すためにより長いビットワード長を使用してインナループ計算を行うためのファインサーチ部を備えてもよい。
第6の態様に係る符号器は、enloopを表すために現在のビットワード長より多くが必要でない場合、第1ビットワード長を使用した第1単位パルス追加ループを用いることによりインナループ計算を行い、enloopを表すために現在のビットワード長より多くが必要な場合、第1単位パルス追加ループよりも長いビットワード長を使用した第2単位パルス追加ループを用いることによりインナループ計算を行うためのファインサーチ部を備えてもよい。
第6の態様に係る符号器は、enloopを表すために現在のビットワード長より多くが必要でない場合、所定の精度を有する第1単位パルス追加ループを用いることによりインナループ計算を行い、enloopを表すために現在のビットワード長より多くが必要な場合、第1単位パルス追加ループよりも高い精度を有する第2単位パルス追加ループを用いることによりインナループ計算を行うためのファインサーチ部を備えてもよい。
第6の態様に係る符号器は、今度のインナサーチループにおいて単位パルスがmaxampに関連付けられたyにおける位置に加えられる場合の特性を決定することにより、enloopを表すために現在のビットワード長より多くが必要か否かをmaxampに基づいて決定することを実行するよう構成されてもよい。
第6の態様に係る符号器は、単位パルス追加のためのインナ次元サーチループにおいて、yにおける各位置nについて、現在のnの相関およびエネルギ値と、以前のnの値から保存された相関、BestCorrSqおよびエネルギ値bestEnと、のたすき掛けを評価することで単位パルス追加のためのyにおける位置nbest
のように決定するためのファインサーチ部を備えてもよい。第6の態様に係る符号器は、ターゲットベクトルxに関連する最終単位パルスの数、Kがしきい値を超える場合、maxampを追跡するための格納ユニットを備えてもよい。
第7の態様によると、第6の態様に係る符号器を備える通信デバイスが提供される。
本明細書で開示される技術の前述のおよび他の目的、特徴および利点は、添付の図面で説明されるように、以下の実施の形態のより具体的な説明から明らかとなるであろう。図面は必ずしも実寸通りではなく、むしろ本明細書で開示される技術の原理の説明に重きが置かれている。
図1−4は、異なる例示的実施の形態に係る、PVQ形状サーチ(ファインサーチ)の方法を説明する。 図1−4は、異なる例示的実施の形態に係る、PVQ形状サーチ(ファインサーチ)の方法を説明する。 図1−4は、異なる例示的実施の形態に係る、PVQ形状サーチ(ファインサーチ)の方法を説明する。 図1−4は、異なる例示的実施の形態に係る、PVQ形状サーチ(ファインサーチ)の方法を説明する。 例示的な実施の形態に係る、PVQ形状サーチ(ファインサーチ)の実施の形態のステップを示す。 例示的な実施の形態に係る、図5のPVQ形状サーチ(ファインサーチ)のステップをより詳細に示す。 PVQ形状サーチの実施の形態を示す。 EVS符号器を装備する通信デバイスの実施の形態を示す。 通信デバイスの実施の形態を示す。 通信デバイスの実施の形態を示す。 図11a−cは、例示的な実施の形態に係る符号器を示す。 図11a−cは、例示的な実施の形態に係る符号器を示す。 図11a−cは、例示的な実施の形態に係る符号器を示す。 PVQオーディオコーディングシステムの一例を示す。ここで、システムの少なくとも一部は符号器および/またはコーデックに含まれ、その符号器および/またはコーデックは携帯電話などの通信デバイスに含まれる。
浮動小数点演算においては、インナループPVQ形状サーチ繰り返しパラメータのダイナミクスを確立することに関する大きな課題はない。しかしながら、例えば16/32ビット限定アキュムレータ(中間演算および/または論理結果が保持されるレジスタ)および変数を伴う固定精度DSPsにおいては、DSP変数の制限されたダイナミックレンジが最大化され、かつ精度が最大化されつつも利用可能な高速制限ダイナミックレンジDSP動作をできるだけ多く使用できる、効率的なサーチ方法を用いることが非常に重要である。
上記の「精度」という言葉は、できる限り小さな数を表すことができることを指す。すなわち、あるワード長についての小数点以下のビットの数である。他の言い方としては、精度は表現の分解能に対応する。これは、再び、十進数または二進数の桁数により定義される。以下に説明される実施の形態における精度が小数点以下のビット数と相関し必ずしもワード長そのものとは相関しないと言えることの理由は、固定小数点演算では、同じワード長に対して異なる精度が存在しうることである。例えば、1Q15というデータフォーマットおよび2Q14というデータフォーマットの両方はワード長として16を有するが、最初のものは小数点以下15ビットを有し、他のものは14ビットを有する。表現可能な最小数はそれぞれ2^−15と2^−14であろう。
形状のピラミッドベクトル量子化を行う方法は、Valin et.al, "A full-bandwidth audio codec with low complexity and very low delay", EUSIPCO, 2009のセクション3.2に開示される。この書類では、各バンドにおける詳細すなわち形状が球状コードブックを使用して代数的に量子化され、かつ、符号器と復号器との間で共有される情報からビット割り当てが推測されるようなMDCTコーデックが提案されている。本願の開示の態様および実施の形態は、Valin et. alにあるようなフロート値の代わりに例えば16/32ビット演算に制限された固定小数点において効率的な方法でValin et. alの式4−7に係るサーチをどのように行うかに関する。
以下に開示されるある態様および実施の形態では、所定の次元Nのターゲットベクトルx(n)(式0のt)が与えられ、かつ、単位パルスの所定数Kが与えられた場合に、形状が解析され、適した再構成ベクトルx(n)=func(y(n))が決定される。この再構成ベクトルは、形状量子化誤差を最小化し、したがって例えばオーディオコーディングの場合に知覚品質を最大化する。態様および実施の形態の少なくともいくつかは、複雑さを制御下におきつつ、すなわちそれを実際上可能な限り低くしつつ、L1ノルムを固守する必要があるベクトルy(n)においてK単位パルスの最適なコンステレーションを見つけることを目的として実装される。
インナループダイナミックレンジおよびアキュムレータ精度の近似値を決めるために従来の開ループ手法を使用する代わりに、態様および実施の形態のいくつかは、必要なDSPサイクルの点でおよび必要な追加的プログラムリードオンリーメモリ(ROM)の点で低コストな「準最適(near optimal)な」プレ解析を使用するよう設計される。このプレ解析は、最も内側のサーチループにおけるPVQ−形状歪み指数の高コストな評価を始める前の、最悪の場合の分子および/または最悪の場合の分母のプレ解析である。「準最適な」プレ解析は値を正確な最適最大ダイナミックレンジにスケールすることを狙っているものではなく、プレ解析は準最適な2の累乗のスケールファクタを決定する。2の累乗のスケーリングは、二進数のシフトとして実装可能であり、そのようなシフトはDSPサイクルおよびDSPのROMにおいて低コストを有する。
スペクトルにおいてピーク的な領域にはより平らな領域よりも高い精度が割り当てられるであろうから、分母精度選択は知覚的に動機付けられる。
本開示で説明される主たるコンセプトのいくつかは種々の変形例および代替的構成をカバーするが、態様の実施の形態は図面および例示的コードに示され、以下に詳細に説明される。
PVQ−サーチの一般的な最適化のイントロダクション
L1ノルムストラクチャードPVQ−量子化器はいくつかのサーチ最適化を可能とする。主な最適化は、N次元空間においてターゲットを全て正の「象限(quadrant)」(象限(orthant)やオクタント(octant)とも称されうる)に動かすことであり、2番目の最適化はL1ノルム射影をy(n)の開始時の近似として使用することである。PVQ(N、K)のKのL1ノルムは、ターゲット形状ベクトルx(n)の全ての要素の絶対値和のように、PVQ−ベクトルy(n)の全ての要素の絶対値和がKでなくてはならないことを意味する。
3番目の最適化は、引き続くインデクシングステップについて要求されることであるL1ノルムKに到達することを求めて、ベクトルy(n)に対する変更候補ごとに、全ベクトル空間Nに亘って式4(後述)を再計算する代わりにQPVQ指数項corrxy とenergyとを繰り返し更新することである。
上記の3つの主な最適化ステップは、CELTやIETF−OpusやG.718の一部などの過去のPVQ−実装において一般に存在しうる最適化である。しかしながら、態様および実施の形態の説明を完全なものとするために、これらのステップは以下に短く概説される。
効率的なPVQベクトル形状サーチ
本明細書で提案されるPVQ形状サーチの実施の形態を適用したオーディオ符号化および復号システムの概要は図12に示される。ピラミッド射影を使用し、その次にファイン(形状)サーチフローを行う一般的な形状サーチは例えば図5に示される。形状サーチのファインサーチ部分の他の実施の形態は図6に示される。PVQ形状サーチは、ピラミッド射影と、ファインサーチと、を備えてもよい。ピラミッド射影が適用されない場合、形状サーチはファインサーチのみを備える。したがって、本明細書では、「ファインサーチ」と「形状サーチ」とは可換なものとして使用される場合がある。ファインサーチは形状サーチの一部であり、ピラミッド射影による最初の粗いサーチがない場合には形状サーチを行うことはファインサーチを行うことと同じであるからである。言い換えると、ファインサーチは形状サーチである場合もあれば、形状サーチを構成する場合もあり、ピラミッド射影が適用される場合はファインサーチは形状サーチの一部である。
PVQ−サーチイントロダクション
PVQ(N、K)サーチ手順の目標は、最良にスケールされかつ正規化された出力ベクトルx(n)を見つけることである。x(n)は以下のように定義される。
(式1)
ここで、y=yN、KはN次元ハイパーピラミッドの表面上の点であり、yN、KのL1ノルムはKである。言い換えると、yN、Kは、以下の式にしたがうような、次元Nとも称されるサイズNの選択された整数形状コードベクトルである。
(式2)
すなわち、ベクトルxは単位エネルギ正規化された整数サブベクトルy_(N,K)yN、Kである。最良のyベクトルは、ターゲットベクトルx(n)とスケールされ正規化され量子化された出力ベクトルxとの間の平均二乗形状誤差を最小化するものである。これは、以下のサーチ歪みを最小化することにより得られる。
(式3)
または、同じことであるが、分子および分母を二乗することにより、指標QPVQを最大化する。
(式4)
ここで、corrxyはxとyとの相関である。L1ノルムKを伴う最適なPVQベクトル形状y(n)のサーチにおいて、以下にしたがい、N次元空間の全て正の「象限」のなかでQPVQ変数の繰り返し更新が行われる。
ここで、corrxy(k−1)は前のk−1単位パルスを置くことによりこれまで得られた相関を表し、energy(k−1)は前のk−1単位パルスを置くことによりこれまで得られた累積エネルギを表し、y(k−1、n)はk−1単位パルスの前の配置からの位置nにおけるyの振幅を表す。インループ繰り返し処理をさらにスピードアップするために、エネルギ項energy(k)は2だけスケールダウンされ、したがってインナループにおいてひとつの掛け算が除かれる。
(式7)
ここで、enloop(k、n)は最も内側の単位パルスサーチループの内部で使用され累積される好適なエネルギ変数である。その繰り返し更新はenergy(k、n)よりも1回少ない掛け算を必要とするからである。
(式8)
k番目の単位パルスについての最良の位置nbestは、nを0からN−1まで増やすことにより繰り返し更新される。
(式9)
高コストな割り算を避けるために、これは特に固定小数点演算において重要であるが、QPVQ最大化更新決定は、保存されたこれまでで最良の二乗相関分子bestCorrSqと保存されたこれまでで最良のエネルギ分母bestEnとのたすき掛けを使用して行われる。これは以下のように表現されうる。
(式10)
PVQ(k、n)の繰り返し最大化は、ゼロ個の配置単位パルスから、または適応低コストでプレ配置された単位パルスから、スタートしてもよい。これはK番目のピラミッドの表面の下の点への整数射影に基づくものであり、ターゲットのL1ノルムKにおける単位パルスの保証されたアンダーシュートを伴うものである。
PVQサーチ準備解析
全ての可能な符号の組み合わせが許されており全ての符号の組み合わせを符号化可能であるというyN、KPVQ整数ベクトルのストラクチャード的性質のため、結果として得られるベクトルがK単位パルスのL1ノルムに固守される限り、サーチは全て正の第1「象限」において行われる(「象限」にカギ括弧が付いている理由は、真の象限はN=2の場合にのみ存在し、ここではNは2より大きいものであり得るからである)。さらに、本発明者の認識によると、制限された精度での実装においてできる限り高い確度を得るために、入力信号x(n)の最大絶対値xabsmaxがインナループ相関累積手順のセットアップにおいて将来の使用のためにプレ解析されてもよい。
非常に低エネルギのターゲットおよび非常に低エネルギのサブベクトルの取り扱い
入力ターゲットベクトル(式3のxまたは式0のt)が全てゼロのベクトルである場合、および/またはベクトル利得(例えば、式0のG)が非常に低い場合、PVQ−サーチはバイパスされてもよく、有効なPVQ−ベクトルyは最初の位置
にK単位パルスのうちの半分を割り当て残りの単位パルスを最後の位置(y[N−1]=y[N−1]+(K−y[0]))に割り当てることにより決定論的に生成されてもよい。
「非常に低エネルギのターゲット」および「非常に低いベクトル利得」という言葉は、ある実施の形態では、ゼロ程度であり、これは以下に開示される例示的なANSI C言語で説明される通りである。対応するコードは、
しかしながら、それはイプシロンすなわちEPS以下であってもよい。EPSはゼロより大きい最小値であり、選択された精度において表す価値のあるものとして見なされる。例えば、符号付き16ビットワードのQ15精度において、サブベクトル利得は1/2^15=1/32768のEPS以下となる(例えば、0.000030517578125以下のベクトル利得)。また、ターゲットベクトルx(n)についての符号付き16ビットワードのQ12精度において、「非常に低い」値はEPS=(1/2^12)となり、例えばsum(abs(x(n)))は0.000244140625以下となる。16ビットワードの固定小数点DSP演算のある実施の形態では、符号なし整数フォーマットは0から65546のうちの任意の整数値を取り得る一方、符号付き整数は−32768から+32767のうちの値を取り得る。符号なし分数フォーマットを使用すると、565536個のレベルは0と+1との間に一様に分布する。一方、符号付き分数フォーマットの実施の形態では、レベルは−1と+1との間で等間隔になる。
ゼロベクトルおよび低利得値に関するこのオプションステップを適用することにより、PVQ−サーチの複雑さが低減され、符号器インデクシングと復号器デインデクシングとの間でインデクシングの複雑さが分散/共有される。つまり、結局はゼロにスケールダウンされてしまうであろうゼロターゲットベクトルや非常に小さなターゲットベクトルをサーチするために処理を「無駄にする(wasted)」ことはない。
オプションのPVQプレサーチ射影
パルス密度比K/Nが変更離散コサイン変換係数などの係数当たり0.5単位パルスより大きい場合、K−1サブピラミッドへの低コスト射影が行われ、yの開始点として使用されてもよい。一方、パルス密度比が係数当たり0.5単位パルスより小さい場合、繰り返しPVQ−サーチは0のプレ配置された単位パルスから開始される。「K−1」への低コスト射影は多くの場合、単位パルスインナループサーチをK−1回繰り返すよりも、DSPサイクルにおいて計算機的に廉価である。しかしながら、低コスト射影の欠点は、N次元床関数アプリケーションのために不正確な結果が生成されることである。床関数を使用した低コスト射影の結果得られるL1ノルムは多くの場合、「K−1」とおよそ「K−5」との間の任意の値であり得る。すなわち、射影後の結果は、Kのターゲットノルムに至るためにファインサーチされる必要がある。
低コスト射影は以下のように行われる。
射影が行われない場合、開始点は全てのゼロのy(n)ベクトルである。DSPサイクルにおける射影のDSPコストは、N(絶対値和)+25(割り算)+2N(乗算および床)サイクルの近傍である。
K番目のピラミッドの表面に至るためのファインサーチの準備において、開始点に対する単位パルスの累積数pulsetotと、累積相関corrxy(pulsetot)と、累積エネルギenergy(pulsetot)と、は以下のように計算される。
PVQファインサーチ
本明細書で開示されるソリューションはPVQファインサーチに関する(これはPVQ形状サーチを構成するかその一部であることは上述した通り)。以前のセクションで説明されたことは主に従来のPVQであるが、前もってxabsmaxを決めることは例外であり、それについては以下で詳述される。次元Nの最終的な整数形状ベクトルy(n)はKパルスのL1ノルムを固守しなければならない。ファインサーチは前提として、ピラミッドにおけるより低い点から、すなわちK番目のピラミッドの下から始まるよう構成され、N次元のK番目のハイパーピラミッドの表面への道を繰り返し見つけるよう構成される。ファインサーチにおけるK値は多くの場合1から512単位パルスの範囲をとる。
サーチおよびPVQインデクシングの複雑さをリーズナブルなレベルに維持するために、サーチは2つの主なブランチに分けられてもよいことを、本発明者は認識した。次のインナサーチループ繰り返しの間y(n)のインループエネルギ表現が符号付きまたは符号なし16ビットワードに留まることが知られている場合に一方のブランチが使用され、次のインナサーチループ繰り返しの間インループエネルギが16ビットワードのダイナミックレンジを超えうる場合に他方のブランチが使用される。
少数の単位パルスについての固定精度ファインサーチ
最終的なKがt=127単位パルスのしきい値以下である場合、energy(K)のダイナミクスは常に14ビット内に留まるであろうし、1ビットアップシフトされたenloop(K)のダイナミクスは常に15ビット内に留まるであろう。これにより、k=Kに至るまでの全てのファインパルスサーチインナループ繰り返し内の全てのenloop(k)を表すのに符号付き16ビットワードを使用することが可能となる。言い換えると、K<127の場合、任意のファインパルスサーチインナループ繰り返しにおいてenergy(K)やenloop(K)を表すのに16ビットを超えるワードビット長は不要であろう。
符号なし16ビット変数についての効率的なDSP乗算、乗算加算(multiply-add)および乗算減算(multiply-subtract)オペレータが利用可能である場合、しきい値をt=255まで増やすことができる。enloop(K)は常に符号なし16ビットワード内に留まるであろうからであろう。ある実施の形態では、乗算加算は、オーディオおよびビデオ信号を表すデータ値とフィルタまたは変換値とを乗算し、その積を累算して結果を生成するための乗算加算インストラクションまたは等価な動作である。乗算減算動作は、加算が減算に置き換えられることを除き、乗算加算動作と同じである。
次の単位パルス追加の準備において、符号付き32ビットワードの次のループの累積インループ相関値corrxyの準最適な可能なアップシフトの最大値が、前に計算された最大の絶対入力値xabsmaxを使用して以下のようにプレ解析される。
(式19)
式19で計算されるこのアップシフトは「最悪の場合」を表しており、次のインナループにおいてなされうる可能なアップシフトの最大値をカバーする。したがって、最悪の場合のシナリオであっても、インナループ繰り返し中に、相関に関する最も重要な情報は失われもアウトシフトもしないことが確実となる。
この最悪の場合のプレインナループダイナミクス解析は、乗算加算およびノルムインストラクション(正規化)を使用する大抵のDSPアーキテクチャ2−3サイクルで実行可能である。この解析は常に次元Nによらずに同じである。ITU−T G.191仮想16/32ビットDSPでは、式19の動作は「corr_upshift = norm_l(L_mac(*L_corrxy,1, xabs_max));」となり、2サイクルのコストを伴う。ここでのnorm_l(x)は「31 - ceil(log2(x))」に対応し、代替的に 31 - ceil(log2(x))と表されうることに注意されたい。ここで、ceil(x)はいわゆる天井関数であり、実数を以降の整数のうちの最小のものにマッピングする。より正確には、
はx以上の最小の整数である。corrupshiftについて、上側に水平の棒が付いている括弧内の項は常に正の数である。corrupshiftは代替的には床関数を使用して以下のように計算されうる。
ここで、
はx以下の最大の整数である。
準最適形状サーチ相関スケーリングに対する本明細書で提案されるアプローチの他の利点は、提案される方法はプレ正規化されたターゲットベクトルxを要求しないことである。これにより、形状サーチを始める前の追加的な複雑さをいくらか抑える。
式10の繰り返し更新をできる限り効率的にするために、corrxy(k,n)分子は、16ビットワードにフィットする以上の情報を含む場合でも、以下のアプローチにより16ビット符号付きワードにより表されてもよい。
ここで、関数「Round16」は符号付き32ビット変数から上位の16ビットを丸めて抽出する。この準最適アップシフト(式10)および二乗相関bestCorrSq16の16ビット表現の使用は、DSPの最適化された乗算、乗算加算、乗算減算関数を使用する場合、式21テストおよび3つの変数更新を行うための〜9サイクルのみを使用する非常に高速なインナループサーチを可能とする。
ベクトルyにおける次の単位パルスの位置は、式20、式6および式21を用いつつベクトルyのn=0、...、N−1の可能な位置に亘って繰り返すことで決定される。
(これまでに得られたベクトルyにおける)単位パルスの最良な位置nbestが決定された場合、累積相関corrxy(k)と、累積インループエネルギenloop(k)と、累積単位パルスの数pulsetotと、が更新される。追加すべきさらなる単位パルスが存在する場合、すなわちpulsetot<Kの場合、次の単位パルスの追加についての新たな準最適corrupshift解析(式19)と共に新たなインナループが始まる。
合わせると、この提案されたアプローチは、y(n)に追加される各単位パルスについて、最悪の場合の複雑さとして、量子化された係数当たりおよそ5/N+15サイクルを有する。言い換えると、単位パルスを追加するためのサイズNのベクトルに亘るループは、最悪の場合の複雑さとして約N*(5/N+15)サイクル、すなわち5+15*Nサイクルを有する。
多数の単位パルスについての固定精度ファインサーチ
16/32ビット制限DSPを前提とする本例示的実施の形態ではt=127単位パルスであるところのしきい値tよりもKが大きい場合、パラメータenergy(K)のダイナミクスは14ビットを超え、1ビットアップシフトenloop(K)のダイナミクスは15ビットを超える可能性がある。したがって、不必要な高精度を使用しないように、ファインサーチは、Kがtより大きい場合、組{corrxy(k,n)、enloop(k、n)}の16ビット表現と32ビット表現との間で適応的に選択するよう構成される。ベクトルy(n)のKが127より大きい最終値になることが前もって分かっている場合、ファインサーチはそれまでに得られたyにおける最大パルス振幅maxampを追跡するであろう。これは、maxampが決定されるとも称されうる。この最大パルス振幅情報は、最適化されたインナ次元ループに入る前のプレ解析ステップで使用される。プレ解析は、今度の単位パルス追加インナループにおいてどの精度が使用されるべきかを決定することを含む。図12においてN、KをPVQ−形状サーチに入力することから示される通り、PVQサーチが始まる前にビット割り当ては知られている/決定されている。ビット割り当ては、PVQ−形状サーチに入力されるべきKを取得、決定および/または計算するための式または保持されるテーブルを使用してもよい。例えば、次元Nおよび所定数のbits(band)を伴う所定のバンドについて、K=function(bits(band)、N)である。
例えば、上述のような保持されたテーブルを使用して、Kの値を決定または選択してもよい。次元Nが8でバンドについて利用可能なビットbits(band)が14.0である場合、Kは5と選択されるであろう。PVQ(N=8、K=6)は14.7211ビットを要求するが、これは利用可能なビット数14.0よりも大きいからである。
プレ解析が、エネルギ情報を失うことなくインループエネルギを表すのに符号付き16ビットワードより多くが必要であることを示す場合、より高精度で計算的により強度の高精度単位パルス追加ループが用いられる。ここでは、保存された最良の二乗相関項および保存された最良の累積エネルギ項の両方が32ビットワードで表される。
最悪の場合のプレインナループダイナミック解析は大抵のDSPにおいて5−6の追加サイクルで実行可能である。その解析コストは全ての次元について同じである。ITU−T G.191 STL 2009仮想16/32ビットDSPでは、式22および式23の動作は以下のようになる。
これは最大で6サイクルのコストを伴う。
ANSI−Cコードでの対応するコード例は以下のようになる。
あるいはまた、式22のエネルギマージンen_marginは、G.191 STL関数norm_l()の動作に沿った形で、以下のように床関数を使用して計算されうる。
highprecisionactiveがFALSEすなわち=0である場合、式20、式6および式21の低精度インナサーチループが用いられる。一方、highprecisionactiveがTRUEすなわち=1の場合、本例では32ビットワードでenloopおよびcorrxy を表す高精度インナループを用いて次の単位パルスの位置特定が行われる。すなわち、highprecisionactiveがTRUEである場合、y(n)における次の単位パルスの位置は、式24、式6および式25を使用してn=0、...、N−1の可能な位置に亘って繰り返すことで決定される。
言い換えると、en_marginは、次のループでエネルギを正規化するためにどれだけ多くのアップシフトが使用されうるかを示す。16/32ビットワード長を前提とすると、16以上のアップシフトが使用されうる場合、エネルギはより少ないワード長に留まり、高精度(32ビット表現)ループは必要ない。したがって、highprecisionactiveはFALSEに設定される。それをこのように(エネルギ情報がL_energy32ビットワードの下位部分に留まることを許す)行うひとつの実装上の理由は、それが計算的に廉価であるからである。それはextract_l(L_energy)を計算するのに1サイクルのみかかる。一方、代替的なround_fx(L_shl(L_energy,en_margin))は2サイクルかかる。
単位パルスの最良な位置nbestが決定された場合、累積相関corrxy(k)と、累積インループエネルギenloop(k)と、累積単位パルスの数pulsetotと、が更新される。さらに、それまでで最良の整数ベクトルyの最大振幅maxampは次の単位パルス追加ループのために最新に保たれる、すなわち決定される。
(式26)
追加すべきさらなる単位パルスが存在する場合、すなわちpulsetot<Kの場合、新たな準最適corrupshift解析、式19、および新たなエネルギ精度解析、式22および式23、と共に新たなインナループが始まる。そして次の単位パルスループを式24、式6および式26と共に始める。
高精度アプローチ(本例では32ビットワード)は、y(n)に追加される各単位パルスについて、最悪の場合の複雑さは量子化された係数当たりおよそ7/N+31サイクルである。
インループ累積エネルギベースインナループ精度選択の効果は、高いピーク性を有するかまたは非常に細かい粒度を有する、すなわち最終的なKが大きいターゲットサブベクトルはより高精度のループを使用し、より多くのサイクルをより頻繁に使用するであろうこと、その一方でピーク的でないまたはパルス粒度の低いサブベクトルはより低い精度のループおよびより少ない数のサイクルをより頻繁に使用するであろうこと、である。
上のセクションで説明された解析はK<tの場合にも実行可能であることに注意されたい。しかしながら、上述の解析を適用するためのしきい値tを導入することにより、実施の形態はより効率的になり得る。
PVQベクトル最終化および正規化
形状サーチの後、各ノンゼロPVQ−ベクトル要素には適切な符号が割り当てられ、ベクトルは単位エネルギに対してL2正規化(ユークリッド正規化としても知られる)される。加えて、バンドが分割された場合、それはさらにサブベクトル利得でスケールされる。
上で、2つの精度手法が提案され、特定される。上のセクションで定義される(式19から式21)「En16xCorrSq16」と、「En32xCorrSq32」(式22から式26)と、である。分子の相関二乗項およびエネルギ項の精度が変わる2つのさらなる中間の複雑さを有する方法が以下に説明される。
「En16xCorrSq32」および「En32xCorrSq16」方法
「En16xCorrSq32」方法は「En32xCorrSq32」と似ているが、差分として、インナループの発見された最良の単位パルス更新および比較がこれまでで最良のエネルギbestEn16の16ビット表現を使用することがある。
(式30)
「En16xCorrSq32」方法の単位パルス当たりのおおよそのコストは5/N+21サイクルである。
「En32xCorrSq16」方法は「En32xCorrSq32」と似ているが、差分として、インナループの発見された最良の単位パルス更新および比較がこれまでで最良の二乗相関bestCorrSq16の16ビット表現を使用することがある。
(式31)
「En32xCorrSq16」方法の単位パルス当たりのおおよそのコストは係数当たり6/N+20サイクルである。
態様および例示的実施の形態
以下に、図1−4を参照して、本明細書で開示される解決手段のいくつかの例示的実施の形態を説明する。
図1は、PVQ−形状サーチのファインサーチに係る方法を説明するフローチャートである。方法は、オーディオおよび/またはビデオ信号のメディア符号器などの符号器により実行されることが意図されている。PVQは、ターゲット形状ベクトルxを入力として取得し、インナ次元サーチループに単位パルスを繰り返し加えることでベクトルyを導く。方法はプレ解析に関し、それはインナループに入る前に行われる。上述した通り、ベクトルyに基づき出力ベクトルxが導出されるであろう。しかしながら、xの形成は本明細書で開示される解決手段にとって中心的ではないので、ここではこれ以上詳述しない。
図1で説明される方法では、前提として、符号器は現在のベクトルyのmaxampの値を追跡する。「現在のベクトルy」により、ここでは、これまでに構成され、見つけられ、または構築されたベクトルy、すわなちk<Kについてのベクトルyを意味する。上述した通り、ベクトルyの開始点は、K番目のピラミッドの下の表面への射影か、または空の全てゼロのベクトルであってもよい。図1で説明される方法は、単位パルス追加のための次のインナ次元サーチループに入る前に、今度のインナ次元ループにおけるenloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定すること101を含む。変数enloopはベクトルyの累積エネルギに関する。本方法を行うことにより、符号器はサーチの複雑さをリーズナブルなレベルに維持することができる。例えば、今度のインナループにおける「最悪の場合のシナリオ」が現在使用されているものよりも高い精度を伴うインナループを要求するか否かを解析することにより、符号器は増大された精度(より高い複雑さを暗示する)のループをそれが必要な場合にのみ適用することができる。
上述のプレ解析は、インナループへのエントリ102のそれぞれの前に、すなわちベクトルyへの単位パルスの追加のそれぞれの前に、行われる。2つの異なるビット表現のみ、すなわち16および32ビットのビットワード長、が利用可能であるような例示的な実施の形態では、enloopを表すためにより長いビットワードが必要であると判定されるまではインナループはenloopの16ビット表現を使用して行われ、そのように判定された後は、より大きなビットワード長、すなわち32ビット表現がインナループ計算に適用されるであろう。16ビット表現を使用するループは「低精度ループ」と称されてもよく、32ビット表現を使用するループは「高精度ループ」と称されてもよい。
最初のまたは現在のビットワード長より多くが必要とされるか否かを決定すること102は、代替的に、次のインナループ中に「最悪の場合」(最大の可能な増加)のenloopを表すために少なくとも2つの異なる代替的なビットワード長のなかからどのビットワード長が要求されるであろうかを決定することとして表現されうる。その少なくとも2つの異なるワードビット長は例えば16および32ビットワード長を含んでもよい。
言い換えると、次のインナループにおけるenloopを表すために現在のビットワード長より多くが必要となると決定された102場合、インナループ計算はそのインナループにおけるenloopを表すために最初のまたは現在のビットワード長よりも長いビットワード長で行われる103。一方、enloopを表すために現在のビットワード長より多くが必要でないと決定された場合、enloopを表すために第1のまたは現在のビットワード長を使用する第1単位パルス追加ループを用いてインナループ計算が行われてもよい。すなわち、現在のビットワード長が使用され続けてもよい。これは、図4において、2つの異なるループの使用として説明されている。図4は、現在の(低い)ビットワード長で十分であると判定403された場合に実行405されるひとつの低精度インナループと、情報を失わないためにインナループにおけるエネルギを表すためのより大きなビットワード長が必要であると判定403された場合に実行されるひとつの高精度インナループと、を示す。
この方法は、次のインナループにおけるenloopなどのエネルギ変数の可能な最大の増大は、単位パルスが現在のmaxampに関連付けられたyにおける位置に追加される場合に生じるという認識に基づくものである。これを認識したことにより、インナループに入る前に、次のインナループ中に例えば16ビットの現在使用されているビットワード長の表現能力を超えるリスクがあるか否かを判定することが可能となる。言い換えると、enloopを表すために現在のビットワード長より多くが必要か否かを決定することは、今度のインナサーチループにおいて単位パルスがmaxampに関連付けられたyにおける位置に加えられる場合の特性を決定することを含んでもよい。例えば、今度のインナループにおいてenloopを表すために必要となるビット数が決定されてもよいし、あるいはまた、今度のインナループにおいてenloopを表すビットワードの残存マージンが決定されてもよい。
低いKに関連付けられたターゲット形状ベクトルについては、最初のおよび現在使用されているビットワード長により提供されるものよりも長いビットワード長は必要ないと前もって言うことができる。したがって、しきい値Tkを超えるKに関連付けられたターゲット形状ベクトルに対してのみ所定の演算を実行するよう、しきい値Tkを適用することが可能である。そのようなターゲットベクトルについて、符号器は、各パルス追加の後にこの値を更新することでmaxampを追跡する。しきい値よりも低いKに関連付けられたターゲットベクトルについては、maxampを追跡する必要はない。16および32ビットワードの例では、可能なTkは上述の通り127でありうる。言い換えると、maxampを追跡し、現在のビットワード長より多くが必要か否かを決定することは、例えば入力ターゲット形状ベクトルに関連付けられたKの最終値がしきい値Tkを超える場合にのみ、実行される。
図2で説明される実施の形態は、maxampを追跡または決定すること201と、xabsmaxを決定すること202と、を含む。maxampの値はインナループに新たな単位パルスを追加すると変化しうる。したがって、各ループの後でmaxampを最新に維持するために、maxampを更新する必要がある。例えば、アクション201は、enloopyを表すために使用される最初のまたは現在のビットワード長がもはや十分でなくなるしきい値にkの値が到達し、例えばアクション204により表される解析が始まるまで、maxampを追跡することを含んでもよい。例えばアクション204の解析に続くインナループの後のmaxampyの更新は、図2においてアクション206として示される。しかしながら、xabsmaxはその処理で変更されないので、一回202だけ決定されればよいことに注意されたい。図2に示されるように、方法の実施の形態は、単位パルス追加のための次のインナ次元ループに入る205前に、xとベクトルyとの間の次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、入力形状ベクトルxの最大絶対値、xabsmaxに基づいて、決定すること203を含んでもよい。アップシフトはアップスケーリングと称されてもよい。上記の式19は、最大の可能なアップシフトの決定を示す。これを行うことにより、インナループ評価中に、できる限り多くの相関情報ビット、特に最上位ビット、が維持されることをより確実にすることができる。ここで、corrxy の形での相関値corrxyは必ずしも損失の無い態様で表される必要はないことに注意されたい。最大アップシフトの決定は、インナループにおいて使用される現在のビットワード長によらず、「より長いビットワード」で行われてもよい。すなわち、最大の可能なアップシフトは、インナループにおいて16ビットワードが使用される場合でも、32ビットワードで決定されてもよい。インナループにおいてより短いビットワードが使われるべきである場合、式20により示される通り、決定されたアップシフトは「丸め」られてより短いビットワードとなる。相関値corrxyは相関値に対して適用されるDSP精度において常に1(1.0)以下である、すなわちcorrxy<1.0であることに注意されたい。したがって、corrxyについて決定された最大アップシフトはcorrxy についても正しい。
enloopを表すために現在のビットワード長より多くが必要であると決定された場合、インナループ計算は、enloopを表すために(現在のビットワード長よりも、例えば、16ビットの代わりに32ビットの)より長いビットワード長を使用して行われてもよい。
ある実施の形態では、enloopを表すために現在のビットワード長より多くが必要であると決定された場合、インナループ計算は(現在のビットワード長よりも)長いビットワード長で行われ、インナループにおける累積インループ相関値corrxy もまたその長いビットワード長で表される。これは例えば図3のアクション305に示される。すなわち、エネルギ値enloopについて決定されたビットワード長はcorrxy に適用されてもよい。
上述の通り、単位パルス追加のためのインナ次元サーチループにおいて式8の割り算を行うのを避けることが好ましい。したがって、式10に示されるようなたすき掛けが行われてもよい。すなわち、単位パルス追加のためのyにおける位置nbestは、yにおける各位置nについて、現在のnの相関およびエネルギ値と、以前のnの値から保存された「これまでで最良の」相関、BestCorrSqおよび「これまでで最良の」エネルギ値bestEnと、のたすき掛けを以下のように評価することで決定されてもよい。
位置nbestは単位パルス追加のためのyにおける「最良の」位置と称されてもよい。上記表現において、「>」の代わりに「≧」が使用されてもよいことに注意されたい。しかしながら、「>」すなわち「より大きい」は、例えばサイクル数について計算コストをできる限り低く抑えたい場合により好適でありうる。上述の実施の形態のうちの任意のものに係る方法を実行することにより、このたすき掛けは(例えば実際必要なものよりも高い精度を使用しないことにより)より効率的な態様で実行可能となる。
実装
上述の方法および技術は、例えば通信デバイスが備える符号器やコーデックに実装可能である。
符号器、図11a−11c
符号器の例示的実施の形態は一般的な態様で図11aに示される。符号器はメディア符号器であってもよく、例えばオーディオおよび/またはビデオ信号の符号化用に構成される。符号器1100は、図1−5のいずれかを参照して上述された方法の実施の形態のうちの少なくともひとつを行うよう構成される。符号器1100は、前述の方法の実施の形態と同じ技術的特徴、目的および利点を伴う。ある実装では、符号器は、例えば符号器が固定精度DSPで構成される場合のように、メモリおよび/または複雑さに関する拘束をを伴う。不必要な繰り返しを避けるため、符号器は簡潔に説明される。
符号器は以下のように実装および/または説明されてもよい。
エンコーダ1100は、いわゆるファインサーチまたはファイン形状サーチを含むピラミッドベクトル量子化用に構成される。ピラミッドベクトル量子化器、PVQはターゲットベクトルxを入力として取得し、インナ次元サーチループに単位パルスを繰り返し加えることでベクトルyを導く。入力ベクトルxは次元NとL1ノルムKとを有する。符号器1100は、処理回路または処理手段1101と、通信インタフェース1102と、を備える。処理回路1101は符号器1100に、単位パルス追加のための次のインナ次元サーチループに入る前に、今度のインナ次元ループにおけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定させるよう構成される。通信インタフェース1102は例えば入力/出力(I/O)インタフェースとも称され、他のエンティティやモジュールにデータを送信しかつそれらからデータを受信するためのインタフェースを含む。
図11bに示される通り、処理回路1101は、例えばCPUであるプロセッサ1103などの処理手段と、インストラクションを格納または保持するためのメモリ1104と、を備えてもよい。メモリは例えばコンピュータプログラム1105の形でインストラクションを含む。インストラクションは、処理手段1103によって実行された場合、符号器1100に上述のアクションを行わせる。
処理回路1101の代替的な実装が図11cに示される。ここでの処理回路は決定部1106を備え、該決定部1106は、符号器1100に、単位パルス追加のための次のインナ次元サーチループに入る前に、今度のインナ次元ループにおけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長で許されるものよりも高い精度が必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定させるよう構成される。処理回路1101は、符号器に所定のビットワード長および/または所定の精度でインナ次元ループを実行させるよう構成されたファインサーチ部1107などのより多くの部を備えてもよい。
上述の符号器は本明細書で説明された異なる方法の実施の形態用に構成されてもよい。そのような形態は例えば、enloopを表すために現在のビットワード長より多くが必要だと決定された場合、enloopおよび場合によってはcorrxy を表すより長いビットワードを使用してインナループ計算を行うものである。ここで「より長い」は、現在のまたは最初のビットワード長よりも長いことを指す。
符号器1100は、前提として、通常の符号器機能を果たすためのさらなる機能を備えてもよい。
上述の符号器は、通信デバイスなどのデバイスに備えられてもよい。通信デバイスは、携帯電話やビデオカメラやサウンドレコーダやタブレットやデスクトップやラップトップやTVセットトップボックスやホームサーバ/ホームゲートウエイ/ホームアクセスポイント/ホームルータなどの形のユーザ装置(UE)であってもよい。通信デバイスは、ある実施の形態では、コーディングおよび/またはトランスコーディングに適した通信ネットワークデバイスであってもよい。そのような通信ネットワークデバイスの例は、メディアサーバやアプリケーションサーバなどのサーバやルータ、ゲートウエイ、無線基地局である。通信デバイスは、船舶や、飛翔ドローンや、航空機や、車、バス、ローリーなどの車両などのベッセルに配置される、すなわち組み込まれるよう適合されてもよい。そのような組み込みデバイスは多くの場合、車両テレマティクスユニットまたは車両インフォテイメントシステムに属する。
本明細書で説明されるステップや機能や手順やモジュールや部および/またはブロックは、ディスクリート回路技術や集積回路技術などの従来技術を使用してハードウエアに実装されてもよい。そのようなハードウエアは、汎用電子回路および特定用途向け回路の両方を含む。
特定の例は、ひとつ以上の適切に設計されたデジタルシグナルプロセッサと、特定の機能を行うよう相互接続されたディスクリート論理ゲートすなわち特定用途向け集積回路(ASICs)などの他の既知の電子回路と、を含む。
あるいはまた、上述のステップや機能や手順やモジュールや部および/またはブロックのうちの少なくともいくつかは、ひとつ以上の処理部を含む適切な処理回路により実行されるコンピュータプログラムなどのソフトウエアで実装されてもよい。ソフトウエアは、通信デバイスにおいてコンピュータプログラムが使用される前および/または使用されている間、電気信号、光信号、無線信号、またはコンピュータ可読保持媒体などのキャリアによって運ばれてもよい。
本明細書で提供されるフロー図は、ひとつ以上のプロセッサによって実行される場合にコンピュータフロー図と見なされてもよい。対応する装置は機能モジュールのグループとして定義されてもよい。ここで、プロセッサによって行われる各ステップはひとつの機能モジュールに対応する。この場合、機能モジュールは、プロセッサ上で実行されるコンピュータプログラムとして実装される。機能モジュールは実際のソフトウエアモジュールに対応しなくてもよいことは理解されるべきである。
処理回路の例は、ひとつ以上のマイクロプロセッサや、ひとつ以上のデジタルシグナルプロセッサ、DSPsや、ひとつ以上の中央処理装置、CPUs、および/またはひとつ以上のフィールドプログラマブルゲートアレイ、FPGAs、ひとつ以上のプログラマブルロジックコントローラ、PLCsなどの適切なプログラマブル論理回路を含むが、それらに限定されない。すなわち、上述の異なる複数のデバイスの構成におけるユニットやモジュールは、アナログ回路とデジタル回路との組み合わせおよび/または例えばメモリに保持されるソフトウエアおよび/またはファームウエアで構成されたひとつ以上のプロセッサにより実装可能であろう。これらのプロセッサのうちのひとつ以上は、他のデジタルハードウエアと共に、単一の特定用途向け集積回路ASICに含まれてもよい。または、いくつかのプロセッサおよび種々のデジタルハードウエアは、いくつかの別個のコンポーネントに亘って分散し、個々にパッケージされまたはアセンブルされてシステムオンチップ、SoCとなってもよい。
提案される技術が実装された通常のデバイスやユニットの一般的な処理能力を再利用することができることは理解されるべきである。例えば既存のソフトウエアの再プログラミングや新たなソフトウエアコンポーネントの追加により、既存のソフトウエアを再利用することも可能である。
さらなる例示的実施の形態
ここでの開示は、少し異なる態様で表現され、例えば以下の態様および実施の形態に係る。
態様のひとつは符号器/コーデックであり、符号器/コーデックは例えば図5−6に示される以下のステップのうちのひとつ、ひとつ以上またはすべてを行うよう構成される。
−例えばある実施の形態においては上記の式11および式12にしたがい例えば図5のステップS1で説明されるように、入力ターゲットベクトル(x(n))の最大絶対値(xabsmax)を決定、計算または取得すること、
−例えばある実施の形態では以下の式19を通じておよび図5のステップS2で説明されるように符号付き32ビットワードで次のループの累積インループ相関値の可能なアップシフトを計算することにより、少なくとも最大絶対値(xabsmax)に基づいて相関値の可能なアップシフトを決定、計算または取得すること、
−最終単位パルスの数(K)が例えば127単位パルスであってもよいしきい値(t)よりも高くなりそうな場合、例えば上記の式13および式14にしたがい定義されてもよい上記のベクトル(y(n))の式26にしたがって計算される最大パルス振幅(maxamp)値/情報を決定、例えば追跡/保持すること、
・エネルギ情報を失うこと無くまたは実質的に失うこと無くインループエネルギを表すために所定のワード長より多いこと、例えば符号付き16ビットワードより多いことや符号付き32ビットワードより多いこと、が必要かどうかまたはそれが使用されるべきかどうか、を、例えば以下の式22および式23にしたがう計算を通じておよび図6のステップS3により説明されるように、保持される最大パルス振幅に基づいて判定/計算/決定/選択すること、
・所定のワード長より多くが必要とされる場合、最良の二乗相関項/パラメータ/値と最良の累積エネルギ項/パラメータ/値とを所定のワード長より多いもの、例えば32ビットワードや64ビットワードによって表すこと、
・所定のワード長より少ないものが必要とされる場合、第1ループを実行すること、
・所定のワード長より多くが必要とされる場合、所定のワード長より多いワード長のワードで表された「これまでで最良の」(準最適な)累積エネルギ項および最良の二乗相関項で第2の代替的ループを実行すること。
第2ループは、低精度(すなわち、第2ループとの関係で)第1ループよりも高精度かつ計算的により強度の高精度単位パルスループであってもよい。インナループ精度のインループ累積エネルギベース選択は、高いピーク性を有するかまたは非常に細かい粒度を有する(最終的なKが大きい)ターゲットサブベクトルはより高精度のループを使用可能であるか使用するであろうし、より多くのサイクルをより頻繁に使用可能であるか使用するであろうということ、その一方でピーク的でないまたはパルス粒度の低いサブベクトルはより低い精度のループおよびより少ない数のサイクルをより頻繁に使用可能であるか使用するであろうという効果を有する。
ひとつの態様は、図9に示される通信デバイス1に関する。通信デバイス1は、例えばEVS符号器などのビデオまたはオーディオコーディングのための符号器またはコーデック2を備える。
符号器またはコーデックは全体としてまたは部分的に、通信デバイス内に配置されるDSPとして実装されてもよい。ある第1の実施の形態では、符号器/コーデックは、ターゲットサブベクトル(x(n))と有限単位パルスの数(K)と、ターゲットサブベクトルのサブベクトル次元数(N)とオプションとしてひとつ以上の利得値(gsub)とに基づいてPVQ−形状サーチを行うよう構成される。符号器またはコーデックはPVQバンド分割を行うよう構成されてもよい。その場合、PVQ−形状サーチはバンドのサブベクトルの数/値(N)と利得ベクトルGの最大利得とに基づいてもよい。ここで
符号器またはコーデックはさらに、PVQ−形状サーチから整数ベクトル(y)および/または形状サブベクトルx(n)を出力するよう構成される。それらは符号器によってPVQインデクシングのために使用される。整数ベクトル(y)は要素値を含み、サブベクトル次元値(N)と同じ長さを有する。また、全ての要素値の絶対値和は単位パルスの数(K)と等しい。
符号器/コーデック/通信デバイスはPVQ−形状サーチを行うよう構成される。符号器/コーデック/通信デバイスは、以下を行うよう構成される。
−例えば上記の式11および式12にしたがい入力(ターゲット)ベクトル(x(n))の最大絶対値(xabsmax)を決定、計算または取得する(S1、S23)、
−例えば上記の式19を通じて符号付き32ビットワードで次のループの累積インループ相関値の可能なアップシフトを計算することにより、少なくとも最大絶対値(xabsmax)に基づいて相関値の可能なアップシフトを決定、計算または取得する(S2、S28)、
−最終単位パルスの数(K)が例えば127単位パルスであってもよいしきい値(t)よりも高くなりそうな場合、例えば上記の式13および式14にしたがい定義されてもよい上記のベクトル(y(n))の式26にしたがって計算される最大パルス振幅(maxamp)値/情報を追跡/保持する(S30)、
・インループエネルギを表すために所定のワード長より多いこと、例えば符号付き16ビットワードより多いことや符号付き32ビットワードより多いこと、が必要かどうかまたはそれが使用されるべきかどうか、を、例えば上記の式22および式23にしたがう計算を通じて、保持される最大パルス振幅に基づいて判定/計算/決定/選択する(S3、S32)、
・所定のワード長より多くが必要とされる場合、最良の二乗相関項/パラメータ/値と最良の累積エネルギ項/パラメータ/値とを所定のワード長より多いもの、例えば32ビットワードや64ビットワードによって表す(S34)、
・所定のワード長より少ないものが決定される場合、第1ループを実行する(S33)、
・所定のワード長より多くが決定される場合、所定のワード長より多いワード長のワードで表された最良の累積エネルギ項および最良の二乗相関項で第2の代替的ループを実行する(S35)。
上記のPVQ−形状サーチは制限された精度のPVQ−形状サーチであってもよく、ある実施の形態ではベクトル量子化器によって実行される。ベクトル量子化器は符号器/コーデックの一部であり、少なくとも部分的にまたは全体的にDSPユニットとして実装されてもよく、通信デバイス内に配置されるか通信デバイス内に配置されるよう適合されてもよい。したがって、符号器/コーデックは全体的にまたは部分的に、例えばDSPやプログラマブルフィールドゲートアレイ(FPGA)などのハードウエアとして実装されてもよい。しかしながら、代替的な実施の形態では、それは汎用プロセッサおよびコーデックコンピュータプログラムの助けを借りて実装されてもよい。このコーデックコンピュータプログラムは、汎用プロセッサ上で実行されると、通信デバイスに、上記パラグラフで言及されたステップのうちのひとつ以上を行わせる。プロセッサは、縮小命令セットコンピューティング(RISC)プロセッサであってもよい。
本明細書の開示の他の態様は、上記パラグラフで示された通り、図10に示されるコンピュータプログラム6である。ここで、ひとつの実施の形態は、下記付録1にあるANSI−Cコード例によって十分に開示されている。例えば、符号器コンピュータプログラムまたはコーデックコンピュータプログラムはコンピュータ可読コードを備え、該コードは通信デバイス1のプロセッサ/プロセッサ部4上で実行されると、通信デバイスに、以下のパラグラフにおける方法に関連して言及されるステップのうちのひとつ以上または図7に関連して言及されるステップのうちの任意のものを行わせる。
さらに別の態様は、通信デバイス/コーデック/符号器によって行われるPVQ−形状サーチ方法である。その方法は、以下のステップのうちのひとつ以上を含む。
−例えば上記の式11および式12にしたがい入力(ターゲット)ベクトル(x(n))の最大絶対値(xabsmax)を決定、計算または取得すること(S1)、
−例えば上記の式19を通じて符号付き32ビットワードで次のループの累積インループ相関値の可能なアップシフトを計算することにより、少なくとも最大絶対値(xabsmax)に基づいて相関値の可能なアップシフトを決定、計算または取得すること(S2、S28)、
−最終単位パルスの数(K)が例えば127単位パルスであってもよいしきい値(t)よりも高くなりそうな場合、例えば上記の式13および式14にしたがい定義されてもよい上記のベクトル(y(n))の式26にしたがって計算される最大パルス振幅(maxamp)値/情報を追跡/保持する、
・インループエネルギを表すために所定のワード長より多いこと、例えば符号付き16ビットワードより多いことや符号付き32ビットワードより多いこと、が必要かどうかまたはそれが使用されるべきかどうか、を、例えば上記の式22および式23にしたがう計算を通じて、保持される最大パルス振幅に基づいて判定/計算/決定/選択すること(S3)、
・所定のワード長より多くが必要とされる場合、最良の二乗相関項/パラメータ/値と最良の累積エネルギ項/パラメータ/値とを所定のワード長より多いもの、例えば32ビットワードや64ビットワードによって表すこと、
・所定のワード長より少ないものが決定される場合、第1ループを実行すること、
・所定のワード長より多くが決定される場合、所定のワード長より多いワード長のワードで表された最良の累積エネルギ項および最良の二乗相関項で第2の代替的ループを実行すること。
通信デバイスは、上で定義されたとおり、携帯電話やビデオカメラやサウンドレコーダやタブレットやデスクトップやラップトップやTVセットトップボックスやホームサーバ/ホームゲートウエイ/ホームアクセスポイント/ホームルータなどの形のユーザ装置(UE)であってもよい。
さらに別の態様は、コンピュータプログラムの上記実施の形態のうちの任意のものが保持されるコンピュータ可読保持媒体5(図10参照)である。コンピュータ可読保持媒体は、EEPROM(電気的消去可能PROM)やFPGAや(ソリッドステートドライブを含む)フラッシュメモリやハードドライブなどの揮発性または不揮発性メモリの形をとってもよい。
通信デバイス1の実施の形態は図9に示される。PVQ−形状サーチを行うために、通信デバイス1は、以下のユニットのうちのひとつ、ひとつ以上または全てを備える。
−例えば上記の式11および式12にしたがい入力(ターゲット)ベクトル(x(n))の最大絶対値(xabsmax)を決定、計算または取得するための第1決定部U1、
−例えば上記の式19を通じて符号付き32ビットワードで次のループの累積インループ相関値の可能なアップシフトを計算することにより、少なくとも最大絶対値(xabsmax)に基づいて相関値の可能なアップシフトを決定、計算または取得するための第2決定部U2、
−最終単位パルスの数(K)がしきい値(t)よりも高くなりそうな場合、例えば上記の式13および式14にしたがい定義されてもよい上記のベクトル(y(n))の式26にしたがって計算される最大パルス振幅(maxamp)値/情報を追跡/保持するための格納部U3、
−インループエネルギを表すために所定のワード長より多いこと、例えば符号付き16ビットワードより多いことや符号付き32ビットワードより多いこと、が必要かどうかまたはそれが使用されるべきかどうか、を、例えば上記の式22および式23にしたがう計算を通じて、保持される最大パルス振幅に基づいて判定/計算/決定/選択するための選択部U4、
−選択部によって所定のワード長より多くが選択された場合、最良の二乗相関項/パラメータ/値と最良の累積エネルギ項/パラメータ/値とを所定のワード長より多いワード長、例えば32ビットワードや64ビットワードで生成するための表現部U5、
−インナループ処理部U6であって、
・選択部によって所定のワード長より少ないものが選択された場合、第1ループを実行し、
・所定のワード長より多いものが決定された場合、所定のワード長より多いワード長のワードで表される最良の累積エネルギ項および最良の二乗相関項で第2の代替的ループを実行する、ためのインナループ処理部。
上記のパラグラフで言及されたユニットは、通信ユニットのDSPの形でコーデック/符号器2に含まれてもよいし、さらにはDSPのハードウエアベクトル量子化器に含まれてもよい。代替的な実施の形態では、上記のパラグラフの全てのユニットは、通信デバイスにソフトウエアとして実装される。
図9にさらに示される通り、通信デバイス1は符号器/コーデックに関するさらなるユニットを備えてもよく、特にベクトル量子化およびPVQ−形状サーチに関するユニットを備えてもよい。そのようなユニットは、本願に含まれる記載および図面に係る形状サーチを可能とするよう構成される。
図9に示される例示的なユニットは以下の通りである。
−図7に関連して説明されたオプションのステップS21を行うためのPVQバンド分割部U7、
−以下で図7に関連して説明されるステップS24を行うための比較部U8、
−以下で説明されるステップS25を行うためのPVQベクトル生成部U9、
−以下で説明されるステップS26を行うための開始点生成部U10、
−以下で説明されるステップS27を行うためのパラメータ計算部U11、
−例えば形状サーチにKおよびNを供給するためのビット割り当て部U12、
−本明細書で開示されるPVQ−形状サーチからの出力のレシーバとして見ることが可能な、PVQインデクシング部U13、
−以下で説明されるステップS36を行うための正規化部U14、
−以下で説明されるステップS37を行うための出力部U15。
通信デバイスへのソフトウエア実装の場合、通信デバイス1の実施の形態は、プロセッサ4とメモリの形でのコンピュータプログラム保持製品5とを備える通信デバイスとして定義されてもよい。そのメモリはそのプロセッサによって実行可能なインストラクションを含み、それによりその通信デバイスは以下のうちのひとつ、ひとつ以上またはすべてを実行するよう動作可能である。
−例えば上記の式11および式12にしたがい入力(ターゲット)ベクトル(x(n))の最大絶対値(xabsmax)を決定、計算または取得する、
−例えば上記の式19を通じて符号付き32ビットワードで次のループの累積インループ相関値の可能なアップシフトを計算することにより、少なくとも最大絶対値(xabsmax)に基づいて相関値の可能なアップシフトを決定、計算または取得する、
−最終単位パルスの数(K)が例えば127単位パルスであってもよいしきい値(t)よりも高くなりそうな場合、例えば上記の式13および式14にしたがい定義されてもよい上記のベクトル(y(n))の式26にしたがって計算される最大パルス振幅(maxamp)値/情報を追跡/保持する、
・インループエネルギを表すために所定のワード長より多いこと、例えば符号付き16ビットワードより多いことや符号付き32ビットワードより多いこと、が必要かどうかまたはそれが使用されるべきかどうか、を、例えば上記の式22および式23にしたがう計算を通じて、保持される最大パルス振幅に基づいて判定/計算/決定/選択する、
・所定のワード長より多くが必要とされる場合、最良の二乗相関項/パラメータ/値と最良の累積エネルギ項/パラメータ/値とを所定のワード長より多いもの、例えば32ビットワードや64ビットワードによって表す、
・所定のワード長より少ないものが決定される場合、第1ループを実行する、
・所定のワード長より多くが決定される場合、所定のワード長より多いワード長のワードで表された最良の累積エネルギ項および最良の二乗相関項で第2の代替的ループを実行する。
態様および実施の形態をさらに説明するために、それらのいくつかは以下に図7−8に関連して説明されるであろう。
図8は、現れてきている3GPP EVSの送信側の概要を提供する。その送信側はEVS符号器3を含み、ここではその符号器3は通信デバイス1に含まれている。
図7は、図5−6に示される実施の形態に関連するいくつかの実施の形態を説明する別法におけるいくつかの方法ステップを示す。図7に関して言及されたステップのいくつかはPVQ−形状サーチに関連して行われると言うことが可能であるが、そのステップのうちのいくつかはPVQ−形状サーチの前に実行可能であると言うこともできることは明らかであろう。オプションの第1ステップS21において、PVQバンド分割が行われる。
オプションでステップS21からの形状ターゲットサブベクトルは第2ステップS22で受け取られる。ここで、実施の形態によっては、gsub、gmaxおよびNが受け取られてもよい。
図5のステップS1に対応する第3ステップS23において、例えばまずターゲットベクトルのサブベクトルx(n)の絶対値を計算し次いでサブベクトルの最大の絶対値を選択することにより、ターゲットベクトルの最大絶対値が決定される。
オプションの第4ステップS24において、ターゲットベクトルの値が第1しきい値以下か否かが判定される。しきい値は、非常に低いエネルギ値を有すると考えられるターゲットベクトルを「フィルタアウト」するよう設定される。ある実施の形態では、上述の通り、しきい値はゼロに等しく設定されうる。この第4ステップにおいて、サブベクトル利得が第2しきい値以下か否かが決定されうる。ある実施の形態では第2しきい値はゼロに設定される。しかしながら、他の実施の形態では、第2しきい値は、処理されるワードについて使用される精度に依存して機械イプシロンに設定されてもよい。
第4ステップS24においてターゲットベクトルが第1しきい値以下であると決定された場合および/またはサブベクトル利得が第2しきい値以下であると決定された場合、オプションの第5ステップS25においてPVQ−ベクトルが生成される。ある実施の形態では、生成は、最初の位置
にK単位パルスの半分を割り当て、かつ、残りの単位パルスは最後の位置(y[N−1]=y[N−1]+(K−y[0]) )に割り当てられることにより決定論的に生成される。このステップは第4ステップS24と合わせて、実際のPVQ−形状サーチの全体をバイパスしているとして見ることもできるし、一般的なPVQ−形状サーチ手順のコンテキスト内のサブルーチンとして見ることもできる。
オプションの第6ステップS26において、PVQ−形状サーチがしたがうyの初期値(開始点)、y_startが設定される。この初期値はKとNとの間の比に依存する。その比が係数当たり0.5単位パルスであってもよい第3しきい値より大きい場合、以降のステップにおける初期ベクトルy_startとしてK−1サブピラミッドへの第1射影が使用される。第1射影は上記の式13および式14にあるように計算されてもよい。第3しきい値より小さい場合、初期ベクトルy_startは0がプレ配置された単位パルスから開始すると決定される。
第7ステップS27において、続くPVQ−形状サーチステップのための準備として、y_startにおける全ての初期ベクトル値はゼロに設定される。このステップにおいて、累積単位パルス数pulsetotと称される第1パラメータと、累積相関corrxy(pulsetot)と称される第2パラメータと、累積エネルギenergy(pulsetot)と称される第3パラメータと、を例えばそれぞれ式15−17にしたがい、計算する。このステップにおいて、enloop(pulsetot)と称される第4パラメータを、上記の式18にしたがい計算してもよい。
第8ステップS28において、PVQ−形状サーチを開始する。あるいはまた、それを別の視点から表現すると、以前に取得、決定または計算されたK、N、X_abs、max_xabsおよびyそしてある実施の形態ではgsub、gmaxおよびNを助けとする、Kまでの残存単位パルスについての、PVQ−形状サーチの第2ファインサーチ部分を開始する。このファインサーチのいくつかの実施の形態の詳細なステップは例えば図6に十分に示されている。しかしながら、ある実施の形態では、ファインサーチは、ファインサーチまたはインナループが行われる単位パルスのうちの少なくともいくつか、ある実施の形態ではその全て、について計算される、相関値のアップシフトcorrupshiftと称される第5パラメータ/値の決定を含むことを強調しておく。ある実施の形態では、符号付き32ビットワードでの次のループの累積インループ相関値の可能なアップシフトは上記の式19に基づいて計算され、次いで式20の相関値corrxyの計算への入力としてcorrupshiftが使用される。
第9ステップS29はファインPVQ−形状サーチの一部と称されてもよい。第9ステップS29において、最終単位パルスの数Kが最終単位パルスの数についての第3しきい値tより大きくなりそうか否かが判定される。そうである場合、第10ステップS30において、最大パルス振幅maxampが格納される。
第11ステップS31において、例えば式22にしたがい第6パラメータenmarginが計算される。
第12ステップS32において、第6パラメータは、所定のワード長に対応する第4しきい値と比較される。
回答が(図7のステップS32において)YESであるか(付録1のAnsi−コード例において)Falseである場合、すなわち例示的な式/決定23のenmarginが第4しきい値「16」以上である場合、ステップS33において、ファインサーチの第2ループよりも速く「粗い」第1ループが実行される。第1ループの実施の形態は例えば図6に示される。
回答が(図7のステップS32において)「No」であるか(付録1のAnsi−コード例において)Trueである場合、すなわち例示的な式/決定23のenmarginが「16」より小さい場合、第14ステップS34において、第7パラメータすなわち最良の二乗相関項/パラメータ/値と、第8パラメータすなわち最良の累積エネルギ項/パラメータ/値と、を所定のワード長より多いワード長となるように、生成/変換する。これらのパラメータは次いで、第15ステップS35において、ファインサーチのより詳細な第2インナループで使用される。第2ループの実施の形態は例えば図6により詳細に示される。
第16ステップS36において、少なくとも各ノンゼロPVQ−サブベクトル要素には適切な符号が割り当てられ、ベクトルは単位エネルギに対してL2正規化される。ある実施の形態では、バンドが分割された場合、それはサブベクトル利得gsubでスケールされる。式28に基づき正規化されたxを決定してもよい。このステップの例示的な手順は上でより完全に記載される。
第17ステップS37において、PVQ−形状サーチ処理から正規化されたxおよびyが出力され、例えばコーデックに含まれるPVQ−インデクシング処理に転送される。
実施の形態および態様のいくつかの利点
上記の態様および実施の形態のうちの少なくともいくつかにより可能となる、従来技術に対するいくつかの利点は以下の通りである。
現在の累積最大相関のプレ解析を使用した提案される相関スケーリング方法/アルゴリズムは、制限された精度のPVQ−形状量子化サーチ実装の最悪の場合の(最小)SNRを改善する。前段階相関マージン解析における適応的基準は、非常にわずかな追加的複雑さを要求する。さらに、例えば単位エネルギに対するターゲットベクトルxの高コストなプレ正規化は不要である。
予備的結果における最大パルス振幅の追跡を使用した適応的基準と、それに続く例えばソフト16/32ビット精度インナループ決定に対する最悪の場合の累積エネルギのプレ解析と、は、非常にわずかな追加的計算的複雑さを要求し、かつ、よいトレードオフを提供する。トレードオフとは、高精度相関および高精度エネルギ指標を関係する入力信号について使用しつつも複雑さを低く維持し、かつさらに主観的に重要なピーク性の信号にはより多くの精度が割り当てられることである。言い換えると、実施の形態および態様のうちの少なくともいくつかは、コンピュータ/プロセッサそのものの機能を改善する。
以下の付録2の上のテーブル2/3において、適応的精度を使用した例示的PVQ−ベースのシステムの論理コストは6.843 WMOPSであることが見て取れる。全ての(任意のKについての)インナサーチループにおいて32ビットのエネルギおよび二乗相関精度を使用する場合、コストは10.474 WMOPSに増大する。
結語
上述の実施の形態は単に例として与えられており、提案される技術はそれらに限定されないことは理解されるべきである。本請求の範囲から離れることなく、実施の形態に対して種々の変更や組み合わせや変化を加えることができることは、当業者に理解されるであろう。特に、技術的に可能であれば、異なる実施の形態の異なる部分的解決手段を他の構成と組み合わせることができる。
「備える(comprise)」や「備えている(comprising)」という言葉を使用する場合、それは非限定的として解釈されるべきである、すなわち、「少なくとも からなる(consist at least of)」を意味する。
ある代替的な実装では、ブロック中に記載された機能/動作はフローチャートに記載された順序通りではない形で生じうることを注意しておく。例えば、連続して示される2つのブロックは実際は実質的に同時に実行されてもよいし、ある場合にはそれらのブロックは逆の順序で実行されてもよいのであって、これは含まれる機能/動作に依存する。さらに、フローチャートおよび/またはブロック図の所与のブロックの機能は複数ブロックへと分割されてもよいし、および/またはフローチャートおよび/またはブロック図の2以上のブロックの機能は少なくとも部分的に統合されてもよい。最後に、示されるブロックの間に他のブロックが追加/挿入されてもよいし、および/またはブロック/動作は発明思想の範囲から離れることなく除かれうる。
相互作用するユニットの選択は、本開示内でのユニットの名称付与と共に、例示のみを目的としており、上記の方法のうちの任意のものを実行するのに適したノードは提案された手順動作を実行可能とするために複数の代替的方法で構成されうることは理解されるべきである。
本開示で説明されるユニットは論理エンティティとして見なされるべきであり、別個の物理的エンティティとして見なされる必要性はないことを注意しておく。
単数形での要素への参照は、そのように明記されない限り、「ひとつおよびひとつのみ」を意味することを意図しておらず、むしろ「ひとつ以上」を意味することを意図するものである。上述の実施の形態の要素に対する構造的均等物および機能的均等物であって当業者に知られている物の全ては、明示的に、本明細書に参照により組み入れられ、本明細書によって包含されることが意図されている。さらに、デバイスや方法が、本明細書によって包含されるために、本明細書で開示される技術により解決されるべきおのおの全ての課題を解決する必要は無い。
本明細書におけるいくつかの例では、開示される技術の説明を不必要な詳細で不明瞭にしないよう、周知のデバイス、回路および方法の詳細な説明は省略される。開示される技術の原理、態様および実施の形態に言及する本明細書の全ての記載は、その具体例と共に、その構造的均等物および機能的均等物の両方を包含することが意図されている。加えて、そのような均等物は、現在知られている均等物および将来開発される均等物、例えば同じ機能を行う開発された任意の要素、の両方を、構造如何に関わらず、含むことが意図されている。
略語
N ベクトル次元
Ns サブベクトル次元
x ターゲットベクトル
xq 量子化形状ベクトル
yfinal L1ノルムKに固守された整数ベクトル
K 最終単位パルスの数
k 累積単位パルスインデックスの数
n 係数またはサンプルインデックス
i サブベクトルインデックス
MDCT 変更離散コサイン変換
PVQ ピラミッドベクトル量子化器(量子化)
WC 最悪の場合
WMOPS 重み付け毎秒百万回動作
AccEn 累積エネルギ
ROM リードオンリーメモリ
PROM プログラムROM
SNR 信号対雑音比
EVS エンハンストボイスサービス
3GPP 第3世代パートナーシッププロジェクト
DSP デジタルシグナルプロセッサ
CELT 拘束エネルギラップ変換
IETF インターネットエンジニアリングタスクフォース
MAC 乗算−累算
ACELP 代数的コード励起線形予測
EPS 機械イプシロン
付録1:ANSI−Cコードでの実施の形態の例示的実装
以下は、STL 2009 G.191仮想16/32ビットを使用するANSIーCコードでの例示的実施の形態の実装の例である(DSPのシミュレーション)。

static
Word16 max_val_fx( /* o : 入力ベクトルの最大値 */
const Word16 *vec, /* i : 入力ベクトル */
const Word16 lvec /* i : 入力ベクトルの長さ */
)
{
Word16 j,tmp;
tmp = vec[0]; move16();
FOR ( j=1 ; j<lvec ; j++ )
{
tmp = s_max(vec[j],tmp);
}
return tmp;
}
/* pulse_totから始まる、en_dn_shiftにおける次元ループに要求されるエネルギ精度/ダウンスケーリングについての情報を伴う、ひとつの単一追加単位パルスのためのインナサーチループ、および準最適相関アップスケーリングに使用されるべき現在のmax_xabs絶対値。imaxで最良の位置に配置された単位パルスのインデックスを返す。
*/
static
Word16 one_pulse_search(const Word16 dim, /* ベクトル次元 */
const Word16* x_abs, /* 絶対ベクトル値 */
Word16* y, /* 出力ベクトル */
Word16 *pulse_tot_ptr,
Word32* L_xy_ptr, /* 累積相関 */
Word32* L_yy_ptr, /* 累積エネルギ */
Word16 high_prec_active,
Word16 en_dn_shift,
Word16 max_xabs) /* 現在のパルス累積最大振幅 */
{
Word16 i, corr_up_shift, corr_tmp, imax, corr_sq_tmp, en_max_den, cmax_num, en_tmp;
Word32 L_tmp_en_lc, L_tmp_corr ;
Word32 L_tmp_en, L_en_max_den, L_corr_sq_max, L_tmp_corr_sq;
Word32 L_left_h, L_right_h;
UWord32 UL_left_l, UL_right_l, UL_dummy;
#ifndef NONBE_PVQ_SEARCH_FIX
Word16 corr_margin;
#endif
#ifdef BE_CLEAN_PVQ_SEARCH
Word32 L_tmp;
UWord32 UL_tmp;
UWord16 u_sgn;
#endif

/* ベクトルへの各単位パルス追加の前に、相関精度を最大化 */
corr_up_shift = norm_l(L_mac(*L_xy_ptr, 1, max_xabs));
/* 次元ループにおける最悪の場合のL_xy更新のプレ解析 , 2 ops */

/* クリーンなBEコード、分割された低/高精度ループを伴う */
/* 結果として得られるエネルギがリミット内にあるという条件付きで低い複雑さのen/corrサーチセクションをアクチベート */
/* より高次元の場合に典型的 */

IF( high_prec_active == 0 )
{
en_max_den = 0; /*move16()*/; /* OPT: moveはhigh_prec_activeを使用して以下としてセーブされる
en_max_den */
cmax_num = -1; move16(); /* n==0についての第1更新を強制するよう要求 */
FOR(i = 0; i < dim; i++) /* FOR 3 ops */
{
L_tmp_corr = L_shl(L_mac(*L_xy_ptr,1,x_abs[i]), corr_up_shift ); /* 実際のインループターゲット */
corr_tmp = round_fx(L_tmp_corr);
corr_sq_tmp = mult(corr_tmp, corr_tmp); /* CorrSqは低い複雑さのたすき掛けについて16ビットである */

L_tmp_en_lc = L_mac(*L_yy_ptr, 1,y[i] );
/*Q1 結果、エネルギは~14+1(Q1)+1(sign)=16ビットの範囲に亘りうる, 1 op */
/* シフトの伴わないextract_lが、このセクションについては常に使用可能である。エネルギはより低いワードに留まることが保証されているからである。, 1 op */
en_tmp = extract_l(L_tmp_en_lc);
/* L_shl + round_fxもまた使用可能であるが、(2-3 ops)のアップシフトコストが追加されうる。*/

/* 16/32ビット比較 WC (4 +1+1 + (1+1+1) = 9 */
/* corr_sq_tmp/en_tmp_den > cmax_num/en_max_den */
/* corr_sq_tmp * en_max_den > cmax_num * en_tmp */ /* IF 4 ops */
IF( L_msu(L_mult(corr_sq_tmp, en_max_den),cmax_num , en_tmp) > 0) /* 2 ops */
{
cmax_num = corr_sq_tmp; move16(); /* 1 op */
en_max_den = en_tmp; move16(); /* 1 op */
imax = i; move16(); /* 1 op */
}
} /* dim */

}
ELSE
{ /* ベクトルエネルギが高くなるとき(ピーク性または多くのパルス)、高分解能セクションがアクチベートされる。
*/
/* BASOPオペレータMpy32_32_ssはCorrSq項およびEnergy項の両方について高分解能を可能とするために使用される。 */
/*パフォーマンス: 浮動小数点リファレンスに近い */



L_en_max_den = L_deposit_l(0); /* 1 op */
L_corr_sq_max = L_deposit_l(-1); /* 第1更新を強制するよう要求 */ /* 1 op */

FOR(i = 0; i < dim; i++) /* FOR 3 ops */
{
L_tmp_corr = L_shl(L_mac(*L_xy_ptr,1,x_abs[i]), corr_up_shift );/* 実際のインループWC値 */
Mpy_32_32_ss(L_tmp_corr,L_tmp_corr, &L_tmp_corr_sq, &UL_dummy);
/* CorrSq 32 bits,4 ops */

L_tmp_en = L_mac(*L_yy_ptr, 1, y[i]); /* Q1,エネルギはsign+19 bitsまでに亘る , 1 op */
/* 最高の確度のために、最大アップシフトされた32×32ビットの符号付き値のペアを使用する */
/* (L_tmp_corr_sq / L_tmp_en) > (L_corr_sq_max/L_en_max_den) */
/* (L_tmp_corr_sq * L_en_max_den) > (L_corr_sq_max * L_tmp_en) */
Mpy_32_32_ss( L_en_max_den, L_tmp_corr_sq, &L_left_h, &UL_left_l); /* 4 ops */
Mpy_32_32_ss( L_tmp_en, L_corr_sq_max, &L_right_h, &UL_right_l); /* 4 ops */

/* 32/64ビット比較 WC (1+1+ 2x2+ 4 +(2+2+1) = 15 */
L_tmp = L_sub(L_left_h, L_right_h); /* 高い符号付きワードのチェック 1 op */

UL_tmp = UL_subNs(UL_right_l, UL_left_l, &u_sgn);
/* 低い符号無しワードのチェック、 UL_subNsの">="によるスイッチに注意, 1 op */
IF( ( L_tmp > 0 ) || ( (L_tmp == 0) && (u_sgn != 0 ) ) ) /* IF 4 ops */
{
L_corr_sq_max = L_tmp_corr_sq; move32(); /* 2 ops */
L_en_max_den = L_tmp_en; move32(); /* 2 ops */
imax = i; move16(); /* 1 op */
}
} /* 次元ループ */
}
/* 最後に、次のパルスループのために、過去のL_xy, Lyyに発見された単位パルス寄与を追加 */
*L_xy_ptr = L_mac(*L_xy_ptr, x_abs[imax], 1); /* xy_flt += xabs[imax]; Q12+1 */
*L_yy_ptr = L_mac(*L_yy_ptr, 1, y[imax]); /* yy_flt += y[imax]; */

y[imax] = add(y[imax],1); move16(); /* Q0 追加パルス */
(*pulse_tot_ptr) = add((*pulse_tot_ptr) ,1); /* トータルパルス和のインクリメント */
return imax;
}
/*-----------------------------------------------------------------------*
* Function pvq_encode_fx() *
* *
* 基本的PVQサーチアルゴリズム: *
* より低い~(K-1)ピラミッドへの選択的L1ノルム射影 *
* ACELP様の単位パルス追加ファインサーチが続く *
*-----------------------------------------------------------------------*/
void pvq_encode_fx(
Encoder_State_fx *st_fx,
const Word16 *x, /* i: 量子化対象ベクトル Q15-3=>Q12 */
Word16 *y, /* o: 生パルス (スケールされてない短い) Q0 */
Word16 *xq, /* o: 量子化されたベクトル Q15 */

const short pulses, /* i: 割り当てパルスの数 */
const short dim, /* i: ベクトル長 == N */
const Word16 neg_gain /* i: -サブベクトル利得 我々はQ15 0..1における−負の利得を使用する */
)
{
Word16 i;
Word16 pulse_tot;
Word16 xabs[PVQ_MAX_BAND_SIZE];
Word16 max_xabs;
Word32 L_xsum;
Word32 L_proj_fac;
Word32 L_yy, L_xy;
Word16 max_amp_y, imax;
Word16 k, en_margin, en_dn_shift, high_prec_active ;
Word32 L_num, L_tmp;
Word16 proj_fac, tmp, shift_den,shift_num,shift_delta, num,den;
UWord16 u16_tmp;
Word16 dim_m1;
Word32 L_isqrt;
Word16 neg_gain_norm, shift_tot;
Word16 high_pulse_density_flag;
PvqEntry_fx entry;
/* 絶対ベクトルを生成し、絶対ベクトルの和を計算 */
L_xsum = L_deposit_h(0);
max_xabs = -1; move16();

FOR( i = 0; i < dim; i++)
{
xabs[i] = abs_s(x[i]); move16(); /* Q12 */
max_xabs = s_max(max_xabs, xabs[i] ); /* 効率的なサーチ相関スケーリングのために */
L_xsum = L_mac0(L_xsum, 1, xabs[i] ); /* Q12に留まる */
y[i] = 0; move16(); /* init */
}
test();
IF( L_xsum == 0 || neg_gain == 0 )
{ /* ゼロ入力またはゼロ利得の場合 */
/* 最初と最後に「半分の」パルス和を置くか、全てのパルスを位置0に置く */
pulse_tot = pulses; move16();
dim_m1 = sub(dim,1);
y[dim_m1] = 0; move16();
y[0] = shr(pulses,1); move16();
y[dim_m1] = add(y[dim_m1], sub(pulses, y[0])); move16();
L_yy = L_mult(y[0],y[0]); /* 正規化のためL_yyが必要 */
if(dim_m1 != 0) {
L_yy = L_mac(L_yy, y[dim_m1],y[dim_m1]); /* (single basop) */
}
}
ELSE
{ /* 通常サーチ */
/* proj_fac_flt = (pulses - 1)/xsum_flt; */ /* normalize to L1 norm = absolute k-1 pyramid */
num = sub(pulses,1);
high_pulse_density_flag = 0; move16();
if ( sub(pulses, shr(dim, 1)) > 0 )
{
high_pulse_density_flag = 1; move16();
}

test();
IF( (num > 0) && (high_pulse_density_flag != 0) )
{
shift_den = norm_l(L_xsum); /* x_sum入力 Q12 */
den = extract_h(L_shl(L_xsum, shift_den)); /* now in Q12+shift_den */

L_num = L_deposit_l(num);
shift_num = sub(norm_l(L_num) ,1);
L_num = L_shl(L_num, shift_num) ; /* now in Q0 +shift_num -1 */
proj_fac = div_l(L_num, den ); /* L_numは常にden<<16より小さいものでなければならない */

shift_delta=sub(shift_num,shift_den);
L_proj_fac = L_shl(L_deposit_l(proj_fac), sub(9, shift_delta)); /* 固定Q12へと運ぶ */
}

pulse_tot = 0; move16();
L_yy = L_deposit_l(0);
L_xy = L_deposit_l(0);

/* パルス密度が0.5よりも大きい場合、より低いサブピラミッド上の開始位置を見つける */
IF((num > 0) && (high_pulse_density_flag != 0) )
{
FOR( i = 0; i < dim ; i++) /* max 64 */
{
/* y_flt[i] = (short)floor(xabs_flt[i] * proj_fac_flt); */ /* FLOATピラミッド切頭 */
/* y[i] = shr(xabs[i]*L_proj_fac); */ /* BASOPピラミッド切頭 */
Mpy_32_16_ss(L_proj_fac,xabs[i],&L_tmp,&u16_tmp); /*Q12 *Q12 +1 */
y[i] = extract_l(L_shr( L_tmp, 12+12-16+1 )); move16(); /* ピラミッド「切頭」 */
/* Q12 *Q12 -> Q0 */

pulse_tot = add(pulse_tot, y[i]); /* Q0 */
L_yy = L_mac(L_yy, y[i], y[i]); /* エネルギ、結果はL_macにより2だけスケールアップされる */
L_xy = L_mac(L_xy, xabs[i], y[i]); /* Corr, Q0*Q12 +1 --> Q13 */
}
}

/* PVQファインサーチループの説明 */
/* ACELP様の完全CorrSq/Energyサーチの実行 */
/* 基本サーチロジックは、出力ベクトルyにおける各位置nにひとつの単位パルスを追加することをテストし、相関項およびエネルギ項を繰り返し更新することである


Rxy(k,n) = Rxy(k-1) + 1*abs(x(k,n)) % ターゲットと単位相関との積の追加
Ryy(k,n) = Ryy(k-1) + 2*y(k-1,n) + 1^2 % 単位エネルギ寄与の追加
RxySq(k,n) = Rxy(k,n)*Rxy(k,n)

minimize ( -Rxy(k,n)/Sqrt(Ryy(k,n)) ), over n and k
( or equiv. maximize ( RxySq(k,n)/Ryy(k,n) ), over n and k )

RxySq(k,n) bestRxySq
----------- > --------- ? 最良候補の更新
Ryy(k,n) bestRyy

bestRyy * RxySq(k,n) > bestRxySq * Ryy(k,n) ? 最良候補の更新

Misc:
Ryy(k,n)の1^2は次元ループの前に追加可能。
Ryy(k,n)はオプションで、ひとつの掛け算/シフトを避けるために、2.0だけ予めダウンスケーリングされうる。
Rxy(k,n)は、RxySqを最適化するために、各単位パルスループに対して動的にスケール可能。
CorrSqTerm =(Rxy(k,n))^2,はWord16/Word32変数において最大精度を有する

Energy term:Ryy(k, n)
はゼロになるべきではない。すなわち、大抵の場合切頭にならないような十分な精度を有する
すなわち、127パルスより多くがQ1に累積された場合、32ビット変数の使用が好ましい
k=127=>log2(127^2 ) = 13.9774 bits, Q1符号付きにフィットする。Q1により2つへのプレ分割はうまくいく。
k=255=>log2(255^2 ) = 15.9887 bits, すなわち、1ビットスケーリング。Q1符号無し16ビット値にフィットする。

次元アスペクト:
6以上の次元は常に16ビットエネルギセーフである。最大パルスは96であるからである。
(for 1+31 bits short codewords)
次元5、4、3、2には127パルスより高いもの(またはより低いもの)が割り当てられてもよい
次元1はサーチを必要としない。符号のみが関係する。
現在、我々はKMAX=512を有する。より正確には、DIM 5についてkmaxは238である
DIM 4,3,2,1 kmaxは512である
符号無しDSP演算が使用されてもよい,
しかしながらそうすると「スタートアップ」ケース/今は負のセンチネルを特別な方法で扱わなければならない。
また、さらに、現在UL_mac,UL_mac0,UL_msu,UL_msu0はSTL符号無しbasopsとして利用可能でない。

PVQサーチコードを効率的に働かせるために、我々は以下を行う:
1. これまでの累積相関(k-1パルスのRxy)を解析することにより、相関項の準最適norm_lベースダイナミックアップスケーリングを常に使用し、プレ解析された最大の可能なターゲット値max_xabsを使用する


2. プレ累積エネルギによってエネルギ項の16または32ビット表現を選択的に使用する
さらに、エネルギ項Ryyが16ビットより多くを必要とする場合、我々は32ビットエネルギ表現にスイッチし、相関Rxyについてより高い32ビット表現にスイッチする。また、歪みたすき掛け計算の精度を64ビット程度まで増やす。
*/

/* Rxy_max=(k,*)= max( L_xy + 1*max_x_abs)
準最適L_xy正規化(corr, corrSq)のために必要な解析 */
/* Ryy_max(k,*) = max(L_yy(k-1) + .5 + 1*max_amp_y(k-1))
pulses > 127の場合のエネルギ(L_yy)精度選択のために必要な解析 ,
( (127^2)*2 fits in Signed Word16) */

L_yy=L_shr(L_yy,1); /* サーチループドメインについて2だけスケールダウン */
IF (sub(pulses,127)<=0 )
{ /* LCインナループ、6以上の次元の場合は常に、1…5次元の場合はときどき、ここに入る。 */
/* ( エネルギ高精度が非アクティブの場合、max_amp_yは不要で、max_amp_y(k-1)更新はない ) */
FOR (k=pulse_tot; k<pulses;k++){
L_yy = L_add(L_yy,1); /* pulse_tot+1について、.5がエネルギに追加 */
imax = one_pulse_search(dim, xabs,y,&pulse_tot,&L_xy,&L_yy,0, 0,max_xabs);
}
}
ELSE
{ /* HC or LC+HC インナループ */
max_amp_y = max_val_fx(y, dim); /* このループは最大5の値に亘る */
/* pulses_sumが127を超える場合、射影されたyからのmax_amp_yが必要 */

/* 32ビットエネルギの第1セクションは非アクティブ、しかしながらmax_amp_yは更新され続ける */
FOR( k=pulse_tot; k<128; k++){
L_yy = L_add(L_yy,1); /* .5 追加 */
imax = one_pulse_search(dim, xabs,y,&pulse_tot,&L_xy,&L_yy,0,0,max_xabs);
max_amp_y = s_max(max_amp_y, y[imax]);
}

/* より大きなパルス数を伴う第2セクション、32ビットエネルギ精度は適応的に選択される、max_amp_yは更新され続ける */
FOR( k=pulse_tot; k<pulses; k++){
L_yy = L_add(L_yy,1); /* .5追加 */
en_margin = norm_l(L_mac(L_yy,1, max_amp_y)); /*最大の「追加」を見つける, マージン,~2 ops */
en_dn_shift = sub(16, en_margin); /* より低いワードへのシフトの計算 */

high_prec_active = 1; move16();
if( en_dn_shift <= 0 ){ /* 実際に必要な場合にのみ32ビットエネルギを使用 */
high_prec_active = 0; move16();
}
/* 32ビットエネルギおよび相関は適応的にアクティブ, max_amp_yは更新され続ける */
imax = one_pulse_search(dim,xabs,y,&pulse_tot,&L_xy,&L_yy,high_prec_active,
en_dn_shift, max_xabs);
max_amp_y = s_max(max_amp_y, y[imax]);
}
}
L_yy = L_shl(L_yy,1); /* yy= yy*2.0 */ /* 単位/逆利得計算に対してエネルギを正しくするために、サーチループ解析エネルギダウンシフトを1だけ補償 */
}
/* 単位エネルギ(L2)正規化スケーリングの適用、常に少なくともひとつのパルス、したがってdiv-by-zeroチェックは不要 */
L_isqrt = L_deposit_l(0);
IF( neg_gain != 0 ){
L_isqrt = Isqrt(L_shr(L_yy,1)); /* 注意:fltにあるようなひとつの単一利得ファクタは計算されない */
}

shift_num = norm_s(pulse_tot); /* yの最大の可能なパルス振幅を説明、
max_amp_yが利用不可でも使用可能 */
shift_den = norm_s(neg_gain); /* 利得ダウンスケーリングシフトを説明 */
neg_gain_norm = shl(neg_gain, shift_den); /* このノルムなしで10 dBまでの損失 */
shift_tot = sub(add(shift_num, shift_den), 15);
/* DSP OPT : 平均の複雑さを抑えるために、共通利得==1.0の場合について、特別なループを実行可能 */
/* DSP OPT PROM : 共通復号器正規化ループの再利用 */

L_isqrt = L_negate(L_isqrt);
FOR( i = 0; i < dim; i++)
{
tmp = shl(y[i],shift_num); /* アップシフトされたabs(y[i])がスケーリングに使用される */
if( x[i] < 0 )
{
tmp = negate(tmp); /* 符号付与 */
}
if( y[i] != 0 )
{
y[i] = shr(tmp, shift_num); move16(); /* y[i}の符号の更新,~range -/+ 512),array move */
}
Mpy_32_16_ss( L_isqrt, tmp, &L_tmp, &u16_tmp); /* Q31*Q(0+x) +1 */
Mpy_32_16_ss( L_tmp, neg_gain_norm , &L_tmp, &u16_tmp); /* Q31*Q(0+x) *Q15 +1 */
L_tmp = L_shr(L_tmp, shift_tot); /* Q31+x */
xq[i] = round_fx(L_tmp); move16(); /* Q15, array move */
L_xq[i] = L_tmp; /* Q31 現在不使用 */
}

/* 発見されたPVQベクトルを短いコードワードにインデックスする */
entry = mpvq_encode_vec_fx(y, dim, pulses);
/* 短いコードワードをレンジ復号器に送信 */
rc_enc_bits_fx(st_fx, UL_deposit_l(entry.lead_sign_ind) , 1); /* 0 or 1 */
IF( sub( dim, 1) != 0 )
{
rc_enc_uniform_fx(st_fx, entry.index, entry.size);
}
return;
上記のコードは全ての当業者にとって読みやすいものであり、より詳細に説明する必要はない。しかしながら、当業者でない者のために、関係演算子「==」は、「A==B」の例ではAの値とBの値とが等しい場合に論理1(真)に設定される論理値を返し、そうでなければ論理0(偽)を返すような演算子であることを言及しておく。L_mac (L_v3, v1, v2) = L_v3+v1*v2という意味の範囲で、L_macは乗算−累算である。
付録2: テーブル化されたシミュレーション結果
シミュレーションの背景
本明細書の開示の実施の形態がシミュレーションされた。行われた全てのPVQ−形状サーチシミュレーションについて、使用されたビットレートは64000 bpsであり、コーデックはMDCTモードで動作し、初期MDCT係数サブバンドサイズは[8, 12, 16, 24, 32]係数であった。これらのバンドはより小さいバンドセクションに非常によく分割され、各セクションはPVQバンド分割アルゴリズムによりサブベクトルによって表現される。例えば、サイズ8のバンドは、十分なビットが割り当てられる場合、例えば「4、4」や「3、3、2」などのより小さいサブセクションに分割されうる。典型的には、各最終サブベクトルの形状コーディングのために最大32ビットが使用可能となるように、各バンドは分割される。
このPVQ−インデクシング実装では、サイズ8のバンドは36単位パルスまでを有し、サイズ7のサブセクションは53単位パルスまでを有し、サイズ6のセクションは95単位パルスまでを有し、サイズ5のセクションは238単位パルスまでを有し、サイズ4、3、2、1のセクションは512単位パルスまでを有しうる。パルス数が多いより短いセクションはバンド分割により動的に生成されるので、それらは、より長いサブベクトルサイズよりもまれである。以下の結果テーブルのWMOPS値は、( PVQ-pre-search, PVQ-fine search , PVQ-normalization and PVQ-indexing.)を含む。以下の結果テーブルにおける「%同一」値は、非拘束浮動小数点PVQ形状サーチに対する、評価された限定精度形状サーチアルゴリズムで発見された同一ベクトルの数である。
結果テーブル

Claims (30)

  1. 符号器により行われるピラミッドベクトル量子化器(PVQ)形状サーチ方法であって、前記PVQはターゲットベクトルxを入力として取得し、インナ次元サーチループの中で単位パルスを繰り返し加えることでベクトルyを導き、前記方法は、
    単位パルス追加のための次のインナ次元サーチループに入る前に、前記次のインナ次元サーチループ(103)におけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定すること(102、204)を含む方法。
  2. 単位パルス追加のための次のインナ次元サーチループに入る前に、前記ターゲットベクトルxと前記ベクトルyとの間の前記次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、前記ターゲットベクトルxの最大絶対値、xabsmaxに基づいて、決定すること(203)をさらに含む請求項1に記載の方法。
  3. enloopを表すために現在のビットワード長より多くが必要(102、204、304、403)な場合、enloopを表すためにより長いビットワード長を使用して前記次のインナ次元サーチループにおける計算を行う(103、205、305、404)ことをさらに含む請求項1または2に記載の方法。
  4. enloopを表すために現在のビットワード長より多くが必要な場合、前記次のインナ次元サーチループにおける前記ターゲットベクトルxと前記ベクトルyとの間の二乗累積インループ相関値、corrxy を表すためにより長いビットワード長を使用して前記次のインナ次元サーチループにおける計算を行う(305)ことをさらに含む請求項1から3のいずれか1項に記載の方法。
  5. enloopを表すために現在のビットワード長より多くが必要でない場合、enloopを表すために第1ビットワード長を使用した第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うこと(405)と、
    enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すために、前記第1単位パルス追加ループよりも長いビットワード長を使用した第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うこと(404)と、をさらに含む請求項1から4のいずれか1項に記載の方法。
  6. enloopを表すために現在のビットワード長より多くが必要でない場合、所定の精度を有する第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うこと(405)と、
    enloopを表すために現在のビットワード長より多くが必要な場合、前記第1単位パルス追加ループよりも高い精度を有する第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うこと(404)と、をさらに含む請求項1から5のいずれか1項に記載の方法。
  7. 前記enloopを表すために現在のビットワード長より多くが必要か否かをmaxampに基づいて決定することは、前記次のインナ次元サーチループにおいて前記単位パルスがmaxampに関連付けられた前記ベクトルyにおける位置に加えられる場合の特性を決定することを含む請求項1から6のいずれか1項に記載の方法。
  8. 単位パルス追加のための前記インナ次元サーチループにおいて、前記ベクトルyにおける各位置nについて、前記現在のnの相関およびエネルギ値と、以前のnの値から保存された二乗相関、BestCorrSqおよびエネルギ値bestEnと、のたすき掛けを評価することで単位パルス追加のための前記ベクトルyにおける位置nbest
    のように決定することをさらに含む請求項1から7のいずれか1項に記載の方法。
  9. 前記ターゲットベクトルxに関連するKの最終値がしきい値を超える場合、maxampを追跡することをさらに含む請求項1から8のいずれか1項に記載の方法。
  10. ピラミッドベクトル量子化(PVQ)形状サーチのために構成された符号器であって、前記PVQはターゲットベクトルxを入力として取得し、インナ次元サーチループの中で単位パルスを繰り返し加えることでベクトルyを導き、前記符号器は、
    単位パルス追加のための次のインナ次元サーチループに入る前に、前記次のインナ次元サーチループにおけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定するよう構成される符号器。
  11. さらに、単位パルス追加のための次のインナ次元ループに入る前に、前記ターゲットベクトルxと前記ベクトルyとの間の前記次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、前記ターゲットベクトルxの最大絶対値、xabsmaxに基づいて、決定するよう構成される請求項10に記載の符号器。
  12. さらに、enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すためにより長いビットワード長を使用して前記次のインナ次元サーチループにおける計算を行うよう構成される請求項10または11に記載の符号器。
  13. enloopを表すために現在のビットワード長より多くが必要でない場合、第1ビットワード長を使用した第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行い、
    enloopを表すために現在のビットワード長より多くが必要な場合、前記第1単位パルス追加ループよりも長いビットワード長を使用した第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うよう構成される請求項10から12のいずれか1項に記載の符号器。
  14. さらに、enloopを表すために現在のビットワード長より多くが必要でない場合、所定の精度を有する第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行い、
    enloopを表すために現在のビットワード長より多くが必要な場合、前記第1単位パルス追加ループよりも高い精度を有する第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うよう構成される請求項10から13のいずれか1項に記載の符号器。
  15. 前記enloopを表すために現在のビットワード長より多くが必要か否かをmaxampに基づいて決定することは、前記次のインナ次元サーチループにおいて前記単位パルスがmaxampに関連付けられた前記ベクトルyにおける位置に加えられる場合の特性を決定することを含むよう構成される請求項10から14のいずれか1項に記載の符号器。
  16. さらに、単位パルス追加のための前記インナ次元サーチループにおいて、前記ベクトルyにおける各位置nについて、前記現在のnの相関およびエネルギ値と、以前のnの値から保存された相関、BestCorrSqおよびエネルギ値bestEnと、のたすき掛けを評価することで単位パルス追加のための前記ベクトルyにおける位置nbest
    のように決定するよう構成される請求項10から15のいずれか1項に記載の符号器。
  17. さらに、前記ターゲットベクトルxに関連する最終単位パルスの数、Kがしきい値を超える場合、maxampを追跡するよう構成される請求項10から16のいずれか1項に記載の符号器。
  18. 請求項10から17のいずれか1項に記載の前記符号器を備える通信デバイス。
  19. 少なくともひとつのプロセッサにより実行された場合、請求項1から9のいずれか1項に記載の前記方法を前記少なくともひとつのプロセッサに実行させるインストラクションを備えるコンピュータプログラム。
  20. 前記少なくともひとつのプロセッサのうちの少なくともひとつは固定精度DSPなどのデジタルシグナルプロセッサ、DSPである請求項19に記載のコンピュータプログラム。
  21. 請求項19または20に記載の前記コンピュータプログラムを含むコンピュータ可読保持媒体。
  22. ピラミッドベクトル量子化(PVQ)形状サーチのために構成された符号器(1100、2)であって、前記PVQはターゲットベクトルxを入力として取得し、インナ次元サーチループの中で単位パルスを繰り返し加えることでベクトルyを導き、前記符号器は第1決定部(1106、U4)を備え、前記第1決定部は、
    単位パルス追加のための次のインナ次元サーチループに入る前に、前記次のインナ次元サーチループにおけるyの累積エネルギに係る変数、enloopを無損失な態様で表すために現在のビットワード長より多くが必要か否かを、現在のベクトルyの最大パルス振幅、maxampに基づいて決定するためのものである符号器。
  23. 単位パルス追加のための次のインナ次元ループに入る前に、前記ターゲットベクトルxと前記ベクトルyとの間の前記次のループの累積インループ相関値、corrxyのビットワードでの可能なアップシフトを、前記ターゲットベクトルxの最大絶対値、xabsmaxに基づいて、決定するための第2決定部(U2)をさらに備える請求項22に記載の符号器。
  24. enloopを表すために現在のビットワード長より多くが必要な場合、enloopを表すためにより長いビットワード長を使用して前記次のインナ次元サーチループにおける計算を行うためのファインサーチ部(1107、U6)をさらに備える請求項22または23に記載の符号器。
  25. enloopを表すために現在のビットワード長より多くが必要でない場合、第1ビットワード長を使用した第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行い、
    enloopを表すために現在のビットワード長より多くが必要な場合、前記第1単位パルス追加ループよりも長いビットワード長を使用した第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うためのファインサーチ部(1107、U6)を備える請求項22から24のいずれか1項に記載の符号器。
  26. enloopを表すために現在のビットワード長より多くが必要でない場合、所定の精度を有する第1単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行い、
    enloopを表すために現在のビットワード長より多くが必要な場合、前記第1単位パルス追加ループよりも高い精度を有する第2単位パルス追加ループを用いることにより前記次のインナ次元サーチループにおける計算を行うためのファインサーチ部(1107、U6)を備える請求項22から25のいずれか1項に記載の符号器。
  27. 前記次のインナ次元サーチループにおいて前記単位パルスがmaxampに関連付けられた前記ベクトルyにおける位置に加えられる場合の特性を決定することにより、enloopを表すために現在のビットワード長より多くが必要か否かをmaxampに基づいて決定することを実行するよう構成される請求項22から26のいずれか1項に記載の符号器。
  28. 単位パルス追加のための前記インナ次元サーチループにおいて、前記ベクトルyにおける各位置nについて、前記現在のnの相関およびエネルギ値と、以前のnの値から保存された相関、BestCorrSqおよびエネルギ値bestEnと、のたすき掛けを評価することで単位パルス追加のための前記ベクトルyにおける位置nbest
    のように決定するためのファインサーチ部(1107、U6)を備える請求項22から27のいずれか1項に記載の符号器。
  29. 前記ターゲットベクトルxに関連する最終単位パルスの数、Kがしきい値を超える場合、maxampを追跡するための格納部(U3)をさらに備える請求項22から28のいずれか1項に記載の符号器。
  30. 請求項22から29のいずれか1項に記載の前記符号器を備える通信デバイス。
JP2015563093A 2014-07-28 2015-06-25 ピラミッドベクトル量子化器形状サーチ Active JP6170575B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462029586P 2014-07-28 2014-07-28
US62/029,586 2014-07-28
PCT/SE2015/050743 WO2016018185A1 (en) 2014-07-28 2015-06-25 Pyramid vector quantizer shape search

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017129472A Division JP6347872B2 (ja) 2014-07-28 2017-06-30 ピラミッドベクトル量子化器形状サーチ

Publications (2)

Publication Number Publication Date
JP2016527527A JP2016527527A (ja) 2016-09-08
JP6170575B2 true JP6170575B2 (ja) 2017-07-26

Family

ID=53502817

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2015563093A Active JP6170575B2 (ja) 2014-07-28 2015-06-25 ピラミッドベクトル量子化器形状サーチ
JP2017129472A Active JP6347872B2 (ja) 2014-07-28 2017-06-30 ピラミッドベクトル量子化器形状サーチ
JP2018102606A Expired - Fee Related JP6574287B2 (ja) 2014-07-28 2018-05-29 ピラミッドベクトル量子化器形状サーチ
JP2019149150A Active JP6644939B2 (ja) 2014-07-28 2019-08-15 ピラミッドベクトル量子化器形状サーチ

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2017129472A Active JP6347872B2 (ja) 2014-07-28 2017-06-30 ピラミッドベクトル量子化器形状サーチ
JP2018102606A Expired - Fee Related JP6574287B2 (ja) 2014-07-28 2018-05-29 ピラミッドベクトル量子化器形状サーチ
JP2019149150A Active JP6644939B2 (ja) 2014-07-28 2019-08-15 ピラミッドベクトル量子化器形状サーチ

Country Status (22)

Country Link
US (3) US9792922B2 (ja)
EP (4) EP3467825B1 (ja)
JP (4) JP6170575B2 (ja)
KR (3) KR102034419B1 (ja)
CN (2) CN109979470B (ja)
AR (1) AR101332A1 (ja)
AU (3) AU2015297066B2 (ja)
CA (1) CA2955765C (ja)
DK (2) DK2992529T3 (ja)
ES (4) ES2718049T3 (ja)
HU (2) HUE028802T2 (ja)
IL (1) IL249104A (ja)
MX (3) MX2018006677A (ja)
MY (1) MY177842A (ja)
NZ (1) NZ726879A (ja)
PL (3) PL2992529T3 (ja)
PT (2) PT2992529T (ja)
RU (2) RU2665898C2 (ja)
SG (3) SG10201704724TA (ja)
TR (1) TR201901612T4 (ja)
WO (1) WO2016018185A1 (ja)
ZA (2) ZA201802791B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016018185A1 (en) * 2014-07-28 2016-02-04 Telefonaktiebolaget L M Ericsson (Publ) Pyramid vector quantizer shape search
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
EP3579418A4 (en) * 2017-08-07 2020-06-10 Shenzhen Goodix Technology Co., Ltd. DIGITAL TO ANALOG CONVERSION CIRCUIT OF VECTOR QUANTIFICATION FOR SUPER-SAMPLING CONVERTER
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
US10734006B2 (en) 2018-06-01 2020-08-04 Qualcomm Incorporated Audio coding based on audio pattern recognition
WO2023100494A1 (ja) * 2021-12-01 2023-06-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、及び、復号方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720861A (en) * 1985-12-24 1988-01-19 Itt Defense Communications A Division Of Itt Corporation Digital speech coding circuit
JP4132109B2 (ja) * 1995-10-26 2008-08-13 ソニー株式会社 音声信号の再生方法及び装置、並びに音声復号化方法及び装置、並びに音声合成方法及び装置
US6128415A (en) * 1996-09-06 2000-10-03 Polaroid Corporation Device profiles for use in a digital image processing system
JP3707153B2 (ja) * 1996-09-24 2005-10-19 ソニー株式会社 ベクトル量子化方法、音声符号化方法及び装置
US6006179A (en) * 1997-10-28 1999-12-21 America Online, Inc. Audio codec using adaptive sparse vector quantization with subband vector classification
US6360204B1 (en) 1998-04-24 2002-03-19 Sarnoff Corporation Method and apparatus for implementing rounding in decoding an audio signal
US6236960B1 (en) * 1999-08-06 2001-05-22 Motorola, Inc. Factorial packing method and apparatus for information coding
AU7486200A (en) * 1999-09-22 2001-04-24 Conexant Systems, Inc. Multimode speech encoder
JP3960932B2 (ja) * 2002-03-08 2007-08-15 日本電信電話株式会社 ディジタル信号符号化方法、復号化方法、符号化装置、復号化装置及びディジタル信号符号化プログラム、復号化プログラム
JP3731575B2 (ja) 2002-10-21 2006-01-05 ソニー株式会社 符号化装置及び復号装置
KR100487719B1 (ko) * 2003-03-05 2005-05-04 한국전자통신연구원 광대역 음성 부호화를 위한 엘에스에프 계수 벡터 양자화기
WO2004090864A2 (en) * 2003-03-12 2004-10-21 The Indian Institute Of Technology, Bombay Method and apparatus for the encoding and decoding of speech
CN1240050C (zh) * 2003-12-03 2006-02-01 北京首信股份有限公司 一种用于语音编码的固定码本快速搜索方法
US7961890B2 (en) * 2005-04-15 2011-06-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Multi-channel hierarchical audio coding with compact side information
US8255207B2 (en) 2005-12-28 2012-08-28 Voiceage Corporation Method and device for efficient frame erasure concealment in speech codecs
US7461106B2 (en) * 2006-09-12 2008-12-02 Motorola, Inc. Apparatus and method for low complexity combinatorial coding of signals
CN100530979C (zh) * 2006-09-13 2009-08-19 华为技术有限公司 一种矢量量化方法及矢量量化器
CN101345530B (zh) * 2007-07-11 2010-09-15 华为技术有限公司 一种矢量量化方法及矢量量化器
TWI388218B (zh) * 2007-10-30 2013-03-01 Nippon Telegraph & Telephone 影像編碼方法與解碼方法、其程式及記錄有程式的記錄媒體
KR101170137B1 (ko) * 2008-02-15 2012-07-31 노키아 코포레이션 복잡성이 축소된 벡터 인덱싱 및 탈-인덱싱
EP2304722B1 (en) * 2008-07-17 2018-03-14 Nokia Technologies Oy Method and apparatus for fast nearest-neighbor search for vector quantizers
CN102081926B (zh) 2009-11-27 2013-06-05 中兴通讯股份有限公司 格型矢量量化音频编解码方法和系统
CN102222505B (zh) * 2010-04-13 2012-12-19 中兴通讯股份有限公司 可分层音频编解码方法系统及瞬态信号可分层编解码方法
CN101986630B (zh) * 2010-10-18 2012-11-21 武汉大学 球面矢量量化编解码方法
US8838442B2 (en) * 2011-03-07 2014-09-16 Xiph.org Foundation Method and system for two-step spreading for tonal artifact avoidance in audio coding
US9009036B2 (en) * 2011-03-07 2015-04-14 Xiph.org Foundation Methods and systems for bit allocation and partitioning in gain-shape vector quantization for audio coding
ES2745143T3 (es) * 2012-03-29 2020-02-27 Ericsson Telefon Ab L M Cuantificador vectorial
US8749408B1 (en) * 2012-12-27 2014-06-10 Mediatek Singapore Pte. Ltd. Methods for simplified MMI VQ based HARQ buffer reduction for LTE
US9560386B2 (en) * 2013-02-21 2017-01-31 Mozilla Corporation Pyramid vector quantization for video coding
US9425820B2 (en) * 2013-06-03 2016-08-23 Mozilla Corporation Vector quantization with non-uniform distributions
BR112016010273B1 (pt) 2013-11-07 2022-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Método para particionamento de vetores de entrada para codificação de sinais de áudio, unidade de particionamento, codificador e meio não-transitório legível por máquina
MX365684B (es) 2013-11-12 2019-06-11 Ericsson Telefon Ab L M Codificacion de vector de ganancia y forma dividida.
CN110033779B (zh) 2014-02-27 2023-11-17 瑞典爱立信有限公司 用于棱椎矢量量化编索引和解索引的方法和装置
WO2016018185A1 (en) * 2014-07-28 2016-02-04 Telefonaktiebolaget L M Ericsson (Publ) Pyramid vector quantizer shape search

Also Published As

Publication number Publication date
KR101777994B1 (ko) 2017-09-13
RU2665898C2 (ru) 2018-09-04
MX2016016095A (es) 2017-03-10
KR20190027959A (ko) 2019-03-15
ES2785041T3 (es) 2020-10-05
KR102034419B1 (ko) 2019-10-18
AU2019204328A1 (en) 2019-07-11
IL249104A0 (en) 2016-12-29
EP2992529A1 (en) 2016-03-09
KR101959156B1 (ko) 2019-03-15
RU2018128976A (ru) 2019-03-14
EP3467825B1 (en) 2020-01-22
HUE028802T2 (en) 2017-01-30
AU2019204328B2 (en) 2020-05-28
CN105431901B (zh) 2019-03-19
KR20170102047A (ko) 2017-09-06
AR101332A1 (es) 2016-12-14
MX2021007880A (es) 2022-12-06
PT3633675T (pt) 2021-06-01
RU2762329C2 (ru) 2021-12-17
EP3633675A1 (en) 2020-04-08
EP2992529B1 (en) 2016-05-25
ES2718049T3 (es) 2019-06-27
US20160027449A1 (en) 2016-01-28
DK3065135T3 (en) 2019-03-25
ES2586712T3 (es) 2016-10-18
JP2017216696A (ja) 2017-12-07
PL3467825T3 (pl) 2020-08-10
RU2018128976A3 (ja) 2021-10-20
US11942102B2 (en) 2024-03-26
EP3467825A1 (en) 2019-04-10
CN105431901A (zh) 2016-03-23
EP3633675B1 (en) 2021-04-28
ES2874511T3 (es) 2021-11-05
AU2017265085B2 (en) 2019-07-11
AU2015297066A1 (en) 2016-12-15
SG10202000575WA (en) 2020-03-30
US9792922B2 (en) 2017-10-17
IL249104A (en) 2017-11-30
PL3633675T3 (pl) 2021-11-15
MY177842A (en) 2020-09-23
JP6644939B2 (ja) 2020-02-12
RU2017106160A (ru) 2018-08-28
TR201901612T4 (tr) 2019-02-21
PT2992529T (pt) 2016-08-18
KR20170020540A (ko) 2017-02-22
JP6347872B2 (ja) 2018-06-27
HUE042095T2 (hu) 2019-06-28
DK2992529T3 (en) 2016-08-29
ZA201902319B (en) 2020-08-26
WO2016018185A1 (en) 2016-02-04
AU2017265085A1 (en) 2017-12-14
SG10201704724TA (en) 2017-07-28
MX2018006677A (es) 2021-06-29
JP2016527527A (ja) 2016-09-08
JP2018156099A (ja) 2018-10-04
JP6574287B2 (ja) 2019-09-11
JP2020010353A (ja) 2020-01-16
RU2017106160A3 (ja) 2018-08-28
AU2015297066B2 (en) 2017-09-07
NZ726879A (en) 2017-10-27
EP3065135A1 (en) 2016-09-07
MX357398B (es) 2018-07-06
US20230086320A1 (en) 2023-03-23
CA2955765A1 (en) 2016-02-04
SG11201609926YA (en) 2016-12-29
CN109979470A (zh) 2019-07-05
CN109979470B (zh) 2023-06-20
US20170301359A1 (en) 2017-10-19
PL2992529T3 (pl) 2017-03-31
ZA201802791B (en) 2019-07-31
CA2955765C (en) 2018-02-13
EP3065135B1 (en) 2018-12-26

Similar Documents

Publication Publication Date Title
JP6574287B2 (ja) ピラミッドベクトル量子化器形状サーチ
OA18156A (en) Pyramid vector quantizer shape search
BR112016030902B1 (pt) Método para pesquisa de formato por quantizador vetorial em pirâmide, codificador, e, dispositivo de comunicação

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160127

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160127

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170630

R150 Certificate of patent or registration of utility model

Ref document number: 6170575

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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