(58)【調査した分野】(Int.Cl.,DB名)
各トラックの中で符号化される必要があるパルスについての統計値を位置に従って別々に収集する間に、各トラックの中で前記パルスを有する各位置のパルス極性の正又は負の属性に従って、各トラックの中で前記パルスを有する各位置のパルス極性情報が取得され、
前記コードインデックスは、各トラックの中で前記パルスを有する各位置に対応する極性インデックスの情報を更に含み、前記極性インデックスは、インデックスに対応するパルスを有する位置のパルス極性情報を示す、請求項1−3の何れか1項に記載のパルス符号化方法。
T個のトラックの中で符号化される必要があるパルスを決定するように形成されるパルス統計部であって、Tは2以上の整数であり、各トラックの中で符号化される必要がある少なくとも1つのパルスについての統計値を位置に従って別々に収集し、各トラックの中で前記少なくとも1つのパルスを有する位置の数Nt、トラックの中で前記少なくとも1つのパルスを有する位置の分布、及び前記少なくとも1つのパルスを有する各位置におけるパルス数を取得し、添え字のtはt番目のトラックを表し、t∈[0,T-1]である、パルス統計部と、
第1、第2及び第3のインデックス部を有するインデックス演算部であって、前記第1のインデックス部は、位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1tを出力するように形成され、前記第2のインデックス部は、前記位置の分布に従って別々に各トラックの第2のインデックスI2tを出力するように形成され、前記第3のインデックス部は、パルス数に従って別々に各トラックの第3のインデックスI3tを出力するように形成される、インデックス演算部と、
各トラックの前記第1のインデックスI1t、各トラックの前記第2のインデックスI2t及び各トラックの前記第3のインデックスI3tに従って、コードインデックスIndを生成するように形成されるインデックス合成部と
を有するパルス符号化装置。
【背景技術】
【0003】
ベクトル符号化技術では、代数コードブックがしばしば使用され、適応フィルタリング後の残留信号について量子化符号化を実行する。トラックに関する最適な代数コードブックパルスの位置及び極性の情報が探索処理により得られた後、対応するインデックス値が符号化演算処理により取得され、デコード側がそのインデックス値に従ってパルスシーケンスを再構築できるようにする。無損失(ロスレス)再構築が保証されている前提条件がある場合、コードインデックス値に必要なビットを可能な限り減らすることができ、これが代数コードブックパルス符号化方法の研究開発を行う主な目的の1つである。
【0004】
適切な符号化方法である音声符号化における適応マルチレートワイドバンド(AMR_WB+)符号化方法を具体的な例として、既存の代数コードブックパルスで使用されている具体的な符号化方法を説明する。異なるコードビットレートの場合、1ないしN個のパルスがトラックの各々で符号化される。各々のトラックがM=2
m個の位置を有していたとすると、AMR_WB+において、各トラックで1ないし6個のパルスを符号化するプロセスはそれぞれ次のとおりである。
【0005】
(1)1つのパルスが各トラックで符号化される。
【0006】
トラックの各々は2
m個の位置を有するので、各トラックに関し、パルスの位置のインデックス(ポジションインデックス)は符号化にmビットを必要とし、パルスの極性インデックスは符号化に1ビットを必要とする。ある極性と共に1パルスのインデックス値は、次のように符号化される:
I
1p(m)=p+s×2
m,
ここで、p∈[0,2
m-1]はパルスのポジションインデックスであり;sはパルスの極性インデックスであり;パルスの極性が正の場合sは0に設定され、パルスの極性が負の場合sは1に設定され;I
1p∈[0,2
m+1-1]である。
【0007】
各トラックで1パルスを符号化するのに必要なビット数は:m+1である。
【0008】
(2)2つのパルスが各トラックで符号化される。
【0009】
(1)の結果によれば、各トラックにおいて1パルスを符号化するのにm+1ビットが必要であり、他のパルスのポジションインデックスを符号化するのにmビット必要である。パルスの順序については如何なる条件もないので、パルスのポジションインデックスを並べることで取得される値の相互関係は、他のパルスの極性を指定するのに使用されてもよい。2つのパルスのインデックス値は次のように符号化される:
I
2p(m)=p1+I
1p0×2
m=p1+p0×2
m+s×2
2m,
ここで、p0,p1∈[0,2
m-1]はそれぞれ2パルスのポジションインデックスであり;sはパルスp0の極性インデックスであり;パルスp1の具体的な極性指定規則は:p0<p1ならば2つのパルス極性が同じであることを示し、p0>p1ならば2つのパルス極性が互いに反対であることを示し;I
2p∈[0,2
2m+1-1]である。
【0010】
各トラックで2パルスを符号化するのに必要なビット数は:2m+1である。
【0011】
(3)3つのパルスが各トラックで符号化される。
【0012】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2
m-1個の位置(ポジション)を各自有する。あるセクションは少なくとも2つのパルスを含む。(2)の結果によれば、セクションを符号化するために、2×(m-1)+1=2m-1ビットが必要とされる。トラック全体について別のパルスが探索され、(1)の結果によれば、m+1ビットが必要とされる。更に、2パルスを含むセクションを示すために更に1ビットが必要とされる。3パルスのインデックス値は次のように符号化される:
I
3p(m)=I
2p(m-1)+k×2
2m-1+I
1p(m)×2
2m,
ここで、kはセクションのインデックスであり;I
3p∈[0,2
3m+1-1]である。
【0013】
各トラックで3パルスを符号化するのに必要なビット数は:3m+1である。
【0014】
(4)4つのパルスが各トラックで符号化される。
【0015】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2
m-1個の位置(ポジション)を各自有する。セクション各々に含まれるパルス数の組み合わせは次の表の通りである。
【表A】
【0016】
上記の表において、各タイプに対応する必要なビット数をもたらす基礎は次のとおりである:タイプ0及びタイプ4の場合、4つのパルスを含むセクションに関し、(3)のような方法が使用されるが、全体的なサーチに関するパルス数は2であり、これはI
2p(m-2)+k×2
2m-3+I
2p(m-1)×2
2m-2と等価であり;タイプ1の場合はI
1p(m-1)+I
3p(m-1)×2
mと等価であり;タイプ2の場合はI
2p(m-1)+I
2p(m-1)×2
2m-1と等価であり;タイプ3の場合はI
3p(m-1)+I
1p(m-1)×2
3m-2と等価である。
【0017】
タイプ0及びタイプ4は予想される1つの状態と考えられ、タイプ1ないし3の各々は可能性のある状態と考えられるので、全部で4つの状態があり、従って、対応する状態を示すために2ビットが必要とされ、タイプ1ないし3の各々は4m-2+2=4ビットを必要とする。更に、タイプ0及びタイプ4を含む状態の場合、区別するために更に1ビットが必要とされ、タイプ0及びタイプ4は4m-3+2+1=4mビットを必要とする。
【0018】
各トラックで4パルスを符号化するのに必要なビット数は:4mである。
【0019】
(5)5つのパルスが各トラックで符号化される。
【0020】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2
m-1個の位置(ポジション)を各自有する。あるセクションは少なくとも3つのパルスを含む。(3)の結果によれば、セクションを符号化するために、3×(m-1)+1=3m-2ビットが必要とされる。トラック全体に関して他の2つのパルスが探索され、(2)の結果によれば、2m+1ビットが必要とされる。更に、3パルスを含むセクションを指定するために更に1ビットが必要とされる。5つのパルスのインデックス値は次のように符号化される:
I
5p(m)=I
3p(m-1)+k×2
3m-2+I
1p(m)×2
3m-1,
【0021】
各トラックで5パルスを符号化するのに必要なビット数は:5mである。
【0022】
(6)6つのパルスが各トラックで符号化される。
【0023】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2
m-1個の位置(ポジション)を各自有する。セクション各々に含まれるパルス数の組み合わせは次の表の通りである。
【表B】
【0024】
上記の表において、各タイプに対応する必要なビット数の基礎は(4)から導出されるので、繰り返しになるので説明しない。
【0025】
タイプ0及び6、タイプ1及び5、タイプ2及び4はそれぞれ1つの可能な状態と考えられ、タイプ3は別の1つの状態と考えられるので、全部で4つの状態が存在し、従って、対応する状態を示すために2ビットが必要とされ、タイプ3は6m-4+2=6m-2ビットを必要とする。組み合わせられたタイプを指定した場合、区別するために更に1ビットが必要とされ、タイプ3を除く他のタイプは6m-5+2+1=6m-2ビットを必要とする。
【0026】
各トラックで6パルスを符号化するのに必要なビット数は:6m-2である。
【0027】
本発明の基礎研究において、発明者等は次のことを見出した:AMR_WB+により提供される代数パルス符号化方法では、再帰処理に類似する符号化論理が使用され、符号化されるパルス数が比較的多い状態は、いくつかの状態に分割され、分割された状態では、処理を行うための符号化されるパルス数が比較的少なくなっており、従って演算処理が複雑であると共に、トラックで符号化されるパルス数が増えてくると、コードインデックスの冗長性が徐々に累積してゆき、コードビットを浪費してしまっている。
【発明を実施するための形態】
【0034】
本発明の実施の形態はパルス符号化方法を提供し、パルス符号化方法ではコードビットを節約するために2つ以上のトラックが一緒に符号化又はエンコードされる。本発明の実施の形態は対応するパルス復号化方法及びパルスコーデック等も提供する。以下、それらを詳細に説明する。
【0035】
スピーチエンコーダ又は音声符号器では、コードブックサーチにより、各トラックの全てのパルスの位置及び極性(含まれていた場合)の情報が取得される。この情報はデコードを行う側に正しく転送される必要があり、これによりデコードを行う側は全てのパルスの位置及び極性(含まれていた場合)の情報を一意に復元できるようにする。この場合において、ビットレートをできるだけ小さくするために、できるだけ少ないビット数が情報の転送に使用されることが予想される。同じトラックにある全てのパルスの位置及び極性(含まれていた場合)の順列(又は置換)及び組み合わせの数はコードブック空間(codebook space)の最小値となること、及び対応するコードビット数は理論的な下限値になることが、理論的な解析から知られている。トラックにおける位置の総数及びトラックにおけるパルスの総数は固有である。トラックにおける位置の総数とトラックにおけるパルスの総数とが異なる値をとる場合、全てのパルスの位置及び極性の順列及び組み合わせの数は必ずしも2のべき乗の整数にはならないので、コードビット数の理論的下限値も必ずしも整数にはならず、その場合、単独のトラックの符号化に要する実際のコードビット数は、少なくとも、その理論的下限値の整数部分プラス1であり、必然的にコードブック空間の一部を未使用にしてしまう。例えば、以下の表1は、符号化されるのに必要なパルス総数Nが1トラックに関して1ないし6である場合における(ただし、位置の総数は16である)、コードビット数の理論的下限値及び実際の下限値と未使用部分の状態とを示す。
【表1】
【0036】
多くの場合、実際の下限値はコードブック空間をかなり浪費することを招いていることが表1から分かり、従って本発明では、2つ以上のトラックについて一緒に符号化すること、即ちジョイント符号化(joint encoding)が実行され、これにより単独トラック符号化における未使用コードブック空間が結合され、結合された未使用空間が十分大きければ、1つの実際のコードビットを減らすことができる。当然に、(トラック内の位置の総数とトラック内のパルスの総数とが同じである)同じタイプのトラックに関し、K個のトラックについてジョイント符号化のみが実行される場合、1つのコードビットが節約され、ここでK≧1/(1-kk)であり、kkは単一トラック符号化に関する理論的な下限値の少数部分である。例えば、表1に示されているようにkkが0.5未満であるパルス総数が3、4及び5であるトラックの場合、2つを一緒にジョイント符号化すると1つのコードビットを節約できる。表1においてパルス総数が6であるトラックについては、3つを一緒にジョイント符号化すると1つのコードビットを節約できる。当然に、異なるタイプのトラックのジョイント符号化(一緒に符号化すること)も同様な効果をもたらし、2つのトラックのkkの合計が1未満である又は3つのトラックのkkの合計が2未満である場合には、1ビットが節約され;明らかに、3つのトラックのkkの合計が1未満であった場合には2ビットが節約され、それ以上についても同様に類推できる。以下の表2は同じタイプの2トラックのジョイント符号化と単独トラック符号化との比較例を示し(パルスが極性を有することを考慮に入れている)、この場合において、トラック内の位置の総数は16であり、符号化に必要な総パルス数Nは3ないし5である。
【表2】
【0037】
表3は異なるタイプの2ないし3トラックのジョイント符号化と単独トラックの符号化との比較例を示し(パルスは極性を有することが考慮されている)、この場合において、トラック内の位置の総数は16であり、符号化に必要な総パルス数Nは3ないし5である。
【表3】
【0038】
上記は複数のトラックを一緒に符号化(ジョイント符号化)する場合に節約できるビット数の理論的解析例を示す。理論的に予想される効果を達成するには、可能な限り効率的にコードブック空間を利用するためにコードインデックスが必要とされる。以下、複数のトラックを一緒に符号化(ジョイント符号化)する際に実際のビット下限値を使用する符号化方法を、具体的な実施の形態により個別的に示す。
【0039】
具体例1:
図1に示されているように、パルス符号化方法は以下のステップを含む:
【0040】
A1:T個のトラックの中にありかつ符号化される必要があるパルスを取得する。Tは2以上の整数である。
【0041】
T個のトラックにおける各トラックで符号化される必要のある総パルス数は、通常、ビットレートに従って決定される。明らかに、符号化される必要のあるパルス数が多いほど、コードインデックスに必要なビット数は多くなり、ビットレートも高くなる。本明細書において、pulse_num
tは、t番目のトラックにあるパルスであって符号化される必要のあるパルスの総数を表す。pulse_num
t=NN
t、t∈[0,T-1]であることが仮定されている。ジョイント符号化におけるトラックの総パルス数は同じであっても異なっていてもよい。
【0042】
A2:各々のトラックにおける符号化される必要があるパルスについての統計情報を、位置に応じて別々に収集し、各トラックでパルスを有する位置の数N
t、トラックでパルスを有する位置の分布及びパルスを有する位置各々についてのパルス数を取得する。
【0043】
本明細書において、pos_num
tはパルスを有する位置であってt番目のトラックにある位置の数を表す。トラックにおけるNN
t個のパルスの分布は位置に関して重なっていてもよく、pos_num
t=N
tであることが仮定されている。当然に、N
t∈[1,NN
t]である。
【0044】
パルス位置ベクトルP
t(N
t)={p
t(0),p
t(1),...,p
t(N
t-1)}はパルスを有する位置であってt番目のトラックにある位置の分布を表し、ここでp
t(n)はt番目のトラックにあるパルスを有する位置のポジションシリアル番号を表し、n∈[0,N
t-1]であり、p
t(n)∈[0,M
t-1]であり、本明細書におけるM
tはt番目のトラックにおける位置の総数を表し、概してM
tは8、16等であってもよく、ジョイント符号化のトラックにおける位置の総数は同じであっても異なっていてもよい。
【0045】
パルス番号ベクトルSU
t(N
t)={su
t(0),su
t(1),...,su
t(N
t-1)}はパルスを有する位置であってt番目のトラックにある位置各々におけるパルス数を表し、su
t(n)はp
t(n)の位置のパルス数を表し、明らかに、su
t(0)+su
t(1)+...+su
t(N
t-1)=NN
tである。
【0046】
更に、符号化される必要のあるパルスは極性又はシンボル(symbol)を有していてもよく、すなわち正又は負の属性を有していてもよい。この場合において、トラックの中にあるパルスであって符号化される必要のあるパルスについての統計情報が、位置に応じて収集される場合に、パルスを有する各々の位置のパルス極性情報が取得される必要もある。
【0047】
本明細書においては、パルス極性ベクトルS
t(N
t)={s
t(0),s
t(1),...,s
t(N
t-1)}は、パルスを有する位置であってt番目のトラックにある位置各々のパルス極性情報を表し、s
t(n)はp
t(n)の位置のパルス極性を表しかつp
t(n)の位置の極性インデックスと呼ばれる。s
t(n)で表現されるパルス極性は正又は負の2進数的な性質を有することに基づいて、一般に、次のような簡易な符号化方法が使用されてよい:正のパルスを表すためにs
t(n)=0が使用され、負のパルスを表すためにs
t(n)=1が使用される。明らかに、符号化される必要のあるパルスに関し、パルス極性は必須の属性ではなく、実際のニーズによれば、パルスは位置及び数量に関する情報を有するだけでもよく、その場合、パルス極性情報に関する統計情報を収集する必要はない。
【0048】
明らかに、P
t(N
t)、SU
t(N
t)及びS
t(N
t)の値は1対1の対応関係を有する。
【0049】
トラックのジョイント符号化に必要なパラメータP
t(N
t)、SU
t(N
t)及びS
t(N
t)が統計情報を収集することで取得された後に、パラメータはインデックスに符号化される必要があり、パラメータとインデックスとの間の対応関係が設定され、デコードする側がインデックスに従って対応するパラメータを復元できるようにする。対応関係に関し、2つの通知方法が使用されてもよい。通知方法の1つは、代数的な方法を使用して関数計算式を指定し、この場合、符号化する側がインデックスを取得するためにパラメータに対して順行計算(フォワード計算)を実行し、復号化又はデコードする側がそのパラメータを取得するためにインデックスに対して逆行計算(リバース計算)を実行する。別の通知方法は、マッピング方式を使用して問合せの関連性を指定し、この場合、符号化及び復号化する側の双方がパラメータをインデックスに関連付けるマッピングテーブルを格納しておく必要がある。パラメータの具体的な性質に応じて2種類の方法についての選択が実行されてよい。一般的に言えば、データ量が多い状況では、関数計算式によって対応関係を指定するように設計すると、符号化及び復号化する側での記憶容量を節約することができ、好ましい。以下、パラメータの各々を符号化する例をそれぞれ説明する。
【0050】
A3:パルスを有する位置であって各々のトラックにある位置の数{N
0,N
1,...,N
T-1}に従って、第1のインデックスI1を決定し、ここで、第1のインデックスI1は、パルスを有する位置の個数の下で、パルスを有しかつ各トラックにある位置の全ての可能な分布状況に対応し、ここで、パルスを有する位置の数はそれによって表現される。
【0051】
{N
0,N
1,...,N
T-1}の組み合わせについての可能な状態の総数は、Π
t=0T-1N
tである。
N
tの値は大きくなく、一般に、ジョイント符号化のトラックの総数Tは非常に大きくはなく、{N
0,N
1,...,N
T-1}の組み合わせの可能な状態の総数も非常に大きくはなく、
従って、{N
0,N
1,...,N
T-1}の組み合わせと第1のインデックスI1との間の対応関係は、関数計算式でも又は問合せの関連性でも実現可能である。
【0052】
{N
0,N
1,...,N
T-1}の組み合わせとI1との間に対応関係が設定されると、概して、それらとI1との間に1対1の対応関係が設定され、例えば第1のインデックスは1つの{N
0,N
1,...,N
T-1}の組み合わせに対応する。pos_numtの値N
tはP
t(N
t)の全ての可能な状態の総数W
t(N
t)を決定し、W
t(N
t)=C
MtNtであり、「C」は組み合わせの数を取得することを示し、I1はΠ
t=0T-1W
t(N
t)可能なP
t(N
t)の組み合わせ{P
0(N
0),P
1(N
1),...,P
T-1(N
T-1)}に対応する。
【0053】
当然に、所定のトラックの或るN
tの値が少ない数の状態のP
t(N
t)に対応する場合、N
tの値は同じI1に対応するように組み合わせられ、すなわち少なくとも1つのI1が2つより多い数の{N
0,N
1,...,N
T-1}の組み合わせに対応し、この場合、別の追加的なインデックスIf
tが同じI1に対応する{N
0,N
1,...,N
T-1}の組み合わせを識別するために必要とされ、すなわち、I1に対応する1でないN
tの値と共にトラックの現在のN
tの値を更に決定するために追加的なインデックスIf
tが使用される。
【0054】
様々なI1はトラックのジョイント符号化の分類インデックスと考えてもよく、各トラックのパルス位置の数の組み合わせに従って、ジョイント符号化のコードブック空間全体を幾つかの部分(パート)に分割する。ジョイント符号化の組み合わせ分類の状態の具体例は以下に示されている。表4は3パルス2トラックのジョイント符号化に関する組み合わせ分類方法を示す。全部で3×3個のN
t値の組み合わせが示されており、各々の組み合わせは1つの分類(I1)に対応する。トラック内の位置の総数M
tは全部で16であると仮定されている。
【表4】
【0055】
表5は4パルス2トラックのジョイント符号化の組み合わせ分類方法を示す。全部で4×4個のN
t値の組み合わせがあり、各々の組み合わせは1つの分類(I1)に対応する。トラック内の位置の総数M
tは全部で16であると仮定されている。
【表5】
【0056】
表6は5パルス2トラックのジョイント符号化の組み合わせ分類方法を示す。上記2つの具体例との相違は、N
t=1,2,3の状態が分類の際に組み合わせられていることである。全部で3×3個の分類(I1)があり、いくつかの分類の各々が複数のN
t値の組み合わせに対応している。トラック内の位置の総数M
tは全部で16であると仮定されている。
【表6】
【0057】
表6から分かるように、複数のN
t値(一般的には、N
t値は小さな数の位置の組み合わせに対応する)が分類の際に一緒に組み合わせられ、ジョイント符号化の分類総数を効果的に減らす(例えば、表6において分類数は9であり、これは、1対1の対応関係の場合の分類での数25よりもかなり小さい)。従って、当然に、1でないN
tの値が存在する場合、分類状態の現在のN
t値を特定するために別の追加的なインデックスIf
tが使用される必要がある。すなわち、I1によって分割された空間は、追加的なインデックスIf
tによって指定された部分空間に更に分割される。
【0058】
A4:パルスを有する位置であって各々のトラックにある位置の分布P
t(N
t)に従ってトラック各々の第2のインデックスI2
tを別々に決定し、第2のインデックスI2
tは、第1のインデックスI1に対応する全ての可能な分布状態の中で、対応するトラックにパルスを有する現在の位置に対応する分布状態を指定する。
【0059】
P
t(N
t)の可能な総数はW
t(N
t)=C
MtNtであり、データ量は多いので、第2のインデックスI2
tと共に対応関係の計算式を使用することが好ましいが、当然に問合せの関係性(マッピングテーブル)を使用することも実現可能である。明らかに、W
t(N
t)はI2
tについての可能な値の数である。I2
tの値が0からカウントされる場合、I2
t∈[0,W
t(N
t)-1]である。
【0060】
明らかに、追加的なインデックスIf
tを使用する必要がある場合、第1のインデックスI1及び追加的なインデックスIf
tにより、I2
tの範囲を決めるN
t値が一緒に決定される。
【0061】
代数計算によりP
t(N
t)及びI2
tの対応関係を決定するために、第2のインデックスI2
tの計算式が次のように与えられる:
【数1】
ここで、p
t(n)はトラックの中でパルスを有するn番目の位置のポジションシリアル番号を表し、n∈[0,N
t-1]であり、p
t(0)∈[0,M
t-N
t]であり、p
t(n)∈[p
t(n-1)+1,M
t-N
t+n]であり、p
t(0)<p
t(1)<...<p
t(N
t-1)又はp
t(0)>p
t(1)>...>p
t(N
t-1)である。
【0062】
上記の方法を利用することで、トラック各々の第2のインデックスI2
tが計算式から取得される。コードインデックスの中でI2tが占めるデータ量は多いので、この計算法を使用すると、符号化及び復号化を行う側で可能な限り多くの記憶容量を削減できる。一方、I2tは連続的に符号化されかつ厳密にPt(Nt)に1対1に対応するので、コードビットを最大限活用でき、無駄を回避できる。計算方法の原理、具体的な導出及び説明については、公開番号がCN101295506(特許文献1)である中国特許出願(公開日は西暦2008年10月29日である)を参照されたい。具体的には、その出願書類の明細書第13頁第18行ないし第15頁第9行(実施の形態2、第14図及び第15図);及び対応する復号化計算法については、出願書類の明細書第16頁第23行ないし第17頁第12行を参照されたい(実施の形態4)。
【0063】
A5:パルスを有しかつトラックにある位置各々におけるパルスの数SU
t(N
t)に従ってトラック各々の第3のインデックスI3
tを別々に決定する。
【0064】
SU
t(N
t)はP
t(N
t)と同じ次元数のベクトルであるが、su
t(0)+ su
t(1)+...+ su
t(N
t-1)=NN
tという制限が課せられており、一般にN
tの値は大きくはなく、通常は1ないし6程度の値であり、従ってSU
t(N
t)の可能な総数は大きくはなく、第3のインデックスI3
tとの対応関係について、関数計算式又は問合せによる関連性(マッピングテーブル)の何れを用いて実現されてもよい。留意すべきことに、極端な状況の場合、例えばN
t=1又はN
t=NN
tであった場合、SU
t(N
t)は唯1つの可能な状態しか有しておらず、如何なるI3
tも通知される必要はなく、この場合I3
tは最終的なコードインデックスの生成に影響を及ぼさない任意的な値となる。
【0065】
SU
t(N
t)及びI3
tの間の対応関係を代数計算により決定するために、第3のインデックスI3
tの計算は次のように行われる:
【0066】
t番目のトラックに関し、N
t個の位置(ポジション)がNN
t個のパルスを有している状態は、N
t個のポジションがNN
t-N
t個のパルを有する状態に対応付けられ(マッピングされ)、ここでNN
tは符号化される必要がありかつt番目のトラックにあるパルスの総数を表す。例えば、
図2に示されているような6パルス4ポジション(NN
t=6,N
t=4)の4種類に関し、SU
t(N
t)は常に{1,2,1,2}であり、(各々の位置は少なくとも1つのパルスを有するので)各々の位置のパルス数から1が減算されて{0,1,0,1}が取得され、SU
t(N
t)の情報は2パルス4ポジション符号化状態に対応付けられる。
【0067】
決められた順序に従って、N
t個の位置におけるNN
t-N
t個のパルスの全ての可能な分布状態が並べられ、並べられたシリアル番号が、パルスを有する位置におけるパルス数を示す第3のインデックスI3
tとして使用される。
【0068】
上記の計算法を反映する計算式は次のとおりである:
【数2】
ここで、ΔNN
t=NN
t-N
tであり、PPT=NN
t-1であり、q(h)は(h+1)番目のパルスのポジションシリアル番号を表し、h∈[0,ΔNN
t-1]であり、q(h)∈[0,N
t-1]であり、q(0)≦q(1)≦...≦q(ΔNN
t-1)又はq(0)≧q(1)≧...≧q(ΔNN
t-1)であり、Σは総和をとることを表す。
【0069】
計算方法の原理、具体的な導出及び説明については、公開番号がCN101388210(特許文献2)である中国特許出願(公開日は西暦2008年3月18日である)を参照されたい。具体的には、その出願書類の明細書第8頁第23行ないし第10頁第7行(実施の形態2、第6図);及び対応する復号化計算法については、出願書類の明細書第21頁第10行ないし第21頁第27行を参照されたい(実施の形態6)。
【0070】
A6:Tトラックの一般コードインデックス(general code index)Indを生成し、コードインデックスIndは、トラック各々の第1のインデックスI1及び第2及び第3のインデックスI2
tと各トラックのI3
tの情報を含む。
【0071】
I1、I2
t、I3
t、追加的なインデックスIf
t(含まれていた場合)及び極性インデックスIs
t(含まれていた場合)は、デコードする側で特定可能な何らかの方法でコードインデックスに置換され、最も簡易な例の場合、固定的なフィールドに別々に保存される。各トラックで符号化される必要のあるパルスの総数pulse_num
tが指定されている前提条件の場合、I1により指定されるpos_num
t各々の値N
tはI2
t及びI3
tの可変範囲を決定し、すなわちI2
t及びI3
tにより必要とされるコードビット数を決定し(含まれていた場合、Is
tにより必要とされるコードビット数も決定する)、このため、コードインデックスを構築するために以下の方法が使用される。
【0072】
(1)第1のインデックスI1が初期値として使用され、他のインデックスの情報は多重される。I1の値は、コードインデックスの独立した値の範囲に対応する。このように、デコードする側は、コードインデックスの値の範囲に応じて、pos_num
tの値の組み合わせ{N
0,N
1,...,N
T-1}を直接的に決定してもよい。明らかに、追加的なインデックスを伴う状況の場合、第1のインデックスに対応する1でないN
tの値を有するトラックのN
tの値の組み合わせのみが、I1に応じて決定でき、例えば表6の「1,2,3」の組み合わせである。如何なるN
t値又はN
t値の組み合わせが決定されるとしても、必要な符号化空間が決定され、I1により決定される値の範囲(一般的には、所定長のフィールドに対応する)は、T個のトラック各々のI2
t、I3
t及びIf
tにより使用されるT個の部分に更に分割される。
【0073】
(2)I2
t及びI3
tはデコードする側で指定できる任意の方法で設定されてよく、例えば最も簡易な方法の場合、別々に保存されてもよい。I2
t及びI3
tは通常は2のべき乗の整数によっては表現できないので、できるだけコードビット数を節約するために、t番目のトラックのI2
t及びI3
tはI1によって決定される値の範囲から指定されるセクションに設けられる以下の形式に組み合わせられてもよい:
【数3】
ここで、I2
t及びI3
tは何れも0から始まって符号化され、I2
t∈[0,W
t(N
t)-1]であり、I3
t∈[0,Class(N
t)-1]であり、Class(N
t)はSU
t(N
t)の可能な総数である。明らかに、この方法は、I1により指定される値の範囲がW
t(N
t)の長さを有するClass(N
t)セクションに分割されることと等価であり、各々のセクションはSU
t(N
t)の分布状態に対応する。
【0074】
If
tが使用されなければならない場合、明らかに、I1によりトラックについて指定される値の範囲は使用する異なるN
tにIf
tにより先ず指定される必要があり、その後にI2
t及びI3
tが各N
tに指定される空間に設定され、この場合、次式が成立する。
【数4】
【0075】
(3)符号化されるパルスが極性を伴うパルスである場合、明らかに、Index(t)は各パルスの極性インデックスs
t(n)の情報を更に含む必要がある。例えば、t番目のトラックの極性インデックスIstはI1によりトラックについて指定された値の範囲内の固定的な位置(例えば、末尾)に設けられる長さN
tのフィールドとして使用されてもよく、この場合、次式が成立する。
Index(t)=(I2
t+I3
t×C
MtNt)×2
Nt+Is
t(第1のインデックスに対応する1つのN
t値を伴うトラックの場合)又は
Index(t)=If
t+(I2
t+I3
t×C
MtNt)×2
Nt+Is
t(第1のインデックスに対応する1つでないN
t値を伴うトラックの場合)
ただし、Is
t=s
t(0)+2
Nt-1+s
t(1)×2
Nt-2+...+s
t(N
t-1)である。
【0076】
結果的に、T個のトラックの一般コードインデックスの構成法は、次式のように表現できる:
【数5】
ここで、I
max(t)はIndex(t)の上限値を表し、「Π」は乗算を表す。デコードを行う場合に、I
max(t)で除算したときの剰余を得る方法がIndex(t)を1つずつ分離するのに使用されてもよい。例えば、(Ind-I1)をI
max(T-1)で除算したときの剰余を取得してIndex(T-1)を取得し、Index(T-1)を(Ind-I1)から減算したものをI
max(T-1)で除算し、更にI
max(T-2)で除算したときの剰余を取得してIndex(T-2)を取得し、以後同様に、Index(0)が取得されるまで行われる。
【0077】
コードインデックスを構成する上記の方法例は実施の形態による1つの代替的な方法であるに過ぎず、当業者はコードインデックスを構成する基本情報を用いて別のコードインデックス構造の構成法を容易に取得できることが、容易に理解されるであろう。例えば、インデックスの位置は置き換わってもよいし、或いは再構築されてもよい。具体的には、異なるトラックのIt
2が最初に組み合わせられ、次にI3t及びIs
tが組み合わせられてもよい。本発明の実施の形態はコードインデックスの具体的な構成法に限定されない。
【0078】
具体例2:ジョイント符号化のトラック各々のインデックスが別々に計算され、
図3に示されるようにコードインデックスを形成することと組み合わせられる実施の形態によるパルス符号化方法は、以下のステップを有する:
【0079】
B1:T個のトラックの中にありかつ符号化される必要があるパルスを取得する。Tは2以上の整数である。
【0080】
B2:各々のトラックにおける符号化される必要があるパルスについての統計情報を、位置に応じて個別に収集し、各トラックでパルスを有する位置の数N
t、トラックでパルスを有する位置の分布P
t(N
t)及びパルスを有する位置各々におけるパルス数SU
t(N
t)を取得する。
【0081】
ステップB1及びB2は具体例1におけるステップA1及びA2と同様に実行されてよい。
【0082】
B3:パルスを有しかつ各々のトラックにある位置の数N
tに従って、各トラックの第1のインデックスI1
tを別々に決定し、第1のインデックスI1
tは、パルスを有する位置の数のうちパルスを有しかつトラックにある位置の全ての可能な分布状態に対応し、パルスを有する位置の数は第1のインデックスI1
tにより表現される。
【0083】
B4:パルスを有しかつ各々のトラックにある位置の分布P
t(N
t)に従ってトラック各々の第2のインデックスI2
tを別々に決定し、第2のインデックスI2
tは、第1のインデックスI1
tに対応する全ての可能な分布状態のうち、パルスを有しかつトラックにある現在の位置の分布に対応する分布状態を示す。
【0084】
B5:パルスを有しかつ各トラックにある位置各々におけるパルス数に従って各トラックの第3のインデックスI3
tを別々に決定する。
【0085】
ステップB3ないしB5は具体例1のステップA3ないしA5と同様に実行されてもよい。各トラックのインデックスを取得するための詳細な方法については、公開番号がCN101295506(特許文献1)である中国特許出願(公開日は西暦2008年10月29日である)を参照されたい。具体的には、その出願書類の明細書第6頁第13行ないし第15頁第9行(実施の形態1及び実施の形態2);及び対応する復号化計算法については、出願書類の明細書第15頁第11行ないし第17頁第12行を参照されたい(実施の形態3及び実施の形態4)。
【0086】
B6:T個のトラックの一般コードインデックスを生成する。コードインデックスIndはトラック各々の第1、第2及び第3のインデックスI1
t、I2
t及びI3
tの情報を含む。
【0087】
I1
t、I2
t、I3
t及び極性インデックスIs
t(含まれていた場合)は、デコードする側で特定可能な何らかの方法でコードインデックスに置換され、最も簡易な例の場合、固定的なフィールドに別々に保存される。当然に、組み合わせが実行されてもよい。例えば、トラックのインデックスが別々に組み合わせられ、重ね合わせられてもよい。すなわち、以下に示す方法を使用してコードインデックスを構築してもよい:
【数6】
ここで、I
max(t)はIndex(t)の上限値を表す。
Index(t)=I1
t+I2
t+I3
t×C
MtNt(パルスの極性が考慮されない場合)又は
Index(t)=I1
t+(I2
t+I3
t×C
MtNt)×2
Nt+Is
t(パルスの極性が考慮される場合)。
【0088】
コードインデックスを構成する上記の方法例は実施の形態による1つの代替的な方法であるに過ぎず、当業者はコードインデックスを構成する基本情報を用いて別のコードインデックス構造の構成法を容易に取得できることが、容易に理解されるであろう。例えば、インデックスの位置は置き換わってもよいし、或いは各トラックの中で再構築されてもよい。本発明の実施の形態はコードインデックスの具体的な構成法に限定されない。
【0089】
具体例3:パルス符号化方法。この具体例は、コードビットを更に節約するために具体例1又は具体例2に基づいて提案される方法である。
【0090】
この具体例によるパルス符号化方法によりコードインデックスIndを生成する方法は、具体例1又は具体例2の方法と同様に実行されてよい。コードインデックスIndが生成されると、
図4に示されているように、以下の処理が実行され、その処理は以下のステップを含む:
【0091】
C1:コードインデックスIndと調整閾値THRとを比較する。
ここで、THR≦2
Bmax-I
max(T)であり、I
max(t)はIndの上限値を表し、Bmaxはコードインデックスを符号化するのに使用されるビット数の上限値を表し、IndがTHRより小さかったならば、本方法はステップC2に進み、そうでなかったならば本方法はステップC3に進む。
【0092】
C2:コードビットを使用することでIndを符号化する。この数は第1の数である。
【0093】
C3:コードビットを使用することでIndにオフセット値THR
0を加えたものを符号化する。この数は第2の数である。THR≦THR
0≦2
Bmax-I
max(T)であり、第1の数は第2の数より小さく、第2の数はBmax以下であり、第1の数及び第2の数は何れも正の整数である。
【0094】
例えば、4パルストラックを2つジョイント符号化する場合(トラック各々における位置の総数は16であると仮定されている)、Indの可能な総数はImax(T)=44032×44032(パルスが極性を有することを考慮に入れている)となり、31コードビットが必要とされ、未使用コードブック空間は2
31-44032×44032=208666624となり、THR=THR0=208666624のように設定され;Indが208666624コードビットよりも小さかった場合、第1の数である数値(30)がIndを符号化するために使用され;Indが208666624コードビットよりも大きかった場合、第2の数である数値(31)がInd+208666624を符号化するために使用される。明らかに、31ビットに基づくと更に9.7%ビットを節約できる可能性がある。当然に、更にビットを節約するために、調整閾値THRは208666624よりも小さな数に設定されてもよいが、ビットを節約できる状態が生じる確率が大幅に減少するので、比較考量する必要がある。
【0095】
ビットを節約する方法の原理、具体的な導出及び説明については、例えば、(出願日が西暦2009年6月19日である)中国特許出願(CN200910150637.8)に示されている。
【0096】
更に、ビットを節約できる状況が生じる確率を増やすために、以下の好適な方法を使用して、第1のインデックスI1とコードインデックスIndにおける{N
0,N
1,...,N
T-1}の組み合わせとの間に対応関係を設定してもよい。{N
0,N
1,...,N
T-1}の組み合わせの出現確率に関する統計情報を収集し、出現確率が高い組み合わせに対応する第1のインデックスを小さな値にし、出現確率の高い組み合わせについての符号化インデックス値を可能な限り小さくする。
【0097】
具体例4:パルス符号化方法。この具体例は、具体例1及び具体例2とは異なる観点からトラックのジョイント符号化を行う新たな方を提案する。
【0098】
具体例1及び具体例2では、パルスを有する位置であってトラックの中にある位置の状態についてジョイント分類が実行されるか(具体例1)或るいは第1のインデックスが各トラックに設定されるか(具体例2)によらず、各トラックのパルス位置について処理が別々に実行されなければならない。本具体例では、新たなアイディアが採用され、すなわちジョイント符号化の複数のトラックが1つのトラックを形成するように重ねられ、パルス分布情報が重ね合わせられる。例えば、
図5に示されているように、2つの3パルストラックが重ね合わせられて1つの6パルストラックを形成し(各トラックの位置の数(ポジション数)は16であると仮定されている)、(1)−(3)の以下の処理が行われる:
【0099】
(1)(合成された)単独のトラックにおけるパルスの分布状態に従って、重ね合わせられたトラックの分布インデックスが計算される。例えば、具体例2で説明したI1
t、I2
t、I3
t及びIs
tの組み合わせ方法が使用されてもよい。
【0100】
(2)パルスが所属しているトラックの状態に応じて、トラックインデックスが設定される。例えば、
図6に示されているように、
図5の重ね合わせから得られた3つの位置にある6パルスは、異なるトラック分布状態を表し、対応する状態をそれぞれ指定するために異なるトラックインデックスが使用されてもよい。
図6における「0」はトラック0のパルスに対応し、「×」はトラック1のパルスに対応する。
【0101】
(3)単独のトラックに関するものでありかつパルスを重ね合わせることで得られる分布インデックスと、パルスが所属するトラックを指定するトラックインデックスとが一緒に組み合わせられ、最終的なコードインデックスが得られる。
【0102】
この具体例によるジョイント符号化も具体例1及び具体例2と同様にコードビットを節約し、更に、具体例3と組み合わせて使用することでコードビットを更に節約してもよい。
【0103】
具体例5:パルス復号化方法。この具体例の復号化方法は具体例1の符号化方法に従って得られたコードインデックスを復号化又はデコードし、復号化方法は、符号化方法の逆プロセスであり、
図7に示すように以下のステップを含む:
【0104】
D1:コードインデックスIndを取得し、そのコードインデックスから第1のインデックスI1を抽出し、第1のコードインデックスI1に応じて、パルスを有する位置であってT個のトラックの各トラックにある位置の数{N
0,N
1,...,N
T-1}を決定する。
【0105】
Indから各インデックスの情報を抽出する処理は、符号化の際に複数のインデックスをIndに合成するのと逆の手順によって実行されてよい。例えば、各インデックスが固定的なフィールドに別々に保存されていた場合、各インデックスは直接的に抽出されてよい。
【0106】
I1を初期値として使用して他のインデックスを重ね合わせる具体例1による構造をIndが使用していた場合、先ずI1が抽出され、I1に対応する{N
0,N
1,...,N
T-1}の組み合わせに従って各トラックのIndex(t)がIndから分離される。この場合、I1はIndの独立した値の範囲に対応するので、デコードする側は、幾つかの一群の独立した値の範囲の中でIndが所属している値の範囲を判定し、かつIndが所属している値の範囲に対応する初期値に従って第1のインデックスI1を決定する。
【0107】
第1のインデックスI1に対応する1でないN
t値を有するトラックが存在する状況の場合、明らかに、そのトラックについて、I1はN
t値の組み合わせを決定し、更に抽出された追加的なインデックスIf
tにより実際のN
t値が決定され、この場合、分離されたIndex(t)はIf
tの情報を含んでいる。
【0108】
D2:各トラックの第2のインデックスI2
t及び各トラックの第3のインデックスI3
tをコードインデックスIndから抽出する。
【0109】
I1と同様に、I2
t及びI3
tの抽出も、Index(NN)への合成と逆の手順に従って実行され、独立した配置について抽出が直接的に行われてもよい。合成の後に重ね合わせが行われる具体例1の符号化方法がI2
t及びI3
tについて使用されていた場合、I2
t、I3
t、If
t(含まれていた場合)及びIs
t(含まれていた場合)はIndex(t)から分離され、合成プロセスに応じて逆の手順が実行される。
【0110】
例えば、If
t及びIs
tが含まれていない場合、I2
t=Index(t)%W
t(N
t)及びI3
t=Int[Index(t)/W
t(N
t)]であり、ここで%は剰余を求めることを表し、Intは端数処理又は丸める処理を表す。If
tが含まれている場合、I1を決定するのと同様に、Index(t)が所属する値の範囲に対応する初期値に従って追加的なインデックスIf
tが決定され、If
tが分離された後、決定されたN
t値に従ってI2
t、I3
t及びIs
t(含まれていた場合)が更に抽出される。
【0111】
D3:各トラックについて、第2のインデックスI2
tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定する。パルスを有する位置の分布は第1のインデックスI1及びIf
t(含まれていた場合)に対応する。
【0112】
I2
tをデコードする場合、I2
tをエンコードするのと逆の処理が使用される。エンコードの際にI2
tがある計算式を用いて取得されている場合、デコードの際に同じ計算式を用いることで逆の処理が実行される。エンコードの際にI2
tが問合せの関係(マッピングテーブル)を用いることで取得されている場合、デコードの際に同じ対応関係が使用される。
【0113】
D4:各トラックについて、第3のインデックスI3
tに従って、パルスを有する位置各々におけるパルス数を決定する。
【0114】
D5:各トラックについて、トラックの中でパルスを有する位置の分布P
t(N
t)及びパルスを有する位置各々におけるパルス数SU
t(N
t)に従って、トラックについてのパルスシーケンスを再構築する。
【0115】
パルスが極性を有する場合において、各トラックのパルスシーケンスが再構築されると、各々の極性インデックスs
t(n)が示すパルス極性情報に従って、パルスを有する各々の位置のパルス極性の正又は負の属性が復元される。
【0116】
具体例6:パルス復号化方法。この具体例の復号化方法は具体例2の符号化方法により得られたコードインデックスを復号化し、復号化の手順は符号化の手順と逆の手順であり、
図8に示されているように、以下のステップを含む:
【0117】
E1:コードインデックスIndを取得し、コードインデックスIndから各トラックの第1のインデックスI1
tを抽出し、第1のインデックスI1
tに応じて各トラックについてパルスを有する位置の数N
tを決定する。
【0118】
各トラックのパルスの総数NN
tが決定される場合(異なるビットレートの条件の下では、コードインデックスのビット総数は異なり、従って、デコードする側はコードインデックスの長さ(ビット数)に応じて各トラック伸そうパルス数NN
tを直接的に決定してもよい)、Index(t)の上限値I
max(t)が決定され、従って、各トラックのIndex(t)がIndから直接的に取得され、Index(t)の値の範囲に応じてI1
t及び対応するN
tが決定される。
【0119】
E2:各トラックの第2のインデックスI2
t及び各トラックの第3のインデックスI3
tをコードインデックスIndから抽出する。すなわち、I2
t及びI3
tはIndex(t)から取得され、これは具体例5のステップD2のように実行されてよい。パルス極性が含まれていた場合、Is
tが更に取得される。
【0120】
E3:各トラックについて、第2のインデックスI2
tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定し、パルスを有する位置の数は第1のインデックスI1
tに対応する。
【0121】
E4:各トラックについて、第3のインデックスI3
tに従って、パルスを有する位置各々におけるパルス数を決定する。
【0122】
E5:各トラックについて、トラックの中でパルスを有する位置の分布P
t(N
t)及びパルスを有する位置各々におけるパルス数SU
t(N
t)に従って、トラックについてのパルスシーケンスを再構築する。
【0123】
ステップE3ないしE5は具体例5におけるステップD3ないしD5と同様に実行されてもよい。
【0124】
具体例7:パルス復号化方法。この具体例の復号化方法は、具体例3の符号化方法に対応し、コードインデックスを取得するために具体例3の可変長符号化によるコードストリームを復号化し、本方法は
図9に示されているように以下のステップを有する:
【0125】
F1:符号化されているコードストリームからコードビットを抽出する。この数は第1の数である。
【0126】
F2:第1の数である復号化されたコードビット値が調整閾値THRよりも小さかった場合、本方法はステップF3に進み、そうでなかった場合はステップF4に進む。
【0127】
F3:第1の数であるデコードされたビット値をコードインデックスIndとして使用する。
【0128】
F4:そうでなかった場合、抽出されるコードビット数を第2の数まで増やし、コードビットの復号化された値からオフセット値THR
0を減算することで得られた値(第2の数)をコードインデックスIndとして使用する。
【0129】
この具体例の復号化方法によれば、符号化されているコードストリームからコードインデックスIndが取得された後、コードインデックスIndは、具体例5又は具体例6の復号化方法に従って更に復号化される。
【0130】
具体例8:パルス符号化装置又はパルスエンコーダ。この具体例のエンコーダは具体例1の符号化方法を実行するのに使用されてもよく、
図10に示されているように、以下の要素を含む:
【0131】
パルス統計情報処理部101は、T個のトラックにありかつ符号化される必要のあるパルスを取得するように形成されており、Tは2以上の整数であり;及び各トラックにありかつ符号化される必要のあるパルスについての統計情報を、位置に応じて別々に収集し、各トラックの中でパルスを有する位置の数N
tと、トラックの中でパルスを有する位置の分布と、パルスを有する各々の位置でのパルス数とを取得し、添え字のtはt番目のトラックを表し、t∈[0,T-1]である。
【0132】
インデックス演算部102は以下の要素を含む:
第1のインデックス部1021は、各トラックの中でパルスを有する位置の数{N
0,N
1,...,N
T-1}に従って、第1のインデックスI1を出力するように形成されており、I1は、パルスを有する位置の数の下で、各トラックの中でパルスを有する位置についての全ての可能な分布状態に対応し、パルスを有する位置の数はそれによって表現される。
【0133】
第2のインデックス部1022は、各トラックの中でパルスを有する位置の分布に従って、各トラックの第2のインデックスI2
tを別々に出力するように形成されており、I2
tは、I1に対応する全ての可能な分布状態の中で、対応するトラックの中でパルスを有する現在の位置の分布に対応する分布状態を示す。
【0134】
第3のインデックス部1023は、各トラックの中でパルスを有する位置各々におけるパルス数に従って、各トラックの第3のインデックスI3
tを別々に出力するように形成されている。
【0135】
インデックス合成部103は、各トラックの第1のインデックスI1並びに第2、第3のインデックスI2
t、I3
tの情報を合成し、コードインデックスIndを生成する。
【0136】
少なくとも1つの第1のインデックスが2以上の{N
0,N
1,...,N
T-1}の組み合わせに対応する場合、インデックス演算部102は追加的なインデックス部1024(
図10では破線枠のブロックで示されている)を更に有し、追加的なインデックス部1024は、第1のインデックスに対応する1でないN
tの値を有するトラックについて、トラックの中でパルスを有する現在の位置の数に対応する追加的なインデックスIf
tを決定し、追加的なインデックスIf
tは、パルスを有する位置の数の下で、トラックの中でパルスを有する位置についての可能な全ての分布状態に対応し、パルスを有する位置の数はそれによって表現される。この場合、インデックス合成部103は追加的なインデックスIf
tの情報をコードインデックスIndに組み込む。
【0137】
更に、具体例3の方法を使用することでコードインデックスについて可変長符号化が実行される場合、本具体例のパルスエンコーダ10はコードビット調整部104(
図10では破線枠のブロックで示されている)を更に有し、コードビット調整部104は、インデックス合成部103がコードインデックスを生成した後にコードインデックスIndを調整閾値THRと比較するように形成されている。この場合において、
THR≦2
Bmax-I
max(T)
であり、I
max(T)はIndの上限値を表し、Bmaxはコードインデックスを符号化するのに使用されるビット数の上限値を表し、
IndがTHRより小さかった場合、第1の数であるコードビットはIndを符号化するために使用され;そうでなかった場合、第2の数であるコードビットはIndにオフセット値THR
0を加えたものを符号化するために使用され、ただし、THR≦THR
0≦2
Bmax-I
max(T)であり、使用される第1の数は第2の数より小さく、第2の数はBmax以下であり、第1の数及び第2の数は共に正の整数である。
【0138】
具体例9:パルス復号化装置又はパルスデコーダ20。本具体例のデコーダは具体例5の復号化方法を実行するために使用されてよく、
図11に示されているように以下の要素を含む:
【0139】
第1の抽出部201は、コードインデックスIndを取得し、コードインデックスIndから第1のインデックスI1を抽出し、第1のインデックスに従って、T個のトラックの各トラックの中でパルスを有する位置の数{N
0,N
1,...,N
T-1}を決定するように形成されている。
【0140】
第2の抽出部202は、各トラックの第2のインデックスI2
t及び各トラックの第3のインデックスI3
tをコードインデックスIndから抽出するように形成されている。
【0141】
第1の復号化部203は、各トラックについて、第2のインデックスI2
tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定するように形成されており、パルスを有する位置の数は第1のインデックスに対応する。
【0142】
第2の復号化部204は、各トラックについて、第3のインデックスI3
tに従って、パルスを有する位置各々についてのパルス数を決定するように形成されている。
【0143】
パルス再構築部205は、各トラックについて、トラックの中でパルスを有する位置の分布とパルスを有する位置各々におけるパルス数とに従って、トラックについてのパルスシーケンスを再構築するように形成されている。
【0144】
少なくとも1つの第1のインデックスが2つ以上の{N
0,N
1,...,N
T-1}の組み合わせに対応する場合、本具体例のデコーダは次の要素を更に含む:
【0145】
追加的な抽出部206(
図11において破線枠のブロックで示されている)は、第1のインデックスに対応する1でないN
t値のトラックについて、トラックの中でパルスを有する現在の位置の数に対応する追加的なインデックスIf
tを抽出するように形成されており、追加的なインデックスIf
tは、パルスを有する位置の数の下で、トラックの中でパルスを有する位置についての可能な全ての分布状態に対応し、パルスを有する位置の数はそれによって表現される。この場合、第2の抽出部202は、対応するトラックの中でパルスを有する現在の位置の数に応じて、トラックの第2のインデックスI2
t及びトラックの第3のインデックスI3
tを抽出し、対応するトラックの中でパルスを有する現在の位置の数は追加的な抽出部206により抽出された追加的なインデックスIf
tによって決定される。
【0146】
更に、具体例7の方法を使用することで可変長符号化によるコードストリームについて復号化が行われる場合、本具体例のパルスデコーダ20は復号化ビット調整部207(
図11において破線枠のブロックで示されている)を更に有し、復号化ビット調整部207は、符号化されているコードストリームから、第1の数であるコードビットを抽出し;第1の数であるコードビットの復号後の値が調整閾値THRより小さかった場合、第1の数である符号ビットの復号後の値を、出力するコードインデックスIndとして使用し;そうでなかった場合、抽出される符号ビットの数を第2の数まで増やし、第2の数であるコードビットの復号後の値からオフセット値THR
0を減算することで得られた値を、出力するコードインデックスIndとして使用する。
【0147】
上記の実施の形態による方法のステップの全部又は一部が関連するハードウェアの動作を制御するプログラムにより実現されてよいことを、当業者は認めるであろう。プログラムはコンピュータで読み取ることが可能な記憶媒体に保存され、記憶媒体はリードオンリメモリ、ランダムアクセスメモリ、磁気ディスク又は光ディスク等を含んでよい。
【0148】
以上、本発明の実施の形態によるパルスの符号化及び復号化の方法並びにパルスコーデックが詳細に説明された。本発明の原理及び実現手段は具体的な実施の形態により説明されている。上記の実施の形態に関する説明は本発明による方法及び核心的なアイディアの理解を促すように行われているに過ぎない。本発明のアイディアによる具体的な実現手段及び応用例に対して、当業者は変形を施すことができる。従って本明細書は本発明を限定するように解釈してはならない。