(57)【特許請求の範囲】
【請求項１】
ビデオデータをコーディングするための方法であって、
前記ビデオデータの前のブロックについての第1の複雑度の値、前記ビデオデータの現在のブロックについての第2の複雑度の値、および前記ビデオデータの次のブロックについての第3の複雑度の値を判断するステップであって、前記第1、前記第2、および前記第3の複雑度の値は、前記ビデオデータの前記前のブロック、前記現在のブロック、および前記次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、前記ビデオデータの前記前、前記現在、および前記次のブロックは、コーディング順序が連続し、同じスライス中に位置する、ステップと、
前記第1、前記第2、および前記第3の複雑度の値に少なくとも基づいて、前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断するステップであって、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、前記複雑度の閾値未満である複雑度の値を有する、ステップと、
前記現在のブロックが複雑領域から平坦領域への遷移を含むかどうかの前記判断に少なくとも基づいて、前記現在のブロックについての量子化パラメータ(QP)値を算出するステップと、
前記算出されたQP値に少なくとも基づいて、前記ビデオデータをコーディングするステップとを含む方法。
【請求項２】
前記第1、第2、および第3の複雑度の値を判断する前記ステップは、
前記前、現在、および次のブロックのうちの1つを選択するステップと、
前記選択されたブロックに変換を適用することにより、複数の変換係数を算出するステップと、
前記変換係数の絶対値または絶対2乗値を合計することにより、前記選択されたブロックに対応する前記複雑度の値を判断するステップとを含む、請求項1に記載の方法。
【請求項３】
前記第1、第2、および第3の複雑度の値を判断する前記ステップは、前記複数の変換係数を算出する前記ステップの前に、前記選択されたブロックに色変換を適用するステップをさらに含む、請求項2に記載の方法。
【請求項４】
前記前、現在、および次のブロックの各々についての前記複雑度の値を判断する前記ステップは、
対応するブロックに変換を適用することにより、複数の変換係数を算出するステップと、
各色チャネル用の前記変換係数のサブセットの絶対値または絶対2乗値を合計するステップと、
各色チャネルについての前記絶対値または前記絶対2乗値の前記合計を正規化するステップと、
各色チャネルについての前記絶対値または前記絶対2乗値の前記正規化合計に、対応する重みを適用するステップと、
前記色チャネルの各々についての前記重み付けされた正規化合計を合計することにより、前記対応するブロックの前記複雑度の値を判断するステップとを含む、請求項1に記載の方法。
【請求項５】
前記ビデオデータの現在のスライスについての最大複雑度の値を判断するステップをさらに含み、前記現在のブロックが前記複雑領域から前記平坦領域への前記遷移を含むかどうか判断する前記ステップは前記最大複雑度の値にさらに基づく、請求項1に記載の方法。
【請求項６】
前記ビデオデータの前記現在のスライスについての前記最大複雑度の値を判断する前記ステップは、
前記前のブロックが前記現在のスライス中の第1のブロックであり、前記現在のブロックが前記現在のスライス中の第2のブロックであるとき、前記最大複雑度の値を、前記第1および第2の複雑度の値の間の最大値に初期化するステップと、
前記最大複雑度の値を、前記最大複雑度の値と前記第3の複雑度の値との間の最大値に更新するステップとを含む、請求項5に記載の方法。
【請求項７】
前記現在のブロックが前記複雑領域から前記平坦領域への前記遷移を含むかどうか判断する前記ステップは、
前記次のブロックについての前記第3の複雑度の値に少なくとも基づいて、第1の条件が満足されるかどうか判断するステップと、
前記前のブロックについての前記第1の複雑度の値に少なくとも基づいて、第2の条件が満足されるかどうか判断するステップを含む、請求項1に記載の方法。
【請求項８】
前記第1の条件は、条件
((Ccur-Cnext)>Cmax*T1)&&(Cnext<T2*Cmax)
が真であるときに満足され、上式で、Ccurは前記第2の複雑度の値であり、Cnextは前記第3の複雑度の値であり、Cmaxは前記最大複雑度の値であり、T1およびT2は第1および第2の閾値である、請求項7に記載の方法。
【請求項９】
前記第2の条件が満足されるかどうか判断する前記ステップは、
前記第3の複雑度の値が第3の閾値以下であるかどうか判断するステップと、
前記第1の複雑度の値が第4の閾値よりも大きいかどうか判断するステップと、
前記第3の複雑度の値が前記第3の閾値以下であり、前記第1の複雑度の値が前記第4の閾値よりも大きいとき、前記第2の条件が満足されると判断するステップとを含む、請求項7に記載の方法。
【請求項１０】
ビデオデータをコーディングするためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信しているプロセッサとを備え、前記プロセッサは、
前記ビデオデータの前のブロックについての第1の複雑度の値、前記ビデオデータの現在のブロックについての第2の複雑度の値、および前記ビデオデータの次のブロックについての第3の複雑度の値を判断し、前記第1、前記第2、および前記第3の複雑度の値は、前記ビデオデータの前記前のブロック、前記現在のブロック、および前記次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、前記ビデオデータの前記前、前記現在、および前記次のブロックは、コーディング順序が連続し、同じスライス中に位置し、
前記第1、第2、および第3の複雑度の値に少なくとも基づいて、前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断し、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、前記平坦領域は、前記複雑度の閾値未満である複雑度の値を有し、
前記現在のブロックが複雑領域から平坦領域への遷移を含むかどうかの前記判断に少なくとも基づいて、前記現在のブロックについての量子化パラメータ(QP)値を算出し、
前記算出されたQP値に少なくとも基づいて、前記ビデオデータをコーディングするように構成される、デバイス。
【請求項１１】
前記プロセッサは、
前記前、現在、および次のブロックのうちの1つを選択し、
前記選択されたブロックに変換を適用することにより、複数の変換係数を算出し、
前記変換係数の絶対値または絶対2乗値を合計することにより、前記選択されたブロックに対応する前記複雑度の値を判断するようにさらに構成される、請求項10に記載のデバイス。
【請求項１２】
前記プロセッサは、前記複数の変換係数を前記算出することの前に、前記選択されたブロックに色変換を適用するようにさらに構成される、請求項11に記載のデバイス。
【請求項１３】
前記プロセッサは、
対応するブロックに変換を適用することにより、複数の変換係数を算出し、
各色チャネル用の前記変換係数のサブセットの絶対値または絶対2乗値を合計し、
各色チャネルについての前記絶対値または前記絶対2乗値の前記合計を正規化し、
各色チャネルについての前記絶対値または前記絶対2乗値の前記正規化合計に、対応する重みを適用し、
前記色チャネルの各々についての前記重み付けされた正規化合計を合計することにより、前記対応するブロックの前記複雑度の値を判断するようにさらに構成される、請求項10に記載のデバイス。
【請求項１４】
前記プロセッサは、前記ビデオデータの現在のスライスについての最大複雑度の値を判断するようにさらに構成され、前記現在のブロックが前記複雑領域から前記平坦領域への前記遷移を含むかどうかを前記判断することは、前記最大複雑度の値にさらに基づく、請求項10に記載のデバイス。
【請求項１５】
前記プロセッサは、
前記前のブロックが前記現在のスライス中の第1のブロックであり、前記現在のブロックが前記現在のスライス中の第2のブロックであるとき、前記最大複雑度の値を、前記第1および第2の複雑度の値の間の最大値に初期化し、
前記最大複雑度の値を、前記最大複雑度の値と前記第3の複雑度の値との間の最大値に更新するようにさらに構成される、請求項14に記載のデバイス。
【請求項１６】
前記プロセッサは、
前記次のブロックについての前記第3の複雑度の値に少なくとも基づいて、第1の条件が満足されるかどうか判断し、
前記前のブロックについての前記第1の複雑度の値に少なくとも基づいて、第2の条件が満足されるかどうか判断するようにさらに構成される、請求項10に記載のデバイス。
【請求項１７】
前記第1の条件は、条件
((Ccur-Cnext)>Cmax*T1)&&(Cnext<T2*Cmax)
が真であるときに満足され、上式で、Ccurは前記第2の複雑度の値であり、Cnextは前記第3の複雑度の値であり、Cmaxは前記最大複雑度の値であり、T1およびT2は第1および第2の閾値である、請求項16に記載のデバイス。
【請求項１８】
前記プロセッサは、
前記第3の複雑度の値が第3の閾値以下であるかどうか判断し、
前記第1の複雑度の値が第4の閾値よりも大きいかどうか判断し、
前記第3の複雑度の値が前記第3の閾値以下であり、前記第1の複雑度の値が前記第4の閾値よりも大きいとき、前記第2の条件が満足されると判断するようにさらに構成される、請求項16に記載のデバイス。
【請求項１９】
ビデオデータの前のブロックについての第1の複雑度の値、前記ビデオデータの現在のブロックについての第2の複雑度の値、および前記ビデオデータの次のブロックについての第3の複雑度の値を判断するための手段であって、前記第1、前記第2、および前記第3の複雑度の値は、前記ビデオデータの前記前のブロック、前記現在のブロック、および前記次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、前記ビデオデータの前記前、前記現在、および前記次のブロックは、コーディング順序が連続し、同じスライス中に位置する、手段と、
前記第1、第2、および第3の複雑度の値に少なくとも基づいて、前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断するための手段であって、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、前記複雑度の閾値未満である複雑度の値を有する、手段と、
前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうかの前記判断に少なくとも基づいて、前記現在のブロックについての量子化パラメータ(QP)値を算出するための手段とを備える装置。
【請求項２０】
前記第1、第2、および第3の複雑度の値を判断するための前記手段は、
前記前、現在、および次のブロックのうちの1つを選択するための手段と、
前記選択されたブロックに変換を適用することにより、複数の変換係数を算出するための手段と、
前記変換係数の絶対値または絶対2乗値を合計することにより、前記選択されたブロックに対応する前記複雑度の値を判断するための手段とを備える、請求項19に記載の装置。
【請求項２１】
前記第1、第2、および第3の複雑度の値を判断するための前記手段は、前記複数の変換係数を前記算出することの前に、前記選択されたブロックに色変換を適用するための手段をさらに備える、請求項20に記載の装置。
【請求項２２】
前記前、現在、および次のブロックの各々についての前記複雑度の値を判断するための前記手段は、
対応するブロックに変換を適用することにより、複数の変換係数を算出するための手段と、
各色チャネル用の前記変換係数のサブセットの絶対値または絶対2乗値を合計するための手段と、
各色チャネルについての前記絶対値または前記絶対2乗値の前記合計を正規化するための手段と、
各色チャネルについての前記絶対値または前記絶対2乗値の前記正規化合計に、対応する重みを適用するための手段と、
前記色チャネルの各々についての前記重み付けされた正規化合計を合計することにより、前記対応するブロックの前記複雑度の値を判断するための手段とを備える、請求項19に記載の装置。
【請求項２３】
前記ビデオデータの現在のスライスについての最大複雑度の値を判断するための手段をさらに備え、前記現在のブロックが前記複雑領域から前記平坦領域への前記遷移を含むかどうか判断する前記手段は前記最大複雑度の値にさらに基づく、請求項19に記載の装置。
【請求項２４】
前記ビデオデータの前記現在のスライスについての前記最大複雑度の値を判断するための前記手段は、
前記前のブロックが前記現在のスライス中の第1のブロックであり、前記現在のブロックが前記現在のスライス中の第2のブロックであるとき、前記最大複雑度の値を、前記第1および第2の複雑度の値の間の最大値に初期化するための手段と、
前記最大複雑度の値を、前記最大複雑度の値と前記第3の複雑度の値との間の最大値に更新するための手段とを備える、請求項23に記載の装置。
【請求項２５】
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、デバイスのプロセッサに、
ビデオデータの前のブロックについての第1の複雑度の値、前記ビデオデータの現在のブロックについての第2の複雑度の値、および前記ビデオデータの次のブロックについての第3の複雑度の値を判断させ、前記第1、前記第2、および前記第3の複雑度の値は、前記ビデオデータの前記前のブロック、前記現在のブロック、および前記次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、前記ビデオデータの前記前、前記現在、および前記次のブロックは、コーディング順序が連続し、同じスライス中に位置し、
前記第1、第2、および第3の複雑度の値に少なくとも基づいて、前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断させ、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、前記複雑度の閾値未満である複雑度の値を有し、
前記現在のブロックが、複雑領域から平坦領域への遷移を含むかどうかの前記判断に少なくとも基づいて、前記現在のブロックについての量子化パラメータ(QP)値を算出させる、コンピュータ可読記憶媒体。
【請求項２６】
実行されると、前記プロセッサに、
前記前、現在、および次のブロックのうちの1つを選択させ、
前記選択されたブロックに変換を適用することにより、複数の変換係数を算出させ、
前記変換係数の絶対値または絶対2乗値を合計することにより、前記選択されたブロックに対応する前記複雑度の値を判断させる命令をさらに記憶した、請求項25に記載のコンピュータ可読記憶媒体。
【請求項２７】
実行されると、前記プロセッサに、前記複数の変換係数を前記算出することの前に、前記選択されたブロックに色変換を適用させる命令をさらに記憶した、請求項26に記載のコンピュータ可読記憶媒体。
【請求項２８】
実行されると、前記プロセッサに、
対応するブロックに変換を適用することにより、複数の変換係数を算出させ、
各色チャネル用の前記変換係数のサブセットの絶対値または絶対2乗値を合計させ、
各色チャネルについての前記絶対値または前記絶対2乗値の前記合計を正規化させ、
各色チャネルについての前記絶対値または前記絶対2乗値の前記正規化合計に、対応する重みを適用させ、
前記色チャネルの各々についての前記重み付けされた正規化合計を合計することにより、前記対応するブロックの前記複雑度の値を判断させる命令をさらに記憶した、請求項25に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオコーディングおよび圧縮の分野に関し、詳細には、ディスプレイストリーム圧縮(DSC)など、ディスプレイリンクを介した送信のためのビデオ圧縮に関する。
【背景技術】
【０００２】
デジタルビデオ能力は、デジタルテレビジョン、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップモニタ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲のディスプレイに組み込まれ得る。ディスプレイリンクは、ディスプレイを適切なソースデバイスに接続するのに使われる。ディスプレイリンクの帯域幅要件は、ディスプレイの解像度に比例し、したがって、高解像度ディスプレイは広帯域幅ディスプレイリンクを要する。いくつかのディスプレイリンクは、高解像度ディスプレイをサポートするための帯域幅をもたない。ビデオ圧縮は、高解像度ディスプレイにデジタルビデオを提供するのにより低帯域幅のディスプレイリンクを使えばよいように、帯域幅要件を削減するのに使われ得る。
【０００３】
他のやり方では、ピクセルデータに対して画像圧縮を使用することを試みた。ただし、そのような方式は、視覚的に無損失ではないこともあり、または従来のディスプレイデバイスにおいて実装するのが難しく、コストがかかる場合がある。
【０００４】
ビデオエレクトロニクススタンダーズアソシエーション(VESA:Video Electronics Standards Association)が、ディスプレイリンクビデオ圧縮のための規格としてディスプレイストリーム圧縮(DSC)を開発した。DSCなどのディスプレイリンクビデオ圧縮技法は、特に、視覚的に無損失である(すなわち、圧縮がアクティブであることがユーザにわからない程十分に優れている)ピクチャ品質を提供するべきである。ディスプレイリンクビデオ圧縮技法は、従来のハードウェアを用いてリアルタイムで実装するのが容易であり、コストがかからない方式も提供するべきである。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示のシステム、方法、およびデバイスは、それぞれ、複数の革新的態様を有し、それらの態様のうちのどれ1つ本明細書に開示されている望ましい属性に単独で関与することはない。
【０００６】
一態様では、ビデオデータをコーディングするための方法は、ビデオデータの前のブロックについての第1の複雑度の値、ビデオデータの現在のブロックについての第2の複雑度の値、およびビデオデータの次のブロックについての第3の複雑度の値を判断するステップであって、第1、第2、および第3の複雑度の値は、ビデオデータの前のブロック、現在のブロック、および次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表す、ステップと、第1、第2、および第3の複雑度の値に少なくとも部分的に基づいて、現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断するステップであって、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、複雑度の閾値未満である複雑度の値を有する、ステップと、現在のブロックが複雑領域から平坦領域への遷移を含むかどうかの判断に少なくとも部分的に基づいて、ビデオデータをコーディングするステップとを含む。
【０００７】
別の態様では、ビデオデータをコーディングするためのデバイスは、ビデオデータを記憶するように構成されたメモリと、メモリと通信するプロセッサとを備え、プロセッサは、ビデオデータの前のブロックについての第1の複雑度の値、ビデオデータの現在のブロックについての第2の複雑度の値、およびビデオデータの次のブロックについての第3の複雑度の値を判断し、第1、第2、および第3の複雑度の値は、ビデオデータの前のブロック、現在のブロック、および次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、第1、第2、および第3の複雑度の値に少なくとも部分的に基づいて、現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断し、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、複雑度の閾値未満である複雑度の値を有し、現在のブロックが複雑領域から平坦領域への遷移を含むかどうかの判断に少なくとも部分的に基づいて、ビデオデータをコーディングするように構成される。
【０００８】
さらに別の態様では、装置は、ビデオデータの前のブロックについての第1の複雑度の値、ビデオデータの現在のブロックについての第2の複雑度の値、およびビデオデータの次のブロックについての第3の複雑度の値を判断するための手段であって、第1、第2、および第3の複雑度の値は、ビデオデータの前のブロック、現在のブロック、および次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表す、手段と、第1、第2、および第3の複雑度の値に少なくとも部分的に基づいて、現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断するための手段であって、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、複雑度の閾値未満である複雑度の値を有する、手段とを備える。
【０００９】
またさらに別の態様では、非一時的コンピュータ可読記憶媒体は命令を記憶し、命令は、実行されると、デバイスのプロセッサに、ビデオデータの前のブロックについての第1の複雑度の値、ビデオデータの現在のブロックについての第2の複雑度の値、およびビデオデータの次のブロックについての第3の複雑度の値を判断させ、第1、第2、および第3の複雑度の値は、ビデオデータの前のブロック、現在のブロック、および次のブロックのうちの対応する1つのブロックのテクスチャまたは空間周波数のうちの少なくとも1つを表し、第1、第2、および第3の複雑度の値に少なくとも部分的に基づいて、現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断させ、複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、複雑度の閾値未満である複雑度の値を有する。
【図面の簡単な説明】
【００１０】
【図１Ａ】本開示で説明する態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図１Ｂ】本開示で説明する態様による技法を実施し得る別の例示的なビデオ符号化および復号システムを示すブロック図である。
【図２Ａ】本開示で説明する態様による技法を実装し得るビデオエンコーダの例を示すブロック図である。
【図２Ｂ】本開示で説明する態様による技法を実装し得るビデオデコーダの例を示すブロック図である。
【図３】本開示に記載する態様による平坦度検出方法において使われるいくつかのピクセルの例を示すブロック図である。
【図４】本開示で説明する態様による技法を実施し得る平坦度検出器の例を示すブロック図である。
【図５】本開示に記載する態様による平坦度検出のための方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
概して、本開示は、ディスプレイストリーム圧縮(DSC)などのビデオ圧縮技法のコンテキストでの、ビデオデータにおける平坦度検出の方法に関する。より詳細には、本開示は、ビデオデータの複雑領域からビデオデータの平坦領域への遷移が起こる、ビデオデータ内の遷移ブロックを識別するためのシステムおよび方法に関する。
【００１２】
いくつかの実施形態は、DSC規格のコンテキストにおいて本明細書において説明されるが、本明細書で開示するシステムおよび方法は、どの適切なビデオコーディング規格にも適用可能であり得ることが当業者には諒解されよう。たとえば、本明細書で開示する実施形態は、国際電気通信連合(ITU)電気通信規格化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)Moving Picture Experts Group-1(MPEG 1)Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG 4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)、および高効率ビデオコーディング(HEVC)という規格のうちの1つまたは複数、ならびにそのような規格の拡張に適用可能であり得る。また、本開示に記載する技法は、将来開発される規格の一部になる可能性がある。言い換えると、本開示に記載する技法は、以前開発されたビデオコーディング規格、現在開発中のビデオコーディング規格、および今度のビデオコーディング規格に適用可能であり得る。
【００１３】
DSC規格は、複雑領域から平坦領域への、および平坦領域から複雑領域への、ビデオデータ中での遷移の検出を含む。ビデオデータの平坦度のそのような遷移は、DSCによって、ビデオデータをコーディングする際に使われるコーディングパラメータを決定するのに使うことができる。これらのコーディングパラメータは、部分的には、ビデオの歪みを最小限にすると同時に、圧縮ビデオがDSC規格の帯域幅要件を満たすように決定される。
【００１４】
DSCなどのビデオ圧縮技法は、ビデオデータの複雑領域からビデオデータの平坦領域への遷移を検出するための平坦度検出を含み得る。平坦度検出のいくつかの方法において、ビデオデータの各グループまたはビデオデータの各ブロックが、グループが「複雑」であるか、それとも「平坦」であるかを定義する、ビットストリーム中の関連パラメータによりシグナリングされ、さらに、平坦とシグナリングされると、グループがやや平坦であるか、それとも非常に平坦であるかに関する、平坦度のタイプがシグナリングされる。したがって、シグナリングされる情報は、圧縮ビデオデータ中に含まれるデータを増やし得る。さらに、これらの平坦度検出技法は、検討されているピクセル(たとえば、前のピクセル、ピクセルの現在のグループ、および/またはピクセルの次のグループ)の最大および最小値に基づき得る。したがって、これらの平坦度検出技法は、最大および最小値が、たとえば、グループ内の局地的変動に関する情報をキャプチャすることができないので、より大きいグループまたはブロックサイズまでは拡張することができず、したがって、グループの平坦度を適切に表すことができない。
【００１５】
したがって、本開示の少なくとも1つの態様は、ビデオデータの前のブロック、現在のブロック、および次のブロックの各々の複雑度算出を含む平坦度検出方法に関する。現在のブロックの平坦度は、前、現在、および次のブロックの複雑度に基づいて判断することができる。たとえば、平坦度は、現在のブロックのテクスチャおよび/または空間周波数の測度であり得る。したがって、ブロック中での局地的変動に関する情報を適切にキャプチャすると同時に、ブロックサイズを拡大することが可能であり得る。さらに、複雑領域から平坦領域への遷移が起こる遷移ブロックを識別することができる。
【００１６】
ビデオコーディング規格
ビデオ画像、TV画像、静止画像またはビデオレコーダもしくはコンピュータによって生成された画像などのデジタル画像は、水平および垂直ライン中に配列されたピクセルまたはサンプルを含み得る。単一の画像中のピクセルの数は通常、数万である。各ピクセルは通常、ルミナンスおよびクロミナンス情報を含む。圧縮なしだと、画像エンコーダから画像デコーダへ伝えられるべき莫大な量の情報により、リアルタイムの画像送信が非現実的になる。送信されるべき情報の量を削減するために、JPEG、MPEGおよびH.263規格など、いくつかの異なる圧縮方法が開発されている。
【００１７】
ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)、およびそのような規格の拡張を含むHEVCを含む。
【００１８】
さらに、ビデオコーディング規格、すなわちDSCが、VESAによって開発されている。DSC規格は、ビデオを、ディスプレイリンクを介した送信用に圧縮することができるビデオ圧縮規格である。ディスプレイの解像度が増大すると、ディスプレイを駆動するのに求められるビデオデータの帯域幅が対応して増大する。いくつかのディスプレイリンクは、そのような解像度向けのディスプレイにビデオデータすべてを送信するための帯域幅をもたない場合がある。したがって、DSC規格は、ディスプレイリンクを介した、相互動作可能な、視覚的に損失のない圧縮のための圧縮規格を規定する。DSC1.0規格は、2014年にVESAによって公表された。DSCに対するさらなる進歩が、現在検討されている。
【００１９】
DSC規格は、H.264およびHEVCなど、他のビデオコーディング規格とは異なる。DSCは、フレーム内圧縮を含むが、フレーム間圧縮は含まず、これは、ビデオデータをコーディングする際に、DSC規格によって時間情報を使うことができないことを意味する。対照的に、他のビデオコーディング規格は、ビデオコーディング技法においてフレーム間圧縮を利用し得る。
【００２０】
ビデオコーディングシステム
新規のシステム、装置、および方法の種々の態様が、添付の図面を参照しながら以下にさらに十分に説明される。しかしながら、本開示は、多くの異なる形態で実施され得るものであり、本開示の全体を通して示される任意の特定の構造または機能に限定されるものと解釈されるべきでない。むしろ、これらの態様は、本開示が、完全で完璧となるように、および当業者に完全に本開示の範囲を伝えるように提供される。本明細書の教示に基づいて、本開示の範囲は、本開示の他の態様とは無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載の任意の数の態様を使用して、装置が実装され得るか、または方法が実施され得る。さらに、本開示の範囲は、本明細書に記載の本開示の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能性、または構造および機能性を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示する任意の態様は、特許請求の範囲の1つまたは複数の要素により具現化され得ることが理解されるべきである。
【００２１】
特定の態様について本明細書で説明するが、これらの態様の多くの変形体および置換は本開示の範囲内に入る。好ましい態様のいくつかの利益および利点に言及するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるものとし、そのうちのいくつかが例として図および好ましい態様についての以下の説明で示される。発明を実施するための形態および図面は、限定的なものではなく本開示を説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびその等価物によって規定される。
【００２２】
添付の図面は、例を示す。添付の図面において参照番号によって示される要素は、以下の説明において同様の参照番号によって示される要素に対応する。本開示において、順序を示す言葉(たとえば、「第1」、「第2」、「第3」など)で始まる名称を有する要素は、それらの要素が特定の順序を有することを必ずしも含意するわけではない。そうではなく、そのような順序を示す言葉は単に、同じまたは類似したタイプの異なる要素を指すのに使われる。
【００２３】
図1Aは、本開示で説明する態様による技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用し、記載する「ビデオコーダ」または「コーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化およびビデオ復号を総称的に指す場合がある。ビデオエンコーダおよびビデオデコーダに加え、本出願に記載する態様は、トランスコーダ(たとえば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス)およびミドルボックス(たとえば、ビットストリームを修正し、変換し、かつ/またはさもなければ操作することができるデバイス)など、他の関連デバイスに拡張され得る。
【００２４】
図1Aに示すように、ビデオコーディングシステム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。図1Aの例において、ソースデバイス12および宛先デバイス14は別個のデバイスを構成する。ただし、ソースデバイス12および宛先デバイス14は、図1Bの例に示すように、同じデバイスの上にあるか、またはその一部であってよいことに留意されたい。
【００２５】
図1Aを再度参照すると、ソースデバイス12および宛先デバイス14はそれぞれ、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイスなどを含む、様々なデバイスのいずれかを含み得る。様々な実施形態において、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備されてもよい。
【００２６】
宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備えてもよい。図1Aの例では、リンク16は、ソースデバイス12がリアルタイムで宛先デバイス14に符号化ビデオデータを送信することを可能にする通信媒体を備えてもよい。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信されてもよい。通信媒体は、無線周波数(RF)スペクトルなどの任意のワイヤレスもしくはワイヤード通信媒体、または、1つもしくは複数の物理的伝送線を備えてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成してもよい。通信媒体は、ルータ、スイッチ、基地局、または、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であってもよい任意の他の機器を含んでもよい。
【００２７】
図1Aの例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの場合には、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含んでもよい。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組合せ、などのソースを含んでもよい。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、図1Bの例に示すように、いわゆる「カメラフォン」または「ビデオフォン」を形成し得る。しかしながら、本開示で説明する技術は、一般にビデオコーディングに適用可能であってもよく、ワイヤレス用途および/またはワイヤード用途に適用されてもよい。
【００２８】
キャプチャされた、事前にキャプチャされた、またはコンピュータによって生成されたビデオは、ビデオエンコーダ20によって符号化されてもよい。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に送信され得る。符号化ビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス31上に記憶され得る。図1Aおよび図1Bに示されるビデオエンコーダ20は、図2Aに示されるビデオエンコーダ20または本明細書に記載する他のどのビデオエンコーダも含み得る。
【００２９】
図1Aの例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの場合には、入力インターフェース28は、受信機および/またはモデムを含んでもよい。宛先デバイス14の入力インターフェース28は、リンク16を介して、および/または記憶デバイス31から、符号化ビデオデータを受信し得る。リンク16を介して通信され、または記憶デバイス31上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30などのビデオデコーダが使用するための、ビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信された、記憶媒体上に記憶された、またはファイルサーバ上に記憶された符号化ビデオデータとともに含まれてもよい。
【００３０】
ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、またはその外部にあってよい。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを含み得る。
【００３１】
関連態様において、図1Bは、例示的ビデオコーディングシステム10'を示し、ここで、ソースデバイス12および宛先デバイス14は、デバイス11の上にあるか、またはその一部である。デバイス11は、「スマート」フォンなどの電話ハンドセットであってよい。デバイス11は、ソースデバイス12および宛先デバイス14と動作可能に通信するコントローラ/プロセッサデバイス13(随意で存在する)を含み得る。図1Bのビデオコーディングシステム10'、およびその構成要素は、場合によっては、図1Aのビデオコーディングシステム10、およびその構成要素と同様である。
【００３２】
ビデオエンコーダ20およびビデオデコーダ30は、DSCなどのビデオ圧縮規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4, Part10、およびAVC、HEVCと呼ばれるITU-T H.264規格など、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。本開示の技術は、しかしながら、任意の特定のコーディング規格に限定されない。ビデオ圧縮規格の他の例は、MPEG-2とITU-T H.263とを含む。
【００３３】
図1Aおよび図1Bの例には示されていないが、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体化され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。該当する場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、または、ユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠してもよい。
【００３４】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、これらのいずれもが、それぞれのデバイス内の複合エンコーダ/デコーダの一部として統合されてもよい。
【００３５】
ビデオコーディングプロセス
上で手短に言及したように、ビデオエンコーダ20はビデオデータを符号化する。ビデオデータは、1つまたは複数のピクチャを含み得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャはビデオ「フレーム」と呼ばれ得る。ビデオエンコーダ20がビデオデータを符号化するとき、ビデオエンコーダ20はビットストリームを生成し得る。ビットストリームは、ビデオデータのコード化表現を形成するビットのシーケンスを含み得る。ビットストリームは、コード化ピクチャおよび関連データを含み得る。コード化ピクチャは、ピクチャのコード化表現である。
【００３６】
ビットストリームを生成するために、ビデオエンコーダ20は、ビデオデータ中の各ピクチャに対して符号化動作を実施し得る。ビデオエンコーダ20がピクチャに対して符号化動作を実施するとき、ビデオエンコーダ20は、一連のコード化ピクチャおよび関連データを生成し得る。関連データは、量子化パラメータ(QP)などのコーディングパラメータのセットを含み得る。コード化ピクチャを生成するために、ビデオエンコーダ20は、ピクチャを、等しいサイズのビデオブロックに区分すればよい。ビデオブロックは、サンプルの2次元アレイであり得る。コーディングパラメータは、ビデオデータのすべてのブロックについてコーディングオプション(たとえば、コーディングモード)を定義し得る。コーディングオプションは、所望のレート歪み特性を達成するために選択されてよい。
【００３７】
いくつかの例では、ビデオエンコーダ20は、ピクチャを複数のスライスに区分し得る。スライスの各々は、画像またはフレーム中の領域の残りからの情報なしで単独で復号することができる、画像(たとえば、フレーム)中の空間的に別個の領域を含み得る。各画像またはビデオフレームは、単一のスライス中で符号化することもでき、いくつかのスライス中で符号化することもできる。DSCにおいて、各スライスを符号化するために割り振られるターゲットビットは、実質的に固定であり得る。ピクチャに対して符号化動作を実施することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実施し得る。ビデオエンコーダ20がスライスに対して符号化動作を実施するとき、ビデオエンコーダ20は、スライスに関連した符号化データを生成することができる。スライスに関連した符号化データは、「コード化スライス」と呼ばれ得る。
【００３８】
DSCビデオエンコーダ
図2Aは、本開示で説明する態様による技法を実装し得るビデオエンコーダ20の例を示すブロック図である。ビデオエンコーダ20は、本開示の技法のうちの一部または全部を実施するように構成され得る。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ20の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ(図示せず)が本開示で説明する技法のうちの一部または全部を実施するように構成され得る。
【００３９】
説明のために、本開示は、DSCコーディングのコンテキストにおいてビデオエンコーダ20を説明する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【００４０】
図2Aの例において、ビデオエンコーダ20は複数の機能構成要素を含む。ビデオエンコーダ20の機能構成要素は、色空間コンバータ105、バッファ110、平坦度検出器115、レートコントローラ120、予測器、量子化器、および再構築器コンポーネント125、ラインバッファ130、索引付き色履歴135、エントロピーエンコーダ140、サブストリームマルチプレクサ145、ならびにレートバッファ150を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能的構成要素を含み得る。
【００４１】
色空間コンバータ105は、入力色空間を、コーディング実装において使われる色空間にコンバートし得る。たとえば、例示的な一実施形態では、入力ビデオデータの色空間は、赤、緑、および青(RGB)色空間にあり、コーディングは、ルミナンスY、クロミナンスグリーンCg、およびクロミナンスオレンジCo(YCgCo)色空間において実装される。色空間コンバージョンは、ビデオデータへのシフトおよび加算を含む方法によって実施することができる。他の色空間中の入力ビデオデータを処理することができ、他の色空間へのコンバージョンも実施することができることに留意されたい。
【００４２】
関連態様において、ビデオエンコーダ20は、バッファ110、ラインバッファ130、および/またはレートバッファ150を含み得る。たとえば、バッファ110は、ビデオエンコーダ20の他の部分による、色空間コンバートされたビデオデータの使用に先立って、色空間コンバートされたビデオデータを保持することができる。別の例では、ビデオデータはRGB色空間中に記憶することができ、色空間コンバートされたデータはより多くのビットを要し得るので、色空間コンバージョンは必要に応じて実施すればよい。
【００４３】
レートバッファ150は、レートコントローラ120に関連して下でより詳細に記載する、ビデオエンコーダ20内のレート制御機構の一部として機能し得る。各ブロックを符号化するのに費やされるビットは、ブロックの性質に基づいてかなり大幅に変わり得る。レートバッファ150は、圧縮ビデオにおけるレート変動を平滑化することができる。いくつかの実施形態では、バッファからビットが固定ビットレートで取り出される固定ビットレート(CBR)バッファモデルが利用される。CBRバッファモデルにおいて、ビデオエンコーダ20が、ビットストリームにあまりにも多くのビットを追加した場合、レートバッファ150はオーバーフローし得る。一方、ビデオエンコーダ20は、レートバッファ150のアンダーフローを防止するために、十分なビットを追加しなければならない。
【００４４】
ビデオデコーダ側において、ビットは、ビデオデコーダ30のレートバッファ155(下でさらに詳しく記載する図2Bを参照)に固定ビットレートで追加することができ、ビデオデコーダ30は、各ブロックについて可変数のビットを削除してよい。適正な復号を確実にするために、ビデオデコーダ30のレートバッファ155は、圧縮ビットストリームの復号中に「アンダーフロー」も「オーバーフロー」もするべきでない。
【００４５】
いくつかの実施形態では、バッファフルネス(BF)は、レートバッファ150中に現在あるビットの数を表す値BufferCurrentSizeと、レートバッファ150のサイズを表すBufferMaxSize、すなわち、任意の時点でレートバッファ150中に記憶することができるビットの最大数とに基づいて定義され得る。BFは、次のように算出され得る。
BF=((BufferCurrentSize*100)/BufferMaxSize)
【００４６】
平坦度検出器115は、ビデオデータ中の複雑(すなわち、非平坦)エリアから、ビデオデータ中の平坦(すなわち、単純または均一)エリアへの変更を検出し得る。「複雑」および「平坦」という用語は、本明細書において、概して、ビデオエンコーダ20がビデオデータのそれぞれの領域を符号化するための難しさを指すのに使われる。したがって、本明細書において使われる「複雑」という用語は概して、ビデオデータの領域を、ビデオエンコーダ20が符号化するのが複雑または難しいものとして記述し、たとえば、テクスチャ化ビデオデータ、高い空間周波数、および/または符号化するのには複雑な他の特徴を含み得る。たとえば、ビデオデータの領域は、領域を符号化するのに求められるビットの数が閾値よりも大きいとき、複雑領域であると判断することができる。本明細書において使われる「平坦」という用語は概して、ビデオデータの領域を、ビデオエンコーダ20が符号化するのに簡単なものとして記述し、たとえば、ビデオデータ中の平滑勾配、低い空間周波数、および/または符号化するのが簡単な他の特徴を含み得る。たとえば、ビデオデータの領域は、領域を符号化するのに求められるビットの数が閾値未満のとき、平坦領域であると判断することができる。
【００４７】
ただし、実装形態によっては、所与の領域が複雑かそれとも平坦かの判断は、使われる符号化規格、ビデオエンコーダ20内に含まれる特定のハードウェア、符号化されるべきビデオデータのタイプなどに基づいて判断することもできる。さらに、ビデオデータ領域のいくつかのプロパティは、領域を符号化するのにいくつのビットが求められるかに影響する場合があり、たとえば、高テクスチャおよび/または高い空間周波数領域は、符号化されるのに、より低いテクスチャおよび/またはより低い空間周波数領域よりも多くのビットを要し得る。同様に、ランダムノイズを含む領域は、ビデオデータのより構造化された領域と比較して、符号化されるのに多数のビットを要し得る。したがって、いくつかの実装形態では、ビデオデータの領域は、テクスチャおよび/または空間周波数の測度(たとえば、複雑度の値)を複雑度の閾値と比較することによって、複雑および/または平坦領域と識別することができる。複雑領域と平坦領域との間の遷移は、ビデオエンコーダ20によって、符号化ビデオデータにおける量子化乱れを削減するのに使うことができる。具体的には、複雑領域から平坦領域への遷移が識別されると、レートコントローラ120ならびに予測器、量子化器、および再構築器コンポーネント125がそのような量子化乱れを削減することができる。平坦度検出およびその様々な実施形態のより詳細な説明が、下で与えられる。
【００４８】
レートコントローラ120は、コーディングパラメータのセット、たとえば、QPを決定する。QPは、レートバッファ150がオーバーフローもアンダーフローもしないことを確実にするターゲットビットレートに対するピクチャ品質を最大限にするために、レートバッファ150のバッファフルネスおよびビデオデータの画像活動度に基づいて、レートコントローラ120によって調節することができる。レートコントローラ120は、最適レート歪み特性を達成するために、ビデオデータの各ブロック向けの特定のコーディングオプション(たとえば、特定のモード)も選択する。レートコントローラ120は、歪みがビットレート制約を満足するように、すなわち、全体的な実際の符号化レートがターゲットビットレート内に収まるように、再構築画像の歪みを最小限にする。
【００４９】
予測器、量子化器、および再構築器コンポーネント125は、ビデオエンコーダ20の少なくとも3つの符号化動作を実施することができる。予測器、量子化器、および再構築器コンポーネント125は、いくつかの異なるモードで予測を実施することができる。1つの例示的な予測モードが、中央値適応予測の修正バージョンである。中央値適応予測は、無損失JPEG規格(JPEG-LS)によって実装することができる。予測器、量子化器、および再構築器コンポーネント125によって実施することができる中央値適応予測の修正バージョンは、3つの連続するサンプル値の並列予測を可能にし得る。別の例示的予測モードはブロック予測である。ブロック予測において、サンプルは、前に再構築されたピクセルから左に向かって予測される。ビデオエンコーダ20およびビデオデコーダ30は両方とも、再構築ピクセルに対して同一の探索を実施して、ブロック予測の使用を決定する場合があり、したがって、どのビットも、ブロック予測モードで送られる必要はない。成分範囲の中間点を使ってサンプルが予測される中間点予測モードも実装されてよい。中間点予測モードは、ワーストケースサンプルにおいてさえも圧縮ビデオに求められるビットの数のバウンディングを可能にし得る。
【００５０】
予測器、量子化器、および再構築器コンポーネント125は、量子化も実施する。たとえば、量子化は、シフタを使って実装され得る2のべき乗量子化器により実施することができる。2のべき乗量子化器の代わりに、他の量子化技法が実装されてもよいことに留意されたい。予測器、量子化器、および再構築器コンポーネント125によって実施される量子化は、レートコントローラ120によって決定されるQPに基づき得る。最後に、予測器、量子化器、および再構築器コンポーネント125は、逆量子化残差を予測値に加算すること、および結果がサンプル値の有効範囲の外になることを確実にすることを含む再構築も実施する。
【００５１】
予測器、量子化器、および再構築器コンポーネント125によって実施される予測、量子化、および再構築のための、上で記載した例示的手法は例示にすぎないこと、ならびに他の手法が実装されてよいことに留意されたい。予測器、量子化器、および再構築器コンポーネント125は、予測、量子化、および/または再構築を実施するための下位コンポーネントを含み得ることにも留意されたい。予測、量子化、および/または再構築は、予測器、量子化器、および再構築器コンポーネント125の代わりに、いくつかの別個のエンコーダコンポーネントによって実施されてよいことにさらに留意されたい。
【００５２】
ラインバッファ130は、予測器、量子化器、および再構築器コンポーネント125ならびに索引付き色履歴135が、バッファリングされたビデオデータを使うことができるように、予測器、量子化器、および再構築器コンポーネント125からの出力を保持する。索引付き色履歴135は、最近使われたピクセル値を記憶する。これらの最近使われたピクセル値は、専用シンタックスにより、ビデオエンコーダ20によって直接参照することができる。
【００５３】
エントロピーエンコーダ140は、予測器、量子化器、および再構築器コンポーネント125から受信された予測残差を、索引付き色履歴135と、平坦度検出器115によって識別された平坦度遷移とに基づいて符号化する。いくつかの例では、エントロピーエンコーダ140は、サブストリームエンコーダごとに、1クロックあたり3つのサンプルを符号化することができる。サブストリームマルチプレクサ145は、ヘッダなしパケット多重化方式に基づいてビットストリームを多重化することができる。こうすることにより、ビデオデコーダ30は、3つのエントロピーデコーダを並行して稼働させることができ、1クロックあたり3つのピクセルの復号を容易にする。サブストリームマルチプレクサ145は、ビデオデコーダ30によってパケットが効率的に復号され得るように、パケット順序を最適化することができる。1クロックあたり2のべき乗ピクセル(たとえば、2ピクセル/クロックまたは4ピクセル/クロック)の復号を容易にし得る、エントロピーコーディングのための異なる手法が実装されてよいことに留意されたい。
【００５４】
DSCビデオデコーダ
図2Bは、本開示で説明する態様による技法を実装し得るビデオデコーダ30の例を示すブロック図である。ビデオデコーダ30は、本開示の技法のうちの一部または全部を実施するように構成され得る。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ30の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ(図示せず)が本開示で説明する技法のうちの一部または全部を実施するように構成され得る。
【００５５】
説明のために、本開示は、DSCコーディングのコンテキストにおいてビデオデコーダ30を説明する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【００５６】
図2Bの例において、ビデオデコーダ30は複数の機能構成要素を含む。ビデオデコーダ30の機能構成要素は、レートバッファ155、サブストリームデマルチプレクサ160、エントロピーデコーダ165、レートコントローラ170、予測器、量子化器、および再構築器コンポーネント175、索引付き色履歴180、ラインバッファ185、ならびに色空間コンバータ190を含む。ビデオデコーダ30の図示する構成要素は、図2Aのビデオエンコーダ20に関連して上述した対応する構成要素に類似している。したがって、ビデオデコーダ30の構成要素の各々は、上述したビデオエンコーダ20の対応する構成要素と同様に動作し得る。
【００５７】
DSCにおけるスライス
上述したように、スライスは概して、画像またはフレーム中の領域の残りからの情報を使わずに単独で復号することができる、画像またはフレーム中の空間的に別個の領域を指す。各画像またはビデオフレームは、単一のスライス中で符号化することもでき、画像またはビデオフレームは、いくつかのスライス中で符号化することもできる。DSCにおいて、各スライスを符号化するために割り振られるターゲットビットは、実質的に固定であり得る。
【００５８】
平坦度検出
平坦度検出のための1つの技法は、複雑領域から平坦領域への遷移を識別することを伴い得る。いくつかの実装形態では、レートコントローラ120によって実施することができるレート制御アルゴリズムは、前のブロックのビットレートに少なくとも部分的に基づいて、現在のブロックについてのQP値を選択することを含む。前のブロックのビットレートが、(たとえば、高い活動度により)前に符号化されたブロックの平均ビットレートよりも高いとき、レート制御アルゴリズムは、ビットレート制約を維持するため、およびレートバッファ150がオーバーフローするのも防止するために、現在のブロックのQP値を増大させる。したがって、いくつかの連続する、前に符号化されたブロックが高度に複雑であるとき、現在のブロックのQP値は非常に高い値に達し得る。複雑領域の直後に平坦領域が続くとき、平坦領域が、高いQPで符号化される場合、視覚的な乱れが顕著であり得る。したがって、平坦領域の符号化が、低いQP値を使って実施され得るように、ビデオデータの複雑領域からビデオデータの平坦領域への、この遷移を識別することが望ましい場合がある。
【００５９】
いくつかの実装形態では、平坦度判断は、スーパーグループ(たとえば、4つの連続するグループ/ブロック)中の各グループまたはブロック(たとえば、3つのピクセル)ごとに実施される。「平坦でない」、「やや平坦」、または「非常に平坦」であり得る平坦度のタイプを判断するために、2つの平坦度チェックが実施され得る。したがって、前の例でのように、4つのグループのサイズを有する各スーパーグループに対して、4つの平坦度指示、すなわち各グループ/ブロックに対して1つがあり得る。各平坦度指示は、たとえば、対応するグループブロックが、平坦でない、やや平坦、または非常に平坦であることを示し得る。いくつかの実施形態では、やや平坦なブロックは、非常に平坦な領域よりも符号化するのが複雑または難しく、平坦でない領域よりも符号化するのが簡単である、ビデオデータの領域であると判断することができる。たとえば、ビデオデータの領域は、テクスチャおよび/または空間周波数の表現(たとえば、複雑度の値)が第1の閾値よりも大きく、第2の閾値未満であるとき、やや平坦な領域であると判断することができる。
【００６０】
図3は、ある例による、現在のピクセルグループについての平坦度判断に関与するピクセルを示す。図3を参照すると、複数のピクセル205〜235が示されている。ピクセル210、215、および220を含む現在のピクセルグループが、図3に示されている。ピクセル205は、現在のグループの前に位置するピクセルである。言い換えると、ピクセル205は前のピクセルを構成する。ピクセル225、230、および235は現在のグループの後に位置する。言い換えると、ピクセル225、230、および235は次のピクセルを構成する。
【００６１】
第1の平坦度チェックは、2つのテストを含み得る。非常に平坦なタイプの平坦度向けの第1のテストにおいて、前のピクセル205と、現在のグループのピクセル210、215、および220とを含む4つのサンプルの間で、各色成分についての最小および最大値が判断される。任意の色成分の最大値と最小値との間の差が(2<<(bitsPerComponent-8))よりも大きく、ここで<<はビット単位左シフト演算子である、場合、「非常に平坦」に対する第1のテストは失敗する。どの色成分の最大値と最小値との間の差も(2<<(bitsPerComponent-8))よりも大きくない場合は、第1のテストをパスし、たとえば、現在のピクセルグループは、非常に平坦なタイプの平坦度を有すると判断される。
【００６２】
いくつかの実施形態では、第1のテストをパスすると、第2のテストは実施されない。他の実施形態では、第2のテストは、第1のテストをパスしたかどうかにかかわらず、または第1のテストに失敗したとき、実施される。やや平坦なタイプの平坦度向けの第2のテストでは、前のピクセル205とピクセル210、215、および220とを含む4つのサンプルの間の任意の色成分の最大値と最小値との間の差が閾値よりも大きい場合、「やや平坦」についての第2のテストは失敗する。どの色成分の最大値と最小値との間の差も閾値よりも大きくない場合、第2のテストをパスし、たとえば、現在のピクセルグループは、やや平坦なタイプの平坦度を有すると判断される。いくつかの実装形態では、第2のテストにおいて使われる閾値は、QPに基づいて算出される。
【００６３】
上で記載した、第1の平坦度チェックにおける第1および第2のテストが失敗した場合、現在のグループの中のピクセルおよび次の3つのピクセルに対して(すなわち、ピクセル210〜235について)、第2の平坦度チェックが実施される。第2の平坦度チェックの間、ピクセル210〜235の最小および最大値が計算され、第1の平坦度チェックにおいて実施される同じ2つのテストが、ピクセル210〜235について実施される。
【００６４】
最後に、スーパーグループ中の各現在のグループ、たとえば、ピクセル210、215および220が、擬似コードで示される以下のプロシージャに基づいて、平坦、やや平坦または平坦でない、と分類される。
スーパーグループ中の4つのグループに対してループする{
If(!prevIsFlat&&グループが非常に平坦であるか、またはやや平坦である)
現在のグループおよび平坦度タイプがシグナリングされる
else
prevIsFlat==0
}
【００６５】
prevIsFlatの値は、前のスーパーグループが平坦度指示を有する場合、1に初期化され、他の場合、prevIsFlatの値は0に初期化される。スーパーグループ内のグループが、平坦またはやや平坦であると選択された場合、スーパーグループについてのフラグ(flatness_flagと記される)は1にセットされ、対応するグループが、関連付けられた平坦度タイプとともに、ビットストリーム中でシグナリングされる。どのグループも、平坦またはやや平坦であるものとして選択されない場合、スーパーグループについてのflatness_flagは0にセットされる。最終的に、レートコントローラ120は、現在のグループが平坦またはやや平坦であることがわかった場合、現在のグループのQP値を調節すればよい。
【００６６】
上で記載した平坦度検出方法に関連した、いくつかの制限があり得る。たとえば、これらの方法は、現在のブロックまたはグループが平坦であるか、それとも平坦でないかという明示的シグナリングを要する場合があり、さらに、現在のブロックまたはグループが平坦であるとき、平坦度のタイプ、すなわち、「非常に平坦」または「やや平坦」をシグナリングすることを要する場合がある。この明示的シグナリングに求められるビットは、上で記載した平坦度検出方法を実装するとき、達成可能な圧縮を制限する場合がある。
【００６７】
さらに、上で記載した平坦度検出方法は、大きいグループまたはブロックサイズ(すなわち、グループ/ブロック中のピクセルの数が比較的大きいとき)の平坦度検出用に拡張することができない。というのは、より大きいグループまたはブロックについての最小および最大値は、より極端な値を表す場合があり、グループ内での局地的空間変動をキャプチャするのに失敗し得るからである。
【００６８】
図4は、一実施形態による平坦度検出器115を示すブロック図である。平坦度検出器115は、3つの複雑度算出器322、324、および326、極大算出器330ならびに遷移検出器340を含み得る。複雑度算出器322、324、および326はそれぞれ、対応するブロックの複雑度を算出する。複雑度算出器322、324、および326によって算出される複雑度の値はそれぞれ、対応するブロックのテクスチャおよび/または空間周波数を表す。平坦度検出器115は、前のブロック305および次のブロック315に基づいて、現在のブロック310中で、非平坦領域から平坦領域への遷移が起きたかどうか判断し得る。平坦度検出器115は、いくつかの別個のブロックを含むものとして示されているが、実施形態によっては、ブロックは、組み合わされ、かつ/または一緒にもしくは様々な組合せで実装されてよい。
【００６９】
図4に示すように、現在、次および前のブロック305、310、および315の複雑度は、それぞれの複雑度算出器322、324および326によって算出される。現在、次および前のブロック305、310、および315の複雑度はそれぞれ、これ以降、Ccur、Cnext、Cprevと記される。極大算出器330は、現在のラインまたはスライス中でこれまでに識別された最大複雑度、すなわちCmaxを算出する。遷移検出器340は、算出された複雑度の値Ccur、Cnext、CprevおよびCmaxに基づいて、複雑領域から平坦領域への遷移を識別する。いくつかの実装形態では、ラインまたはスライス中の第1のブロックを符号化する間、Cmaxは、CcurとCnextとの間の極大で初期化される。あらゆるブロックを符号化した後、Cmax値は、CmaxとCnextとの間の極大に基づいて更新される。最後に、現在のブロック310のQP値は、遷移検出器340によって、現在のブロック310中で複雑領域から平坦領域への遷移が識別されたかどうかに少なくとも部分的に基づいて算出される。いくつかの実装形態では、現在のブロック310中で複雑領域から平坦領域への遷移が識別されたとき、QP値は、比較的低い値に設定される。
【００７０】
一実装形態では、極大算出器330は、スライス中の各ラインについて、Cmax値を単独で算出する。つまり、各新規ライン中の第1のブロックについて、極大算出器330は、CmaxをCcurとCnextとの間の極大で初期化し、さらに、CmaxおよびCnextの極大に基づいてCmaxを更新する。
【００７１】
例示的な実施形態による、選択されたブロックについての複雑度算出(すなわち、それぞれの前、現在および次のブロック305、310、および315についての、複雑度算出器322、324、および326によって実施される算出)について、ここでより詳しく記載する。選択されたブロックの複雑度の値は、最初に、選択されたブロックに特定の変換を適用し、次いで、変換係数の絶対値または絶対2乗値を合計することによって算出される。いくつかの実装形態では、ルーマチャネルのみが、複雑度の値を算出するのに使われ、他の実装形態では、ルーマおよびクロマチャネルの両方が、複雑度の値を算出するのに使われる。例示的な一実施形態では、選択されたブロックに適用される変換は、離散コサイン変換(DCT)またはアダマール変換である。別の例では、複雑度の値は、ブロックおよびそれぞれのQP値をコーディングするのに使われるビットの数に基づいて導出することができる。別の例では、複雑度の値は、元のブロックと予測ブロックとの間の残差エネルギーに基づいて導出することができる。
【００７２】
例示的な別の実施形態では、選択されたブロックへの変換の適用によって生成された変換係数のサブセットが、絶対合計または絶対2乗合計を算出する際に使われる。本実施形態では、ブロックにおける変換係数すべてが、絶対合計または絶対2乗合計を算出する際に使われるとは限らない。
【００７３】
例示的な別の実施形態では、各変換係数は重みで乗算され、変換係数に適用される重みは、互いとは異なり得る。本実施形態では、重み付き係数の絶対値または絶対2乗値が算出される。
【００７４】
さらに別の例示的な実施形態では、変換係数を算出する前に、色変換がブロックに適用される。
【００７５】
さらに別の実施形態では、各色チャネルについて、それぞれの変換係数のサブセットの絶対または2乗値が合計され、最終的な合計が正規化される。本実施形態では、色チャネルすべての正規化合計がともに加算されて、複雑度の値を生成する。一実装形態では、正規化は、累算値を、選択されたブロック中のピクセルの数によって除算することを含む。別の実装形態では、選択されたブロック中のピクセルの数による、累算値の除算の前に、累算値を最も近い整数に丸めるために、累算値にオフセット値が加算される。たとえば、オフセット値は、2で除算された、ブロック中のピクセルの数であってよい。複雑度算出のための上述した実施形態または手法のうちの1つまたは複数は組み合わせてよいことに留意されたい。
【００７６】
別の実施形態では、各色チャネルについて、それぞれの変換係数のサブセットの絶対または2乗値が合計され、最終的な合計が正規化される。各色チャネルの正規化合計は、対応する重みで乗算すればよい。重み付けされた正規化合計は次いで、ともに加算されて、複雑度の値を導出し得る。一実装形態では、入力ビデオデータはRGB色空間内にあり、色空間コンバータ105が、入力ビデオデータをYCgCo色空間にコンバートする。この実装形態では、Yチャネルについての重みは、たとえば、1であってよく、クロマチャネルCoおよびCgについての重みの各々は、たとえば、0.5であってよい。
【００７７】
上述したように、遷移検出器340は、現在のブロック310中で、複雑領域から平坦領域への遷移が起きたかどうかを識別する。いくつかの実施形態において、複雑領域から平坦領域への遷移は、(i)次のブロック315が平坦であるときに満足される第1の条件、および(ii)前のブロック305が複雑であるときに満足される第2の条件に少なくとも部分的に基づいて、遷移検出器340によって識別される。条件(i)および(ii)が満足されるときを示すいくつかの実装形態について、以下で詳しく説明する。両方の条件(i)および(ii)が満足されるとき、レートコントローラ120は、現在のブロック310のQP値を、比較的低い値に調節する。そうではなく、条件のうちのいずれか1つが失敗した場合、レートコントローラ120は、平坦度検出器115の出力に基づいて、現在のブロック310のQP値を調節しない。
【００７８】
例示的な実施形態において、遷移検出器340は、条件
((Ccur-Cnext)>Cmax*T1)&&(Cnext<T2*Cmax)
が真である場合、条件(i)が満足されると判断することになり、上式で、T1およびT2は、構成可能な閾値パラメータである。
【００７９】
一実装形態では、((Ccur-Cnext)>Cmax*T1)中の「よりも大きい」条件チェックは、「以上」条件チェックで置き換えられ、すなわち、((Ccur-Cnext)≧Cmax*T1)&&(Cnext<T2*Cmax)となる。
【００８０】
別の実装形態では、(Cnext<T2*Cmax)中の「未満」条件チェックは、「以下」条件チェック、すなわち、(Cnext≦T2*Cmax)で置き換えられる。
【００８１】
別の実装形態では、((Ccur-Cnext)≧Cmax*T1)&&(Cnext≦T2*Cmax)という条件が、条件(i)が満足されるかどうか判断するのに使われる。
【００８２】
例示的な別の実施形態では、条件(i)は、条件
Cnext<Ccur*T
が真である場合に満足され、上式で、Tは構成可能な閾値パラメータである。
【００８３】
一実装形態では、条件チェックCnext≦Ccur*Tが、条件(i)が満足されるかどうかを見るために、上記条件チェックの代わりに使われる。
【００８４】
また別の例示的な実施形態では、条件(ii)は、条件
(Cprev>Cmax*T3)
が真である場合に満足され、上式で、T3は、構成可能な閾値パラメータである。
【００８５】
一実装形態では、(Cprev>Cmax*T3)中の「よりも大きい」条件チェックは、「以上」条件チェック、すなわち、(Cprev≧Cmax*T3)で置き換えられる。
【００８６】
例示的な別の実施形態では、条件(ii)はCprev>T4の場合に満足され、ここでT4は構成可能パラメータである。
【００８７】
一実装形態では、「よりも大きい」条件チェックCprev>T4は、「以上」条件チェック、すなわち、Cprev≧T4で置き換えられる。
【００８８】
さらに別の実施形態では、条件(ii)は、以下のアルゴリズムに基づいて評価される。
j=1〜nに対して
{
if(Cnext≦A[j])
{
if(Cprev>B[j])
{
条件(ii)が満足される;
break;
}
}
}
【００８９】
ここで、A=[a1,a2,...,an]、B=[b1,b2,...,bn]であり、ajおよびbjは、1〜nのjのすべての値について、構成可能閾値である。さらに、「n」は正の整数を表す。上記アルゴリズムにおいて、条件(ii)が満足されることがわかるとすぐに、アルゴリズムはbreakにより終了される。
【００９０】
一実装形態では、nは1にセットされ、したがって、AおよびBの各々において1つの閾値が使われる。
【００９１】
一実装形態では、「以下」条件チェック(Cnext≦A[j])は、「未満」条件チェック、すなわち、(Cnext<A[j])で置き換えられる。別の実装形態では、「よりも大きい」条件チェックCprev>B[j]は、「以上」条件チェック、すなわち、Cprev≧B[j]で置き換えられる。
【００９２】
一実装形態では、閾値a1、a2、...、anは単調な昇順である。一実装形態では、閾値b1、b2、...、bnは単調な昇順である。
【００９３】
別の実装形態では、条件チェックCprev>T4と上記アルゴリズムが組み合わされて、条件(ii)が満足されるかどうか判断する。
【００９４】
一実装形態では、上記アルゴリズム中のステップは、条件(ii)が満足されるかどうかをチェックするために最初に実践される。このアルゴリズム中のステップを完了した後、条件(ii)が満足されない場合、条件チェックCprev>T4が実践される。
【００９５】
一実装形態では、条件(i)および(ii)は、Cmax値が、構成可能な閾値T4よりも大きいか、またはそれ以上である場合にチェックされる。つまり、条件(Cmax≧T4)が満足される場合、条件(i)および(ii)は、非平坦領域から平坦領域への遷移を検出するためにチェックされる。そうではなく、条件(Cmax≧T4)が満足されない場合、条件(i)と(ii)の両方ともチェックされず、QP値は調節されない。一実装形態では、「以上」条件チェックは、厳密な「よりも大きい」条件チェック、すなわち、(Cmax>T4)で置き換えられる。
【００９６】
ビデオデータ中での複雑領域から平坦領域への遷移を識別するための例示的フローチャート
図5を参照して、ビデオデータ中での複雑領域から平坦領域への遷移を識別するための例示的手順について記載する。図5は、本開示の実施形態による、ビデオデータをコーディングするための方法400を示すフローチャートである。図5に示されるステップは、ビデオエンコーダ(たとえば、図2Aのビデオエンコーダ20)またはその構成要素によって実施することができる。便宜上、方法400は、ビデオエンコーダ20または他の構成要素であってよいビデオコーダ(単にコーダとも呼ばれる)によって実施されるものとして記載される場合がある。
【００９７】
方法400は、ブロック401において始まる。ブロック405において、コーダは、ビデオデータの前のブロックについての第1の複雑度の値、ビデオデータの現在のブロックについての第2の複雑度の値、およびビデオデータの次のブロックについての第3の複雑度の値を判断する。第1、第2、および第3の複雑度の値は、ビデオデータの前のブロック、現在のブロック、および次のブロックのうちの対応する1つのブロックのテクスチャおよび/または空間周波数を表す。いくつかの実施形態では、第1、第2、および第3の複雑度の値の各々は、対応する前、現在、および次のブロックのうちの1つに変換を適用することにより複数の変換係数を生成することによって算出することができる。これらの実施形態において、前、現在、および次のブロックに対応する複雑度の値の各々は、変換係数の絶対値または絶対2乗値を合計することにより判断される。
【００９８】
ブロック410において、コーダは、第1、第2、および第3の複雑度の値に基づいて、現在のブロックが、複雑領域から平坦領域への遷移を含むかどうか判断する。複雑領域は、複雑度の閾値を満たすか、または超える複雑度の値を有し、平坦領域は、複雑度の閾値未満である複雑度の値を有する。いくつかの実施形態では、コーダは、ビデオデータの現在のスライスについての最大複雑度の値をさらに判断する。コーダは、また、現在のブロックが複雑領域からの遷移を含むかどうか判断するために、第3の複雑度の値に少なくとも部分的に基づいて、第1の条件が満足されるかどうか判断し、第1の複雑度の値に少なくとも部分的に基づいて、第2の条件が満足されるかどうか判断することができる。ブロック415において、コーダは、現在のブロックが複雑領域から平坦領域への遷移を含むかどうかの判断に少なくとも部分的に基づいて、ビデオデータをコーディングする。方法は、ブロック420において終了する。
【００９９】
方法400において、図5に示すブロックのうちの1つもしくは複数は取り除かれて(たとえば、実施されなくて)よく、および/または方法が実施される順序は入れ換えられてよい。いくつかの実施形態では、追加ブロックが方法400に追加されてよい。本開示の実施形態は、図5に示す例にも、その例によっても限定されず、本開示の精神から逸脱することなく、他の変形形態が実装されてよい。
【０１００】
他の検討事項
本明細書で開示する情報および信号は、種々の異なる技術および技法のいずれかを使用して表すことができる。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光学場もしくは光学粒子、またはそれらの任意の組合せによって表すことができる。
【０１０１】
本明細書において開示された実施形態に関して記載された様々な例示的な論理ブロック、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装される場合がある。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、およびステップは、それらの機能性の点から一般的に上に説明されている。そのような機能性がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明された機能性を特定の適用例ごとに様々な方式で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【０１０２】
本明細書で説明した技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装することができる。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのいずれかにおいて実装され得る。デバイスまたは構成要素として記載された任意の特徴は、集積論理デバイス内で一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアに実装された場合、本技法は、実行されると、上記で説明された方法のうちの1つまたは複数を実施する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、たとえば同期式ダイナミックランダムアクセスメモリ(SDRAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光学データ記憶媒体などのようなメモリまたはデータ記憶媒体を含み得る。本技法は、追加または代替として、伝搬信号または電波などの、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１０３】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくはディスクリート論理回路のような、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示に記載された技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替実施形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。したがって、本明細書で使用する「プロセッサ」という用語は、本明細書で説明する技法の実装に適した、前述の構造、前述の構造または任意の他の構造もしくは装置の任意の組合せのうちの任意のものを指し得る。さらに、いくつかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のソフトウェアもしくはハードウェア内に提供され得るか、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれ得る。また、技法は、1つまたは複数の回路または論理要素で完全に実装されてよい。
【０１０４】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。開示する技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、またはユニットについて本開示で説明したが、これらの構成要素、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。そうではなくて、上で説明されたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、前述のような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてよい。
【０１０５】
上記は、異なる様々な実施形態に関連して記載されているが、本開示の教示から逸脱することなく、ある実施形態からの特徴または要素が、他の実施形態と組み合わされてよい。ただし、それぞれの実施形態の間での特徴の組合せは、必ずしもそれらに限定されるとは限らない。本開示の様々な実施形態が説明されてきた。これらおよび他の実施形態は、以下の特許請求の範囲に含まれる。
【符号の説明】
【０１０６】
10  ビデオコーディングシステム
10'  ビデオコーディングシステム
11  デバイス
12  ソースデバイス
13  コントローラ/プロセッサデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
105  色空間コンバータ
110  バッファ
115  平坦度検出器
120  レートコントローラ
125  予測器、量子化器、および再構築器コンポーネント
130  ラインバッファ
135  索引付き色履歴
140  エントロピーエンコーダ
145  サブストリームマルチプレクサ
150  レートバッファ
155  レートバッファ
160  サブストリームデマルチプレクサ
165  エントロピーデコーダ
170  レートコントローラ
175  予測器、量子化器、および再構築器コンポーネント
180  索引付き色履歴
185  ラインバッファ
190  色空間コンバータ
322  複雑度算出器
324  複雑度算出器
326  複雑度算出器
330  極大算出器
340  遷移検出器
【図１Ａ】
0006464192.tif 000002
【図１Ｂ】
0006464192.tif 000003
【図２Ａ】
0006464192.tif 000004
【図２Ｂ】
0006464192.tif 000005
【図３】
0006464192.tif 000006
【図４】
0006464192.tif 000007
【図５】
0006464192.tif 000008