本開示の実施形態は、データのビットストリームへの算術符号化及びデータのビットストリームからの算術復号化のための装置及び方法を提供しており、ビットストリームは、コーディングされたビット及び先頭トレーリング・ビットを含む。
本発明の実施形態は、独立クレームの特徴によって規定され、実施形態の更なる有利な実装は、従属クレームの特徴によって規定される。
実施形態によれば、符号化方法は、同じサイズの複数のチャネルのデータをビットストリームにエントロピー符号化するために提供され:複数のチャネルのうちのチャネルの各々からの第1のサイズの部分を多重化し、その後に、第1のサイズのその多重化された部分を、第1のサブストリームに符号化するステップ;複数のチャネルのうちのチャネルの各々からの第2のサイズの部分を多重化し、その後に、第2のサイズのその多重化された部分を、第2のサブストリームに符号化するステップを含み、符号化は、第1のサブストリーム及び第2のサブストリームへ独立に実行されるエントロピー符号化である。
各チャネルを別々に符号化する代わりに、異なるチャネルからの部分を多重化及び符号化することは、完成したサブストリームをより速く生成し、及び/又は個々のサブストリームの長さを制御して、例えばより均一な長さのサブストリームを取得する可能性を提供する。これは、複数のサブストリームに対して並列にエントロピー符号化及び/又はエントロピー復号化を実行する可能性を開く。
例示的な実装において、符号化方法は、異なるサイズの複数のチャネルの前処理データを含む同じサイズの複数のチャネルを生成して、同じサイズの複数のチャネルを取得するステップを更に含む。
任意のサイズのチャネルから同じサイズのチャネルを取得するオプションは、異なる種類の入力データに対する方法の適用可能性を提供する。
例えば、符号化方法は、第1のサブストリーム及び第2のサブストリームを、第1のサブストリームの長さを示す第1のサブストリーム長指標、及び第2のサブストリームの長さを示す第2のサブストリーム長指標とともにビットストリームに多重化するステップを更に含む。
ビットストリームにおいてサブストリームの長さを示すことは、異なるサイズを有するサブストリームの提供を可能にし、従って、より柔軟性のあるビットストリーム構成につながる可能性がある。
例示的な実装において、第1のサブストリーム長指標はビットストリームの中で第1のサブストリームに先行し、且つ第2のサブストリーム長指標はビットストリームの中で第2のサブストリームに先行している。
この特徴は、個々のサブストリームを抽出するために、全ビットストリームをバッファリングする必要性を回避する。
例えば、第2のサブストリーム長指標は、ビットストリームの中で第1のサブストリームに先行している。
第1のサブストリームの前に、連結された長さの指標を含むこのビットストリーム構造は、サブストリームの、ビットストリームからのより効率的な抽出を提供する可能性がある。
例示的な実装において、エントロピー符号化は算術符号化である。
算術符号化を使用して、レート低減できる可能性があるものに基づいて、効率的なエントロピー・コーディング・メカニズムが提供される可能性がある。
例示的な実装において、符号化方法は、第1のサブストリーム及び第2のサブストリームを、第1のサブストリームの第1のトレーリング・ビットの長さを示す第1のトレーリング・ビット長指標、及び第2のサブストリームの第2のトレーリング・ビットの長さを示す第2のトレーリング・ビット長指標とともにビットストリームに多重化するステップを更に含む。
最後の部分を符号化した後のエンコーダのステータスであるトレーリング・ビットは、サブストリームとは別個にシグナリングされてもよい。これにより、トレーリング・ビットの追加的な処理を実現することができる。
例えば、第1のトレーリング・ビット長指標はビットストリームの中で第1のサブストリームに先行し、且つ第2のトレーリング・ビット長指標はビットストリームの中で第2のサブストリームに先行している。
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時符号化の可能性であるかもしれない。
例えば、第2のトレーリング・ビット長指標は、ビットストリームの中で第1のサブストリームに先行している。
このようなビットストリーム構造は、ビットストリームの個々の部分のより高速な抽出に関する更なる可能性を提供する。
例示的な実装において、符号化方法は:第1のトレーリング・ビットをビットストリームに、第1のサブストリームの後に付加し、且つ第2のトレーリング・ビットをビットストリームに、第2のサブストリームの後に付加するステップを更に含む。
このビットストリーム構造は、別のサブストリームを抽出することなく、第1のサブストリーム及び対応するトレーリング・ビットを復号化することを可能にする。
例えば、第1のトレーリング・ビットは、ビットストリームの中で第2のサブストリームの後にある。
このようなビットストリーム構造は、ビットストリームからトレーリング・ビットを抽出する前に、個々のサブストリームの復号化を開始することを可能にする。
例示的な実装において、符号化方法は、第1のサブストリーム長指標、第2のサブストリーム長指標、第1のトレーリング・ビット長指標、第2のトレーリング・ビット長指標、第1のサブストリーム、第2のサブストリーム、第1のトレーリング・ビット、及び第2のトレーリング・ビットを含むビットストリームを、所定値を有するビットでパディングして、ビットストリーム長を、所定のバイト量の整数倍に合致するように調整するステップを更に含む。
この実装は、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に調整されたビットストリームを提供することが可能である。
例えば、第1のサイズは第2のサイズに等しい。
同じサイズの部分を使用することは、より効率的なパフォーマンスをもたらす可能性がある。一例として、ハードウェア及びソフトウェア実装に適したメモリ・ユニットを使用することが可能である。
例示的な実装において、第1のサブストリームに含まれる全ての部分、及び第2のサブストリームに含まれる全ての部分は、複数のチャネルのデータのシンボルの整数K倍であり、Kは1より大きい。
そのようなアプローチは、ソフトウェア及び/又はハードウェアにおける効率的な実装を提供する可能性がある。
例えば、シンボルはビットである。
例示的な実装において、符号化方法は、第1のサイズの部分及び第2のサイズの部分の多重化のためにシャッフリング方法を選択して後に適用するステップを更に含み、シャッフリング方法は:所定のシャッフリング方法のセットの中から選択され、且つ第1のサイズの部分及び第2のサイズの部分の順序を指定する。
部分は、サブストリーム・サイズのより均一な分布を達成するために、シャッフルされてもよい。
例えば、シャッフリング方法は、第1のサイズの部分に対して、第2のサイズの部分の巡回置換を実行する。
このようなシャッフリング方法は、サブストリームのより均一な長さ、並びに、好ましくはサブストリームのこのような均一な長さのシンプルな実装をもたらす可能性がある。
例えば、符号化方法は、反復的に実行され、その場合に、シャッフリング方法は:現在の第1のサブストリームの長さと過去の第1のサブストリームの長さに基づく統計値との間の差、及び/又は、現在の第2のサブストリームの長さと過去の第2のサブストリームの長さに基づく統計値との間の差に従って選択される。
シャッフリングは、経時的なサブストリーム間の長さの差を低減するために、符号化されるべき部分にわたって反復的に実行される可能性がある。
例えば、統計値は、推定された平均、メジアン、最小値、最大値、又は成長速度のうちの少なくとも1つに基づいている。
これらの統計値は、シャッフリングを制御するための適切な手段を提供する可能性があり、従ってサブストリーム・サイズを制御することを改善する可能性がある。更に、これは、ストリーミング・プロセス内でのより均一な負荷を許容する可能性がある。
例示的な実装において、エントロピー符号化は算術符号化であり、且つシャッフリング方法は、算術符号化におけるレンジ・インターバルの現在の状態に従って選択される。
これは、算術エンコーダに関するインターバルの現在のレンジの値が、符号化のための所定の最小レンジに近いか否かを考慮することが可能である。これにより、符号化中の再正規化を回避することができる。
例示的な実装において、エントロピー符号化は、第1のサブストリームを第1のエントロピー・エンコーダで生成し、第2のサブストリームを第2のエントロピー・エンコーダで生成することを含み、且つ第1のエントロピー・エンコーダ及び第2のエントロピー・エンコーダによるエントロピー符号化は少なくとも部分的に並列に実行される。
サブストリームの並列符号化は、完全なビットストリームのより高速な符号化をもたらす可能性がある。
例えば、チャネルは、ニューラル・ネットワークの出力チャネル又は潜在表現チャネルである。
ニューラル・ネットワークは、典型的には、同じサイズ又は少なくとも固定サイズのチャネルを提供し、これは、上記の実施形態及び例を、これらのチャネルに特に適切且つ容易に適用可能にする。
例示的な実装において、エントロピー符号化は算術符号化であり、且つ方法は、多重化された部分を第1のサブストリーム又は第2のサブストリームに符号化するステップに関し:多重化された部分をコーディングされたビットとエンコーダ・ステータス・ビットに算術符号化するステップであって、コーディングされたビットはサブストリームを形成する、ステップ;算術符号化された入力データのインターバルの最小値と最大値を決定するステップ;連続するエンコーダ・ステータス・ビットである先頭トレーリング・ビットであって、決定された最大値を表す第1の最上位ビットMSBの中で、決定された最小値を表す第2のMSB内のものと同じ値を有する先頭トレーリング・ビットの量を決定するステップであって、トレーリング・ビットは先頭エンコーダ・ステータス・ビットである、ステップ;及びトレーリング・ビット長指標において、先頭エンコーダ・ステータス・ビットの決定された量を指定するステップを含む。
完全なトレーリング・ビットの代わりに、先頭トレーリング・ビットをビットストリームに含めることは、ビットストリーム内のビットの量を低減し、従ってレートを低減し、例えば、同じ品質でシグナリングされるレートのビット量を低減することができる。
例えば、先頭エンコーダ・ステータス・ビットの量NumTrailingBitsは:
NumTrailingBits = CLZ((LOW+RANGE‐1) XOR LOW)
により決定され、CLZ()は先頭ゼロのカウントであり、LOWはインターバルの最小値であり、RANGEはインターバルのレンジである。
先頭トレーリング・ビットの量は、例えば、最も近いバイト境界に丸める代わりに、厳密に決定されてもよく、丸めることは、ビットストリーム内のビットの量を更に低減する可能性がある。
例示的な実装において、先頭エンコーダ・ステータス・ビットの後に、値が1である1ビットが、ビットストリームに含められる前に、付加される。
このようなアプローチは、代替的に1の値のビットを残すために使用される何らかの通常の慣行に従うことが可能である。
例えば、算術符号化の間に、インターバルの現在の最小値と現在の最大値は、事前に設定されたサイズのメモリに記憶され;コーディングされたビットをビットストリームに含めることは、固定ビットからの所定量のビットをメモリからビットストリームへ移動させることを含み;且つ固ビットは、現在の最小値及び現在の最大値のバイナリ表現のMSBで同じ値を有する連続するビットである。
2つの別個のサブストリームに対する方法のこのような独立した適用は、並列化のための前提条件を提供する。
例示的な実装において、算術符号化の間に、先頭エンコーダ・ステータスの量と固定ビットからの所定量のビットとの間の差が所定の閾値を下回る場合に;固定ビットからの所定量のビットまでゼロが続く、値が1である1ビットを後ろに付けることによって、先頭エンコーダ・ステータス・ビットから、トレーリング・コーディングされたビットが生成され;トレーリング・コーディングされたビットは、コーディングされたビットをビットストリームに含める前に、コーディングされたビットに含められ;且つゼロ先頭エンコーダ・ステータス・ビットの指標がビットストリームに含められる。
従って、トレーリング・ビットの量の指標とともに多くの先頭トレーリング・ビットをシグナリングすることは、高い処理労力に対応し、それを回避することができる。むしろ、より多くのコーディングされたビットを有し、ゼロ先頭トレーリング・ビットをシグナリングすることは、より少ない処理労力となる可能性がある。
例示的な実装において、算術符号化はレンジ符号化である。
それによって、算術符号化を利用する、限られたレジスタ又は概して高速なメモリ・サイズを有するハードウェア及びソフトウェア・アーキテクチャを改善することが可能である。
ビットストリームを、同じサイズの複数のチャネルのデータにエントロピー復号化するための復号化方法が提供され、本方法は:第1のサブストリームを第2のサブストリームとは独立に復号化し、第1のサブストリーム及び第2のサブストリームからの第1のサイズの部分及び第2のサイズの部分を、同じサイズの複数のチャネルに逆多重化するステップを含む。
各チャネルを別々に符号化する代わりに、異なるチャネルからの部分を多重化及び符号化することは、より均一な長さのサブストリームを復号化する可能性を提供する。これは、複数のサブストリームに対して並列にエントロピー復号化を実行する可能性を開く。
例えば、復号化方法は、同じサイズの複数のチャネルを後処理して、異なるサイズの複数のチャネルのデータを取得するステップを更に含む。
同じサイズのチャネルから任意のサイズのチャネルのデータを取得するオプションは、異なる種類のデータに対する方法の改善された適用性を提供する。
例示的な実装において、復号化方法は、第1のサブストリーム及び第2のサブストリームを、第1のサブストリームの長さを示す第1のサブストリーム長指標、及び第2のサブストリームの長さを示す第2のサブストリーム長指標とともに、ビットストリームから抽出するステップを更に含む。
ビットストリームにおいてサブストリームの長さを示すことは、異なるサイズを有するサブストリームの提供を可能にし、従って、より柔軟性のあるビットストリーム構成につながる可能性がある。
例示的な実装において、第1のサブストリーム長指標はビットストリームの中で第1のサブストリームに先行し、且つ第2のサブストリーム長指標はビットストリームの中で第2のサブストリームに先行している。
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時符号化又は復号化の可能性であるかもしれない。
例えば、第2のサブストリーム長指標は、ビットストリームの中で第1のサブストリームに先行している。
サブストリームの前に、連結された長さの指標を提供することは、ビットストリームの個々の部分のより高速な抽出を可能にすることができる。
例示的な実装において、エントロピー復号化は算術復号化である。
算術符号化は、レートの低減に寄与することが可能な効率的なエントロピー・コーディングである。
例示的な実装において、復号化方法は、第1のサブストリーム及び第2のサブストリームを、第1のサブストリームの第1のトレーリング・ビットの長さを示す第1のトレーリング・ビット長指標、及び第2のサブストリームの第2のトレーリング・ビットの長さを示す第2のトレーリング・ビット長指標とともに、ビットストリームから抽出するステップを更に含む。
ビットストリームにおいてサブストリームの長さを示すことは、異なるサイズを有するサブストリームの提供を可能にし、従って、より柔軟性のあるビットストリーム構成につながる可能性がある。
例えば、第1のトレーリング・ビット長指標はビットストリームの中で第1のサブストリームに先行し、且つ第2のトレーリング・ビット長指標はビットストリームの中で前記第2のサブストリームに先行している。
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時復号化の可能性であるかもしれない。
例えば、第2のトレーリング・ビット長指標はビットストリームの中で第1のサブストリームに先行している。
このようなビットストリーム構造は、ビットストリームの個々の部分のより高速な抽出に関する更なる可能性を提供する。
例示的な実装において、第1のトレーリング・ビットは、ビットストリームの中で第1のサブストリームの後にあり、且つ第2のトレーリング・ビットは、ビットストリームの中で第2のサブストリームの後にある。
このビットストリーム構造は、別のサブストリームを抽出することなく、第1のサブストリーム及び対応するトレーリング・ビットを復号化することを可能にする。
例えば、第1のトレーリング・ビットは、ビットストリームの中で第2のサブストリームの後にある。
このようなビットストリーム構造は、ビットストリームからトレーリング・ビットを抽出する前に、個々のサブストリームの復号化を開始することを可能にする。
例示的な実装において、第1のサイズは第2のサイズに等しい。
同じサイズの部分を使用することは、より効率的なパフォーマンスをもたらす可能性があり、例えば、ハードウェア及びソフトウェア実装に適したメモリ・ユニットを使用することが可能である。
例えば、第1のサブストリームに含まれる全ての部分、及び第2のサブストリームに含まれる全ての部分は、複数のチャネルのデータのシンボルの整数K倍であり、Kは1より大きい。
そのようなアプローチは、ソフトウェア及び/又はハードウェアにおける効率的な実装を提供する可能性がある。
例えば、シンボルはビットである。
例示的な実装において、符号化方法は、第1のサブストリーム長指標、第2のサブストリーム長指標、第1のトレーリング・ビット長指標、第2のトレーリング・ビット長指標、第1のサブストリーム、第2のサブストリーム、第1のトレーリング・ビット、及び第2のトレーリング・ビットを抽出した後に、ビットストリームの残りのビットを破棄するステップを更に含む。
このようなアプローチは、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に調整されたビットストリームを提供することが可能である。
例示的な実装において、復号化方法は、第1のサイズの部分及び第2のサイズの部分の逆多重化のためにシャッフリング方法を決定して適用するステップを更に含み、シャッフリング方法は:所定のシャッフリング方法のセットの中の1つであり、且つ第1のサイズの部分及び第2のサイズの部分の順序を指定する。
部分は、サブストリーム・サイズのより均一な分布を達成するために、シャッフルされてもよい。
例えば、シャッフリング方法を決定することは、ビットストリームに含まれる制御情報に基づいている。
デコーダ側で部分を正しくシャッフルするために、エンコーダ側で使用されたシャッフリング方法は、ビットストリーム内でシグナリングされてもよい。
例示的な実装において、エントロピー復号化は、第1のサブストリームを第1のエントロピー・デコーダで復号化し、第2のサブストリームを第2のエントロピー・デコーダで復号化することを含み、且つ第1のエントロピー・デコーダ及び第2のエントロピー・デコーダによるエントロピー復号化は少なくとも部分的に並列に実行される。
サブストリームの並列復号化は、完全なビットストリームのより高速な復号化をもたらす可能性がある。
例えば、チャネルは、ニューラル・ネットワークの出力チャネル又は潜在表現チャネルである。
ニューラル・ネットワークは、典型的には、同じサイズ又は少なくとも固定サイズのチャネルを提供し、これは、上記の実施形態及び例を、これらのチャネルに特に適切且つ容易に適用可能にする。
例示的な実装において、エントロピー復号化は算術復号化であり、且つ方法は、多重化された部分を第1のサブストリーム又は第2のサブストリームから復号化するステップに関し:先頭エンコーダ・ステータス・ビットの量を、トレーリング・ビット長指標から抽出するステップであって、サブストリームはコーディングされたビットを含み、トレーリング・ビットは先頭エンコーダ・ステータス・ビットである、ステップ;抽出された先頭エンコーダ・ステータス・ビットに、ゼロを、エンコーダ・ステータス・ビットの所定の最大長まで後付けすることを含むエンコーダ・ステータス・ビットを決定するステップ;及びコーディングされたビット及び決定されたエンコーダ・ステータス・ビットを含むビットから、逆多重化された部分の算術復号化を行うステップを含む。
トレーリング・ビットの先頭エンコーダ・ステータス・ビットからの再構成は、ビットストリーム内のより少ない量のビットを使用することによって、コーディングされたビット及びトレーリング・ビットからの復号化を提供する。
例えば、エンコーダ・ステータス・ビットの決定は、抽出された先頭エンコーダ・ステータス・ビットに、エンコーダ・ステータス・ビットの所定の最大長までゼロが続く、値が1である1ビットを後ろに付けることから構築される。
このアプローチは、算術エンコーダの完全な出力を再構成することを可能にし、従って、適切な入力を算術デコーダに提供する。
例示的な実装において、算術復号化はレンジ復号化である。
レンジ符号化は、限られたレジスタ又は概して高速なメモリ・サイズを有するハードウェア及びソフトウェア・アーキテクチャに特に好適である可能性がある。
例示的な実装において、非一時的な媒体に記憶されたコンピュータ・プログラムは、1つ以上のプロセッサで実行されると、上記のうちの何れかの方法のステップを、1つ以上のプロセッサに実行させるコード命令を含む。
実施形態によれば、同じサイズの複数のチャネルのデータをビットストリームにエントロピー符号化するための装置は:複数のチャネルのうちのチャネルの各々からの第1のサイズの部分を多重化し、その後に、第1のサイズの多重化された部分を、第1のサブストリームに符号化し;複数のチャネルのうちのチャネルの各々からの第2のサイズの部分を多重化し、その後に、第2のサイズのその多重化された部分を、第2のサブストリームに符号化するように構成された処理回路を含み;符号化は、第1のサブストリーム及び第2のサブストリームへ独立に実行されるエントロピー符号化である。
実施形態によれば、ビットストリームを、同じサイズの複数のチャネルのデータにエントロピー復号化する装置は:第1のサブストリームを第2のサブストリームとは独立に復号化し、第1のサブストリーム及び第2のサブストリームからの第1のサイズの部分及び第2のサイズの部分を、同じサイズの複数のチャネルに逆多重化するように構成された処理回路を含む。
装置は上述した方法の利点を提供する。
本発明は、ハードウェア(HW)及び/又はソフトウェア(SW)又はそれらの任意の組み合せで実装することが可能である。更に、HWベースの実装は、SWベースの実装と組み合わせられてもよい。
1つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載されている。その他の特徴、目的、及び利点は、明細書、図面、及びクレームから明らかになるであろう。
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様、又は本発明の実施形態が使用される可能性のある特定の態様を例示として示す添付図面に対する参照が行われる。本発明の実施形態は、他の態様で使用されてもよく、図面に示されていない構造的又は論理的な変更を含んでもよいことが理解される。従って、以下の詳細な説明は、限定的な意味に解釈されるべきではなく、本発明の範囲は、添付のクレームによって定められる。
例えば、説明される方法に関連する開示は、方法を実行するように構成された対応するデバイス又はシステムにも当てはまる可能性があり、その逆も可能であることが理解される。例えば、1つ以上の特定の方法ステップが説明される場合、対応するデバイスは、説明された1つ以上の方法ステップを実行するための機能ユニットのような1つ以上のユニット(例えば、1つ以上のステップを実行する1つのユニット、又は複数のステップのうちの1つ以上を各々が実行する複数のユニット)を、たとえそのような1つ以上のユニットが図面において明示的に図示も説明もされていなかったとしても、含む可能性がある。一方、例えば、機能ユニットのような1つ以上のユニットに基づいて、特定の装置が説明される場合、対応する方法は、1つ以上のユニットの機能を実行するための1つのステップ(例えば、1つ以上のユニットの機能を実行するための1つのステップ、又は複数のユニットのうちの1つ以上の機能を各々が実行する複数のステップ)を、たとえそのような1つ以上のステップが図面において明示的に図示も説明もされていなかったとしても、含む可能性がある。更に、本件で説明される様々な例示的な実施形態及び/又は態様の特徴は、別意に具体的に述べられていない限り、互いに組み合わせられる可能性があることは理解される。
ビデオ・コーディングは、典型的には、ビデオ又はビデオ・シーケンスを形成する一連のピクチャの処理を示す。ビデオ・コーディングの分野では、用語ピクチャの代わりに、用語フレーム又は画像が同義語として使用される可能性がある。ビデオ・コーディングは、2つの部分、ビデオ符号化又はビデオ復号化を含む。ビデオ符号化は、ソース側で実行され、典型的には、ビデオ・ピクチャを表現するのに必要なデータ量を減らすために(より効率的な記憶及び/又は伝送のために)オリジナル・ビデオ・ピクチャを(例えば、圧縮により)処理することを含む。ビデオ復号化は、宛先側で実行され、典型的には、ビデオ・ピクチャを再構成するために、エンコーダと比較して逆の処理を含む。ビデオ・ピクチャ(又は、後に説明されるように、一般的にはピクチャ)の「コーディング」に対する実施形態は、ビデオ・ピクチャの「符号化」及び「復号化」の両方に関連するように理解されるものとする。符号化の部分及び復号化の部分の組み合わせはまた、CODEC(COding and DECoding)とも言及される。
ロスレス・ビデオ・コーディングの場合、オリジナル・ビデオ・ピクチャを再構成することが可能であり、即ち、再構成されたビデオ・ピクチャはオリジナル・ビデオ・ピクチャと同じ品質を有する(記憶又は伝送の間に、伝送エラー又はその他のデータ・ロスは無いことを仮定している)。ロスレスでないビデオ・コーディングの場合、ビデオ・ピクチャを表現するデータ量を減らすために、例えば量子化によって更なる圧縮が実行され、ビデオ・ピクチャはデコーダ側で完全には再構成することができず、即ち、再構成されたビデオ・ピクチャの品質は、オリジナル・ビデオ・ピクチャの品質より低い又は悪い。
算術符号化
エントロピー・コーディングは、典型的には、ロスレス・コーディングとして使用される。算術コーディングは、エントロピー・コーディングの一種であり、メッセージを表現するインターバル(レンジ)内のバイナリ実数としてメッセージを符号化する。ここで、用語メッセージはシンボルのシーケンスを示す。シンボルは、シンボルの予め定められたアルファベットから選択される。例えば、アルファベットは、2つの値0及び1から構成されてもよい。そして、このようなアルファベットを使用するメッセージは、ビットのシーケンスである。シンボル(0及び1)は、互いに異なる頻度でメッセージ中に生じる可能性がある。換言すれば、シンボル確率は不均一である可能性がある。実際、分布の均一性が低いほど、一般的にはエントロピー・コードによって、特に算術コードによって達成可能な圧縮は高まる。算術コーディングは、アルファベットの各シンボルに対するシンボル確率を指定する事前に知られた確率モデルを利用する。
アルファベットは、バイナリである必要はない。むしろ、アルファベットは、例えば8つの値0ないし7から構成されてもよい。一般に、任意のサイズを有する任意のアルファベットが使用される可能性がある。典型的には、アルファベットは、コーディングされるデータの値のレンジによって与えられる。
メッセージを表現するインターバルは、メッセージがコーディングされるアルファベット・シンボルの確率に従って、初期レンジを分割することによって取得される。
例えば、現在のインターバルを、始めに初期インターバル[0,1)であるとする。メッセージの各シンボルについて、以下の2つのステップが実行される:
1)現在のインターバルをサブインターバルに、それぞれ可能性のあるアルファベット・シンボルにつき1つずつに細分する。シンボルのサブインターバルのサイズは、(シンボル・ソースの)確率モデルに従って、そのシンボルがメッセージ内で次のシンボルになるであろうという推定された確率に比例する。
2)メッセージ内で実際に次に生じるシンボルに対応するサブインターバルを選択し、選択されたサブインターバルを、新たな現在のインターバルにする。
第3のステップとして、現在のインターバルを他の全ての可能性のあるインターバルから区別するために十分なビットが出力される。このステップは、ステップ1及び2における符号化の間に既に実行されてもよいし、或いは、メッセージ全体の符号化の後に実行されてもよい。メッセージの全てのシンボルに対してステップ1)及び2)を繰り返した後に取得されるインターバルの長さは、個々のシンボルの確率の積に明らかに等しく、これはメッセージ内のシンボルの特定のシーケンスの確率でもある。
理論上、算術コーダーは、任意の長さのメッセージを符号化するために、0から1までのインターバルを再帰的に分割し、その結果、ますます小さくなるインターバルをもたらす。実際には、システムは有限ビット深度によって制限され、離散値のみが表現可能である。従って、インターバルが小さいほど、より高精度の演算が必要となる。更に、メッセージ全体が読み込まれるまで、出力が生成されることはない。これらの問題の両方に対する解決策は、何らかのビットをそれらが分かれば直ぐに出力し、次いで、各出力ビットについて現在のインターバルの長さを2倍にし、その結果、インターバルの(依然として)未知の部分のみを反映するようにすることであるかもしれない。実際には、浮動小数点又は厳密な有理数ではない十分に長い整数で現在のインターバルを記憶することによって、演算を行うことができる。
実際の使用のために改良された算術コーダーの変形は、レンジ・コーダーと呼ばれ、これはインターバル[0,1)を使用せず、例えば0から255までの整数の有限レンジを使用する。このレンジはアルファベット・シンボルの確率に従って分割される。残存するレンジが小さすぎる場合、全てのアルファベット・シンボルをそれらの確率に従って記述するために、レンジは再正規化される可能性がある。
本件で使用される用語に関し、現在のインターバルは、その最小値(LOWとして示される)及びその最大値(HIGHとして示される)によって与えられる。インターバルの長さはRANGEとして示される。一般に、HIGH=LOW+RANGEであり、RANGEは最小サイズの(区別可能な)サブインターバルの数で表される。シンボルを符号化するための最小レンジはBOTTOMである。この最小レンジは、最も可能性の低いシンボルが依然として少なくとも1の有効レンジを有することを保証する。換言すれば、BOTTOMは、レンジが全てのアルファベット・シンボルに対応する区別可能なインターバルに依然として分割できることを保証するために、アルファベット・シンボル及びそれらの確率に基づいて決定されることが可能な設計パラメータである。
HIGH位置は、初期最大レンジをカバーするために幾つのビットが必要とされるかを示す。BOTTOM位置は、別のシンボルを符号化するための最小レンジをカバーするために幾つのビットが必要とされるかを示す。HIGH位置と所定のTOP位置との間のビットの量は、ビットの最小部分であって、ビットストリームにストリーミングされる(挿入される)ことが可能であり且つコーディングされたビットになるものに対応する。
図1は、算術コーディングの例示的な手順を概略的に示す。コーディングされるメッセージは、2つの可能なシンボルA及びBを有するアルファベットで提供される。アルファベットのシンボル{A,B}は、確率P(A)=2/3及びP(B)=1/3を有する。符号化されるべきメッセージはAABAを読み込む。
ステップ0は、最初に、LOW=0(ステップ0では、low0=0)であるので、ここではHIGHに対応する長さRange0 110を有する初期インターバルを示す。Range0の下半分では、Range0内の数のバイナリ表現の先頭ビットは1 111であり、Range0の上半分では、先頭ビットは0 112である。換言すれば、初期レンジの上半分に入る、任意のステップにおける現在のインターバルは、第1の先頭ビット0を有することになり、初期レンジの下半分に入る現在のインターバルは、第1の先頭ビット1を有することになる。ここで、例えば、初期レンジ内の任意の数(コード値)が8ビットで表現可能であると仮定すると、そのレンジは0から255であり、HIGH=255となる。
ステップ1では、Range0が確率に従って分割され、第1のシンボルA0を符号化する。この例では、初期インターバルは、全レンジ・サイズのサイズ1/3 122(シンボルB0に対応する)及び2/3 121(シンボルA0に対応する)を有する2つのインターバルに分割される。確率に従って分割することは、初期インターバルが、アルファベット内のシンボル(ここでは、2つのシンボルA及びB)の数に等しい数のサブインターバルに分割され、インターバルのサイズはインターバルによって表現されるシンボルのそれぞれの確率に比例することを意味する。次いで、メッセージ・シンボルA0に対応する上側サブインターバルRange1=P(A0)*Range0が、次のステップの現在のインターバルとして選択される。
ステップ2において、シンボルA0のレンジ、Range1 120は確率に従って分割される。次のメッセージ・シンボルはAである。メッセージA0A1 131を記述する残存するRange2=P(A1)*Range1は、ビット0で符号化されるRange0の上半分内に完全にあるので、ビット0を符号化ビットストリームに追加することが実行される。この特定の例示的な実装では、可能な限り速やかにビットがビットストリームに追加され、解像度を2倍にするために、再正規化140が実行される。現在の最大レンジはここではステップ0の初期レンジの上半分である。この現在の最大レンジの上半分はビット0に割り当てられ、現在の最大レンジの下半分はビット1に割り当てられる。
ステップ3におけるメッセージA0A1B2 141は曖昧性なしに符号化できず、なぜならRange3はビット1(現在の最大レンジの対応する下半分)及びビット0(現在の最大レンジの対応する上半分)とオーバーラップするからであり、従ってキャリー150が実行される。何もストリーミングされない(ビットはビットストリームに含まれない)。Range3は、アルファベットのシンボルの確率に従ってステップ4で分割される。
ここで、符号化されるべきメッセージは、A0A1B2A3 151である。Range4は依然として両方の可能なビットとオーバーラップしており、符号化されるべき更なるシンボルはないので、ステップ5及び6において、最終処理160が実行される。これは、メッセージAABAに対する曖昧性のないコード0011を作成するために実行される幾つかの再正規化を含む。
図2ないし図7は、レンジ・エンコーダの例を示し、アルファベット220{0,1,2,3,4,5,6,7}の8つのシンボルは、標準正規分布の確率密度関数PDF 230に従う確率を有する。シンボルは、累積分布関数CDF 240によってレンジにマッピングされる。符号化されるメッセージは4420を読み込む。符号化のための最大開始レンジHIGHは、この例では、255のコード値に対応する8ビットによって表現される。シンボルを符号化するための最小レンジは、この例ではBOTTOM=16である。この最小レンジは、累積分布関数が適用される場合に、最も可能性の低いシンボル“0”及び“7”でさえ、少なくとも1の有効レンジを依然として有することを保証する。例えば、正規分布は、8つのシンボルについて以下の数:1,1,2,3,4,2,2,1の最小インターバルをもたらす。
図2は、初期レンジ210 Range0=HIGH=255=11111111.bが(ここで、.bは数のバイナリ表現である)、ガウス確率密度関数PDF 230に従ってアルファベットのシンボル220にマッピングされることを示す。Range0のパーティション化は、累積分布関数CDF 240から得られる。これは、符号化されるべきメッセージの第1のシンボル、即ち“4”が、下限エンドポイント250 Low1=71=01000111.bと、除外される上限エンドポイント260 Low1+Range1=199=11000111.bとを有するインターバルであってRange1=128に対応するインターバル内のコード値の何れかによって表現されることを意味する。total=const=16 270は、1/16の動作精度を意味する。これは、最も可能性の低いシンボルに割り当てられるサブレンジが、現在のレンジの1/total=1/16であることを示す。total 270は、累積分布関数によって決定される。
このインターバルのバイナリ表現は、HIGH、TOP、及びBOTTOM位置の指標とともに図7Aに示されている。HIGH位置740は、初期最大レンジ(この場合は8)をカバーするために幾つのビットが必要とされるかを示す。BOTTOM位置760は、別のシンボル(この場合は4)を符号化するための最小レンジをカバーするために幾つのビットが必要とされるかを示す。HIGH位置740と所定のTOP位置750との間のビットの量は、ビットストリームにストリーミングされ(挿入され)、次いでコーディングされたビットになることが可能なビットの最小部分に対応する。図1に関連して上述した算術コーディングの場合、HIGH位置740とTOP位置750との間には1ビットしかない。この例のレンジ・コーディングの場合、HIGH位置740とTOP位置750との間に2ビットある。図7A(並びに図7B-7D)では、インターバル720a-dの最小値及びインターバル710a-dの最大値がバイナリで表現されている。これは、実際には、現在のインターバル、従って符号化の現在の結果を記憶する目的で使用される2つのレジスタに対応することが可能である。
図3では、累積分布関数CDF 340が、Low1=71から開始してRange1=128に適用されて、アルファベット220のシンボルをレンジにマッピングする。メッセージの次のシンボルは“4”である。これは、メッセージ44を表現する新たな現在のインターバル350-360という結果をもたらす。図7Bに示されるこのインターバルは、新しい下限(現在の最小値)720b Low2=106=01101010.bと、新たな上限(現在の最大値)710b Low2+Range2=170=10101010.bとを有する。新たなRange2 320は64に等しい。
図4及び図7Cは、符号化手順の次のステップを示す。Range2 320は依然としてBOTTOMより大きいので、このレンジは累積分布関数440に従って再び分割される。これは、シンボル2に対して、Low3=111=01101111.bの低い値720cとRange3=4 410とをもたらす。従って、メッセージ442は、Low3から、Low3+Range3=115=01110011.b 710cまでのレンジによって表現される。
HIGH及びTOP位置の間の2つのビット730が等しいので、それらは、コーディングされるビットとしてストリーム731に出力されることが可能である。図7Dを参照されたい。
図5は、Range3=4 410がBOTTOM=16より小さく、従って再正規化手順が必要であるので、シンボルのレンジへの適切なマッピングは不可能であることを示す。図7Dは、新たなRange4がBOTTOM以上になるまで、全てのビット表現が左にシフトされることを示す。従って、新たなRange4=(4<<2)=16 610に到達する。新たな上限710eは、現在のもの710dから、2回左シフトした後に得られる。2つのコーディングされるビットを除いて、同じシフトがLow3に適用され、これは既にストリームLow4=188=10111100.b 720dの一部である。
メッセージ442は、ここで、444=0110111100.bと460=0111001100.bとの間の値の何れかによって符号化される。
図6は、最後のシンボル“0”の符号化を示す。確率分布は、インターバルの低い方の値Low5=188=10111100.b 650とRange5=1 620をもたらす。符号化されるべき更なるシンボルは存在しないので、Low5とRange5は、符号化されたメッセージを(コーディングされるビットとともに)表現するトレーリング・ビットのレンジ・インターバルを記述する。一般に、インターバルからの任意の値を使用して(ビットストリームに含めて)、インターバルを、従ってコーディングされたメッセージ(シンボルのシーケンス)を、表現することが可能である。従って、トレーリング・ビットは、この最終レンジ・インターバルから任意に選択されることが可能である。本例では、Range5=1 620は、トレーリング・ビットに対して単一の値、即ちLow5=188=10111100.b 650をもたらす。従って、メッセージ4420は、コーディングされるビットにトレーリング・ビットを付加することによって符号化され、コーディングされた値444=0110111100.bをもたらす結果となる。
算術復号化
図8は、例示的な復号化プロセスを示す。デコーダは、コーディングされた値(ビット)を順次受信する。受信された符号化された値820は、完全なRange0=HIGH=255 810内にある。確率分布関数はデコーダ側で既知であり、従って、シンボル220のレンジへのマッピングは累積分布関数830により行われる。デコーダは、このマッピングのインバースを知らないので、シンボルの決定は、探索プロセスを必要とする。デコーダは、最も可能性の高いシンボル“4”を選択することによって、符号化されたシンボルについて第1の推測840を行い、このシンボルに対応するレンジのLow値841を計算し、受信されたコーディングされた値820がこのLow値841よりも高いかどうかをチェックする。
受信されたコーディングされた値820が第1の推測840のLow値841よりも小さいので、次の推測850は、レンジ内でより低い値、即ちシンボル“0”,“1”,“2”又は“3”のうちの1つにマッピングされるシンボルである。シンボルの残りのインターバルのほぼ中間にあるLow値を選択することは、正しいシンボルを得るためにより少ないステップが必要とされるので、より高速な復号化プロセスにつながる。この例では、比較のために選択される次のLow値851は、シンボル“2”に対応する。
シンボル“2”に対するテストは、受信されたコーディングされた値は、シンボル“2”を符号化するレンジのLow 851よりも高いことをもたらす。従って、受信されたコーディングされた値は、シンボル“2”又は“3”を表現することが可能である。最後のチェック860は、“3”に対応するレンジのLow値861が、コーディングされた値820より高いことを明らかにする。従って、受信されたコーディングされた値820は、シンボル“2”として復号化される。
複数チャネルのエントロピー・コーディング
図13は、単一のエンコーダ1320の方式を示す。ここで、用語「単一エンコーダ」は、エンコーダが直列に動作する、即ち入力を並列にではなく順次に符号化することを示す。入力データは、複数のチャネル1310から構成されてもよいし又は含んでいてもよい。従って、この例示的な符号化プロセスでは、各チャネルの部分が順次符号化される。チャネル1330の各々からの第1の部分サイズの部分が符号化され(異なるチャネルからの同じ第1のサイズの部分の多重化をもたらす)、その後に、チャネル1340の各々からの第2の部分サイズの部分が続き、異なるチャネルからの同じ第2のサイズの部分の多重化をもたらす)。最後の部分を符号化した後にエンコーダに残っているトレーリング・ビット1350は、メイン・シングル・ストリームに後付けされる。
シングル(又はシングル・コア)エントロピー・エンコーダでは、コーディングの終わりに1つの最終化ステップのみがあり、ストリームは0ビットでパディングされて、バイトを整列させる。少数の余分なビットをシグナリングすることに問題はない。しかしながら、そのような符号化を並列化し、それに応じて復号化も行うことは困難である。
図14は、並列(例えば、マルチ・コア)エンコーダ1420の例示的な方式を示す。入力データ・チャネル1410の各々は、コーディングされたビット1430-1433及びトレーリング・ビット1440-1443を含む個々のサブストリームに符号化されることが可能である。サブストリーム1450の長さはシグナリングされる。
並列処理実装では、ビットストリームは、最終ステップにおいて連結される幾つかのサブストリームから構成される。サブストリームの各々は、ファイナライズされることを必要とする。これは、サブストリームが互いに独立して符号化されることに起因しており、その結果、1つのサブストリームの符号化は(従って、復号化も)、別の1つ以上のサブストリームの以前の符号化(又は復号化)を必要としない。
エントロピー符号化、特に算術符号化のファイナライゼーションは、ビットストリームに1つ以上のトレーリング・ビットを符号化すること、及び/又は最も近いバイト境界又は所定量のビットの境界まで、パディングすることを含む可能性がある。しかしながら、複数のサブストリームが並列に符号化される場合、パディングは、膨大な量の無意味なパディング・ビットを含む結果となる可能性がある。この問題は、各スレッドにおけるトレーリング・ビットの数が、最も近いバイト境界に丸められないならば、解決されるかもしれないが、かなりの先頭ビットがトレーリング・ビットの中で決定され、それらの量がビットストリーム内で指定される。
これは図15に例示的に示されており、ここで、トレーリング・ビット1540-1543は、ビットストリーム1570に、コーディングされたデータ1530-1533の直後に追加される。トレーリング・ビットの長さ1560もビットストリーム1570に含まれる。この例示的な実施形態におけるマルチ・コア・エンコーダは、幾つかの入力データ・チャネル1510の部分を多重化し、場合によってはシャッフルすることを、それらの部分を複数のサブストリームに符号化する前に行う。
サブストリームを生成するための完全な部分多重化は、サブストリームを符号化する前に形成される必要はないことに留意されたい。それどころか、エントロピー・エンコーダは、部分を直接的に-部分ごとに-異なるチャネルから受信し、それらをサブストリームに処理することができる。シャッフリングという用語は、多重化の内の(従って、多重化を符号化した後のサブストリーム内の)部分のシーケンス(順序)を指す。
入力データ・チャネルは、何らかのデータをニューラル・ネットワークで処理することによって得られるチャネルを示す場合がある。例えば、入力データは、ニューラル・ネットワークの出力チャネル又は潜在表現チャネルのような特徴チャネルであってもよい。例示的な実装において、ニューラル・ネットワークは、ディープ・ニューラル・ネットワーク及び/又は畳み込みニューラル・ネットワークなどである。ニューラル・ネットワークは、ピクチャ(静止画又は動画)を処理するように訓練されることが可能である。処理は、ピクチャ符号化及び再構成のため、又は物体認識、分類、セグメンテーションなどのようなコンピュータ・ビジョンのためのものであってもよい。一般に、本開示は、如何なる特定の種類のタスク又はニューラル・ネットワークにも限定されない。本開示は、ニューラル・ネットワークの符号化及び復号化チャネルに容易に適用可能であるが、そのようなアプリケーションに限定されない。むしろ、本開示は、データの任意のソースとして一般的に理解されるべき複数のチャネルから到来する任意の種類のデータを符号化するために適用可能である。更に、チャネルは、ソース・データの前処理によって提供されてもよい。
図18は、異なるサイズを有するCh0,Ch1,Ch2,及びCh3によって示される入力データ・チャネル1810の前処理を、それらの対応する確率分布1820(ProbCh0,ProbCh1,ProbCh2,及びProbCh3として示される)とともに例示的に示す。用語サイズは、本件では、チャネルのビット、シンボル、又は要素の数(量)を示す。一般に、ニューラル・ネットワーク・チャネルのようなチャネルは、垂直及び水平のようなより多くの次元を有する可能性があるが、これらは、チャネル要素に対してシリアルに(順次に)実行されるエントロピー・コーディングにおいて典型的には役割を演じていない。エントロピー・コーディング及びチャネル・タイプに応じて、符号化は、チャネル・ビット、チャネル・シンボル、又は一般にチャネル要素に基づいていてもよい(例えば、確率モデルが提供されてもよい)。しかしながら、本開示は、チャネルを、1つより多い次元で同じサイズの新たなチャネルに分割するためにも適用可能である場合がある。
異なるサイズのこれらの入力チャネル1810は、同じサイズ1830のチャネルを取得するために前処理される。従って、必要とされるサイズよりも大きい入力チャネルは、分割される可能性がある(1812)。図18に見ることができるように、例えば、チャネルのうちの少なくとも1つ(ここでは2つのチャネルCh1及びCh2)は、2つのチャネル(例えば、ch0aとch0b、及びch2aとch2b)に分割される。分割は、考えられる任意の方法で行われてもよく、例えば、チャネルはn個(nは連続する部分より大きな整数)に分割される。代替的に、部分は連続的ではなく、チャネルからの各シンボル又は各k個のシンボルを1つの又は新たなチャネルに反復的に割り当てる(チャネル部分を新たなチャネルにインターリーブする)ことによって形成される。
分割されたチャネルCh0及びCh2の対応する確率分布は、同じサイズの新たなチャネルch0a,ch0b,ch2a,及びch2bに適合させられている。換言すれば、新たなチャネル(例えば、ch0a及びch0b)は、それらが導出された元のチャネル(例えば、Ch0)の分布とは異なる分布を有する可能性がある。
チャネル(例えば、Ch3)が前記の同じサイズよりも小さい場合、分割後に、同じサイズの新たなチャネルをもたらすためにゼロでパディングされてもよい1813。代替的に、パディングは、分割の後に実行されてもよい:例えば、分割チャネルの最後の部分が同じサイズより小さい場合、図18に示されるようにゼロでパディングされてもよい。しかしながら、パディングは、最後の新たなチャネルにおいてのみ行われる必要はなく、より多くの新たなチャネルに挿入されること、例えば新たなチャネルの間で分散されることが可能である。
例えば、(Ch0及びCh2のような)チャネルは、n個の新たなチャネルに分割されることになるが、nで割り切れない(例えば、図18のケースでは、2で割り切れない)サイズを有する可能性がある。そのような場合、チャネル(Ch0又はCh2)からのデータのみで同じサイズのn個のチャネルを形成することは不可能であろう。この問題を克服するために、チャネル又はn個の新たなチャネルのうちの1つ以上がパディングされてもよい。一部の例示的な実装では、パディングに対して追加の理由があり得ることに留意されたい。例えば、チャネル(Ch0又はCh2)からのデータは、ビット・ベースではなく、例えばバイト若しくはシンボル又はその他のサイズのようなシンボル・ベースで、新たなチャネル(ch0a,ch0b,ch2a,及びch2b)に分割されてもよい。従って、ビット単位ではなくシンボル単位のチャネル・サイズがnで割り切れる必要がある。
ゼロによってパディングすることは、単に1つの例示的なオプションに過ぎない。パディングは、任意の値のビット又はシンボルによって実行されてもよい。それは、チャネル・ビット又はシンボルなどの反復によってパディングされてもよい。
デコーダ側では、新たなチャネルが復号化されることになる。異なるサイズのチャネル(例えば、Ch0及びCh2)を形成するために、パディングは、デコーダ側で除去されるものとする。これを達成するために、デコーダは、これらの前処理ステップに関する情報を必要とする。例えば、デコーダは、異なるサイズのチャネルのサイズの知識に基づいて、パディングを除去するように構成される。例えば、チャネル・サイズは、規格によって定められたり、或いはサイド情報などによって設定されたりしてもよい。前処理ステップに関する情報は、新たなチャネルのサイズを含むことも可能である。
前処理に続いて、同じサイズのチャネルの各々が部分に分割される。第1のステップにおいて、第1のサイズの部分1840が各チャネルから取り出され、これらの部分(場合によっては、対応する分布を有する)が多重化される。この多重化は、第1のサブストリーム1530にエントロピー符号化される。更に、それぞれのチャネルからの第2のサイズの部分1841が多重化され、その後、第2のサブストリーム1531に符号化される。第1のサイズ及び第2のサイズは、同じであってもよいし或いは異なっていてもよい。エントロピー符号化は、第1のサブストリーム1530を生成するため、及び第2のサブストリーム1531を生成するために別々に実行される。上述したように、チャネル部分は、それぞれの確率モデル・サイド情報とともに多重化されてもよい。例示的な実施形態において、そのようなサイド情報は、ハイパー事前分布サブネットワークを有する変分オート・エンコーダによって取得されたハイパー事前分布に対応していてもよい。しかしながら、確率モデルがチャネル部分とともに多重化されたサイド情報として提供される必要がない実施形態及び実装が存在する可能性がある。例えば、確率モデルは、以前に符号化及び/又は復号化されたデータなどに基づいて、コンテキスト適応方式で更新されてもよい。
各チャネルを別々に符号化する代わりに、異なるチャネルからの部分を多重化及び符号化することは、完成したサブストリームをより速く生成し、及び/又は個々のサブストリームの長さを制御して、例えばより均一な長さのサブストリームを取得する可能性を提供する。これは、複数のサブストリームに対して並列にエントロピー符号化及び/又はエントロピー復号化を実行する可能性を開く。
本開示は、同じサイズの部分、又は第1のサイズ及び第1のサイズとは異なる第2のサイズの部分のみを提供することに限定されない。更に、例えば第3のサイズ1842及び/又は第4のサイズ1843のような他のサイズの部分が、第1のサブストリーム又は第2のサブストリームに含まれてもよい。この第3のサイズは、第1のサイズ又は第2のサイズに等しくてもよい。これは図18に示されており、i番目のチャネルchiが4つの部分、portion.i0,portion.i1,portion.i2,及びportion.i3に分割されている。全てのチャネルを同じサイズの部分に分割し、次いで、異なるチャネルからの部分を含むサブストリームを形成することによって、サブストリーム・サイズを制御することが可能である。これは、動的なパーティション化と呼ばれてもよい。
例えば、個々のサブストリームは、より多くの部分を含めることによってその長さを延長することが可能であり、それでも所望の長さに調整することが可能である。第1のサブストリーム及び第2のサブストリームを形成するために部分の多重化が同じサイズを有する可能性があるとしても、エントロピー符号化の後に、第1のサブストリーム及び第2のサブストリームは異なるサイズを有する可能性がある。従って、例えば、多重化に含まれる部分のサイズ及び/又は数を設定することによって、サブストリーム・サイズを、それらの分散を減らすように適合させることが望ましいかもしれない。例えば、より長い個々のサブストリームが少ない場合、より短い長さ指標がシグナリングされる必要があり、又はより少ないパディングが必要とされる。
エントロピー符号化は、算術符号化又はレンジ符号化であってもよい。これらの場合、符号化は、コーディングされたビット1530-1533及び(存在する場合)トレーリング・ビット1540-1543をもたらす結果となる。これらのトレーリング・ビットは、最後の部分の符号化後のエンコーダの状態である。本開示は、コーディングされたビットとトレーリング・ビットとを別々にビットストリームに埋め込むことに限定されない、ということに留意されたい。全てのビットを、コーディングされたビットとしてビットストリームに出力するエンコーダが存在する可能性がある。独立した符号化及び復号化に基づく本件のサブストリームは、そのようなエンコーダ及びデコーダにも同様に適用可能である。
サブストリームは、それぞれのサブストリームの長さを示すサブストリーム長指標1550とともに、ビットストリーム1570に多重化される。
実施形態では(図15に示されるように)、サブストリーム長指標1550は、ビットストリーム1570の中でそれぞれのサブストリームに先行する。更に、第2のサブストリーム長指標は、第1のサブストリーム1530に先行していてもよく、即ち、複数のサブストリーム長指標が連結され、複数のサブストリームの前で、ビットストリーム1570に含まれる。複数のサブストリームは、チャネルから生成されたサブストリームの一部又は全部、例えば、1つのピクチャ又はピクチャ部分又は所定数のピクチャ又はチャネル・データの別のコンテナに関連するものであってもよい。複数に幾つのサブストリームが含まれるかは、同じサイズのチャネルの数に対応してもよいが必須ではない所定の数に設定されたり又は固定されたりしてもよい。
更に、トレーリング・ビットは、長さ指標とともにシグナリングされてもよい。各サブストリームに対してトレーリング・ビット、即ち第1のトレーリング・ビット及び第2のトレーリング・ビットが存在する。従って、第1のトレーリング・ビット長指標及び第2のトレーリング・ビット長指標は、ビットストリーム1570に含まれてもよい。トレーリング・ビット長指標1560は、ビットストリーム1570の中でそれらの各自のサブストリームに先行してもよい。第2のトレーリング・ビット長指標もまた第1のサブストリーム1530に先行してもよい。従って、連結されたトレーリング・ビット長指標1560は、第1のサブストリーム1530に先行する。サブストリーム長指標及びトレーリング・ビット長指標の順序は、エンコーダ及びデコーダの両方がビットストリームを従順に形成及び解析できるように予め定められるべきである。
これら全てのこれらの長さ指標をビットストリームに含めることは、個々のサブストリーム及び/又はトレーリング・ビットのパディングを回避する。特に、一部の実装において、パディングは、複数のサブストリーム及び対応する指標がビットストリームに含まれた後に実行されてもよい。しかしながら、本開示はパディングを要求せず、なぜなら、ビット又はシンボルの特定のラスタへのそのような調整を必要としないビットストリーム構造又はプロトコルが存在し得るからである。
複数のサブストリームに対する指標を集中させる代わりに、一実施形態では、第1のサブストリームのトレーリング・ビット1540は、ビットストリームに、第1のサブストリーム1530の後に含まれてもよく、第2のサブストリームのトレーリング・ビット1541は、ビットストリーム1570の中で第2のサブストリーム1531の後にあってもよい。このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時符号化又は復号の可能性であるかもしれない。更に、第1のトレーリング・ビット1540は、第2のサブストリーム1531の後にあってもよい。
上記の例示的な実施形態の何れかでのように構築されたビットストリーム1570は、バイト、ワード、又はダブルワードなどのような所定量のビットの整数倍に一致するように、ビットストリーム長を調整するためにパディングされる可能性がある。そのようなアプローチは、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に調整されたビットストリームを提供することが可能である。
複数のチャネルのデータ1510は、例えばビットであるシンボルから構成される。第1のサブストリーム1530に含まれる全ての部分、及び第2のサブストリーム1531に含まれる全ての部分は、これらのシンボルの整数K倍であってもよく、Kは1より大きい。
サブストリーム・サイズのより均一な分布を達成するために、部分はシャッフルされてもよい。シャッフリングは図18に関連して既に言及されている。これは、符号化及び復号化側で同期して実行される部分のインターリーブに対応し、即ち符号化及び復号化側で同じルールを使用して符号化と復号化との間の適合性を保証する。シャッフリング方法は、所定の方法のセットから選択され、その後、第1のサイズの部分及び第2のサイズの部分の順序を指定するために適用される。部分1860(例えば、portion 0a0,portion 0b0,portion 1a0,portion 2a0,portion 2b0及びportion 3a0)は、同期してシャッフルされる。図18の例示的な方式は、部分の巡回置換1850を示す。更に、それぞれの部分に関連付けられた対応する確率分布1861(例えば、Prob prt.0a0, Prob prt.0b0,Prob prt.1a0,Prob prt.2a0,Prob prt.2b0及びProb prt.3a0)は、エントロピー・コーディング(例えば、算術コーディング)に適用されることになる。従って、部分及び関連する確率部分(モデル)は、同期してシャッフルされたものとして理解することができる。
シャッフリング(及び場合によってはシャッフリング方法選択)は、符号化されるべき部分にわたって反復的に実行されて、符号化された第1のサブストリームと符号化された第2のサブストリームとの間、一般的には経時的なサブストリーム間、における長さの差を減らすことができる。従って、シャッフリング方法は、現在の(例えば、第1又は第2の)サブストリームの長さと、過去のサブストリームの長さに基づく統計値との間の差、及び/又は、現在のサブストリームの長さと、過去のサブストリームの長さに基づく統計値との間の差を考慮に入れることができる。そのようなシャッフリング方法は、部分の任意のシャッフリング1852、即ち任意の可能な並べ替えをもたらすことができる。
これは、過去のサブストリームの長さの分布を取得するために、過去のサブストリームの統計的尺度を収集することを含む可能性がある。この分布は、エンコーダ及びデコーダ側で同時に取得及び使用されることが可能であり、なぜなら双方の側が同じサブストリームを事前に処理しているからである。
統計値は、例えば、過去及び/又は現在のサブストリームの長さの推定された平均値、メジアン、最小値又は最大値、又は、サブストリームの長さの成長速度、又は、サブストリームの長さの減少速度、又は、それらの組み合わせ、又は、別の統計的尺度(推定量)に基づいてもよい。
エントロピー符号化が算術符号化である場合、シャッフリング方法もまた、算術符号化プロセスにおけるレンジ・インターバルの現在の状態を考慮に入れることができる。
レンジ・インターバルの現在の状態はまた、サブストリーム長の詳細な情報を提供することも可能であり、特定のチャネルに基づくサブストリームの成長速度の推定のために考慮に入れることが可能である。特に、レンジ・インターバルの現在の状態が小さい場合、それはサブストリーム長がより大きいことを示し、逆もまた同様である。このような成長の推定に基づいて、適切なシャッフリング方法を選択することが可能である。
上述したように、適切なシャッフリングは、以下の例に示されるように、幾つかの利点を提供することが可能である。ここで、シャッフリングはチャネルの循環ローテーション(巡回置換)であってもよいと仮定する。この例では、3つのチャネルCh1,Ch2,及びCh3を有し、それぞれのサブストリーム・サイズ(本件では長さとも呼ばれる)の成長速度は異なるものと仮定する:サブストリームは、Ch1からの部分については10バイトずつ、Ch2からの部分については2バイトずつ、Ch3からの部分については20バイトずつ成長する。従って、最初の3つの部分を並列にサブストリームS1,S2,及びS3に、シャッフリングなしに符号化した後、以下のストリーム長が達成される:
- 各チャネルから1番目の部分が、Ch1,Ch2,及びCh3の順序でシャッフリングなしに符号化される。これは、それぞれのS1,S2,及びS3に対して、10,2,及び20バイトの3つそれぞれの並列ストリーム・サイズをもたらす。
- 第2の部分が、Ch1,Ch2,及びCh3の同じ順序でシャッフリングなしに符号化される場合、3つのチャネルの各々からの第2の部分を含めた後に、20,4,及び40バイトの並列ストリーム・サイズが達成される。
- 第3の部分が、Ch1,Ch2,及びCh3の同じ順序でシャッフリングなしに符号化される場合、3つのチャネルの各々からの第3の部分を含めた後に、30,6,及び60の並列ストリーム・サイズが得られる。
この例で分かるように、並列サブストリームは長さがかなり異なる。これは、幾つかのアプリケーションにとって望ましくない可能性がある。この状況を改善するために、シャッフリングが実行されてもよい。特に、各チャネルから部分が取り出される順序は変更されてもよい。
上述の同じチャネルCh1,Ch2,及びCh3が同じ成長速度を有することを仮定してもよい。チャネル順序Ch1,Ch2,Ch3の循環シフトによるシャッフリングが実行される場合、以下の結果が得られる:
- ここでは第1の部分が上記の例と同じ順序で3つのチャネルから取り出される。即ち、順序はCh1,Ch2,及びCh3である。これは、10,2,及び20バイトの同じ並列ストリーム・サイズをもたらす。
- 第2の部分は、シャッフルされた順序、特に循環シフトされた順序(1つだけ右にシフトする):Ch3,Ch1,及びCh2で取り出される。これは、30,12,22バイトのそれぞれのストリーム・サイズをもたらす。これらのストリーム・サイズは、以前のステップからの長さ10,2,及び20バイトのストリームに、シャッフルされたチャネルに対応するサイズ20,10,及び2を加算することによって得られる。理解できるように、第2の部分の後、シャッフリング後のサイズ30,12,及び22は、シャッフリングなしの前述の例からのサイズ20,4,及び40バイトよりも低い分散を示す。
- 第3の部分は、再びシャッフルされた順序で、この例では反復される右への巡回シフトによって取り出され、チャネルCh2,Ch3,及びCh1の順序をもたらす。3つの並列ストリームの結果として生じるストリーム・サイズは、32,32,及び32である。このサイズは、以前のステップ(第2の部分の追加)のストリーム・サイズ30,12,及び22バイトに、更にそれぞれ2,20,及び10バイトを追加することから生じる。理解できるように、第2のシャッフリングの後、並列ストリーム(上記のサブストリームに対応する)の長さは等しくされている。
実際のアプリケーションでは、成長はそれほど容易に且つ正確に推定可能ではない可能性がある。特に、上記の例のように必ずしも静的ではない。それにもかかわらず、シャッフリングは、サブストリーム長(サイズ)の等化を改善する可能性がある。そうするために、成長速度の推定はパフォーマンスに貢献する可能性がある。上述したように、(符号化された)サブストリームの成長は、以前にコーディングされた(復号化された)部分又はサブストリームに基づいて推定されるかもしれない。しかしながら、レンジ・インターバルの現在の状態によって、更に近い指標が提供される可能性がある。レンジ・インターバルが大きい場合、サブストリームの長さがより短く、成長速度へのより小さな寄与がある、ということが示される。レンジ・インターバルが小さい場合、サブストリームのより大きな長さが示され、これは、成長速度へのより大きな寄与に対応する。換言すれば、レンジ・インターバルの長さは、ストリームの成長速度に反比例する。比例関係は必ずしも線形ではない。
従って、符号化及び復号化の間に、シャッフリング・メカニズムが適用されてもよい。シャッフリングは、上述したものと同様であってもよく、例えば、各チャネルからのk番目の部分をチャネルのk番目の順序で符号化(又は復号化)した後に、各チャネルからの(k+1)番目の部分をチャネルの(k-1)番目の順序で符号化(又は復号化)される。例示的な実装において、(k+1)番目の順序は、k番目の順序を循環的にシフトすることによって、k番目の順序から取得される。巡回シフトは、右又は左である可能性がある。シフトが1チャネルによるものである場合、有利である可能性がある。しかしながら、本開示はこれに限定されず、シフト・ステップは1と相違していてもよい。既に上述したように、シャッフリング順序もまた具体的に選択され、シグナリングされてもよい。
他の例示的な実施形態において、より長い長さ及びより速い成長速度を有するサブストリームに符号化されるチャネルの部分は、より短い長さ及びより遅い成長速度を有するサブストリームに符号化されるチャネルの部分と交換される、即ちシャッフルされる可能性がある。特に、方法は、サブストリームの長さ及びサブストリームの長さの成長速度を決定することができる。この決定の結果に基づいて、方法は部分をシャッフルする。上記の例に関し、これは、チャネルCh2及びチャネルCh3の交換に対応する。この交換は、より大きな成長速度(部分当たり20バイト)に寄与するCh3からの部分を、より短い長さのサブストリームS2に符号化する。より小さな成長速度(部分当たり5バイト)に寄与するCh2からの部分は、より大きな長さのサブストリームS3に符号化される。これは、S2の増加した成長、及びS3の減少した成長をもたらす。従って、符号化されたサブストリーム間の上述した長さの差を低減することができる。実際のアプリケーションでは、成長は必ずしも上記の例のように静的でない可能性がある。
第1のサブストリーム1530及び第2のサブストリーム1531へのエントロピー符号化は、例えば、図14及び図15のマルチ・コア・エンコーダ1420,1520のうちの1つによって並列に実行されてもよい。一部の実装において、エントロピー符号化の一部分のみが並列に実行されてもよい。
復号化方法は、第1のサブストリーム1530及び第2のサブストリーム1531を多重化された部分にエントロピー復号化することを含む。エントロピー復号化は、第1及び第2のサブストリームに対して別々に実行される。複数のチャネル1810は、第1のサイズの部分1840及び第2のサイズの部分1841を逆多重化することから取得される。第1のサイズ及び第2のサイズは同じであってもよい。同じサイズのチャネル1620は、異なるサイズの複数のチャネル1810を取得するために後処理されてもよい。この後処理は、分割されたチャネルを追加(連結)することを含む。ゼロでパディングされているチャネルは、入力データを得るためにクリッピングされ、即ち、パディングは除去される。これらのステップに関する情報は、同じサイズのチャネルに含まれる。任意のサイズのチャネルは、ニューラル・ネットワークの出力チャネル又は潜在表現チャネルであってもよい。
エントロピー復号化は、例えば、上記の算術符号化のセクションで説明したように、算術復号化又はレンジ復号化であってもよい。しかしながら、サブストリームの形成に関して本開示は、算術エンコーダ及び算術デコーダの適用に限定されない。むしろ、任意のエントロピー・コーディング及び/又はラン・レングス・コーディングなどがチャネル・データに適用されてもよい。エントロピー・コーディングはコンテキスト適応型であってもよい。これらの実施形態は、上述した符号化の例に対応する。
サブストリームは、ビットストリーム1570から、第1のサブストリームの長さを示す第1のサブストリーム長指標、及び第2のサブストリームの長さを示す第2のサブストリーム長指標とともに抽出される。例えば、サブストリームは、抽出前にサブストリームの長さ指標が知られている場合に抽出されることが可能である。
従って、サブストリーム長指標1550は、ビットストリーム1570の中でそれら各自のサブストリームに先行してもよい。更に、第2のサブストリーム長指標もまた、第1のサブストリーム1530に先行してもよい。
サブストリームの前に、連結された長さ指標をシグナリングすることによって、デコーダはサブストリームを同時に抽出することができる。
第1のトレーリング・ビットの長さを示す第1のトレーリング・ビット長指標と、第2のトレーリング・ビットの長さを示す第2のトレーリング・ビット長指標とが、ビットストリーム1570から抽出されてもよい。トレーリング・ビット長指標1560は、ビットストリーム1570の中でそれら各自のサブストリームに先行してもよい。第2のトレーリング・ビット長指標もまた、第1のサブストリーム1530に先行してもよい。
第1のサブストリーム1540のトレーリング・ビットは、ビットストリームに、第1のサブストリーム1530の後に含まれてもよく、第2のサブストリーム1541のトレーリング・ビットは、ビットストリーム1570の中で第2のサブストリーム1531の後に続いてもよい。更に、第1のトレーリング・ビット1540は、第2のサブストリーム1531の後に続いてもよい。
複数のチャネル1510のデータは、ビットである可能性のあるシンボルから構成される。第1のサブストリーム1530から復号化及び逆多重化された全ての部分、及び第2のサブストリーム1531から復号化及び逆多重化された全ての部分は、これらのシンボルの整数K倍であってもよく、Kは1より大きい。
第1のサブストリーム長指標、第2のサブストリーム長指標、第1のトレーリング・ビット長指標、第2のトレーリング・ビット長指標、第1のサブストリーム1530、第2のサブストリーム1531、第1のトレーリング・ビット1541、及び第2のトレーリング・ビット1541の抽出後に、残りのビットが存在する可能性がある。最後のトレーリング・ビットの抽出後にビットストリーム1570内に残っているビットは、ビットストリームを提供するために所定のビット数の整数倍に一致するように、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に整列させられるように、ビットストリーム1570全体をパディングした結果である。残りのビットは破棄することが可能である。
符号化プロセスにおける部分の多重化の間に、シャッフリング方法が適用されている場合がある。例えば、この方法は、ビットストリームに含まれる制御情報内でシグナリングされる。従って、デコーダは、ビットストリームからシャッフリング方法指標を解析することができる。指標は、例えば、規格によって定義されるか、又は、規格に従って設定可能であってもよく、場合によっては、シャッフリング方法指標自体よりも低い頻度でビットストリームにおいてシグナリング可能であってもよいシャッフリング方法のリストに対するインデックスであってもよい。
このように、シャッフリング方法は、予め定義されたシャッフリング方法のセットから決定され、第1のサイズの部分1840及び第2のサイズの部分1841の逆多重化に適用されることが可能である。シャッフリング方法は、サブストリーム内で部分の順序を指定する。更に、シャッフリング方法はまた、部分の長さが変化する可能性のある例示的な実装においてサブストリームの部分の長さを定義することも可能である。一部の実施形態では、部分の長さは、チャネルにわたって、及び/又はサブストリームにわたって同じであってもよい。
エントロピー復号化は、例えばマルチ・コア・デコーダによって並列に実行されてもよい。更に、エントロピー復号化の一部分のみが並列に実行されてもよい。
トレーリング・ビットの処理
図9は、入力データをビットストリーム1750に算術符号化するための例示的な方法を示すフローチャートである。符号化されたビットストリーム1750の例は図17に与えられている。
方法は、エンコーダによって使用される初期レンジS910を初期化することが可能である。例えば、そのような初期レンジは、上述したような図2の初期レンジ210に対応する可能性がある。符号化は、符号化されるべきメッセージの第1のシンボルから始まり、コーディングされたビットを得るために、メッセージの全てのシンボルにわたって進行する。
ステップS920において、メッセージからの現在のシンボルが、例えば図2ないし7に関連して説明されたように、算術コードを用いてコーディングされる。
コーディング・ループS920-S950の後、コーディングされたビットはビットストリーム1570に含まれる。しかしながら、レジスタ内に残っているトレーリング・ビットが依然として存在し、これはエンコーダの状態を示す。トレーリング・ビットを記述するインターバルは、最後のシンボルを符号化し、コーディングされたビット1730-1731をストリーミングした後に残る現在のレンジである。コーディングされたビット1730-1731とともに算術コーディングされたデータを形成するトレーリング・ビットは、一般に、このインターバルから任意に選択されることが可能である。
しかしながら、トレーリング・ビットは、先頭トレーリング・ビットの中でトレーリング・ゼロの量を最大化するように選択されてもよい。これらのトレーリング・ゼロは、ビットストリーム1750に含まれない可能性があり、従ってクリッピングされることが可能である。
このインターバルの決定された最小値及び最大値S960は、同一である最上位ビットMSBの量を含んでもよい。これらの同一の先頭ビットは、連続するトレーリング・ビットであり、即ち、それらは連続するトレーリング・ビットのセットを形成する。これらの先頭トレーリング・ビット1740-1741の量を決定することができるS970。
これらの同一の先頭ビット及び先頭トレーリング・ビットの決定された量の指標は、ビットストリームに含めることが可能であるS980。
先頭トレーリング・ビットの量NumTrailingBitsは、
NumTrailingBits=CLZ((LOW+RANGE-1) XOR LOW)
によって決定され、ここで、CLZ()は先頭ゼロのカウントであり、LOWはインターバルの最小値であり、RANGEはインターバルのレンジである。XORは排他的論理ORの演算を示す。
同一の先頭ビット1740-1741及びそれらの量を決定するための例は、図16に示されている。最後のシンボルを符号化し、コーディングされたビット1730-1731をビットストリーム1750に含めた後に、エンコーダ内に残る16個のトレーリング・ビットが存在している。トレーリング・ビットは、現在の最小値1610 Low=1123及び現在のインターバル1620のレンジ,Range=67によって表される。
図16では、これらの値はバイナリ表現で与えられている。現在の最大値1630 High-1=(Low+Range-1)=(1123+67-1)は、現在の最小値1610及び現在のレンジ1620から決定される。(HIGH-1) XOR Low 1640は、LOW 1610及びHIGH-1 1630においてビットが同一である位置にゼロビットを、それ以外には1ビットをもたらす。
この値1640の内の先頭ゼロは、トレーリング・ビット内の同一の先頭ビットを示す。従って、先頭ゼロのカウントCLZ()は、CLZ((low+range-1) XOR low)=8となる
この例では、8つの同一の先頭ビットが存在する。現在のインターバル内のトレーリング・ビット1650は、Low及びHigh-1において相違する最初のビットより後の全てのビットをゼロにすることによって、Low及びHight-1の間の値として選択され、従って、0b.0000.0100.1000.0000 1650に到達する。
上述したように、トレーリング・ゼロ1680は、最初のビットがLowとHigh-1において相違する最初のビットであるビット1 1670とともにクリップされることが可能であり、なぜならこのビットは常に1であり、シグナリングされることを必要としないからである。従って、この例における先頭トレーリング・ビット1660は、8ビット00000100によって形成される。
先頭ゼロの決定された数は、先頭ビットの量の指標に含まれる。この指標は、ビットストリーム1750の中で、コーディングされたビット1730-1731及び先頭トレーリング・ビット1740-1741に先行する1720。
しかしながら、先頭トレーリング・ビット1740-1741は、先頭トレーリング・ビット1660の直後に続いて追加される値が1のビット1670とともに、ビットストリーム1570に含まれてもよい。この後付けされるビットは、Low及びHigh-1において相違する最初のビットである。先頭トレーリング・ビット1720の量の指標は、このケースでは、追加ビット1を含む。
算術コーディングのための方法は、複数のサブストリームに関して別々に実行されてもよい。例示的な実施形態は図14に与えられている。ここで上述した方法は、第1のサブストリーム及び第2のサブストリームに例示的に適用され、第1のコーディングされたビット1430a、第2のコーディングされたビット1431、第1の先頭トレーリング・ビット1440a、及び第2の先頭トレーリング・ビット1441をもたらす。ビットストリーム1750は、図17に概略的に示されるように、第1のコーディングされたビット1730及び第2のコーディングされたビット1731の後に続いて第1の先頭トレーリング・ビット1740及び第2の先頭トレーリング・ビット1741を、ビットストリーム1750に挿入することによって、これらの部分から形成される。第1の先頭トレーリング・ビット1740は、第2のコーディングされた1731ビットの直後に続き、必要とされるパディングは無い。
第1及び第2のサブストリームから形成されるビットストリーム1750はまた、第1のコーディングされたビット1710及び第2のコーディングされたビット1711のための長さ指標も含む可能性がある。これらの第1及び第2の長さ指標1710-1711は、ビットストリーム1750の中でそれぞれのコーディングされたビット1730-1731に先行してもよい。
更に、第2の長さ指標1711は、第1のコーディングされたビット1730に先行してもよい。これは、図17に例示的に示されている。長さ指標1710-1711は、コーディングされたビット1730-1731の各々について連結され、ビットストリームに、コーディングされるビット1730-1731の前に含まれる。
第2の先頭トレーリング・ビット1721の量の指標は、ビットストリーム1750の中で第1のコーディングされたビット1730に先行してもよい。図17の例は、連結された指標1720-1721、直後に続く第1のコーディングされたビット1730-1731を含んでいる。
上記の例示的な実施形態の何れかでのようにともに結合されたビットストリーム1750は、ビットストリーム長を整列させて所定のバイト量の整数倍に一致させるためにパディングされてもよく、例えば、これはワード又はダブルワードであってもよい。
第1及び第2のサブストリームの算術符号化は、例えば、図14及び図15におけるマルチ・コア・エンコーダ1420,1520のうちの1つによって並列に実行されてもよい。一部の実装において、算術符号化の一部分のみが並列に実行されてもよい。
上述したように、算術符号化の方法は、レンジ・コーディングとして実現されてもよい。このレンジ・コーディングは、事前に定められたトータル・レンジを有する可能性があり;メモリの事前に設定されたサイズは、トータル・レンジを表現するビットの数(トータル・レンジのlog_2)以上である。
メモリは、現在のレンジ・インターバルの最小値及び最大値を保持することが可能である。例えば、有限レジスタ内のそのような最小値は、図7A-Dにおけるバイナリ表現720cに対応してもよく、有限レジスタ内のそのような最大値は、バイナリ表現710cを有してもよい。符号化ループの1つ以上の反復の後に、現在の最小値及び現在の最大値のバイナリ表現のMSBにおいて同じ値を有する連続ビットである固定ビットが存在する可能性がある。所定量のこれらの固定ビットは、メモリからビットストリームに移される。これは、例えば、図7A-DにおけるHIGH及びTOP位置の間の2ビットに対応する。例示的な実装では、HIGH及びTOP位置の間に16ビットが存在する可能性がある。本発明はこれらの例の何れにも限定されない。
先頭トレーリング・ビットの量と、HIGH及びTOP位置の間の固定ビットからの所定のビット量との間の差が、所定の閾値未満であることが起こる可能性があり、例えば、HIGH及びTOP位置の間に16ビット、及び15個の先頭トレーリング・ビットが存在する可能性がある。この場合、先頭トレーリング・ビットを、コーディングされたビットに含めることは、より効率的である。従って、トレーリング・コーディングされたビットは、先頭トレーリング・ビットから生成される。ビット1 1670は、先頭トレーリング・ビット1660に追加されなければならず、ビットは、所定数の固定ビットに達するようにゼロでパディングされてもよい。従って、トレーリング・ビットの量の指標とともに多くの先頭トレーリング・ビットの高価なシグナリングは回避される。例えば、15個の先頭トレーリング・ビットの量をシグナリングするために、少なくとも4ビットが必要である。その代わりに、より多くのコーディングされたビットを有し、ゼロ先頭トレーリング・ビットをシグナリングすることは、より安価である可能性がある。それらは、例えば頻繁に発生する場合には、効率的に符号化されることが可能である。
上述の所定の閾値は、例えば、HIGH及びTOP位置の間のビットの量と、先頭トレーリング・ビットの長さを示すために使用されるシグナリングの量とを考慮して、経験的に決定されてもよい。
図10は、ビットストリーム1750からのデータの算術復号化のための例示的な方法を示すフローチャートである。デコーダはビットストリームを受信しS1010、ビットストリームから、コーディングされたビットの長さの指標を抽出することができるS1020。コーディングされたビット1730-1731は、ビットストリームから抽出され、連続的に復号化されるS1040-S1060。全てのコーディングされたビットが復号化されると、先頭トレーリング・ビット1740-1741は、それらの量的指標1720-1721であってビットストリームから抽出される可能性のあるものS1030に従って抽出されるS1070。先頭トレーリング・ビット1660から、完全なトレーリング・ビット1650が、復号化されるために復元され必要があるS1080。先頭トレーリング・ビット1660は、トレーリング・ビットの所定の最大長までゼロでパディングされている。復元されたトレーリング・ビットは復号化されることが可能であるS1090。
別の例示的な実装は、利用可能な十分なメモリがある場合に、完全なサブストリームが復号化前に形成できるものである。コーディングされたビット及び先頭トレーリング・ビットは、ビットストリームから抽出される。トレーリング・ビットは、上述したように復元することができる。コーディングされたビット及び決定されたトレーリング・ビットはサブストリームに関する。その後、完全なサブストリームが復号化される。
しかしながら、本発明はこれらの例示的な実装の何れにも限定されない。
トレーリング・ビット1650内で同一の先頭ビット1660に続くビット1 1670がシグナリングされなかった場合、それは、トレーリング・ビットの決定プロセスで含まれる必要がある。ビット1 1670は、パディング1680の前に、先頭トレーリング・ビット1660に付加される。
先頭トレーリング・ビットの量の指標1720-1721は、ビットストリーム1750の中で、先頭トレーリング・ビット1740-1741だけでなく、コーディングされたビット1730-1731にも先行する可能性がある。
算術復号化のための方法はまた、複数のサブストリームに対して別々に実行されてもよい。復号化のために個々のサブストリームを復元するために、第1のコーディングされたビット1730及び第2のコーディングされたビット1731、後続の第1の先頭トレーリング・ビット1740及び第2の先頭トレーリング・ビット1741が抽出される。第1のコーディングされたビット1730及び第1の先頭トレーリング・ビット1740は第1のサブストリームを形成し、第2のコーディングされたビット1731及び第2の先頭トレーリング・ビット1741は第2のサブストリームを形成する。各サブストリームについて、トレーリング・ビットは、単一のサブストリームについて上記で説明したように決定される。各サブストリームは個々に復号化される。
第1のコーディングされたビット1730及び第2のコーディングされたビット1731は、第1の長さ指標1710及び第2の長さ指標1720と呼ばれる、それらの各自の長さについての指標とともに抽出されることが可能である。
コーディングされたビットの第1の長さ指標1710は、ビットストリーム1750の中で第1のコーディングされたビット1730に先行してもよく、第2の長さ指標1711は第2のコーディングされたビット1731に先行する。更に、第2の長さ指標1711はまた、第1のコーディングされたビット1730に先行してもよい。
第2のトレーリング・ビットの量の指標1721はまた、第1のコーディングされたビット1730に先行してもよい。
第1のコーディングされたビット1730、第2のコーディングされたビット1731、第1の先頭トレーリング・ビット1740、及び第2の先頭トレーリング・ビット1741の抽出の後、廃棄されことが可能な残りのビットが存在する可能性がある。最後のトレーリング・ビットの抽出の後にビットストリーム1750内に残されたビットは、所定のビット量の整数倍に一致するようにビットストリーム1750全体をパディングした結果である。
算術復号化は、例えばマルチ・コア・デコーダによって並列に実行されてもよい。更に、算術復号化の一部分のみが並列に実行されてもよい。
算術復号化の方法は、レンジ・コーディングとして実現されてもよい。
本開示の算術コーディングは、ニューラル・ネットワークの特徴マップの符号化、又は古典的なピクチャ(静止画又は動画)符号化及び復号化に容易に適用されることが可能である。ニューラル・ネットワークは、任意の目的のために、特に、ピクチャ(静止画又は動画)の符号化及び復号化、又は動きフロー若しくは動きベクトル若しくはその他のパラメータのようなピクチャ関連データの符号化及び復号化のために使用されてもよい。ニューラル・ネットワークはまた、画像の分類、深度検出、セグメンテーション・マップ決定、識別の物体認識などのようなコンピュータ・ビジョン・アプリケーションのために使用されてもよい。
上記のセクションで説明された複数のチャネルのエントロピー・コーディングの方法は、本セクションで説明するトレーリング・ビットの処理と組み合わされてもよい。第1及び第2のサブストリームは、それぞれ、多重化及び符号化された部分を含む第1及び第2のコーディングされたビットによって形成される。「複数のチャネルのエントロピー・コーディング」において言及されるトレーリング・ビットは、先頭エンコーダ・ステータス・ビットである先頭トレーリング・ビットに対応する可能性がある。先頭エンコーダ・ステータス・ビットの決定された量は、トレーリング・ビット長指標の中で示される。
ピクチャ・コーディングにおける実装
1つの可能な発展は図11及び図12に見ることができる。
図11は、本願の技術を実現するように構成された例示的なビデオ・エンコーダ20の概略的なブロック図である。図11の例では、ビデオ・エンコーダ20は、入力102(又は入力インターフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、ループ・フィルタ・ユニット220と、復号化されたピクチャのバッファ(DPB)230と、モード選択ユニット260と、エントロピー符号化ユニット270と、出力272(又は出力インターフェース272)とを含む。エントロピー・コーディング270は上述した算術コーディング方法又は装置を実現することが可能である。
モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、パーティショニング・ユニット262とを含むことが可能である。インター予測ユニット244は、動き推定ユニットと、動き補償ユニット(不図示)とを含むことが可能である。図11に示されるようなビデオ・エンコーダ20はまた、ハイブリッド・ビデオ・エンコーダ又はハイブリッド・ビデオ・コーデックによるビデオ・エンコーダと言及されてもよい。
エンコーダ20は、例えば入力201を介して、ピクチャ17(又はピクチャ・データ17)、例えばビデオ又はビデオ・シーケンスを形成するピクチャのシーケンスのピクチャを受信するように構成されてもよい。受信されるピクチャ又はピクチャ・データはまた、前処理されたピクチャ19(又は前処理されたピクチャ・データ19)と言及される場合もある。簡略化のため、以下の説明はピクチャ17と言及する。ピクチャ17はまた、現在ピクチャ又はコーディングされるべきピクチャと言及される場合もある(特に、ビデオ・コーディングにおいて、現在のピクチャを他のピクチャから、例えば同じビデオ・シーケンス、即ち現在のピクチャも含むビデオ・シーケンスの以前に符号化された及び/又は復号化されたピクチャから区別する)。
(デジタル)ピクチャは、強度値を有するサンプルの2次元アレイ又はマトリクスであるか、又はそのように考えることが可能である。アレイ中のサンプルはまた、ピクセル(ピクチャ要素の短縮形)又はペルと言及される場合もある。アレイ又はピクチャの水平及び垂直方向(又は軸)におけるサンプルの数は、ピクチャのサイズ及び/又は解像度を規定する。色の表現には、典型的には、3つの色成分が使用され、即ち、ピクチャは、3つのサンプル・アレイで表現されてもよいし、又はそれを含んでもよい。RBGフォーマット又は色空間において、ピクチャは対応する赤、緑、及び青のサンプル・アレイを含む。しかしながら、ビデオ・コーディングにおいては、各ピクセルは、典型的には、ルミナンス/クロミナンス・フォーマット又は色空間、例えばYCbCrで表現され、YCbCrは、Yで示されるルミナンス成分(時にはそれに代えてLも使用される)とCb及びCrで示される2つのクロミナンス成分とを含む。ルミナンス(又は略称、ルマ)成分Yは、輝度又はグレー・レベル強度を(例えば、グレー・スケール・ピクチャでのように)表し、2つのクロミナンス(又は略称、クロマ)成分Cb及びCrはクロミナンス又は色情報成分を表す。従って、YCbCrフォーマットにおけるピクチャは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(Cb及びCr)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャは、YCbCrフォーマットにコンバート又は変換されることが可能であり、その逆も可能であり、そのプロセスは色変換又はコンバージョンとしても知られている。ピクチャがモノクロである場合、ピクチャはルミナンス・サンプル・アレイのみを含む可能性がある。従って、ピクチャは、例えば、モノクロ・フォーマットにおけるルマ・サンプルのアレイ、又はルマ・サンプルのアレイとクロマ・サンプルの2つの対応するアレイとの4:2:0、4:2:2、及び4:4:4カラー・フォーマットにおけるものあってもよい。
ビデオ・エンコーダ20の実施形態は、ピクチャ17を、複数の(典型的には重複しない)ピクチャ・ブロック203にパーティション化するように構成されたピクチャ・パーティショニング・ユニット(図11には示されていない)を含むことが可能である。これらのブロックはまた、ルート・ブロック、マクロ・ブロック(H.264/AVC)又はコーディング・ツリー・ブロック(CTB)又はコーディング・ツリー・ユニット(CTU)(H.265/HEVC及びVVC)と言及される場合もある。ピクチャ・パーティショニング・ユニットは、ビデオ・シーケンスの全てのピクチャに対して同一のブロック・サイズとブロック・サイズを規定する対応するグリッドとを使用するように、又は、ピクチャ、サブセット、又はピクチャのグループ間でブロック・サイズを変更し、各ピクチャを対応するブロックにパーティション化するように構成されることが可能である。略語AVCはアドバンスト・ビデオ・コーディングを表す。
更なる実施形態では、ビデオ・エンコーダは、ピクチャ17のブロック203、例えばピクチャ17を形成する1つの、幾つかの、又は全てのブロックを直接的に受信するように構成されてもよい。また、ピクチャ・ブロック203は、現在のピクチャ・ブロック又はコーディングされるべきピクチャ・ブロックと言及されてもよい。
ピクチャ17と同様に、ブロック203は、再び、ピクチャ17よりも小さな寸法ではあるが、強度値(サンプル値)を有するサンプルの2次元アレイ又はマトリクスであるか、又はそれらとして考えることが可能である。換言すると、ブロック203は、例えば、1つのサンプル・アレイ(例えば、モノクロ・ピクチャ17の場合におけるルマ・アレイ、又はカラー・ピクチャの場合におけるルマ又はクロマ・アレイ)又は3つのサンプル・アレイ(例えば、カラー・ピクチャ17の場合におけるルマ及び2つのクロマ・アレイ)、又は適用されるカラー・フォーマットに依存する任意の他の数量及び/又は種類のアレイを含んでもよい。ブロック203の水平及び垂直方向(又は軸)のサンプルの数は、ブロック203のサイズを規定する。従って、ブロックは、例えば、サンプルのMxN(M列N行)アレイ、又は変換係数のMxNアレイであってもよい。
図11に示されるように、エンコーダ20の実施形態は、ブロック毎にピクチャ17を符号化するように構成されることが可能であり、例えば符号化及び予測はブロック203毎に実行される。
図11に示されるビデオ・エンコーダ20の実施形態は、更に、スライス(ビデオ・スライスとも呼ばれる)を使用してピクチャをパーティション化及び/又は符号化するように構成されることが可能であり、ここで、ピクチャは、1つ以上のスライス(典型的には、重複しない)にパーティション化され、又はそれらを使用して符号化されることが可能であり、各スライスは、1つ以上のブロック(例えば、CTU)を含むことが可能である。
図11に示されるようなビデオ・エンコーダ20の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)及び/又はタイル(ビデオ・タイルとも呼ばれる)を使用して、ピクチャをパーティション化及び/又は符号化するように更に構成されることが可能であり、ここで、ピクチャは、1つ以上のタイル・グループ(典型的には、重複しない)にパーティション化され又はそれらを使用して符号化されることが可能であり、各タイル・グループは、例えば1つ以上のブロック(例えば、CTU)又は1つ以上のタイルを含むことが可能であり、ここで、各タイルは、例えば、矩形の形状であってもよく、1つ以上のブロック(例えば、CTU)、例えば完全な又は断片的なブロックを含む可能性がある。
図12は、本件出願の技術を実現するように構成されたビデオ・デコーダ30の一例を示す。ビデオ・デコーダ30は、符号化されたピクチャ・データ21(例えば符号化されたビットストリーム21)、例えばエンコーダ20によって符号化されたものを受信して、復号化されたピクチャ131を得るように構成される。符号化されたピクチャ・データ又はビットストリームは、符号化されたピクチャ・データ、例えば符号化されたビデオ・スライスのピクチャ・ブロック(及び/又はタイル・グループ又はタイル)及び関連するシンタックス要素を表すデータを復号化するための情報を含む。
エントロピー復号化ユニット304は、ビットストリーム21(又は一般に、符号化されたピクチャ・データ21)を分析し、例えば、符号化されたピクチャ・データ21に対するエントロピー復号化を実行して、例えば量子化係数309及び/又は復号化されたコーディング・パラメータ(図12には示されていない)、例えばインター予測パラメータ(例えば、参照ピクチャ・インデックス及び動きベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループ・フィルタ・パラメータ、及び/又はその他のシンタックス要素のうちの何れか又は全てを取得するように構成される。エントロピー復号化ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関して説明したような符号化スキームに対応する復号化アルゴリズム又はスキームを適用するように構成されることが可能である。エントロピー復号化ユニット304は、更に、インター予測パラメータ、イントラ予測パラメータ及び/又はその他のシンタックス要素をモード適用ユニット360に提供し、他のパラメータをデコーダ30の他のユニットに提供するように更に構成されてもよい。ビデオ・デコーダ30は、ビデオ・スライス・レベル及び/又はビデオ・ブロック・レベルでシンタックス要素を受信することができる。スライス及びそれぞれのシンタックス要素に追加的に又は代替として、タイル・グループ及び/又はタイル及びそれぞれのシンタックス要素が受信及び/又は使用されてもよい。エントロピー復号化は、上述の算術復号化方法又は装置の何れを実現することも可能である。
再構成ユニット314(例えば、加算器又は合計部314)は、再構成された残差ブロック313を予測ブロック365に追加して、サンプル・ドメインにおける再構成ブロック315を、例えば再構成された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを追加することによって、取得するように構成されてもよい。
図12に示すビデオ・デコーダ30の実施形態は、スライス(ビデオ・スライスとも呼ばれる)を使用してピクチャをパーティション化及び/又は復号化するように構成されることが可能であり、ここで、ピクチャは、1つ以上のスライス(典型的には、重複しない)にパーティション化又は復号化されることが可能であり、各スライスは、1つ以上のブロック(例えば、CTU)を含むことが可能である。
図12に示されるビデオ・デコーダ30の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)及び/又はタイル(ビデオ・タイルとも呼ばれる)を使用して、ピクチャをパーティション化及び/又は復号化するように構成されることが可能であり、ここで、ピクチャは、1つ以上のタイル・グループ(典型的には、重複しない)にパーティション化又は復号化されることが可能であり、各タイル・グループは、例えば1つ以上のブロック(例えば、CTU)又は1つ以上のタイルを含むことが可能であり、ここで、各タイルは、例えば矩形形状によるものであってもよく、1つ以上のブロック(例えば、CTU)、例えば完全な又は断片的なブロックを含む可能性がある。
ビデオ・デコーダ30の他の変形は、符号化されたピクチャ・データ21を復号化するために使用されることが可能である。例えば、デコーダ30は、ループ・フィルタリング・ユニット320なしに出力ビデオ・ストリームを生成することができる。例えば、非変換ベースのデコーダ30は、特定のブロック又はフレームに対して、逆変換処理ユニット312なしに直接的に残差信号を逆量子化することができる。別の実装において、ビデオ・デコーダ30は、逆量子化ユニット310及び逆変換処理ユニット312を単一のユニットに結合させることができる。
エンコーダ20及びデコーダ30では、現在のステップの処理結果が更に処理され、次いで次のステップに出力される可能性があることは理解されるべきである。例えば、補間フィルタリング、動きベクトル導出、又はループ・フィルタリングの後に、クリップ又はシフトのような更なる処理が、補間フィルタリング、動きベクトル導出、又はループ・フィルタリングの処理結果に対して実行されてもよい。
ハードウェア及びソフトウェアにおける実装
ハードウェア及びソフトウェアにおける幾つかの更なる実装が、以下で説明される。
図19-22に関連して上記で説明される何れの符号化デバイスも、チャネルの各々からの第1のサイズの部分の多重化を実行し、チャネルの各々からの第2のサイズの部分の多重化を実行するための手段を提供することが可能である。これらの例示的な任意のデバイス内の処理回路は、その後、多重化された部分をサブストリームに符号化し、第1のサブストリーム及び第2のサブストリームに独立してこのエントロピー符号化を実行するように構成される。
図19-22の何れかにおける復号化デバイスは、復号化方法を実行するように適合された処理回路を含む可能性がある。上述したような方法は、第1のサブストリームを第2のサブストリームから独立してエントロピー復号化するステップと、第1のサブストリーム及び第2のサブストリームからの第1のサイズの部分及び第2のサイズの部分を、複数のチャネルのデータに逆多重化するステップとを含む。
要約すると、データをビットストリームに符号化し、データをビットストリームから復号化するための方法及び装置が説明されている。方法は、並列の符号化及び復号化を効率的に実行することができ、サブストリームのパディングを回避し、従って、ビットストリーム内のビットの量を低減する。入力データ・チャネルの部分は多重化され、サブストリームに符号化される。多重化の間に、より均一な長さのサブストリームを得るためにシャッフリング方法が適用される。サブストリーム内のビットの量は、符号化プロセスのトレーリング・ビット内において関連する重要なビットのみを含めることによって更に低減されることが可能である。
実施形態によれば、方法は、入力データをビットストリームに算術符号化するために提供され:入力データを、コーディングされたビットとトレーリング・ビットに算術符号化するステップ;コーディングされたビットをビットストリームに含めるステップ;算術符号化された入力データのインターバルの最小値及び最大値を決定するステップ;連続するトレーリング・ビットである先頭トレーリング・ビットであって、決定された最大値を表す第1の最上位ビットMSBの中で、決定された最小値を表す第2のMSB内のものと同じ値を有する先頭トレーリング・ビットの量を決定するステップ;及び、先頭トレーリング・ビットの決定された量の指標と、先頭トレーリング・ビットとをビットストリームに含めるステップを含む。
完全なトレーリング・ビットの代わりに、先頭トレーリング・ビットをビットストリームに含めることは、ビットストリーム内のビットの量を低減し、従って例えば同じ品質でレートを低減することができる。換言すれば、決定された先頭トレーリング・ビットだけで(残りのトレーリング・ビットなしで)、レンジ・インターバルを定めるのに十分であり、従って、残りのトレーリング・ビットは、ビットストリームに含める必要はなく、先頭トレーリング・ビットの指定された量に基づいて、デコーダで再構築することが可能である。これは、品質を劣化させることなくレートを節約することができる。
例示的な実装によれば、方法は、先頭トレーリング・ビットの量NumTrailingBitsが:
NumTrailingBits = CLZ((LOW+RANGE‐1) XOR LOW)
により決定されるステップを含み、CLZ()は先頭ゼロのカウントであり、LOWはインターバルの最小値であり、RANGEはインターバルのレンジである。
先頭トレーリング・ビットの量は、例えば、最も近いバイト境界に丸める代わりに、厳密に決定されてもよい。これにより、ビットストリーム内のビットの量を更に低減する可能性がある。
例えば、先頭トレーリング・ビットの量の指標は、ビットストリームの中で、コーディングされたビット及び先頭トレーリング・ビットに先行している。
ビットストリームの中で、コーディングされたビット及び先頭トレーリング・ビットに先行する先頭ビットの量の指標は、ビットストリーム全体をバッファリングすることなく、ビットストリームからの効率的な抽出を可能にすることができる。
例示的な実装において、先頭トレーリング・ビットの後に、値が1である1ビットが、ビットストリームに含められる前に、付加される。
このようなアプローチは、代替的に1の値のビットを残すために使用されてもよい。詳細な説明で言及されるように、現在-ビデオ・コーデックのような何らかの既知のコーデックでは、値が1であるビットが、ビットストリームにおいて指定される。
特に、算術符号化するステップ、インターバルの最小値及び最大値を決定するステップ、並びに、先頭トレーリング・ビットの量を決定するステップは、第1のサブストリーム及び第2のサブストリームに対して別々に実行され、第1のコーディングされたビット、第2のコーディングされたビット、第1の先頭トレーリング・ビット、及び第2の先頭トレーリング・ビットをもたらす結果となり;及び、方法は、ビットストリームに、第1のコーディングされたビット及び第2のコーディングされたビット、後続の第1の先頭トレーリング・ビット及び第2の先頭トレーリング・ビットを挿入するステップを含む。
2つの別個のサブストリームに対する方法のこのような独立した適用は、並列化のための前提条件を提供する。
例えば、方法は、第1のコーディングされたビット、及び第2のコーディングされたビットを、第1のコーディングされたビットの長さを示す第1の長さ指標、及び第2のコーディングされたビットの長さを示す第2の長さ指標とともにビットストリームに多重化するステップを更に含む。
ビットストリームにおいてサブストリームの長さを示すことは、異なるサイズを有するサブストリームの提供を可能にし、従って、より柔軟性のあるビットストリーム構成につながる可能性がある。
例示的な実装において、第1の長さ指標は、ビットストリームの中で第1のコーディングされたビットに先行し、第2の長さ指標は、ビットストリームの中で第2のコーディングされたビットに先行している。
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時符号化又は復号化の可能性であるかもしれない。
例えば、第2の長さ指標は、ビットストリームの中で第1のコーディングされたビットに先行している。
コーディングされたビットの前に連結された長さ指標を提供することは、ビットストリームの個々の部分のより高速な抽出を可能にすることができる。
例えば、第2の先頭トレーリング・ビットの量の指標は、ビットストリームの中で第1のコーディングされたビットに先行している。
このようなビットストリーム構造は、ビットストリームの個々の部分の更に高速な抽出を可能にし、ビットストリームを並列復号化により適したものにする。
例示的な実装において、方法は、第1のコーディングされたビット、第2のコーディングされたビット、第1の先頭トレーリング・ビット、及び第2の先頭トレーリング・ビットを含むビットストリームを、所定値を有するビットでパディングして、ビットストリーム長を、所定のバイト量の整数倍に合致するように調整するステップを更に含む。
このアプローチは、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に調整されたビットストリームを提供することが可能である。
更に、算術符号化は、第1のサブストリームを第1の算術エンコーダで符号化し、第2のサブストリームを第2の算術エンコーダで符号化することを含み、且つ第1の算術エンコーダ及び第2の算術エンコーダによる算術符号化は少なくとも部分的に並列に実行される。
少なくとも2つのサブストリームに対して別々に符号化方法を実行する上述の可能性は、並列符号化を可能にする。これは、改善された符号化効率を促進するのに役立つ可能性がある。
例示的な実装において、算術符号化はレンジ符号化である。
レンジ符号化は、限られたレジスタ又は概して高速なメモリ・サイズを有するハードウェア及びソフトウェア・アーキテクチャに特に好適である可能性がある。
例えば、算術符号化の間に、インターバルの現在の最小値と現在の最大値は、事前に設定されたサイズのメモリに記憶され;コーディングされたビットをビットストリームに含めることは、固定ビットからの所定量のビットをメモリからビットストリームへ移動させることを含み;且つ固定ビットは、現在の最小値及び現在の最大値のバイナリ表現のMSBで同じ値を有する連続するビットである。
1ビットよりも大きい部分においてコーディングされたビットを出力することは、より効率的なソフトウェア及び/又は実装を提供する可能性がある。
例示的な実装において、算術符号化の間に、先頭トレーリング・ビットの量は固定ビット(730)からの所定量のビットに近づき;固定ビット(730)からの所定量のビットまでゼロが続く、値が1である1ビット(1670)を後ろに付けることによって、先頭トレーリング・ビット(1160)から、トレーリング・コーディングされたビットが生成され;トレーリング・コーディングされたビットは、コーディングされたビットをビットストリームに含める前に、コーディングされたビットに含められ;且つ、ゼロ先頭トレーリング・ビットの指標がビットストリームに含められる。
従って、トレーリング・ビットの量の指標とともに多くの先頭トレーリング・ビットをシグナリングする労力の増大を回避することができる。むしろ、より多くのコーディングされたビットを有し、ゼロ先頭トレーリング・ビットをシグナリングするために、シグナリングの労力は低減される。
実施形態によれば、方法は、ビットストリームからデータを算術復号化するために提供され:先頭トレーリング・ビットの量の指標をビットストリームから抽出するステップ;複数のコーディングされたビットをビットストリームから抽出するステップ;先頭トレーリング・ビットの量の抽出された指標によって指定される先頭トレーリング・ビットを、ビットストリームから抽出するステップ;抽出された先頭トレーリング・ビットに、ゼロを、トレーリング・ビットの所定の最大長まで後付けすることを含むトレーリング・ビットを決定するステップ;コーディングされたビット及び決定されたトレーリング・ビットを含むビットによって表現されるコーディングされた値を算術復号化し、それによって前記のデータを取得するステップを含む。
トレーリング・ビットの先頭トレーリング・ビットからの再構成は、ビットストリーム内のより少ない量のビットを使用して、コーディングされたビット及びトレーリング・ビットからの復号化を提供する。
例えば、トレーリング・ビットの決定は、抽出された先頭トレーリング・ビットに、トレーリング・ビットの所定の最大長までゼロが続く、値が1である1ビットを後ろに付けることから構築される。
このアプローチは、算術エンコーダの完全な出力を再構成することを可能にし、従って、特に適切な入力を算術デコーダに提供する。
例示的な実装において、先頭トレーリング・ビットの量の指標は、ビットストリームの中で、コーディングされたビット及び先頭トレーリング・ビットに先行している。
このビットストリーム構造は、ビットストリームからのより高速な抽出を提供する。
例示的な実装において、方法は、第1のコーディングされたビット及び第2のコーディングされたビット、後続の第1の先頭トレーリング・ビット及び第2の先頭トレーリング・ビットを、ビットストリームから抽出するステップであって、第1のコーディングされたビット及び第1の先頭トレーリング・ビットは第1のサブストリームを形成し、第2のコーディングされたビット及び第2の先頭トレーリング・ビットは第2のサブストリームを形成する、ステップ;第1のサブストリームの第1のトレーリング・ビットを決定するステップ;第2のサブストリームの第2のトレーリング・ビットを決定するステップ;第1のコーディングされたビット及び決定された第1のトレーリング・ビットを含む第1のビットによって表現される第1のコーディングされた値を算術復号化するステップ;及び第2のコーディングされたビット及び決定された第2のトレーリング・ビットを含む第2のビットによって表現される第2のコーディングされた値を算術復号化するステップを含む。
2つの別個のサブストリームに対する方法のこのような独立した適用は、より効率的な復号化プロセスをもたらす可能性があり、並列化のための前提条件を提供する。
例えば、方法は、第1のコーディングされたビット、及び第2のコーディングされたビットを、第1のコーディングされたビットの長さを示す第1の長さ指標、及び第2のコーディングされたビットの長さを示す第2の長さ指標とともにビットストリームから抽出するステップを更に含む。
ビットストリームにおいてサブストリームの長さを示すことは、異なるサイズを有するサブストリームの提供を可能にし、従って、より柔軟性のあるビットストリーム構成につながる可能性がある。
例示的な実装において、第1の長さ指標は、ビットストリームの中で第1のコーディングされたビットに先行し、第2の長さ指標は、ビットストリームの中で第2のコーディングされたビットに先行している。
このビットストリーム構造の利点は、複数のサブストリーム及びそれぞれの指標をバッファリングする必要性なしに、サブストリームの即時復号化の可能性であるかもしれない。これにより、処理フローを促進することを達成できる。
例えば、第2の長さ指標は、ビットストリームの中で第1のコーディングされたビットに先行している。
コーディングされたビットの前に連結された長さ指標を提供することは、ビットストリームの個々の部分のより高速な抽出を可能にすることができる。
例えば、第2の先頭トレーリング・ビットの量の指標は、ビットストリームの中で第1のコーディングされたビットに先行している。
このようなビットストリーム構造は、ビットストリームの個々の部分のより高速な抽出の更なる可能性を提供する。
例示的な実装において、方法は、第1のコーディングされたビット、第2のコーディングされたビット、第1の先頭トレーリング・ビット、及び第2の先頭トレーリング・ビットを抽出した後に、ビットストリームの残りのビットを破棄するステップを更に含む。
このようなアプローチは、例えば、ネットワーク・アダプテーション・レイヤ・ユニット又はその他のパケットへのカプセル化のような更なる処理のために適切に調整されたビットストリームを提供することが可能である。
例えば、算術復号化は、第1のサブストリームを第1の算術デコーダで復号化し、第2のサブストリームを第2の算術デコーダで復号化することを含み、且つ第1の算術デコーダ及び第2の算術デコーダによる算術復号化は少なくとも部分的に並列に実行される。
サブストリームの並列復号化は、完全なビットストリームのより高速な復号化をもたらす可能性がある。
例示的な実装において、算術復号化はレンジ復号化である。
レンジ符号化は、限られたレジスタ又は概して高速なメモリ・サイズを有するハードウェア及びソフトウェア・アーキテクチャに特に好適である可能性がある。
例示的な実装において、非一時的な媒体に記憶されたコンピュータ・プログラムは、1つ以上のプロセッサで実行されると、上記のうちの何れかの方法のステップを、1つ以上のプロセッサに実行させるコード命令を含む。
実施形態によれば、装置は、入力データをビットストリームに算術符号化するために提供され:入力データを、コーディングされたビットとトレーリング・ビットに算術符号化し;コーディングされたビットをビットストリームに含め;算術符号化された入力データのインターバルの最小値及び最大値を決定し;連続するトレーリング・ビットである先頭トレーリング・ビットであって、決定された最大値を表す第1の最上位ビットMSBの中で、決定された最小値を表す第2のMSB内のものと同じ値を有する先頭トレーリング・ビットの量を決定し;及び、先頭トレーリング・ビットの決定された量の指標と、先頭トレーリング・ビットとをビットストリームに含める ように構成された処理回路を含む。
実施形態によれば、装置は、ビットストリームからデータを算術復号化するために提供され:先頭トレーリング・ビットの量の指標をビットストリームから抽出し;複数のコーディングされたビットをビットストリームから抽出し;先頭トレーリング・ビットの量の抽出された指標によって指定される先頭トレーリング・ビットを、ビットストリームから抽出し;抽出された先頭トレーリング・ビットに、ゼロを、トレーリング・ビットの所定の最大長まで後付けすることを含むトレーリング・ビットを決定し;及び、コーディングされたビット及び決定されたトレーリング・ビットを含むビットによって表現されるコーディングされた値を算術復号化し、それによって前記のデータを取得するように構成された処理回路を含む。
装置は、上述した方法の利点を提供する。
図19-22に関連して上記で説明される何れの符号化デバイスも、入力データを、コーディングされたビット及び先行するトレーリング・ビットへの算術符号化を実行するための手段を提供することが可能である。これらの例示的な任意のデバイス内の処理回路は、入力データを符号化し、上述の方法に従って、コーディングされたビットの最後のビットを符号化した後に、エンコーダ・ステータスの先頭トレーリング・ビットを決定するように構成される。
図19-22の何れかにおける復号化デバイスは、復号化方法を実行するように適合された処理回路を含む可能性がある。上述したような方法は、コーディングされたビット及び先頭トレーリング・ビットを、それらの各自の量の指標とともに抽出することを含む。トレーリング・ビットは、先頭トレーリング・ビットから再構成され、コーディングされたビットとともに復号化されてデータを得ることができる。
要約すると、データをビットストリームに符号化し、データをビットストリームから復号化するための方法及び装置が説明されている。方法は、符号化プロセスのトレーリング・ビット内において関連する重要なビットのみを含めることによって、ビットストリームの長さを低減することが可能である。これらの先頭トレーリング・ビットの量が決定され、最小量を有するトレーリング・ビットを構成することが可能である。先頭トレーリング・ビットの量の指標は、ビットストリームに含まれる。従って、パディングは必要とされず、シグナリングされる必要があるビットが少なくなる。
ビデオ・コーディング・システム10の以下の実施形態では、ビデオ・エンコーダ20及びビデオ・デコーダ30は、上述の図11及び図12又はニューラル・ネットワーク・ベースのエンコーダ及びデコーダのような他のエンコーダ及びデコーダに関連して、図19及び図20に基づいて説明される。
図19は、例示的なコーディング・システム10、例えば本件出願の技術を使用することが可能なビデオ・コーディング・システム10(又は略してコーディング・システム10)を示す概略的なブロック図である。ビデオ・コーディング・システム10のビデオ・エンコーダ20(又は略してエンコーダ20)及びビデオ・デコーダ30(又は略してデコーダ30)は、本願で説明される種々の例による技術を実行するように構成される可能性があるデバイスの例を表す。
図19に示すように、コーディング・システム10は、符号化されたピクチャ・データ21を、例えば符号化されたピクチャ・データ13を復号化する宛先デバイス14へ提供するように構成されたソース・デバイス12を含む。
ソース・デバイス12は、エンコーダ20を含み、追加的に、即ちオプションとして、ピクチャ・ソース16、例えばピクチャ前処理ユニット18のような前処理プロセッサ(又は前処理ユニット)18、及び、通信インターフェース又は通信ユニット22を含む可能性がある。
ピクチャ・ソース16は、例えば実世界のピクチャを捕捉するカメラのような任意の種類のピクチャ捕捉デバイス、及び/又は、例えばコンピュータ・アニメーション・ピクチャを生成するコンピュータ・グラフィックス・プロセッサのような任意の種類のピクチャ生成デバイス、又は実世界のピクチャ、コンピュータ生成ピクチャ(例えば、スクリーン・コンテンツ又はバーチャル・リアリティ(VR)ピクチャ)、及び/又はそれらの任意の組み合わせ(例えば、拡張現実(AR)ピクチャ)を取得及び/又は提供する任意の種類の他のデバイスを含んでもよいし、又はそれらであってもよい。ピクチャ・ソースは、上記の任意のピクチャを記憶する任意の種類のメモリ又はストレージである可能性がある。
前処理ユニット18及び前処理ユニット18により実行される処理と区別して、ピクチャ及びピクチャ・データ17はまた、未処理ピクチャ又は未処理ピクチャ・データ17と呼ばれてもよい。
前処理ユニット18は、(未処理)ピクチャ・データ17を受信し、ピクチャ・データ17に関して前処理を実行して、前処理されたピクチャ19又は前処理されたピクチャ・データ19を取得するように構成されている。前処理ユニット18によって実行される前処理は、例えば、トリミング、カラー・フォーマット変換(例えば、RGBからYCbCrへ)、色補正、又はノイズ低減を含む可能性がある。前処理ユニット18はオプションの構成要素であってもよいことを理解することが可能である。
ビデオ・エンコーダ20は、前処理されたピクチャ・データ19を受信し、符号化ピクチャ・データ21を提供するように構成される(更なる詳細は、例えば図11に基づいて上述されている)。
ソース・デバイス12の通信インターフェース22は、符号化されたピクチャ・データ21を受信し、符号化されたピクチャ・データ21(又はそれを更に処理した任意のバージョン)を通信チャネル13を介して他のデバイスへ、例えば宛先デバイス14又は任意の他のデバイスへ、記憶又は直接的な再構成のために伝送するように構成されることが可能である。
宛先デバイス14は、デコーダ30(例えば、ビデオ・デコーダ30)を含み、追加的に、即ちオプションとして、通信インターフェース又は通信ユニット28、後処理プロセッサ32(又は後処理ユニット32)、及び表示デバイス34を含む可能性がある。
宛先デバイス14の通信インターフェース28は、符号化されたピクチャ・データ21(又はそれらを更に処理した任意のバージョン)を、例えばソース・デバイス12から直接的に、又は任意の他のソースから、例えばストレージ・デバイスから、例えば符号化されたピクチャ・データのストレージ・デバイスから受信し、符号化されたピクチャ・データ21をデコーダ30に提供するように構成される。
通信インターフェース22及び通信インターフェース28は、ソース・デバイス12と宛先デバイス14との間の直接的な通信リンク、例えば直接的な有線又は無線接続を介して、又は任意の種類のネットワーク、例えば有線若しくは無線ネットワーク又はそれらの任意の組み合わせ、又は任意の種類の私的な及び公的なネットワーク、又はそれらの任意の組み合わせを介して、符号化されたピクチャ・データ21又は符号化されたデータ13を伝送又は受信するように構成されることが可能である。
通信インターフェース22は、例えば、符号化されたピクチャ・データ21を、例えばパケットのような適切なフォーマットにパッケージ化し、及び/又は、通信リンク又は通信ネットワークを介する伝送のための任意の種類の伝送符号化又は処理を使用して、符号化されたピクチャ・データを処理するように構成されることが可能である。
通信インターフェース22の対応部分を形成する通信インターフェース28は、例えば、伝送されたデータを受信し、符号化されたピクチャ・データ21を取得するために任意の種類の対応する伝送復号化又は処理及び/又は非パッケージ化を使用して、伝送データを処理するように構成されることが可能である。
通信インターフェース22及び通信インターフェース28の両方は、図19においてソース・デバイス12から宛先デバイス14へ向かう通信チャネル13に関する矢印により示される一方向通信インターフェース、又は双方向通信インターフェースとして構成されることが可能であり、例えばメッセージを送信及び受信するように、例えば接続をセットアップするように、通信リンク及び/又はデータ伝送、例えば符号化されたピクチャ・データ伝送に関連する他の任意の情報を確認及び交換するように、構成されることが可能である。
デコーダ30は、符号化されたピクチャ・データ21を受信し、復号化されたピクチャ・データ31又は復号化されたピクチャ31を提供するように構成される(更なる詳細は、例えば図12に基づいて説明されている)。
宛先デバイス14の後処理プロセッサ32は、例えば復号化されたピクチャ31のような復号化されたピクチャ・データ31(再構成されたピクチャ・データとも呼ばれる)を後処理して、後処理されたピクチャ33のような後処理ピクチャ・データ33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えばカラー・フォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、リサンプリング、又は他の任意の処理、例えば表示デバイス34による表示のための例えば復号化されたピクチャ・データ31を準備するためのものを含む可能性がある。
宛先デバイス14の表示デバイス34は、後処理ピクチャ・データ33を受信して、ピクチャを、例えばユーザー又はビューアに表示するように構成されている。表示デバイス34は、再構成されたピクチャを表現する任意の種類のディスプレイ、例えば一体化された又は外部のディスプレイ又はモニタであってもよいし、又はそれらを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマ・ディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オン・シリコン(LCoS)、デジタル光プロセッサ(DLP)、又は任意の他の種類のディスプレイを含む可能性がある。
図19は、ソース・デバイス12と宛先デバイス14とを別々のデバイスとして描いているが、デバイスの実施形態はまた、双方又は双方の機能、ソース・デバイス12又は対応する機能と宛先デバイス14又は対応する機能とを含む可能性がある。そのような実施形態では、ソース・デバイス12又は対応する機能と宛先デバイス14又は対応する機能とは、同じハードウェア及び/又はソフトウェアを使用して、又は別個のハードウェア及び/又はソフトウェア、又はそれらの任意の組み合わせにより実現されてもよい。
明細書に基づいて当業者には明らかであるように、図19に示すソース・デバイス12及び/又は宛先デバイス14における機能又は様々なユニットの機能の存在及び(厳密な)分割は、実際のデバイス及びアプリケーションに応じて異なる可能性がある。
エンコーダ20(例えば、ビデオ・エンコーダ20)又はデコーダ30(例えば、ビデオ・デコーダ30)又はエンコーダ20及びデコーダ30の双方は、図20に示されるような処理回路により、例えば、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ディスクリート・ロジック、ハードウェア、ビデオ・コーディング専用又はそれらの任意の組み合わせにより、実現されることが可能である。エンコーダ20は、図11のエンコーダ20及び/又は本願で説明される他の任意のエンコーダ・システム又はサブシステムに関して説明される様々なモジュールを具現化するために、処理回路46により実施されてもよい。デコーダ30は、図12のデコーダ30及び/又は本願で説明される他の任意のデコーダ・システム又はサブシステムに関して説明される様々なモジュールを具現化するために、処理回路46により実施されてもよい。処理回路は、後述するように様々な動作を実行するように構成されることが可能である。図22に示すように、技術が部分的にソフトウェアで実現される場合、デバイスは、適切な非一時的なコンピュータ読み取り可能な記憶媒体にソフトウェアの命令を記憶し、本開示の技術を実行するために1つ以上のプロセッサを使用するハードウェアで命令を実行することができる。ビデオ・エンコーダ20とビデオ・デコーダ30の何れかは、例えば図20に示すように、単一のデバイス内の組み合わされたエンコーダ/デコーダ(CODEC)の一部として統合されてもよい。
ソース・デバイス12及び宛先デバイス14は、任意の種類のハンドヘルド又はステーショナリ・デバイスを含む広範囲に及ぶ任意のデバイス、例えば、ノートブック又はラップトップ・コンピュータ、携帯電話、スマートフォン、タブレット又はタブレット・コンピュータ、カメラ、デスクトップ・コンピュータ、セット・トップ・ボックス、テレビ、表示デバイス、デジタル・メディア・プレーヤ、ビデオ・ゲーミング・コンソール、ビデオ・ストリーミング・デバイス(コンテンツ・サービス・サーバー又はコンテンツ配信サーバー等)、放送受信デバイス、放送送信デバイス等を含む可能性があり、任意の種類のオペレーティング・システムを使用してもよいし、又は使用しなくてもよい。場合によっては、ソース・デバイス12及び宛先デバイス14は無線通信用に装備されてもよい。従って、ソース・デバイス12及び宛先デバイス14は、無線通信デバイスであってもよい。
場合によっては、図19に示すビデオ・コーディング・システム10は単なる一例に過ぎず、本願の技術は、符号化デバイスと復号化デバイスとの間で何らかのデータ通信を必ずしも含む必要のないビデオ・コーディング設定(例えば、ビデオ符号化又はビデオ復号化)に適用される可能性がある。他の例において、データは、ローカル・メモリから検索され、ネットワークを介してストリーミングされる、等々。ビデオ符号化デバイスは、データを符号化してメモリに格納することが可能であり、及び/又はビデオ復号化デバイスは、データをメモリから取り出して復号化することが可能である。一部の例では、符号化及び復号化は、互いに通信しないが、メモリへのデータを符号化し及び/又はメモリからデータを取り出して復号化するだけのデバイスによって実行される。
説明の便宜上、本発明の実施形態は、例えば高効率ビデオ・コーディング(HEVC)又は汎用ビデオ・コーディング(VVC)、ITU-Tビデオ・コーディング・エキスパート・グループ(VCEG)及びISO/IEC動画エキスパート・グループ(MPEG)のビデオ・コーディングに関する共同研究チーム(JCT-VC)によって開発された次世代ビデオ・コーディング規格の参照ソフトウェアを参照することによって本願で説明される。当業者は、本発明の実施形態がHEVC又はVVCに限定されないことを理解するであろう。
図21は、本開示の実施形態によるビデオ・コーディング・デバイス400の概略図である。ビデオ・コーディング・デバイス400は、本願で説明されるように、開示される実施形態を実現することに適している。実施形態では、ビデオ・コーディング・デバイス400は、図19のビデオ・デコーダ30のようなデコーダ、又は図19のビデオ・エンコーダ20のようなエンコーダであってもよい。
ビデオ・コーディング・デバイス400は、データを受信するための入口ポート410(又は入力ポート410)及び受信機ユニット(Rx)420;データを処理するためのプロセッサ、論理ユニット、又は中央処理ユニット(CPU)430;データを送信するための送信機ユニット(Tx)440及び出口ポート450(又は出力ポート450);及びデータを記憶するためのメモリ460を含む。ビデオ・コーディング・デバイス400はまた、光又は電気信号の出入りのために、入口ポート410、受信機ユニット420、送信機ユニット440、及び出口ポート450に結合された光-電気(OE)コンポーネント及び電気-光(EO)コンポーネントを含んでもよい。
プロセッサ430は、ハードウェア及びソフトウェアによって実現される。プロセッサ430は、1つ以上のCPUチップ、コア(例えば、マルチ・コア・プロセッサ)、FPGA、ASIC、及びDSPとして実現されてもよい。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、及びメモリ460と通信する。プロセッサ430は、コーディング・モジュール470を含む。コーディング・モジュール470は、上述の開示される実施形態を実現する。例えば、コーディング・モジュール470は、種々のコーディング動作を実現、処理、準備、又は提供する。従って、コーディング・モジュール470を含むことは、ビデオ・コーディング・デバイス400の機能に対するかなりの改善を提供し、ビデオ・コーディング・デバイス400の異なる状態への変換に影響を及ぼす。代替的に、コーディング・モジュール470は、メモリ460に格納された命令として実現され、プロセッサ430によって実行される。
メモリ460は、1つ以上のディスク、テープ・ドライブ、及びソリッド・ステート・ドライブを含み、オーバー・フロー・データ記憶デバイスとして使用され、このようなプログラムが実行のために選択された場合にプログラムを記憶し、プログラムの実行中に読み込まれた命令及びデータを記憶することができる。メモリ460は、揮発性及び/又は不揮発性であってもよく、リード・オンリ・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、三値連想メモリ(TCAM)、及び/又はスタティック・ランダム・アクセス・メモリ(SRAM)であってもよい。
図22は、例示的な実施形態による、図19のソース・デバイス120及び宛先デバイス14の何れか又は両方として使用することが可能な装置500の簡略化されたブロック図である。
装置500内のプロセッサ502は、中央処理ユニットであるとすることが可能である。代替的に、プロセッサ502は、現在存在している又は今後開発される、情報を操作又は処理することが可能な任意の他のタイプのデバイス又は複数のデバイスであるとすることが可能である。開示される実装は、図示のように単一のプロセッサ、例えばプロセッサ502を用いて実施することが可能であるが、1つより多いプロセッサを用いて、速度及び効率における利点を獲得することができる。
装置500内のメモリ504は、実装においてはリード・オンリ・メモリ(ROM)デバイス又はランダム・アクセス・メモリ(RAM)デバイスであるとすることが可能である。任意の他の適切なタイプのストレージ・デバイスがメモリ504として使用されることが可能である。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコード及びデータ506を含むことが可能である。メモリ504は、更に、オペレーティング・システム508及びアプリケーション・プログラム510を含むことが可能であり、アプリケーション・プログラム510は、本願で説明される方法をプロセッサ502が実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーション・プログラム510は、アプリケーション1ないしNを含むことが可能であり、これらは、上述したような算術コーディングを使用する符号化及び復号化を含む本願で説明される方法を実行するビデオ・コーディング・アプリケーションを更に含む。
また、装置500は、ディスプレイ518のような1つ以上の出力デバイスを含むことが可能である。ディスプレイ518は、一例では、タッチ入力を感知するように動作することが可能なタッチ感知素子に、ディスプレイを組み合わせるタッチ感知ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合することが可能である。
本件では、単一のバスとして描かれているが、装置500のバス512は、複数のバスで構成されることが可能である。更に、セカンダリ・ストレージ514は、装置500の他の構成要素に直接的に結合されることが可能であり、又はネットワークを介してアクセスされることが可能であり、メモリ・カードのような単一の集積ユニット又は複数のメモリ・カードのような複数のユニットを含むことが可能である。従って、装置500は、広く様々な構成で実現されることが可能である。
本発明の実施形態は、主にビデオ・コーディングに基づいて説明されているが、コーディング・システム10、エンコーダ20及びデコーダ30(及び対応するシステム10)の実施形態、並びに本願で説明される他の実施形態は、静止ピクチャ処理又はコーディング、即ちビデオ・コーディングでのような任意の先行する又は連続するピクチャから独立した個々のピクチャの処理又はコーディング用に構成されてもよいことに留意すべきである。一般に、ピクチャ処理コーディングが単一のピクチャ17に限定されるケースでは、インター予測ユニット244(エンコーダ)及び344(デコーダ)だけは利用可能でない可能性がある。ビデオ・エンコーダ20及びビデオ・デコーダ30の他の全ての機能(ツール又は技術とも呼ばれる)は、静止ピクチャ処理、例えば、残差計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、パーティション化262/362、イントラ予測254/354、及び/又はループ・フィルタリング220、320、並びに、エントロピー・コーディング270及びエントロピー復号化304に等しく使用することができる。
例えば、エンコーダ20及びデコーダ30の実施形態、並びに、例えばエンコーダ20及びデコーダ30に関連して本願で説明される機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施されてもよい。ソフトウェアで実施される場合、機能は、1つ以上の命令又はコードとしてコンピュータ読み取り可能な媒体に記憶されるか又は通信媒体を介して伝送され、ハードウェア・ベースの処理ユニットによって実行されてもよい。コンピュータ読み取り可能な媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ読み取り可能な記憶媒体、又は、例えば通信プロトコルに従ってある場所から他の場所へのコンピュータ・プログラムの転送に役立つ任意の媒体を含む通信媒体を含んでもよい。このように、コンピュータ読み取り可能な媒体は、一般に、(1)非一時的である有形のコンピュータ読み取り可能な記憶媒体、又は(2)信号又は搬送波のような通信媒体に対応する可能性がある。データ記憶媒体は、本開示で説明される技術の実施のための命令、コード及び/又はデータ構造を取り出すために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスすることが可能な任意の利用可能な媒体である可能性がある。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含むことが可能である。
一例として、限定ではなく、このようなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスク・ストレージ、磁気ディスク・ストレージ、又は他の磁気ストレージ・デバイス、フラッシュ・メモリ、又は他の任意の媒体であって、命令又はデータ構造の形式で所望のプログラム・コードを記憶するために使用することが可能であり且つコンピュータによってアクセスすることが可能な他の任意の媒体を含むことが可能である。また、任意の接続は、コンピュータ読み取り可能な媒体と適切に言及される。例えば、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波のような無線技術を用いて、ウェブサイト、サーバー、又は他のリモート・ソースから命令が送信される場合、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、DSL、又は赤外線、無線、及びマイクロ波のような無線技術は、媒体の定義に包含される。しかしながら、コンピュータ読み取り可能な記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又はその他の一時的な媒体を含まず、むしろ非一時的な有形の記憶媒体に関連していることが理解されるべきである。ディスク及びdiskは、本願で使用される場合、コンパクト・ディスク(CD)、レーザー・ディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー・ディスク及びブルーレイ・ディスクを含み、ここで、ディスクは通常、データを磁気的に再生し、ディスクはレーザーでデータを光学的に再生する。上記の組み合わせもまた、コンピュータ読み取り可能な媒体の範囲内に包含されるべきである。
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル論理アレイ(FPGA)、又は他の同等な集積された又は個別的な論理回路のような1つ以上のプロセッサによって実行することができる。従って、本件で使用される用語「プロセッサ」は、前述の構造の何れか、又は本件で説明される技術の実施に適した他の任意の構造を指す可能性がある。更に、一部の態様において、本件で説明される機能は、符号化及び復号化のために構成される専用ハードウェア及び/又はソフトウェア・モジュール内で提供されてもよく、又は組み合わされるコーデックに組み込まれてもよい。また、技術は1つ以上の回路又は論理素子で完全に実現することも可能である。
本開示の技術は、ワイヤレス・ハンドセット、集積回路(IC)、又は一組のIC(例えば、チップ・セット)を含む広範な種類のデバイス又は装置で実施することが可能である。開示される技術を実施するように構成されるデバイスの機能的側面を強調するために、本開示では、種々のコンポーネント、モジュール、又はユニットが説明されているが、必ずしも異なるハードウェア・ユニットによる実現を必要としてはいない。むしろ、上述したように、種々のユニットは、適切なソフトウェア及び/又はファームウェアに関連して、コーデック・ハードウェア・ユニット内で組み合わされてもよいし、又は上述したような1つ以上のプロセッサを含む相互運用ハードウェア・ユニットの集まりによって提供されてもよい。