(57)【特許請求の範囲】
【請求項１】
ビデオデータのスライス中のブロックをコーディングすることであって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングすることと、
前記ブロックに対応するビットをバッファに記憶することと、
前記スライス中の前記ブロックの位置を示す情報を決定することと、
前記バッファがオーバフローまたはアンダーフローしないことを確実にするレート制御のために前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定することと、ここにおいて前記バッファの前記満杯は前記ビットの記憶のために使用されている前記バッファの容量のパーセンテージである、
前記スライス中のある固定数のブロックに対応するスレッショルド位置を決定することと、ここにおいて前記スレッショルド位置に到達する前の第１の位置においてコーディングされた各ブロックは、第１の値に等しい一時的最大バッファサイズを有し、前記スレッショルド位置に到達した後の第２の位置においてコーディングされた各ブロックは、各ブロック毎に減少する調整可能値に等しい一時的最大バッファサイズを有し、前記調整可能値は前記第１の値未満であり、前記一時的最大バッファサイズは、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示す、
を備える、ディスプレイリンクビデオ圧縮の方法。
【請求項２】
前記バッファに記憶されたビットの数を決定することをさらに備え、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、請求項１に記載の方法。
【請求項３】
前記バッファの満杯を決定することは、前記一時的最大バッファサイズで、前記バッファに記憶されたビットの前記数を割り算することを備える、請求項２に記載の方法。
【請求項４】
前記レート制御のために、前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとをさらに備える、請求項１に記載の方法。
【請求項５】
前記第１の値は前記バッファの前記最大容量に等しい、請求項４に記載の方法。
【請求項６】
前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの数が前記望ましい最大数に等しくなるように、前記スレッショルド位置に到達した後に前記第２の位置においてコーディングされた各ブロック毎に前記調整可能値を減少させることをさらに備える、請求項５に記載の方法。
【請求項７】
前記スライス中の前記ブロックの前記位置を示す前記情報を決定することは、コーディング済である前記スライス中のブロックの数を決定することを備える、請求項１に記載の方法。
【請求項８】
ビデオデータのスライス中のブロックをコーディングするように構成され、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、プロセッサと、
前記プロセッサに結合され、前記ブロックに対応するビットを記憶するように構成されるバッファと
を備え、
前記プロセッサは、前記スライス中の前記ブロックの位置を示す情報を決定し、前記バッファがオーバフローまたはアンダーフローしないことを確実にするレート制御のために前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定することと、ここにおいて前記バッファの前記満杯は前記ビットの記憶のために使用されている前記バッファの容量のパーセンテージである、
前記スライス中のある固定数のブロックに対応するスレッショルド位置を決定することと、ここにおいて前記スレッショルド位置に到達する前の第１の位置においてコーディングされた各ブロックは、第１の値に等しい一時的最大バッファサイズを有し、前記スレッショルド位置に到達した後の第２の位置においてコーディングされた各ブロックは、各ブロック毎に減少する調整可能値に等しい一時的最大バッファサイズを有し、前記調整可能値は前記第１の値未満であり、前記一時的最大バッファサイズは、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示す、
を行うようにさらに構成される、ディスプレイリンクビデオ圧縮のための装置。
【請求項９】
前記プロセッサは、前記バッファに記憶されたビットの数を決定するようにさらに構成され、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、請求項８に記載の装置。
【請求項１０】
前記バッファの満杯を決定することは、前記一時的最大バッファサイズで、前記バッファに記憶されたビットの前記数を割り算することを備える、請求項９に記載の装置。
【請求項１１】
前記プロセッサは、前記レート制御のために、前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定するようにさらに構成される、請求項８に記載の装置。
【請求項１２】
前記第１の値は前記バッファの前記最大容量に等しい、請求項１１に記載の装置。
【請求項１３】
前記プロセッサが、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの数が前記望ましい最大数に等しくなるように、前記スレッショルド位置に到達した後に前記第２の位置においてコーディングされた各ブロック毎に前記調整可能値を減少させるようにさらに構成される、請求項１２に記載の装置。
【請求項１４】
前記スライス中の前記ブロックの前記位置を示す前記情報を決定することは、コーディング済である前記スライス中のブロックの数を決定することを備える、請求項１３に記載の装置。
【請求項１５】
非一時的なコンピュータ可読記憶媒体であって、
実行されたときに、デバイスのプロセッサに、
ビデオデータのスライス中のブロックをコーディングすることであって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングすることと、
前記ブロックに対応するビットをバッファに記憶することと、
前記スライス中の前記ブロックの位置を示す情報を決定することと、
前記バッファがオーバフローまたはアンダーフローしないことを確実にするレート制御のために前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定することと、ここにおいて前記バッファの満杯は前記ビットの記憶のために使用されている前記バッファの容量のパーセンテージである、
前記スライス中のある固定数のブロックに対応するスレッショルド位置を決定することと、ここにおいて前記スレッショルド位置に到達する前の第１の位置においてコーディングされた各ブロックは、第１の値に等しい一時的最大バッファサイズを有し、前記スレッショルド位置に到達した後の第２の位置においてコーディングされた各ブロックは、各ブロック毎に減少する調整可能値に等しい一時的最大バッファサイズを有し、前記調整可能値は前記第１の値未満であり、前記一時的最大バッファサイズは、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示す、
を行わせる、そこに記憶された命令を有する、非一時的なコンピュータ可読記憶媒体。
【請求項１６】
実行されたときに、前記バッファに記憶されたビットの数を決定することを前記プロセッサに行わせる、そこに記憶された命令をさらに有し、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、請求項１５に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記バッファの満杯を決定することは、前記一時的最大バッファサイズで、前記バッファに記憶されたビットの前記数を割り算することを備える、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
実行されたときに、前記レート制御のために、前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとを前記プロセッサに行わせる、そこに記憶された命令をさらに有する、請求項１５に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記第１の値は前記バッファの前記最大容量に等しい、請求項１８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
実行されたときに、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの数が前記望ましい最大数に等しくなるように基づいて、前記スレッショルド位置に到達した後に前記第２の位置においてコーディングされた各ブロック毎に前記調整可能値を減少させることを前記プロセッサに行わせる、そこに記憶された命令をさらに有する、請求項１９に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２１】
ビデオデータのスライス中のブロックをコーディングするための手段であって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングするための手段と、
前記ブロックに対応するビットをバッファに記憶するための手段と、
前記スライス中の前記ブロックの位置を示す情報を決定するための手段と、
前記バッファがオーバフローまたはアンダーフローしないことを確実にするレート制御のために前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定するための手段と、ここにおいて前記バッファの前記満杯は前記ビットの記憶のために使用されている前記バッファの容量のパーセンテージである、
前記スライス中のある固定数のブロックに対応するスレッショルド位置を決定するための手段と、ここにおいて前記スレッショルド位置に到達する前の第１の位置においてコーディングされた各ブロックは、第１の値に等しい一時的最大バッファサイズを有し、前記スレッショルド位置に到達した後の第２の位置においてコーディングされた各ブロックは、各ブロック毎に減少する調整可能値に等しい一時的最大バッファサイズを有し、前記調整可能値は前記第１の値未満であり、前記一時的最大バッファサイズは、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示す、
を備える、ビデオコーディングデバイス。
【請求項２２】
前記バッファに記憶されたビットの数を決定するための手段をさらに備え、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、請求項２１に記載のビデオコーディングデバイス。
【請求項２３】
前記バッファの満杯を決定することは、前記一時的最大バッファサイズで、前記バッファに記憶されたビットの前記数を割り算することを備える、請求項２２に記載のビデオコーディングデバイス。
【請求項２４】
前記レート制御のために前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとをさらに備える、請求項２１に記載のビデオコーディングデバイス。
【請求項２５】
前記第１の値は前記バッファの前記最大容量に等しい、請求項２４に記載のビデオコーディングデバイス。
【請求項２６】
前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの数が前記望ましい最大数に等しくなるように、前記スレッショルド位置に到達した後に前記第２の位置においてコーディングされた各ブロック毎に前記調整可能値を減少させるための手段をさらに備える、請求項２５に記載のビデオコーディングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示はビデオコーディングおよび圧縮の分野に関し、特にディスプレイリンクビデオ圧縮のような、ディスプレイリンク上の送信のためのビデオ圧縮に関する。
【背景技術】
【０００２】
[0002]  デジタルビデオ機能は、デジタルテレビ、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップモニタ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレイヤ、ビデオゲームデバイス、ビデオゲーム卓、セルラ式または衛星無線電話、ビデオテレビ会議デバイス等を含む広範囲のディスプレイに組み込まれることができる。ディスプレイリンクは、ディスプレイを適切なソースデバイスに接続するために使用される。ディスプレイリンクの帯域幅要求はディスプレイの解像度に比例し、それゆえ高解像度ディスプレイは広帯域幅ディスプレイリンクを要求する。いくつかのディスプレイリンクは、高解像度ディスプレイをサポートする帯域幅を有しない。ビデオ圧縮は、下位帯域幅ディスプレイリンクを使用してデジタルビデオを高解像度ディスプレイに提供できるように帯域幅要求を低減するために使用され得る。
【０００３】
[0003]  他には、画素データに画像圧縮を利用することが試みられている。しかしながら、そのような様式はときどき視覚的に無損失でなかったり、従来のディスプレイ装置において実施することが難しく高価であったりし得る。
【０００４】
[0004]  ビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ： Video Electronics Standards Association）は、ディスプレイリンクビデオ圧縮の標準規格としてディスプレイストリームコンプレッション（ＤＳＣ：Display Stream Compression）策定した。ＤＳＣのようなディスプレイリンクビデオ圧縮技法は、数ある中で、視覚的に無損失である画質(すなわち、圧縮がアクティブであるとユーザが分からないような品質のレベルを有する映像)を提供するはずである。ディスプレイリンクビデオ圧縮技法はまた、従来のハードウェアでリアルタイムに実施することが容易で効果でない様式を提供するはずである。
【発明の概要】
【０００５】
[0005]  本開示のシステム、方法、およびデバイスは各々いくつかの革新的な様態を有し、これらのうちの何れも、ここに開示される望ましい属性を単独で担うものではない。
【０００６】
[0006]  ある態様では、ビデオデータのスライス中のブロックをコーディングすることであって、スライスがビデオデータの１つまたは複数のブロックを備える、コーディングすることと、ブロックに対応するビットをバッファに記憶することと、スライス中のブロックの位置を示す情報を決定することと、スライス中のブロックの位置に少なくとも部分的に基づいてバッファの満杯を決定することとを備える、ディスプレイリンクビデオ圧縮の方法が提供される。
【０００７】
[0007]  別の態様では、ディスプレイリンクビデオ圧縮のための装置が、ビデオデータのスライス中のブロックをコーディングするように構成され、スライスがビデオデータの１つまたは複数のブロックを備える、プロセッサと、ブロックに対応するビットを記憶するように構成されるバッファと、ビデオコーディングデバイスおよびバッファに動作的に結合されるプロセッサ
を備える。このプロセッサは、スライス中のブロックの位置を示す情報を決定し、スライス中のブロックの位置に少なくとも部分的に基づいてバッファの満杯を決定するようにさらに構成される。
【０００８】
[0008]  別の態様では、非一時的なコンピュータ可読記憶媒体が、実行されたときに、ビデオデータのスライス中のブロックをコーディングさせることであって、スライスがビデオデータの１つまたは複数のブロックを備える、コーディングすることと、ブロックに対応するビットをバッファに記憶することと、スライス中のブロックの位置を示す情報を決定することと、スライス中のブロックの位置に少なくとも部分的に基づいてバッファの満杯を決定することとをデバイスのプロセッサにさせる命令を含む。
【０００９】
[0009]  別の態様では、  ビデオデータのスライス中のブロックをコーディングするための手段であって、スライスがビデオデータの１つまたは複数のブロックを備える、コーディングするための手段と、ブロックに対応するビットをバッファに記憶するための手段と、スライス中のブロックの位置を示す情報を決定するための手段と、スライス中のブロックの位置に少なくとも部分的に基づいてバッファの満杯を決定するための手段とを備える、ビデオコーディングデバイスが提供される。
【図面の簡単な説明】
【００１０】
【図１Ａ】本開示に記載の態様に従う技法を利用し得るビデオエンコーディングおよびデコーディングシステムの例を示すブロック図である。
【図１Ｂ】本開示に記載の態様に従う技法を行い得るビデオエンコーディングおよびデコーディングシステムの他の例を示すブロック図である。
【図２Ａ】本開示に記載の態様に従う技法を実施し得るビデオエンコーダの例を示すブロック図である。
【図２Ｂ】本開示に記載の態様に従う技法を実施し得るビデオデコーダの例を示すブロック図である。
【図３】データのスライスを符号化する(encoding)ための例示的処理を示すグラフである。
【図４】スライスの符号化中にバッファ満杯（ＢＦ：buffer fullness）を調整するための例示的技法を示す。
【図５】バッファで一定ビットレート（ＣＢＲ：constant bit rate）出力を提供するための方法の例を示すフローチャートである。
【詳細な説明】
【００１１】
[0017]  一般に、本開示は、ディスプレイリンクビデオ圧縮で利用されるもののようなビデオ圧縮技法を向上させるための方法に関する。より具体的には、本開示は、ディスプレイリンクビデオ圧縮のためにバッファ（例えば、レートバッファ）の一定ビットレート（ＣＢＲ）出力および／または入力を提供するためのシステムおよび方法に関する。
【００１２】
[0018]  従来のディスプレイ技術において、ディスプレイリンクビデオ圧縮の一例である、ビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ）によってディスプレイストリームコンプレッション（ＤＳＣ）ｖ１．０ソリューションによって提供されるような３対１の圧縮は今後のモバイル市場要求、特に４Ｋ解像度(４Ｋとも称される)のような高解像度ディスプレイに関連する要求を追いやるには不十分であり得る。それゆえ、今後の要求に応えるために、４対１の圧縮およびその上を提供する次世代ＤＳＣ規格などへの編入のための方法体系を開発することが望ましい。
【００１３】
[0019]  このコンテキストにおいて、ＤＳＣ方法体系の性能を決定することにおいてレート制御を扱うことが望ましい。レート制御の１つの目的は、レート歪性能を最大化する一方でレートの瞬時および平均的制約を満足する、量子化パラメータ（ＱＰ：quantization parameter）、コーディングモードなどのような、コーディングパラメータのセットを決定することである。
【００１４】
[0020]  ビデオデータの各ブロックを符号化することで費やされるビット（すなわち、符号化のために利用されるビット）は、ブロックの特性（例えば、ビットのサイズ、数など）に基づいて実質的に変化し得る。このため、バッファが出力ビットストリームにおけるレート変動を平滑化するためにレート制御機構の一部として使用され得る。ＣＢＲバッファモデルでは、ビットが有線物理リンク上でのデータ送信中に一定レートでバッファから除去されることがある。このようなバッファモデルでは、エンコーダがバッファから除去されるビットに比べて多すぎるビットを追加した場合にバッファにおけるビットの数がバッファ容量を超過して、オーバーフローを引き起こすことがある。他方、エンコーダはアンダーフローを防止するために十分なレートでビットを追加すべきである。デコーダ側では、ビットが一定レートでバッファに追加され、デコーダが各ブロック毎に可変数のビットを除去する。適切な復号を確実にするため、バッファは圧縮されたビットストリームの復号中のどのポイントでもアンダーフローまたはオーバーフローすべきでない。
【００１５】
[0021]  変数BufferCurrentSizeはバッファ内に現在記憶されたビットの数を表し、変数BufferMaxSizeはバッファのサイズ（すなわち、容量）、すなわちバッファに記憶できるビットの総最大数を表すこととする。バッファの「満杯」（バッファ満杯（ＢＦ）とも称される）は以下の式１に示すように計算され得る。ＢＦは特定時点でビットの記憶のために使用されているバッファの容量のパーセンテージを表す。
BF = ((BufferCurrentSize * 100) / BufferMaxSize)    (式1)
または、
BF = (((BufferCurrentSize * 100 ) + (BufferMaxSize >> 1) )/ BufferMaxSize)     (式２)
を使用。
【００１６】
[0022]  しかしながら、ある実施形態では、ビデオデータのスライスの終わりで、すなわちスライス中の全ブロックのコーディング後にバッファ内に含まれた(すなわち、記憶された)ビットの数がBufferMaxSizeよりも少ないことが望ましい。変数maxBufferBitsAtSliceEndがスライスの終わりでバッファ内にあるビットの望ましい最大数を表すとする。一例において、 アンダーフローおよび／またはオーバーフローを防止するためには、スライスの終わりでバッファ内にあるビットの数がBufferMaxSize未満であり得るmaxBufferBitsAtSliceEndに等しいことが最適であり得る。 このような実施形態では、maxBufferBitsAtSliceEnd がスライスの終わりでＢＦを計算する際にBufferMaxSize の代わりに使用されることになり、上記の式１および／または式２が最適でなくなることになる。
【００１７】
[0023]  このような実施形態では、スライス中の所与のブロックのコーディング位置に依存して（すなわち、基づいて）ＢＦを調整することが望まれる。より正確には、ＢＦは、BufferCurrentSize = maxBufferBitsAtSliceEndである場合にスライスの終了でＢＦが１００％となる方式でスライス中のある固定数（すなわち、所定または構成可能数）のブロックをコーディングした後に一定レートで直線的に減少する。
【００１８】
[0024]  ある実施形態がＤＳＣ規格のコンテキストでここに記載される一方で、当業者はここに開示されたシステムおよび方法が何らかの適切なビデオコーディング規格に適用可能であることを理解するであろう。例えば、ここに開示された実施形態は、以下の標準規格、国際電気通信連合（ＩＴＵ）電気通信標準化部門（ＩＴＵ−Ｔ）Ｈ．２６１、国際標準化機構／国際電 気標準会議（ＩＳＯ／ＩＥＣ）動画専門家集団−１（ＭＰＥＧ−１）  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２  またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＵＴＵ−Ｔ  Ｈ．２６２  またはＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６４（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）、高効率ビデオコーディング（ＨＥＶＣ）、およびこうした標準規格に対する何らかの拡張、のうちの１つまたは複数に適用可能であり得る。また、この開示に記載された技法は今後開発される標準規格の一部となり得る。言い換えれば、この開示に記載の技法は以前開発されたビデオコーディング規格、現在開発中のビデオコーディング規格、および来るべきビデオコーディング規格に適用可能であり得る。
【００１９】
ビデオコーディング規格
[0025]  ビデオ画像、ＴＶ画像、静止画、またはビデオレコーダまたはコンピュータによって生成された画像のようなデジタルイメージは水平線および垂直線に並べられたサンプルまたは画素を含み得る。単一画像中の画素の数は、一般に何万である。各画素は、一般にルミナンス(luminance)およびクロミナンス(chrominance)情報を包含する。圧縮しないと、イメージエンコーダからイメージデコーダへ運ばれるべき純然たる量の情報がリアルタイム伝送を実行不可能にするはずである。伝送されるべき情報の量を削減するために、ＪＰＥＧ、ＭＰＥＧ、およびＨ．２６３規格のような多数の異なる圧縮方法が開発されてきた。
【００２０】
[0026]  ビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣＭＰＥＧ−４  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６４（ＩＳＯ／ＩＥＣＭＰＥＧ−４  ＡＶＣとしても知られる）、およびＨＥＶＣをこうした標準規格の拡張を含めて含む。
【００２１】
[0027]  加えて、ビデオコーディング規格、すなわちＤＳＣは、ＶＥＳＡによって開発されている。ＤＳＣ規格はディスプレイリンク上の伝送のためにビデオを圧縮できるビデオ圧縮規格である。ディスプレイの解像度の増大につれて、ディスプレイを駆動するために必要なビデオデータの帯域幅が同様に増大する。いくつかのディスプレイリンクはこうした解像度でビデオデータをディスプレイへ伝送するための帯域幅を持たないことがある。よって、ＤＳＣ規格は、ディスプレイリンク上で相互運用可能で視覚的に無損失な圧縮を規定している。
【００２２】
[0028]  ＤＳＣ規格は、Ｈ．２６４およびＨＥＶＣのような他のビデオコーディング規格とは異なっている。ＳＳＣはフレーム内(intra-frame)圧縮含むが、フレーム間(inter-frame)圧縮を含まず、時間的情報がビデオデータをコーディングする際にＤＳＣ規格によって使用され得ないことを意味する。対照的に、他のビデオコーディング規格はこれらのビデオコーディング技法においてフレーム間圧縮を採用し得る。
【００２３】
ビデオコーディングシステム
[0029]  新たなシステム、装置、および方法の様々な態様は、添付の図面を参照して以下でさらに十分に説明される。しかしながら、本開示は、多くの異なる形式で具現化され得、この本開示全体にわたって提示される任意の特定の構成または機能に限定されると解釈されるべきではない。むしろ、これらの態様は、この開示を徹底的かつ完全なものとし、本開示の範囲が当業者に十分に伝わるように、提供されるものである。本明細書における教示に基づいて、当業者は、本開示の範囲が、本開示の任意の他の態様とは独立して、または組み合わされて実施されようと、本明細書において開示される新たなシステム、装置、および方法の任意の態様をカバーするように意図されていることを理解すべきである。例えば、本明細書に記載された任意の数の態様を使用して、装置が実施され得る、または方法が実施され得る。加えて、本開示の範囲は、本明細書において記載されている開示の様々な態様に加えて、またはそれ以外の、他の構造、機能性、あるいは構造および機能性を使用して実施されるそのような装置または方法をカバーするように意図されている。本明細書において開示される任意の態様が、請求項の１つまたは複数の要素によって具現化され得ることが理解されるべきである。
【００２４】
[0030]  特定の態様がここに記載されたが、これらの態様の多くの変形および並べ替えが本開示の範囲内である。好ましい態様のいくつかの恩恵および利点が説明されるが、本開示の範囲は、特定の恩恵、使用、または目的に限定されることを意図しない。そうではなく、本開示の態様は、異なる無線技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であることが意図され、そのうちのいくつかは、図面および好ましい態様の下記の説明において、例として示される。詳細な説明および図面は単に、限定というよりはむしろ本開示の例示であり、本開示の範囲は、添付された特許請求の範囲およびそれらの同等物によって定義されている。
【００２５】
[0031]  添付の図面は例を例示している。添付の図面において参照番号で示された要素は、以下の記述において同様の参照番号で示された要素に対応する。本開示では、順序を示す言葉（例えば、「第１の」、「第２の」、「第３の」等）で始まる名称を有する要素は、必ずしも、その要素が特定の順序を持つことを含意していない。むしろ、そのような順序を示す言葉は単に、同じまたは同様のタイプの異なる要素を称するために使用され得る。
【００２６】
[0032]  図１Ａは、本開示に記載の態様に従う技術を利用し得るビデオエンコーディングシステムの例を示すブロック図である。ここで使用され記載されるように、「ビデオコーダ」または「コーダ」という用語は、概して、ビデオエンコーダおよびビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、概して、ビデオ符号化またはビデオ復号を指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本願に記載された態様はトランスコーダ（例えばビットストリームを復号し他のビットストリームを再符号化できるデバイス）およびミドルボックス（例えば、ビットストリームを変形、変換、および／またはさもなければ操作できるデバイス）のような他の関連デバイスに拡張され得る。
【００２７】
[0033]  図１Ａに示されるように、ビデオコーディングシステム１０は、宛先デバイス１４（すなわち、「ビデオコーディングデバイス１４」または「コーディングデバイス１４」）によって後の時期に復号されることになる符号化されたビデオデータを生成するソースデバイス１２（すなわち、「ビデオコーディングデバイス１２」または「コーディングデバイス１２」）を含む。図１Ａの例では、ソースデバイス１２および宛先デバイス１４が別個のデバイスを構成する。しかしながら、ソースデバイス１２および宛先デバイス１４は、図１Ｂに示されるように、同一デバイス上にあるまたはその一部であることができることに留意されたい。
【００２８】
[0034]  再び図１Ａを参照すると、ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（例えばラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、およびいわゆる「スマート」フォン、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤー、ビデオゲームコンソール、ビデオストリーミングデバイスなどのようなテレフォンハンドセットを含む広範囲のデバイス（ビデオコーディングデバイスとも称される）のうちのいずれかをそれぞれ備え得る。様々な実施形態において、ソースデバイス１２および宛先デバイス１４はワイヤレス通信のために（すなわち、これを介して通信するように構成され）装備され得る。
【００２９】
[0035]  ビデオコーディングシステム１０のビデオコーディングデバイス１２、１４は、ワイヤレスワイドエリアネットワーク(ＷＷＡＮ)（例えばセルラー）および／またはワイヤレスローカルエリアネットワーク（ＷＬＡＮ）キャリアのような無線技術およびワイヤレスネットワークを通じて通信するように構成され得る。「ネットワーク」および「システム」という用語は、しばしば同義で使用される。ビデオコーディングデバイス１２、１４の各々は、ユーザ機器（ＵＥ）、端末、移動局、加入者ユニットなどであり得る。
【００３０】
[0036]  ＷＷＡＮキャリアは、例えば、符号分割多元接続（ＣＤＭＡ）、時分割多元接続（ＴＤＭＡ）、周波数分割多元接続（ＦＤＭＡ）、直交周波数分割多元接続（ＯＦＤＭＡ）、単一キャリアＦＤＭＡ（ＳＣ−ＦＤＭＡ）、および他のネットワークのようなワイヤレス通信ネットワークを含み得る。ＣＤＭＡネットワークは、ユニバーサル地上無線アクセス（ＵＴＲＡ）、ｃｄｍａ２０００、等のような無線技術を実施し得る。ＵＴＲＡは、広帯域ＣＤＭＡ（ＷＣＤＭＡ（登録商標））およびＣＤＭＡの他の変種を含む。ＣＤＭＡ２０００は、ＩＳ−２０００、ＩＳ−９５およびＩＳ−８５６規格をカバーする。ＴＤＭＡネットワークは、移動体通信のためのグローバルシステム（ＧＳＭ（登録商標））のような無線技術を実施し得る。ＯＦＤＭＡネットワークは、発展型ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ウルトラモバイルブロードバンド（ＵＭＢ）、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ）、ＩＥＥＥ８０２．１６（ＷｉＭＡＸ）、ＩＥＥＥ８０２．２０、フラッシュＯＦＤＭ、等のような無線技術を実現し得る。ＵＴＲＡおよびＥ−ＵＴＲＡは、ユニバーサルモバイルテレコミュニケーションシステム（ＵＭＴＳ）の一部である。３ＧＰＰ（登録商標）ロングタームエボリューション（ＬＴＥ（登録商標））およびＬＴＥアドバンスト（ＬＴＥ−Ａ）は、Ｅ−ＵＴＲＡを使用するＵＭＴＳの最新リリースである。ＵＴＲＡ、Ｅ-ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、ＬＴＥ-Ａ、およびＧＳＭは、「第３世代パートナーシッププロジェクト」（３ＧＰＰ）という名称の組織からの文書で説明される。ＣＤＭＡ２０００およびＵＭＢは、「第３世代パートナーシッププロジェクト２」（３ＧＰＰ２）という名称の組織からの文書で説明される。
【００３１】
[0037]  ビデオコーディングシステム１０のビデオコーディングデバイス１２、１４はまた、例えば８０２．１１ａ−１９９９（「８０２．１１ａ」と一般に呼ばれる）、８０２．１１ｂ−１９９９（「８０２．１１ｂ」と一般に呼ばれる）、８０２．１１ｇ−２００３（「８０２．１１ｇ」と一般に呼ばれる）、などの修正を含むＩＥＥＥ  ８０２．１１規格のような１つまたは複数の標準規格に従ってＷＬＡＮ基地局を介して各々上と通信し得る。
【００３２】
[0038]  宛先デバイス１４は、復号すべき符号化ビデオデータをリンク１６を介して受信し得る。リンク１６は、ソースデバイス１２から宛先デバイス１４に符号化されたビデオデータを移すことが可能な任意のタイプの媒体またはデバイスを備え得る。図１Ａの例において、リンク１６は、ソースデバイス１２が符号化ビデオデータを宛先デバイス１４へリアルタイムで送信することを可能にする通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、宛先デバイス１４へ送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理伝送線のような、任意のワイヤレスまたは有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースのネットワークの一部を構成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を容易にするのに役立ち得る任意の他の機器を含み得る。
【００３３】
[0039]  図１Ａの例において、ソースデバイス１２は、ビデオソース１８、ビデオエンコーダ２０、および出力インターフェース２２を含む。いくつかのケースにおいて、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、例えば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックデータを生成するためのコンピュータグラフィックシステム、またはそれらのソースの組み合わせといった、ビデオキャプチャデバイスのようなソースを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、図１Ｂの例に示されるように、いわゆる「カメラ付電話」、または「ビデオ電話」を構成できる。しかしながら、本開示に記載された技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび／またはワイヤードアプリケーションに適用され得る。
【００３４】
[0040]  キャプチャされた、予めキャプチャ済の（pre-captured）、またはコンピュータにより生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオデータは、ソースデバイス１２の出力インターフェース２２を介して、宛先デバイス１４に送信され得る。符号化ビデオデータはまた、（または代わりに）、復号および／または再生のために、宛先デバイス１４または他のデバイスによる後のアクセスのために記憶デバイス３１上に記憶され得る。図１Ａおよび図１Ｂに例示されたビデオエンコーダ２０は、図２Ａに例示されたビデオエンコーダ２０またはここに記載された何か他のビデオエンコーダを備え得る。
【００３５】
[0041]  図１Ａの例では、宛先デバイス１４は、入力インタフェース２８、ビデオデコーダ３０、およびディスプレイデバイス３２を含む。いくつかのケースにおいて、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、リンク１６を介しておよび／または記憶デバイス３１から符号化ビデオデータを受信し得る。リンク１６を介して通信された、または記憶デバイス上で提供された符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ３０のようなビデオデコーダによる使用のためにビデオエンコーダによって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上に送信された、記憶媒体上に記憶された、またはファイルサーバに記憶された符号化ビデオデータに含まれ得る。図１Ａおよび図１Ｂに例示されたビデオデコーダ３０は、図２Ｂに例示されたビデオデコーダ３０またはここに記載された何か他のビデオデコーダを備え得る。
【００３６】
[0042]  ディスプレイデバイス３２は、宛先デバイス１４と一体化され得る、あるいは宛先デバイス１４の外部にあり得る。いくつかの例において、宛先デバイス１４は、一体化されたディスプレイデバイスを含み得、また外部のディスプレイデバイスとインターフェースで接続するように構成され得る。他の例において、宛先デバイス１４は、ディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または他のタイプのディスプレイデバイスのような、様々なディスプレイデバイスの何れかを備え得る。
【００３７】
[0043]  関連の態様において、図１Ｂは、ソースデバイス１２および宛先デバイス１４がデバイス１１上またはその一部であるビデオコーディングシステム１０’の例を示す。デバイス１１は、「スマート」フォンなどのテレフォンハンドセットであり得る。デバイス１１は、ソースデバイス１２および宛先デバイス１４と通信動作するプロセッサ／制御デバイス１３（オプションで存在する）を含み得る。図１Ｂのビデオコーディングシステム１０’およびそのコンポーネントは、そうでなければ図１Ａのビデオコーディングシステム１０およびそのコンポーネントと同様である。
【００３８】
[0044]  ビデオエンコーダ２０およびビデオデコーダ３０はＤＳＣのようなビデオ圧縮規格に従って動作し得る。代わりに、ビデオエンコーダ２０およびビデオデコーダ３０は、ＩＴＵ−Ｔ  Ｈ．２６４規格、代わってＭＰＥＧ−４、Ｐａｒｔ１０、ＡＶＣ、ＨＥＶＣまたはそのような規格の拡張と称されるのような、他の所有権または工業規格に従って動作できる。しかしながら本開示の技法は、何らかの特定のコーディング規格に限定されない。ビデオ圧縮規格の他の例は、ＭＰＥＧ−２およびＩＴＵ−Ｔ Ｈ.２６３を含む。
【００３９】
[0045]  図１Ａおよび図１Ｂの例において示されないが、ビデオエンコーダ２０およびビデオデコーダ３０は、各々オーディオエンコーダおよびデコーダと一体化され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオおよびビデオの両方の符号化を扱うために、適切なＭＵＸ−ＤＥＭＵＸユニットまたは他のハードウェアおよびソフトウェアを含み得る。適用可能ならば、いくつかの例において、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ．Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルに従い得る。
【００４０】
[0046]  ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせのような、様々な適したエンコーダ回路のいずれかとして実施され得る。技法が部分的にソフトウェアで実施される場合、デバイスは、適した非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を行うために１つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれることができ、エンコーダまたはデコーダのどちらかは、該当のデバイスにおいて組み合わされたエンコーダ／デコーダ（ＣＯＤＥＣ）の一部として一体化され得る。
【００４１】
ビデオコーディング処理
[0047]  上で簡単に述べたように、ビデオエンコーダ２０はビデオデータを符号化する。ビデオデータは１つまたは複数のピクチャを備え得る。いくつかの事例において、ピクチャの各々はビデオ「フレーム」と称される。ビデオエンコーダ２０がビデオデータ（例えば、ビデオコーディングレイヤ（ＶＣＬ）データおよびまたは非ＶＣＬデータ）を符号化するとき、ビデオエンコーダ２０はビットストリームを生成し得る。ビットストリームは、ビデオデータのコーディングされた表現を形成するビットのシーケンスを含み得る。ビットストリームは、コーディングされたピクチャおよび関連付けられたデータを含み得る。コーディングされたピクチャは、ピクチャのコーデングされた表現である。ＶＣＬデータはそーディングされたピクチャデータ（すなわち、コーディングされたピクチャのサンプルに関連付けられた情報）を含み得、および非ＶＣＬデータは１つまたは複数のコーディングされたピクチャに関連付けられた制御情報（例えば、パラメータセットおよび／または補助的エンハンスメント情報）を含み得る。
【００４２】
[0048]  ビットストリームを生成するために、ビデオエンコーダ２０はビデオデータ中の各ピクチャに対して符号化動作を行い得る。ビデオエンコーダ２０がピクチャに対して符号化動作を行うとき、ビデオエンコーダ２０は一連のコーディングされたピクチャおよび関連付けされたデータを生成し得る。関連付けされたデータは、量子化パラメータ（ＱＰ）のようなコーディングパラメータのセットを含み得る。コーディングされたピクチャを生成するために、ビデオエンコーダ２０はピクチャを等しいサイズのビデオブロックに区分し得る。ビデオブロックはサンプルの二次元配列であり得る。コーディングパラメータは、ビデオデータの全てのブロックのためにコーディングオプション（例えば、コーディングモード）を定義し得る。コーディングオプションは望まれるレート歪性能を達成するために選択され得る。
【００４３】
[0049]  いくつかの例において、ビデオエンコーダ２０はピクチャを複数のスライスに区分し得る。これらスライスの各々は、イメージ（例えば、フレーム）において空間的に異なる領域を含み得、このイメージはイメージすなわちフレームにおける残りの領域からの情報なしに独立に復号されることができるものである。各イメージまたはビデオフレームは単一スライスにおいて符号化され得、または各イメージまたはビデオフレームがいくつかのスライスにおいて符号化され得る。ＤＳＣにおいて、各スライスを符号化するために割り振られるビットの数は実質的に一定であり得る。ピクチャに対する符号化動作を行う一部として、ビデオエンコーダ２０はこのピクチャの各スライスに対する符号化動作を行い得る。ビデオエンコーダ２０がスライスに対する符号化動作を行うとき、ビデオエンコーダ２０はこのスライスに関連付けられた符号化データを生成し得る。このスライスに関連付けられた符号化データは、「コーディングされたスライス」と称される。
【００４４】
ＤＳＣビデオエンコーダ
[0050]  図２Ａは、本開示に記載の態様に従う技法を実施し得るビデオエンコーダ２０の例を示すブロック図である。ビデオエンコーダ２０は、本開示の技法のいくつかまたは全てを行うように構成され得る。いくつかの例において、本開示に記載された技法は、ビデオエンコーダ２０の種々のコンポーネント間で共有され得る。いくつかの例において、加えてまたは代わりに、プロセッサ（図示されない）が本開示に記載れた技法のうちのいくつかまたは全てを行うように構成され得る。
【００４５】
[0051]  説明の目的で、本開示は、ＤＳＣコーディングのコンテクストにおけるビデオエンコーダ２０を記載している。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００４６】
[0052]  図２Ａの例において、ビデオエンコーダ２０は複数の機能コンポーネントを含む。ビデオエンコーダ２０の機能コンポーネントは色空間変換器（color-space converter）１０５、バッファ，１１０、フラットネス検出器１１５、レートコントローラ１２０、予測器（predictor）、量子化器（quantizer）、リコンストラクタコンポーネント（reconstructor component）１２５、ラインバッファ１３０、インデックス付けされた色履歴（indexed color history）１３５、エントロピーエンコーダ（entropy encoder）１４０、サブストリームマルチプレクサ１４５、レートバッファ１５０を含む。他の例において、ビデオエンコーダ２０は、より多い、より少ない、あるいは異なる機能コンポーネントを含み得る。
【００４７】
[0053]  色空間１０５コンバータは、入力色空間をコーディング実施に使用される色空間に変換し得る。例えば、ある例示的実施形態において、入力ビデオデータの色空間は赤、緑、青(ＲＧＢ)の色空間にあり、コーディングがルミナンスＹ、クロミナンス緑Ｃｇ、およびクロミナンスオレンジＣｏ（ＹＣｇＣｏ）色空間において実施される。色空間変換は、ビデオデータに対するシフトおよび加算を含む方法によって行われ得る。他の色空間における入力ビデオデータは処理されて、他の色空間に対する変換がまた行われることに留意されたい。
【００４８】
[0054]  関連の態様において、ビデオエンコーダ２０はバッファ１１０、ラインバッファ１３０、および／またはレートバッファ１５０を含み得る。例えば、バッファ１１０はビデオエンコーダ２０の他の部分による、その使用の前に色空間変換されたビデオデータを保持し得る。他の例において、ビデオデータはＲＧＢ色空間において記憶され得、色空間変換は、色空間変換されたデータがよりビットを必要とし得るため、必要に応じて行われ得る。
【００４９】
[0055]  レートバッファ１５０は、ビデオエンコーダ２０においてレート制御機構の一部として機能し得るもので、これはレートコントローラ１２０との関連で以下により詳く説明されることになる。 各ブロックを符号化することに費やされるビットは、ブロックの性質に基づいて非常に実質的に変化し得る。レートバッファ１５０は圧縮されたビデオにおけるレート変動を平滑化できる。いくつかの実施形態では、ビットがＣＢＲでバッファから取り出されるＣＢＲバッファモデルが採用される。ＣＢＲバッファモデルにおいて、ビデオエンコーダ２０がビットストリームに多すぎるビットを加えるすると、レートバッファ１５０がオーバーフローし得る。他方、ビデオエンコーダ２０はレートバッファ１５０のアンダーフローを防止するために十分なビットを加えなくてはならない。
【００５０】
[0056]  ビデオデコーダ側では、ビットがビデオデコーダ３０のレートバッファ１５５にＣＢＲで加えられ（以下においてさらに詳しく述べられる図２Ｂを参照）、ビデオデコーダ３０が各ブロック毎に可変数のビットを除去し得る。適切な復号を可能にするため、ビデオデコーダ３０のレートバツファ１５５は、圧縮されたビットストリームの復号中に「アンダーフロー」または「オーバーフロー」すべきでない。
【００５１】
[0057]  上で論じられたように、ＢＦはバッファ内に現在あるビットの数を表す値BufferCurrentSizeに基づいて定義されることができ、BufferMaxSizeがレートバッファ１５０のサイズ、すなわち任意の時点でレートバッファ１５０に記憶できるビットの総最大数を表す。ＢＦは、上記の式１または式２に従って計算され得るが、ＢＦを計算するためのさらなる方法が以下に記述される。
【００５２】
[0058]  フラットネス検出器１１５はビデオデータにおけるコンプレックス(complex)(すなわち、非フラット)領域からビデオデータにおけるフラット(flat)（すなわち、単純(simple)または均一(uniform)領域への変化を検出できる。「コンプレックス」および「フラット」という用語は、一般にビデオエンコーダ２０がビデオデータのそれぞれの領域を符号化することの難しさを指すためにここで使用されることになる。このため、ここで使用される用語コンプレックスは、ビデオエンコーダ２０が符号化することが複雑であるとされるビデオデータの領域を一般に記述し、例えばテクスチャビデオデータ、高空間周波数、および/または符号化することが複雑な他の特徴を含み得る。ここで使用される用語フラットは、ビデオエンコーダ２０が符号化することが単純であるとされるビデオデータの領域を一般に記述し、例えばビデオデータの平滑な勾配、低空間周波数、および／または符号化することが単純な他の特徴を含み得る。コンプレックスとフラットとの間の遷移は、符号化ビデオデータにおける量子化アーティファクトを低減するためにビデオエンコーダ２０によって使用され得る。具体的には、レートコントローラ１２０、予測器、量子化器、およびリコンストラクタコンポーネント１２５が、コンプレックス領域からフラット領域への遷移を識別したときにこうした量子化アーティファクトを低減できる。
【００５３】
[0059]  レートコントローラ１２０は、コーディングパラメータ、例えばＱＰのセットを決定する。このＱＰは、レートバッファ１５０がオーバーフローまたはアンダーフローしないことを確実にするターゲットビットレートのためのピクチャ品質を最大化するためにレートバッファ１５０のＢＦおよびビデオデータのイメージアクティビティに基づいてレートコントローラ１２０によって調整され得る。レートコントローラ１２０はまた、最適なレート歪性能を達成するためにビデオデータの各ブロックのために特定のコーディングオプション（例えば、特定のモード）を選択する。レートコントローラ１２０は、歪がビットレート制約を満足するように、すなわち全体の実際のコーディングレートがターゲットビットレートに適合するように、再構築されたイメージ（reconstructed images）の歪を最小化する。
【００５４】
[0060]  予測器、量子化器、およびリコンストラクタコンポーネント１２５は、ビデオエンコーダ２０の少なくとも３つの符号化動作を行い得る。予測器、量子化器、およびリコンストラクタコンポーネント１２５は、いくつかの異なるモードにおいて予測を行い得る。一例の予測モードはメディアンアダプティブ予測(Median-adaptive prediction)の変形バージョンである。メディアンアダプティブ予測は、無損失ＪＰＥＧ規格（ＪＰＥＧ−ＬＳ）によって実施され得る。予測器、量子化器、およびリコンストラクタコンポーネント１２５によって行われ得るメディアンアダプティブ予測(Median-adaptive prediction)の変形バージョンは、３つの連続するサンプル値の並列予測を可能にし得る。他の予測モードの例はブロック予測である。ブロック予測では、サンプルが上の線にまたは同じ線の左に以前に再構築されたピクセルから予測される。いくつかの実施形態において、ビデオエンコーダ２０およびビデオデコーダ３０は、ブロック予測使用を決定するために両方とも再構築されたピクセルに対する同じ探索を行い得、このためブロック予測モードにおいて送られる必要のあるビットがない。他の実施形態において、ビデオエンコーダ２０はこの探索を行い、ビデオデコーダ３０が別個の探索を行う必要のないようにビットストリームにおいてブロック予測ベクトルをシグナリングし得る。サンプルがコンポーネントレンジの中点を使用して予測される中点予測(midpoint prediction)モードもまた実施され得る。中点予測モードは、最悪のケースのサンプルにおける圧縮ビデオのために必要とされるビットの数のバウンディング(bounding)を可能にし得る。
【００５５】
[0061]  予測器、量子化器、およびリコンストラクタコンポーネント１２５はまた、量子化を行う。例えば、量子化は、シフタ（a shifter）を使用して実施され得る２の累乗量子化器（a power-of-2 quantizer）によって行われ得る。２の累乗量子化器の代わりに他の量子化技術が実施され得ることに留意されたい。予測器、量子化器、およびリコンストラクタコンポーネント１２５によって行われる量子化は、レートコントローラ１２０によって決定されたＱＰに基づき得る。最後に、予測器、量子化器、およびリコンストラクタコンポーネント１２５はまた、逆量子化された残余を予測された値に追加することと、結果がサンプル値の有効範囲から外れないことを確実にすることとを含む再構築（reconstruction）を行う。
【００５６】
[0062]  予測器、量子化器、およびリコンストラクタコンポーネント１２５によって行われる予測、量子化、および再構築するための上述の例となるアプローチは、例示的なものに過ぎないこと、および他のアプローチが実施され得ることに留意されたい。また、予測器、量子化器、およびリコンストラクタコンポーネント１２５は、予測、量子化、および／または再構築を行うためのサブコンポーネントを含み得ることに留意されたい。さらに、予測、量子化、および／または再構築は、予測器、量子化器、およびリコンストラクタコンポーネント１２５の代わりに、いくつかの別個のエンコーダコンポーネントによって行われ得ることに留意されたい。
【００５７】
[0063]  ラインバッファ１３０は、予測器、量子化器、およびリコンストラクタコンポーネント１２５およびインデックス付けされた色履歴１３５がバッファされたビデオデータを使用することができるように、予測器、量子化器、およびリコンストラクタコンポーネント１２５からの出力を保持する。インデックス付けされた色履歴１３５は、最近使用された画素値を記憶する。これらの最近使用された画素値は、専用のシンタックス（a dedicated syntax）を用いてビデオエンコーダ２０によって直接的に参照されることができる。
【００５８】
[0064]  エントロピーエンコーダ１４０は、フラットネス検出器１１５によって識別されたフラットネス遷移およびインデックス付けされた色履歴１３５に基づいて、予測器、量子化器、およびリコンストラクタコンポーネント１２５から受信された予測残余および任意の他のデータ（例えば、予測器、量子化器、およびリコンストラクタコンポーネント１２５によって識別されたインデックス）を符号化する。いくつかの例において、エントロピーエンコーダ１４０は、サブストリームエンコーダごとのクロックごとに３つのサンプルを符号化し得る。サブストリームマルチプレクサ１４５は、ヘッダレスパケット多重化様式に基づいて、ビットストリームを多重化し得る。これにより、ビデオデコーダ３０が３つのエントロピーデコーダを同時に実行する（run）ことが可能になり、クロックごとに３つの画素を復号することを容易にする。サブストリームマルチプレクサ１４５は、パケットがビデオデコーダ３０によって効率よく復号されることができるように、パケット順序を最適化し得る。エントロピーコーディングのための異なるアプローチが実施され得、それは、クロックごとに２の累乗画素（power-of-2 pixels）（例えば、２画素／クロックまたは４画素／クロック）を復号することを容易にし得ることに留意されたい。
【００５９】
ＤＳＣビデオデコーダ
[0065]  図２Ｂは、本開示に記載の態様に従う技法を実施し得るビデオデコーダの例を示すブロック図である。ビデオデコーダ３０は、本開示の技法のいくつかまたは全てを実施するように構成され得る。いくつかの例において、本開示に記載された技法は、ビデオデコーダ３０の様々なコンポーネント間で共有され得る。いくつかの例において、追加的にまたは代替的に、プロセッサ（図示されない）が、本開示に記載された技法のいくつかまたは全てを実施するように構成され得る。
【００６０】
[0066]  説明の目的のために、本開示は、ＤＳＣコーディングの文脈においてビデオデコーダ３０を説明している。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【００６１】
[0067]  図２Ｂの例において、ビデオデコーダ３０は、複数の機能コンポーネントを含む。ビデオデコーダ３０のこれら機能コンポーネントは、レートバッファ１５５、サブストリームデマルチプレクサ１６０、エントロピーデコーダ１６５、レートコントローラ１７０、予測器、量子化器、リコンストラクタコンポーネント１７５、インデックス付けされた色履歴１８０、ラインバッファ１８５、および色空間変換器１９０を含む。ビデオデコーダ３０の例示されたコンポーネントは、図２Ａにおけるビデオエンコーダ２０に関連して上述された対応するコンポーネントと類似している。従って、ビデオデコーダ３０のコンポーネントの各々は、上述されたビデオエンコーダ２０の対応するコンポーネントと同様に動作し得る。
【００６２】
ＤＳＣにおけるスライス
[0068]  上で述べたように、スライスは一般に、イメージまたはフレームにおける残りの領域からの情報を使用することなく独立に復号されることができるイメージまたはフレームにおける空間的に異なる領域を指す。各イメージまたはビデオフレームは、単一スライスにおいて符号化され得、または各イメージまたはビデオフレームは、いくつかのスライスにおいて符号化され得る。ＤＳＣにおいて、各スライスを符号化するために割り振られるビットの数は実質的に一定であり得る。スライスは、複数のブロックから構成され得る。
【００６３】
レート制御バッファ
[0069]  図３は、データのスライスを符号化するための例示的処理を示すグラフである。図３を参照すると、縦軸３０５は、レートバッファ（例えば、図２Ａのビデオエンコーダ２０におけるレートバッファ１５０、または図２Ｂにおけるビデオデコーダ３０のレートバッファ１５５）に現在記憶されているビットの数を表し、横軸３１０は、時間を表す。図３は、ビデオデータの第１のスライス３１５およびビデオデータの第２のスライス３２０の符号化を示す。第２のスライス３２０は、単に第１のスライス３１５の符号化および第２のスライス３２０の符号化の間に起こる時間的な重複を示すために第１のスライス３１５の下に位置するように例示されており、第２のスライス３２０におけるビットの数が第１のスライス３１５におけるビットの数未満であることを示すように意図するものではない。
【００６４】
[0070]  例示のために、本開示の態様は、図２Ａにおけるビデオエンコーダ２０のレートバッファ１５０を参照して説明されることになるが、しかしながら、そのような態様はまた、図２Ｂのビデオデコーダ３０またはレートバッファ１５５に限定されないがそれを含むそれのコンポーネントに適用可能であることは理解されることになる。
【００６５】
[0071]  レートバッファ１５０は、有られた数のビットしか保持（すなわち、記憶）できない可能性があることに留意されたい。上述したように、変数BufferMaxSizeは、レートバッファの全容量を表し得る。しかしながら、レートバッファ１５０におけるアンダーフローおよび／またはオーバーフローを防止するために、レートバッファ１５０をBufferMaxSizeよりも少ない数に制限することが有利である。従って、一時的最大数ビットレベル（変数tempBufferMaxSizeおよびmaxBufferBitsAtSliceEndによって表される）は、レートバッファ１５０の望ましい容量を反映するようにレートバッファ１５０に関して定義され得る。
【００６６】
[0072]  ３２５で、第１のスライス３１５の符号化が開始する。符号化中、ビットはレートバッファ１５０に記憶され得、レートバッファ１５０に以前に記憶されたビットは、レートバッファ１５０から除去され得る。例えば、レートバッファ１５０から除去されたビットは、（例えば、ソースデバイス１２によって、リンク１６を介して）送信され得る。このように、レートバッファ１５０にビットを記憶するおよび/またはレートバッファ１５０からビットを除去する動作により、レートバッファ１５０におけるビットの総数は、様々な時点において増加および/または減少し得る。いくつかの事例において、ビットは、符号化、送信、等のためにグループ化され得る。例えば、ビットは、画素（例えば、１画素あたり６ビット）またはブロック（例えば、１画素あたり６ビットで２×８ブロックサイズの場合１ブロックあたり９６ビット）として送信され得る。
【００６７】
[0073]  ３３０において、記憶されたビットの送信が開始する。送信は、Init_enc_delayとして図３に示される遅延、初期の符号化遅延期間の後に開始し得る。Init_enc_delayは、ブロックまたは画素で測定され得、選ばれたおよび/または固定の値であり得るか、または各スライス毎に計算され得る。一実施形態では、Init_enc_delayは、maxBufferBitsAtSliceEndに基づき得る。例えば、maxBufferBitsAtSliceEndが４１２８であり、Init_enc_delayがブロックで測定される場合、Init_enc_delayは、４１２８を１ブロックあたりのターゲットビット数（例えば、９６）で割り算したものであり得る。これは、第１のスライス３１５が完全に復号された後にバッファ１５０が第１のスライス３１５から残りのブロックを送信し得るために、行われ得る。
【００６８】
[0074]  続けて図３を参照すると、３３５で、第１のスライス３１５の符号化が完了し得る。すなわち、３３５で、バッファ１５０におけるビット数は、maxBufferBitsAtSliceEndに等しくなるべきである。例えば、maxBufferBitsAtSliceEndが４１２８であるとき、バッファ１５０におけるビット数は、第１のスライス３１５の符号化が完了するイベント３３５において４１２８に等しくなるべきである。３４０において、第１のスライス３１５の送信が完了する。図３に示されるように、第１のスライス３１５の符号化の終了は、第２のスライス３２０の符号化の開始に対応し得、第１のスライス３１５の送信の終了は、第２のスライス３２０の送信の開始に対応し得る。Init_enc_delayは、第１のスライス３１５の終了イベント（例えば、符号化および送信の終了）を、第２のスライス３２０の開始イベント（例えば、符号化および送信の開始）とアラインするように選択され得る。すなわち、第２のスライス３２０のInit_enc_delay期間は、第１のスライス３１５のフラッシュ期間Flush_timeに対応し得る。
【００６９】
[0075]  
[0076]  一実施形態において、ビットは、Init_enc_delayの後、一定レートでバッファ１５０から除去され得る。そうすることによって、スライスの終わりでのバッファ１５０におけるビット数がmaxBufferBitsAtSliceEndに等しくなることが確実にされ得る。さらに、ビットは、Flush_time中、一定レートでバッファ１５０から除去され得る。第２のスライス３２０からの圧縮されたブロックは、第２のスライス３２０のInit_enc_delay期間が終了した後に、バッファ１５０から除去される。
【００７０】
ＢＦ計算
[0077]  maxBufferBitsAtSliceEndがBufferMaxSize未満であるならば、スライスのどのくらいが符号化されたかに基づいてＢＦ計算を調整することは有益であり得る。図４は、スライスのコーディング中ＢＦを調整するための例示的方法を示す。例示を目的として、図４は、図２Ａのビデオエンコーダ２０のレートバッファ１５０との関連で説明されることになる。しかしながら、図４のコンポーネントが、図２Ｂのビデオデコーダ３０またはレートバッファ１５５に限定されるわではないがそれを含むそれのコンポーネントにも適用可能であることは理解されることとなる。
【００７１】
[0078]  ＢＦを計算するために、変数tempBufferMaxSizeが定義され得、これは、スライスの特定のポイントにおけるバッファ１５０についての一時的最大ビット数を示す。例えば、スライスの終わりで、tempBufferMaxSizeは、maxBufferBitsAtSliceEndに等しい。さらに別の変数Offsetは、BufferMaxSizeのどれだけが所与の時点で利用不可能であるかを示す。
【００７２】
[0079]  図４のグラフは、その縦軸に沿ってOffset４０５を、その横軸に沿ってスライスにおける各ブロックの位置（すなわち、数）を示す。ブロックが順番にコーディングされるため、各個々のブロックの位置は、コーディングされるブロックの数（以下、numBlocksCoded）と同等であり得る。例えば、numBlocksCodedの値は、０から、ＮＴ（すなわち、#blocksInSlice）と表されるスライスにおけるブロックの総数までの範囲であり得る。一実施形態において、ＮＰと表されるブロックの数は、ＢＦが調整される前にコーディングされ得る。すなわち、４２０において示されるように、numBlocksCodedがＮＰ以下である間、Offset４０５は０に等しく、tempBufferMaxSizeは、BufferMaxSizeに等しい。一実施形態において、ＮＰは、ＮＰ以下の位置を有するブロックが、BufferMaxSizeに等しいtempBufferMaxSizeを有し、ＮＰよりも上の位置を有するブロックが、BufferMaxSizeよりも小さいtempBufferMaxSizeを有し得るような閾値位置を提供し得る。図４に示されるように、tempBufferMaxSizeの値は、ＮＰよりも上の各後続のブロックとともに直線的に減少し得る。すなわち、ＮＰの後の位置を有するブロックは、スライスにおける任意の後続のブロックのtempBufferMaxSizeよりも大きい一意の該当のtempBufferMaxSizeを有し得る。言い換えれば、ＮＰの後の位置を有するブロックは、図４に示されるようにＮＰとＮＴとの間の各ブロック毎に減少する調整可能値に等しいtempBufferMaxSizeを有し得る。
【００７３】
[0080]  続けて図４を参照すると、例示的スライスにおけるブロックの総数は、ＮＴと表される。このため、numBlocksCodedがＮＴに等しいとき、tempBufferMaxSizeは、maxBufferBitsAtSliceEndに等しくなるべきであり、別の言い方をすれば、Offset４０５は、MaxBufferSizeからmaxBufferBitsAtSliceEndを差し引いたものに等しくなるべきである。例えば、maxBufferBitsAtSliceEndが４１２８である場合、４２６において示されるように、tempBufferMaxSizeは、ＮＴにおいて４１２８に等しくなるべきであり、Offset４０５は、MaxBufferSizeから４１２８を差し引いたものに等しくなるべきである。
【００７４】
[0081]  これを達成するために、tempBufferMaxSizeおよびOffset４０５は、numBlocksCoded＝ＮＰとnumBlocksCoded＝ＮＴとの間で、ＢＲと表される一定レートで調整され得る。ＮＰとＮＴと間の差分は、図３においてＮＲと表される。ＢＲがポイント（numBlocksCoded＝ＮＰ、Offset＝０）と（numBlocksCoded＝ＮＴ、Offset＝bufferMaxSize−maxBufferBitsAtSliceEnd）との間に一線を形成する。例えば、maxBufferBitsAtSliceEndが４１２８である場合、ＢＲは、（maxBufferSize−４１２８）／ＮＲと定義され得る。ＢＲに沿った例示的ポイントのOffset４０５およびtempBufferMaxSizeの値は、４２２および４２４において例示される。
【００７５】
[0082]  このように、ＢＲに沿ったポイントは、スライスの個々のブロックに、対応するtempBufferMaxSizeを提供し得る。次に、対応するtempBufferMaxSizeは、スライスにおける各ブロック毎に個々のＢＦを計算するために使用され得る。一実施形態において、スライスにおけるブロックは、スライス内のそれらの位置に基づいて定義され得る。
【００７６】
[0083]  一実施形態において、上の式１および式２は、ＮｐまたはＮｐの下に位置されたスライス中のブロックのためのＢＦを計算するために使用することができる。例えば、２に等しいＮｐについて、ＢＦが第１および第２のブロックのための式１および式２に従って計算され得る。何れかの残りブロックについて、ＢＦが式１および／または式２におけるBufferMaxSizeの代わりにtempBufferMaxSizeに置き換えることによって計算され得る。すなわち、ＢＦは
BF = ((BufferCurrentSize * 100) / tempBufferMaxSize)  (式３)
を使用するか、または
BF = (((BufferCurrentSize * 100 ) + (tempBufferMaxSize >> 1) )/ tempBufferMaxSize)  (式４)を使用して計算され得る。
【００７７】
[0084]  また、tempBufferMaxSizeは、
tempBufferMaxSize = BufferMaxSize - Offset  (式５)を使用して計算され得、ここで
Offset = BR * (numBlocksCoded - NP + 1) (式６)
、およびここで
BR = (BufferMaxSize - tempBufferMaxSize) /  (numBlocksCoded - NP) (式７)である。
【００７８】
[0085]  要約すると、以下の例示的コードがＢＦを計算することにおいて使用される。
numBlocksCoded = 0; tempBufferMaxSize = BufferMaxSize;
BR = (BufferMaxSize - maxBufferBitsAtSliceEnd) / (NT - NP);
for i = 1: NT
{
code ith block
numBlocksCoded += 1;
if(numBlocksCoded >= NP)
{
tempBufferMaxSize = BufferMaxSize - (BR * (numBlocksCoded - NP + 1));
}
calculate BF
}
ＣＢＲを提供するためのフローチャート例
[0086]  図５を参照すると、バッファ（例えば、図２Ａにおけるビデオエンコーダ２０上のレートバッファ１５０、または図２Ｂにおけるビデオデコーダ３０のレートバッファ１５５上の）でのバッファ満杯を決定するための手順例が説明される。例示の目的で、図５のステップが図２Ａにおけるビデオエンコーダ２０のレートバッファ１５０を参照して説明される。しかしながら、図５に例示されたステップはビデオエンコーダ（例えば、図２Ａにおけるビデオエンコーダ２０）、ビデオデコーダ（例えば、図２Ｂにおけるビデオデコーダ３０）、またはそれらのコンポーネントによって行われ得る。便宜上、方法５００は、ビデオエンコーダ２０、ビデオデコーダ３０、またはそれらのコンポーネントであり得るビデオコーダ（単純にコーダとも称される）によって行われ得るものとして説明される。
【００７９】
[0087]  方法５００はブロック５０１で開始する。ブロック５０５で、処理５００はデータのスライス中のブロックをコーディングすることを含み得る。一実施形態において、コーディングはプロセッサによって行われ得る。上述されるように、スライスは、イメージまたはフレームにおける残りの領域からの情報を使用することなく独立に復号されることができるイメージまたはフレームにおける何らかの空間的に異なる領域であり得る。スライスは１つまたは複数ブロックおよび／またはピクセルから構成され得る。
【００８０】
[0088]  ステップ５１０では、処理５００がレートバッファ１５０内のブロックに対応する１つまたは複数のビットを記憶することを含み得る。例えば、ブロックは圧縮され、対応するビットは一時的にレートバッファ１５０に記憶され得る。一実施形態において、個々のはコーディング後にバッファ１５０に加えられる。代替的実施形態では、複数のビットが同時にバッファ１５０に加えられ得る。
【００８１】
[0089]  ブロック５１５では、処理５００がスライス中の他のブロックに対して１つまたは複数のブロックの位置を示す情報を決定することを含み得る。例えば、所与のブロックが第３のコーディングされたブロックであることが決定され得、こうしたブロックがスライスの第３のブロックとして定義され得る。ブロックの位置を決定することによって、スライス中の以前にコーディングされたブロックの数および／またはまだコーディングされていないスライス中のブロックの数が決定され得る。一実施形態において、位置を示す情報を決定することは、プロセッサによって行われ得る。
【００８２】
[0090]  ブロック５２０では、処理５００が１つまたは複数のブロック位置でＢＦを決定することを含む。この決定は、レート制御のために使用され得る。例えば、図４を参照すると、ブロックの位置決めがブロックに関連付けられたＢＲに沿ってポイントを示し得る。これを決定するために、ＢＲを計算することにおいて使用され得るmaxBufferBitsAtSliceEndを知る必要があり得る。ＢＲに沿って関連付けられた位置はブロックのための対応するtempBufferMaxSizeを示し得る。次に、ＢＦがブロックのためのtempBufferMaxSizeでBufferCurrentSizeを割り算することによって計算され得る。一実施形態において、ＢＦを決定することはプロセッサによって行われる。処理５００はブロック５２５で終了する。
【００８３】
[0091]  一実施形態において、tempBufferMaxSizeは整数値，ｃによって調整され得る。例えば、tempBufferMaxSizeは、
tempBufferMaxSize = BufferMaxSize - (BR * (numBlocksCoded - NP + c))     (式８)
を使用して計算され得る。
【００８４】
[0092]  一例では、ｃが０、１、−１、または任意の他の整数値に等しくてよい。他の実施形態では、ＢＲが整数値,dによって調整され得る。例えば、 BR は
BR = (BufferMaxSize - maxBufferBitsAtSliceEnd) / (NT - NP + d)     (式９)
を使用して計算され得る。
ここで、ｄは０、１、−１、または任意の他の整数値に等しくてよい。上記式の他の変数に対する同様の調整もなされ得る。
【００８５】
他の考察
[0093]  ここに開示された情報および信号は、様々な異なる技術および技法のうちの任意のものを使用して表わされ得る。例えば、上記の説明の全体にわたって参照され得る、データ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁粒子、光場または光学粒子、あるいはそれらの任意の組み合わせによって表わされ得る。
【００８６】
[0094]  ここに開示された実施形態に関連して記載された様々な例示的な論理ブロック、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実施され得る。ハードウェアおよびソフトウェアのこの互換性を明確に例示するために、様々な例示的なコンポーネント、ブロック、およびステップが、一般にそれらの機能性の観点で説明され。このような機能が、ハードウェアまたはソフトウェアとして実施されるかは、特定のアプリケーションおよびシステム全体に課せられる設計制約に依存する。当業者は、説明された機能を特定のアプリケーションごとに様々な方法で実施し得るが、そのようなインプリメンテーションの決定は、本開示の範囲からの逸脱をもたらすと解釈されるべきではない。
【００８７】
[0095］  ここで説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実施され得る。こうした技法は汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおいてアプリケーション含む複数の使用を含む集積回路のような様々なデバイスの何れかで実施され得る。デバイスまたはコンポーネントとして説明される任意の特徴は、集積論理デバイスで一緒に実施されるか、または、離散的でありながらも相互作用可能な論理デバイスとして別々に実施され得る。ソフトウェアで実施された場合、本技法は少なくとも一部が、実行されると、上述された方法のうちの１つまたは複数を実行する命令を備える非一時的なプロセッサ可読データ記憶媒体によって実現され得る。非一時的なプロセッサ可読データ記憶媒体は、パッケージングマテリアルを含み得る、コンピュータプログラム製品の一部を形成し得る。非一時的なプロセッサ可読記憶媒体は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読取専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリ、他の周知の記憶媒体およびそれに類するもの等のランダムアクセスメモリ（ＲＡＭ）を備え得る。追加的にまたは代替的に、本技法は少なくとも一部が、命令またはデータ構造の形式でプログラムコードを搬送または通信し、かつ、コンピュータによってアクセス、読取、および／または実行されることができる伝搬信号または波のようなプロセッサ可読通信媒体として実現され得る。
【００８８】
[0096]  プログラムコードは、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）のような１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の同等な集積または離散論理回路を含むプロセッサによって実行され得る。このようなプロセッサは、本開示において説明された技法の何れかを行うように構成され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替において、このプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、例えば、ＤＳＰとマイクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアと連結した１つまたは複数のマイクロプロセッサ、または任意の他のそのような構成の組み合わせのような、コンピューティングデバイスの組み合わせとして実施され得る。従って、本明細書で使用されるような「プロセッサ」という用語は、前述の構造、前述の構造の任意の組合せ、または本明細書で説明される技法の実行に適した任意の他の構造のいずれかを指すことができる。さらに、いくつかの態様では、ここにおいて説明される機能は、符号化および復号のために構成された専用ソフトウェアまたはハードウェアで提供され得る、または、組み合わせられたビデオエンコーダ−デコーダ（ＣＯＤＥＣ）に組み込まれ得る。また、技法は、１つ以上の回路または論理要素で完全に実施されることができる。
【００８９】
[0097]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣｓのセット（例えば、チップセット）を含む、幅広い様々なデバイスまたは装置で実施され得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を行うように設定されるデバイスの機能的な態様を強調するために本開示の中に説明されるが、必ずしも異なるハードウェアユニットによる実現を要求しない。むしろ、上記に説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされ得るか、または適切なソフトウェアおよび／またはファームウェアと併せて、上記に説明されたような１つ以上のプロセッサを含む、相互運用のハードウェアユニット（interoperative hardware units）の集合によって提供され得る。
【００９０】
[0098]  上記は様々な異なる実施形態との関連で説明されたか、１つの実施形態からの特徴または要素は本開示の教示から逸脱することなく他の実施形態と組み合わせ得る。しかしながら、それぞれの実施形態間の特徴の組合せは必ずしもこれを限定するものではない。本開示の様々な実施形態が説明された。これらの実施形態および他の実施形態は、以下に続く特許請求の範囲の範疇にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータのスライス中のブロックをコーディングすることであって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングすることと、
前記ブロックに対応するビットをバッファに記憶することと、
前記スライス中の前記ブロックの位置を示す情報を決定することと、
前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定することとを備える、ディスプレイリンクビデオ圧縮の方法。
［Ｃ２］
前記バッファに記憶されたビットの数を決定することをさらに備え、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、Ｃ１に記載の方法。
［Ｃ３］
前記ブロックは、ビットの一時的最大数に関連付けられ、ビットの前記一時的最大数は、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示し、前記バッファの満杯を決定することは、前記ブロックに関連付けられた、ビットの前記一時的最大数で、前記バッファに記憶されたビットの数を割り算することを備える、Ｃ２に記載の方法。
［Ｃ４］
前記スライス中のスレッショルド位置を決定することをさらに備え、ここにおいて前記スレッショルド位置に到達する前にコーディングされた各ブロックは、第１の値に等しい、ビットの一時的最大数に関連付けられ、前記スレッショルド位置に到達した後にコーディングされた各ブロックは、調整可能値に等しい、ビットの一時的最大数に関連付けられ、前記調整可能値は前記第１の値未満である、Ｃ３に記載の方法。
［Ｃ５］
前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとをさらに備える、Ｃ４に記載の方法。
［Ｃ６］
前記第１の値は前記バッファの前記最大容量に等しい、Ｃ５に記載の方法。
［Ｃ７］
前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの前記望ましい最大数に基づいて、前記スレッショルド位置に到達した後にコーディングされた各ブロック毎に前記調整可能値を減少させることをさらに備える、Ｃ６に記載の方法。
［Ｃ８］
前記スライス中のブロックの位置を示す前記情報を決定することは、コーディング済である前記スライス中のブロックの数を決定することを備える、Ｃ１に記載の方法。
［Ｃ９］
ビデオデータのスライス中のブロックをコーディングするように構成され、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、プロセッサと、
前記プロセッサに結合され、前記ブロックに対応するビットを記憶するように構成されるバッファとを備え、
前記プロセッサは、前記スライス中の前記ブロックの位置を示す情報を決定し、前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定するようにさらに構成される、ディスプレイリンクビデオ圧縮のための装置。
［Ｃ１０］
前記プロセッサは、前記バッファに記憶されたビットの数を決定するようにさらに構成され、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、Ｃ９に記載の装置。
［Ｃ１１］
前記ブロックは、ビットの一時的最大数に関連付けられ、ビットの前記一時的最大数は、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示し、前記バッファの満杯を決定することは、前記ブロックに関連付けられた、ビットの前記一時的最大数で、前記バッファに記憶されたビットの数を割り算することを備える、Ｃ１０に記載の装置。
［Ｃ１２］
前記プロセッサは、前記スライス中のスレッショルド位置を決定するようにさらに構成され、ここにおいて前記スレッショルド位置に到達する前にコーディングされた各ブロックは、第１の値に等しい、ビットの一時的最大数に関連付けられ、前記スレッショルド位置に到達した後にコーディングされた各ブロックは、調整可能値に等しい、ビットの一時的最大数に関連付けられ、前記調整可能値は前記第１の値未満である、Ｃ１１に記載の装置。
［Ｃ１３］
前記プロセッサは、前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定するようにさらに構成される、Ｃ１２に記載の装置。
［Ｃ１４］
前記第１の値は前記バッファの前記最大容量に等しい、Ｃ１３に記載の装置。
［Ｃ１５］
前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの前記望ましい最大数に基づいて、前記スレッショルド位置に到達した後にコーディングされた各ブロック毎に前記調整可能値を減少させることをさらに備える、Ｃ１４に記載の装置。
［Ｃ１６］
前記スライス中のブロックの位置を示す前記情報を決定することは、コーディング済である前記スライス中のブロックの数を決定することを備える、Ｃ１５に記載の装置。
［Ｃ１７］
非一時的なコンピュータ可読記憶媒体であって、
その上に記憶され、実行されたときに、
ビデオデータのスライス中のブロックをコーディングさせることであって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングすることと、
前記ブロックに対応するビットをバッファに記憶することと、
前記スライス中の前記ブロックの位置を示す情報を決定することと、
前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定することとをデバイスのプロセッサにさせる命令を有する、非一時的なコンピュータ可読記憶媒体。
［Ｃ１８］
その上に記憶され、実行されたときに、前記バッファに記憶されたビットの数を決定することを前記プロセッサにさせる命令をさらに有し、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、Ｃ１７に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ１９］
前記ブロックは、ビットの一時的最大数に関連付けられ、ビットの前記一時的最大数は、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示し、前記バッファの満杯を決定することは、前記ブロックに関連付けられた、ビットの前記一時的最大数で、前記バッファに記憶されたビットの数を割り算することを備える、Ｃ１８に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２０］
その上に記憶され、実行されたときに、前記スライス中のスレッショルド位置を決定すること前記プロセッサにさせる命令をさらに有し、ここにおいて前記スレッショルド位置に到達する前にコーディングされた各ブロックは、第１の値に等しい、ビットの一時的最大数に関連付けられ、前記スレッショルド位置に到達した後にコーディングされた各ブロックは、調整可能値に等しい、ビットの一時的最大数に関連付けられ、前記調整可能値は前記第１の値未満である、Ｃ１９に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２１］
その上に記憶され、実行されたときに、前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとを前記プロセッサにさせる命令をさらに有する、Ｃ２０に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２２］
前記第１の値は前記バッファの前記最大容量に等しい、Ｃ２１に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２３］
その上に記憶され、実行されたときに、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの前記望ましい最大数に基づいて、前記スレッショルド位置に到達した後にコーディングされた各ブロック毎に前記調整可能値を減少させることを前記プロセッサにさせる命令をさらに有する、Ｃ２２に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２４］
ビデオデータのスライス中のブロックをコーディングするための手段であって、前記スライスが前記ビデオデータの１つまたは複数のブロックを備える、コーディングするための手段と、
前記ブロックに対応するビットをバッファに記憶するための手段と、
前記スライス中の前記ブロックの位置を示す情報を決定するための手段と、
前記スライス中の前記ブロックの前記位置に少なくとも部分的に基づいて前記バッファの満杯を決定するための手段とを備える、ビデオコーディングデバイス。
［Ｃ２５］
前記バッファに記憶されたビットの数を決定するための手段をさらに備え、前記バッファの満杯を決定することは、さらに前記バッファに記憶されたビットの前記決定された数に少なくとも部分的に基づく、Ｃ２４に記載のビデオコーディングデバイス。
［Ｃ２６］
前記ブロックは、ビットの一時的最大数に関連付けられ、ビットの前記一時的最大数は、前記ブロックの前記位置について前記バッファに記憶できる、ビットの望ましい最大数を示し、前記バッファの満杯を決定することは、前記ブロックに関連付けられた、ビットの前記一時的最大数で、前記バッファに記憶されたビットの数を割り算することを備える、Ｃ２５に記載のビデオコーディングデバイス。
［Ｃ２７］
前記スライス中のスレッショルド位置を決定するための手段をさらに備え、ここにおいて前記スレッショルド位置に到達する前にコーディングされた各ブロックは、第１の値に等しい、ビットの一時的最大数に関連付けられ、前記スレッショルド位置に到達した後にコーディングされた各ブロックは、調整可能値に等しい、ビットの一時的最大数に関連付けられ、前記調整可能値は前記第１の値未満である、Ｃ２６に記載のビデオコーディングデバイス。
［Ｃ２８］
前記バッファの最大容量と、前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの望ましい最大数とを決定することとをさらに備える、Ｃ２７に記載のビデオコーディングデバイス。
［Ｃ２９］
前記第１の値は前記バッファの前記最大容量に等しい、Ｃ２８に記載のビデオコーディングデバイス。
［Ｃ３０］
前記スライスが完全にコーディングされた後に前記バッファに記憶されることになるビットの前記望ましい最大数に基づいて、前記スレッショルド位置に到達した後にコーディングされた各ブロック毎に前記調整可能値を減少させるための手段をさらに備える、Ｃ２９に記載のビデオコーディングデバイス。
【図１Ａ】
0006644766.tif 000002
【図１Ｂ】
0006644766.tif 000003
【図２Ａ】
0006644766.tif 000004
【図２Ｂ】
0006644766.tif 000005
【図３】
0006644766.tif 000006
【図４】
0006644766.tif 000007
【図５】
0006644766.tif 000008