特許第6165151号(P6165151)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オランジュの特許一覧

<>
  • 特許6165151-改善された階層符号化 図000019
  • 特許6165151-改善された階層符号化 図000020
  • 特許6165151-改善された階層符号化 図000021
  • 特許6165151-改善された階層符号化 図000022
  • 特許6165151-改善された階層符号化 図000023
  • 特許6165151-改善された階層符号化 図000024
  • 特許6165151-改善された階層符号化 図000025
  • 特許6165151-改善された階層符号化 図000026
  • 特許6165151-改善された階層符号化 図000027
  • 特許6165151-改善された階層符号化 図000028
  • 特許6165151-改善された階層符号化 図000029
  • 特許6165151-改善された階層符号化 図000030
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6165151
(24)【登録日】2017年6月30日
(45)【発行日】2017年7月19日
(54)【発明の名称】改善された階層符号化
(51)【国際特許分類】
   G10L 19/035 20130101AFI20170710BHJP
   G10L 19/02 20130101ALI20170710BHJP
【FI】
   G10L19/035 B
   G10L19/02 150
【請求項の数】13
【全頁数】37
(21)【出願番号】特願2014-536320(P2014-536320)
(86)(22)【出願日】2012年10月19日
(65)【公表番号】特表2014-531054(P2014-531054A)
(43)【公表日】2014年11月20日
(86)【国際出願番号】FR2012052400
(87)【国際公開番号】WO2013057453
(87)【国際公開日】20130425
【審査請求日】2014年12月17日
(31)【優先権主張番号】1159425
(32)【優先日】2011年10月19日
(33)【優先権主張国】FR
(73)【特許権者】
【識別番号】591034154
【氏名又は名称】オランジュ
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100064908
【弁理士】
【氏名又は名称】志賀 正武
(74)【代理人】
【識別番号】100089037
【弁理士】
【氏名又は名称】渡邊 隆
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(72)【発明者】
【氏名】クロード・ランブラン
【審査官】 冨澤 直樹
(56)【参考文献】
【文献】 特開2010−146006(JP,A)
【文献】 特表2010−537473(JP,A)
【文献】 国際公開第2012/002348(WO,A1)
【文献】 米国特許出願公開第2010/0161322(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 19/00−19/26
(57)【特許請求の範囲】
【請求項1】
L個のサンプルの連続を備え、各サンプルが仮数および指数を備える、デジタル信号強化層を符号化/復号化するステップを備える、階層符号化/復号化におけるビット割当てのための方法であって、最大指数値を有する前記L個のサンプルのうちの少なくともいくつかへのあらかじめ定められた数Nbの強化ビットの前記割当てを備え、
a)指数のそれぞれの所与の値のために、前記L個のサンプルのうちの前記所与の値を有するサンプルの数を列挙するステップと、
b)利用可能なさらなる強化ビットがもうないサンプルの前記最大指数(以下では「iexp0」と示す)に等しいしきい値を決定するために、前記あらかじめ定められた数Nb累積値によって上から近づくまで指数値を減少させることによって、サンプルの数の少なくとも1つの前記累積値を計算するステップと、
c)選択されたルールによって、前記指数が前記しきい値(iexp0)よりも大きいサンプルに、前記強化ビットを割り当てるステップとを備えることを特徴とする、方法。
【請求項2】
前記選択されたルールによって、サンプルに割り当てられるべき最大数Naのビットの提供が行われ、
- 前記指数が、前記しきい値(iexp0)と前記最大数Naの合計よりも大きい各サンプルに割り当てるためのNaビットと、
- 前記指数が前記しきい値(iexp0)以下であるサンプルのためのnoビットと、
- 前記指数が、前記しきい値(iexp0)+1と、前記しきい値および前記最大数Naの前記合計との間で構成される、サンプルに割り当てるためのビットの数Nbのうちのいくつかの追加ビットとが保存されることを特徴とする、請求項1に記載の方法。
【請求項3】
・サンプル(iexp(n))の前記指数と前記しきい値(iexp0)との間の差分、
・または、選択された基準に応じて、この差分が1未満である、
が、前記指数が、前記しきい値+1と、前記しきい値および前記最大数Naとの前記合計との間で構成される各サンプルに割り当てられることを特徴とする、請求項2に記載の方法。
【請求項4】
前記選択された基準が、サンプルの連続の中の前記サンプルの位置順序に対応することを特徴とする、請求項3に記載の方法。
【請求項5】
b1)前記L個のサンプルのうちの最大指数値(iexpmax)の決定、
b2)前記最大指数値から、Na回デクリメントされた前記最大指数値への指数毎のサンプルの数の累積、および、
b3)・前記累積が、前記L個のサンプルに割り当てられるべきビットNbの総数よりも少ないままの場合、この累積が、前記最大指数値を1だけデクリメントすることとともに動作b2)の実装によって計算された新しい累積に追加され、そのようなデクリメントの結果が、動作b2)から得られる前記累積が前記数Nbよりも少ないままである限り、動作b2)のループ反復とともに、動作b2)の前記実装のために前記最大指数値として考えられ、
・累積が、L個のサンプルに割り当てられるべきビットNbの総数よりも少ないままではない場合、前記指数が、前記しきい値+1と、前記しきい値および前記最大数Naの前記合計との間で構成される、サンプルの数(L'')を決定するために、動作b2)の直前の反復のままである追加ビットの数が計算される、などの条件付きループを備えることを特徴とする、請求項2から4のいずれか一項に記載の方法。
【請求項6】
前記L個のサンプルへの前記ビット割当てが、
- しきい値+1と、前記しきい値と前記最大数Naの前記合計との間の指数を有するサンプル(L'')へのビット割当てが実行されるまでの第1のループであって、前記第1のループの反復の数がカウントされる第1のループと、
- 次いで、最後の残りのサンプルのビット割当てを実行するための第2のループであって、前記第1のループの反復の前記数の関数である数回反復される第2のループとの、2つのループの前記実行によって実行されることを特徴とする、請求項2から5のいずれか一項に記載の方法。
【請求項7】
ステップa)で指数カウンタ(cnt0)の表が確立され、前記表内のアドレスポインタが、ステップb)の実装のために、条件付きループ内でデクリメントされることを特徴とする、請求項1から6のいずれか一項に記載の方法。
【請求項8】
ステップa)で指数カウンタ(cnt0)の表が確立され、前記表内のアドレスポインタが、ステップb)の実装のために、条件付きループ内でデクリメントされ、および前記L個のサンプルのうちの前記最大指数値(iexpmax)の決定が、前記表を読み取ることによって実行されることを特徴とする、請求項5に記載の方法。
【請求項9】
記符号化するステップの際に、前記強化層の前記符号化から得られる強調信号のビットストリームを生成するステップを備え、
前記生成するステップが、各サンプルのビット割当ての後、オンザフライで実行されることを特徴とする、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記L個のサンプルが、ITU-T勧告G.711.1による、タイプAまたはタイプμの対数振幅圧縮符号化法によるパルス符号変調型の量子化によって取得されるステップであることを特徴とする、請求項1から9のいずれか一項に記載の方法。
【請求項11】
プロセッサ(PROC;PROC')によって実行されるときに、請求項1から10のいずれかによる前記方法を実装するための命令を備えることを特徴とする、コンピュータプログラム。
【請求項12】
一連のサンプルを備えるデジタルオーディオ信号の階層符号化における強化層を前記符号化するためのデバイスであって、請求項1から10のいずれか一項に記載の方法を実装するための、コンピュータ化された手段(PROC、MEM)を備えることを特徴とする、デバイス。
【請求項13】
一連のサンプルを備えるデジタルオーディオ信号の階層復号化における強化層を前記復号化するためのデバイスであって、請求項1から10のいずれか一項に記載の方法を実装するための、コンピュータ化された手段(PROC',MEM')を備えることを特徴とする、デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル信号の符号化/復号化に関し、具体的には、オーディオ(音声、および/またはサウンド)、またはビデオ、あるいはより一般的にはマルチメディアなどのデジタル信号の送信または格納のためのアプリケーションに関する。
【0002】
本発明は、具体的には、たとえばITU-T G.711.1符号器によって実装された対数型のデジタル符号化/復号化に関する。
【背景技術】
【0003】
知覚の良好な品質を維持しながらビットレートを低減するための信号の圧縮は、
- PCM(パルス符号変調)技法、およびADPCM(適応差分PCM)などのその変形形態、
- CELP(符号励振線形予測)技法、ならびに、
- 「by transformation」(たとえば、MDCT(修正離散コサイン変換)型の)として知られている技法
を含む、多数の技法を利用することができる。
【0004】
PCM技法はサンプルごとに所与のビット数で信号を圧縮し、他のタイプの技法はサンプル(またはフレーム)のブロックを圧縮する。
【0005】
ITU-T勧告G.711による符号化/復号化は、従来の電話(交換網を介する)において、およびインターネット(ボイスオーバーIP、すなわちVoIP)を介しての両方で、音声信号に最も広く使用されているもののうちの1つである。そのような符号化は「対数PCM」として知られている技法を使用する。
【0006】
ITU-T勧告G.711による符号化/復号化の原理は以下のように要約される。
【0007】
G.711符号器は、64キロビット/秒のビットレートを与えるために、標本化周波数8キロヘルツで8ビットの対数圧縮に基づいている。
【0008】
G.711のPCM符号化の原理は、信号の広いダイナミックレンジのほぼ一定の信号対雑音比を得ることを可能にする対数曲線によって、300〜3400ヘルツの帯域においてフィルタリングされた信号の圧縮を行うことである。これは、符号化するべきサンプルの振幅に応じて変化する量子化ステップを備えた量子化による符号化を含む:
- 入力信号レベルが弱い場合、量子化ステップが小さい、
- 入力信号レベルが強い場合、量子化ステップが大きい。
【0009】
2つの対数PCM圧縮法が使用される:
- μ法(北米および日本で使用される)、および、
- A法(欧州、および世界のそれ以外の地域で使用される)。
【0010】
A法によるG.711符号化、およびμ法によるG.711符号化は、入力サンプルの8ビット符号化を使用する。
【0011】
実際には、G.711符号器の実装を容易にするために、対数PCM圧縮は、セグメント化された曲線(segmented curve)で近似されている。
【0012】
A法では、8ビットは以下のように分散される:
- 1つの符号ビット、
- セグメントを示すための3つのビット、
- セグメント上の位置を示すための4つのビット。
【0013】
PCM符号化/復号化の原理を、図1を参照して要約する。PCM符号器11は、入力において入力信号S(z)を受信する量子化モジュールQMIC10を備える。量子化モジュール10の出力における量子化インデックスIMICが、送信チャネル12を介して復号器14に送信される。PCM復号器14は、入力で送信チャネルから送信されたインデックスI'MICを受信して(IMIC内のビットエラーによっておそらく低下されたバージョン)、復号化された信号を得るために逆量子化モジュール13(Q-1MIC)を用いて逆量子化を行う。標準化されたITU-T G.711 PCM符号化(以下ではG.711と呼ぶ)は、スカラー量子化を均一にする前に、対数曲線を用いて信号の振幅の圧縮を行い、信号の広いダイナミックレンジのほぼ一定の信号対雑音比を得ることを可能にする。したがって、元の信号ドメインにおける量子化ステップは信号の振幅に比例する。圧縮された信号の連続したサンプルは、8ビット、すなわち256レベルに量子化される。
【0014】
したがって、量子化インデックスIPCM(図1に示す例における15を参照)は、4つの仮数ビット「Pos」、3つの指数ビット「Seg」、および符号ビット「S」を有する浮動小数点数を図示したものであると考えることができる。
【0015】
16ビットにわたって符号化されるべきサンプルの2進表現(符号と絶対値)では、サンプルb0の最下位ビット(LSB)を記録して、指数は、位置14から8の間の第1の「1」の位置posを示し、次いで、仮数ビットが次の4ビットであり、符号ビットがビットb15である。
【0016】
したがって、位置pos=14の場合はexp=7であり、pos=13の場合はexp=6であり、以下同様で、pos=8の場合はexp=1である。
【0017】
第1の「1」が位置8の後である場合(255以下に符号化されるべきサンプルの絶対値に相当する)、指数は0である。
【0018】
「1」に設定された第1のビットがビットb10(pos=10)であり、指数expが3であり、仮数の4ビットが9から6の位置にある4ビットである、以下の表に与えられた例では:m3m2m1m0(=b9b8b7b6)である。
【0019】
【表1】
【0020】
デジタル信号のG.711タイプの符号化は、量子化器決定しきい値と比較することによって行うことができ、2分法による探索によって計算を高速化することが可能になる。しきい値との比較によるこの検索は、決定しきい値、およびそのしきい値に対応する量子化インデックスの格納を必要とする。計算においてより低コストである別の符号化ソリューションは、4ビットを右シフトすることによって4つの最下位ビットを排除して、次いでシフト値に2048を追加することで構成される。最終的に、量子化インデックスは4096エントリを含む表を単純に読み取ることによって得られるが、しかしながら、上記に提示した方法における読出し専用メモリ(ROM)よりも大きな読出し専用メモリが必要である。
【0021】
そのような表を格納することを回避するために、量子化インデックスは、複雑性の低い簡単な動作で決定することができる。G.711.1符号器の場合も同様である。少なくとも4ビットの右シフトが依然として適用される。16ビットにわたって符号化されるべきサンプルでは、最小の量子化ステップは16のままである。4つの最下位ビットは依然として失われる。
【0022】
より一般的には、「1」に設定された第1のビットに続く4ビットのみが送信される:他のビットは失われる。したがって:
- 第1のセグメント(|x|≦255, exp= 0)では、4つの最下位ビットが失われ(mant= x>>4)、また、
- 他のセグメント(2exp+7≦|x|<2exp+8, 0<exp<8)では、(3+exp)最下位ビットが失われる(mant=x>>(3+exp))。
【0023】
したがって、失われるビットの数が、最後のセグメントについて最大10ビットまでセグメント数とともに増加する(exp=7)。
【0024】
復号器で、復号化された信号が、逆PCM量子化器の出力で得られる(図1)。逆量子化が表によって実装される場合、単に256の復号化された値の表内のインデックスによるポインティングで構成されている。したがって、復号化は同じタイプの簡単な動作で行うことができる。
【0025】
μ法によるバージョンは非常に類似している。主な違いは、第1のセグメントでビット7が常に1と等しいことを保証するために、値に128を追加することである。そのような構成によって、以下のことが可能になる:
- ビット7の送信を不要にすること、
- それにもかかわらず、(第1のセグメントにおける量子化ステップが、A法による符号化では16であるのに対して、8に等しい。)第1のセグメントにおける符号化の精度を向上させること、
- すべてのセグメントを同一の方法で処理すること。
【0026】
さらに、丸め(rounding)のために4の追加(したがって、128+4=合計132)があり、したがって、量子化された値のうちのレベル「0」を生成する(A法はレベル「0」がなく、最小値は±8であるため)。
【0027】
第1のセグメントにおける、このより良い解像度の対価は、すべてのセグメントを132だけシフトすることである。A法については、復号化は、表を読み取ることによって、またはアルゴリズム的に簡単な動作のセットのいずれかによって行われる。
【0028】
PCM符号化により得られた信号対雑音比(SNR)は、信号の広いダイナミックレンジにわたってほぼ一定(約38dB)である。元の信号ドメインにおける量子化ステップは、信号の振幅に比例する。この信号対雑音比は、量子化ノイズを聞こえない状態にするのに十分ではない。さらに、微弱な信号レベル(第1のセグメント)にとって、SNRが非常に貧弱であり、さらには負である場合もある。
【0029】
G.711符号器の品質は、狭帯域の音声信号(標本化周波数8キロヘルツ)にとって良好であると見なされる。しかしながら、この品質はそれほど良好ではなく、符号化されるべき元の信号と復号化された信号との間の差分は、可聴符号化雑音で知覚可能である。いくつかのアプリケーションでは、たとえば、16キロビット/秒(したがって、1サンプルあたり2ビット)の任意の層を追加することによって、0〜4000ヘルツの帯域でPCM符号化の品質を向上できることが必要である。復号器がこの強化層を受信すると、復号化された信号の品質を向上することができる。
【0030】
「階層的」として知られているG.711符号化/復号化の原理を以下に示す。
【0031】
G.711符号化の場合、メモリの点でそれほど複雑ではなく、またそれほど高価ではないではない符号化器は、やはり複雑性が低く、メモリ要件が合理的である、階層的拡張の技法を考慮する価値がある。そのような技法(たとえば、文書US-2010/191538号に記載される)は、PCM符号化の仮数において送信されないビットを回収して、それらのビットを強化層で送信することで構成される。この層を受信する際に、復号器は、より高い精度で仮数を復号することができる。1サンプルあたりに追加される1ビットごとに6デシベルのSNRにおける増大を得ることを可能にするこの技法は、最初のPCM符号化の間に失われたビットのうちの最上位ビットを、強化ビットストリーム内に保存して、送信することで構成される。たとえば、16キロビット/秒(1サンプルあたり2ビット)における強化層の場合、この層において送信されるべきビットは、仮数の4ビットに続いて2ビットを保存するために、2つのステップにおいて右シフトを行うことによって得ることができる。
【0032】
符号器は、普通なら対数PCM符号化の限られた精度により失われるはずのビットの第1の(上位)のビットに対応するビットを拡張層において送信する。これらの拡張ビットにより、セグメント「Seg」に補足位置を追加することが可能になり、したがって最大振幅のサンプルに関する情報を強化する。復号器は、セグメント内の復号化されたサンプルを位置決めする際により高い精度を得るために、基準層ビットの後に受信された拡張ビットを連結する。復号器で、受信された拡張ビットの数に応じて、丸めた値(rounded value)が適合される。
【0033】
強化層でビットを送信するために、PCM符号化の仮数で送信されないビットを回収するこの技法は、ITU-T G.711.1符号器における低帯域の符号化を強化するために用いられる。
【0034】
ITU-T G.711.1符号器、バージョン2008は、PCM G.711符号化を拡張したものである。これは、G.711符号器との完全な相互運用が可能な、階層的な64から96キロビット/秒の符号器を含む(A法、またはμ法)。この標準は、VoIPアプリケーションの品質向上のための要件を満たす。G.711.1符号化/復号化の機能図を図2に示す。G.711.1符号器は、5ミリ秒のブロックまたはフレーム上の16キロヘルツで標本化された(すなわち、16キロヘルツで80サンプル)オーディオ信号上で動作する。入力信号S(z)は、QMF(直交ミラーフィルタ)タイプのフィルタ20によって、2つのサブバンドSB1:[0〜4キロヘルツ]とSB2:[4キロヘルツ〜8キロヘルツ]に分割される。64キロビット/秒のビットレート(G.711(L0)と互換性のある「層0」)は、上記で提示したG.711符号化と等しいPCM(モジュール21)技法による0〜4キロヘルツのサブバンドの量子化に対応し、量子化雑音の成形を有する。次の2つの層(「層1〜2」)は、それぞれ以下を符号化する:
- PCM符号化のための強化技法(ENH)(「層1」(L1)用の拡張モジュール23)を用いて、0〜4キロヘルツの低帯域、
- および、それぞれが16キロビット/秒(フレームあたり80ビット)のビットレートを有するMDCT変換符号化(「層2」(L2)のためのモジュール22)によって、4〜8キロヘルツの高域帯域。
【0035】
低帯域の強化層(「層1」)は、勧告G.711によって符号化された各サンプルに補足ビットを追加することによって、コア層(「層0」)の量子化エラーを低減することを可能にする。上記に示したように、各サンプルにさらなる仮数ビットを追加する。
【0036】
仮数への追加ビットの数は、サンプルの振幅に依存する。サンプルの仮数符号化の精度を向上させるために同じ数のビットを割り当てるのではなく、40個のサンプルの仮数符号化の精度を向上するために層1(L1)で利用可能な80ビットが動的に割り当てられ、より多くのビットが重要な指数を有するサンプルに帰属される。したがって、強化層におけるビット予算は、平均で1サンプルあたり2ビット(16ビット/秒)であるが、強化信号は1サンプルあたり3ビットの解像度を有し、この適応割当てによって、サンプルに割り当てられるビット数は指数値に応じて0から3ビットに変化する。
【0037】
以下で、G.711.1符号器の低帯域の強化層「1」(L1)の符号化/復号化がどのように動作するかを説明する。
【0038】
適応ビット割当ての符号化は2段階で行われる:
- ビット割当て表を生成する第1段階、
- それに続いて、強化信号を動的に多重化する段階。
【0039】
手順は、A法とμ法の両方に共通である。
【0040】
ビット割当て表は、40個のサンプルの指数、exp(n)を用いて生成され、n=0からn=39である。ビット割当て表自体を生成するための手順は、2つのステップを備える:
- 第1ステップで、指数マップおよび指数インデックスカウンタの表が指数から計算される、
- 第2ステップで、ビット割当て表が計算される。
【0041】
指数マップ、map(j,n)、j=0,.., 9,n=0,..,39、および指数インデックスカウンタの表cnt(j), j=0,..,9が図3を参照して以下の動作によって計算され、ステップS11は指数インデックスカウンタの表を0にリセットするステップで構成される:cnt(j)=0,j=0,…9、および40個のサンプル上のループインデックスn。
【0042】
次に、40個のサンプル(n=0,..,39にループを有する)ごとに、
(i=0,..,2上のループにおいて)
〇ステップS12は、3つの指数インデックスの計算に対応する:iexpn=exp(n)+i,i= 0, 1, 2;
〇ステップS13は、指数マップの更新に対応する:map(iexpn,cnt(iexpn))= n
〇ステップS14は、指数インデックスカウンタの表のインクリメントに対応する:cnt(iexpn)=cnt(iexpn)+1
【0043】
この手順の最後に、指数インデックスカウンタの表cnt(j)が、同じ指数インデックスを有するサンプルの数、および所与の指数インデックスを使用するサンプルのインデックスを含む指数マップを示す。
【0044】
したがって、cnt(6)は、指数インデックスとして6を有し得るサンプルの数、すなわち、6(i=0)、5(i=1)、または4(i=2)、map(6,j)、j=0、cnt(6)-1と等しい指数を有するサンプルの数であり、次いで、これらのcnt(6)サンプルのインデックスを含む。
【0045】
次いで、ビット割当て表b(n), n=0,…,39が図4を参照して以下のように計算され、ステップS21はリセットするステップで構成される:
- ビット割当て表、b(n)からゼロ:b(n)=0, n=0,…,39、
- Nbから80に割り当てられるべきビット数:Nb=80
- 最大値(ここでは、9=7+2)までの指数インデックス、iexp:iexp=9
【0046】
この第1のリセットステップの後、すべてのビットが割り当てられるまで、後続のステップS22からS25が反復される:
S22:割り当てられるべきビット数Nbと指数インデックスカウンタcnt(iexp)とを比較して、2つのうちの小さい方:min(cnt(iexp),Nb)を決定する、
S23:min(cnt(iexp),Nb)第1サンプルのビット割当てを、指数マップ内の指数インデックスiexpに対応するインデックスで1だけインクリメントする:
b(n)=b(n)+1、すべてのn=map(iexp j),j=0,…,min(cnt(iexp),Nb)-1、
S24:割り当てられるべきビット数を更新する:
Nb=Nb-min(cnt(iexp),Nb)、
S25:すべてのビットが割り当てられたかどうかを確認するためにテストする(Nb=0)。
Nb>0の場合、指数インデックスを1だけデクリメントして:iexp=iexp-1、ステップS22に行くことによって次の反復にパスする。
Nb>0ではない場合(Nb=0:すべてのビットが割り当てられている)、ビット割当て表の計算が終了する。
【0047】
これらの手順は、文書EP-2187387号およびEP-2202728号に具体的に記載されている。
【0048】
ビット割当て表b(n),n=0,…,39は、サンプルごとに強化層内の最上位ビットの数を与える。したがって、強化コードが抽出されて、次いで拡張層のビットストリームで連続的に多重化される。ここでは、固定ビット割当てを有するG711階層符号器における2ビットだけではなく、仮数の3ビットに続いて4ビットが保存される。次いで、適応ビット割当て表の計算後、bの最上位ビットだけを保持しながら、b-bit拡張信号(b=0,1,2または3)が抽出される。このため、割り当てられたビットの数bに応じて、3-bビットの右シフトが行われる。
【0049】
固定されたビット割当てで強化信号を多重化することと比較して、適応ビット割当てで多重化することはより複雑である。ところが、1サンプルあたり2つの強化ビットを有する固定ビット割当ての場合、8ビットのバイトにおけるこの強化層のビットストリームの構成は単純であり、これは動的割当ての場合には当てはまらない。
【0050】
1サンプルあたり2ビットの固定割当てがある場合、強化層の10バイトの各々は4つの連続したサンプルの2つの強化ビットで構成される。したがって、第1のバイトの8ビット(b7b6b5b4b3b2b1b0)は以下の通りである:
- サンプル0の2つの強化ビット(b7b6)、
- それに続いて、サンプル1の2つの強化ビット(b5b4)、
- 次いで、サンプル2の2つの強化ビット(b3b2)、
- 最後に、サンプル3の2つの強化ビット(b1b0)。
【0051】
より一般的には、i番目(ith)のバイト(i=0,…9)の8ビット(b7b6b5b4b3b2b1b0)は、以下の通りである:
- サンプル4iの2つの強化ビット(b7b6)、
- それに続いて、サンプル4i+1の2つの強化ビット(b5b4)、
- 次いで、サンプル4i+2の2つの強化ビット(b3b2)、
- 最後に、サンプル4i+3の2つの強化ビット(b1b0)。
【0052】
復号化する際、ビット割当て表は、上述したものと同じ原理によって再構築され、指数値が符号器および復号器にとって利用可能である。次いで、ビット割当て表を使用する強化層のビットストリームから強化信号が再構築される。
【0053】
しかしながら、G.711.1符号器の低帯域強化層の現在の符号化/復号化には、固有のデメリットがある。
【0054】
固定割当て(典型的には、1サンプルあたり2ビット)と比較すると、動的ビット割当てによって、符号化されるべきサンプルの振幅に応じていくつかの強化ビットを割り当てることが可能になる。しかしながら、この適応割当ては、固定割当てよりも著しく複雑である。この適応割当ては、より多くのランダムアクセスメモリ、およびより多くの計算を必要とし、読出し専用メモリに格納されるべき命令の数を考慮しない。
【0055】
たとえば、40個のサンプルに80ビットが割り当てられ、割り当てられるビットの数が0から3ビットに変化するG.711.1コーデックの場合、動的ビット割当ては、固定ビット割当てと比較すると、以下の表を格納することを必要とする:
- ビット割当て表:16ビットの40ワード
- 指数マップ表:16ビットの400(=10×40)ワード
- 指数カウンタ表:16ビットの10ワード
【0056】
したがって、G.711.1の場合の固定割当てと比較すると、動的割当ては約450ワードのメモリを必要とする。
【0057】
計算の複雑性に関して、指数マップおよび関連する指数カウンタ表の計算、ならびに動的ビット割当ての反復手順は、複雑なアドレッシング、多数のメモリアクセスおよびテストを必要とする。
【0058】
指数カウンタ表の最初のリセットは、たとえば10のメモリアクセスを必要とし、次いで、以下のように40個のサンプルにループが実行される:
a)サンプルnの指数であるiexpnを得るためにメモリアクセスする
b)map(iexpn,0)のアドレスadr_mapを指すために、指数マップ内でアドレッシングする
c)cnt(iexpn)のアドレスadr_cntを指すために、カウンタ表内でアドレッシングする:adr_cnt=cnt+iexpn
d)次いで、3つのインデックスにループが実行される(i=0,1,2)
i.アドレスadr_cntでメモリに格納された値を読み出す(メモリアクセスする):*adr_cnt
ii.map(iexpn, *adr_cnt)のアドレスadr_mapiを指すために、指数マップ内でアドレッシングする:adr_mapi=adr_map+*adr_cnt
iii.このアドレスnで書き込む(格納する):*adr_mapi=n
iv.アドレスadr_cntに含まれる指数カウンタの値を1だけインクリメントする:*adr_cnt=*adr_cnt+1
v.アドレスadr_cntを1だけインクリメントする:adr_cnt++
vi.アドレスadr_mapを40だけインクリメントする: adr_map=adr_map+40
【0059】
動作a)、b)、c)、およびd)は40回実行され、内部ループd)内の動作(動作iからvi)は120回(=40×3)実行される。
【0060】
通常のアドレッシングの複雑性(動作vおよびviのように一定にインクリメントする)は無視できると考えられるが、これはある種のあまり一般的ではないアドレッシング動作の場合には当てはまらない。表cnt内のアドレッシングはそれほどコストがかからないが(ステップcの追加)、指数マップ表内のアドレッシングは比較的複雑である。
【0061】
具体的には、2次元表(10および40)内の要素マップ(j,n)のアドレスを指すことは、40j+nの計算を必要とする。nの追加が「1」の意味を有する場合、40を掛けると「3」のコストがかかる。このアドレッシングのコストを削減するために、一部のアドレスを格納することが可能であるが、それにはランダムアクセスメモリのサイズを増大させることが必要である。
【0062】
ビット割当て表の計算も複雑であり、ビット割当て表をゼロに、また割り当てられるべきビットの数を80にリセットするステップは41のメモリアクセスを必要とする。指数カウンタ表内および指数マップ内のアドレッシングも、それぞれcnt(9)のadr_cnt、およびmap(9,0)のadr_map(adr_cnt=cnt+9,adr_map=map+40*9)のアドレスを指すためにリセットされる。
【0063】
次いで、10の指数インデックス値上のループ(9から0にデクリメントするiexp)が、以下の動作を実行する:
e)割り当てられるべき残りのビットの数Nbが、指数カウンタの現在の値*adr_cnt(=cnt(iexp))よりも小さいかどうかを決定するためにテストする。
・指数カウンタの現在の値よりも小さい場合、変数Nbが変数bit_cntに格納される;
・指数カウンタの現在の値以上の場合、格納されるのは値*adr_cntである。
この格納はメモリアクセスとしてカウントされる。
f)map(iexp,0)のアドレスadr_mapiを指すために、指数マップ内のアドレッシングをリセットする:adr_mapi=adr_map
g)次いで、bit_cntの第1のサンプルの各々のビット割当てを1ビットだけインクリメントするために、bit_cntインデックス(i=0,1,bit_cnt-1)上のループが実行され、そのインデックスがマップmap(iexp,0)からマップ(iexp,bit_cnt-1)に格納される。この内部ループでは、以下の動作が実行される:
・アドレスadr_mapi(すなわち、要素map(iexp,i)のアドレス)でメモリに格納されたサンプルのインデックスnを読み出す(メモリアクセス):n= *adr_mapi
・要素b(n)のアドレスadr_bを指すために、ビット割当て表内でアドレッシングする:adr_b=b+n
・サンプルnのビット割当てを1(追加)だけインクリメントして、インクリメントされた値を格納する(メモリアクセス):*adr_b=*adr_b+1(b(n)=b(n)+1)
・指数マップ内のアドレスを1だけインクリメントする:adr_mapi++(現在adr_mapiは要素map(iexp,i+1)のアドレスを指している)
h)割り当てられるべき残りのビット数を更新する(減算):Nb=Nb-bit_cnt
i)すべてのビットが割り当てられたかどうかを決定するためにテストする:
・すべてのビットが割り当てられた場合(Nb=0)、iexp上のループを出る:ビット割当てが終了する
・すべてのビットが割り当てられていない場合(Nb>0)、要素map(iexp-1,0)のアドレスを指して、次の指数(iexp=iexp-1)のためにステップe)からi)を実行するために、アドレスadr_mapを40だけデクリメントする:adr_map=adr_map-40
【0064】
外部ループが実行される回数(動作eからi)は、指数マップ(また、符号化されるべきサンプルの指数の分散)に依存する。この数の変動性により、ループがより複雑になる。ループに入る前にループの反復の数が知られていない場合、各反復の最後にテストを実行する必要がある(ステップi)。内部ループ動作が行われる回数は、割り当てられるべきビットの総数と等しい(G.711.1の場合は80)。具体的には、これらの動作は依然として1度に1ビットを割り当てることで構成される。
【0065】
多重化に関して、上述したように、適応ビット割当てがある場合、ビットストリーム内の強化層のビットの多重化は、固定ビット割当てよりもはるかに複雑である。
【0066】
動的割当てがある場合、ビットストリームの構成は一般的ではない。バイトを構成するビットのサンプルの数は変化し、1つの強化ビットおよび同じサンプルは異なるバイトでよい。固定多重化と比較すると、適応多重化ははるかに複雑であり、上記の例では40個のループテスト(「IF」タイプ)、および80個の補足加算/減算を必要とする。10バイトの最後の構成も、20個の減算および20個のビットオフセットを必要とする。
【先行技術文献】
【特許文献】
【0067】
【特許文献1】US-2010/191538号
【特許文献2】EP-2187387号
【特許文献3】EP-2202728号
【非特許文献】
【0068】
【非特許文献1】ITU-T勧告G.711
【非特許文献2】ITU-T勧告G.711.1
【非特許文献3】ITU-T勧告G.191
【発明の概要】
【発明が解決しようとする課題】
【0069】
したがって、動的ビット割当てで階層的拡張を導入することによってG.711符号化技法の品質面が向上したが、この動的割当ては多数の動作とはるかに多くのメモリを必要とする。G.711への階層的拡張のITU-T標準化の目的は、低複雑性を達成することである。
【課題を解決するための手段】
【0070】
本発明は、状況を改善する。
【0071】
本発明は、この目的のために、デジタルオーディオ信号強化層を符号化/復号化するステップを備える、階層符号化/復号化におけるビット割当て方法を提案する。デジタルオーディオ信号はL個のサンプルの連続を備え、各サンプルは仮数および指数の形式で提示される。本方法は、具体的には、最大指数値を有するL個のサンプルのうちの少なくともいくつかへのあらかじめ定められた数Nbの強化ビットの割当てを備える。
【0072】
本方法は以下のステップを備える:
a)それぞれが所与の値を有するL個のサンプルの指数を列挙するステップと、
b)利用可能なさらなる強化ビットがもうないサンプルの最大指数(以下では「iexp0」と示す)のしきい値を決定するために、あらかじめ定められた数Nbが上記から近似されるまで指数値を減少させることによって、指数の列挙の少なくとも1つの累積値を計算するステップ。
【0073】
次いで、選択されたルールによって、指数がしきい値iexp0よりも大きいサンプルへのNb強化ビットの実際の割当てが行われ得る。
【0074】
以下で図面を参照して説明する実施形態の例に見られるように、割当てに利用可能なビットの数のデクリメントによる変数iexp0のこの決定によって、上記で提示した従来技術と比較して、ビット割当ての計算の複雑性を大幅に制限することが可能になる。
【0075】
ある実施形態では、上述の選択されたルールによれば、サンプルに割り当てられるべき最大数Naのビットを提供することができ、以下が保持される:
- 指数がしきい値iexp0と最大数Naの合計よりも大きい各サンプルに割り当てるためのNaビットと、
- 指数が前記しきい値iexp0以下である、サンプルのためのnoビットと、
- 指数が、しきい値iexp0+1と、しきい値および最大数Naの合計との間で構成される、サンプルに割り当てるためのビットの数Nbのうちのいくつかの追加ビット。
【0076】
これは、サンプルの指数値に基づいて、高度なビット割当てを提供する。
【0077】
特定の実施形態では、しきい値+1と、しきい値および最大数Naの合計との間で構成される指数を各サンプルに割り当てることが決定され得る:
・サンプルの指数としきい値iexp0との間の差分、
・または、たとえばサンプルの連続の中のサンプルの位置順序などの、選択された基準に応じて、この差分は1未満。
【0078】
それにもかかわらず、サンプルのこのカテゴリでは、割当ての変形形態が可能である(たとえば、サンプルの近傍、または他の任意の基準を考慮して)。
【0079】
たとえば、指数が[iexp0+1,iexp0+Na]の範囲内にある第1のサンプルを好適とするのではなく、最大指数を有するサンプルを好適とすることも可能である。
【0080】
番号Naがあらかじめ定められている場合、指数が厳密にiexp0+Nよりも大きいサンプルが最終的にNaビットを受信できると考えられ得る。
【0081】
しかしながら、例示的実施形態では、数Naを事前に前もって定義することはできない。たとえば、数Naは、上記のステップb)の最後(本質的に、累積の最後)にのみ決定することができ、次いで、ステップb)の実装によって、単にこの数Naを知ることが可能になる。実際に、割当てが数Nbを超えていないことを確認するために、数Naに対する制約を提供することは必ずしも可能ではない。
【0082】
一般的に、次いで、追加ビットの数が割り当てられるべきビットの総数Nbに最終的に対応し、指数が厳密にiexp0+Nよりも大きいサンプルに割り当てられるビット数がより少ない(そのようなサンプルの数はゼロでよい)ことが理解される。一方、この割当てが数Nbを超えないことを保証することを可能にするのは、上述のしきい値iexp0の決定である。したがって、指数がiexp0+Naよりも大きいすべてのサンプルへのNaビットの割当ては、割り当てられるビット数Nbを超えることを回避するようにしきい値iexp0が計算されるので、割当てを「オーバーフロー」させない。
【0083】
ある実施形態では、ステップb)は、たとえば以下を備え得る:
b1)L個のサンプルのうちの最大指数値(以下では「iexpmax」と示す)の決定、
b2)最大指数値から、Na回デクリメントされた最大値への指数の数の累積、および、
b3)以下のような条件付きループ:
・累積が、L個のサンプルに割り当てられるべきビットNbの総数よりも少ないままの場合、この累積が、最大指数値を1だけデクリメントすることとともに動作b2)の実装によって計算された新しい累積に追加され、そのようなデクリメントの結果が、動作b2)から得られる前記累積が数Nbよりも少ないままである限り、動作b2)のループ反復とともに、動作b2)の実装のために最大指数値として考えられる。
・累積がL個のサンプルに割り当てられるべきビットNbの総数よりも少ないままではない場合、指数が、しきい値+1と、しきい値および最大数Naの合計との間で構成される、サンプルの数(L'')を決定するために、動作b2)の直前の反復のままである追加ビットの数が計算される。
【0084】
ある実施形態では、L個のサンプルへのビット割当ては、2つのループの実行によって実行され得る:
- しきい値+1と、しきい値と最大数Naの合計との間の指数を有するサンプルへのビット割当てが実行されるまでの第1のループであって、第1のループの反復の数がカウントされる第1のループと、
- 次いで、最後の残りのサンプルのビット割当てを実行するための第2のループであって、第1のループの反復の前記数の関数である数回反復される第2のループ。
【0085】
ある実施形態では、ステップa)で指数カウンタの表を確立することができ、表内のアドレスポインタが、ステップb)の実装のために、条件付きループ内で有利にデクリメントされる。
【0086】
したがって、L個のサンプルのうちの最大指数値(iexpmax)の決定は、上述の表を読み出すことによって効率的に実行され得る。
【0087】
具体的には、符号化では、本方法は従来強化層の符号化から得られる強調信号のビットストリームの構成を備え得る。以下の添付書類2に提示し論じる実施形態では、この構成は、各サンプルのビット割当ての後、オンザフライで有利に実行される。
【0088】
添付書類1に提示する実施形態による変形形態(以下では、「第1の実施形態」と呼ばれる)では、ビット割当てデータがまず表に格納され、ビットストリームの構成は、この表に基づいて行われる。
【0089】
本方法は、ITU-T勧告G.711.1による、タイプAまたはタイプμの対数振幅圧縮符号化法によるPCM(パルス符号変調)型量子化によって、符号化/復号化に有利に適用される。
【0090】
本発明は、複数の端末間で電話会議を行うために、ブリッジアーキテクチャ内の着信ビットストリーム、具体的にはオーディオを、少なくとも部分的に復号化、混合、および少なくとも部分的に再符号化することによって信号処理をするための、有利な(しかし、もちろん非限定的な)アプリケーションを有する。そのようなアプリケーションでは、以下に見られるように、具体的には第2の実施形態の実装が有利である。
【0091】
本発明は、プロセッサによって実行されるときに上記の方法を実装するための命令を備えるコンピュータプログラムの実行を通じて実装することができ、これに関して、本発明はそのようなプログラムに関し、そのフローチャートの例が以下に記述する図5から図9に示されている。
【0092】
図11に参考のために示されるように、本発明は、デジタルオーディオ信号の階層符号化における強化層を符号化するための、また本発明および/または上述の適用の意味の範囲内の、符号化方法を実装するためのコンピュータ化された手段(典型的には、プロセッサPROCおよびメモリMEMなど)を備える、デバイスCODにも関する。
【0093】
また、本発明は、デジタルオーディオ信号の階層復号化における強化層を復号化するための、また本発明および/または上述の適用の意味の範囲内の、復号化方法を実装するためのコンピュータ化された手段(典型的には、プロセッサPROC'およびメモリMEM'など)を備える、デバイスDECに関する。復号器および上述の符号器は、チャネルCによってリンクされ得る。
【0094】
したがって、本発明は、動的ビット割当てを有する階層的拡張技法に基づいて、得られた品質を保持しながら、ランダムアクセスメモリ、および計算の数を減少させるために使用され得る。具体的には、添付書類1に提示した実施形態では、得られた信号は、どの時点においても、最新技術の信号と互換性がある。その結果は、実装を容易にして(メモリおよび処理能力を節約する)、その結果としてコストを抑える。本発明は、特に電話会議システムで符号化する際に非常に便利である。
【0095】
1ビットずつビット割当てを実行する代わりに、本発明は、サンプルごとに、それに割り当てられるべき強化ビットの総数をその指数に応じて直接決定する。有利なことに、本発明は指数マップを使用しないので、ランダムアクセスメモリを減少させ、多数のメモリアクセスと複雑なアドレッシング動作を除去する。本発明は、L個のサンプルの指数の最大指数iexpmax、および強化ビットを受信しないサンプルの最大指数iexp0を決定する。次いで、これら2つの指数から、各サンプルに割り当てられるべきビットの総数が計算される。
【0096】
ある実施形態では、本発明の適用によって、従来技術のG.711.1符号化/復号化で最初に使用される1ビットずつの反復手順と同じ動的ビット割当てを実行することが可能になる。
【0097】
本発明の他の利点および特徴は、図面を参照して、以下に提示する実施形態の例の説明を読めば明らかになるだろう。
【図面の簡単な説明】
【0098】
図1】本発明の文脈の符号器11および復号器14を有する、本方法を実装するためのシステムの一般的な例を示す図である。
図2】本発明を実装するための階層符号器の構造の詳細を図式的に示す図である。
図3】従来技術の意味の範囲内の、指数マップおよび指数インデックスカウンタ表の計算を示す図である。
図4】従来技術の意味の範囲内の、ビット割当て表の計算を示す図である。
図5】本発明の実施形態による第1のステップにおける、指数カウンタ表を構築するための例示的流れ図である。
図6】本発明の意味の範囲内の次の一般的ステップによる、指数カウンタの累積を計算するための例示的流れ図である。
図7】強化ビットを受信しないサンプルの最大指数に対応する変数iexp0を計算するための例示的流れ図である。
図8A】ある実施形態による、ビット割当て手順の例示的流れ図である。
図8B】変形実施形態による、ビット割当て手順の例示的流れ図である。
図9】フレームのL個のサンプルに割り当てられるべきビットを列挙するための、例示的な一般的流れ図の概要を示す図である。
図10】複数の端末間の電話会議ブリッジへの本発明の適用の概略を示す図である。
図11】本発明を実装するための符号化/復号化タイプのシステムを示す図である。
【発明を実施するための形態】
【0099】
本発明の可能な用途は、階層符号化における強化層の符号化に関する。この階層符号化は、デジタル信号S(図2参照)のL個のサンプルの連続の振幅圧縮法による、量子化による基準層の符号化を備える。サンプルは、量子化インデックス(IMIC)の第1のビットブロックを得るために、指数ビットおよび仮数ビットを備えるあらかじめ定められた数のビットにわたって符号化され、あらかじめ定められた数の最下位仮数ビットは第1のブロックに考慮されない。具体的には、強化層の符号化は、第1のブロックでは考慮されないビットのうちの最上位ビットを第2のビットブロック内に保持して、したがってこの第2のブロック内で、上述のL個のサンプルのうちの少なくともいくつかについての追加の仮数情報を伝えることになる。強化層の符号化は、典型的に、L個のサンプルの各々の指数に応じて、L個のサンプルのうちのこれらのサンプルについての追加の仮数情報を強化層に提供するために、ビット数の計算およびこれらのサンプルへの割当てを備える。
【0100】
したがって、説明した例では、階層符号化(図2のモジュール23によって実行される)の強化層(層「1」(L1))内のサンプルの符号化を拡張するために、L個のサンプルの指数値に応じて、Nb追加ビットのすべてをL個のサンプルの最大に割り当てることが求められる。
【0101】
次の表記が以下で使用される:
- Na サンプルに割り当てられるべき追加ビットの最大数、
- Ne 指数値の総数、および、
- exp[L] L個のサンプルの指数を含む表。
【0102】
ビット割当ては、L個のサンプルの指数exp(n)を使用して生成され、n=0,…,L-1(0≦exp(n)<Ne)である。
【0103】
第1の段階では指数が列挙されており、次いで第2の段階でL個のサンプルのビット割当てが計算される。
【0104】
より具体的には、以下の実施形態では、上述の第1の段階において、
- 所与の値を有する指数の数がカウントされ、
- これらのカウンタが表cnt0[Ne]に格納され(以下で説明するステップA)からC)によって)に格納され、
- 次いで、指数カウンタの累積の表cnt_cum[Ne+Na-1]が計算される。
【0105】
強化層符号化方法の一般的なステップが図9で例示的実施形態において示されている。第1の一般的なステップGEN-1で、指数カウンタcnt0の表が構築される。図示された例では、元の信号S(z)のブロック(またはフレーム)のL個のサンプル上にある(たとえば、L=40)。
- 0に設定された指数を有するサンプルの数は:10、
- 1に設定された指数を有するサンプルの数は:8、
- 2に設定された指数を有するサンプルの数は:8、
- 3に設定された指数を有するサンプルの数は:6、
- など、
- さらなるサンプルがもう残っていない指数値(iexpmax+1)に達するまで。
【0106】
したがって、注釈付きの指数値iexpmaxは、指数値iexpmaxを有する少なくとも1つのサンプルが依然としてある最大指数値である。
【0107】
もちろん、これらの数の合計は、フレーム内のサンプルの数Lと等しい。
【0108】
Naは、サンプルに割り当てられ得る追加ビットの最大数を示すために使用される(たとえば、Na=3)。次いで、値iexp0の検索が行われ、強化ビットを受信しないサンプルの最大指数として定義され、次いでiexp0以下の指数を有するサンプルのビット割当ては0ビットである。
【0109】
したがって、第2の一般的なステップGEN-2で、合計で割り当てられるべきNbビットのうちで、指数がiexpmaxとiexpmax-Na+1との間で構成される、将来のサンプルへの割当てのために保存されるべきビット数の推定が行われる(これらのサンプルのうちの1つは、Na強化ビットの最大だけを割り当てられ得ることを念頭に置いて)。
【0110】
次に、問題の指数値がデクリメントされて、iexpmax-1とiexpmax-Naとの間で構成される指数を有するサンプルに割り当てられるために残っている、ステップGEN-2の第1のインクリメント後に残っているビットのうちでビット数の推定が行われる。ここでも、もちろん、上述の第1のインクリメント後に、残っている十分なビットをNb'の追加ビットに割り当てることができる場合、各サンプルにNa強化ビットの最大を続いて割り当てることができる。
【0111】
このデクリメントは、サンプルの母集団が、iexp0とiexp0+Na-1との間で構成される、および残っているビット数Nb'が、これらのサンプルの各々へのNaビットの最大の割当てを満たすためにもう十分ではない指数に達するまで継続される。したがって、図9の数L'は、上述のデクリメントからかけ離れている一実装形態についてカウントされるビット数を表している。この数L'は、指数がiexp0とiexp0+Na-1との間で構成され、1サンプルあたり(exp(n)-iexp0)ビットの割当てが保証されない指数の累積cnt_cum[iexp0+Na-1]によって与えられる、サンプルの数にも対応する。これらのL'個のサンプルのうち、数L''は、1サンプルあたり(exp(n)-iexp0)ビットの割当てが可能であるサンプルに関連する。
【0112】
したがって、指数がiexp0+Naよりも大きいサンプルは、後続のビット割当てステップGEN-3の間にそれぞれNaビットに割り当てられるが、指数exp(n)が[iexp0+1,iexp0+Na]の範囲内で構成されるサンプルには、割当てはexp(n)-iexp0(L''サンプルについて)、またはexp(n)-iexp0-1(L'-L''の残っているサンプルについて)である。上述のように、サンプルのこのカテゴリには、割当ての変形形態が可能である。特定の実施形態では、割当ては単純にそれらがLサンプルのフレーム内に「出現する」順序によって行われる。これらの残りのサンプルのうち最初に処理されたサンプルが、次いで、強化ビットの割当ての間に最初に提供される。最後に、指数がしきい値iexp0以下であるサンプルは、どの補足ビットからも恩恵を受けない。
【0113】
したがって、第1の一般的なステップGEN-1は、以下で、図5を参照して例示的実施形態として詳細に説明するように、指数カウンタ表を構築するステップで構成される。
【0114】
指数cnt0の表は、まずゼロにリセットされる(Neメモリアクセスを有する):cnt0[iexp]=0であり、0≦iexp<Neである。
【0115】
指数の表内のポインタadr_expも、exp(0)のアドレスにリセットされる: adr_exp=exp。
【0116】
次いで、L個のサンプル(0≦n<L)上のループ内で、以下の動作が実行される:
A)サンプルnの指数iexpnを得るためのメモリアクセス(および、次のサンプルの指数のアドレスを指すために、ポインタadr_expを1だけインクリメントする):iexpn=*adr_exp++
B)cnt0(iexpn)のアドレスadr_cntを指すために、カウンタの表内でアドレッシングする:adr_cnt=cnt0+iexpn
C)アドレスadr_cntに含まれる指数カウンタ値を1(追加)だけインクリメントする:*adr_cnt=*adr_cnt+1
【0117】
動作A)、B)、C)はL回実行される。上述の従来技術の方法と比較して、内部ループもコストのかかる2次元表のアドレッシングもない。
【0118】
一旦、表cnt0が計算されると、指数カウンタの累積の表cnt_cum[Ne+Na-1]が計算される。
【0119】
【数1】
【0120】
この式は、実際には和の限界に応じて3つのケースに分解される:
【0121】
【数2】
【0122】
3つのケースに対応する3つのループが実行され得る。しかしながら、命令の数(プログラムメモリPROMに格納されるべき)を制限して、それによって合理的なプログラムメモリサイズを有することを可能にする有利な変形形態では、サイズNe+2Naの指数カウンタの表cnt0_aを有することが好ましい場合がある(したがって、2Naワードだけ増加する)。次いで、ゼロにリセットするステップは、2Na補助メモリアクセス、およびアドレスcnt0_a+Naを指すポインタcnt0の定義を備える。ステップA)からC)は同じままである。わずかにサイズが増加するこの表がある場合、指数カウンタの累積表の計算は以下のように表され得る。
- 指数カウンタの表上のポインタadr_cnt0がcnt0(=cnt0_a++Na)にリセットされ、cnt0(0)のアドレスに設定され(cnt0(0)、次いで、指数として0を有するサンプルの数である)、および、
- 第2のポインタadr_cnt_cumが、cnt_cum(0)のアドレス(adr_cnt_cum=cnt_cum)にリセットされる。
【0123】
次いで、Ne+Na累積上のループ内で(0≦j<Ne+Na-1)、図6を参照して以下の動作が実行される:
D)表cnt0_a上の第2のポインタadr_cntをリセットする: adr_cnt=cnt0
E)変数cumをゼロにリセットする:cum=0
F)Naカウンタ(0≦i<Na)を累積するためにループする:
- このループの各反復で、現在のアドレスadr_cntのカウンタの値が変数cumに追加され、次いでアドレスadr_cntが1だけデクリメントされる: cum=cum+*adr_cnt-。
G)内部ループF)の出力で、変数cumがアドレスadr_cnt_cumで格納されて、2つのポインタadr_cnt_cumおよびcnt0が1だけ後置インクリメントされる:
- *adr_cnt_cum++=cumおよびcnt0++。
【0124】
変形形態は、累計のこの表を効率的に計算するために提供され得る。
【0125】
たとえば、変数cumをゼロにリセットして内部ループF)をNa回実行するよりも、ステップE)で、アドレスadr_cntでカウンタの値で変数cumをリセットして、続いてこのポインタを1だけデクリメントすることによって、1回少なく(0≦i<Na-1)実行することができる: cum=*adr_cnt--。
【0126】
同様に、2つのループを実行することによって、Naの第1累積の計算を、最後のNeから分離することが可能である。
- 変数cumを0にリセットして、次いで、Na反復(0≦j<Na)にわたって、現在のアドレスcnt0で変数cumにカウンタの値を追加して、アドレスadr_cnt_cumで変数cumを格納して、2つのポインタadr_cnt_cumおよびcnt0が両方とも1だけ後置インクリメントされる:cum+=*cnt0++および*adr_cnt_cum++=cum、
- 最初のポインタadr_cnt_cumおよびcnt0が第1のループ(0≦j<Na)の出力で得られたものである、ステップD)およびG)で説明したループと類似した第2のループ(j上、Na≦j<Ne+Na-1で)。
【0127】
この変形形態では、より少数の計算がカウントされ、表cnt0_aのサイズは(Ne+Na)であり、次いで、Naワードによる減少に対応する(ポインタcnt0、次いでcnt0_aの第1の要素のアドレスにリセットされる:cnt0=cnt0_a)が、プログラムメモリは、第1のループの命令によって増加する。
【0128】
累積表は循環関係によって構築することもでき、カウンタを減算して、以前の反復で計算された累積にカウンタを追加することによって得られる現在の反復における累積は次の通りである:
cnt_cum[j+1]=cnt_cum[j]-cnt0[j-Na]+cnt0[j+1]
【0129】
複雑さ、ランダムアクセスメモリのサイズ、およびプログラムメモリサイズとの間に求められる妥協によって、異なる変形形態を組み合わせることが可能であることが理解されよう。
【0130】
たとえば、累積の表を計算して、累積をゼロではなく値cnt0(0)にリセットするために、2つの別々のループの変形形態を組み合わせて、循環関係を使用することが可能である。この場合、第1のNa累積にわたる第1のループの出力の変数cumが、第2の累積計算ループ内の循環関係の第1の反復を計算するために使用される。
【0131】
本発明による技法によって得られる指数カウンタ累積表は、従来技術の指数インデックスカウンタ表に対応するが、その計算は、コストがかかる(メモリおよび複雑性の両方でコストがかかる)指数インデックスマップを必要としない。
【0132】
次に、ビット割当て表の計算を説明する。
【0133】
コストがかかるビットごとのビット割当てを回避するために、サンプルに割り当てられるビットの総数が一度に割り当てられる。このビット数は、サンプルの指数、L個のサンプルの指数の最大指数(iexpmax)、および強化ビットを受信しないサンプルの最大指数iexp0の関数として決定される。iexp0以下の指数を有するサンプルのビット割当ては0ビットであることを念頭に置かれたい(図9のステップGEN-2を参照して上記で説明したように)。
【0134】
したがって、最初の2つのステップは、これらの2つの指数iexpmaxおよびiexp0を発見することで構成される。
【0135】
L個のサンプルの指数のうちの最大指数iexpmaxを発見するために、サンプルのL個の指数にループを実行して最大指数を決定することができる。
【0136】
例示的手順として、ITU-T勧告G.191(「スピーチおよびオーディオ符号化標準のためのソフトウェアツール」、2010年3月)による基本的なオペレータ命令を使用する擬似コードを挙げることができ、そのような命令は以下の表に記述されている:
【0137】
【数3】
【0138】
したがって、たとえば「FOR」命令は、ここではL回実行されるループに対応し、回数はループに入る前に知られている。この命令は、ループ全体について「4」の重みの複雑性を有する。一方、「WHILE」命令は、条件付きループ(ループに入る前に回数が知られていない)に対応し、命令は、ループの各反復で「4」の重みの複雑性を有する。次いで、上記の擬似コード中の「FOR」命令を使用することがより有利であることが理解されるであろう。
【0139】
同様に、上記の擬似コードで、「if」命令(小文字)が、単一のベースを有する単独のオペレータに続く一意のテストに対応する。この場合、そのようなテストのコストは無視できる。いくつかの命令または複雑な動作(関数呼出しなど)が条件付きでテストの下流に実行され、具体的には「IF」のテストの場合は無視できない。「IF」命令(大文字)は、典型的に「4」の重みを有する。さらに、このテストが確認されない場合(テストの出力での「if not」ブランチ)、命令が下流で実行されなければならない。この場合に対応する「ELSE」命令は、典型的に「4」の重みを有する。以下の表は、いくつかのタイプの命令について、それらの複雑性重みを要約している。
【0140】
【表2】
【0141】
有利なことに、指数の数Neは一般的にサンプルLの数よりも小さく、最後の非ゼロ要素のカウンタ表cnt0[Ne]内で見ることが望ましい。図7を参照すると、ステップS51に進んで、変数iexpmaxを(Ne-1)に、およびポインタadr_cntを要素cnt0[Ne-1]のアドレスにリセットする:
iexpmax=Ne-1;adr_cnt=cnt0+Ne-1;
【0142】
次に、表cnt0[Ne]内の条件付きの検索ループが実行され、アドレスadr_cntでカウンタの値のテスト、続いてこのポインタの後置デクリメントが行われる(ステップS52):
- テストされた値がゼロの場合、iexpmaxを1だけデクリメントし(ステップS53)、次の反復に渡す、
- テストされた値がゼロではない場合、ループの出力の値iexpmaxは、L個のサンプルのすべての指数のうちの最大指数である(ステップS54)。
【0143】
対応する擬似コードは:
WHILE(*adr_cnt--==0)iexpmax=sub(iexpmax,1)である。
【0144】
次のステップは、強化ビット(0ビット)を受信していないサンプルの最大指数iexp0を探すことで構成される。これを行うために、指数iexpmax-1と等しい指数iexp0から開始して(ステップS55)、cnt_cum[iexpmax+Na-1]のアドレスにリセットされた指数カウンタ累積表上のポインタから(ステップS56)、および割り当てられるべき残りの、「Nb-cnt_cum[iexpmax+Na-1]」と等しいビット数N'bから(ステップS57)、テストN'bで条件付きループが実行される:N'bが厳密に正である(テストS58でN'b>0)限り、ループが反復され、N'bがcnt_cum[iexp0+Na-1]だけデクリメントされて(ステップS59)、次いでiexp0が1だけデクリメントされる(ステップS60)。以下の擬似コードは、図7の表示による手順の例を与える:
【0145】
【数4】
【0146】
したがって、各反復で、adr_cumは、指数iexp0+iを有し、i=0,…,Na-1であるサンプルの数を与えるcnt_cum[iexp0+Na-1]のアドレスを指す。
【0147】
したがって、リセットされた、L個のサンプルの最大指数であるiexpmax、adr_cumがアドレスcnt_cum[iexpmax+Na-1]を指すことは、指数iexpmaxを有するサンプルの数を与える(指数iexpmax+1、iexpmax+2、iexpmax+Na-1を有するサンプルがないので)。
【0148】
次いで、最初の反復で、adr_cumが、iexpmaxまたは(iexpmax-1)のいずれかの指数を有するサンプルの数を与えるcnt_cum[(iexpmax+Na-2)]のアドレスを指す
【0149】
最後の反復で(ステップS61で、この条件付きループの出力で)、指数iexp0が、サンプルが0ビットを受信する最大指数である(したがって、指数がiexp0以下であるサンプルに割り当てられるビットはない)。
【0150】
iexp0は負であってよく、その場合、すべてのサンプルが少なくとも1つのビットに割り当てられる点に留意されたい。
【0151】
次いで、サンプルごとのビット割当ては、その指数と数iexp0との間の差分に依存する。指数がiexp0+1と等しいサンプルは、割り当てられるべき残りのビット数に応じて1ビットまたは0ビットを受信する。
【0152】
より一般的には、指数がiexp0+i,1≦i≦Naと等しいサンプルはiまたは(i-1)ビットを受信し、指数が厳密にiexp0+Naよりも大きいサンプルはNaビットを受信する。
【0153】
指数がexp(n)であるサンプルは、[iexp0+1, iexp0+Na]の範囲内で構成され、割当てはexp(n)-iexp0またはexp(n)-iexp0-1でよい。指数がこの範囲内であるサンプルの数は、指数cnt_cum[iexp0+Na-1]の累積によって与えられ、最終的に、図9を参照して上記に提示した数L'に対応し、すなわち以下の通りである:
L'=cnt_cum[iexp0+Na-1]
【0154】
これらのL'個のサンプルのうち、iexp0によって減算されたそれらの指数の値(すなわち、exp(n)-iexp0)と等しいいくつかのビットを割り当てられたサンプルの数L''が以下によって与えられる:
【0155】
【数5】
【0156】
(テストS58からの出力KOで、N'bが負またはゼロである)。
【0157】
本発明は、iexp0によって減算されたそれらの指数の値と等しいいくつかのビット数を割り当てられたこれらのL''個のサンプルの選択において大きな柔軟性を提供する。ある実施形態では、これらのL'個のサンプルのうちのL''個のサンプルの選択によって、従来技術で説明したG.711.1におけるビットごとの割当てと同じビット割当てを得ることが可能になる。この選択は、指数が上述の範囲内である第1のL''個のサンプルを取ることで構成される。
【0158】
次に、ビット割当て自体の計算を説明する。
【0159】
以下で、例示的実施形態において、2つのループの実行を通じてL個のサンプルへのビット割当てが実行される。
- [iexp0+1, iexp0+Na]範囲内の指数を有する第1のL''個のサンプルへのビット割当てが実行されるのまで第1のループ、
- 次いで、最後に残っているサンプルのビット割当てを実行するための第2のループ。
【0160】
第1のループが実行される回数は、L''の数、ならびにL個のサンプルの中のこれらのL''個のサンプルの位置に依存する。したがって、このループが実行されなければならない回数は、このループに入る前には知られていない。一方、「N」で示される、第2のループが実行されなければならない回数は、この第2のループに入る前に、第1のループが実行された回数に基づいて決定され得る。
【0161】
次いで、本発明によるビット割当て手順は、図8Aを参照して、リセットステップS101から実行され得る:
- [iexp0+1,iexp0+Na]からL''までの範囲内の指数を有するサンプルカウンタNbech、
- Lに第2のループが実行されなければならない回数N、
- 第1のサンプルによるビット割当てを開始するための2つのポインタptr_expおよびptr_b:
〇指数表の第1の要素を指すptr_exp(第1のサンプルの指数である、&exp[0]=exp,exp[0])
〇ビット割当て表の第1の要素を指すptr_b(第1のサンプルのビット割当てである、&b[0]=b,b[0])。
【0162】
第1のループでは(Nbechに関連するテストS102):
- n番目のサンプルの指数と、iexp0との間の差分(nビット)がまず計算され(ステップS103)、
- 次いで、この差分がゼロの下限を与えられる(ステップS104およびS105)。
- この差分が厳密に正の場合(テストS104からの出力OK)、
〇この差分がNa以下かどうかを決定するために、別のテストS106が実行される:
・Na以下の場合、サンプルの指数は[iexp0+1,iexp0+Na]の範囲内であり、カウンタNbechが1だけデクリメントされる(ステップS120)、
・Na以下ではない場合、差分がNaの上限を与えられる(ステップS107)。
- 次いで、nビットはn番目のサンプルのビット割当てであり(ステップS108)、および
- カウンタNが1だけデクリメントされる(ステップS109)。
【0163】
Nbechが厳密に正である限り(テストS102からくる矢印OK)、次に生じる反復に渡す。正ではない場合(Nbech=0、出力KOに対応する)、指数が[iexp0+1,iexp0+Na]の範囲内であるL''個の第1のサンプルの最後のビット割当てがちょうど決定され(ステップS108)、Nbech上の条件付きループが、第2のループに入るために出て、N個の最後のサンプルのビット割当てを実行する。
【0164】
ここで、テストS106の出力での「if not」という用語は、テストS106において「IF」命令に習慣的に続く命令「ELSE」を暗示し得ることを述べなければならない。そのような実施形態は、説明のための例によって図8Aに明確に示されている。しかしながら、実際には、これらの2つの命令(「IF」および「ELSE」)は、それぞれ4の重みの複雑性を有することが指摘されている。次いで、プログラミング手法では、常に差分に上限を配置することが好ましい(「s_max」命令の重みは1である)。次いで、値Naに関連する差分のテスト(ステップS106)は、簡単な「if」テストである(小文字で、その意味は上記の表に記載されている)。したがって、実際には「nビット」と0またはNaを比較するために、制限が優先的に使用されている(s_min、またはs_max)。それにもかかわらず、図8Aおよび図8Bを明確にするために、IF-ELSE型の命令がその中に示されている。
【0165】
ポインタptr_expおよびptr_bが後置きインクリメントされるにつれて、それらはそれぞれ次のサンプルの指数およびそのビット割当てを指す点にも留意されたい。
【0166】
第2のループでは、[iexp0+1,iexp0+Na]の範囲内の指数を有するサンプルに割り当てられたビットの数が、(iexp0+1)によって減少されたその指数の値(すなわち、したがってexp(n)-iexp0-1)と等しい。他のサンプルに割り当てられたビットの数は、
- iexp0+1以下の指数を有するサンプルは0、または、
- 厳密にiexp0+Naよりも大きい指数を有するサンプルは、Na
【0167】
最後のN個のサンプルの均一化の処理を行うために、ループに入る前にiexp0が1だけインクリメントされ(ステップS110)、この第2のループでは、サンプルの指数と、0とNaとの間のiexp0によってインクリメントされたこの値との間の差分を制限するために十分である。
【0168】
したがって、第2のループでは(0から(ステップS111)Nの範囲のiで定義された):
- ステップS114で、n番目のサンプルの指数とiexp0との間の差分(nビット)が最初に計算され、
- 差分が0とNaとの間に制限され(ステップS115からS118)、
- 次いで、nビットがn番目のサンプルのビット割当てである(ステップS119)。
【0169】
ここで再び、ステップS115からS118が例示として「IF」および「ELSE」型の命令によって表される。しかしながら、プログラミングの練習では、課される制限の使用が好ましい。
【0170】
最後のN個のサンプルのビット割当てを実行するために、ループがN回反復される(ステップS113のインクリメント、およびiへのテストS112で)。
【0171】
図8Aによるビット割当ての擬似コードが以下で与えられる:
【0172】
【数6】
【0173】
上記の擬似コードでは、最初にnビットが、4の重みを有する「ELSE」命令の使用を依然として回避するために、nビット>0(テストS104で)をテストする前に、最初に0の下限を有し、保持することが分かる。
【0174】
「WHILE」タイプの条件付きループは「FOR」ループよりも複雑なので、WHILEループを失ってFORループの反復を好適とすることが望ましい場合があり、したがって、L"およびL'の値に応じて(たとえば、L">L'/2の場合)、ビット割当ては最後のサンプルから開始して実行され得る。この変形形態は図8Bによる以下の擬似コードに対応し、以下のステップを有する:
-S201リセットステップ:
【0175】
【数7】
【0176】
一旦、ビット割当てが決定されると、層「1」(L1)強化信号のための適応多重化手順が最新技術のように実行され得る。
【0177】
しかしながら、本発明は別の利点を提供する。本発明は、シングルパスでのビット割当てと適応多重化の生成を行うことを可能にする。実際、最新技術では、割り当てられるべきすべてのビットの1ビットずつの反復割当ての最後までサンプルのビット割当てが知られていないので、サンプルの強化ビットの適応多重化は、すべてのサンプルについて反復するビットずつの割当ての終了後にのみ行うことができる。これは、サンプルのビット割当てを1度に決定する本発明には当てはまらない。
【0178】
次いで、すべてのビットの割当ての決定を待たずに、サンプルごとにオンザフライで適応多重化を行うことが可能になる。ビット割当ての生成と適応多重化の生成との2つのステップの組合せによって、ランダムアクセスメモリ要件および複雑性をさらに低減させることが可能になる。L個のサンプルのビット割当てを格納する必要はないので、上述の表b(L)に対応するメモリ節約を与え、また2Lメモリアクセスは、L個のサンプルに割り当てられたビットの数を書込み、また読み出すために必要である。
【0179】
このように複雑性が低減するので、以下で説明するように、本発明は多数のアプリケーション、具体的には、着信ビットストリームの復号化、混合、および再符号化を備えた、電話会議を行うためのオーディオブリッジアーキテクチャ内の信号処理を提供する。
【0180】
より一般的には、本発明は多数の利点を提供する。本発明は、ランダムアクセスメモリと読出し専用メモリ(プログラムコード)の複雑性の間の異なる妥協を得るためのいくつかの変形形態を提供する。すべての場合において、ランダムアクセスメモリ(RAM)および複雑性における節約が大きい。本発明が、特定の実施形態において、最新技術のビットごとの反復手順と同じ適応ビット割当ての達成を可能にするので、これらの節約が品質を低下せずに得られ、最新技術のコーデックとの互換性を保証することが可能になる。
【0181】
本発明の有益な用途のうちの1つは、高品質オーディオ電話会議である。多地点制御装置(MCU)に基づく中央集中型の通信アーキテクチャの場合、オーディオブリッジは着信ビットストリームの復号化ならびにそれらの混合を行い、次いで、混合された信号を遠隔にある端末に送信するために、それらを再符号化する。
【0182】
処理されるべきストリームの数によって、複雑性が大きくなる。この複雑性を制限するために、G.711.1標準によって符号化されたストリームを混合するための部分的混合技法が提供され得る。したがって、G.711.1の意味の範囲内の階層符号化の文脈では、ビットストリーム全体を復号化するのではなく、再符号化される前にコア層(G.711と互換性のある)だけが復号化および混合されて、強化層(下位および上位)は復号されない。
【0183】
変形形態として、すべての着信ストリームの中のアクティブなストリームを選択して、その強化層を混合および再符号化されたコア層と組み合わせて他の遠隔端末に再送信することが可能である。この部分的混合技法によって、強化層だけが交換されるので、コア層レベルでの混合の連続性を保証しながら、複雑性を大幅に低減させることが可能になる。しかしながら、拡張層によって提供される通信品質の向上が失われる。
【0184】
着信ストリームの低帯域強化層の復号化の複雑性を大幅に低減して、強化された混合信号を再符号化することによって、本発明は、高域通過帯域層への切替えを制限することによって、部分的な混合をすべての強化された低帯域に拡張することを可能にする。したがって混合した低帯域の連続性が保証され、合理的な複雑性の増加に伴って、混合ストリームの品質を高める。図10を参照すると、たとえば3つの端末TER-A、TER-B、およびTER-Cの間の電話会議ブリッジDISでは、図示した例において、ブリッジDISがG.711.1信号を端末TER-Aから端末TER-BおよびTER-Cに強化して、それにもかかわらず低帯域層を混合する決定を行うことができる(コア層L0および強化層L1):
- 端末TER-BおよびTER-Cから、端末TER-Aに(L0+L1[B+C])、
- 端末TER-AおよびTER-Cから、端末TER-Bに(L0+L1[A+C])、
- ならびに、端末TER-AおよびTER-Bから、端末TER-Cに(L0+L1[A+B])、
また、端末TER-Aから端末TER-BおよびTER-Cに、強化層ストリームL2[A]を提供する。
【0185】
有利なことに下位層L0を有する3つのミキシング内の、3つのL1層の復号化およびL1強化層の再符号化は、本発明の実装形態のおかげで、低複雑度で行われる。
【0186】
以下の添付書類1および2は、2つのそれぞれの状況に対応する擬似コードの2つの実施形態の例を提示する。
- 現在の勧告G.711.1によって、最新技術による多重化が行われる(添付書類1における、第1の例示的実施形態)、
- 各サンプルのビット割当てに続いて、オンザフライで多重化が行われる(添付書類2における、第2の例示的実施形態)。
【0187】
勧告G.711.1の一部として、80ビットでの40個のサンプルの符号化が強化されなければならない。次いで、本明細書では指数Neの値の数は8と等しく、強化ビットNaの最大数は3と等しい。
【0188】
第1の実施形態では、指数カウンタの累積値は漸化式を使用して計算され、それらは格納されない。
【0189】
ランダムアクセスメモリおよび複雑性の点でより大きな節約を行うために、第2の実施形態では、ビット割当てと適応多重化のための計算ステップが組み合わされて、ビット割当て表は格納されない。
【0190】
第1の実施形態では、指数カウンタを格納するための大きさ10(=8+3-1)のうちの1つ、40個のサンプルのビット割当てを格納するための大きさ40の2番目の、整数の2つの表が16ビットにわたって提供される(Word16)。
【0191】
添付書類1に擬似コードが与えられている:
COM-1は、コメントに対応する:表上のポインタ、
COM-2は、コメントに対応する:アドレスcnt[2]のポインタ、指数として0を有するサンプルの数、
COM-3:ゼロにリセットされる指数カウンタ、
COM-4:指数カウンタ表の計算、
COM-5:サンプルnの指数を読み出すためのメモリアクセス、
COM-6:アドレスcnt0[iexp]へのポインティング、
COM-7:cnt0[iexp]を1だけ増分して、メモリに書き込む、
COM-8:40個のサンプルの最大指数を検索する:cntの最後の非ゼロ要素、
COM-9:iexp0を検索する:どの強化ビットも受信しないサンプルの最大指数、
COM-10:循環による、指数カウンタcumの累積の計算、
COM-11:cnt0[iexp0]のcumへの追加:cum=cnt0[iexp0+2]+cnt0[iexp0+1]+cnt0[iexp0]、
COM-12:iexp0を1だけデクリメントする、
COM-13:cum->cum=cnt0[iexp0+2]+cnt0[iexp0+1]からcnt0[iexp0+3]を減算する、
COM-14:nbEch1の計算:exp(n)-iexp0強化ビットを受信する、指数が[iexp0+1,iexp0+3]の範囲内であるサンプルの数、
COM-15:cnt0[iexp0+3]をcumに追加することによる、指数が[iexp0+1,iexp0+3]の範囲内であるサンプルの数の計算:cnt0[iexp0+3]+cnt0[iexp0+2]+cnt0[iexp0+1],
COM-16:条件付きループの出力で、cumを(負)のビットの数に追加することによる、nbEch1の計算、
COM-17:サンプルの指数iexpnとiexp0との間の差分によるビット割当て:iexpn<=iexp0の場合:nbBit=0であり、iexp0<iexpn<=3の場合([iexp0+1,iexp0+3]の範囲内の指数を有するサンプル)、nbBit=iexpn-iexp0であり、第1のnbEch1サンプルではnbBit= iexpn-iexp0-1であり、最後のサンプルでは、iexpn>iexp0+3の場合、nbBit=3である、
COM-18:サンプルの指数とiexp0のサンプルとの間の差分としてのnbBitの計算、
COM-19:サンプルの指数が[iexp0+1,iexp0+3]の範囲内の場合、nbBitが3以下かどうかをテストすることによってテストする、
COM-20:指数が範囲内であり、iexp-iexp0ビットを割り当てられたその範囲内のサンプルの数をデクリメントする、
COM-21:割り当てられるビットの最大数が3に制限される、
COM-22:ビット割当てを受信したサンプルのカウンタのデクリメント、
COM-23:最後のnbEch0サンプルへのビット割当て:nbEch0サンプルのうち、指数が[iexp0+1,iexp0+3]の範囲内のサンプルがiexpn-iexp0-1ビットを受信する。
【0192】
また、非正規アドレッシングの複雑性を考慮するために、追加(add(0,0))が示されている。
【0193】
iexpMaxの検索のおかげで、40個のサンプルの最大の指数、カウンタの累積値の計算は、平均的で、複雑性が低い(iexpMaxより大きい指数の累積値が計算されないので)点に留意されたい。
【0194】
可能な変形形態では、iexpMax=0の特別な場合のために区別が行われる(この場合には、40個のサンプルの各々に2ビットの割当て)がある。この変形形態では、iexpMaxを決定した後で、厳密に正かどうか(IF(iexpMax>0))を確認するためにテストが実行され、その場合、iexp0を決定して、NbEch1を計算して、2つのループ内のiexp0からの差分を計算することによってビットを割り当てるためのステップが実行される。iexpMaxが厳密に正ではない場合(iexpMax=0)、これらのステップは省略されて、各サンプルに2ビットが割り当てられる。iexpMax =0の場合は別に処理されるこの変形形態では、表cntの大きさ(cnt0からcnt+1にリセットされる)が1だけ減少され得る。一方、この特別な場合を区別することによって、プログラムメモリの大きさが増大する(この場合のプログラム命令の補助セットを必要とする)。多重化のためにビット割当てステップがそれと組み合わされる場合に、このケースが特に価値があり(後述する第2実施形態による)、この特別なケースにおける多重化手順は非常に単純であり、それほど複雑ではない。
【0195】
したがって、本発明は、目的の用途に応じていくつかの可能な変形形態を提供することが分かる。
【0196】
添付書類2に提示される第2の実施形態では、ビット割当ておよび適応多重化のための計算ステップが組み合わされて、ビット割当て表を格納する必要はない。第1のステップ(指数カウンタ表の計算、40個のサンプルの最大指数の検索、どの強化ビットも受信しないサンプルの最大指数の検索、(exp(n)-iexp0)強化ビットを受信する[iexp0+1,iexp0+3]の範囲内の指数を有するサンプルの数の計算)は、上記の第1実施形態におけるものと同じである。
【0197】
一般的なケース(iexpMax>0)がまず与えられる。
【0198】
予備的ステップの後に、適応多重化が、2つのビット割当て計算ループで行われる。条件付きループ(WHILE(nbEch1>0))の前に、従来技術で説明したものと同じリセットが行われる。
【0199】
添付書類2の擬似コードは以下のコメントを呼び出す:
- COM-50:mux_codルーチンから抽出され、このルーチンは適応多重化を実行して、最新技術と同じ命令セットを含む、
- COM-51:しかし最新技術とは異なり、ビットが割り当てられない場合はルーチンが呼び出されないことが可能である。テスト(ELSE)を回避して命令の数を減少するための変形形態では、最新技術と同様に、割り当てられた0強化ビットを有するサンプルを含むすべてのサンプルについてルーチンを呼び出すことが可能である。
【0200】
したがって、本発明によって、必要なランダムアクセスメモリの大きさ、および計算の数を著しく減少させることが可能になる。さらに、この複雑性およびメモリの減少のおかげで、コア層に限定される部分的混合と、完全な低帯域信号(コアおよび強化階層を備える)の部分的混合とを有利に置換することによって、具体的には会議ブリッジにおいて部分的混合の品質を向上することが可能になる。
【0201】
【数8-1】
【0202】
【数8-2】
【0203】
【数8-3】
【0204】
【数8-4】
【0205】
【数8-5】
【0206】
【数8-6】
【0207】
【数8-7】
【0208】
【数8-8】
【符号の説明】
【0209】
10 QMIC
11 PCM符号化器
10 量子化モジュール
12 送信チャネル
14 復号器
20 フィルタ
22 モジュール
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10
図11