(57)【特許請求の範囲】
【請求項１】
符号化されたビデオフレームの符号化されたブロックを復号化する方法であって、
コンテキストツリーを、
前記符号化されたビデオフレームの以前に復号化されたブロックの第１のシンタックス要素についてのコンテキスト情報に対して分離基準を適用することから生じる第１の候補コスト削減を判定すること、
前記第１の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第１の分離基準に従って、前記第１のシンタックス要素の第１のグループと、前記第１のシンタックス要素の第２のグループとにシンタックス要素を分離すること、
前記第１のグループについてのコンテキスト情報に対して前記分離基準を適用することから生じる第２の候補コスト削減を判定すること、
前記第２のグループについてのコンテキスト情報に対して前記分離基準を適用することから生じる第３の候補コスト削減を判定すること、
前記第２の候補コスト削減のうちの最高の候補コスト削減が前記第３の候補コスト削減のうちの最高の候補コスト削減よりも大きいと判定したことに応答して、前記第２の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第２の分離基準に従って、前記第１のグループを、前記第１のグループの第１のサブグループと、前記第１のグループの第２のサブグループとに分離すること
により生成すること、
前記コンテキストツリーを使用して識別された確率モデルに従って、前記符号化されたブロックの第２のシンタックス要素を復号化すること
を含む、方法。
【請求項２】
前記コンテキストツリーは、
前記第１のシンタックス要素を表す第１のノードと、
前記第１のグループを表す第２のノードと、
前記第２のグループを表す第３のノードと、
前記第１のサブグループを表す第４のノードと、
前記第２のサブグループを表す第５のノードと
を含み、
前記第１のノードおよび前記第２のノードは、非リーフノードであり、
前記第３のノード、前記第４のノード、および前記第５のノードは、リーフノードである、請求項１に記載の方法。
【請求項３】
前記コンテキストツリーの複数のノードは、前記第１のノード、前記第２のノード、前記第３のノード、前記第４のノード、および前記第５のノードを含み、前記方法は、
前記第２のシンタックス要素のうちの１つのシンタックス要素に関連するコンテキスト情報に基づいて、前記第２のシンタックス要素のうちの前記１つのシンタックス要素を含む前記第１のシンタックス要素のグループまたはサブグループを表す複数のノードのうちの１つのノードを識別すること、
識別されたノードを使用して前記確率モデルを識別すること
をさらに含む、請求項２に記載の方法。
【請求項４】
前記第２のシンタックス要素のうちの前記１つのシンタックス要素を含む前記第１のシンタックス要素のグループを表す複数のノードのうちの１つのノードを識別することは、
前記第２のシンタックス要素のうちの前記１つのシンタックス要素に関連するコンテキスト情報に対して前記第１の分離基準または前記第２の分離基準を適用すること
を含む、請求項３に記載の方法。
【請求項５】
前記第２のシンタックス要素に基づいて、複数のノードのうちの１つまたは複数のノードについてのコスト削減を再計算することにより、前記コンテキストツリーを更新すること、
更新されたコンテキストツリーを使用して、第２の符号化されたブロックの第３のシンタックス要素を復号化すること
をさらに含む、請求項２乃至４のいずれか一項に記載の方法。
【請求項６】
前記第１の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第１の分離基準に従って、前記第１のグループと前記第２のグループとにシンタックス要素を分離することは、
前記第１の候補コスト削減のうちの最高の候補コスト削減が削減閾値を満たしていると判定したことに応答して、前記第１のグループと前記第２のグループとにシンタックス要素を分離すること
を含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記第１のシンタックス要素についてのコンテキスト情報に対して分離基準を適用することから生じる第１の候補コスト削減を判定することは、
前記コンテキストツリーの複数のノードに対して幅優先探索を実行して、前記第１のシンタックス要素を表すノードを識別すること
を含む、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
符号化されたビデオフレームの符号化されたブロックを復号化するための装置であって、
メモリと、
前記メモリに格納された複数の命令を実行するように構成されたプロセッサと
を備え、前記プロセッサは、
前記符号化されたビデオフレームの以前に復号化されたブロックの第１のシンタックス要素についてのコンテキスト情報に対して分離基準を適用することから生じる第１の候補コスト削減を判定する命令と、
前記第１の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第１の分離基準に従って、前記第１のシンタックス要素の第１のグループと、前記第１のシンタックス要素の第２のグループとにシンタックス要素を分離する命令と、
前記第１のグループについてのコンテキスト情報に対して前記分離基準を適用することから生じる第２の候補コスト削減を判定する命令と、
前記第２のグループについてのコンテキスト情報に対して前記分離基準を適用することから生じる第３の候補コスト削減を判定する命令と、
前記第２の候補コスト削減のうちの最高の候補コスト削減を、前記第３の候補コスト削減のうちの最高の候補コスト削減と比較して、どちらが大きいかを判定する命令と、
前記第２の候補コスト削減のうちの最高の候補コスト削減が、前記第３の候補コスト削減のうちの最高の候補コスト削減よりも大きいという判定に応答して、
前記第２の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第２の分離基準に従って、前記第１のグループを前記第１のグループの第１のサブグループと、前記第１のグループの第２のサブグループとに分離する命令と、
前記第１のシンタックス要素、前記第１のグループ、前記第２のグループ、前記第１のグループの前記第１のサブグループ、および前記第１のグループの前記第２のサブグループを表す複数のノードを含むコンテキストツリーを生成する命令と、
前記第３の候補コスト削減のうちの最高の候補コスト削減が、前記第２の候補コスト削減のうちの最高の候補コスト削減よりも大きいという判定に応答して、
前記第２の候補コスト削減のうちの最高の候補コスト削減をもたらす前記分離基準のうちの第３の分離基準に従って、前記第２のグループを前記第２のグループの第１のサブグループと、前記第２のグループの第２のサブグループとに分離する命令と、
前記第１のシンタックス要素、前記第１のグループ、前記第２のグループ、前記第２のグループの前記第１のサブグループ、および前記第２のグループの前記第２のサブグループを表す複数のノードを含むコンテキストツリーを生成する命令と、
前記コンテキストツリーを使用して識別された確率モデルに従って、前記符号化されたブロックの第２のシンタックス要素を復号化する命令と
を実行するように構成されている、装置。
【請求項９】
前記複数の命令は、
前記第２のシンタックス要素のうちの１つのシンタックス要素に関連するコンテキスト情報に基づいて、前記第２のシンタックス要素のうちの前記１つのシンタックス要素を含む前記第１のシンタックス要素のグループまたはサブグループを表すノードを識別する命令と、
識別されたノードを使用して前記確率モデルを識別する命令と
をさらに含む、請求項８に記載の装置。
【請求項１０】
前記第２のシンタックス要素のうちの前記１つのシンタックス要素を含む前記第１のシンタックス要素のグループまたはサブグループを表すノードを識別する命令は、
前記第２のシンタックス要素のうちの前記１つのシンタックス要素に関連するコンテキスト情報に対して前記分離基準のうちの１つの分離基準を適用する命令
を含む、請求項９に記載の装置。
【請求項１１】
前記第２のシンタックス要素のうちの１つのシンタックス要素をエントロピー復号化するためのコストは、
前記第２のシンタックス要素のうちの前記１つのシンタックス要素を含む前記第１のシンタックス要素のグループまたはサブグループのエントロピーコスト関数と、
前記第１のシンタックス要素のグループまたはサブグループのサイズとともに減少する正の出力を有するサイズペナルティ関数と、
前記サイズペナルティ関数の重み付けと
に基づいて計算される、請求項８乃至１０のいずれか一項に記載の装置。
【請求項１２】
前記エントロピーコスト関数は、
前記第１のシンタックス要素のグループまたはサブグループ内のデータの長さと、
前記第１のシンタックス要素のグループまたはサブグループに含まれるシンタックス要素が指定された値を有する確率と
に基づいて計算される、請求項１１に記載の装置。
【請求項１３】
符号化されたビデオフレームの符号化されたブロックを復号化する方法であって、
コンテキストツリーを使用して識別された確率モデルに従って、前記符号化されたブロックのシンタックス要素を復号化すること
を含み、前記コンテキストツリーは、
前記符号化されたビデオフレームの以前に復号化されたブロックのシンタックス要素を表す第１のノードと、
前記シンタックス要素の第１のグループを表す第２のノードと、
前記シンタックス要素の第２のグループを表す第３のノードと、
前記シンタックス要素の前記第１のグループの第１のサブグループを表す第４のノードと、
前記シンタックス要素の前記第１のグループの第２のサブグループを表す第５のノードと
を含み、
前記シンタックス要素は、第１のセットの候補コスト削減のうちの最高の候補コスト削減をもたらす１つの分離基準を使用して前記第１のグループと前記第２のグループとに分離されたものであり、前記第１のセットの候補コスト削減は、前記シンタックス要素のコンテキスト情報に対して、前記１つの分離基準を含む複数の分離基準を適用することにより判定されたものであり、
前記第１のグループは、第２のセットの候補コスト削減のうちの最高の候補コスト削減が、第３のセットの候補コスト削減のうちの最高の候補コスト削減よりも大きいという判定に応答して、前記第１のサブグループと前記第２のサブグループとに分離されたものであり、前記第２のセットの候補コスト削減は、前記第１のグループのコンテキスト情報に対して前記複数の分離基準を適用することにより判定されたものであり、前記第３のセットの候補コスト削減は、前記第２のグループのコンテキスト情報に対して前記複数の分離基準を適用することにより判定されたものである、方法。
【請求項１４】
前記符号化されたビデオフレームを含む符号化されたビットストリームに符号化されたデータに基づいて、前記コンテキストツリーを生成すること
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記コンテキストツリーの複数のノードは、前記第１のノード、前記第２のノード、前記第３のノード、前記第４のノード、および前記第５のノードを含み、前記方法は、
前記符号化されたブロックの前記シンタックス要素のうちの１つのシンタックス要素に関連するコンテキスト情報に基づいて、前記符号化されたブロックの前記シンタックス要素のうちの前記１つのシンタックス要素を含む前記以前に復号化されたブロックの前記シンタックス要素のグループまたはサブグループを表す複数のノードのうちの１つのノードを識別すること、
識別されたノードを使用して前記確率モデルを識別すること
をさらに含む、請求項１３または１４に記載の方法。
【請求項１６】
前記１つの分離基準は、第１の分離基準であり、第２のシンタックス要素のうちの１つのシンタックス要素を含む第１のシンタックス要素のグループを表す複数のノードのうちの１つのノードを識別することは、
前記符号化されたブロックの前記シンタックス要素のうちの前記１つのシンタックス要素に関連するコンテキスト情報に対して前記複数の分離基準のうちの前記第１の分離基準または第２の分離基準を適用すること
を含む、請求項１５に記載の方法。
【請求項１７】
第２のシンタックス要素に基づいて、前記複数のノードのうちの１つまたは複数のノードに対するコスト削減を再計算することにより、前記コンテキストツリーを更新すること、
更新されたコンテキストツリーを使用して、第２の符号化されたブロックのシンタックス要素を復号化すること
をさらに含む、請求項１５に記載の方法。
【請求項１８】
前記第１のセットの候補コスト削減のうちの最高の候補コスト削減が削減閾値を満たしていると判定したことに応答して、前記以前に復号化されたブロックのシンタックス要素を前記第１のグループと前記第２のグループとに分離すること
をさらに含む、請求項１３乃至１７のいずれか一項に記載の方法。
【請求項１９】
前記符号化されたブロックの前記シンタックス要素のうちの１つのシンタックス要素をエントロピー復号化するためのコストは、
前記符号化されたブロックの前記シンタックス要素のうちの前記１つのシンタックス要素を含む前記以前に復号化されたブロックのシンタックス要素のグループまたはサブグループのエントロピーコスト関数と、
前記以前に復号化されたブロックのシンタックス要素のグループまたはサブグループのサイズとともに減少する正の出力を有するサイズペナルティ関数と、
前記サイズペナルティ関数の重み付けと
に基づいて計算される、請求項１３乃至１８のいずれか一項に記載の方法。
【請求項２０】
前記エントロピーコスト関数は、
前記以前に復号化されたブロックのシンタックス要素のグループまたはサブグループ内のデータの長さと、
前記以前に復号化されたブロックのシンタックス要素のグループまたはサブグループに含まれるシンタックス要素が指定された値を有する確率と
に基づいて計算される、請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルビデオストリームは、一連のフレームまたは静止画像を用いてビデオを表し得る。デジタルビデオは、例えば、ビデオ会議、高解像度ビデオエンターテイメント、ビデオ広告、またはユーザにより生成されたビデオの共有を含む、種々のアプリケーションに使用され得る。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または保存のために、コンピューティングデバイスの大量の計算または通信リソースを消費する可能性がある。圧縮および他の符号化技術を含む種々のアプローチが、ビデオストリームにおいてデータ量を削減するために提案されている。
【発明の概要】
【０００２】
本開示の一実装形態によるビデオフレームの現在のブロックを符号化する方法は、ビデオフレームの以前に符号化されたブロックに関連する第１のセットのシンタックス要素、および第１のセットのシンタックス要素を符号化するために用いられる第１のコンテキスト情報を識別することを含む。方法は、第１のコンテキスト情報に基づいて第１のセットのシンタックス要素をデータグループに分離することによって、コンテキストツリーを生成することをさらに含む。コンテキストツリーは、データグループを表す複数のノードを含む。複数のノードは、第１のセットのシンタックス要素のコスト削減に関連する。第１のセットのシンタックス要素を分離することは、第１のコンテキスト情報の値に対して分離基準を適用して、複数のノードのうちの少なくともいくつかを生成することを含む。方法は、現在のブロックに関連する第２のセットのシンタックス要素、および第２のセットのシンタックス要素に関連する第２のコンテキスト情報を識別することをさらに含む。方法は、第２のセットのシンタックス要素のうちの１つのシンタックス要素に関連する第２のコンテキスト情報の値に基づいて複数のノードのうちの１つを識別することをさらに含み、識別されたノードは、その１つのシンタックス要素を含むデータグループを表す。方法は、識別されたノードに関連する確率モデルに従ってその１つのシンタックス要素を符号化することをさらに含む。
【０００３】
本開示の一実装形態による符号化されたビデオフレームの符号化されたブロックを復号化する方法は、符号化されたビデオフレームの以前に復号化されたブロックに関連する第１のセットのシンタックス要素、および第１のセットのシンタックス要素を復号化するために用いられる第１のコンテキスト情報を識別することを含む。方法は、第１のコンテキスト情報に基づいて第１のセットのシンタックス要素をデータグループに分離することによって、コンテキストツリーを生成することをさらに含む。コンテキストツリーは、データグループを表す複数のノードを含む。複数のノードは、第１のセットのシンタックス要素のコスト削減に関連する。第１のセットのシンタックス要素を分離することは、第１のコンテキスト情報の値に対して分離基準を適用して、複数のノードのうちの少なくともいくつかを生成することを含む。方法は、符号化されたブロックに関連する第２のセットのシンタックス要素、および第２のセットのシンタックス要素に関連する第２のコンテキスト情報を識別することをさらに含む。方法は、第２のセットのシンタックス要素のうちの１つのシンタックス要素に関連する第２のコンテキスト情報の値に基づいて複数のノードのうちの１つを識別することをさらに含み、識別されたノードは、その１つのシンタックス要素を含むデータグループを表す。方法は、識別されたノードに関連する確率モデルに従ってその１つのシンタックス要素を復号化することをさらに含む。
【０００４】
本開示の一実装形態による、符号化されたビデオフレームの符号化されたブロックを復号化するための装置は、非一時的記憶媒体に格納された命令を実行するように構成されたプロセッサを備える。命令は、符号化されたビデオフレームの以前に復号化されたブロックに関連する第１のセットのシンタックス要素、および第１のセットのシンタックス要素を復号化するために用いられる第１のコンテキスト情報を識別する命令を含む。命令は、第１のコンテキスト情報に基づいて第１のセットのシンタックス要素をデータグループに分離することによって、コンテキストツリーを生成する命令をさらに含む。コンテキストツリーは、データグループを表す複数のノードを含む。複数のノードは、第１のセットのシンタックス要素のコスト削減に関連する。第１のセットのシンタックス要素を分離する命令は、第１のコンテキスト情報の値に対して分離基準を適用して、複数のノードのうちの少なくともいくつかを生成する命令を含む。命令は、符号化されたブロックに関連する第２のセットのシンタックス要素、および第２のセットのシンタックス要素に関連する第２のコンテキスト情報を識別する命令をさらに含む。命令は、第２のセットのシンタックス要素のうちの１つのシンタックス要素に関連する第２のコンテキスト情報の値に基づいてノードのうちの１つを識別する命令をさらに含む。識別されたノードは、１つのシンタックス要素を含むデータグループを表す。命令は、識別されたノードに関連する確率モデルに従って１つのシンタックス要素を復号化する命令をさらに含む。
【０００５】
本開示の一実装形態による、ビデオフレームの現在のブロックを復号化するための装置は、非一時的記憶媒体に格納された命令を実行するように構成されたプロセッサを備える。命令は、ビデオフレームの以前に符号化されたブロックに関連する第１のセットのシンタックス要素、および第１のセットのシンタックス要素を符号化するために用いられる第１のコンテキスト情報を識別する命令を含む。命令は、第１のコンテキスト情報に基づいて第１のセットのシンタックス要素をデータグループに分離することによって、コンテキストツリーを生成する命令をさらに含む。コンテキストツリーは、データグループを表す複数のノードを含む。複数のノードは、第１のセットのシンタックス要素のコスト削減に関連する。第１のセットのシンタックス要素を分離する命令は、第１のコンテキスト情報の値に対して分離基準を適用して、複数のノードのうちの少なくともいくつかを生成する命令を含む。命令は、現在のブロックに関連する第２のセットのシンタックス要素、および第２のセットのシンタックス要素に関連する第２のコンテキスト情報を識別する命令をさらに含む。命令は、第２のセットのシンタックス要素のうちの１つのシンタックス要素に関連する第２のコンテキスト情報の値に基づいてノードのうちの１つを識別する命令をさらに含み、識別されたノードは、その１つのシンタックス要素を含むデータグループを表す。命令は、識別されたノードに関連する確率モデルに従ってその１つのシンタックス要素を符号化する命令をさらに含む。
【０００６】
コスト削減は、第１のセットのシンタックス要素をコーディングするためのコストの削減であってよい。このコストは、計算コストであり得る。計算コストは、例えば、コーディングのために使用される計算リソースの量を示し得る。シンタックス要素をコーディングするためのコストは、シンタックス要素をコーディングするための時間、シンタックス要素をコーディングするために使用されるスペース（例えば、コンピュータメモリのサイズ）、シンタックス要素をコーディングするための演算の数（例えば、算術演算）、およびコーディングするシンタックス要素の数から成るパラメータのグループから選択される１つまたは複数のパラメータに依存するか、またはそれらを示し得る。
【０００７】
本開示のこれらおよび他の態様は、以下の詳細な説明、添付の特許請求の範囲、および添付の図面において開示される。
【図面の簡単な説明】
【０００８】
本明細書の記載は、以下に説明される添付の図面を参照し、いくつかの図面に亘って同様の参照番号が同様の構成を参照している。
【図１】ビデオ符号化および復号化システムの概略図である。
【図２】送信局または受信局を実装し得るコンピューティングデバイスの一例のブロック図である。
【図３】符号化され、続いて復号化される典型的なビデオストリームの図である。
【図４】本開示の実装形態による符号化器のブロック図である。
【図５】本開示の実装形態による復号化器のブロック図である。
【図６】ビデオフレームのブロックに関連するシンタックス要素をコーディングするための技術のフローチャート図である。
【図７】ビデオフレームのブロックに関連するシンタックス要素をコーディングするためのコンテキストツリーを生成するための技術のフローチャート図である。
【図８】ビデオフレームの現在のブロックに関連するシンタックス要素を符号化するためのシステムのブロック図である。
【図９】符号化されたビデオフレームの符号化されたブロックに関連する符号化されたシンタックス要素を復号化するためのシステムのブロック図である。
【図１０】図１０Ａは、コンテキストツリーを生成するための第１段階の一例を示し、図１０Ｂは、コンテキストツリーを生成するための第２段階の一例を示し、図１０Ｃは、コンテキストツリーを生成するための第３段階の一例を示し、図１０Ｄは、コンテキストツリーを生成するための第４段階の一例を示す図である。
【図１１】コンテキストツリーの一例を示す図である。
【発明を実施するための形態】
【０００９】
ビデオ圧縮スキームは、それぞれの画像またはフレームをブロックなどのより小さな複数の部分に分割すること、これらのそれぞれのブロックに関連するシンタックス要素の符号化を制限する技術を用いて符号化されたビットストリームを生成することを含み得る。符号化されたビットストリームを復号化して、符号化されたシンタックス要素からソース画像を再生成することができる。例えば、ビデオ圧縮スキームは、ビデオストリームの現在のブロックの予測残差を変換ブロックの変換係数に変換することを含み得る。変換係数は、量子化され、符号化されたビットストリームにエントロピー符号化される。復号化器は、符号化された変換係数を用いて符号化されたビットストリームを復号化または圧縮解除し、閲覧またはさらなる処理のためにビデオストリームを準備する。シンタックス要素は、符号化または復号化されるべきビデオシーケンスのすべてまたは一部を表すデータの要素である。例えば、シンタックス要素は、変換ブロックの変換係数、予測残差を生成するために使用される動きベクトル、フレームヘッダ内のフラグの値、またはビデオシーケンスに関連する他のデータであり得る。
【００１０】
コンテキスト情報は、シンタックス要素のエントロピー符号化およびエントロピー復号化で使用され得る。コンテキスト情報の例は、輝度プレーン（ｌｕｍｉｎａｎｃｅｐｌａｎｅ）、色度プレーン（ｃｈｒｏｍｉｎａｎｃｅ ｐｌａｎｅ）、隣接係数（ｎｅｉｇｈｂｏｒｉｎｇ ｃｏｅｆｆｉｃｉｅｎｔ）、係数位置、変換サイズなど、またはそれらの組み合わせを指し得る。コンテキスト情報の値は、どのようにコンテキスト情報を用いてシンタックス要素を符号化または復号化するかを指し得る。符号化器または復号化器は、コンテキスト情報に基づいてシンタックス要素の確率分布を予測できる。すなわち、コンテキスト情報は、（例えば、ビデオフレーム内の近接度、ブロックサイズなどに基づいて）符号化または復号化されるべき現在のブロックに類似するブロックなどについて、シンタックス要素が以前にどのようにコーディングされたかを示す確率モデルに関連し得る。適切な確率モデルを用いてシンタックス要素をコーディングすることにより、符号化器または復号化器は、より少ないビットを用いてシンタックス要素をそれぞれ符号化または復号化できる。
【００１１】
しかしながら、符号化または復号化されるべきブロックに関連する複数のシンタックス要素がある場合に、使用する適切な確率モデルを決定することは困難な場合がある。１つの解決法は、コンテキスト情報のすべての組み合わせに基づいて、ブロックに関連するシンタックス要素を異なるグループに分離することを含み得る。各グループは、コンテキスト情報の１つの組み合わせに関連する複数のシンタックス要素を含む。次いで、シンタックス要素は、最大数のシンタックス要素を含むグループに関連する確率モデルを用いてコーディングされ得る。
【００１２】
しかしながら、この解決法は欠点を有する場合がある。例えば、利用可能なコンテキスト情報の数が増えると、グループの数が指数関数的に増加し得る。これにより、エントロピーコーディングプロセスのコストが望ましくないほど高くなる可能性がある。別の例では、複数のグループが存在し得るが、各グループは少数のシンタックス要素のみを含む場合がある。この過剰な分離により、シンタックス要素についての不正確な確率モデル推定が生じ、これは、符号化器または復号化器に、準最適または不適切な確率モデルを用いてシンタックス要素をそれぞれ符号化または復号化させる場合がある。
【００１３】
本開示の実装形態は、コンテキストツリーを用いて、ビデオフレームのブロックに関連するシンタックス要素をコーディングすることを含む。ビデオフレームのブロックに関連するシンタックス要素は、ブロックに含まれるシンタックス要素、ブロックを含むビデオフレームのヘッダに含まれるシンタックス要素、またはそうでなければ、ブロックのコンテンツまたはコーディングに関連するかまたはそのために使用されるシンタックス要素であってよい。以前にコーディングされたシンタックス要素をコーディングするためのコンテキスト情報が識別され、コンテキストツリーが、そのコンテキスト情報に基づいて以前にコーディングされたシンタックス要素をデータグループに分離することにより、生成される。コンテキストツリーは、データグループを表し、かつ以前にコーディングされたシンタックス要素についてのコスト削減に関連するノードを含む。コンテキストツリーが以前にコーディングされたシンタックス要素とそれに関連するコンテキスト情報とを用いて生成された後、シンタックス要素および関連するコンテキスト情報の別のセットが識別され得る。例えば、以前にコーディングされたシンタックス要素は、ビデオフレームの第１のブロックに関連するシンタックス要素であってよく、他のセットのシンタックス要素は、そのビデオフレームの第２のブロックに関連するシンタックス要素であってよい。他のセットのシンタックス要素のうちの１つのシンタックス要素は、その１つのシンタックス要素に関連するコンテキスト情報の値に基づいてなど、コンテキストツリーの複数のノードのうちの１つを識別することによりコーディングされ得る。その１つのシンタックス要素は、その識別されたノードに関連する確率モデルに従ってコーディングされ得る。従って、コンテキストツリーを用いて、さらなるセットのシンタックス要素を処理することができ、エントロピー符号化またはエントロピー復号化のコストが低くなる。
【００１４】
コンテキストツリーを用いたシンタックス要素のコーディングのための技術のさらなる詳細は、それらが実装され得るシステムを最初に参照して本明細書で説明される。図１は、ビデオ符号化および復号化システム１００の概略図である。送信局１０２は、例えば、図２に記載されているようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、送信局１０２の他の実装形態も可能である。例えば、送信局１０２の処理を複数の装置に分散させることができる。
【００１５】
ネットワーク１０４は、ビデオストリームの符号化および復号化のために、送信局１０２および受信局１０６を接続することができる。具体的には、ビデオストリームを送信局１０２で符号化することができ、符号化されたビデオストリームを受信局１０６で復号化することができる。ネットワーク１０４は、例えばインターネットであってもよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、または送信局１０２から、この例では、受信局１０６にビデオストリームを転送する任意の他の手段とすることができる。
【００１６】
受信局１０６は、一例では、図２に記載されたようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、受信局１０６の他の適切な実装形態も可能である。例えば、受信局１０６の処理を複数の装置に分散させることができる。
【００１７】
ビデオ符号化および復号化システム１００の他の実装形態も可能である。例えば、実装形態はネットワーク１０４を省略することができる。別の実装形態では、ビデオストリームを符号化し、後で受信局１０６またはメモリを有する任意の他の装置に送信するために格納することができる。一実装形態では、受信局１０６は、符号化されたビデオストリームを（例えば、ネットワーク１０４、コンピュータバス、および／または何らかの通信経路を介して）受信し、後の復号化のためにビデオストリームを格納する。一実装形態では、ネットワーク１０４を介して符号化されたビデオを伝送するためにリアルタイム転送プロトコル（ＲＴＰ：ｒｅａｌ−ｔｉｍｅｔｒａｎｓｐｏｒｔ ｐｒｏｔｏｃｏｌ）が使用される。別の実装形態では、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ：ＨｙｐｅｒｔｅｘｔＴｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）ベースのビデオストリーミングプロトコルなどのＲＴＰ以外の転送プロトコルが使用されてもよい。
【００１８】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に説明するように、ビデオストリームを符号化および復号化する能力を含むことができる。例えば、受信局１０６は、ビデオ会議サーバ（例えば、送信局１０２）から符号化されたビデオビットストリームを受信して復号化および視聴し、さらに自身のビデオビットストリームを他の参加者による復号化および視聴のために符号化してビデオ会議サーバに送信するビデオ会議参加者であってよい。
【００１９】
図２は、送信局または受信局を実装することができるコンピューティングデバイス２００の一例のブロック図である。例えば、コンピューティングデバイス２００は、図１の送信局１０２および受信局１０６の一方または両方を実装することができる。コンピューティングデバイス２００は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの１つのコンピューティングデバイスの形態とすることができる。
【００２０】
コンピューティングデバイス２００のプロセッサ２０２は、従来の中央処理装置とすることができる。代替的に、プロセッサ２０２は、現在存在するか、または今後開発される情報を操作または処理することができる他のタイプのデバイスまたは複数のデバイスであってもよい。例えば、開示された実装態様は、図示のような１つのプロセッサ（例えば、プロセッサ２０２）で実施され得るが、複数のプロセッサを使用することにより速度および効率における優位性を得ることができる。
【００２１】
コンピューティングデバイス２００内のメモリ２０４は、一実装形態では読み出し専用メモリ（ＲＯＭ）デバイスまたはランダムアクセスメモリ（ＲＡＭ）デバイスであってもよい。しかしながら、他の適切なタイプの記憶装置をメモリ２０４として使用することができる。メモリ２０４は、プロセッサ２０２がバス２１２を使用してアクセスするコードおよびデータ２０６を含むことができる。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含むことができ、アプリケーションプログラム２１０は、本明細書に記載された技術をプロセッサ２０２が実行するのを可能にする少なくとも１つのプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１〜Ｎを含むことができ、アプリケーション１〜Ｎは、本明細書で説明する技術を実行するビデオ符号化アプリケーションをさらに含む。コンピューティングデバイス２００は、例えば、モバイルコンピューティングデバイスと共に使用されるメモリカードであり得る二次ストレージ２１４を含むこともできる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、二次ストレージ２１４に全体的または部分的に記憶され、処理のために必要に応じてメモリ２０４にロードされる。
【００２２】
コンピューティングデバイス２００は、ディスプレイ２１８などの１つまたは複数の出力デバイスを含むこともできる。ディスプレイ２１８は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブエレメントと組み合わせたタッチセンシティブディスプレイであってもよい。ディスプレイ２１８は、バス２１２を介してプロセッサ２０２に接続され得る。ユーザがコンピューティングデバイス２００をプログラムするかまたは他の方法で使用することを可能にする他の出力デバイスが、ディスプレイ２１８に加えて、またはディスプレイ２１８に代えて設けられてもよい。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）ディスプレイなどの発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実施することができる。
【００２３】
コンピューティングデバイス２００は、コンピューティングデバイス２００を操作するユーザの画像等の画像を検出することができる、例えば、カメラなどの撮像デバイス２２０、または現在または将来開発される任意の他の撮像デバイス２２０を含むか、または撮像デバイス２２０と通信することができる。撮像デバイス２２０は、コンピューティングデバイス２００を操作するユーザの方に向けられるように配置することができる。一例では、撮像デバイス２２０の位置および光軸は、視野が、ディスプレイ２１８に直接隣接する領域であって、その領域からディスプレイ２１８が視認可能な領域を含むように構成することができる。
【００２４】
コンピューティングデバイス２００は、コンピューティングデバイス２００の近くの音を感知することができる、例えば、マイクロホンなどの音声感知デバイス２２２、または現在または今後開発される任意の他の音声感知デバイスを含むか、またはそれと通信することができる。音声感知デバイス２２２は、コンピューティングデバイス２００を操作するユーザの方に向けられ、かつユーザがコンピューティングデバイス２００を操作している間にユーザによって発せられた、例えば音声、他の発話を受信するように構成することができる。
【００２５】
図２は、コンピューティングデバイス２００のプロセッサ２０２およびメモリ２０４が１つのユニットに統合されていることを示しているが、他の構成を利用することもできる。プロセッサ２０２の動作は、直接的にまたはローカルエリアネットワークまたは他のネットワークを介して接続され得る複数のマシン（個別のマシンは１つまたは複数のプロセッサを有することができる）にわたって分散させることができる。メモリ２０４は、ネットワークベースのメモリのように複数のマシンに分散するか、またはコンピューティングデバイス２００の動作を実行する複数のマシンにおけるメモリとすることができる。本明細書では、１つのバスとして示されているが、コンピューティングデバイス２００のバス２１２は、複数のバスから構成することができる。さらに、二次ストレージ２１４は、コンピューティングデバイス２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされ、かつメモリカードなどの１つの統合されたユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。従って、コンピューティングデバイス２００は、多種多様な構成で実装され得る。
【００２６】
図３は、符号化され、続いて復号化されるビデオストリーム３００の一例の図である。ビデオストリーム３００は、ビデオシーケンス３０２を含む。次のレベルでは、ビデオシーケンス３０２は、複数の隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含むことができる。隣接フレーム３０４はさらに、個々のフレーム、例えばフレーム３０６に細分化することができる。次のレベルでは、フレーム３０６は、一連のプレーンまたはセグメント３０８に分割され得る。セグメント３０８は、例えば、並列処理を可能にするフレームのサブセットとすることができる。セグメント３０８は、ビデオデータを別々の色に分離することができるフレームのサブセットとすることができる。例えば、カラービデオデータのフレーム３０６は、輝度プレーンおよび２つの色度プレーンを含むことができる。セグメント３０８は、異なる解像度でサンプリングすることができる。
【００２７】
フレーム３０６がセグメント３０８に分割されているか否かにかかわらず、フレーム３０６は、さらに、フレーム３０６内の例えば１６×１６画素に対応するデータを含むことができるブロック３１０に細分化されてもよい。ブロック３１０は、１つまたは複数のセグメント３０８の画素データからのデータを含むように構成され得る。ブロック３１０は、４×４画素、８×８画素、１６×８画素、８×１６画素、１６×１６画素、またはそれより大きいような任意の他の適切なサイズであってもよい。特に明記しない限り、ブロックおよびマクロブロックという用語は、本明細書では交換可能に使用される。
【００２８】
図４は、本開示の実装形態による符号化器４００のブロック図である。符号化器４００は、例えばメモリ２０４などのメモリに格納されたコンピュータソフトウェアプログラムを提供するなどして、上述のように送信局１０２内で実装され得る。コンピュータソフトウェアプログラムは、ＣＰＵ２０２などのプロセッサによる実行時に、送信局１０２に図４で説明した方法でビデオデータを符号化させる機械命令を含むことができる。符号化器４００は、例えば、送信局１０２に含まれる専用のハードウェアとして実装されることも可能である。特に望ましい一実装形態では、符号化器４００は、ハードウェア符号化器である。
【００２９】
符号化器４００は、ビデオストリーム３００を入力として用いてフォワードパス（実線の接続線で示す）において様々な機能を実行して、符号化または圧縮されたビットストリーム４２０を生成するイントラ予測／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を有する。符号化器４００は、将来のブロックの符号化のためのフレームを再構成する再構成パス（点線の接続線で示す）をも含む。図４において、符号化器４００は、再構成パスにおいて様々な機能を実行する以下のステージ、すなわち、逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６を有する。符号化器４００の他の構成的な変形例を用いてビデオストリーム３００を符号化することができる。
【００３０】
ビデオストリーム３００が符号化のために提示されると、フレーム３０６などの隣接フレーム３０４の各々は、ブロックの単位で処理され得る。イントラ予測／インター予測ステージ４０２において、それぞれのブロックは、イントラフレーム予測（イントラ予測とも呼ばれる）またはインターフレーム予測（インター予測とも呼ばれる）を用いて符号化され得る。いずれの場合でも、予測ブロックが形成され得る。イントラ予測の場合、予測ブロックは、以前に符号化され、かつ再構成された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックは、１つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
【００３１】
次に、引き続き図４を参照して、イントラ予測／インター予測ステージ４０２において予測ブロックが現在のブロックから減算され、残差ブロック（残差とも呼ばれる）が生成される。変換ステージ４０４は、ブロックベースの変換を用いて、残差を、例えば周波数領域の変換係数に変換する。量子化ステージ４０６は、変換係数を、量子化値または量子化レベルを用いて量子化変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は、量子化値で除算され、切り捨てられてもよい。
【００３２】
次に、量子化された変換係数は、エントロピー符号化ステージ４０８によってエントロピー符号化される。例えば、エントロピー符号化ステージ４０８は、現在のブロックに関連するシンタックス要素を符号化するためのコンテキスト情報を識別すること、コンテキスト情報に基づいてシンタックス要素をデータグループに分離することによりコンテキストツリーを生成することを含み得る。コンテキスト情報を識別し、コンテキストツリーを生成するための実装形態は、図６〜図１１に関して以下で説明される。エントロピー符号化された係数は、（例えば、使用された予測のタイプ、変換タイプ、動きベクトル、および量子化値などを示すために用いられるようなシンタックス要素を含み得る）ブロックを復号化するために使用される他の情報とともに、圧縮されたビットストリーム４２０に出力される。圧縮されたビットストリーム４２０は、可変長コーディング（ｖａｒｉａｂｌｅｌｅｎｇｔｈ ｃｏｄｉｎｇ：ＶＬＣ）または算術コーディングなどの様々な技術を用いてフォーマットされ得る。圧縮されたビットストリーム４２０は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも称され、これらの用語は本明細書では互換的に使用される。
【００３３】
符号化器４００および復号化器５００（以下に説明する）が、圧縮されたビットストリーム４２０を復号化するために同じ参照フレームを使用することを確実にするために、図４における再構成パス（点線の接続線で示す）が使用される。再構成パスは、逆量子化ステージ４１０で量子化された変換係数を逆量子化すること、および逆変換ステージ４１２で逆量子化された変換係数を逆変換して微分残差ブロック（微分残差とも称される）を生成することを含む復号化プロセス（後述）中に行われる機能と同様の機能を実行する。再構成ステージ４１４において、イントラ予測／インター予測ステージ４０２で予測された予測ブロックを微分残差に加えて、再構成されたブロックが作成される。ループフィルタリングステージ４１６は、ブロッキングアーチファクトなどの歪みを低減するために、再構成されたブロックに適用され得る。
【００３４】
符号化器４００の他の変形例を用いて圧縮されたビットストリーム４２０を符号化することができる。いくつかの実装形態では、非変換ベースの符号化器は、あるブロックまたはフレームに関して変換ステージ４０４を使用せずに残差信号を直接量子化することができる。いくつかの実装形態では、符号化器は、共通のステージに組み合わせられた量子化ステージ４０６および逆量子化ステージ４１０を有し得る。
【００３５】
図５は、本開示の実装形態による復号化器５００のブロック図である。復号化器５００は、例えば、メモリ２０４に格納されたコンピュータソフトウェアプログラムを提供することによって、受信局１０６で実装され得る。コンピュータソフトウェアプログラムは、プロセッサ２０２などのプロセッサによる実行時に、受信局１０６に、図５において説明した方法でビデオデータを復号化させる機械命令を含み得る。復号化器５００は、例えば、送信局１０２または受信局１０６に含まれるハードウェアで実装されることも可能である。
【００３６】
復号化器５００は、上述の符号化器４００の再構成パスと同様に、一例では、様々な機能を実行して圧縮されたビットストリーム４２０から出力ビデオストリーム５１６を生成するための以下のステージ、すなわち、エントロピー復号化ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ予測／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４を含む。圧縮されたビットストリーム４２０を復号化するために復号化器５００の他の構造的な変形例を使用することができる。
【００３７】
圧縮されたビットストリーム４２０が復号化のために提示されると、圧縮されたビットストリーム４２０内のデータ要素が、エントロピー復号化ステージ５０２によって復号化されて、一組の量子化変換係数が生成される。例えば、エントロピー復号化ステージ５０２は、符号化されたブロックに関連する符号化されたシンタックス要素を復号化するためのコンテキスト情報を識別すること、コンテキスト情報に基づいて符号化されたシンタックス要素をデータグループに分離することによりコンテキストツリーを生成することを含み得る。コンテキスト情報を識別し、コンテキストツリーを生成するための実装形態は、図６〜図１１に関して以下で説明される。
【００３８】
逆量子化ステージ５０４は、（例えば、量子化された変換係数に量子化値を乗算することにより）量子化された変換係数を逆量子化し、逆変換ステージ５０６は、逆量子化された変換係数を逆変換して、符号化器４００における逆変換ステージ４１２によって生成されたものと同一である微分残差を生成する。圧縮されたビットストリーム４２０から復号化されたヘッダ情報を用いて、復号化器５００は、イントラ予測／インター予測ステージ５０８を用いて、例えばイントラ予測／インター予測ステージ４０２において、符号化器４００で生成されたのと同じ予測ブロックを作成する。
【００３９】
再構成ステージ５１０において、予測ブロックを微分残差に加えて再構成ブロックが作成される。ループフィルタリングステージ５１２は、再構成されたブロックに適用されて、ブロッキングアーチファクトを低減し得る。再構成されたブロックに他のフィルタリングを適用することができる。この例では、ブロッキング歪を低減するためにデブロッキングフィルタリングステージ５１４が再構成ブロックに適用され、その結果が出力ビデオストリーム５１６として出力される。出力ビデオストリーム５１６は、復号化されたビデオストリームとも呼ばれ、用語は本明細書では互換的に使用される。復号化器５００の他の変形例を用いて、圧縮されたビットストリーム４２０を復号化することができる。いくつかの実装形態では、復号化器５００は、デブロッキングフィルタリングステージ５１４を用いずに出力ビデオストリーム５１６を生成することができる。
【００４０】
次に、図６〜図７を参照して、コンテキストツリーを生成し、コンテキストツリーを用いてシンタックス要素をコーディングするための技術を説明する。図６は、コンテキストツリーを用いてビデオフレームのブロックに関連するシンタックス要素をコーディングするための技術６００のフローチャートである。図７は、ビデオフレームのブロックに関連するシンタックス要素をコーディングするためのコンテキストツリーを生成するための技術７００のフローチャートである。技術６００および技術７００の一方または両方は、例えば、送信局１０２または受信局１０６などのコンピューティングデバイスによって実行されるソフトウェアプログラムとして実施することができる。例えば、ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納され、プロセッサ２０２のようなプロセッサによる実行時に、コンピューティングデバイスに技術６００および／または技術７００を実行させる機械可読命令を含むことができる。技術６００または技術７００の一方または両方は、専用のハードウェアまたはファームウェアを用いて実装され得る。上述したように、いくつかのコンピューティングデバイスは、複数のメモリまたはプロセッサを有してもよく、技術６００または技術７００の一方または両方において説明される複数の動作は、複数のプロセッサ、メモリ、またはその両方を用いて分散されてもよい。
【００４１】
技術６００または技術７００の一方または両方は、符号化器、例えば、図４に示される符号化器４００、または復号化器、例えば、図５に示される復号化器５００により実行され得る。従って、技術６００および技術７００の以下の説明内の参照には、現在のブロックの符号化または符号化されたブロックの復号化、または現在のブロックの符号化または符号化されたブロックの復号化に使用されるコンテキストツリーの生成に関する議論が含まれ得る。技術６００または技術７００のすべてまたは一部を用いて、現在のブロックを符号化するか、または符号化されたブロックを復号化することができるが、「現在のブロックを符号化する」など、または「符号化されたブロックを復号化する」などへの言及は、適用可能な動作を指すことができる。例えば、技術６００または技術７００が現在のブロックを符号化するためのプロセスの一部として使用される場合、「符号化されたブロックを復号化する」などへの言及は無視され得る。同様に、技術６００または技術７００が、符号化されたブロックを復号化するためのプロセスの一部として使用される場合、「現在のブロックを符号化する」などへの言及は無視され得る。
【００４２】
まず図６を参照すると、コンテキストツリーを用いてビデオフレームのブロックに関連するシンタックス要素をコーディングするための技術６００のフローチャートが示されている。６０２において、ビデオフレームの以前にコーディングされたブロックに関連する第１のセットのシンタックス要素をコーディングするためのコンテキスト情報が識別される。コンテキスト情報を識別することは、第１のセットのシンタックス要素の符号化または復号化に使用可能なコンテキスト情報の可能な値を判定することを含み得る。コーディングプロセスの間、符号化器（例えば、図４に示される符号化器４００）または復号化器（例えば、図５に示される復号化器５００）は、定義されたセットのコンテキスト情報内のコンテキスト情報の値を使用するように構成され得る。各セットのコンテキスト情報の値は、シンタックス要素をコーディングするための異なる確率を反映できる。
【００４３】
例えば、符号化器または復号化器による使用のために利用可能なＮセットのコンテキスト情報があり得る。Ｎセットのコンテキスト情報は、符号化器または復号化器が使用できるコンテキストバッファ内に格納され得る。このセットの値は、シンタックス要素（例えば、コーディングされるビデオフレームのブロックに関連する第２のセットのシンタックス要素）のコーディングのためのデフォルトの確率、シンタックス要素（例えば、第１のセットのシンタックス要素）の以前のコーディングに基づいて決定される確率などを反映し得る。各セットのコンテキスト情報は、そのセットのコンテキスト情報に対する異なる値を含み得る。第１のセットの第１のコンテキスト情報の値は、第２のセットの同じ第１のコンテキスト情報の値と同じではない場合がある。
【００４４】
コンテキスト情報を識別することは、コンテキストベクトルを生成すること、受信すること、またはそうでなければ識別することを含み得る。コンテキストベクトルは、シンタックス要素をコーディングするためのコンテキスト情報の可能な値の一部またはすべてを含む。コンテキストベクトルは、変数ｃｔｘとして表され得る。コンテキストベクトルのインデックスｃｔｘ［Ｎ］は、複数のセットのコンテキスト情報のうちの１つの可能な値を指し得る。例えば、ｃｔｘ［０］に格納されている値は、第１のコンテキスト情報の複数の異なる値を指し得る。コンテキストベクトルに含まれるコンテキスト情報は、キャッシュに格納され得る。
【００４５】
例えば、コンテキストベクトルを生成することは、データ構造（例えば、配列、オブジェクトシリーズなど）を定義すること、およびデータ構造のインデックス内の異なるセットのコンテキスト情報からのコンテキスト情報の値を格納することを含み得る。別の例では、コンテキストベクトルを識別することは、符号化器または復号化器によってアクセス可能なデータベースまたは同様のデータストア（例えば、コンテキスト情報が格納されるキャッシュ）から定義済みのデータ構造を取得することを含み得る。さらに別の例では、コンテキストベクトルを受信することは、ソフトウェアまたはハードウェアコンポーネントからコンテキストベクトルを示すデータを受信することを含み得る。例えば、サーバデバイスは、データを符号化器または復号化器に送信するためのソフトウェアを含み得る。データは、コンテキストベクトル、またはデータベースまたは同様のデータストア内などで、コンテキストベクトルを識別するために使用できるデータを含み得る。
【００４６】
６０４において、コンテキストツリーが生成される。コンテキストツリーは、第１のセットのシンタックス要素をコーディングするために使用されるデータを表すノードを含む、バイナリツリーまたは非バイナリツリーであってよい。コンテキストツリーのノードは、リーフノード、または非リーフノードであり得る。リーフノードは、第１のセットのシンタックス要素のセットまたはサブセットを表すノードであり、そのセットまたはサブセットは、本明細書ではデータグループと呼ばれる。非リーフノードは、データグループを分離するために用いられる表現を表すノードであり、この表現は、本明細書では分離基準と呼ばれる。例えば、コンテキストツリーがバイナリツリーである場合、非リーフノードは、両方がリーフノードであるか、両方が非リーフノードであるか、または１つのリーフノードと１つの非リーフとを含む２つの子ノードを有することができる親ノードである。
【００４７】
コンテキストツリーを生成することは、識別されたコンテキスト情報（例えば、コンテキストベクトル内のセットのコンテキスト情報の値）に基づいて、第１のセットのシンタックス要素をデータグループに分離することを含み得る。コンテキストツリーのノードは、生成されて、第１のセットのシンタックス要素のデータグループを表す。第１のセットのシンタックス要素を分離することは、コンテキスト情報の値に対して分離基準を適用して、複数のノードのうちのいくつかを生成することを含み得る。コンテキストツリーの生成に使用できる分離基準は、符号化器または復号化器がアクセスできるリスト、データベース、または他のデータストアで定義され得る。
【００４８】
以下に説明するように、分離基準は、コンテキスト情報の値に対して適用され、その分離基準を使用すると第１のセットのシンタックス要素の最大のコスト削減になると判定したことに応答して１つまたは複数のノードを生成することができる。例えば、候補コスト削減は、コンテキスト情報の異なる値に対する異なる分離基準の適用に基づいて判定され得る。最大のコスト削減をもたらす分離基準とコンテキスト情報の対応する値とが、コンテキストツリーの１つまたは複数の新しいノードを生成するために選択される。
【００４９】
ノードは、リーフノードとして開始し、その後、非リーフノードに変更されてもよい。例えば、第１のレベルのコンテキストツリーは、コーディングされる第１のセットのシンタックス要素のすべてを表すリーフノードである１つのノードを含み得る。分離基準が、コンテキスト情報の値に対して適用され、第１のセットのシンタックス要素を分離することができる。分離基準が適用された後、そのノードは、適用された分離基準を表す非リーフノードになり、リーフノードは、その非リーフノードの子ノードとして生成される。子ノードの各々は、第１のセットのシンタックス要素すべてのサブセットを含むデータグループを表す。例えば、コンテキストツリーがバイナリツリーである場合、第１のレベルのコンテキストツリーのノードについてのコンテキスト情報の値に分離基準を適用することは、そのノードの２つの子ノードを生成することを含む。これらの子ノードの各々によって表されるデータグループは、例えば、第１のセットのシンタックス要素の半分を含み得る。あるいは、これらのデータグループは、第１のセットのシンタックス要素のうちの異なる量を含み得る。
【００５０】
コンテキストツリーのノードは、第１のセットのシンタックス要素（および、例えば、コンテキストツリーを用いてコーディングされた後続のセットのシンタックス要素）のコスト削減に関連する。コンテキストツリーは、ビデオフレームのブロックに関連するシンタックス要素をコーディングするための最低コストを判定するために生成される。シンタックス要素をコーディングするためのコストは、シンタックス要素をコーディングするための計算コストであり得る。計算コストは、例えば、コーディングのために使用される計算リソースの量を示し得る。例えば、シンタックス要素をコーディングするためのコストは、シンタックス要素をコーディングするための時間、シンタックス要素をコーディングするために使用されるスペース、およびシンタックス要素をコーディングするための演算の数（例えば、算術演算）から成るパラメータのグループから選択された１つまたは複数のパラメータを示すか、またはそれらのうちのいくつかの機能であり得る。シンタックス要素をコーディングするためのコストは、コーディングするシンタックス要素の数に依存し得る。コーディングするシンタックス要素の数は、データグループを用いて表され得る。コンテキストツリーのリーフノードは、異なるデータグループを表し、従って、シンタックス要素の異なる可能な数を表す。そのため、ビデオフレームのブロックに関連するシンタックス要素をエントロピーコーディングするコストは、各リーフノードに対して判定され得る。例えば、コンテキストツリーのリーフノードにより表されるデータグループに基づいてシンタックス要素をエントロピーコーディングするコストは、次の式を用いて計算され得る。
【００５１】
【数１】
0006744505.tif 000002
ここで、ｇｉはｉ番目のデータグループであり、ｅ（ｇｉ）はデータグループｇｉのエントロピーコスト関数である、ｒ（ｓｉｚｅ（ｇｉ））はデータグループｇｉのサイズとともに減少する正の出力を有するサイズペナルティ関数であり、λは、サイズペナルティ関数ｒ（ｓｉｚｅ（ｇｉ））の重みである。サイズペナルティ関数ｒ（ｓｉｚｅ（ｇｉ））は、例えば、値域および定義域Ｒ＋→Ｒ＋を有し得る。エントロピーコスト関数は、次の式を用いて計算され得る。
【００５２】
【数２】
0006744505.tif 000003
ここで、ｎｉはデータグループｇｉにおけるデータの長さであり、ｐｉ［ｋ］はシンタックス値ｋを有するデータグループｇｉのシンタックス要素についての確率である。コンテキストツリーのノードによって表される各データグループは、確率モデルに関連し得る。
【００５３】
コンテキストツリーを生成することは、第１のセットのシンタックス要素の分離されたデータグループを表すノードを作成することから生じ得るコスト削減を判定することを含むことができる。すなわち、リーフノードに分離基準を適用すると、そのリーフノードは２つ以上の子ノードを有する非リーフノード（例えば、親ノード）となる。分離基準を用いてどのノードを分離するかを判定する際のコスト削減は、親ノードのコストから結果として得られる子ノードのコストの合計を差し引くことにより計算される。生成されるコンテキストツリーは、分離基準を用いて非リーフノード（例えば、親ノード）になり得る１つまたは複数のリーフノードを有し得る。従って、コンテキストツリーを生成することは、コンテキストツリーの所与のレベルのリーフノードまたはセットのリーフノードのうちのどれが、分離された際に、第１のセットのシンタックス要素をエントロピーコーディングするための最高のコスト削減をもたらすかを判定することを含み得る。
【００５４】
コンテキストツリーの所与のセットのリーフノードにおいて最高のコスト削減をもたらすリーフノードを分離することを決定することは、分離基準がそれらのリーフノードに適用される前後に、リーフノードを表すデータグループをエントロピーコーディングするためのコスト削減を判定することを含み得る。最も高いコスト削減に関連するリーフノードは、分離されて子ノードを生成できるが、別の結果として、いくつかの実装形態では、セットのリーフノードの他のノードによって表されるデータグループは分離されない。コンテキストツリーを生成するためのさらなる実装形態および例については、図７に関して以下で説明される。
【００５５】
６０６において、第２のセットのシンタックス要素およびそれに関連するコンテキスト情報が識別される。第２のセットのシンタックス要素は、コンテキストツリーを生成するために使用される第１のセットのシンタックス要素を含むブロックの後のラスタースキャンまたは他のスキャン順序に配置されたブロックに関連し得る。あるいは、第２のセットのシンタックス要素は、コンテキストツリーを生成するために使用される第１のセットのシンタックス要素とは異なるビデオフレームに関連していてもよい。第２のセットのシンタックス要素をコーディングするために用いられるコンテキスト情報は、第２のコンテキストベクトルの値として表され得る。第２のコンテキストベクトルは、第１のセットのコンテキスト情報をコーディングするために用いられるコンテキスト情報の値を含むコンテキストベクトルと同じでも異なっていてもよい。
【００５６】
６０８において、コンテキストツリーの複数のノードのうちの１つは、第２のセットのシンタックス要素のうちのシンタックス要素の１つに関連するコンテキスト情報の値に基づいて識別される。識別されたノードは、第２のセットのシンタックス要素のうちのそのシンタックス要素を含むデータグループを表す。コンテキスト情報の値に基づいてノードを識別することは、例えば、シンタックス要素に関連する第２のコンテキスト情報の値に対して、（例えば、コンテキストツリーを生成するために用いられる）以前にコーディングされたブロックに関連するシンタックス要素を分離するために使用される分離基準のうちのいくつかを適用することを含み得る。
【００５７】
例えば、コンテキストツリーがバイナリツリーの場合、コンテキスト情報の値は、真または偽として分離基準のいくつかに対して分解され得る。第１のツリーレベルの第１のノードを第２のツリーレベルの第２および第３のノードに分離するために使用される第１の分離基準は、コンテキストベクトルの第１のインデックスのコンテキスト情報の値が３より大きいかどうかを問うことができる。もしそうでない場合、第２のノードを第３のツリーレベルの第４および第５のノードに分離するために使用される分離基準が、コンテキスト情報の値に対して適用され得る。しかしながら、もしそうである場合、第３のノードを第３のツリーレベルの第６および第７のノードに分離するために使用される分離基準が、コンテキスト情報の値に対してかわりに適用され得る。このプロセスは、１つのノードがコンテキスト情報の値と分離基準とに基づいて識別されるまで繰り返され得る。
【００５８】
６１０において、第２のセットのシンタックス要素のうちのそのシンタックス要素は、識別されたノードに関連する確率モデルに従ってコーディングされる。コンテキストツリーのノード、またはそれらのノードによって表されるデータグループは、各々、確率モデルに関連している。ノードまたはデータグループに関連する確率モデルは、そのノードまたはデータグループのシンタックス要素についての確率を反映できる。いくつかの実装形態では、確率モデルは、そのノードまたはデータグループのそれらのシンタックス要素のみについての確率を特定し（例えば、含み）、そのデータグループに含まれていないシンタックス要素についての確率を特定しない（例えば、含まない）。
【００５９】
確率モデルは、ビデオフレームのブロックに関連するシンタックス要素が、特定の値になる確率、またはそのブロックまたはフレームに存在する確率などを示すことができる。例えば、確率モデルは、シンタックス要素のうちの１つまたは複数に関連し得る異なる確率を反映する整数値を含むことができる。シンタックス要素についての所与の確率を、整数値を最大値で除算することによって導出されるパーセンテージとして表すことができるように、確率モデルに対し最大値が定義され得る。例えば、確率モデルに対する最大値は、２５６のスケールにすることができる。シンタックス要素についての確率は、値１１９を反映し得る。従って、確率モデルは、そのシンタックス要素に関連する１１９／２５６の確率があることを示すことになる。
【００６０】
識別されたノードに関連する確率モデルに従って第２のセットのシンタックス要素のうちのそのシンタックス要素をコーディングすることは、符号化プロセス中に、確率モデルに従って第２のセットのシンタックス要素のうちのそのシンタックス要素を符号化すること、または確率モデルに従って第２のセットのシンタックス要素のうちのそのシンタックス要素を復号化することを含み得る。識別された確率モデルに関連する確率は、（例えば、図４に示されるエントロピー符号化ステージ４０８、または図５に示されるエントロピー復号化ステージ５０２において）エントロピーコーディングを用いて処理される。例えば、算術コーディングを用いて、閾値を満たす確率を有するシンタックス要素を符号化または復号化して、シンタックス要素が、その確率が低すぎる際に符号化または復号化されないようにすることができる。
【００６１】
従って、算術コーディングを実行して、ビットストリームの合計サイズ、またはビットストリームを送信する際のコストを最小化するなどのように、ビットストリームに符号化されるシンタックス要素の総数を制限することができる。従って、符号化動作中、および算術コーディングが識別された確率モデルに従って第２のセットのシンタックス要素に対して実行された後、第２のセットのシンタックス要素は、符号化されたビットストリームに圧縮されることにより符号化される。あるいは、復号化動作中、および算術コーディングが識別された確率モデルに従って第２のセットのシンタックス要素に対して実行された後、第２のセットのシンタックス要素は、符号化されたビットストリームから圧縮解除されることにより復号化される。
【００６２】
いくつかの実装形態では、技術６００は、第２のセットのシンタックス要素を用いてコンテキストツリーを更新し、次に更新されたコンテキストツリーを用いて第２のセットのシンタックス要素をコーディングすることを含み得る。例えば、コンテキストツリーのノードに関連する確率モデルは、第２のセットのシンタックス要素およびそれに関連するコンテキスト情報などに基づいて再計算され得る。次に、第２のセットのシンタックス要素が、再計算された確率モデルに基づいてコーディングされ得る。例えば、再計算されたコスト削減を用いて、リーフノードを分離し、例えばそのリーフノードを、コスト削減に関連する非リーフノードに変更して、これにより、第２のセットのシンタックス要素をコーディングするための推定最低コストが得られる。
【００６３】
いくつかの実装形態では、コンテキストツリーは、符号化されたビットストリーム内で受信されたデータに基づいて生成され得る。例えば、技術６００が符号化されたシンタックス要素を復号化するために実行される場合、コンテキストツリーを示すデータは、符号化器、中継デバイス、または別のコンピューティングデバイスから送信される符号化されたビットストリーム内において復号化器で受信され得る。符号化されたビットストリームは、符号化されたビデオフレームを含み、符号化されたビデオフレームは、符号化されたシンタックス要素が関連する符号化されたブロックを含む。従って、コンテキストツリーは、例えば符号化器から受信された情報に基づいて生成され得る。例えば、ビットストリームの生成に使用されるデータは、符号化されたシンタックス要素を復号化するためのコンテキスト情報のそれぞれに適用される分離基準を示すデータを含み得る。
【００６４】
いくつかの実装形態では、ブロックに関連するシンタックス要素は、キャッシュに格納されたデータを用いて符号化または復号化され得る。例えば、キャッシュに格納されたデータは、シンタックス要素がデータグループに分離されていることを示し得る。分離は、例えば、コンテキストツリーの生成、コンテキストツリーの更新、または現在のコンテキストツリーが、示された分離と一致していることの確認のために使用され得る。
【００６５】
いくつかの実装形態では、シンタックス要素がそれに従ってコーディングされている確率モデルが更新され得る。例えば、確率モデルは、ビデオフレームの最終ブロックの符号化または復号化に応答して更新され得る。確率モデルを更新することは、シンタックス要素がビデオフレームのブロックに関連付けられる回数をカウントすることを含み得る。例えば、その数は、符号化または復号化されている適用可能な各ブロックに応答して更新され得る。確率モデルは、ビデオフレームの最終ブロックが符号化または復号化された後に得られる合計数に基づいて更新され得る。例えば、カウントが閾値よりも大きい場合、確率モデルを更新して、シンタックス要素が特定の値であるか、または存在する確率が増加したことを反映させることができる。カウントが閾値よりも小さい場合、確率モデルを更新して、その確率が減少したことを反映させることができる。閾値は、例えば、前のビデオフレームのそのシンタックス要素の総数であり得る。
【００６６】
確率モデルの更新は、符号化器および復号化器の各々によって独立して行われ得る。例えば、符号化器および復号化器は、本開示の技術に従ってシンタックス要素を符号化および復号化するために使用可能な確率モデルを別々に格納し得る。あるいは、確率モデルの更新は、符号化器で決定され、復号化器に伝達され得る。例えば、符号化器は、ビデオフレームが符号化された後に確率モデルに関連する確率を更新し、それらの更新された確率を復号化器と同期して、符号化されたビデオフレームの復号化に使用できるようにする。
【００６７】
いくつかの実装形態では、ブロックに関連するシンタックス要素をコーディングするためのコンテキスト情報を識別することは、シンタックス要素をコーディングするために使用されるセットのコンテキスト情報のうちの１つを選択することを含み得る。符号化器は、それに利用可能なＮセットのうちの１つを選択し、その選択されたセットの可能な値のみに基づいてコンテキストベクトルを生成、受信、またはそうでなければ識別するように構成され得る。例えば、符号化器は、同じビデオフレームの他のブロックに関連するシンタックス要素をコーディングするために最も使用されているセットのコンテキスト情報を選択し得る。別の例では、符号化器は、ビデオフレームの直近に符号化されたブロックによってシンタックス要素をコーディングするために使用されたセットのコンテキスト情報を選択してもよい。コンテキストベクトルは、他のセットのコンテキスト情報の値を含まない。そのため、コンテキストベクトルの各インデックスは、選択されたセットのコンテキスト情報の単一の値を反映する。
【００６８】
いくつかの実装形態では、符号化器または復号化器は、セットのコンテキスト情報内のコンテキスト情報のタイプが、その値を決定する前にブロックに関連するシンタックス要素のコーディングすることに適しているかどうかを判定し得る。例えば、セット内のコンテキスト情報のタイプのうちの１つまたは複数が、ブロックに関連するシンタックス要素を符号化または復号化するために使用できる意味のある情報に関連しない、またはそれを提供しない場合があり得る。符号化器または復号化器は、無関係なタイプのコンテキスト情報に対する値を判定しないか、さもなければコンテキストベクトル内に無関係なタイプのコンテキスト情報を含めず、または使用しない可能性がある。いくつかの実装形態では、復号化器は、コンテキストベクトルを生成するように構成されていない場合がある。例えば、シンタックス要素を符号化するために使用されるコンテキスト情報の値は、コンテキストベクトルを使用するなどして、符号化器から復号化器に伝達され得る。復号化器は、符号化器から受信されたコンテキストベクトルに含まれる値を用いて、シンタックス要素を復号化できる。
【００６９】
次に図７を参照すると、ビデオフレームのブロックに関連するシンタックス要素をコーディングするためのコンテキストツリーを生成するための技術７００のフローチャートが示されている。技術７００は、６０４で実行されるような、図６に示される技術６００の動作のうちの１つまたは複数を含み得る。そのため、技術７００は、ビデオフレームのブロックに関連するシンタックス要素をコーディングするための技術、例えば技術６００の一部として実行され得る。あるいは、技術７００は、シンタックス要素をコーディングするための技術とは別個に実行されてもよい。例えば、コンテキストツリーを生成するための動作は、シンタックス要素をコーディングするための動作とは独立していてもよい。これは、例えば、コンテキストツリーがシンタックス要素のサンプルセットを用いて生成され、コンテキストツリー自体がシンタックス要素をコーディングするために使用される前に、トレーニングされてコンテキストツリーを更新する場合であり得る。
【００７０】
７０２において、第１のデータグループに対して使用する分離基準が決定される。第１のデータグループは、生成されるコンテキストツリーを用いて符号化または復号化するためのシンタックス要素のすべてを含むデータグループであり得る。分離基準は、コンテキスト情報を評価するために使用できる複数の分離基準のうちの１つであり得る。例えば、符号化器または復号化器は、例えばデータベースまたは他のデータストアに格納され得る分離基準のリストへのアクセスを有し得る。リストの各分離基準は、コンテキストツリーのタイプに応じて、数値、数値の範囲、またはバイナリ値を返すことができる表現を含み得る。例えば、コンテキストツリーがバイナリツリーである場合、各分離基準は、コンテキスト情報の値に適用された場合に、真または偽として返す表現を含み得る。
【００７１】
第１のデータグループに適用する分離基準を判定することは、符号化または復号化する複数のシンタックス要素についてのコンテキスト情報の異なる値に対して異なる分離基準を適用して、候補コスト削減を判定することを含み得る。各候補コスト削減は、１つの分離基準と、それが適用されるコンテキスト情報の対応する値とを表すことができる。複数の候補コスト削減を比較して、そのうちの最高のコスト削減を判定することができる。その最高のコスト削減をもたらす分離基準は、第１のデータグループに対して使用する分離基準として決定され得る。例えば、候補コスト削減を判定することには、すでに生成されたコンテキストツリーのノードに対して幅優先探索を実行して、分離する１つまたは複数の候補データグループを識別することを含み得る。従って、候補コスト削減のうちの異なるものは、１つまたは複数の候補データグループのうちの異なるものに関連する。
【００７２】
７０４において、第１のデータグループは、決定された分離基準を用いて、第２のデータグループと第３のデータグループとに分離される。例えば、コンテキストツリーがバイナリツリーである場合、決定された分離基準を用いて第１のデータグループを第２のデータグループと第３のデータグループとに分離することは、第１のデータグループのシンタックス要素のどれが、分離基準が使用される際に真として分解され、どれが代わりに偽として分解されるかを決定することを含み得る。例えば、第２のデータグループは、真として分解される第１のデータグループのシンタックス要素を含み、第３のデータグループは、偽として分解される第１のデータグループのシンタックス要素を含むことができる。第１のデータグループは、第１のノードを用いてコンテキストツリーで表され得る。従って、第１のデータグループを分離することは、コンテキストツリー内の第２のデータグループを表す第２のノードを生成すること、コンテキストツリー内の第３のデータグループを表す第３のノードを生成することを含み得る。
【００７３】
７０６において、第２および第３のデータグループの各々に対し使用する分離基準が判定される。第２のデータグループに対し使用する分離基準を判定することは、候補コスト削減が決定されたシンタックス要素の第１の部分についてのコンテキスト情報の異なる値に対して異なる分離基準を適用することから生じるセットの候補コスト削減を判定することを含み、その結果、第１のデータグループが第２および第３のデータグループに分離される。最高の候補コスト削減をもたらす分離基準が、第２のデータグループに対して選択される。第３のデータグループに対し使用する分離基準を判定することも、候補コスト削減が決定されたシンタックス要素の第２の部分についてのコンテキスト情報の異なる値に対して異なる分離基準を適用することから生じるセットの候補コスト削減を判定することを含み、その結果、第１のデータグループが第２および第３のデータグループに分離される。最高の候補コスト削減をもたらす分離基準が、第３のデータグループに対して選択される。第１のデータグループの分離をもたらす候補コスト削減の対象となるシンタックス要素の第１の部分および第２の部分は、それらのシンタックス要素の異なる部分であり得る。あるいは、第１の部分および第２の部分は、第１のデータグループの分離をもたらす候補コスト削減の対象となるシンタックス要素の一部またはすべてを共有してもよい。
【００７４】
７０８において、第２のデータグループに対して選択された分離基準を使用することにより生じる最高のコスト削減が、第３のデータグループに対して選択される分離基準を使用することにより得られる最高のコスト削減と比較される。例えば、その比較に基づいて、第２のデータグループに対して選択された分離基準を使用することにより生じる最高のコスト削減は、第３のデータグループに対して選択された分離基準を使用することにより生じる最高コスト削減よりも大きいという判定がなされ得る。
【００７５】
７１０において、第２のデータグループに対して選択された分離基準を使用することにより生じる最高のコスト削減が第２のデータグループに対して選択された分離基準を使用することにより生じる最高のコスト削減よりも大きいという判定に応答して、第２のデータグループは分離され得る。例えば、第２のデータグループは、第２のデータグループに対して選択された分離基準を用いて、第４のデータグループと第５のデータグループとに分離され得る。第２のデータグループを分離することは、コンテキストツリー内の第４のデータグループを表すノードを生成すること、コンテキストツリー内の第５のデータグループを表すノードを生成することをさらに含み得る。
【００７６】
７１２において、第１、第２、第３、第４、および第５のデータグループを表すノードを含むコンテキストツリーが生成される。コンテキストツリーを生成することは、上記のノードを生成することを含み得る。例えば、第１のデータグループを表すノードは、第１のデータグループを第２および第３のデータグループに分離する際に、または分離する前に生成されない場合がある。同様に、第４のデータグループを表すノードは、第２のデータグループを第４および第５のデータグループに分離する際に、または分離する前に生成されない場合がある。代わりに、これらのノードはすべて、データグループの分離が完了した後、同時に、またはほぼ同時に生成され得る。あるいは、コンテキストツリーを生成することは、すでに生成されたノードを（例えば、データグループのそれぞれの分離の際に、または前に）コンテキストツリーに関連付けることを含み得る。
【００７７】
いくつかの実装形態では、技術７００は、第１のデータグループを第２および第３のデータグループに分離する前に、第２および第３のデータグループをエントロピーコーディングするための合計コストが、第１のデータグループをエントロピーコーディングするためのコストよりも小さいかどうかを判定することを含み得る。例えば、コンテキスト情報の値に対して適用する分離基準を判定することは、第１のデータグループ、第２のデータグループ、および第３のデータグループの各々をエントロピーコーディングするコストを計算することを含み得る。次いで、第１のデータグループをエントロピーコーディングするためのコストと、第２および第３のデータグループをエントロピーコーディングするための合計コストとの間の比較が実行され得る。例えば、ノードによって表されるデータグループをエントロピーコーディングするための合計コストが、それらのノードを生成するために分離されるデータグループをエントロピーコーディングするためのコストよりも小さくないという判定がなされた場合、それらのノードは生成されない場合がある。
【００７８】
いくつかの実装形態では、第１のデータグループをエントロピーコーディングするためのコストと第２および第３のデータグループをエントロピーコーディングするための合計コストとの比較は、ノードが、データグループの分離の一部として生成された後に実行され得る。例えば、新しく生成されたノードによって表されるデータグループをエントロピーコーディングするための合計コストが、それらのノードを生成するために分離されたデータグループをエントロピーコーディングするためのコストよりも小さくないという判定がなされた場合、それらの新たに生成されたノードは、コンテキストツリーから除去され得る。
【００７９】
いくつかの実装形態では、データグループは、コンテキスト情報の値に分離基準を適用することから生じるコスト削減の量に基づいて、２つ以上のデータグループに分離される。例えば、データグループの分離は、最高の候補コスト削減が削減閾値を満たしているという判定に応答し得る。削減閾値は、整数、浮動小数点数、またはブロックに関連するシンタックス要素をコーディングするためのコストの最小減少を表す他の値であり得る。その最小減少が、コンテキスト情報の値への分離基準の適用により満たされない場合、データグループは分離されない可能性がある。例えば、削減閾値は、ブロックに関連するシンタックス要素のコーディング効率を改善することなく計算リソースが消費されるのを防ぐために使用され得る。
【００８０】
次に、図８〜図９を参照して、コンテキストツリーを用いてシンタックス要素をコーディングするためのシステムが説明される。図８〜図９に示されるシステムは、図６に示される技術６００、または図７に示される技術７００の一方または両方のすべてまたは一部を使用することを含み得る。例えば、システムは、技術６００または技術７００の一方または両方のすべてまたは一部を実行するために使用されるハードウェアおよび／またはソフトウェアコンポーネントを表し得る。
【００８１】
図８は、ビデオフレームの現在のブロックに関連するシンタックス要素を符号化するためのシステムのブロック図である。シンタックス要素を符号化するためのシステムは、例えば、図４に示される符号化器４００などの符号化器によって、またはそれを用いて実装され得る。システムは、以前にコーディングされたシンタックス要素８０２に対応するコンテキスト情報８００を含む。コンテキスト情報８００は、符号化器による使用のために定義されたコンテキスト情報の１つまたは複数のセットであり得る。コンテキスト情報８００は、セットのコンテキスト情報の値に基づいて生成、受信、またはそうでなければ識別されるコンテキストベクトルを含み得る。シンタックス要素８０２は、符号化されるブロックに関連するシンタックス要素である。
【００８２】
コンテキスト情報８００および以前にコーディングされたシンタックス要素８０２は、それぞれコンテキストキャッシュ８０４およびシンタックス要素キャッシュ８０６にキャッシュされる。次いで、コンテキストキャッシュ８０４およびシンタックス要素キャッシュ８０６に格納されたデータは、コンテキストツリー８０８を生成するための入力として使用される。例えば、コンテキスト情報８００に含まれるコンテキストベクトルは、コンテキストキャッシュ８０４にキャッシュされ、その後、コンテキストツリー８０８を生成するように構成されたソフトウェアコンポーネントによって受信され得る。例えば、コンテキストベクトルに含まれるコンテキスト情報の値は、符号化器が利用可能な分離基準とともに使用されて、シンタックス要素キャッシュ８０６内のシンタックス要素の１つを符号化するための最低コストに基づいてコンテキストツリー８０８を生成することができる。コンテキストツリー８０８が生成された後、確率モデル８１０は、コンテキストツリー内のそれぞれのリーフノードについて、それらのリーフノードによって表されるデータグループに基づいて推定され得る。確率モデルは、入来するシンタックス要素（例えば、コンテキストツリー８０８を生成するために使用されるシンタックス要素８０２が、ビデオフレームの第１のブロックに関連する場合などの、そのビデオフレームの第２のブロックに関連するシンタックス要素）を符号化するために使用される。例えば、以前にコーディングされたシンタックス要素８０２は、ビデオフレームの第１のブロックに関連する第１のセットのシンタックス要素を指し、入来するシンタックス要素は、符号化されるべき現在のブロックなどの、ビデオフレームの第２のブロックに関連する第２のセットのシンタックス要素を指し得る。入来するシンタックス要素を符号化するために、その入来するシンタックス要素に対応するコンテキスト情報（例えば、コンテキスト情報８００の）が識別され得る。次に、そのコンテキスト情報を適用して、その入来するシンタックス要素を符号化するためのコストが最も低くなるコンテキストツリー８０８のノードを識別することができる。次に、コンテキストツリー８０８のその識別されたノードに関連する確率モデル８１０が識別され得る。確率モデル８１０は、符号化器に利用可能な異なるコンテキスト情報についての確率の確率テーブルに格納された複数の確率モデルのうちの１つであり得る。確率モデル８１０を識別することは、例えば、コンテキストツリー８０８の識別されたノードに関連する情報を用いて、確率テーブルを照会することを含み得る。
【００８３】
従って、符号化されるべき入来するシンタックス要素に対応するコンテキスト情報は、コンテキストツリー８０８に渡されて、確率モデル８１０を要求するか、さもなければ識別する。次に、確率モデル８１０は、算術コーダ８１２に渡される。算術コーダ８１２は、確率モデル８１０の確率を用いて算術コーディングを実行するように構成されたソフトウェアモジュールまたは同様のコンポーネントであり得る。入来するシンタックス要素も算術コーダ８１２に渡される。次いで、算術コーダ８１２は、確率モデル８１０に従って入来するシンタックス要素をエントロピー符号化する。算術コーダ８１２によるエントロピー符号化の結果として、符号化されたブロック８１４が生成される。符号化されたブロック８１４は、符号化された形式の入来するシンタックス要素を含む。符号化ブロック８１４は、図４に示される圧縮されたビットストリーム４２０などの符号化されたビットストリームに含まれてもよい。
【００８４】
コンテキストキャッシュ８０４およびシンタックス要素キャッシュ８０６は、シンタックス要素８０２および符号化された対応するコンテキスト情報８００を格納することができる。コンテキストキャッシュ８０４およびシンタックス要素キャッシュ８０６は、コンテキストツリー８０８を生成するために使用され得る。コンテキストキャッシュ８０４およびシンタックス要素キャッシュ８０６は、後続のセットのシンタックス要素が受信されてシンタックス要素キャッシュ８０６にキャッシュされるか、そうでなければ符号化のために識別される場合に、既存のコンテキストツリー８０４を更新するために用いられ得る。シンタックス要素キャッシュ８０６は、シンタックス要素８０２、入来するシンタックス要素、および／または符号化された他のセットのシンタックス要素を格納するためのキャッシュであってよい。例えば、後続のセットのシンタックス要素は、シンタックス要素キャッシュ８０６に格納されたシンタックス要素と比較され得る。シンタックス要素キャッシュ８０６に格納された情報との一致が判定された場合、コンテキストツリー８０８は、修正なしで使用され得る。
【００８５】
図９は、符号化されたビデオフレームの符号化されたブロックに関連する符号化されたシンタックス要素を復号化するためのシステムのブロック図である。符号化されたシンタックス要素を復号化するためのシステムは、例えば、図５に示される復号化器５００などの復号化器によって、またはそれを用いて実装され得る。符号化されたビットストリーム９００は、ビデオストリームを表し、ビデオストリームの符号化されたブロックを含む。例えば、符号化されたビットストリーム９００は、図４に示される圧縮されたビットストリーム４２０であってよい。符号化されたビットストリーム９００の符号化されたブロックは、例えば、図８に示される符号化されたブロック８１０であってよい。
【００８６】
システムは、以前にコーディングされたシンタックス要素９０４に対応するコンテキスト情報９０２を使用する。コンテキスト情報９０２は、復号化器による使用のために定義された１つまたは複数のセットのコンテキスト情報であり得る。コンテキスト情報９０２および以前にコーディングされたシンタックス要素９０４は、それぞれコンテキストキャッシュ９０６およびシンタックス要素キャッシュ９０８にキャッシュされる。コンテキストキャッシュ９０６およびシンタックス要素キャッシュ９０８に格納されたデータは、コンテキストツリー９１０を生成するための入力として使用され得る。例えば、コンテキスト情報９０２は、セットのコンテキスト情報の値に基づいて、生成、受信、またはそうでなければ識別されるコンテキストベクトルを含み得る。例えば、コンテキストベクトルは、符号化器から受信され得る。コンテキストベクトルは、コンテキストキャッシュ９０６にキャッシュされる。シンタックス要素９０４は、コンテキストツリー９１０を生成するためにコンテキスト情報９０２とともに使用される以前にコーディングされたシンタックス要素である。コンテキストツリー９１０は、図８に示されるコンテキストツリー８０８であってよい。例えば、コンテキストツリー９１０は、コンテキストツリー８０８が生成されたのと同じ方法で生成され得る。別の例では、コンテキストツリー８０８は、コンテキストツリー９１０としてシンタックス要素を復号化する際の使用のために、復号化器へ通信され得る。次に、生成されたコンテキストツリー９１０を用いて、入来するシンタックス要素（例えば、コンテキストツリー９１０を生成するために使用されるシンタックス要素９０４が、符号化されたビデオフレームの第１の符号化されたブロックに関連する場合などの、その符号化されたビデオフレームの第２の符号化されたブロックに関連するシンタックス要素）を復号化するための確率モデルを識別する。例えば、以前にコーディングされたシンタックス要素９０４は、ビデオフレームの第１のブロックに関連する第１のセットのシンタックス要素を指し、入来するシンタックス要素は、復号化されるべき符号化されたブロックなどの、ビデオフレームの第２のブロックに関連する第２のセットのシンタックス要素を指し得る。
【００８７】
確率モデル９１２は、図８に示される確率モデル８１０に関して上述したのと同じ方法などで（例えば、復号化されるべき入来するシンタックス要素に対応するコンテキスト情報をコンテキストツリー９１０に渡して、確率モデル９１２を識別することにより）、コンテキストツリー９１０に基づいて識別される。次に、確率モデル９１２は、算術コーダ９１４に渡され、入来するシンタックス要素を復号化する。例えば、算術コーダ９１４は、確率モデル９１２の確率を用いて、入来するシンタックス要素をエントロピー復号化するように構成されたソフトウェアモジュールまたは同様のコンポーネントであり得る。復号化されたブロック９１６は、算術コーダ９１４が確率モデル９１２の確率を用いて入来するシンタックス要素をエントロピー復号化することに応答して生成される。次に、復号化されたブロック９１６は、例えば図５に示される出力ビデオストリーム５１６などのビデオストリームの一部として出力され得る。
【００８８】
コンテキストキャッシュ９０６およびシンタックス要素キャッシュ９０８は、シンタックス要素９０４および復号化された対応するコンテキスト情報９０２を格納することができる。コンテキストキャッシュ９０６およびシンタックス要素キャッシュ９０８は、コンテキストツリー９１０を生成するために使用され得る。コンテキストキャッシュ９０６およびシンタックス要素キャッシュ９０８は、後続のセットの符号化されたシンタックス要素が受信されてシンタックス要素キャッシュ９０８にキャッシュされるか、そうでなければ復号化のために識別される場合に、既存のコンテキストツリー９１０を更新するために用いられ得る。シンタックス要素キャッシュ９０８は、シンタックス要素９０４、入来するシンタックス要素、および／または他のセットの符号化されたシンタックス要素を、それらが復号化される前に格納するためのキャッシュであってよい。例えば、後続のセットの符号化されたシンタックス要素は、シンタックス要素キャッシュ９０８に格納された符号化されたシンタックス要素と比較され得る。シンタックス要素キャッシュ９０８に格納された情報との一致が判定された場合、コンテキストツリー９１０は、修正なしで使用され得る。
【００８９】
次に、図１０Ａ〜図１１を参照すると、例示的なコンテキストツリーの生成が説明されている。図１０Ａ〜図１１に示されるように生成された３つの例示的なコンテキストツリーは、図６に示される技術６００または図７に示される技術７００の一方または両方のすべてまたは一部を実行することによって生成され得る。さらに、図１０Ａ〜図１１に示されるように生成された例示的なコンテキストツリーは、図８〜図９に示されるシステムの一方または両方を用いて生成され得る。例えば、例示的なコンテキストツリーは、図８に示されるシステムを使用する符号化器、または図９に示されるシステムを使用する復号化器によって生成され得る。符号化器または復号化器は、例えば、技術６００に基づいて、シンタックス要素をコーディングする技術の一部としてツリーを生成することができる。あるいは、符号化器または復号化器は、例えば、技術７００に基づいて、シンタックス要素のコーディングとは無関係にツリーを生成することができる。
【００９０】
図１０Ａは、コンテキストツリーを生成するための第１の段階の例を示す図である。例えば、図１０Ａは、例示的なコンテキストツリーの第１のレベルの生成を示す。ノード１０００は、符号化または復号化されるべきブロックに関連するシンタックス要素のすべてを含むデータグループを表すリーフノードである。ノード１０００によって表されるデータグループは、コンテキスト情報の値に対して分離基準を適用することにより、ノード１００２およびノード１００４によって表されるデータグループに分離され得る。上述のように、ノード１０００の分離をもたらす特定の分離基準およびコンテキスト情報の値は、コンテキスト情報の異なる値に対する異なる分離基準の適用に基づいて判定される候補コスト削減に基づいて判定され得る。ノード１０００は、コンテキストベクトルの［０］インデックスに位置するコンテキスト情報の値に、３よりも大きいという分離基準を適用することにより分離される。
【００９１】
図１０Ｂは、コンテキストツリーを生成するための第２の段階の例を示す図である。例えば、図１０Ｂは、例示的なコンテキストツリーの第２のレベルの生成を示す。ノード１００２および１００４は、図１０Ａに示された第１の段階においてノード１０００によって表されるデータグループの分離に応答して生成される。ノード１０００によって表されるデータグループは、ノード１００２および１００４によって表されるデータグループに含まれるシンタックス要素をコーディングするための合計コストが、ノード１０００によって表されるデータグループに含まれるシンタックス要素をコーディングするためのコストよりも少ないという判定に応答して、ノード１００２および１００４によって表されるデータグループに分離される。
【００９２】
ノード１００２および１００４はリーフノードである。ノード１０００は、ノード１００２および１００４の生成に応答して非リーフノードになる。ノード１００２は、符号化または復号化されるべきブロックに関連するシンタックス要素のうちのいくつかを含むデータグループを表す。ノード１００４は、これらのシンタックス要素の残りを含むデータグループを表す。ノード１００２によって表されるデータグループは、ノード１００６によって表されるデータグループと、ノード１００８によって表されるデータグループとに分離されることが可能である。ノード１００４によって表されるデータグループは、ノード１０１０によって表されるデータグループと、ノード１０１２によって表されるデータグループとに分離されることが可能である。
【００９３】
分離基準は、ノード１００２によって表されるデータグループを分離するために選択される。その分離基準は、２による剰余が１よりも小さいという表現を含み、コンテキストベクトルの［２］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１００２にその分離基準を使用することから生じるコスト削減は２０である。異なる分離基準が、ノード１００４によって表されるデータグループを分離するために選択される。その分離基準は、２よりも小さいという表現を含み、コンテキストベクトルの［１］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１００４にその分離基準を使用することによるコスト削減は１５である。従って、ノード１００２によって表されるデータグループをノード１００６および１００８によって表されるデータグループに分離することから生じるコスト削減は、ノード１００４によって表されるデータグループをノード１０１０および１０１２によって表されるデータグループに分離することから生じるコスト削減よりも大きい。
【００９４】
図１０Ｃは、コンテキストツリーを生成するための第３の段階の例を示す図である。例えば、図１０Ｃは、例示的なコンテキストツリーの第３のレベルの生成を示す。ノード１００６および１００８は、図１０Ｂに示された第２の段階においてノード１００２によって表されるデータグループの分離に応答して生成される。ノード１００２によって表されるデータグループは、ノード１００６および１００８によって表されるデータグループに含まれるシンタックス要素をコーディングするための合計コストが、ノード１００２によって表されるデータグループに含まれるシンタックス要素をコーディングするためのコストよりも少ないという判定に応答して、ノード１００６および１００８によって表されるデータグループに分離される。
【００９５】
ノード１００６および１００８はリーフノードである。ノード１００２は、ノード１００６および１００８の生成に応答して非リーフノードになる。ノード１００６は、ノード１００２によって表されるデータグループに含まれるシンタックス要素のいくつかを含むデータグループを表す。ノード１００８は、これらのシンタックス要素の残りを含むデータグループを表す。ノード１００６によって表されるデータグループは、ノード１０１４によって表されるデータグループと、ノード１０１６によって表されるデータグループとに分離されることが可能である。ノード１００８によって表されるデータグループは、ノード１０１８によって表されるデータグループと、ノード１０２０によって表されるデータグループとに分離されることが可能である。
【００９６】
分離基準は、ノード１００６によって表されるデータグループを分離するために選択される。その分離基準は、残りがマイナス１に等しいという表現を含み、コンテキストベクトルの［１］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１００６にその分離基準を使用することから生じるコスト削減は７である。異なる分離基準が、ノード１００８によって表されるデータグループを分離するために選択される。その分離基準は、１より大きいという表現を含み、コンテキストベクトルの［０］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１００８にその分離基準を使用することによるコスト削減は１８である。従って、ノード１００８によって表されるデータグループをノード１０１８および１０２０によって表されるデータグループに分離することから生じるコスト削減は、リーフノード１００６によって表されるデータグループをノード１０１４および１０１８によって表されるデータグループに分離することから生じるコスト削減よりも大きく、リーフノード１００４によって表されるデータグループをノード１０１０および１０１２によって表されるデータグループに分離することから生じるコスト削減よりも大きい。
【００９７】
図１０Ｄは、コンテキストツリーを生成するための第４の段階の例を示す図である。例えば、図１０Ｄは、例示的なコンテキストツリーの第４のレベルの生成を示す。ノード１０１８および１０２０は、図１０Ｃに示された第３の段階においてノード１００８によって表されるデータグループの分離に応答して生成される。ノード１００８によって表されるデータグループは、ノード１０１８および１０２０によって表されるデータグループに含まれるシンタックス要素をコーディングするための合計コストが、ノード１００８によって表されるデータグループに含まれるシンタックス要素をコーディングするためのコストよりも少ないという判定に応答して、ノード１０１８および１０２０によって表されるデータグループに分離される。
【００９８】
ノード１０１８および１０２０はリーフノードである。ノード１００８は、ノード１０１８および１０２０の生成に応答して非リーフノードになる。ノード１０１８は、ノード１００８によって表されるデータグループに含まれるシンタックス要素のいくつかを含むデータグループを表す。ノード１０２０は、これらのシンタックス要素の残りを含むデータグループを表す。ノード１０１８によって表されるデータグループは、ノード１０２２によって表されるデータグループと、ノード１０２４によって表されるデータグループとに分離されることが可能である。ノード１０２０によって表されるデータグループは、ノード１０２６によって表されるデータグループと、ノード１０２８によって表されるデータグループとに分離されることが可能である。
【００９９】
分離基準は、ノード１０１８によって表されるデータグループを分離するために選択される。その分離基準は、残りが１よりも小さいという表現を含み、コンテキストベクトルの［１］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１０１８にその分離基準を使用することから生じるコスト削減は６である。異なる分離基準が、ノード１０２０によって表されるデータグループを分離するために選択される。その分離基準は、２による剰余が１に等しいという表現を含み、コンテキストベクトルの［２］インデックスに配置されたコンテキスト情報の値に対して適用される。ノード１０２０にその分離基準を使用することによるコスト削減は３である。
【０１００】
従って、ノード１０１８によって表されるデータグループをノード１０２２および１０２４によって表されるデータグループに分離することから生じるコスト削減は、ノード１０２０によって表されるデータグループをノード１０２６および１０２８によって表されるデータグループに分離することから生じるコスト削減よりも大きい。しかしながら、ノード１０２２および１０２４によって表されるデータグループに含まれるシンタックス要素をコーディングするための合計コストが、ノード１０１８によって表されるデータグループに含まれるシンタックス要素をコーディングするためのコストよりも著しく少ないわけではないという判定がなされ得る。その判定の結果として、ノード１０１８によって表されるデータグループは分離されず、例示的なコンテキストツリーの第５のレベルにおいてノードは生成されない。
【０１０１】
図１１は、コンテキストツリー１１００の一例を示す図である。コンテキストツリー１１００は、図１０Ａ〜図１０Ｄに示される第１、第２、第３、および第４の段階で生成されたノード１０００、１００２、１００４、１００６、１００８、１０１０、１０１２、１０１８、および１０２０を含むバイナリツリーである。例えば、上記では説明しなかったが、ノード１０１０および１０１２は、ノード１０１０および１０１２によって表されるデータグループに含まれるシンタックス要素をコーディングするための合計コストが、ノード１００４によって表されるデータグループに含まれるシンタックス要素をコーディングするためのコストよりも小さいという判定に応答して生成され得る。
【０１０２】
コンテキストツリー１１００は、シンタックス要素の後続のコーディングのために使用され得る。あるいは、コンテキストツリー１１００は、さらなる修正なしにシンタックス要素をコーディングするために使用される前にトレーニングされてもよい。例えば、コンテキストツリー１１００は、Ｎ個のシンタックス要素に基づいて生成された可能性がある。別のＮ個のシンタックス要素を用いてコンテキストツリー１１００をトレーニングし、これらのＮ個のシンタックス要素のコーディング効率が最初のＮ個のシンタックス要素よりも改善されていることを検証することができる。その後、コンテキストツリー１１００は、さらなる修正なしに後続のシンタックス要素のさらなるコーディングのために使用され得る。
【０１０３】
図１１に示されるコンテキストツリー１１００の実装形態は、図示および説明されたものよりも追加的な機能、少ない機能、または異なる機能を含むことができる。いくつかの実装形態では、コンテキストツリーは非バイナリツリーであり得る。例えば、コンテキスト情報に適用される分離基準は、各ブランチが分離基準を満たすための可能な値の範囲に対応する場合などに、コンテキストツリー内の複数のブランチを返し得る。例えば、分離基準のバイナリバージョンは、コンテキストベクトルの第１のインデックスのコンテキスト情報の値が３未満かどうかを問うことができる。ツリーは、その分離基準に基づいて２つのブランチを含むことができ、１つのブランチは、そのコンテキスト情報の値が３未満のデータグループを表すノードにつながり、他方のブランチは、そのコンテキスト情報の値が３以上であるデータグループを表すノードにつながる。
【０１０４】
しかしながら、その分離基準の非バイナリバージョンは、コンテキストベクトルの第１のインデックスにあるコンテキスト情報の値が何であるかを問うことができる。例えば、その分離基準に基づく第１のブランチは、そのコンテキスト情報の値が０から１であるデータグループを表すノードにつながり、他のそのようなブランチは、そのコンテキスト情報の値が２から３であるデータグループを表すノードにつながり、他のそのようなブランチは、そのコンテキスト情報の値が４から５であるデータグループを表すノードにつながり得る。いくつかの実装形態では、コンテキスト情報の値への非バイナリ分離基準の適用から生じるブランチの最大数に、構成可能または構成不可能な制限が存在し得る。
【０１０５】
上述の符号化および復号化の態様は、符号化および復号化技術のいくつかの例を示す。しかしながら、符号化および復号化は、特許請求の範囲で使用されるそれらの用語として圧縮、圧縮解除、変換、または任意の他の処理またはデータの変更を意味し得ることを理解されたい。
【０１０６】
本明細書では、「例」という用語は、例、事例、または実例を意味するものとして使用されている。本明細書において「例」として記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」という言葉の使用は、具体的な方法で概念を提示することを意図している。本出願で使用される場合、用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。すなわち、他に明記されていない限り、または文脈によって明らかに別の形で示されない限り、「ＸはＡまたはＢを含む」という表現は、任意の自然な包含的置換（ｎａｔｕｒａｌｉｎｃｌｕｓｉｖｅ ｐｅｒｍｕｔａｔｉｏｎｓ）を意味することを意図する。即ち、「ＸはＡまたはＢを含む」は、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合のいずれにおいても満足される。さらに、本出願および添付の特許請求の範囲で使用される冠詞「ａ」および「ａｎ」は、他に明記されない限り、または単数形に向けられる文脈により明らかに示されない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。さらに、本開示において「実装形態」または「一実装形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実装形態を意味することを意図するものではない。
【０１０７】
送信局１０２および／または受信局１０６（ならびに、符号化器４００および復号化器５００が含む、それに記憶され、かつ／またはそれによって実行されるアルゴリズム、方法、命令など）の実装形態は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理アレイ、光プロセッサ、プログラマブル論理コントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。用語「信号」および「データ」は互換的に使用される。さらに、送信局１０２および受信局１０６の一部は、必ずしも同じ方法で実装される必要はない。
【０１０８】
さらに、一態様では、例えば、送信局１０２または受信局１０６は、実行時に、本明細書に記載されたそれぞれの方法、アルゴリズム、および／または命令のうちの任意のものを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを用いて実装され得る。加えて、または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ／プロセッサを利用することができる。
【０１０９】
送信局１０２および受信局１０６は、例えば、ビデオ会議システム内のコンピュータ上で実装され得る。あるいは、送信局１０２はサーバ上で実装されてもよく、受信局１０６はサーバとは別のハンドヘルド通信デバイスのようなデバイス上で実装されてもよい。この場合、送信局１０２は、符号化器４００を用いて、コンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。通信デバイスは、復号化器５００を用いて符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上に局所的に格納されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号化することができる。他の適切な送信および受信の実装方式が利用可能である。例えば、受信局１０６は、ポータブル通信デバイスではなく、一般に固定のパーソナルコンピュータであってもよく、かつ／または符号化器４００を含むデバイスは、復号化器５００を含んでもよい。
【０１１０】
さらに、本開示の実装形態の全部または一部は、例えばコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって、またはそれに関連して使用するために、プログラムを有形的に収容、格納、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【０１１１】
上述した実施形態、実装形態、および態様は、本開示の理解を容易にするために記載されており、本開示を限定するものではない。一方、本開示は、添付の特許請求の範囲内に含まれる様々な改変および均等の構成を包含することを意図しており、その範囲は、すべてのそのような改変および均等の構成を包含するように法律で許容されるような最も広い解釈が与えられるべきである。
【図１】
0006744505.tif 000004
【図２】
0006744505.tif 000005
【図３】
0006744505.tif 000006
【図４】
0006744505.tif 000007
【図５】
0006744505.tif 000008
【図６】
0006744505.tif 000009
【図７】
0006744505.tif 000010
【図８】
0006744505.tif 000011
【図９】
0006744505.tif 000012
【図１０】
0006744505.tif 000013
【図１１】
0006744505.tif 000014