(57)【要約】      （修正有）【課題】ビデオデータに適用されるサンプル適応オフセットのサンプル適応オフセットタイプインデックスを効率よく符号化する。【解決手段】ビデオエンコーダ１００において、サンプル適応オフセットタイプがエッジタイプあるいはバンドタイプの場合、当該決定されたサンプル適応オフセットタイプインデックスを示す２値化データのうち、固定長の部分の存在を示す先頭のビンの値を算術符号化し、当該２値化データのうちの固定長の部分の値をバイパス符号化のみによって符号化する。【選択図】図１
2020010393.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータに適用されるサンプル適応オフセットのサンプル適応オフセットタイプインデックスを符号化する方法であって、
サンプル適応オフセット処理の適用なし、エッジタイプ、およびバンドタイプのうち、ビデオデータのルーマチャンネルに適用されるサンプル適応オフセットのタイプを決定する決定ステップと、
前記決定ステップにおいて決定されたサンプル適応オフセットタイプがエッジタイプあるいはバンドタイプの場合、当該決定されたサンプル適応オフセットタイプインデックスを示す２値化データのうち、固定長の部分の存在を示す先頭のビンの値を算術符号化し、当該２値化データのうちの固定長の部分の値をバイパス符号化のみによって符号化する第１の符号化ステップと、
を有することを特徴とする方法。
【請求項２】
前記ルーマチャンネルに対応する前記サンプル適応オフセットタイプインデックスのバイパス符号化された部分の値は、前記符号化されたビデオデータの受信されたストリーム中にバンド位置情報が存在することを示すことを特徴とする請求項１に記載の方法。
【請求項３】
前記ルーマチャンネルに対応する前記サンプル適応オフセットタイプインデックスのバイパス符号化された部分の値は、前記符号化されたビデオデータの受信されたストリーム中にエッジオフセット情報が存在することを示すことを特徴とする請求項１に記載の方法。
【請求項４】
請求項１から３のいずれか一項に記載の方法をコンピュータに実行させるためのプログラム。
【請求項５】
請求項４に記載のプログラムを記憶したコンピュータ可読記憶媒体。
【請求項６】
請求項１から３のいずれか一項に記載の方法を実行するように構成されたビデオデコーダ。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願は、本明細書に十分に説明されたかのごとくその全内容が引用により本明細書に組み込まれる、２０１２年６月２８日に出願されたオーストラリア特許出願第２０１２２０３８２８号の出願日の３５Ｕ．Ｓ．Ｃ．§１１９の下の恩典を主張する。
【技術分野】
【０００２】
本発明は、一般的に、デジタルビデオ信号処理に関し、特に、ビデオデータのサンプル適応オフセットデータを符号化および復号するための方法、装置、およびシステムに関する。
【背景技術】
【０００３】
ビデオデータの送信および記憶のためのアプリケーションを含む、ビデオコーディングのための多くのアプリケーションが現在存在する。多くのビデオコーディング標準もまた開発されており、他は現在開発中である。ビデオコーディング標準化における最近の開発は、「ビデオコーディングの合同研究開発チーム」（ＪＣＴ−ＶＣ）と呼ばれるグループの形成をもたらした。ビデオコーディングの合同研究開発チーム（ＪＣＴ−ＶＣ）は、ビデオコーディング専門家グループ（ＶＣＥＧ）として知られる国際電気通信連合（ＩＴＵ）の電気通信標準化部門（ＩＴＵ−Ｔ）の第１６研究委員会第６諮問（ＳＧ１６／Ｑ６）のメンバーと、動画専門家グループ（ＭＰＥＧ）としても知られる国際標準化機構／国際電気標準会議の第１合同技術委員会／第２９副委員会／第１１作業部会（ＩＳＯ／ＩＥＣＪＴＣ１／ＳＣ２９／ＷＧ１１）のメンバーとを含む。
【０００４】
ビデオコーディングの合同研究開発チーム（ＪＣＴ−ＶＣ）は、「Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ」として知られている現在既存のビデオコーディング標準よりも著しく性能が優れている新たなビデオコーディング標準を生み出すという目的を有する。Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ標準は、それ自体がＭＰＥＧ−４およびＩＴＵ−Ｔ  Ｈ．２６３といった以前のビデオコーディング標準に対する大きな改善である。開発中の新たなビデオコーディング標準は、「高効率ビデオコーディング（ＨＥＶＣ）」と呼ばれている。ビデオコーディングの合同研究開発チームＪＣＴ−ＶＣはまた、標準の実装を高解像度または高フレームレートで動作するようにスケーリングする際に問題を引き起こす高効率ビデオコーディング（ＨＥＶＣ）のために提案された技術から生じる実装上の難題を考慮している。
【０００５】
Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣビデオコーディング標準は、ビデオデータを表現するために残差係数をコーディングする場合の高圧縮効率の達成のための問題を提示する。
【０００６】
ビデオデータは、フレームのシーケンスによって形成され、各々のフレームは、サンプルの二次元アレイを有する。通常は、フレームは、１つの輝度（ルーマ）チャネルと２つのクロミナンス（クロマ）チャネルとを含む。色情報は通常は、ＹＵＶのような色空間を使用して表現され、Ｙは、ルーマチャネルであり、ＵＶは、２つのクロマチャネルである。ＹＵＶのような色空間は、フレームコンテンツの大部分がルーマチャネルに含まれ、ＵＶチャネルに記憶されるコンテンツの相対的により少ない量が色フレームを再構成するのに十分である、という利点を付与する。クロマチャネルはまた、ごくわずかな知覚品質損失を伴う、より低い空間分解能にダウンサンプリングできる。
【０００７】
４：２：０として知られている一般に使用されるクロマフォーマットは、各々のクロマチャネルが半分の垂直および水平解像度になる、という結果を生じる。各々のフレームは、最大コーディングユニット（ＬＣＵ）のアレイに分解される。最大コーディングユニット（ＬＣＵ）は、固定サイズを有し、エッジの寸法が、２のべき乗であり、６４ルーマサンプルといった等しい幅と高さを有する。コーディングツリーを用いると、親の最大コーディングユニット（ＬＣＵ）の半分の幅と高さを各々が有する４つのコーディングユニット（ＣＵ）への各々の最大コーディングユニット（ＬＣＵ）の細区分が可能となる。コーディングユニット（ＣＵ）の各々は、４つの等しいサイズのコーディングユニット（ＣＵ）へとさらに細区分できる。最小コーディングユニット（ＳＣＵ）サイズに到達するまでそのような細区分処理が繰り返し適用しても良く、これによりコーディングユニット（ＣＵ）が最小サポートサイズまで小さくして定義することができる。コーディングユニットの階層への最大コーディングユニットの繰り返しの細区分は、四分木構造を有し、コーディングツリーと呼ばれる。細区分処理は、ビンとしてコーディングされたフラグのシーケンスとして通信ビットストリームに符号化される。したがって、コーディングユニットは正方形状を有する。
【０００８】
コーディングツリーの葉ノードを占有する、さらに細区分されないコーディングユニットのセットが、コーディングツリー中に存在する。変換ツリーがそれらのコーディングユニットに存在する。変換ツリーは、コーディングツリーのために使用された四分木構造を使用して、コーディングユニットをさらに分解しても良い。変換ツリーの葉ノードでは、残差データが、変換ユニット（ＴＵ）を使用して符号化される。コーディングツリーとは対照的に、変換ツリーはコーディングユニットを、非正方形状を有する変換ユニットへと細区分し得る。さらに、変換ツリー構造は、変換ユニット（ＴＵ）が親のコーディングユニットによって提供されたエリアのすべてを占有することを要求しない。
【０００９】
コーディングツリーの葉ノードの各々のコーディングユニットは、予測ユニット（ＰＵ）として各々が知られている、予測データサンプルの１つ以上のアレイへと細区分される。各々の予測ユニット（ＰＵ）は、イントラ予測またはインター予測処理を適用することによって導出される、入力ビデオフレームデータの一部分の予測を含む。
【００１０】
いくつかの方法が、コーディングユニット（ＣＵ）内の予測ユニット（ＰＵ）をコーディングするために使用できる。単一の予測ユニット（ＰＵ）が、コーディングユニット（ＣＵ）の全エリアを占有するか、または、コーディングユニット（ＣＵ）が、水平または垂直のいずれかで２つの等しいサイズの長方形の予測ユニット（ＰＵ）へと分けても良い。加えて、コーディングユニット（ＣＵ）は、４つの等しいサイズの正方形の予測ユニット（ＰＵ）へと分けても良い。
【００１１】
ビデオエンコーダは、ビデオデータをシンタックス要素のシーケンスへと変換することによって、ビデオデータをビットストリームへと圧縮する。ＭＰＥＧ４−ＡＶＣ／Ｈ．２６４ビデオ圧縮標準において定義されたスキームと同一の算術コーディングスキームを使用して、コンテキスト適応二値算術コーディング（ＣＡＢＡＣ）スキームが、開発中の高効率ビデオコーディング（ＨＥＶＣ）標準内で定義される。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準では、コンテキスト適応二値算術コーディング（ＣＡＢＡＣ）が使用されている場合、各々のシンタックス要素がビンのシーケンスとして表現される。各々のビンは、バイパスコーディングされるかまたは算術的にコーディングされるかのいずれかである。バイパスコーディングは、ビンが等しく０または１でありそうな場合に使用される。この場合、達成可能なさらなる圧縮は存在しない。算術コーディングは、等しくない確率分布を有するビンのために使用される。各々の算術的にコーディングされたビンは、「コンテキスト」として知られている情報に関連づけられる。コンテキストは、ありそうなビンの値（「ｖａｌＭＰＳ」）と確率状態、すなわち、ありそうなビンの値の推定された確率にマッピングする整数とを含む。シンタックス要素からバイパスコーディングされたビンと算術コーディングされたビンとの組み合わせを備えるビンのそのようなシーケンスを作成することは、シンタックス要素を「二値化すること」として知られている。
【００１２】
ビデオエンコーダまたはビデオデコーダでは、別個のコンテキスト情報が各々のビンのために利用可能であるので、ビンのためのコンテキスト選択がコーディング効率を改善する手段を提供する。特に、コーディング効率は、関連づけられたコンテキスト情報が使用されたビンの以前のインスタンスからの統計的特性がビンの現在のインスタンスの統計的特性と相関するように特定のビンを選択することによって、改善できる。そのようなコンテキスト選択は、最適なコンテキストを決定するために、空間的に局所的な情報を頻繁に利用する。
【発明の概要】
【００１３】
本開示の一態様によると、符号化されたビデオデータの受信されたストリームからサンプル適応オフセットタイプインデックスデータを復号する方法が提供される。この方法では、ビデオデータのストリームからサンプル適応オフセットタイプインデックス値の算術的に符号化された第１の部分を決定する。この方法では、第１の部分がビデオデータのストリーム中にサンプル適応オフセットタイプインデックス値のバイパス符号化された第２の部分が存在することを示す場合、第２の部分を決定する。この方法では、サンプル適応オフセットタイプインデックス値の復号された第１および第２の部分の組み合わせからサンプル適応オフセットタイプインデックスを復号する。サンプル適応オフセットタイプインデックスデータは、ビデオ復号における複数のオフセットタイプの１つを選択するために使用される。
【００１４】
望ましくは、サンプル適応オフセットタイプインデックス値の第２の部分は、符号化されたビデオデータの受信されたストリーム中にバンド位置情報が存在することを示す。あるいは、サンプル適応オフセットタイプインデックス値の第２の部分は、符号化されたビデオデータの受信されたストリーム中にエッジオフセット情報が存在することを示す。
【００１５】
好ましくは、第２の部分は、固定長を有する。第２の部分の長さは、第１の部分によって決定できる。具体的な実施では、決定された第１の部分の値は、第２の部分の存在を示す。また、復号においては、第１の部分から０を復号して、サンプル適応オフセットタイプインデックス値０を付与することと、第１の部分から１を復号して、二進値を有する第２の部分の存在を決定することとを含み、また上記復号におい、は続いて、二進値を復号して、整数でありかつ０でないサンプル適応オフセットタイプインデックス値を付与することをふくむ。たとえば、二進値が０００〜１１１の範囲におけるものである場合、復号されたサンプル適応オフセットタイプインデックス値は、１〜５の範囲におけるものである。
【００１６】
他の実施では、第２の部分は、可変長を有する。
【００１７】
他の実施では、第１の部分は複数のビットを備え、それらのビットの１つの設定は、第２の部分の存在を示す。
【００１８】
サンプル適応オフセットタイプインデックス値を、符号化ビデオデータのストリームに符号化する方法もまた開示される。この方法では、サンプル適応オフセットタイプインデックス値が最も確からしい値であるかどうかを決定することと、二値化されるサンプル適応オフセットタイプインデックス値の算術的にコーディングされる第１の部分に第１の二進値を二値化することとが含まれる。この方法では、また、サンプル適応オフセットタイプインデックス値が最も確からしい値でない場合、第１の部分が符号化ビデオデータのストリーム中に第２の部分が存在することを示すように、二値化されたサンプル適応オフセットタイプインデックス値の算術的にコーディングされた第１の部分に第２の二進値を二値化し、また、二値化されたサンプル適応オフセットタイプインデックス値のバイパス符号化された第２の部分にサンプル適応オフセットタイプインデックス値に依存した一意の二進コードを二値化する。この方法では、続いて、二値化されたサンプル適応オフセットタイプインデックス値を符号化ビデオデータのストリームに符号化する。
【００１９】
他の態様もまた開示される。
【００２０】
本発明の少なくとも１つの実施形態が図面を参照して説明される。
【図面の簡単な説明】
【００２１】
【図１】図１は、ビデオエンコーダの機能モジュールを示す模式的なブロック図である。
【図２】図２は、ビデオデコーダの機能モジュールを示す模式的なブロック図である。
【図３Ａ】図３Ａは、図１のエンコーダが実現され得る汎用コンピュータシステムの模式的なブロック図である。
【図３Ｂ】図３Ｂは、図２のデコーダが実現され得る汎用コンピュータシステムの模式的なブロック図である。
【図４Ａ】図４Ａは、図５Ａの二値化スキーム５００を使用する最大コーディングユニット（ＬＣＵ）構造の模式的な表現である。
【図４Ｂ】図４Ｂは、二値化５００を使用する、連結されたバイパスビンを有するＬＣＵ構造の模式的な表現である。
【図４Ｃ】図４Ｃは、図５Ｂの二値化スキーム５２０を使用するＬＣＵ構造の模式的な表現である。
【図４Ｄ】図４Ｄは、図５Ｃの二値化スキーム５４０を使用するＬＣＵ構造の模式的な表現である。
【図４Ｅ】図４Ｅは、二値化スキーム５４０を使用する、連結されたバイパスビンを有するＬＣＵ構造の模式的な表現である。
【図４Ｆ】図４Ｆは、図５Ｄの二値化スキーム５６０を使用するＬＣＵ構造の模式的な表現である。
【図４Ｇ】図４Ｇは、図５Ｅの二値化スキーム５８０を使用するＬＣＵ構造の模式的な表現である。
【図４Ｈ】図４Ｈは、二値化スキーム５８０を使用する、連結されたバイパスビンを有するＬＣＵ構造の模式的な表現である。
【図４Ｉ】図４Ｉは、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇ要素およびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇ要素の連結されたレイアウトを使用するＬＣＵ構造の模式的な表現である。
【図５Ａ】図５Ａは、二値化スキーム５００の構造図である。
【図５Ｂ】図５Ｂは、二値化スキーム５２０の構造図である。
【図５Ｃ】図５Ｃは、二値化スキーム５４０の構造図である。
【図５Ｄ】図５Ｄは、二値化スキーム５６０の構造図である。
【図５Ｅ】図５Ｅは、二値化スキーム５８０の構造図である。
【図６Ａ】図６Ａは、ＬＣＵエンコーダの流れ図である。
【図６Ｂ】図６Ｂは、ＬＣＵ  ＳＡＯ情報エンコーダの流れ図である。
【図６Ｃ】図６Ｃは、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素およびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素のエンコーダの流れ図である。
【図６Ｄ】図６Ｄは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素エンコーダの流れ図である。
【図６Ｅ】図６Ｅは、ＬＣＵ  ＳＡＯ情報エンコーダの流れ図である。
【図６Ｆ】図６Ｆは、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素エンコーダの流れ図である。
【図６Ｇ】図６Ｇは、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素エンコーダの流れ図である。
【図６Ｈ】図６Ｈは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素エンコーダの流れ図である。
【図６Ｉ】図６Ｉは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素エンコーダの流れ図である。
【図６Ｊ（１）】図６Ｊ（１）は、二値化スキーム５００のための二値化処理の流れ図である。
【図６Ｊ（２）】図６Ｊ（２）は、二値化スキーム５４０のための二値化処理の流れ図である。
【図６Ｋ】図６Ｋは、二値化スキーム５８０のための二値化処理の流れ図である。
【図６Ｌ（１）】図６Ｌ（１）は、二値化スキーム５６０のための二値化処理の流れ図である。
【図６Ｌ（２）】図６Ｌ（２）は、二値化スキーム５２０のための二値化処理の流れ図である。
【図７Ａ】図７Ａは、ＬＣＵデコーダの流れ図である。
【図７Ｂ】図７Ｂは、ＬＣＵ  ＳＡＯ情報デコーダの流れ図である。
【図７Ｃ】図７Ｃは、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素およびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素のデコーダの流れ図である。
【図７Ｄ】図７Ｄは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素デコーダの流れ図である。
【図７Ｅ】図７Ｅは、ＬＣＵ  ＳＡＯ情報デコーダの流れ図である。
【図７Ｆ】図７Ｆは、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素デコーダの流れ図である。
【図７Ｇ】図７Ｇは、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素デコーダの流れ図である。
【図７Ｈ】図７Ｈは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素デコーダの流れ図である。
【図７Ｉ】図７Ｉは、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素デコーダの流れ図である。
【図７Ｊ（１）】図７Ｊ（１）は、二値化スキーム５００のための復号および二値化解除処理の流れ図である。
【図７Ｊ（２）】図７Ｊ（２）は、二値化スキーム５４０のための復号および二値化解除処理の流れ図である。
【図７Ｋ】図７Ｋは、二値化スキーム５８０のための復号および二値化解除処理の流れ図である。
【図７Ｌ（１）】図７Ｌ（１）は、二値化スキーム５６０のための復号および二値化解除処理の流れ図である。
【図７Ｌ（２）】図７Ｌ（２）は、二値化スキーム５２０のための復号および二値化解除処理の流れ図である。
【図７Ｍ（１）】図７Ｍ（１）は、二値化スキーム５００のための復号および二値化解除処理の流れ図である。
【図７Ｍ（２）】図７Ｍ（２）は、二値化スキーム５００のための復号および二値化解除処理の流れ図である。
【図７Ｎ（１）】図７Ｎ（１）は、二値化スキーム５４０のための復号および二値化解除処理の流れ図である。
【図７Ｎ（２）】図７Ｎ（２）は、二値化スキーム５４０のための復号および二値化解除処理の流れ図である。
【図７Ｏ】図７Ｏは、二値化スキーム５８０のための復号処理の流れ図である。
【図７Ｐ】図７Ｐは、二値化スキーム５８０のための二値化解除処理の流れ図である。
【発明を実施するための形態】
【００２２】
添付図面のいずれか１つ以上において、同一の参照番号を有するステップおよび／または特徴について言及される場合、それらのステップおよび／または特徴は、逆の意図が示されない限り、この説明の目的のために、同一の機能（単数または複数）または動作（単数または複数）を有する。
【００２３】
各々の変換ユニット（ＴＵ）で、残差係数データがビットストリームに符号化出来る。各々の「残差係数」は、変換ユニット内の画像特性を周波数（ＤＣＴ）ドメインで表現し、変換ユニット内の一意の場所を占有する、数字である。変換ユニットは、空間ドメインと周波数ドメインとの間で変換される残差データサンプルのブロックである。周波数ドメインにおいて、変換ユニット（ＴＵ）は、残差データサンプルを残差係数データとして符号化する。変換ユニットの辺の寸法は、２のべき乗サイズであり、「ルーマ」チャネルの４サンプル〜３２サンプル、「クロマ」チャネルの２〜１６サンプルの範囲にわたる。変換ユニット（ＴＵ）ツリーの葉ノードは、残差係数データが必要でない場合は、変換ユニット（ＴＵ）を含むかまたはまったく何も含まないかのいずれかである。
【００２４】
以下において詳細に説明されるように、変換ユニットの空間表現が残差データサンプルの二次元アレイであるので、変更された離散コサイン変換（ＤＣＴ）のような変換の結果として生じる周波数ドメイン表現もまた、残差係数の二次元アレイである。変換ユニット（ＴＵ）内の典型的なサンプルデータのスペクトル特性は、周波数ドメイン表現が空間表現よりもコンパクトであるようになっている。さらに、変換ユニット（ＴＵ）において典型的な、より低い周波数スペクトルの情報が支配的なので、低周波数の残差係数が表現される変換ユニット（ＴＵ）の左上に向かうほどより大きな値の残差係数のクラスタ化という結果を生じる。
【００２５】
修正離散コサイン変換（ＤＣＴ）または修正離散サイン変換（ＤＳＴ）が、残差変換を実現するために使用できる。残差変換の実施は、各々の要求された変換ユニット（ＴＵ）サイズをサポートするように構成される。ビデオエンコーダにおいて、残差変換からの残差係数が、スケーリングされ、量子化される。スケーリングおよび量子化は、残差係数の大きさを低減し、画像品質の低減を犠牲にしてビットストリームにコーディングされたデータのサイズを低減する。
【００２６】
残差変換を実行した後、量子化処理が実行される。量子化処理の目的は、残差係数の大きさの精度を低減することによってより高い圧縮比を達成することである。大きさの精度の低減は、不可逆処理であるので、視覚品質に影響を及ぼす。精度低減レベルは、量子化パラメータ（ＱＰ）によって制御される。パラメータの値が高ければ高いほど、視覚品質がより大きく影響を受ける。
【００２７】
量子化の後、いくつかのビデオコーディング処理では、サンプル適応オフセット（ＳＡＯ）フィルタリングが、エンコーダによって収集されたフレームデータおよびＳＡＯオフセットデータに適用される。ＳＡＯデータは、元の画像と量子化後に再構成された画像との間の画素値分布の差分についての情報を含む。ＳＡＯデータは次に、二値化され、符号化され、デコーダに転送される。デコーダは、再構成されたフレームの視覚品質および客観品質を改善するためにＳＡＯデータを使用しても良い。
【００２８】
開発中の高効率ビデオコーディング（ＨＥＶＣ）標準は、ビデオデータの高効率圧縮を達成しようとしている。推定および統計データ分析を使用することにより、ビデオデータの高効率圧縮を達成できる。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準では、高ビットレートでビデオデータを符号化または復号することを目指している。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準において用いられるコンテキスト適応二値算術コーディング（ＣＡＢＡＣ）スキームは、「バイパスコーディング」と呼ばれる、動作の「等確率」モードをサポートする。このモードでは、ビンがコンテキストモデルからのコンテキストに関連づけられないので、コンテキストモデル更新ステップは存在しない。このようなモードでは、各々のビンがバイパスコーディングされれば、複数の隣り合うビンをビットストリームから並行して読み取ることができ、その結果スループットが増大する。例えば、ハードウェア実装が、隣り合うバイパスコーディングデータのグループを並行して書き込み／読み取って、ビットストリームの符号化／復号のスループットを増大させることができる。
【００２９】
二値化の一態様はとして、個々のフラグに対応するシンタックス要素のコーディングに使用するためのコンテキストの選択がある。１つのフラグは、２つ以上のコンテキストを使用しても良い。どのコンテキストがフラグの特定のインスタンスのために使用されるべきかは、他のすでに利用可能な情報に依存して決定され、「コンテキストモデリング」として知られている。コンテキストモデリングは、フラグの現在のインスタンスの統計的特性を最も精確に表現するコンテキストが選択される処理である。例えば、フラグの値が同一フラグの隣接インスタンスの値によって頻繁に影響されるケースでは、コンテキストがフラグの隣接インスタンスの値に基づいて選択することが可能である。フレーム情報の大部分がルーマチャネルに含まれていることに起因して、コンテキストモデリングは、クロマチャネルと対比してルーマチャネルの別個のコンテキストを頻繁に使用する。しかしながら、２つのクロマチャネルの統計的特性が相対的に類似しているので、コンテキストは通常は、クロマチャネル間で共有される。
【００３０】
開発中の高効率ビデオコーディング（ＨＥＶＣ）標準では、ビデオデータの高効率圧縮を達成しようとしている。推定および統計データ分析を使用することにより、ビデオデータの高効率圧縮を達成することができる。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準では、高ビットレートでビデオデータを符号化または復号することを目的としている。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準において用いられるコンテキスト適応二値算術コーディング（ＣＡＢＡＣ）スキームは、「バイパスコーディング」と呼ばれる、動作の「等確率」モードをサポートする。このモードでは、ビンがコンテキストモデルからのコンテキストに関連づけられないので、コンテキストモデル更新ステップは存在しない。このようなモードでは、各々のビンがバイパスコーディングされれば、複数の隣り合うビンがビットストリームから並行して読み取ることができ、スループットが増大する。例えば、ハードウェア実装が、隣り合うバイパスコーディングデータのグループを並行して書き込み／読み取って、ビットストリームの符号化／復号のスループットを増大させることができる。
【００３１】
図１は、本開示に係るビデオエンコーダ１００の機能モジュールを示す模式的なブロック図である。図２は、本開示に係る対応するビデオデコーダ２００の機能モジュールを示す模式的なブロック図である。ビデオエンコーダ１００およびビデオデコーダ２００は、図３Ａおよび図３Ｂに示すごとく、汎用コンピュータシステム３００を使用して、実現しても良いし、コンピュータシステム３００内の専用ハードウェアによって、コンピュータシステム３００内で実行可能なソフトウェアによって、またはあるいはコンピュータシステム３００内の専用ハードウェアおよび実行可能なソフトウェアの組み合わせによって、さまざまな機能モジュールが実現できる。
【００３２】
図３Ａから分かる様に、コンピュータシステム３００は、コンピュータモジュール３０１と、キーボード３０２、マウスポインタデバイス３０３、スキャナ３２６、カメラ３２７、およびマイクロフォン３８０といった入力デバイスと、プリンタ３１５、ディスプレイデバイス３１４、およびラウドスピーカー３１７を含む出力デバイスとを含む。コンピュータモジュール３０１は、外部変調器復調器（モデム）トランシーバデバイス３１６を、接続３２１を介した通信ネットワーク３２０への通信および通信ネットワーク３２０からの通信のために使用することができる。通信ネットワーク３２０は、インターネットのような広域ネットワーク（ＷＡＮ）、セルラー電気通信ネットワーク、またはプライベートＷＡＮで良い。接続３２１が電話回線である場合、モデム３１６は、従来の「ダイアルアップ」モデムで良い。あるいは、接続３２１が高容量（例えば、ケーブル）接続である場合、モデム３１６は、ブロードバンドモデムを用いれば良い。ワイヤレスモデムもまた、通信ネットワーク３２０へのワイヤレス接続のために使用できる。
【００３３】
コンピュータモジュール３０１は通常は、少なくとも１つのプロセッサユニット３０５とメモリユニット３０６とを含む。例えば、メモリユニット３０６は、半導体ランダムアクセスメモリ（ＲＡＭ）および半導体読み取り専用メモリ（ＲＯＭ）を持つ。コンピュータモジュール３０１はまた、ビデオディスプレイ３１４、ラウドスピーカー３１７、およびマイクロフォン３８０に結合するオーディオビデオインターフェース３０７と、キーボード３０２、マウス３０３、スキャナ３２６、カメラ３２７、およびオプションでジョイスティックまたは他のヒューマンインターフェースデバイス（図示せず）に結合するＩ／Ｏインターフェース３１３と、外部モデム３１６およびプリンタ３１５のインターフェース３０８とを含む、多数の入力／出力（Ｉ／Ｏ）インターフェースを含む。いくつかの実装では、モデム３１６は、コンピュータモジュール３０１内、例えば、インターフェース３０８内に、組み込まれても良い。コンピュータモジュール３０１はまた、ローカルエリアネットワーク（ＬＡＮ）として知られているローカルエリア通信ネットワーク３２２への接続３２３を介したコンピュータシステム３００の結合を可能にするローカルネットワークインターフェース３１１を有する。図３Ａに示されているように、ローカル通信ネットワーク３２２はまた、接続３２４を介してワイドネットワーク３２０に結合することが出来、通常は、いわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む。ローカルネットワークインターフェース３１１は、ＥｔｈｅｒＮｅｔ（登録商標）回路カード、Ｂｌｕｅｔｏｏｔｈ（登録商標）ワイヤレス機構、またはＩＥＥＥ８０２．１１ワイヤレス機構を備えていても良いが、多数の他のタイプのインターフェースがインターフェース３１１用に実施されても。
【００３４】
Ｉ／Ｏインターフェース３０８および３１３は、シリアル接続およびパラレル接続のいずれかまたは両方を提供することが出来、前者は通常は、ユニバーサルシリアルバス（ＵＳＢ）標準に従って実装され、対応するＵＳＢコネクタ（図示せず）を有する。記憶デバイス３０９を備え、通常はハードディスクドライブ（ＨＤＤ）３１０を含む。フロッピー（登録商標）ディスクドライブおよび磁気テープドライブ（図示せず）のような他の記憶デバイスを使用できる。光学ディスクドライブ３１２が通常は、データの不揮発性ソースとして動作するように備えられる。例えば、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク（登録商標））、ＵＳＢ−ＲＡＭ、ポータブル外部ハードドライブ、およびフロッピー（登録商標）ディスクといった、ポータブルメモリデバイスが、システム３００への適切なデータソースとして使用。通常は、ＨＤＤ３１０、光学ドライブ３１２、ネットワーク３２０および３２２、またはカメラ３２７のいずれかが、符号化されるビデオデータのソースであり、または、ディスプレイ３１４とともに、記憶または再生される復号されたビデオデータの宛先である。
【００３５】
コンピュータモジュール３０１のコンポーネント３０５〜３１３は通常は、相互接続されたバス３０４を介して、および当業者に知られているコンピュータシステム３００の従来の動作モードを結果として生じる手法で、通信する。例えば、プロセッサ３０５は、接続３１８を使用してシステムバス３０４に結合される。同様に、メモリ３０６および光学ディスクドライブ３１２は、接続３１９によってシステムバス３０４に結合される。前述した機構が実現できるコンピュータは、例えばＩＢＭのＰＣおよび互換品、ＳｕＮのスパークステーション、ＡｐｐｌｅのＭａｃ（登録商標）、または同様のコンピュータシステムを含む。
【００３６】
適宜または所望される場合、エンコーダ１００およびデコーダ２００ならびに以下に説明される方法は、コンピュータシステム３００を使用して実現することが出来、コンピュータシステム３００では、エンコーダ１００、デコーダ２００、および以下に説明される処理が、コンピュータシステム３００内で実行可能な１つ以上のソフトウェアアプリケーションプログラム３３３として実現できる。特に、エンコーダ１００、デコーダ２００、および説明される方法のステップは、コンピュータシステム３００内で実行されるソフトウェア３３３における命令３３１（図３Ｂを参照）によって達成できる。ソフトウェア命令３３１は、１つ以上の特定のタスクを各々が実行する１つ以上のコードモジュールとして形成できる。ソフトウェアはまた、２つの別個の部分に分割され、そのうち、第１の部分および対応するコードモジュールは、以下に説明する方法を実行し、第２の部分および対応するコードモジュールは、第１の部分とユーザとの間のユーザインターフェースを管理しても良い。
【００３７】
ソフトウェアは、例えば、以下において説明される記憶デバイスを含むコンピュータ可読媒体に記憶できる。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム３００へとロードされ、コンピュータシステム３００により実行される。そのようなソフトウェアを有するコンピュータ可読媒体またはコンピュータ可読媒体上に記録されたコンピュータプログラムは、コンピュータプログラム製品である。コンピュータシステム３００におけるコンピュータプログラム製品の使用により、好ましくは、エンコーダ１００、デコーダ２００、および説明される方法を実現するための有利な装置を実現する。
【００３８】
ソフトウェア３３３は通常は、ＨＤＤ３１０またはメモリ３０６に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム３００へとロードされ、コンピュータシステム３００により実行される。このようにして、例えば、ソフトウェア３３３は、光学ディスクドライブ３１２によって読み取られる光学的に読み取り可能なディスク記憶媒体（例えば、ＣＤ−ＲＯＭ）３２５に記憶されても良い。
【００３９】
いくつかの例では、アプリケーションプログラム３３３は、１つ以上のＣＤ−ＲＯＭ３２５上に符号化され、ユーザに供給され、対応するドライブ３１２を介して読み取られ、また、あるいは、ネットワーク３２０または３２２からユーザによって読み取られても良い。なおもさらに、ソフトウェアはまた、他のコンピュータ可読媒体からコンピュータシステム３００へとロードされることもできる。コンピュータ可読記憶媒体は、記録された命令および／またはデータを実行および／または処理のためにコンピュータシステム３００に提供する任意の非一時的な有形記憶媒体のことを言う。そのような記憶媒体は、例えば、そのようなデバイスがコンピュータモジュール３０１の内部または外部にあろうとなかろうと、フロッピー（登録商標）ディスク、磁気テープ、ＣＤ−ＲＯＭ、ＤＶＤ、ブルーレイディスク、ハードディスクドライブ、ＲＯＭまたは集積回路、ＵＳＢメモリ、光磁気ディスク、または、ＰＣＭＣＩＡカード等といったコンピュータ読み取り可能なカードを含む。コンピュータモジュール３０１へのソフトウェア、アプリケーションプログラム、命令、および／または、ビデオデータまたは符号化されたビデオデータの提供関与し得る、一時的なまたは無形のコンピュータ可読伝送媒体は、例えば、別のコンピュータまたはネットワーク化されたデバイスへの無線または赤外線伝送チャネルならびにネットワーク接続、および、電子メール送信およびウェブサイトに記録された情報、等を含むインターネットまたはイントラネットを含む。
【００４０】
上述されたアプリケーションプログラム３３３の第２の部分および対応するコードモジュールを実行することにより、ディスプレイ３１４上に描画または表現される１つ以上のグラフィカルユーザインターフェース（ＧＵＩ）を実現することができる。通常はキーボード３０２およびマウス３０３の操作により、コンピュータシステム３００およびアプリケーションのユーザは、ＧＵＩ（単数または複数）に関連づけられたアプリケーションへのコマンドおよび／または入力の制御を提供する機能的に適応可能な手法で、インターフェースを操作することができる。ラウドスピーカー３１７を介して出力されるスピーチプロンプトおよびマイクロフォン３８０を介して入力されるユーザボイスコマンドを利用するオーディオインターフェースのような、他の形態の機能的に適応可能なユーザインターフェースもまた実現することができる。
【００４１】
図３Ｂは、プロセッサ３０５および「メモリ」３３４の詳細な模式的なブロック図である。メモリ３３４は、図３Ａにおけるコンピュータモジュール３０１によってアクセス可能な（ＨＤＤ３０９および半導体メモリ３０６を含む）すべてのメモリモジュールの論理的な集約を表現する。
【００４２】
コンピュータモジュール３０１に最初に電源が投入されると、パワーオンセルフテスト（ＰＯＳＴ）プログラム３５０が実行される。ＰＯＳＴプログラム３５０は通常は、図３Ａの半導体メモリ３０６のＲＯＭ３４９に記憶される。ソフトウェアを記憶するＲＯＭ３４９のようなハードウェアデバイスはファームウェアと呼ばれることがある。ＰＯＳＴプログラム３５０は、適切な機能を保証するためにコンピュータモジュール３０１内のハードウェアを検査し、通常は、正常な動作のために、プロセッサ３０５と、メモリ３３４（３０９、３０６）と、通常はこれもまたＲＯＭ３４９に記憶される基本入出力システムソフトウェア（ＢＩＯＳ）モジュール３５１とをチェックする。ＰＯＳＴプログラム３５０が成功裏に実行されると、ＢＩＯＳ３５１は、図３Ａのハードディスクドライブ３１０を起動する。ハードディスクドライブ３１０が起動すると、ハードディスクドライブ３１０に常駐しているブートストラップローダープログラム３５２がプロセッサ３０５を介して実行される。これにより、オペレーティングシステム３５３をＲＡＭメモリ３０６へとロードし、その上でオペレーティングシステム３５３が動作を開始する。オペレーティングシステム３５３は、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインターフェース、および一般的なユーザインターフェースを含む、さまざまなハイレベルな機能を遂行するためにプロセッサ３０５によって実行可能なシステムレベルアプリケーションである。
【００４３】
オペレーティングシステム３５３は、コンピュータモジュール３０１上で実行される各々の処理またはアプリケーションが別の処理に割り当てられたメモリと衝突せずに実行されるのに十分なメモリを有することを保証するように、メモリ３３４（３０９、３０６）を管理する。さらに、図３Ａのシステム３００において利用可能な異なるタイプのメモリは、各々の処理が効率的に実行できるように適切に使用されなくてはならない。したがって、集約されたメモリ３３４は、（特に言及しない限り）メモリの特定のセグメントがどのように割り当てられるかを示すというよりもむしろ、コンピュータシステム３００によってアクセス可能なメモリの一般的な図およびその使用方法を提供するように意図される。
【００４４】
図３Ｂに示されるように、プロセッサ３０５は、制御ユニット３３９、算術論理演算ユニット（ＡＬＵ）３４０、およびキャッシュメモリと時に呼ばれるローカルまたは内部メモリ３４８を含む、多数の機能モジュールを含む。キャッシュメモリ３４８は通常は、レジスタ部における多数の記憶レジスタ３４４〜３４６を含む。１つ以上の内部バス３４１がこれらの機能モジュールを機能的に相互接続する。プロセッサ３０５はまた通常は、接続３１８を使用してシステムバス３０４を介し外部デバイスと通信するための１つ以上のインターフェース３４２を有する。メモリ３３４は、接続３１９を使用してバス３０４に結合される。
【００４５】
アプリケーションプログラム３３３は、条件付き分岐およびループ命令を含む命令のシーケンス３３１を含む。プログラム３３３はまた、プログラム３３３の実行において使用されるデータ３３２を含んでも良い。命令３３１およびデータ３３２はそれぞれ、記憶場所３２８、３２９、３３０および３３５、３３６、３３７に記憶される。命令３３１および記憶場所３２８〜３３０の相対的なサイズに依存して、特定の命令は、記憶場所３３０に示される命令によって表現されているように、単一の記憶場所に記憶されても良い。あるいは、ある命令は、記憶場所３２８および３２９に示されている命令セグメントによって表現されているように別個の記憶場所にその各々が記憶される多数の部分へとセグメント化しても良い。
【００４６】
一般的に、プロセッサ３０５は、その中で実行される命令のセットを付与される。プロセッサ３０５は、その後の入力を待ち、その入力に対しプロセッサ３０５は、命令の別のセットを実行することによって反応する。各々の入力は、入力デバイス３０２、３０３のうちの１つ以上によって生成されたデータ、ネットワーク３２０、３０２のうちの１つにわたって外部ソースから受信されたデータ、記憶デバイス３０６、３０９のうちの１つから検索されたデータ、または、記憶媒体３２５から検索され、対応するリーダー３１２に挿入されたデータを含む、多数のソースの１つ以上から提供され、そのすべては、図３Ａに描かれている。命令のセットの実行は、いくつかのケースにおいてデータの出力という結果を生じ得る。実行はまた、メモリ３３４へのデータまたは変数の記憶を含んでも良い。
【００４７】
エンコーダ１００、デコーダ２００、および説明されている方法は、メモリ３３４における対応する記憶場所３５５、３５６、３５７に記憶される、入力変数３５４を使用する。エンコーダ１００、デコーダ２００、および説明されている方法は、メモリ３３４における対応する記憶場所３６２、３６３、３６４に記憶される、出力変数３６１を生成する。中間変数３５８は、記憶場所３５９、３６０、３６６、および３６７に記憶されても良い。
【００４８】
図３Ｂのプロセッサ３０５を参照すると、レジスタ３４４、３４５、３４６、算術論理演算ユニット（ＡＬＵ）３４０、および制御ユニット３３９は共に、プログラム３３３を構成する命令のセットにおけるすべての命令の「フェッチ、復号、および実行」サイクルを実行するために必要とされるマイクロオペレーションのシーケンスを実行するように機能する。各々のフェッチ、復号、および実行サイクルは、
（ａ）記憶場所３２８、３２９、３３０から命令３３１をフェッチするかまたは読み取る、フェッチ動作と、
（ｂ）制御ユニット３３９がどの命令がフェッチされたかを決定する、復号動作と、
（ｃ）制御ユニット３３９および／またはＡＬＵ３４０が命令を実行する、実行動作と
を備える。
【００４９】
その後、次の命令のさらなるフェッチ、復号、および実行サイクルが実行されても良い。同様に、制御ユニット３３９が記憶場所３３２に値を記憶するかまたは書き込む、記憶サイクルが実行されても良い。
【００５０】
後述する処理における各々のステップまたはサブ処理は、プログラム３３３の１つ以上のセグメントに関連づけられ、通常は、プログラム３３３の言及されたセグメントの命令のセットにおけるすべての命令のフェッチ、復号、および実行サイクルを実行するように共に機能するプロセッサ３０５におけるレジスタ部３４４、３４５、３４７、ＡＬＵ３４０、および制御ユニット３３９によって実行される。
【００５１】
エンコーダ１００、デコーダ２００、および説明されている方法は、あるいは、説明されている方法の機能または下位機能を実行する１つ以上の集積回路のような専用ハードウェアにおいて実現されてもよい。そのような専用ハードウェアは、グラフィックプロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または１つ以上のマイクロプロセッサおよび関連づけられたメモリを含んでいても良い。
【００５２】
上述のように、ビデオエンコーダ１００は、ハードディスクドライブ３１０に常駐し、その実行中、プロセッサ３０５によって制御されている、ソフトウェアアプリケーションプログラム３３３の１つ以上のソフトウェアコードモジュールとして実現しても良い。特に、ビデオエンコーダ１００は、ソフトウェアアプリケーションプログラム３３３の１つ以上のソフトウェアコードモジュールとして各々が実現できるモジュール１０２〜１１２、１１４、１１５、および１５１を備える。
【００５３】
図１のビデオエンコーダ１００は、高効率ビデオコーディング（ＨＥＶＣ）ビデオ復号パイプラインの例であるが、モジュール１０２〜１１２、１１４、１１５、および１５１によって実行される処理ステージは、ＶＣ−１またはＨ．２６４／ＭＰＥＧ−４  ＡＶＣといった他のビデオコーデックと共通である。ビデオエンコーダ１００は、輝度およびクロミナンスサンプルを含む一連のフレームとして、符号化されていないフレームデータ１０１を受信する。ビデオエンコーダ１００は、フレームデータ１０１の各々のフレームを、例えば、コーディングユニット（ＣＵ）ツリーとして表現されるコーディングユニット（ＣＵ）の階層的なセットへと分割する。
【００５４】
ビデオエンコーダ１００は、予測ユニット（ＰＵ）１２０として知られている予測データサンプルのアレイを、マルチプレクサモジュール１１０から出力することによって動作する。差分モジュール１１５が、予測ユニット（ＰＵ）１２０とフレームデータ１０１から受信されたデータサンプルの対応するアレイとの間の差分を出力し、この差分は、残差データサンプル１２２として知られている。
【００５５】
差分モジュール１１５からの残差データサンプル１２２は、変換モジュール１０２によって受信され、変換モジュール１０２は、差分を空間表現から周波数ドメイン表現に変換して、変換ツリーにおける各々の変換ユニット（ＴＵ）の変換係数１２４を作成する。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準では、周波数ドメイン表現への変換は、従来の離散コサイン変換（ＤＣＴ）がシフトと加算を使用して実現されるように修正された、修正ＤＣＴを使用して実現される。変換係数１２４が次に、スケーリングおよび量子化モジュール１０３に入力され、スケーリングおよび量子化されて、残差係数１２６が生成される。スケーリングおよび量子化処理は、精度の損失という結果を生じる。
【００５６】
残差係数１２６は、スケーリングおよび量子化モジュール１０３によって実行されたスケーリングを逆にして残差係数１２６のスケーリングし直されたバージョンであるスケーリングし直された変換係数１２８を生成する、逆スケーリングモジュール１０５に入力として受け取られる。残差係数１２６はまた、符号化ビットストリーム１１３に残差係数を符号化するエントロピーエンコーダモジュール１０４に入力として受け取られる。スケーリングおよび量子化モジュール１０３の結果として生じた精度の損失に起因して、スケーリングし直された変換係数１２８は、元の変換係数１２４と同一ではない。逆スケーリングモジュール１０５からのスケーリングし直された変換係数１２８は続いて、逆変換モジュール１０６に出力される。逆変換モジュール１０６は、周波数ドメインから空間ドメインへの逆変換を実行して、デコーダで生成される空間ドメイン表現と同一の、スケーリングし直された変換係数１２８の空間ドメイン表現１３０を生成する。
【００５７】
動き推定モジュール１０７が、フレームデータ１０１を、メモリ３０６内に構成されたフレームバッファモジュール１１２に記憶された以前のフレームデータと比較することによって、動きベクトル１３２を生成する。動きベクトル１３２は続いて、動きベクトル１３２から導出された空間オフセットを考慮に入れて、フレームバッファモジュール１１２に記憶されたサンプルをフィルタリングすることにより、インター予測参照サンプル１３４を生成する、動き補償モジュール１０８に入力される。図１には示されていないが、動きベクトル１３２はまた、符号化ビットストリーム１１３にコーディングするためにエントロピーエンコーダモジュール１０４にシンタックス要素として渡される。イントラフレーム予測モジュール１０９が、マルチプレクサモジュール１１０の出力１２０と逆変換モジュール１０６からの出力１３０とを合計する合計モジュール１１４から得られたサンプル１３８を使用して、イントラ予測参照サンプル１３６を生成する。
【００５８】
予測ユニット（ＰＵ）は、イントラ予測またはインター予測方法を使用してコーディングできる。イントラ予測を使用すべきかまたはインター予測を使用すべきかについての決定は、結果として生じる符号化ビットストリーム１１３の所望のビットレートと、イントラ予測またはインター予測方法のいずれかによって導入される画像品質歪みの量との間の、レート歪みトレードオフに応じて行われる。イントラ予測が使用される場合、１つのイントラ予測モードが、可能なモードのセットから、またレート歪みトレードオフに応じて、選択される。１つのイントラ予測モードが、各々の予測ユニット用に選択される。
【００５９】
マルチプレクサモジュール１１０は、図示されていないが当該技術においてよく知られている制御論理によって決定された現在の予測モード１４２に依存して、イントラフレーム予測モジュール１０９からのイントラ予測参照サンプル１３６または動き補償ブロック１０８からのインター予測参照サンプル１３４のいずれかを選択する。予測モード１４２はまた、エントロピーエンコーダ１０４に提供され、そのようなものとして、後述するように変換ユニットのスキャン順序を決定またはそうでなければ確立するために使用される。インターフレーム予測が対角線スキャン順序のみを使用するのに対し、イントラフレーム予測は、対角線スキャン、水平スキャン、または垂直スキャン順序を使用し得る。
【００６０】
合計モジュール１１４は、デブロッキングフィルタモジュール１１１に入力される合計１３８を生成する。デブロッキングフィルタモジュール１１１は、ブロック境界に沿ったフィルタリングを実行して、デブロッキングされたサンプル１５３を生成し、それは、入力フレームデータ１０１と共にサンプル適応オフセット（ＳＡＯ）フィルタモジュール１５１に入力される。ＳＡＯフィルタモジュール１５１は、ブロック内部でフィルタリングを実行して、ＳＡＯフィルタリングサンプル１４０とＳＡＯオフセットデータ１５２とを生成する。フィルタリングサンプル１４０は、メモリ３０６内に構成されたフレームバッファモジュール１１２に書き込まれる。ＳＡＯオフセットデータ１５２は、エントロピーエンコーダモジュール１０４に渡され、エントロピーエンコーダモジュール１０４において、データ１５２は、以下において説明されるように、ビットストリーム１１３にエントロピー符号化される。フレームバッファモジュール１１２は、将来参照するために過去の複数のフレームからのデータを保持するのに十分な容量を有するバッファである。
【００６１】
ビデオエンコーダ１００において、１つの変換ユニット（ＴＵ）内の残差データサンプル１２２は、入力フレームデータ１０１のデータサンプルと入力フレームデータ１０１のデータサンプルの予測１２０との間の差分を求めることにより決定される。差分は、変換ユニット（ＴＵ）の残差係数の空間表現を提供する。変換ユニット（ＴＵ）の残差係数は、二次元の有意度マップに変換される。
【００６２】
変換ユニット（ＴＵ）における残差係数の有意度マップは続いて、スキャン順序として知られている特定の順序でスキャンされて、有意係数フラグのリストと呼ばれるフラグ値の一次元リストを形成する。スキャン順序は、イントラ予測モジュール１０９から予測モード１４２と共に受信されたもののようなスキャンパターンによって記述または指定することができる。スキャンパターンは、水平、垂直、対角線、またはジグザグで良い。
【００６３】
上述のように、ビデオエンコーダ１００はまた、エントロピー符号化方法を実現するエントロピーエンコーダモジュール１０４を備える。エントロピーエンコーダモジュール１０４は、スケーリングおよび量子化モジュール１０３から受信された入来残差係数データ（または残差係数）１２６とＳＡＯモジュール１５１から受信されたＳＡＯデータ１５２とからシンタックス要素を生成する。エントロピーエンコーダモジュール１０４は、符号化ビットストリーム１１３を出力し、以下においてより詳細に説明する。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準のために、符号化ビットストリーム１１３は、ネットワーク抽象層（ＮＡＬ）ユニットに描写される。フレームの各々のスライスは、１つのＮＡＬユニットに含まれる。
【００６４】
エントロピーエンコーダモジュール１０４において実現されるエントロピー符号化方法のいくつかの代替例が存在する。開発中の高効率ビデオコーディング（ＨＥＶＣ）標準は、コンテキスト適応二値算術コーディング（ＣＡＢＡＣ）、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣに見られるコンテキスト適応二値算術コーディング（ＣＡＢＡＣ）の変形をサポートする。代替のエントロピーコーディングスキームは、確率区間区分エントロピー（ＰＩＰＥ）コーダとして知られている。
【００６５】
複数のビデオコーディング方法をサポートするビデオエンコーダ１００のために、サポートされたエントロピーコーディング方法の１つが、エンコーダ１００の構成に応じて選択される。さらに、各々のフレームからのコーディングユニットを符号化する場合に、エントロピーエンコーダモジュール１０４は、各々のフレームが１フレームあたり１つ以上のスライスを有し、各々のスライスがフレームの一部の画像データを含むように、符号化ビットストリーム１１３を書き込む。１フレームあたり１つのスライスを生成することは、各々のスライス境界を描写することに関連づけられたオーバーヘッドを低減する。しかしながら、フレームを複数のスライスに分割することもまた可能である。
【００６６】
図２のビデオデコーダ２００は、ハードディスクドライブ３１０に常駐し、その実行中、プロセッサ３０５によって制御されている、ソフトウェアアプリケーションプログラム３３３の１つ以上のソフトウェアコードモジュールとして実現できる。特に、ビデオデコーダ２００は、ソフトウェアアプリケーションプログラム３３３の１つ以上のソフトウェアコードモジュールとして各々が実現できるモジュール２０２〜２０８、および２１０を備える。ビデオデコーダ２００は高効率ビデオコーディング（ＨＥＶＣ）ビデオ復号パイプラインに関連して説明されるが、モジュール２０２〜２０８および２０９によって実行される処理ステージは、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ、ＭＰＥＧ−２、およびＶＣ−１といった、エントロピーコーディングを用いる他のビデオコーデックと共通である。
【００６７】
符号化ビットストリーム１１３のような符号化ビットストリームが、ビデオデコーダ２００によって受信される。符号化ビットストリーム１１３は、メモリ３０６、ハードディスクドライブ３１０、ＣＤ−ＲＯＭ、ブルーレイディスク（登録商標）、または他のコンピュータ可読記憶媒体から読み取られる。あるいは、符号化ビットストリーム１１３は、通信ネットワーク３２０に接続されたサーバまたは無線周波数受信機のような外部ソースから受信される。符号化ビットストリーム１１３は、復号されるフレームデータを表現する符号化シンタックス要素を含む。
【００６８】
符号化ビットストリーム１１３が、符号化ビットストリーム１１３からシンタックス要素２２０およびＳＡＯオフセットデータ２４２を抽出し、シンタックス要素２２０の値をビデオデコーダ２００における他のブロックに渡す、エントロピーデコーダモジュール２０２に入力される。エントロピーエンコーダモジュール１０４に関連して説明したような、エントロピーデコーダモジュール２０２において実現される複数のエントロピー復号方法が存在し得る。残差係数データを表現するシンタックス要素データ２２０は、逆スケーリングおよび変換モジュール２０３に渡され、動ベクトル情報を表現するシンタックス要素データ２２２は、動き補償モジュール２０４に渡される。逆スケーリングおよび変換モジュール２０３は、残差係数データに逆スケーリングを実行して、再構成された変換係数を作成する。モジュール２０３は続いて、逆変換モジュール１０６に関連して説明した逆変換のように、逆変換を実行して、再構成された変換係数を周波数ドメイン表現から空間ドメイン表現に変換し、残差サンプル２２４を生成する。
【００６９】
動き補償モジュール２０４は、メモリ３０６内に構成されたフレームバッファブロック２０８からの以前のフレームデータ２２６と組み合わせられたエントロピーデコーダモジュール２０２からの動きベクトルデータ２２２を用いて、出力される復号フレームデータの予測である予測ユニット（ＰＵ）のインター予測参照サンプル２２８を生成する。シンタックス要素が、現在のコーディングユニットがイントラ予測を使用してコーディングされたものであることを示す場合、イントラフレーム予測モジュール２０５が、予測ユニット（ＰＵ）と空間的に隣接するサンプルを用いて予測ユニット（ＰＵ）のイントラ予測参照サンプル２３０を生成する。空間的に隣接するサンプルは、合計モジュール２１０から出力された合計２３２から得られる。マルチプレクサモジュール２０６は、符号化ビットストリーム１１３におけるシンタックス要素によって示された現在の予測モードに依存して、予測ユニット（ＰＵ）のためにイントラ予測参照サンプルまたはインター予測参照サンプルを選択する。マルチプレクサモジュール２０６から出力されたサンプル２３４のアレイが、合計モジュール２１０により逆スケーリングおよび変換モジュール２０３からの残差サンプル２２４に加算されて合計２３２が生成され、合計２３２は続いて、デブロッキングフィルタモジュール２０７およびイントラフレーム予測モジュール２０５の各々に入力される。エンコーダ１００とは対照的に、イントラフレーム予測モジュール２０５は、エントロピーデコーダ２０２から予測モード２３６を受信する。マルチプレクサ２０６は、エントロピーデコーダ２０２からイントラフレーム予測／インターフレーム予測選択信号を受信する。デブロッキングフィルタモジュール２０７は、データブロック境界に沿った可視のアーチファクトを滑らかにするためにデータブロック境界に沿ったフィルタリングを実行する。デブロッキングフィルタモジュール２０７の出力はエントロピーデコーダ２０２からのＳＡＯオフセットデータ２４２と共に、ＳＡＯフィルタモジュール２４１に入力される。ＳＡＯフィルタモジュール２４１は、画像の視覚品質および客観品質の両方を改善するためにＳＡＯオフセットデータ２４２を使用してブロック内部でフィルタリングを実行する。ＳＡＯフィルタモジュール２４１の出力２４４は、メモリ３０６内に構成されたフレームバッファモジュール２０８に書き込まれる。フレームバッファモジュール２０８は、将来参照するために復号された複数のフレームを保持するのに十分な記憶容量を提供する。復号されたフレーム２０９はまた、フレームバッファモジュール２０８から出力される。
【００７０】
ストリーム１１３における輝度チャネルおよび２つのクロミナンスチャネルのＳＡＯデータ２４２は、以下のシンタックス要素、すなわち、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇ、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇ、ｓａｏ＿ｔｙｐｅ＿ｉｄｘ、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮを含む。
【００７１】
ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇは二進値であり、現在のＬＣＵがフレームにおいて最も左の位置にない場合にのみストリーム１１３中に存在し、そうでなければｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇは０であると想定される。ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇは、ＬＣＵ毎および色チャネル毎にコーディングされ、左の隣接ＬＣＵからのｓａｏ＿ｔｙｐｅ＿ｉｄｘ、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、およびｓａｏ＿ｏｆｆｓｅｔ要素の導出を示す。シンタックス的に、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇは、以下のごとく二値フラグである。
【００７２】
【表１】
2020010393.tif 000003
【００７３】
ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇは二進値であり、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０であり、現在のＬＣＵが、フレームにおける最も上の位置にない場合にのみストリーム１１３中に存在し、そうでなければ、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇは０であると想定される。
【００７４】
サンプル適応オフセットタイプインデックスデータを表現するシンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘは、１〜５までを含む範囲の整数値であり、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０である場合にのみ、ストリーム１１３中に存在し、そうでなければｓａｏ＿ｔｙｐｅ＿ｉｄｘの値は０であると想定される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘは、現在のコーディングツリーブロックのエッジオフセットタイプを示し、ＣＵ毎およびチャネル毎にコーディングされ、以下を記述する。
【００７５】
【表２】
2020010393.tif 000004
【００７６】
従来のビデオコーディングアプローチは、２つのコンテキストモデルと最悪のケースでも６つのＣＡＢＡＣビンとを有する単項ＣＡＢＡＣコーディング、およびｓａｏ＿ｔｙｐｅ＿ｉｄｘのための以下のコーディングを使用する。
【００７７】
【表３】
2020010393.tif 000005
【００７８】
上記単項コーディングにおいて、第１のビンは、第１のコンテキストモデルを使用して符号化され、すべての他のビンは、第２のコンテキストモデルを使用して符号化される。
【００７９】
シンタックス要素ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮは、整数値であり、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの値が５と等しい場合にのみ、ストリーム中に存在する。
【００８０】
シンタックス要素ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓは、４つの整数値のシーケンスであり、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの値が０と等しくない場合にのみ、ストリーム中に存在する。
【００８１】
シンタックス要素ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮは、４つの整数値のシーケンスであり、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの値が５と等しい場合にのみ、ストリーム１１３中に存在する。
【００８２】
本発明者達は、ＳＡＯシンタックス要素の二値化に伴う問題が存在すると判断した。ｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化は次善であり、値が未知の範囲の大きさを持つ可能性がある場合には、単項コーディングが有用であるのに対し、大きさの最大可能範囲が既知である場合には、切り捨て単項コーディングがより効率的である。本発明者達はまた、０の値が０．９を超える確率を有し、他の値はコーディング効率に著しい影響を及ぼさないと判断した。さらに、本発明者達による実験は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇのコンテキストの割り当てもまた次善であることを示した。コンテキストを低減すると、一般的にチャネル間の相関に起因して、コーディング利得をもたらすことが可能である。
【００８３】
本開示の一態様によると、本発明者達は、以下のようなｓａｏ＿ｔｙｐｅ＿ｉｄｘ要素のための代替の二値化アプローチを提案する。
【００８４】
【表４】
2020010393.tif 000006
【００８５】
このコーディングによると、同一のＬＣＵに属するｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素はマージされるので、ＣＡＢＡＣおよびバイパスのビンはインターリーブされない。また、このコーディングにおいて、最初のビットは、算術的に符号化された部分である単一のＣＡＢＡＣビンを表現し、次のビットは、対応するバイパスビンのバイパス符号化されたデータを表現する。ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇのために、単一のコンテキストがすべてのチャネル間で共有されるので、コンテキストモデルの数は３から１に低減される。本発明者達による予備実験は、これが、ラングムアクセステスト条件では−０．１％の、全イントラテスト条件では０．０％のコーディング利得を提供することを示した。この改訂された二値化によると、最悪のケースにおいて、ＣＡＢＡＣビンの数は３から１に低減され、１つの冗長コンテキストが削除されるので、改善されたコーディング効率を提供する。本発明者達による予備実験はコーディング損失を示さない。このコーディングアプローチの変形もまた説明する。
【００８６】
シンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化スキーム５００が、図５Ａを参照して以下に説明する。二値化スキーム５００は、５つの値を符号化するために（８つのオプションを付与する）３ビットを使用する場合、利用可能なオプションのうち３つは使用されないということを認識した、表４において提供されたものの１つの変形である。そのようなものとして、表４のアプローチは、最大６６７０個（＝８＊７＊６＊５＊４）の変形を有し得るが、スキーム５００もそのうちの１つである。
【００８７】
二値化スキーム５００は、算術的に符号化された部分５０１およびオプションのバイパス符号化された部分５０２を含む。部分５０１は、１つの二進要素５０３で形成される。二進要素５０３は、二値化された値の１つに値「０」を、すべての他の値に「１」を割り当てられる。普通、値「０」は、最高推定確率を有する要素に割り当てられる。部分５０２は、要素５０３の値が「１」である場合にのみ存在する。部分５０２は、３つのバイパス符号化された二進要素５０４、５０５、５０６で形成される。二進要素５０４、５０５、５０６は、「１」と等しい要素５０３を有する二値化された各々の値のための一意の３ビットの二進値を割り当てられる。二進要素５０３、５０４、５０５、５０６は、隣り合うように次から次へと、または他のシンタックス要素によりインターリーブされて、のいずれかで、ストリーム１１３に記憶される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘの例示的な二値化５１０は、二値化スキーム５００を実現する。分かる様に、例５１０は、算術的に符号化された部分５０１に対応する単一ビットの算術的に符号化された第１の部分５１１と、バイパス符号化された部分５０２に対応する固定長（３ビット）のバイパス符号化された第２の部分５１２を含む。ここで、第２の部分５１２のサイズまたは長さは、第１の部分５１１によって決定される。第１の部分５１１における１の値の存在は、バイパス符号化された部分５１２が存在することを示す。バイパス符号化された部分５１２の長さは、予め決められ、エンコーダおよびデコーダの両方に知られたものであり得る。あるいは、第１の部分５１１の値は、第２の部分５１２の長さを示せるが、第１の部分５１１は、バイパス符号化されたセクション部分５１２の符号化された異なる長さに対し少なくとも２ビットの長さであることが必要である。算術的に符号化された値１０が、３ビットのバイパス符号化された部分を示す一方で、算術的に符号化された値１１は、４ビットのバイパス符号化された部分を示す、といったものが例になるであろう。
【００８８】
最大コーディングユニット（ＬＣＵ）のシンタックス構造４００が、図４Ａを参照して説明される。
【００８９】
シンタックス構造４００は、ＳＡＯ情報を表現するブロック４０１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４０２とで形成される。ブロック４０１は、３つのブロック４０３、４０４、および４０５を含む。ブロック４０３は、輝度チャネルのＳＡＯ情報を含み、ブロック４０４および４０５は、２つのクロミナンスチャネルのＳＡＯ情報を含む。ブロック４０３、４０４、および４０５は、同一のシンタックス構造を有するので、ブロック４０３のために図４Ａに示されたシンタックス要素４０６〜４１１は、ブロック４０４および４０５にも存在しうる。ブロック４０６は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含む。ブロック４０７はｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４０８は、順序４１２で記憶された算術的に符号化された部分４１３およびバイパス符号化された部分４１４とともに二値化スキーム５００を使用して二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４０９は、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮシンタックス要素を含む。ブロック４１０は、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓシンタックス要素を含む。ブロック４１１は、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮシンタックス要素を含む。二値化スキーム５００（およびいくつかの他のもの）が二進要素のインターリーブを可能にするので、順序４１２は（ビンの）特定の順序に関連する。
【００９０】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４２０を、図４Ｂを参照して説明する。
【００９１】
シンタックス構造４２０は、ＳＡＯ情報を表現するブロック４２１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４２２と含む。ブロック４２１は、ブロック４２３、４２４、および４２５を含む。ブロック４２３は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を含む。ブロック４２４は、二値化スキーム５００を使用して符号化された３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４２５は、３つのチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮのシンタックス要素を含む。
【００９２】
ブロック４２４は、ブロック４２６および４２７で形成される。ブロック４２６は、輝度チャネルおよび２つのクロミナンスチャネルに対応したｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つの算術的に符号化された部分４２８、４２９、および４３０を含む。ブロック４２７は、輝度チャネルおよび２つのクロミナンスチャネルに対応したｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つのバイパス符号化された部分４３１、４３２、および４３３を含む。部分４３１、４３２、および４３３は、対応する部分４２８、４２９、および４３０がそれらの存在を示す場合にのみ存在する。ブロック４２７の合計ビット長は、算術的に符号化された部分４２８、４２９、および４３０の値に基づいて決定される。
【００９３】
シンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘの代替の二値化スキーム５２０を、図５Ｂを参照して以下に説明する。
【００９４】
二値化スキーム５２０は、隣り合うように次から次へとストリーム１１３に記憶された３つの算術的に符号化された二進要素５２１、５２２、５２３を備える。ｓａｏ＿ｔｙｐｅ＿ｉｄｘの例示的な二値化５３０は、二値化スキーム５２０を実現する。
【００９５】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４４０を、図４Ｃを参照して説明する。
【００９６】
シンタックス構造４４０は、ＳＡＯ情報を表現するブロック４４１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４４２とを有する。ブロック４４１は、３つのブロック４４３、４４４、および４４５を含む。ブロック４４３は、輝度チャネルのＳＡＯ情報を含み、ブロック４４４および４４５は、２つのクロミナンスチャネルのＳＡＯ情報を含む。ブロック４４３、４４４、および４４５は、同一のシンタックス構造を有するので、ブロック４４３のために図４Ｃに示されたシンタックス要素４４６〜４５１は、ブロック４４４および４４５にも存在できる。ブロック４４６は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含む。ブロック４４７は、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４４８は、算術的に符号化されたすべてのビンとともに二値化スキーム５２０を使用して二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４４９は、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮシンタックス要素を含む。ブロック４５０は、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓシンタックス要素を含む。ブロック４５１は、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮシンタックス要素を含む。
【００９７】
シンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘの代替の二値化スキーム５４０を、図５Ｃを参照して以下に説明する。
【００９８】
二値化スキーム５４０は、算術的に符号化された部分５４１およびバイパス符号化された部分５４２で形成される。部分５４１は、１つの二進要素５４３を含む。部分５４２は、２つのバイパス符号化された二進要素５４４、５４５を有する。二進要素５４３、５４４、５４５は、各々のｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を一意に識別する。二進要素５４３、５４４、５４５は、隣り合うように次から次へと、または他のシンタックス要素によりインターリーブされて、のいずれかで、ストリーム１１３に記憶される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘの例示的な二値化５５０は、二値化スキーム５４０を実現する。
【００９９】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４６０を、図４Ｄを参照して説明する。
【０１００】
シンタックス構造４６０は、ＳＡＯ情報を表現するブロック４６１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４６２とを有する。ブロック４６１は、３つのブロック４６３、４６４、および４６５を含む。ブロック４６３は、輝度チャネルのＳＡＯ情報を含み、ブロック４６４および４６５は、２つのクロミナンスチャネルのＳＡＯ情報を含む。ブロック４６３、４６４、および４６５は、同一のシンタックス構造を有するので、ブロック４６３のために図４Ｄに示されたシンタックス要素４６６〜４７１は、ブロック４６４および４６５にも存在できる。ブロック４６６は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含む。ブロック４６７は、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４６８は、上述されたものと同様の順序４７２で記憶された算術的に符号化された部分４７３およびバイパス符号化された部分４７４とともに二値化スキーム５４０を使用して二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４６９は、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮシンタックス要素を含む。ブロック４７０は、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓシンタックス要素を含む。ブロック４７１は、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮシンタックス要素を含む。
【０１０１】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４８０を、図４Ｅを参照して説明する。
【０１０２】
シンタックス構造４８０は、ＳＡＯ情報を表現するブロック４８１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４８２とで形成される。ブロック４８１は、ブロック４８３、４８４、および４８５を含む。ブロック４８３は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を含む。ブロック４８４は、二値化スキーム５４０を使用して符号化された３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４８５は、３つのチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮのシンタックス要素を含む。
【０１０３】
ブロック４８４は、ブロック４８６および４８７を含む。ブロック４８６は、輝度チャネルおよび２つのクロミナンスチャネルの、それぞれ、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つの算術的に符号化された部分４８８、４８９、および４９０を含む。ブロック４８７は、輝度チャネルおよび２つのクロミナンスチャネルのそれに対応したｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つのバイパス符号化された部分４９１、４９２、および４９３を含む。
【０１０４】
シンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化スキーム５６０を、図５Ｄを参照して以下に説明する、が切り捨てられた単項の実現の例を表現する。
【０１０５】
二値化スキーム５６０において、二値化されたシーケンス５６２の最大長は、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の可能な明確な値の数から１を引いたものとして決定される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の６つの可能な値のケースでは、二値化されたシーケンス５６２の最大長は５である。二値化スキーム５６０において、すべてのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値は、オプションの算術的に符号化された終結する「０」の値５６４が後続する、算術的に符号化された「１」の値５６３の一意のシーケンス５６１を割り当てられる。シーケンス５６１は、０から二値化されたシーケンス５６２の最大長までの範囲における長さを持つことができる。終結する「０」の値５６４は、所与の二値化された値の以前に符号化された「１」の値５６３の数が、二値化されたシーケンス５６２の最大長未満である場合にのみ、符号化される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘの例示的な二値化５７０が、二値化スキーム５６０を実現する。
【０１０６】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４１００を、図４Ｆを参照して説明する。
【０１０７】
シンタックス構造４１００は、ＳＡＯ情報を表現するブロック４１０１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４１０２とで形成される。ブロック４１０１は、３つのブロック４１０３、４１０４、および４１０５で形成される。ブロック４１０３は、輝度チャネルのＳＡＯ情報を含み、ブロック４１０４および４１０５は、２つのクロミナンスチャネルのＳＡＯ情報を含む。ブロック４１０３、４１０４、４１０５は、同一のシンタックス構造を有するので、ブロック４１０３のために図４Ｆに示されたシンタックス要素４１０６〜４１１１は、ブロック４１０４および４１０５にも存在できる。ブロック４１０６は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含む。ブロック４１０７は、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４１０８は、二値化スキーム５６０を使用して二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素５６２を含む。ブロック４１０９は、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮシンタックス要素を含む。ブロック４１１０は、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓシンタックス要素を含む。ブロック４１１１は、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮシンタックス要素を含む。
【０１０８】
シンタックス要素ｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化スキーム５８０が、図５Ｅを参照して以下に説明する。
【０１０９】
二値化スキーム５８０において、二値化されたシーケンス５８２の最大長は、ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の可能な明確な値の数から１を引いたものとして決定される。ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の６つの可能な値のケースでは、二値化されたシーケンス５８２の最大長は５である。
【０１１０】
二値化スキーム５８０において、すべてのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値は、オプションの終結する「０」の値５８４が後続する「１」の値５８３の一意のシーケンス５８１を割り当てられる。二値化スキーム５８０においては、二値化された値のすべてのビンは、算術的に符号化された最初のＴ個のビンを除いてバイパス符号化され、ここで、Ｔは、０から二値化されたシーケンス５８２の最大長から１を引いたものまでの範囲における値である。ｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の６つの可能な値の場合については、パラメータＴは０〜４までの範囲における任意の整数値をとることができる。二進要素５８１および二進要素５８４のシーケンスは、隣り合うように次から次へと、または他のシンタックス要素によりインターリーブされて、のいずれかで、ストリーム１１３に記憶できる。
【０１１１】
ｓａｏ＿ｔｙｐｅ＿ｉｄｘの例示的な二値化５９０は、パラメータＴ＝２による二値化スキーム５８０を実現する。二値化５９０は、算術的に符号化された第１の部分５９１と可変長のバイパス符号化された第２の部分５９２とを有する。図５Ｅから分かるように、第１の部分５９１は、複数のビットを有し、（値２〜５のために）設定される場合、第２の部分５９２がビデオデータのストリーム中に存在することを示す、二番目のビットを（値１〜５のために）含むことができる。
【０１１２】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４２００を、図４Ｇを参照して説明する。
【０１１３】
シンタックス構造４２００は、ＳＡＯ情報を表現するブロック４２０１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４２０２とで形成される。ブロック４２０１は、３つのブロック４２０３、４２０４、および４２０５を含む。ブロック４２０３は、輝度チャネルのＳＡＯ情報を含み、ブロック４２０４および４２０５は、２つのクロミナンスチャネルのＳＡＯ情報を含む。ブロック４２０３、４２０４、および４２０５は、同一のシンタックス構造を有するので、ブロック４２０３の図４Ｇに示されたシンタックス要素４２０６〜４２１１は、ブロック４２０４および４２０５にも存在することができる。ブロック４２０６は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含む。ブロック４２０７は、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４２０８は、上述したように、順序４２１２で隣り合うように記憶されたすべてのビンとともに二値化スキーム５８０を使用して二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４２０９は、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮシンタックス要素を含む。ブロック４２１０は、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓシンタックス要素を含む。ブロック４２１１は、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮシンタックス要素を含む。
【０１１４】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４４００を、図４Ｈを参照して説明する。
【０１１５】
シンタックス構造４４００は、ＳＡＯ情報を表現するブロック４４０１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４４０２とで形成される。ブロック４４０１は、ブロック４４０３、４４０４、および４４０５で形成される。ブロック４４０３は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を含む。ブロック４４０４は、二値化スキーム５８０を使用して符号化された３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を含む。ブロック４４０５は、３つのチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮのシンタックス要素を含む。
【０１１６】
ブロック４４０４は、ブロック４４０６および４４０７で形成される。ブロック４４０６は、輝度チャネルおよび２つのクロミナンスチャネルに対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つの算術的に符号化された部分４４０８、４４０９、および４４１０を含む。ブロック４４０６の最大ビット長は、二値化スキーム５８０のパラメータＴの値によって決定される。ブロック４２７は、輝度チャネルおよび２つのクロミナンスチャネルに対応したｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の３つのバイパス符号化された部分４４１１、４４１２、および４４１３を含む。部分４４１１、４４１２、および４４１３は、対応する部分４４０８、４４０９、および４４１０がそれらの存在を示す場合にのみ存在する。ブロック４４０６の最大ビット長は、二値化スキーム５８０のパラメータＴの値および算術的に符号化された部分４４０８、４４０９、および４４１０の値によって決定される。
【０１１７】
最大コーディングユニット（ＬＣＵ）の代替のシンタックス構造４６００を、図４Ｉを参照して説明する。
【０１１８】
シンタックス構造４６００は、ＳＡＯ情報を表現するブロック４６０１と、ＬＣＵ構造、残差、予測、および他の情報を表現するブロック４６０２とで形成される。ブロック４６０１は、２つのブロック４６０３および４６０４を含む。ブロック４６０３は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を含み、ブロック４６０４は、ｓａｏ＿ｔｙｐｅ＿ｉｄｘ、ｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、ｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮのような３つのチャネルの他のＳＡＯシンタックス要素を含む。ブロック４６０３は、ブロック４６０６および４６０７を含む。ブロック４６０６は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を含み、ブロック４６０７は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を含む。ブロック４６０６は、ＬＣＵがフレームにおける最も左の位置にない場合にのみストリーム１１３中に存在する。ブロック４６０７は、ＬＣＵがフレームにおける最も上の位置にない場合にのみ存在する。ブロック４６０６および４６０７は、ブロック４６０３において異なる順序を持つことができる。
【０１１９】
代替の実現においては、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素が単一のブロックにグループ化できる一方で、ｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇは、各々のチャネルのために別個にコーディングできる。
【０１２０】
シンタックス構造４００、４２０、４４０、４６０、４８０、４１００、４２００、および４４００におけるｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素は、算術的に符号化される。確率モデリングが３つのチャネルの各々のために実行される。モデリングが各々のチャネルのために独立して実行されるか、または２つのクロミナンスチャネルが合同コンテキストモデルを使用するか、または３つのチャネルが合同コンテキストモデルを使用するか、のいずれかである。
【０１２１】
ストリーム１１３にＬＣＵデータを符号化する方法６００を、図６Ａを参照して説明する。最初のステップ６０１において、ＳＡＯ情報が符号化され、別のステップ６０２において、ＬＣＵ構造、残差、予測、および他の情報が符号化される。
【０１２２】
ＳＡＯ情報を符号化する例示的な方法６１０を、図６Ｂを参照して説明する。方法６１０は、上述されたブロック４０１、４４１、４６１、４１０１、４２０１を符号化するための方法６００のステップ６０１を実現するために使用される。方法６１０はステップ６１１で始まり、ステップ６１１で、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が符号化される。ステップ６１２では、輝度チャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を符号化する。ステップ６１３では、輝度チャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を符号化する。ステップ６１４では、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を符号化する。ステップ６１５では、第１のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を符号化する。ステップ６１６では、第１のクロミナンスチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を符号化する。ステップ６１７では、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を符号化する。ステップ６１８では、第２のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を符号化する。ステップ６１９では、第２のクロミナンスチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を符号化する。ステップ６１１〜６１９の順序は、任意の特定の実現によって所望されるように変えることができる。
【０１２３】
単一のチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を符号化する方法６３０を、図６Ｃを参照して説明する。方法６３０は、上述されたシンタックス構造４００、４４０、４６０、４１００、４２００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を符号化する方法６１０のステップ６１１、６１４、６１７を実現するために使用出来る。方法６３０は、ＬＣＵがフレームにおける最も左の位置にあるかどうかをチェックするステップ６３１によって始まる。この条件が真である場合には制御がステップ６３４に渡され、そうでなければ制御はステップ６３２に渡される。ステップ６３２は、ストリーム１１３にｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇを符号化する。ステップ６３３は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が１と等しいかどうかをテストする。この条件が真である場合、制御は方法６３０を離れる。そうでなければ、制御はステップ６３４に渡される。ステップ６３４は、ストリーム１１３にｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇを符号化する。このステップの後、制御は方法６３０を離れる。
【０１２４】
単一のチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を符号化する方法６４０を、図６Ｄを参照して次に説明する。方法６４０は、上述されたシンタックス構造４００、４４０、４６０、４１００、４２００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を符号化する方法６１０のステップ６１２、６１５、６１８を実現するために使用できる。方法６４０は、ステップ６４１によって始まる。ステップ６４１は、所与のチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御はステップ６４２に渡され、そうでなければ制御は方法６４０を離れる。ステップ６４２は、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する。次に、ステップ６４３は、ストリーム１１３にｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の二進表現を符号化する。ステップ６４３の後、制御は方法６４０を離れる。
【０１２５】
ＳＡＯ情報を符号化する方法６５０を、図６Ｅを参照して説明する。方法６５０は、上述されたブロック４２１、４８１、４４０１、４６０１を符号化するための方法６００のステップ６０１を実現するために使用できる。方法６５０は、これがフレームにおける最も左のＬＣＵであるどうかをチェックするステップ６５１によって始まる。これが真である場合には制御がステップ６５３に渡され、そうでなければ制御はステップ６５２に渡される。ステップ６５２は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を符号化する。ステップ６５３は、これがフレームにおける最も上のＬＣＵかどうかをチェックする。これが真である場合には制御がステップ６５５に渡され、そうでなければ制御はステップ６５４に渡される。ステップ６５４は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を符号化する。ステップ６５５は、３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分を符号化する。ステップ６５６は、３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパス符号化された部分を符号化する。次に、ステップ６５７は、３つのチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を符号化する。
【０１２６】
３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を符号化する方法６６０を、図６Ｆを参照して説明する。方法６６０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を符号化するための方法６５０のステップ６５２を実現するために使用できる。方法６６０は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を符号化するステップ６６１によって始まる。次に、ステップ６６２は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を符号化する。次に、ステップ６６３は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を符号化する。この後、制御は方法６６０を離れる。
【０１２７】
３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を符号化する方法６７０を、図６Ｇを参照して説明する。方法６７０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を符号化するための方法６５０のステップ６５４を実現するために使用できる。方法６７０は、ステップ６７１によって始まる。ステップ６７１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御がステップ６７２に渡され、そうでなければ制御はステップ６７３に渡される。ステップ６７２は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇを符号化する。ステップ６７３は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御がステップ６７４に渡され、そうでなければ制御はステップ６７５に渡される。ステップ６７４は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇを符号化する。ステップ６７５は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御は方法６７０を離れ、そうでなければ制御はステップ６７６に渡される。ステップ６７６は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇを符号化する。この後、制御は方法６７０を離れる。
【０１２８】
３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的にコーディングされた部分を符号化する方法６８０を、図６Ｈを参照して説明する。方法６８０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の算術的にコーディングされた部分を符号化するための方法６５０のステップ６５５を実現するために使用できる。方法６８０は、ステップ６８１によって始まる。ステップ６８１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ６８２に渡され、そうでなければ制御はステップ６８４に渡される。ステップ６８２は、輝度チャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する。次に、ステップ６８３は、部分４２８、４８８、４４０８といった二値化された値の算術的にコーディングされた部分をストリーム１１３に符号化する。ステップ６８４は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ６８５に渡され、そうでなければ制御はステップ６８７に渡される。ステップ６８５は、第１のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する。次に、ステップ６８６は、部分４２９、４８９、４４０９といった二値化された値の算術的にコーディングされた部分をストリーム１１３に符号化する。ステップ６８７は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御はステップ６８８に渡され、そうでなければ制御は方法６８０を離れる。ステップ６８８は、第２のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する。次に、ステップ６８９は、部分４３０、４９０、４４１０といった二値化された値の算術的にコーディングされた部分をストリーム１１３に符号化する。
【０１２９】
３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分を符号化する方法６９０を、図６Ｉを参照して説明する。方法６９０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素のバイパスコーディングされた部分を符号化するための方法６５０のステップ６５６を実現するために使用できる。方法６９０は、方法６８０のステップ６８２、６８５、６８８で生成された二値化されたｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の入力を受理する。方法６９０は、ステップ６９１によって始まる。ステップ６９１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ６９２に渡され、そうでなければ制御はステップ６９３に渡される。ステップ６９２は、部分４３１、４９１、４４１１といった、ステップ６８２で二値化された値のバイパスコーディングされた部分を、ストリーム１１３に符号化する。ステップ６９３は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ６９４に渡され、そうでなければ制御はステップ６９５に渡される。ステップ６９４は、部分４３２、４９２、４４１２といった、ステップ６８５によって二値化された値のバイパスコーディングされた部分を、ストリーム１１３に符号化する。ステップ６９５は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御はステップ６９６に渡され、そうでなければ制御は方法６９０を離れる。ステップ６９６は、部分４３３、４９３、４４１３といった、ステップ６８８において二値化された値のバイパスコーディングされた部分を、ストリーム１１３に符号化する。
【０１３０】
二値化スキーム５００を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する方法６１００を、図６Ｊ（１）を参照して説明する。方法６１００は、上述されたシンタックス構造４２０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６８０のステップ６８２、６８５、６８８を実現するために使用できる。方法６１００はまた、上述されたシンタックス構造４００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘを二値化するための方法６００のステップ６４２を実現するために使用できる。方法６１００は、ステップ６１０１によって始まる。ステップ６１０１は、所与のｓａｏ＿ｔｙｐｅ＿ｉｄｘの値が最もありそうなｓａｏ＿ｔｙｐｅ＿ｉｄｘの値であると推定されるかどうかをチェックする。これが真である場合には制御がステップ６１０２に渡され、そうでなければ制御はステップ６１０３に渡される。ステップ６１０２は、部分５０１の二進要素５０３に二進値「０」を割り当てる。ステップ６１０２の後、制御は方法６１００を離れる。ステップ６１０３は、算術的にコーディングされた部分５０１の二進要素５０３に二進値「１」を割り当てる。次に、ステップ６１０４は、バイパスコーディングされた部分５０２の二進要素５０４、５０５、５０６に一意の３ビットの二進コードを割り当てる。このステップの後、制御は方法６１００を離れる。
【０１３１】
二値化スキーム５４０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する方法６２００を、図６Ｊ（２）を参照して説明する。方法６２００は、上述されたシンタックス構造４８０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６８０のステップ６８２、６８５、６８８を実現するために使用できる。方法６２００はまた、上述されたシンタックス構造４６０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６４０のステップ６４２を実現するために使用できる。方法６２００は、ステップ６２０１によって始まる。ステップ６２０１は、所与のｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に一意の３ビットの二進コードを割り当てる。次に、ステップ６２０２は、割り当てられた３ビットコードのうちの１ビットの値を、普通、最下位ビットのようなビット位置に基づいて、算術的にコーディングされた部分５４１の二進要素５４３に割り当てる。次に、ステップ６２０３は、割り当てられた二進値のうちの残りの２ビットを、バイパスコーディングされた部分５４２の二進要素５４４、５４５に割り当てる。このステップの後、制御は方法６２００を離れる。
【０１３２】
二値化スキーム５８０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する方法６３００を、図６Ｋを参照して説明する。方法６３００は、上述されたシンタックス構造４４００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６８０のステップ６８２、６８５、６８８を実現するために使用できる。方法６３００はまた、上述されたシンタックス構造４２００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６４０のステップ６４２を実現するために使用できる。方法６３００は、ステップ６３０１によって始まる。ステップ６３０１は、０から二値化されたシーケンス５８２の最大長ＬＭＡＸまでの範囲における一意のコード長Ｌを、所与のｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に割り当てる。普通、Ｌの値は、より短いＬの値がより高い推定確率とともにｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に割り当てられるように割り当てられる。パラメータＴは二値化された値の算術的にコーディングされた部分の最大長を決定するために使用されている。次に、ステップ６３０２は、シーケンス５８１に加えられた二値の「１」の値の数ＯＮＥＳがＬ未満であるか、およびＯＮＥＳがＴ未満であるか、をチェックする。両方の条件が真である場合には制御がステップ６３０３に渡され、そうでなければ制御はステップ６３０４に渡される。ステップ６３０３は算術的にコーディングされた二値の「１」の値５８３をシーケンス５８１に加える。ステップ６３０３の後、制御はステップ６３０２に渡される。ステップ６３０４は、ＯＮＥＳがＴ未満であるか、ＯＮＥＳがＬＭＡＸ未満であるか、をチェックする。これらの条件が真である場合、制御はステップ６３０９に渡され、そうでなければ、制御はステップ６３０５に渡される。ステップ６３０９は、算術的にコーディングされた二値の「０」の値を要素５８４に割り当てる。ステップ６３０９の後、制御は方法６３００を離れる。ステップ６３０５は、ＯＮＥＳがＬ未満であるかどうかをチェックする。これが真である場合には制御がステップ６３０６に渡され、そうでなければ制御はステップ６３０７に渡される。ステップ６３０６は、バイパスコーディングされた二値の「１」の値５８３をシーケンス５８１に加える。ステップ６３０６の後、制御はステップ６３０５に渡される。ステップ６３０７は、ＯＮＥＳがＬＭＡＸ未満であるかどうかをチェックする。これが真である場合には制御はステップ６３０８に渡され、そうでなければ制御は方法６３００を離れる。ステップ６３０８は、バイパスコーディングされた二値の「０」の値を要素５８４に割り当てる。このステップの後、制御は方法６３００を離れる。
【０１３３】
二値化スキーム５６０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する方法６５００を、図６Ｌ１を参照して説明する。方法６５００は、上述されたシンタックス構造４１００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６４０のステップ６４２を実現するために使用できる。方法６５００は、ステップ６５０１によって始まる。ステップ６５０１は、０から二値化されたシーケンス５８２の最大長ＬＭＡＸまでの範囲における一意のコード長Ｌを、所与のｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に割り当てる。普通、Ｌの値は、より短いＬの値がより高い推定確率とともにｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に割り当てられるように割り当てられる。次に、ステップ６５０２は、シーケンス５８１に加えられた二値の「１」の値の数ＯＮＥＳがＬ未満であるかをチェックする。この条件が真である場合には制御がステップ６５０３に渡され、そうでなければ制御はステップ６５０４に渡される。ステップ６５０３は算術的にコーディングされた二値の「１」の値５８３をシーケンス５８１に加える。ステップ６５０３の後、制御はステップ６５０２に渡されて戻る。ステップ６５０４は、ＯＮＥＳがＬＭＡＸ未満であるかどうかをチェックする。この条件が真である場合には制御はステップ６５０５に渡され、そうでなければ制御は方法６５００を離れる。ステップ６５０５は、算術的にコーディングされた二値の「０」の値を要素５８４に割り当てる。ステップ６５０５の後、制御は方法６３００を離れる。
【０１３４】
二値化スキーム５２０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化する方法６６００を、図６Ｌ２を参照して説明する。方法６６００は、上述したシンタックス構造４４０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を二値化するための方法６４０のステップ６４２を実現するために使用できる。方法６６００は、ステップ６６０１によって始まる。ステップ６６０１で、一意の３ビットコードがｓａｏ＿ｔｙｐｅ＿ｉｄｘの値に割り当てられる。次に、ステップ６６０２は、割り当てられた３ビットコードを二進要素５２１、５２２、５２３に割り当てる。このステップの後、制御は方法６６００を離れる。
【０１３５】
ストリーム１１３からＬＣＵデータを復号する方法７００を、図７Ａを参照して説明する。ステップ７０１において、ＳＡＯ情報が復号される。ステップ７０２において、ＬＣＵ構造、残差、予測、および他の情報が復号される。
【０１３６】
ＳＡＯ情報を復号する方法７１０を、図７Ｂを参照して説明する。
【０１３７】
方法７１０は、上述されたブロック４０１、４４１、４６１、４１０１、４２０１を復号するための方法７００のステップ７０１を実現するために使用できる。方法７１０はステップ７１１で始まり、ステップ７１１で、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が復号される。ステップ７１２は、輝度チャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号する。ステップ７１３は、輝度チャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を復号する。ステップ７１４は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。ステップ７１５は、第１のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号する。ステップ７１６は、第１のクロミナンスチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を復号する。ステップ７１７は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。ステップ７１８は、第２のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号する。ステップ７１９は、第２のクロミナンスチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を復号する。ステップ７１１〜７１９の順序または実現は、特定の実現に依存して変更可能である。
【０１３８】
単一のチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する方法７３０を、図７Ｃを参照して説明する。方法７３０は、上述されたシンタックス構造４００、４４０、４６０、４１００、４２００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇのシンタックス要素を復号する方法７１０のステップ７１１、７１４、７１７を実現するために使用できる。方法７３０は、ＬＣＵがフレームにおける最も左の位置にあるかどうかをチェックするステップ７３１によって始まる。この条件が真である場合には制御がステップ７３４に渡され、そうでなければ制御はステップ７３２に渡される。ステップ７３２は、ストリーム１１３からｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇを復号する。ステップ７３３は、ｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が１と等しいかどうかをテストする。この条件が真である場合、制御は方法７３０を離れる。そうでなければ、制御はステップ７３４に渡される。ステップ７３４は、ストリーム１１３からｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇを復号する。このステップの後、制御は方法７３０を離れる。
【０１３９】
単一のチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を復号する方法７４０を、図７Ｄ参照して次に説明する。方法７４０は、上述されたシンタックス構造４００、４４０、４６０、４１００、４２００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素を復号する方法７１０のステップ７１２、７１５、７１８を実現するために使用できる。方法７４０は、ステップ７４１によって始まる。ステップ７４１は、所与のチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックすることにより、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの復号が要求されるかどうかを決定するためにチェックする。これが真である場合には制御はステップ７４２に渡され、そうでなければ制御は方法７４０を離れる。ステップ７４２は、ｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除する。ステップ７４３の後、制御は方法７４０を離れる。
【０１４０】
ＳＡＯ情報を復号する方法７５０を、図７Ｅを参照して説明する。方法７５０は、上述されたブロック４２１、４８１、４４０１、４６０１を復号するための方法７００のステップ７０１を実現するために使用できる。方法７５０は、これがフレームにおける最も左のＬＣＵであるどうかをチェックするステップ７５１によって始まる。これが真である場合には制御がステップ７５３に渡され、そうでなければ制御はステップ７５２に渡される。ステップ７５２は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を復号する。ステップ７５３は、これがフレームにおける最も上のＬＣＵかどうかをチェックする。これが真である場合には制御がステップ７５５に渡され、そうでなければ制御はステップ７５４に渡される。ステップ７５４は、３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。ステップ７５５は、３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分を復号する。ステップ７５６は、３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパス符号化された部分を復号する。次に、ステップ７５７は、３つのチャネルのｓａｏ＿ｂａＮｄ＿ｐｏｓｉｔｉｏＮ、ｓａｏ＿ｏｆｆｓｅｔ＿ａｂｓ、およびｓａｏ＿ｏｆｆｓｅｔ＿ｓｉｇＮの値を復号する。
【０１４１】
３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を復号する方法７６０を、図７Ｆを参照して説明する。方法７６０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇシンタックス要素を復号するための方法７５０のステップ７５２を実現するために使用できる。方法７６０は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を復号するステップ７６１によって始まる。次に、ステップ７６２は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を復号する。次に、ステップ７６３は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値を復号する。この後、制御は方法７６０を離れる。
【０１４２】
３つのチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する方法７７０を、図７Ｇを参照して説明する。方法７７０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇシンタックス要素を復号するための方法７５０のステップ７５４を実現するために使用できる。方法７７０は、ステップ７７１によって始まる。ステップ７７１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御がステップ７７２に渡され、そうでなければ制御はステップ７７３に渡される。ステップ７７２は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。ステップ７７３は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御がステップ７７４に渡され、そうでなければ制御はステップ７７５に渡される。ステップ７７４は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。ステップ７７５は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇの値が０と等しいかどうかをチェックする。これが真である場合には制御は方法７７０を離れ、そうでなければ制御はステップ７７６に渡される。ステップ７７６は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値を復号する。この後、制御は方法７７０を離れる。
【０１４３】
３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的にコーディングされた部分を復号する方法７８０を、図７Ｈを参照して説明する。方法７８０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素の算術的にコーディングされた部分を復号するための方法７５０のステップ７５５を実現するために使用できる。方法７８０は、ステップ７８１によって始まる。ステップ７８１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ７８２に渡され、そうでなければ制御はステップ７８３に渡される。ステップ７８２は、輝度チャネルのストリーム１１３から、部分４２８、４８８、４４０８といったｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化された値の算術的にコーディングされた部分を復号する。ステップ７８３は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ７８４に渡され、そうでなければ制御はステップ７８５に渡される。ステップ７８４は、第１のクロミナンスチャネルのストリーム１１３から、部分４２９、４８９、４４０９といったｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化された値の算術的にコーディングされた部分を復号する。ステップ７８５は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０であるかどうかをチェックする。これが真である場合には制御はステップ７８６に渡され、そうでなければ制御は方法７８０を離れる。ステップ７８６は、第２のクロミナンスチャネルのストリーム１１３から、部分４３０、４９０、４４１０といったｓａｏ＿ｔｙｐｅ＿ｉｄｘの二値化された値の算術的にコーディングされた部分を復号する。
【０１４４】
３つのチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分を復号する方法７９０を、図７Ｉを参照して説明する。方法７９０は、上述されたシンタックス構造４２０、４８０、４４００、４６００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘシンタックス要素のバイパスコーディングされた部分を復号するための方法７５０のステップ７５６を実現するために使用できる。方法７９０は、方法７８０のステップ７８２、７８４、７８６で復号されたｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の部分を入力として受理する。方法７９０は、ステップ７９１によって始まる。ステップ７９１は、輝度チャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ７９２に渡され、そうでなければ制御はステップ７９３に渡される。ステップ７９２は、ストリーム１１３から、部分４３１、４９１、４４１１といった、輝度チャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分を復号し、輝度チャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を回復する。ステップ７９３は、第１のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０と等しいかどうかをチェックする。これが真である場合には制御がステップ７９４に渡され、そうでなければ制御はステップ７９５に渡される。ステップ７９４は、ストリーム１１３から、部分４３２、４９２、４４１２といった、第１のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分を復号し、第１のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を回復する。ステップ７９５は、第２のクロミナンスチャネルのｓａｏ＿ｍｅｒｇｅ＿ｌｅｆｔ＿ｆｌａｇおよびｓａｏ＿ｍｅｒｇｅ＿ｕｐ＿ｆｌａｇの値が両方とも０であるかどうかをチェックする。これが真である場合には制御はステップ７９６に渡され、そうでなければ制御は方法７９０を離れる。ステップ７９６は、ストリーム１１３から、部分４３３、４９３、および４４１３といった、第２のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分を復号し、第２のクロミナンスチャネルのｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を回復する。
【０１４５】
二値化スキーム５００を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値をストリーム１１３から復号し、二値化解除する方法７１００を、図７Ｊ（１）を参照して説明する。方法７１００は、上述されたシンタックス構造４００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除するための方法７００のステップ７４２を実現するために使用できる。方法７１００は、ステップ７１０１によって始まる。ステップ７１０１は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７１０２は、復号されたビンの値が「１」であるかどうかをチェックする。これが真である場合には制御がステップ７１０３に渡され、そうでなければ制御はステップ７１０４に渡される。ステップ７１０３は、ストリーム１１３から３つのバイパス符号化されたビンを復号する。ステップ７１０４は、二値化スキーム５００に従ってステップ７１０１、７１０３で復号されたビンに対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１４６】
二値化スキーム５４０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値をストリーム１１３から復号し、二値化解除する方法７２００を、図７Ｊ（２）を参照して説明する。方法７２００は、上述されたシンタックス構造４６０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除するための方法７４０のステップ７４２を実現するために使用できる。方法７２００は、ステップ７２０１によって始まる。ステップ７２０１は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７２０２は、ストリーム１１３から２つのバイパス符号化されたビンを復号する。次に、ステップ７２０３は、二値化スキーム５４０に従ってステップ７２０１、７２０２で復号されたビンに対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１４７】
二値化スキーム５８０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除する方法７３００を、図７Ｋを参照して説明する。方法７３００は、上述されたシンタックス構造４２００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除するための方法７４０のステップ７４２を実現するために使用できる。方法７３００は、ステップ７３０１によって始まる。復号された「１」の値のカウンタＯＮＥＣＮＴをゼロにリセットする。次に、ステップ７３０２は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７３０３は、復号されたビンの値が「１」であるかどうかをチェックする。これが真である場合には制御がステップ７３０４に渡され、そうでなければ制御はステップ７３１１に渡される。ステップ７３０４は、ＯＮＥＣＮＴカウンタを１だけインクリメントする。次に、ステップ７３０５は、ＯＮＥＣＮＴカウンタが二値化された値の算術的にコーディングされたビンの最大値Ｔと等しいかどうかをチェックする。これが真である場合には制御がステップ７３１０に渡され、そうでなければ制御はステップ７３０６に渡される。ステップ７３０６は、ＯＮＥＣＮＴカウンタが二値化されたシーケンス５８２の最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７３１１に渡され、そうでなければ制御はステップ７３０２に渡される。ステップ７３１０は、ＯＮＥＣＮＴカウンタが最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７３１１に渡され、そうでなければ制御はステップ７３０７に渡される。ステップ７３０７は、バイパスコーディングされたビンを復号した。次に、ステップ７３０は、復号されたビンが「１」と等しいかどうかをチェックする。これが真である場合、制御はステップ７３０９に渡され、そうでなければ、制御はステップ７３１１に渡される。ステップ７３０９は、ＯＮＥＣＮＴカウンタをインクリメントし、制御をステップ７３１０へ渡す。ステップ７３１１は、二値化スキーム５８０に従ってＯＮＥＣＮＴカウンタの値に対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１４８】
二値化スキーム５６０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除する方法７５００を、図７Ｌ（１）を参照して説明する。方法７５００は、上述されたシンタックス構造４１００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除するための方法７４０のステップ７４２を実現するために使用できる。方法７５００は、ステップ７５０１によって始まる。ステップ７５０１は、復号された「１」のビンのカウンタＯＮＥＣＮＴを０にリセットする。次に、ステップ７５０２は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７５０３は、復号されたビンが「１」と等しいかどうかをチェックする。これが真である場合には制御がステップ７５０４に渡され、そうでなければ制御はステップ７５０６に渡される。ステップ７５０４は、ＯＮＥＣＮＴカウンタを１だけインクリメントする。次に、ステップ７５０５は、ＯＮＥＣＮＴカウンタの値が二値化されたシーケンス５８２の最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７５０６に渡され、そうでなければ制御はステップ７５０２に渡される。ステップ７５０６は、二値化スキーム５６０に従ってＯＮＥＣＮＴカウンタの値に対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１４９】
二値化スキーム５２０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除する方法７６００を、図７Ｌ（２）を参照して説明する。方法７６００は、上述されたシンタックス構造４４０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を復号し、二値化解除するための方法７４０のステップ７４２を実現するために使用できる。方法７６００は、ステップ７６０１によって始まる。ステップ７６０１は、ストリーム１１３から３つの算術的に符号化されたビンを復号する。次に、ステップ７６０２は、二値化スキーム５２０に従ってステップ７６０１で復号されたビンの値に対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１５０】
二値化スキーム５００を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分５０１をストリーム１１３から復号する方法７７００を、図７Ｍ（１）を参照して説明する。方法７７００は、上述されたシンタックス構造４２０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分４２８、４２９、４３０を復号するための方法７８０のステップ７８２、７８４、７８６を実現するために使用できる。ステップ７７００は、ストリーム１１３から算術的に符号化されたビンを復号することによりステップ７７０１によって始まる。次に、ステップ７７０２は、以下において説明される方法７８００のステップ７８０１にアクセス可能な記憶場所に復号された値を記憶する。この後、制御は方法７７００を離れる。
【０１５１】
二値化スキーム５００を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分５０２をストリーム１１３から復号する方法７８００を、図７Ｍ（２）を参照して説明する。方法７８００は、シンタックス構造４２０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパス符号化された部分４３１、４３２、４３３を復号するための方法７９０のステップ７９２、７９４、７９６を実現するために使用できる。方法７８００は、ステップ７８０１によって始まる。ステップ７８０１は、方法７７００のステップ７７０１で復号された値が「１」と等しいかどうかをチェックする。これが真である場合には制御がステップ７８０２に渡され、そうでなければ制御はステップ７８０３に渡される。ステップ７８０２は、ストリーム１１３から３つのバイパス符号化されたビンを復号する。ステップ７８０３は、二値化スキーム５００に従ってステップ７７０１、７８０２で復号されたビンに対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１５２】
二値化スキーム５４０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分５４１をストリーム１１３から復号する方法７９００を、図７Ｎ（１）を参照して説明する。方法７９００は、上述されたシンタックス構造４８０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分４８８、４８９、４９０を復号するための方法７８０のステップ７８２、７８４、７８６を実現するために使用できる。方法７９００は、ステップ７９０１によって始まる。ステップ７９０１は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７９０２は、以下において説明される方法７９２０のステップ７９２１にアクセス可能な記憶場所に復号された値を記憶する。この後、制御は方法７９００を離れる。
【０１５３】
二値化スキーム５４０を使用してｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパスコーディングされた部分５４２をストリーム１１３から復号する方法７９２０を、図７Ｎ（２）を参照して説明する。方法７９２０は、上述されたシンタックス構造４８０におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパス符号化された部分４９１、４９２、４９３を復号するための方法７９０のステップ７９２、７９４、７９６を実現するために使用できる。方法７９２０は、ステップ７９２１によって始まる。ステップ７９２１は、ストリーム１１３から２つの算術的に符号化されたビンを復号する。次に、ステップ７９２２は、二値化スキーム５４０に従ってステップ７９０１、７９２１で復号されたビンに対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【０１５４】
シーケンス５８２の算術的にコーディングされた部分５９１をストリーム１１３から復号する方法７９４０を、図７Ｏを参照して説明する。方法７９４０は、上述されたシンタックス構造４４００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値の算術的に符号化された部分４４０８、４４０９、４４１０を復号するための方法７８０のステップ７８２、７８４、７８６を実現するために使用できる。方法７９４０は、ステップ７９４１によって始まる。ステップ７９４１は、復号された「１」の値のカウンタＯＮＥＣＮＴをゼロにリセットする。次に、ステップ７９４２は、「０」の値がストリームから復号されたことを示すフラグＦＩＮＩＳＨＥＤをゼロにリセットする。次に、ステップ７９４３は、ストリーム１１３から算術的に符号化されたビンを復号する。次に、ステップ７９４４は、復号されたビンの値が「１」と等しいかどうかをチェックする。これが真である場合には制御がステップ７９４５に渡され、そうでなければ制御はステップ７９４８に渡される。ステップ７９４５は、カウンタＯＮＥＣＮＴを１だけインクリメントする。次に、ステップ７９４６は、カウンタＯＮＥＣＮＴの値が二値化された値の算術的にコーディングされたビンの最大値Ｔと等しいかどうかをチェックする。これが真である場合には制御がステップ７９４９に渡され、そうでなければ制御はステップ７９４７に渡される。ステップ７９４７は、カウンタＯＮＥＣＮＴの値が二値化されたシーケンス５８２の最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７９４９に渡され、そうでなければ制御はステップ７９４３に渡される。ステップ７９４８は、フラグＦＩＮＩＳＨＥＤを１に設定する。ステップ７９４９は、フラグＦＩＮＩＳＨＥＤの値を記憶し、カウンタＯＮＥＣＮＴは、（以下において説明される）方法７９６０のステップにアクセス可能な記憶位置である。ステップ７９４９の後、制御は方法７９４０を離れる。
【０１５５】
シーケンス５８２のバイパスコーディングされた部分５９２をストリーム１１３から復号する方法７９６０を、図７Ｐを参照して説明する。方法７９６０は、上述されたシンタックス構造４４００におけるｓａｏ＿ｔｙｐｅ＿ｉｄｘの値のバイパス符号化された部分４４１１、４４１２、４４１３を復号するための方法７９０のステップ７９２、７９４、７９６を実現するために使用できる。方法７９６０は、ステップ７９６１によって始まる。ステップ７９６１は、方法７９４０において設定されたフラグＦＩＮＩＳＨＥＤの値が１と等しいかどうかをチェックする。これが真である場合には制御がステップ７９６６に渡され、そうでなければ制御はステップ７９６５に渡される。ステップ７９６５は、カウンタＯＮＥＣＮＴの値が二値化されたシーケンス５８２の最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７９６６に渡され、そうでなければ制御はステップ７９６２に渡される。ステップ７９６２は、ストリーム１１３からバイパスコーディングされたビンを復号する。次に、ステップ７９６３は、復号されたビンの値が「１」であるかどうかをチェックする。これが真である場合には制御がステップ７９６４に渡され、そうでなければ制御はステップ７９６６に渡される。ステップ７９６４は、カウンタＯＮＥＣＮＴを１だけインクリメントする。ステップ７９６５は、カウンタＯＮＥＣＮＴの値が二値化されたシーケンス５８２の最大長ＬＭＡＸと等しいかどうかをチェックする。これが真である場合には制御がステップ７９６６に渡され、そうでなければ制御はステップ７９６２に渡される。ステップ７９６６は、二値化スキーム５８０に従ってカウンタＯＮＥＣＮＴの値に対応するｓａｏ＿ｔｙｐｅ＿ｉｄｘの値を戻す。
【産業上の利用可能性】
【０１５６】
説明された構成は、コンピュータおよびデータ処理産業、特に、ビデオ信号のような信号の符号化および復号のためのデジタル信号処理のために適用可能である。
【０１５７】
上記は、本発明の一部の実施形態のみを説明するものにすぎず、変形および／または変更が本発明の範囲および精神から逸脱せずに実施可能であり、実施形態は例示的であり限定的なものではない。
【０１５８】
本明細書の文脈において、「備えること（ｃｏｍｐｒｉｓｉＮｇ）」という用語は、「主に含むが必ずしもそれだけではないこと」または「有すること」または「含むこと」を意味し、「〜のみからなる」を意味するものではない。「備える（ｃｏｍｐｒｉｓｅ）」および「備える（ｃｏｍｐｒｉｓｅｓ）」といった「備えること（ｃｏｍｐｒｉｓｉＮｇ）」という用語の変形は、それに対応して変えられた意味を有する。
【図１】
2020010393.tif 000007
【図２】
2020010393.tif 000008
【図３Ａ】
2020010393.tif 000009
【図３Ｂ】
2020010393.tif 000010
【図４Ａ】
2020010393.tif 000011
【図４Ｂ】
2020010393.tif 000012
【図４Ｃ】
2020010393.tif 000013
【図４Ｄ】
2020010393.tif 000014
【図４Ｅ】
2020010393.tif 000015
【図４Ｆ】
2020010393.tif 000016
【図４Ｇ】
2020010393.tif 000017
【図４Ｈ】
2020010393.tif 000018
【図４Ｉ】
2020010393.tif 000019
【図５Ａ】
2020010393.tif 000020
【図５Ｂ】
2020010393.tif 000021
【図５Ｃ】
2020010393.tif 000022
【図５Ｄ】
2020010393.tif 000023
【図５Ｅ】
2020010393.tif 000024
【図６Ａ】
2020010393.tif 000025
【図６Ｂ】
2020010393.tif 000026
【図６Ｃ】
2020010393.tif 000027
【図６Ｄ】
2020010393.tif 000028
【図６Ｅ】
2020010393.tif 000029
【図６Ｆ】
2020010393.tif 000030
【図６Ｇ】
2020010393.tif 000031
【図６Ｈ】
2020010393.tif 000032
【図６Ｉ】
2020010393.tif 000033
【図６Ｊ（１）】
2020010393.tif 000034
【図６Ｊ（２）】
2020010393.tif 000035
【図６Ｋ】
2020010393.tif 000036
【図６Ｌ（１）】
2020010393.tif 000037
【図６Ｌ（２）】
2020010393.tif 000038
【図７Ａ】
2020010393.tif 000039
【図７Ｂ】
2020010393.tif 000040
【図７Ｃ】
2020010393.tif 000041
【図７Ｄ】
2020010393.tif 000042
【図７Ｅ】
2020010393.tif 000043
【図７Ｆ】
2020010393.tif 000044
【図７Ｇ】
2020010393.tif 000045
【図７Ｈ】
2020010393.tif 000046
【図７Ｉ】
2020010393.tif 000047
【図７Ｊ（１）】
2020010393.tif 000048
【図７Ｊ（２）】
2020010393.tif 000049
【図７Ｋ】
2020010393.tif 000050
【図７Ｌ（１）】
2020010393.tif 000051
【図７Ｌ（２）】
2020010393.tif 000052
【図７Ｍ（１）】
2020010393.tif 000053
【図７Ｍ（２）】
2020010393.tif 000054
【図７Ｎ（１）】
2020010393.tif 000055
【図７Ｎ（２）】
2020010393.tif 000056
【図７Ｏ】
2020010393.tif 000057
【図７Ｐ】
2020010393.tif 000058