(57)【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、前記方法は、
ビデオデータの変換ユニットの第１の係数が、第１のしきい値よりも小さい走査順序値（ｋ）を有し、前記第１の係数のレベルＩＤは０であるとき、前記第１の係数についてのデータとコードワードインデックス値との間のマッピングを決定するための第１の関数Ｅ１（ｋ）を実行することと、
前記第１の係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記コードワードインデックス値は前記第１の関数Ｅ１（ｋ）により返される値に等しいと決定することと、
前記第１の係数が前記最後有効係数でないとき、前記第１の係数のランと前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき、前記第１の係数についての前記コードワードインデックス値を決定することと、
前記コードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を備える方法。
【請求項２】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
をさらに備える、請求項１に記載の方法。
【請求項３】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
をさらに備える、請求項１に記載の方法。
【請求項４】
前記第１の関数を実行することと、前記データをコーディングすることとは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記第１の関数を実行することと、前記データをコーディングすることを備える、請求項１に記載の方法。
【請求項５】
前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングすることをさらに備える、請求項１に記載の方法。
【請求項６】
前記第１の係数についての前記データをコーディングすることは、ビデオ符号化プロセス中に前記コードワードを使用して前記第１の係数についての｛ラン、レベルＩＤ｝ペアを符号化することを備える、請求項１に記載の方法。
【請求項７】
ビデオデータを復号する方法であって、前記方法は、
コードワードインデックス値を再生するために、コードワードを復号することと、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値（ｋ）を有し、前記コードワードインデックス値がｋ＋１よりも大きくないとき、前記係数のレベルＩＤは０であると決定することと、
レベルＩＤが０であると決定された前記係数のランを決定するために第１の関数Ｅ１（ｋ）を実行することと、
前記コードワードインデックス値が前記第１の関数により返される値に等しいとき、前記係数のランはｋ＋１であると決定することと、レベルＩＤが０かつランがｋ+１である前記係数は最後有効係数であり、
前記コードワードインデックス値が前記第１の関数により返される値に等しくないとき、前記係数のランを、前記コードワードインデックス値と前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき決定することと、
決定された｛ラン、レベルＩＤ｝を使用して前記係数を復号することと、
を備える方法。
【請求項８】
前記コードワードは２値化値であり、前記データをコーディングすることは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングすることをさらに備える、請求項１に記載の方法。
【請求項９】
前記コードワードを復号することは、前記コードワードを備える２値化値を再生するためにデータをエントロピー復号することと、前記２値化値が対応する前記コードワードインデックス値を決定することと、を備える請求項７に記載の方法。
【請求項１０】
前記変換ユニットに対応する予測データを決定することと、前記変換ユニットについての残差データを再生することと、前記予測データと前記残差データとを組み合わせることと、をさらに備える請求項７に記載の方法。
【請求項１１】
前記係数についての前記データをコーディングすることは、前記第１の関数を実行した後に前記コードワードを使用して前記データを符号化することを備える、請求項１に記載の方法。
【請求項１２】
ビデオデータをコーディングするためのデバイスであって、前記デバイスは、ビデオデータの変換ユニットの第１の係数が、第１のしきい値よりも小さい走査順序値（ｋ）を有し、前記第１の係数のレベルＩＤは０であるとき、前記第１の係数についてのデータとコードワードインデックス値との間のマッピングを決定するための第１の関数Ｅ１（ｋ）を実行することと、
前記第１の係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記コードワードインデックス値は前記第１の関数Ｅ１（ｋ）により返される値に等しいと決定することと、
前記第１の係数が前記最後有効係数でないとき、前記第１の係数のランと前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき、前記第１の係数についての前記コードワードインデックス値を決定することと、
前記コードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、を行うように構成されたビデオコーダを備えるデバイス。
【請求項１３】
前記ビデオコーダは、さらに、
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行うようにさらに構成された、請求項１２に記載のデバイス。
【請求項１４】
前記ビデオコーダは、さらに、
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行うようにさらに構成された、請求項１２に記載のデバイス。
【請求項１５】
前記ビデオコーダは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに前記第１の関数を実行し、前記データをコーディングするように構成された、請求項１２に記載のデバイス。
【請求項１６】
前記ビデオコーダは、さらに、前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングするようにさらに構成された、請求項１２に記載のデバイス。
【請求項１７】
ビデオデータを復号するためのデバイスであって、前記デバイスは、
コードワードインデックス値を再生するために、コードワードを復号することと、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値（ｋ）を有し、前記コードワードインデックス値がｋ＋１よりも大きくないとき、前記係数のレベルＩＤは０であると決定することと、
レベルＩＤが０であると決定された前記係数のランを決定するために第１の関数Ｅ１（ｋ）を実行することと、
前記コードワードインデックス値が前記第１の関数により返される値に等しいとき、前記係数のランはｋ＋１であると決定することと、レベルＩＤが０かつランがｋ+１である前記係数は最後有効係数であり、
前記コードワードインデックス値が前記第１の関数により返される値に等しくないとき、前記係数のランを、前記コードワードインデックス値と前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき決定することと、
決定された｛ラン、レベルＩＤ｝を使用して前記係数を復号することと、
を行うように構成されたビデオデコーダを備えるデバイス。
【請求項１８】
前記ビデオコーダはビデオエンコーダを備える、請求項１２に記載のデバイス。
【請求項１９】
前記係数についての前記データをコーディングするために、前記ビデオエンコーダは、ビデオ符号化プロセス中に、前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを符号化するように構成された、請求項１８に記載のデバイス。
【請求項２０】
前記コードワードは２値化値であり、前記データをコーディングするために、前記ビデオコーダは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングするように構成された、請求項１２に記載のデバイス。
【請求項２１】
ビデオデータをコーディングするためのデバイスであって、前記デバイスは、
ビデオデータの変換ユニットの第１の係数が、第１のしきい値よりも小さい走査順序値（ｋ）を有し、前記第１の係数のレベルＩＤは０であるとき、前記第１の係数についてのデータとコードワードインデックス値との間のマッピングを決定するための第１の関数Ｅ１（ｋ）を実行する手段と、
前記第１の係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記コードワードインデックス値は前記第１の関数Ｅ１（ｋ）により返される値に等しいと決定する手段と、
前記第１の係数が前記最後有効係数でないとき、前記第１の係数のランと前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき、前記第１の係数についての前記コードワードインデックス値を決定する手段と、
前記コードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングする手段と、
を備えるデバイス。
【請求項２２】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行する手段と、
前記第１の係数についての前記データが前記｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい前記値を有するとき、前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングする手段と、
をさらに備える、請求項２１に記載のデバイス。
【請求項２３】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するために前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行する手段と、
前記第１の係数についての前記データが前記｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい前記値を有するとき、前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングする手段と、
をさらに備える、請求項２１に記載のデバイス。
【請求項２４】
前記第１の関数を実行する手段と、前記データをコーディングする手段とは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記第１の関数を実行する手段と、前記データをコーディングする手段とを備える、請求項２１に記載のデバイス。
【請求項２５】
前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングする手段をさらに備える、請求項２１に記載のデバイス。
【請求項２６】
ビデオデータを復号するためのデバイスであって、前記デバイスは、
コードワードインデックス値を再生するために、コードワードを復号する手段と、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値（ｋ）を有し、前記コードワードインデックス値がｋ＋１よりも大きくないとき、前記係数のレベルＩＤは０であると決定する手段と、
レベルＩＤが０であると決定された前記係数のランを決定するために第１の関数Ｅ１（ｋ）を実行する手段と、
前記コードワードインデックス値が前記第１の関数により返される値に等しいとき、前記係数のランはｋ＋１であると決定する手段と、レベルＩＤが０かつランがｋ+１である前記係数は最後有効係数であり、
前記コードワードインデックス値が前記第１の関数により返される値に等しくないとき、前記係数のランを、前記コードワードインデックス値と前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき決定する手段と、
決定された｛ラン、レベルＩＤ｝を使用して前記係数を復号する手段と、
を備えるデバイス。
【請求項２７】
前記第１の係数についての前記データをコーディングする手段は、ビデオ符号化プロセス中に前記コードワードを使用して前記第１の係数についての｛ラン、レベルＩＤ｝ペアを符号化する手段を備える、請求項２１に記載のデバイス。
【請求項２８】
前記コードワードは２値化値であり、前記データをコーディングする手段は、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングする手段をさらに備える、請求項２１に記載のデバイス。
【請求項２９】
実行されたとき、ビデオデータをコーディングするためのデバイスのプロセッサに、
ビデオデータの変換ユニットの第１の係数が、第１のしきい値よりも小さい走査順序値（ｋ）を有し、前記第１の係数のレベルＩＤは０であるとき、前記第１の係数についてのデータとコードワードインデックス値との間のマッピングを決定するための第１の関数Ｅ１（ｋ）を実行することと、
前記第１の係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記コードワードインデックス値は前記第１の関数Ｅ１（ｋ）により返される値に等しいと決定することと、
前記第１の係数が前記最後有効係数でないとき、前記第１の係数のランと前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき、前記第１の係数についての前記コードワードインデックス値を決定することと、
前記コードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行わせる命令を備えるコンピュータプログラム。
【請求項３０】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記プロセッサに、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行わせる命令をさらに備える、請求項２９に記載のコンピュータプログラム。
【請求項３１】
前記第１の係数についての前記データが、ランが前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記プロセッサに、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行わせる命令をさらに備える、請求項２９に記載のコンピュータプログラム。
【請求項３２】
前記プロセッサに前記第１の関数を実行させる前記命令と、前記プロセッサに前記データをコーディングさせる前記命令とは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記プロセッサに前記第１の関数を実行させる命令と、前記プロセッサに前記データをコーディングさせる命令とを備える、請求項２９に記載のコンピュータプログラム。
【請求項３３】
前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記プロセッサに、前記しきい値を示すシグナリング値をコーディングさせる命令をさらに備える、請求項２９に記載のコンピュータプログラム。
【請求項３４】
実行されたとき、ビデオデータを復号するためのデバイスのプロセッサに、
コードワードインデックス値を再生するために、コードワードを復号することと、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値（ｋ）を有し、前記コードワードインデックス値がｋ＋１よりも大きくないとき、前記係数のレベルＩＤは０であると決定することと、
レベルＩＤが０であると決定された前記係数のランを決定するために第１の関数Ｅ１（ｋ）を実行することと、
前記コードワードインデックス値が前記第１の関数により返される値に等しいとき、前記係数のランはｋ＋１であると決定することと、レベルＩＤが０かつランがｋ+１である前記係数は最後有効係数であり、
前記コードワードインデックス値が前記第１の関数により返される値に等しくないとき、前記係数のランを、前記コードワードインデックス値と前記第１の関数Ｅ１（ｋ）により返される値との比較に基づき決定することと、
決定された｛ラン、レベルＩＤ｝を使用して前記係数を復号することと、
を行わせる命令を備えるコンピュータプログラム。
【請求項３５】
前記プロセッサに前記コードワードを復号させる前記命令は、前記プロセッサに、前記コードワードを備える２値化値を再生するためにデータをエントロピー復号させる命令と、
前記プロセッサに、前記２値化値が対応する前記コードワードインデックス値を決定させる命令と、
を備える、請求項３４に記載のコンピュータプログラム。
【請求項３６】
前記プロセッサに前記第１の係数についての前記データをコーディングさせる前記命令は、前記プロセッサに、前記コードワードを使用して前記第１の係数についての｛ラン、レベルＩＤ｝ペアを符号化させる命令を備える、請求項２９に記載のコンピュータプログラム。
【請求項３７】
前記コードワードは２値化値であり、
前記プロセッサに前記データをコーディングさせる前記命令は、前記プロセッサに、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングさせる命令をさらに備える、請求項２９に記載のコンピュータプログラム。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、その各々の全体が参照により本明細書に組み込まれる、２０１１年６月３日に出願された米国仮出願第６１／４９３，３３７号、２０１１年７月５日に出願された米国仮出願第６１／５０４，６７３号、および２０１１年９月２３日に出願された米国仮出願第６１／５３８，６５８号の利益を主張する。
【技術分野】
【０００２】
本開示は、ビデオコーディングに関し、より詳細には、ビデオデータの残差ブロックの係数をコーディングすることに関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信および受信するために、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を実行する。ブロックベースのビデオコーディングでは、ビデオフレームまたはスライスはマクロブロックに区分され得る。各マクロブロックはさらに区分され得る。イントラコード化（Ｉ）フレームまたはスライス中のマクロブロックは、隣接マクロブロックに関する空間的予測を使用して符号化される。インターコード化（ＰまたはＢ）フレームまたはスライス中のマクロブロックは、同じフレームまたはスライス中の隣接マクロブロックに関する空間的予測、あるいは他の参照フレームに関する時間的予測を使用し得る。
【発明の概要】
【０００５】
[0005]概して、本開示では、ビデオデータのブロックの係数をコーディングするための技法について説明する。変換ユニット（ＴＵ：transform unit）など、ビデオデータのブロックは、複数の量子化変換係数を含み得る。ビデオコーディングデバイスは、非０係数についてのデータが、走査順序中の現在非０係数と後続非０係数との間の０値係数の数を表す「ラン（run）」値を用いてジョイントコーディングされる、ランレベルモードを使用して、係数をコーディングし得る。詳細には、非０係数についてのデータは、非０係数が絶対値「１」を有するのか、絶対値２以上を有するのかを示す値を備え得、このデータはレベルＩＤ（levelID）値を備え得る。ビデオコーディングデバイスは、コードワードを使用して｛ラン、レベルＩＤ｝ペアをコーディングし得、コードワードは、｛ラン、レベルＩＤ｝ペアについてのコードワードに対応するコードワードインデックスを与えるコードワードマッピングテーブルを使用して選択され得る。コードワードは、可変長コードワードまたは２値化値を備え得、２値化値は、バイナリ算術コーディングを使用してさらにコーディングされ得る。一般に、コーディングデバイスは、コードワードインデックスを決定するために２次元ルックアップテーブルを使用し、次元は、コードワードインデックスを決定するために、現在非０係数の走査順序中の位置と、ラン中の０値係数の数とを含む。本開示では、走査中のいくつかの位置についてのコードワードインデックスを決定するために、１次元テーブル、またはそのような１次元テーブルに近似する関数の使用を提案する。
【０００６】
[0006]一例では、ビデオデータをコーディングする方法は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数（last significant coefficient）であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを含む。
【０００７】
[0007]別の例では、ビデオデータをコーディングするためのデバイスは、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを行うように構成されたビデオコーダを含む。
【０００８】
[0008]別の例では、デバイスは、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行するための手段と、係数が走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングするための手段とを含む。
【０００９】
[0009]別の例では、コンピュータプログラム製品は、実行されたとき、ビデオデータをコーディングするためのデバイスのプロセッサに、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることと、を行わせる命令を記憶したコンピュータ可読媒体を含む。
【００１０】
[0010]１つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】ビデオデータのブロックの係数をコーディングするための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】ビデオデータのブロックの係数をコーディングするための技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】ビデオデータのブロックの係数をコーディングするための技法を実装し得るビデオデコーダの一例を示すブロック図。
【図４】ビデオデータのブロックの係数の例示的なジグザグ走査を示す概念図。
【図５】現在ブロックを符号化するための例示的な方法を示すフローチャート。
【図６】]現在ブロックの係数についてのコードワードインデックスを符号化するための例示的な方法を示すフローチャート。
【図７】ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャート。
【図８】現在ブロックの係数についてのコードワードインデックスを復号するための例示的な方法を示すフローチャート。
【発明を実施するための形態】
【００１２】
[0019]概して、本開示では、ビデオデータのブロックの係数をコーディングするための技法について説明する。ビデオデータは、動きをシミュレートするために、高速に連続して再生される一連のフレーム（またはピクチャ）を含む。フレームの各々はブロックに分割され得る。
【００１３】
[0020]ビデオエンコーダは、空間的および時間的冗長性を利用することによってビデオデータを圧縮することを試みる。たとえば、ビデオエンコーダは、隣接する、前にコーディングされたブロックに関してブロックをコーディングすることによって、空間的冗長性を利用し得る。同様に、ビデオエンコーダは、前にコーディングされたフレームのデータに関してブロックをコーディングすることによって、時間的冗長性を利用し得る。特に、ビデオエンコーダは、空間ネイバーのデータから、または前にコーディングされたフレームのデータから現在ブロックを予測し得、次いで、ブロックについての残差値を、ブロックについての実効値（actual value）とブロックについての予測値との間の差として計算し得る。ブロックについての残差は、ピクセル（または空間）領域中のピクセルごとの差分値を含む。
【００１４】
[0021]ビデオエンコーダは、次いで、値のエネルギーを、変換領域、たとえば、周波数領域中の比較的少数の係数に圧縮することを試みるために、（変換ユニット（ＴＵ）とも呼ばれる）残差の値に変換を適用し得る。ビデオエンコーダは、次いで、変換係数を量子化し得る。ビデオエンコーダは、さらに、量子化変換係数の２次元行列を、量子化変換係数を含む１次元ベクトルに変換するために量子化変換係数を走査し得る。係数を走査するプロセスは、係数の直列化と呼ばれることがある。
【００１５】
[0022]ビデオエンコーダは、次いで、走査された係数をエントロピー符号化するために、エントロピーコーディングプロセスを適用し得る。エントロピーコーディングは、概して、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ：context-adaptive variable length coding）とコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：context-adaptive binary arithmetic coding）とを含む。ＣＡＶＬＣは、概して、可変長コードワード（ＶＬＣ）テーブルの選択を含み、コードワードテーブルは、符号化されるべき値を可変長コードワードにマッピングする。概して、ＶＬＣテーブルは、より高い確率をもつシンボルまたは値には、より短い長さのコードワードが割り当てられるが、より低い確率をもつシンボルまたは値には、より長い長さコードワードが割り当てられるように構成される。ＣＡＶＬＣでは、係数は、一般に最高周波数から最低周波数への順序で走査される。ＣＡＢＡＣでは、コーディングされるべきデータは、最初に２値化され、２値化値を形成し、２値化値は、次いで、２進算術コーディングされ得る。２値化テーブルは、２値化値と２値化されるべきデータとの間のマッピング（または、代替的に、デコーダの場合、２値化値と対応するデータとの間のマッピング）を与え得る。
【００１６】
[0023]係数の値（すなわち、レベル）を直接コーディングするのではなく、ビデオコーディングデバイスは、次の非０係数と現在非０係数との間の走査中の０値係数の数を示す値（「ラン」または「ゼロランレングス」という用語で呼ばれる）と、現在係数が１に等しい絶対値を有するのか、１よりも大きい絶対値を有するのかについてのインジケータ（「レベルＩＤ」という用語で呼ばれる）とのペアを表す値をコーディングし得る。値のこのペアは、「ｃｎ」と呼ばれるコードワードインデックスにマッピングされ得、コードワードインデックスは、選択されたテーブル中のコードワードのインデックスに対応し得る。すなわち、コードワードマッピングテーブルは、ペア｛ラン、レベルＩＤ｝をコードワードインデックス値ｃｎにマッピングし得、値ｃｎは、テーブル中のコードワードに対応し得る。たとえば、値ｃｎは、ＶＬＣテーブル中のＶＬＣコードワード、または２値化テーブル中の２値化値に対応し得る。
【００１７】
[0024]ビデオコーディングデバイスは、走査中の現在係数の位置に基づいてｃｎへのペア｛ラン、レベルＩＤ｝のマッピングを決定し得る。値ｋは、逆走査順序中の現在係数と最後係数（すなわち、逆走査中の最後の係数）との間の係数の数に対応するとする。さらに、Ｅ（ラン，ｋ）は、位置ｋにおける｛ラン、レベルＩＤ｝ペアについてのｃｎの値を決定するときに使用されるべき値を返す関数を表すとする。Ｅ（ラン，ｋ）を使用すべきかどうかは、ｋがしきい値よりも小さいかどうかに基づき得る。
【００１８】
[0025]本開示は、いくつかの特殊な場合について、２次元テーブルではなく、関数を使用するための技法を提供する。たとえば、関数が、現在係数について、ｋがしきい値よりも小さく、ラン＝ｋ＋１、およびレベルＩＤ＝０である特殊な場合に使用され得る。Ｅ１（ｋ）は、そのような関数を表すとする。これは、それが逆走査中の最後有効（すなわち、非０値）係数に対応するという点で特殊な場合である。以下の擬似コードは、修正Ｅ１（ｋ）関数を使用するための例示的なエンコーダベースの方法を与える。
【数１】
0005937205.tif 000002
【００１９】
[0026]上記の擬似コードの実装形態および実行は、データをコーディングする（すなわち、符号化する）方法の一例を表し、本方法は、ビデオデータの変換ユニットの係数が、しきい値（Ｔ）よりも小さい走査順序値（ｋ）を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数である（すなわち、ラン＝＝ｋ＋１）とき、係数についてのデータとコードワードインデックス値との間のマッピング（ｃｎ＝Ｅ１（ｋ））を決定するために、関数（Ｅ１（ｋ））を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることと、を含む。
【００２０】
[0027]以下の擬似コードは、上記で説明した方法とは逆の例示的なデコーダベースの方法を与える。
【数２】
0005937205.tif 000003
【００２１】
[0028]上記の擬似コードの実装形態および実行は、ビデオデータをコーディングする（すなわち、復号する）方法の一例を表し、本方法は、ビデオデータの変換ユニットの係数が、しきい値（Ｔ）よりも小さい走査順序値（ｋ）を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数である（ｃｎ＝＝Ｅ１（ｋ））とき、係数についてのデータとコードワードインデックス値（ｃｎ）との間のマッピングを決定するために、関数（Ｅ１（ｋ））を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることと、を含む。
【００２２】
[0029]このようにして、上記の擬似コードの両方のセットは、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることと、を含む方法の例を表す。すなわち、エンコーダとデコーダの両方は、本開示の技法に従って、いくつかの走査順序位置についての｛ラン、レベルＩＤ｝ペアをコーディングするための同様の方法を実行するように構成され得る。
【００２３】
[0030]上記で説明した例では、Ｅ１（ｋ）は、現在係数について、ラン＝ｋ＋１およびレベルＩＤ＝０である特殊な場合のために使用される。他の特殊な場合には、コードワードインデックスを決定する際に使用するための関数が割り当てられ得る。たとえば、ｒｕｎＬｅｆｔ（ｋ）は、走査順序位置ｋにおける係数と、走査順序位置ｋのすぐ左側の位置における係数との間の走査順序中の係数の数として定義されるとする。言い換えれば、走査順序位置ｋにおける係数が位置（ｘ，ｙ）を有する場合、ｒｕｎＬｅｆｔ（ｋ）は、位置（ｘ−１，ｙ）に達するための走査順序中の係数の数を返す。｛ラン、レベルＩＤ｝を有する走査位置ｋにおける所与の係数について、ランがｒｕｎＬｅｆｔ（ｋ）に等しいとき、｛ラン、レベルＩＤ｝についてのコードワードインデックスを決定するために関数Ｅ２（ｋ）が使用され得る。
【００２４】
[0031]同様に、ランがｒｕｎＴｏｐ（ｋ）に等しいとき、位置ｋにおける｛ラン、レベルＩＤ｝についてのコードワードインデックスを決定するために関数Ｅ３（ｋ）が使用され得、ｒｕｎＴｏｐ（ｋ）は、現在係数位置の上の位置に達するための走査順序中の係数の数を返す。すなわち、走査順序位置ｋにおける現在係数が位置（ｘ，ｙ）を有すると仮定すると、ｒｕｎＴｏｐ（ｋ）は、位置（ｘ，ｙ−１）に達するための走査順序中の係数の数を返す。
【００２５】
[0032]ただ１つのしきい値を使用するのではなく、いくつかの例では、ｋが３つの範囲、すなわち、ｋ＜Ｔ０、Ｔ０≦ｋ＜Ｔ１、またはＴ１≦ｋのうちの１つ内にあるかどうかを決定するために２つのしきい値が使用され得る。このようにして、Ｔ０≦ｋ＜Ｔ１であるときのみ、上記の例は適用され得（たとえば、Ｅ１（ｋ）が使用され得）、他の場合、コードワードインデックスｃｎを選択するための従来の方法が使用され得る。
【００２６】
[0033]上記の例では、（１つまたは複数の）しきい値は、設計者または管理者などのユーザ、あるいはビデオエンコーダによって選択され得る。選択された（１つまたは複数の）しきい値は、たとえば、ピクチャパラメータセット（ＰＰＳ）、スライスパラメータセット（ＳＰＳ）、または適応パラメータセット（ＡＰＳ）中でシグナリングされ得る。代替的に、（１つまたは複数の）しきい値の（１つまたは複数の）値は、ピクチャサイズ、ピクチャタイプ、ブロックサイズ、予測モード（たとえば、インター、イントラ）、ＱＰ（量子化パラメータ）、パーティションモード（たとえば、２Ｎ×２Ｎ、Ｎ×Ｎ）、動きベクトル値、動きベクトル予測子値のうちの１つまたは複数などのサイド情報に基づいて適応的に決定され得る。サイド情報は、現在ブロックの利用可能なサイド情報であり得るか、または、すでに符号化／復号されたブロックからのサイド情報であり得る。
【００２７】
[0034]図１は、ビデオデータのブロックの係数をコーディングするための技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１６を介して符号化ビデオを宛先デバイス１４に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１４は、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス１２および宛先デバイス１４は、ワイヤレスハンドセット、いわゆるセルラー無線電話または衛星無線電話などのワイヤレス通信デバイスを備えるか、あるいは、通信チャネル１６を介してビデオ情報を通信することができ、その場合、通信チャネル１６がワイヤレスである、任意のワイヤレスデバイスを備え得る。ただし、ビデオデータのブロックの係数をコーディングすることに関係する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。たとえば、これらの技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。したがって、通信チャネル１６は、符号化ビデオデータの送信または記憶に好適なワイヤレスまたはワイヤード媒体の任意の組合せを備え得る。
【００２８】
[0035]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器（モデム）２２と、送信機２４とを含む。宛先デバイス１４は、受信機２６と、モデム２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。本開示によれば、ソースデバイス１２のビデオエンコーダ２０は、ビデオデータのブロックの係数をコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス１２は、外部カメラなど、外部ビデオソース１８からビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【００２９】
[0036]図１の図示のシステム１０は一例にすぎない。ビデオデータのブロックの係数をコーディングするための技法は、任意のデジタルビデオ符号化および／または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。その上、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が宛先デバイス１４に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス１２、１４は、デバイス１２、１４の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのためのビデオデバイス１２とビデオデバイス１４との間の一方向または双方向のビデオ送信をサポートし得る。
【００３０】
[0037]ソースデバイス１２のビデオソース１８は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および／またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース１８は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオ情報は、次いで、通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先デバイス１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【００３１】
[0038]宛先デバイス１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８はその情報を復調する。この場合も、ビデオ符号化プロセスは、ビデオデータのブロックの係数をコーディングするための本明細書で説明する技法のうちの１つまたは複数を実装し得る。チャネル１６を介して通信される情報は、ビデオエンコーダ２０によって定義され、またビデオデコーダ３０によって使用される、ブロックおよび他のコード化ユニット、たとえば、ＧＯＰの特性および／または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス３２は、復号されたビデオデータをユーザに対して表示し、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３２】
[0039]図１の例では、通信チャネル１６は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル１６は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス１２から宛先デバイス１４に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１６は、ソースデバイス１２から宛先デバイス１４への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。他の例では、ソースデバイス１２は、データを送信するのではなく、記憶媒体上に符号化データを記憶し得る。同様に、宛先デバイス１４は、記憶媒体から符号化データを取り出すように構成され得る。
【００３３】
[0040]ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例にはＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３４】
[0041]ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）とともにＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって策定された。いくつかの態様では、本開示で説明する技法は、Ｈ．２６４規格に概して準拠するデバイスに適用され得る。Ｈ．２６４規格は、ＩＴＵ−Ｔ  Ｓｔｕｄｙ  Ｇｒｏｕｐによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではＨ．２６４規格またはＨ．２６４仕様、あるいはＨ．２６４／ＡＶＣ規格または仕様と呼ぶことがある。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張に取り組み続けている。
【００３５】
[0042]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。
【００３６】
[0043]ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャのグループ（ＧＯＰ）は、概して、一連の１つまたは複数のビデオフレームを備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのフレームを記述するシンタックスデータを、ＧＯＰのヘッダ中、ＧＯＰの１つまたは複数のフレームのヘッダ中、または他の場所に含み得る。各フレームは、それぞれのフレームのための符号化モードを記述するフレームシンタックスデータを含み得る。ビデオエンコーダ２０は、一般に、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ビデオブロックは、ブロックまたはブロックのパーティションに対応し得る。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。各ビデオフレームは複数のスライスを含み得る。各スライスは複数のブロックを含み得、それらのブロックは、サブブロックとも呼ばれるパーティションに構成され得る。
【００３７】
[0044]一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、ルーマ成分については１６×１６、８×８、または４×４、およびクロマ成分については８×８などの様々なブロックサイズでのイントラ予測をサポートし、ルーマ成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、ならびにクロマ成分については対応するスケーリングされたサイズなどの様々なブロックサイズでのインター予測をサポートする。本開示では、「Ｎ×Ｎ」と「Ｎ by Ｎ」は、垂直寸法および水平寸法に関するブロックのピクセル寸法、たとえば、１６×１６ピクセルまたは１６ by １６ピクセルを指すために互換的に使用され得る。概して、１６×１６ブロックは、垂直方向に１６ピクセルを有し（ｙ＝１６）、水平方向に１６ピクセルを有する（ｘ＝１６）。同様に、Ｎ×Ｎブロックは、一般に、垂直方向にＮピクセルを有し、水平方向にＮピクセルを有し、ただし、Ｎは非負整数値を表す。ブロック中のピクセルは行と列に構成され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはＮ×Ｍピクセルを備え得、ただし、Ｍは必ずしもＮに等しいとは限らない。
【００３８】
[0045]１６×１６よりも小さいブロックサイズは、１６×１６ブロックの区分と呼ばれることがある。ビデオブロックは、ピクセル領域におけるピクセルデータのブロックを備え得、あるいは、たとえば、コード化ビデオブロックと予測ビデオブロックとの間のピクセル差分を表す残差ビデオブロックデータへの離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域における量子化変換係数のブロックを備え得る。
【００３９】
[0046]小さいビデオブロックほど、より良い解像度が得られ、高い詳細レベルを含むビデオフレームのロケーションのために使用され得る。一般に、ブロック、およびサブブロックと呼ばれることがある様々なパーティションは、ビデオブロックと見なされ得る。さらに、スライスは、ブロックおよび／またはサブブロックなど、複数のビデオブロックであると見なされ得る。各スライスは、ビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、またはフレームの他の部分が復号可能なユニットとして定義され得る。「コーディングユニット（coding unit）」という用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャグループ（ＧＯＰ）など、ビデオフレームの単独で復号可能な任意のユニット、または適用可能なコーディング技法に従って定義される別の単独で復号可能なユニットを指すことがある。
【００４０】
[0047]高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）と現在呼ばれる、新しいビデオコーディング規格を開発するための取り組みが現在進行中である。この今度の規格はＨ．２６５とも呼ばれる。この規格化の取り組みは、ＨＥＶＣテストモデル（ＨＭ：HEVC Test Model）と呼ばれるビデオコーディングデバイスのモデルに基づく。ＨＭは、たとえば、ＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣによるデバイスに勝るビデオコーディングデバイスのいくつかの能力を仮定する。たとえば、Ｈ．２６４は９つのイントラ予測符号化モードを提供するが、ＨＭは３４個ものイントラ予測符号化モードを提供する。
【００４１】
[0048]ＨＥＶＣでは、ビデオデータのブロックをコーディングユニット（ＣＵ）と呼び、ＣＵは、１つまたは複数の予測ユニット（ＰＵ：prediction unit）および／または１つまたは複数の変換ユニット（ＴＵ）を含み得る。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットである最大コーディングユニット（ＬＣＵ：largest coding unit）を定義し得る。概して、ＣＵは、ＣＵがサイズの差異を有しないことを除いて、Ｈ．２６４のマクロブロックと同様の目的を有する。したがって、ＣＵは、サブＣＵに分割され得る。概して、本開示におけるＣＵへの言及は、ピクチャの最大コーディングユニットまたはＬＣＵのサブＣＵを指すことがある。ＬＣＵはサブＣＵに分割され得、各サブＣＵはさらにサブＣＵに分割され得る。ビットストリームのシンタックスデータは、ＣＵ深さと呼ばれる、ＬＣＵが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット（ＳＣＵ：smallest coding unit）をも定義し得る。本開示ではまた、ＣＵ、ＰＵ、またはＴＵのいずれかを指すために「ブロック」という用語を使用する。
【００４２】
[0049]ＬＣＵは４分木データ構造に関連付けられ得る。概して、４分木データ構造はＣＵごとに１つのノードを含み、ルートノードはＬＣＵに対応する。ＣＵが４つのサブＣＵに分割された場合、ＣＵに対応するノードは４つのリーフノードを含み、リーフノードの各々はサブＣＵのうちの１つに対応する。４分木データ構造の各ノードは、対応するＣＵのシンタックスデータを与え得る。たとえば、４分木のノードは、そのノードに対応するＣＵがサブＣＵに分割されるかどうかを示す分割フラグを含み得る。ＣＵのシンタックス要素は、再帰的に定義され得、ＣＵがサブＣＵに分割されるかどうかに依存し得る。ＣＵがさらに分割されない場合、そのＣＵはリーフＣＵと呼ばれる。本開示では、元のリーフＣＵの明示的分割が存在しなくても、リーフＣＵの４つのサブＣＵをリーフＣＵとも呼ぶ。たとえば、１６×１６サイズのＣＵがさらに分割されない場合、この１６×１６ＣＵが決して分割されなくても、４つの８×８サブＣＵをリーフＣＵとも呼ぶ。
【００４３】
[0050]その上、リーフＣＵのＴＵもそれぞれの４分木データ構造に関連付けられ得る。すなわち、リーフＣＵは、リーフＣＵがどのようにＴＵに区分されるかを示す４分木を含み得る。本開示では、ＬＣＵがどのように区分されるかを示す４分木をＣＵ４分木と呼び、リーフＣＵがどのようにＴＵに区分されるかを示す４分木をＴＵ４分木と呼ぶ。ＴＵ４分木のルートノードは概してリーフＣＵに対応し、ＣＵ４分木のルートノードは概してＬＣＵに対応する。分割されないＴＵ４分木のＴＵはリーフＴＵと呼ばれる。
【００４４】
[0051]リーフＣＵは、１つまたは複数の予測ユニット（ＰＵ）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分を表し、そのＰＵの参照サンプル（すなわち、参照ピクセル値）を取り出すためのデータを含み得る。たとえば、ＰＵがインターモード符号化されるとき、ＰＵは、ＰＵの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度（たとえば、１／４ピクセル精度もしくは１／８ピクセル精度）、動きベクトルがポイントする参照フレーム、および／または動きベクトルの参照リスト（たとえば、リスト０もしくはリスト１）を記述し得る。（１つまたは複数の）ＰＵを定義するリーフＣＵのデータはまた、たとえば、ＣＵを１つまたは複数のＰＵに区分することを記述し得る。区分モードは、ＣＵがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかに応じて異なり得る。イントラコーディングの場合、ＰＵは、以下で説明するリーフ変換ユニットと同じように扱われ得る。
【００４５】
[0052]リーフＣＵは、１つまたは複数の変換ユニット（ＴＵ）を含み得る。変換ユニットは、上記で説明したように、ＴＵ４分木構造を使用して指定され得る。すなわち、分割フラグは、リーフＣＵが４つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットはさらに４つのサブＴＵに分割され得る。ＴＵがさらに分割されないとき、そのＴＵはリーフＴＵと呼ばれることがある。概して、イントラコーディングの場合、リーフＣＵに属するすべてのリーフＴＵは同じイントラ予測モードを共有する。すなわち、概して、リーフＣＵのすべてのＴＵの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフＴＵの残差値を、ＴＵに対応する予測値の一部と元のブロックとの間の差として計算し得る。残差値は変換され、量子化され、走査され得る。インターコーディングの場合、ビデオエンコーダは、ＰＵレベルで予測を実行し、各ＰＵの残差を計算し得る。リーフＣＵに対応する残差値は変換され、量子化され、走査され得る。インターコーディングの場合、リーフＴＵはＰＵよりも大きくまたは小さくなり得る。イントラコーディングの場合、ＰＵは、対応するリーフＴＵとコロケートされ得る。いくつかの例では、リーフＴＵの最大サイズは、対応するリーフＣＵのサイズであり得る。
【００４６】
[0053]概して、本開示では、特に明記しない限り、リーフＣＵおよびリーフＴＵに言及するためにそれぞれＣＵおよびＴＵという用語を使用する。概して、本開示の技法は、ＣＵのデータを変換し、量子化し、走査し、エントロピー符号化することに関する。一例として、本開示の技法は、ブロックを予測するために使用されたイントラ予測モードに基づいてイントラ予測されたブロックの残差値を変換するために使用すべき変換を選択することを含む。本開示ではまた、イントラ予測モード方向に依存するそのような変換に言及するために「方向性変換（directional transform）」または「設計変換（designed transform）」という用語を使用する。すなわち、ビデオエンコーダは、変換ユニット（ＴＵ）に適用すべき方向性変換を選択し得る。上記のように、イントラ予測は、あるピクチャの現在のＣＵのＴＵを、同じピクチャの前にコーディングされたＣＵおよびＴＵから予測することを含む。より詳細には、ビデオエンコーダは、特定のイントラ予測モードを使用してあるピクチャの現在のＴＵをイントラ予測し得る。
【００４７】
[0054]予測データと残差データとを生成するためのイントラ予測コーディングまたはインター予測コーディングの後、および変換係数を生成するための（Ｈ．２６４／ＡＶＣで使用される４×４または８×８整数変換、あるいは離散コサイン変換（ＤＣＴ）、または他の概念的に同様の変換などの）任意の変換の後、変換係数の量子化が実行され得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にｎビット値がｍビット値に切り捨てられ得、ｎはｍよりも大きい。
【００４８】
[0055]量子化の後に、たとえば、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング方法に従って、量子化データのエントロピーコーディングが実行され得る。ビデオエンコーダ２０は、ＶＬＣを使用してランモードで量子化変換係数をコーディングし得る。係数の値を直接コーディングするのではなく、ビデオコーディングデバイスは、最後非０係数と現在係数との間の走査中の０値係数の数を示す値（「ラン」または「ゼロランレングス」という用語で呼ばれる）と、現在係数が１に等しい絶対値を有するのか、１よりも大きい絶対値を有するのかについてのインジケータ（「レベルＩＤ」という用語で呼ばれる）とのペアを表す値をコーディングし得る。
【００４９】
[0056]ＨＥＶＣテストモデルでは、｛レベルＩＤ、ラン｝とコードワード番号ｃｎとの間のマッピングは、係数位置ｋの各値について指定される。現在のテストモデル（ＨＭ３．０）では、２つの異なる方法があり、これらの２つの方法の間の選択は、現在非０係数ロケーションｋをしきい値Ｔと比較することに依存する。詳細なプロセスは以下の通りである。
【数３】
0005937205.tif 000004
【数４】
0005937205.tif 000005
【００５０】
[0057]現在のＨＥＶＣ方式は、ｋ＜Ｔの場合、エンコーダにおける２次元テーブルＥ（ラン，ｋ）と、デコーダにおける２次元テーブルＤ（ラン，ｋ）とを記憶する。テーブルのサイズは、しきい値Ｔの値に依存する。Ｔ＝２８のとき、エンコーダとデコーダの両方が４３４個の要素を記憶する。
【００５１】
[0058]本開示の技法によれば、いくつかの走査順序位置における係数について、ビデオエンコーダ２０は、「ｃｎ」と呼ばれるコードワードインデックスを決定し得、コードワードインデックスは、選択されたテーブル、たとえば、ＶＬＣテーブルまたは２値化テーブル中のコードワードのインデックスに対応し得る。すなわち、コードワードマッピングテーブルはペア｛ラン、レベルＩＤ｝をコードワードインデックス値ｃｎにマッピングし得、値ｃｎはテーブル中のコードワードに対応し得、コードワードは、ＶＬＣコードワード、またはその後２進算術コーディングされ得る２値化値を備え得る。
【００５２】
[0059]ビデオエンコーダ２０は、走査中の現在係数の位置に基づいてｃｎへのペア｛ラン、レベルＩＤ｝のマッピングを決定し得る。値ｋは、逆走査順序中の現在係数と最後係数（すなわち、逆走査中の最後の係数）との間の係数の数に対応するとする。さらに、Ｅ（ラン，ｋ）は、位置ｋにおける｛ラン、レベルＩＤ｝ペアについてのｃｎの値を決定するときに使用されるべき値を返す関数を表すとする。Ｅ（ラン，ｋ）を使用すべきかどうかは、ｋがしきい値よりも小さいかどうかに基づき得る。
【００５３】
[0060]本開示は、いくつかの特殊な場合について、２次元テーブルではなく、関数を使用するための技法を提供する。たとえば、ビデオエンコーダ２０は、現在係数について、ｋがしきい値よりも小さく、ラン＝ｋ＋１、およびレベルＩＤ＝０である特殊な場合のための関数を実行し得る。Ｅ１（ｋ）は、そのような関数を表すとする。これは、それが逆走査中の最後有効（すなわち、非０値）係数に対応するという点で特殊な場合である。以下の擬似コードは、修正Ｅ１（ｋ）関数を使用するための例示的なエンコーダベースの方法を与える。
【数５】
0005937205.tif 000006
【００５４】
[0061]このようにして、ビデオエンコーダ２０は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを行うように構成されたコーディングデバイスの一例を表す。
【００５５】
[0062]ビデオエンコーダ２０は、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびＧＯＰベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはＧＯＰヘッダ中でビデオデコーダ３０にさらに送り得る。ＧＯＰシンタックスデータは、それぞれのＧＯＰ中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化／予測モードを示し得る。
【００５６】
[0063]ビデオデコーダ３０は、量子化変換係数を復号するための上記で説明した方法と同様の方法を実行するように構成され得る。たとえば、ビデオデコーダ３０は、以下の擬似コードによる方法を実行し得る
【数６】
0005937205.tif 000007
【００５７】
[0064]このようにして、ビデオデコーダ３０はまた、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを行うように構成されたコーディングデバイスの一例を表す。
【００５８】
[0065]いくつかの例では、ｋ＜Ｔの場合のｃｎと｛ラン、レベルＩＤ｝との間のマッピングは、上記で説明した技法に基づいて、たとえば、いくつかの位置についての関数または１次元テーブルを使用して決定され得る。ｋ≧Ｔの場合のマッピングは、いくつかの例では、従来のＨＥＶＣの場合と同様の方法で決定され得る。
【００５９】
[0066]いくつかの例によれば、コードワード番号は、以下のルールに基づいて導出される。
【数７】
0005937205.tif 000008
【００６０】
[0067] 上記の２つのルールによれば、ルール１は、レベルＩＤ０に関連するあらゆるランには、レベルＩＤ１に関連するランについてのコード番号よりも小さいコード番号が割り当てられることを示す。
【００６１】
[0068]レベルＩＤ値が与えられれば、より短いランには、ランが値ｋ＋１を有する場合以外は、より長いランについてのコード番号よりも小さいコード番号が割り当てられるように、ラン２が実行され得る。
【００６２】
[0069]２つのルールに基づいて、各｛ラン、レベルＩＤ｝についてのコード番号は、ランが値ｋ＋１を有する場合にどんなコード番号が割り当てられるかに応じて決定されることがわかるであろう。ランが値ｋ＋１を有する場合が発生する可能性が高いために、ラン値に基づくコード番号割当てが、この場合にそれほど最適でないとわかる。値ｋ（すなわち、現在係数位置）に基づいて、特殊コード番号がこの場合に与えられ得る。
【００６３】
[0070]いくつかの例によれば、各｛ラン、レベルＩＤ｝ペアにコード番号を割り当てる際に、ランが値ｋ＋１を有する場合のみが特殊コード番号を必要とするが、他の場合、コード番号の割当ては、上記の２つのルール１および２に従う。
【００６４】
[0071]いくつかの例によれば、ランが値ｋ＋１を有する場合のコード番号は、１次元テーブルＥ１（ｋ）中に保存され得る。Ｔ＝２８のとき、記憶される２８個の要素がある。これらの特殊コード番号をテーブル中に保存することは、一例にすぎないことに留意されたい。いくつかの例では、Ｅ１（ｋ）の値はまた、Ｅ１（ｋ）の要素を明示的に記憶する必要がないような式を通して得られ得る。
【００６５】
[0072]復号ルールは、単に上記の２つの符号化ルールとマッピングテーブルＥ１（ｋ）とに基づいて導出され得る。テーブルＥ１（ｋ）のサイズはＴである。Ｔ＝２８のとき、記憶される要素は２８個しかない。この場合も、いくつかの例では、Ｅ１（ｋ）の値はまた、Ｅ１（ｋ）の要素を明示的に記憶する必要がないような式を通して得られ得る。
【００６６】
[0073]符号化および復号プロセスの詳細は、以下のように記述され得る。
【００６７】
[0074]エンコーダ側において、Ｅ１（ｋ）関数とあらかじめ定義された２つのルールとの助けをかりて、以下に転載される上記のエンコーダ擬似コードに従って、（Ｅ１（ｋ）と、ランと、レベルＩＤと、位置インデックス値ｋと、に基づいて）ビデオエンコーダ２０によって以下のようにコード番号ｃｎが導出され得る。
【数８】
0005937205.tif 000009
【００６８】
[0075]デコーダ側において、コード番号ｃｎの値と現在係数の位置インデックス値ｋとに基づいてラン値とレベルＩＤ値とを導出するために、以下に転載される上記のデコーダ擬似コードに従って、ビデオデコーダ３０によって以下のような逆演算が実行され得る。
【数９】
0005937205.tif 000010
【００６９】
[0076]別の例として、上記で説明した方法は、Ｔ１＞ｋ≧Ｔ０に適用され得る（例１は、Ｔ０＝ＴおよびＴ１＝０である特殊な場合である）。ｋ＜Ｔ０またはｋ≧Ｔ１であるとき、異なる方法が使用される。Ｔ１およびＴ０は、この例では、異なるしきい値を表す。ビデオエンコーダ２０は、以下の例示的な擬似コードによる方法を実行し得る。
【数１０】
0005937205.tif 000011
【００７０】
[0077]ビデオデコーダ３０は、逆であるが、同様の方法を実行するように構成され得る。
【００７１】
[0078]さらに別の例として、Ｔ０および／またはＴ１ならびに／あるいは１次元マッピングテーブルＥ１（ｋ）の値はユーザまたはエンコーダによって選択され、選択された値はオーバーヘッド情報としてデコーダに送信される。たとえば、それらは、ＰＰＳ（ピクチャパラメータセット）、ＳＰＳ（スライスパラメータセット）、またはＡＰＳ（適応パラメータセット）中で送信され得る。
【００７２】
[0079]いくつかの例では、Ｔ０および／またはＴ１ならびに／あるいは１次元マッピングテーブルＥ１（ｋ）の値は、ピクチャサイズ、ピクチャタイプ、ブロックサイズ、予測モード（たとえば、インター、イントラ）、ＱＰ（量子化パラメータ）、パーティションモード（たとえば、２Ｎ×２Ｎ、Ｎ×Ｎ）、動きベクトル値、動きベクトル予測子値などのサイド情報に基づいて適応的に決定され得る。サイド情報は、現在ブロックの利用可能なサイド情報であり得るか、または、すでに符号化／復号されたブロックからのサイド情報であり得る。
【００７３】
[0080]いくつかの例では、ｃｎと（ラン，レベルＩＤ）＝（ｒｕｎ０，ｌｅｖ０）との間のマッピングを指定するために、１次元テーブルＥ２（ｋ）が使用される。ｒｕｎ０のいくつかの例示的な値は、ｒｕｎ＿ｌ、ｒｕｎ＿ｔおよびｋ＋１であり、ｒｕｎ＿ｌは、逆ジグザグ走査中の前の非０係数の左ロケーションに対応し、ｒｕｎ＿ｔは、前の係数の上ロケーションに対応している。以下でさらに詳細に説明する図４は、走査とこれらの位置との例を与える。たとえば、４×４ブロックでは、ｋ＝７のとき、前の係数はロケーション８（図４の１０２Ｊ）にある。ロケーション８の左ロケーションはロケーション３（図４の１０２Ｉ）であり、それはラン＝４に対応し、したがってｒｕｎ＿ｌ＝４である。ロケーション８の上ロケーションはロケーション４（図４の１０２Ｆ）であり、それはラン＝３に対応し、したがってｒｕｎ＿ｔ＝３である。エンコーダは、（ラン，レベルＩＤ）をコード番号ｃｎにマッピングするためにマッピングテーブルＥ２（ｋ）を使用し、デコーダは逆マッピングを実行する。
【００７４】
[0081]いくつかの例では、（ラン，レベルＩＤ）とｃｎとの間のマッピングを定義するためにいくつかの１次元テーブルＥｉ（ｋ）が使用される。たとえば、Ｅ１（ｋ）は、ｃｎと（ラン，レベルＩＤ）＝（ｋ＋１，０）との間のマッピングを定義し、Ｅ２（ｋ）は、ｃｎと（ラン，レベルＩＤ）＝（ｒｕｎ＿ｌ，０）との間のマッピングを定義し、Ｅ３（ｋ）は、（ラン，レベルＩＤ）＝（ｒｕｎ＿ｔ，０）の間のマッピングを定義する。他の（ラン，レベルＩＤ）の場合、ｃｎへのそれらのマッピングは、他の方法を使用して定義され得る。
【００７５】
[0082]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、適用可能なとき、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ／デコーダ（コーデック）の一部として統合され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０を含む装置は、集積回路、マイクロプロセッサ、および／またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【００７６】
[0083]たとえば、走査順序中のいくつかの位置に基づいて、いくつかの｛ラン、レベルＩＤ｝ペアについてのコードワードインデックスを決定するために関数または１次元テーブルを使用することは、様々な利益を与え得る。たとえば、２次元テーブルを１次元テーブルまたは関数と交換することは、ビデオコーディングデバイスのメモリストレージ要件を軽減し得る。コードワードインデックス値のルックアップは、いくつかの例では、関数または１次元テーブルを使用して２次元テーブルよりも高速に実行され得る。
【００７７】
[0084]図２は、ビデオデータのブロックの係数をコーディングするための技法を実装し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、マクロブロック、あるいはマクロブロックのパーティションまたはサブパーティションを含む、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースの圧縮モードのいずれかを指し、単方向予測（Ｐモード）または双方向予測（Ｂモード）などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
【００７８】
[0085]典型的なビデオエンコーダは、元のビデオシーケンスの各フレームを、「ブロック」と呼ばれる連続矩形領域に区分する。これらのブロックは、「イントラモード」（Ｉモード）、または「インターモード」（ＰモードまたはＢモード）で符号化される。
【００７９】
[0086]Ｐモードの場合、エンコーダ（およびより詳細には、動き推定ユニット４２）は、最初に、Ｆrefで示された前にコーディングされた「参照フレーム」中で符号化されているブロックと同様のブロックを探索し得る。探索は、概して、符号化されるべきブロックからのある空間変位のみになるように制限される。最良の一致、または「予測」が識別されたとき、それは２次元（２Ｄ）動きベクトル（Δｘ，Δｙ）の形態で表され、Δｘは水平変位であり、Δｙは垂直変位である。動きベクトルは、参照フレームとともに、予測ブロックＦpredを構成するために使用され得る。
【数１１】
0005937205.tif 000012
【００８０】
[0087]フレーム内のピクセルのロケーションは（ｘ，ｙ）によって示される。
【００８１】
[0088]Ｉモードで符号化されたブロックの場合、予測ブロックは、同じフレーム内の前に符号化された隣接ブロックからの空間的予測を使用して形成される。ビデオエンコーダ２０のイントラ予測ユニット４６は、ブロックをＩモードで符号化し得る。
【００８２】
[0089]ＩモードとＰモードの両方の場合、予測誤差、すなわち、符号化されているブロックと予測ブロックとの間の差は、いくつかの個別変換の重み付けされた基底関数のセットとして表される。変換は、一般に、たとえば、変換処理ユニット５２によって３２×３２、１６×１６、８×８、または４×４ブロックベースで実行される。３２×１６／１６×３２、３２×８／８×３２．．．のような他の変換も可能である。重み、すなわち変換係数は、その後、たとえば、量子化ユニット５４によって量子化される。量子化は情報に損失をもたらし、したがって、量子化係数は、元の係数よりも低い精度を有する。
【００８３】
[0090]量子化変換係数および動きベクトルは、「シンタックス要素」の例である。これらと一部の制御情報とは、ビデオシーケンスの完全なコード化表現を形成する。エンコーダからデコーダへの送信の前に、すべてのシンタックス要素は、たとえば、エントロピーコーディングユニット５６によってエントロピーコーディングされ、それにより、それらの表現のために必要とされるビット数をさらに減らす。エントロピーコーディングは、送信または記憶されたシンボル（シンタックス要素）を表すのに必要なビット数を、それらの分布の性質（いくつかのシンボルは他のシンボルよりも頻繁に生じる）を利用することによって最小限に抑えることを目的としたロスレス演算である。
【００８４】
[0091]ビデオコーダによって採用されるエントロピーコーディングの１つの方法は、可変長コード（ＶＬＣ）である。ＶＬＣコーディングの場合、コード化シンボルの各々には、最初にコードワード番号が割り当てられ得る。コーディングされるべきｎ個のシンボルがあるとき、各シンボルには、０からｎ−１にわたるコードワード番号が割り当てられ得る。その後、これらのコードワード番号の各々に、コードワード（０と１とのストリング）が割り当てられる。より短いコードワードは、より高い確率を有するシンボルに割り当てられ得る。その上、コードワードは、一意に復号可能でなければならず、すなわち、デコーダが、有限の長さの有効なビットのシーケンスを受信した場合、符号化されるときに、受信したビットのシーケンスを生成したであろう入力シンボルのただ１つの可能なシーケンスが存在しなければならない。
【００８５】
[0092]エントロピーコーディングの別の方法はコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）である。ＣＡＢＡＣでは、変換係数または｛ラン、レベルＩＤ｝ペアなど、符号化されるべき値には２値化値が割り当てられ得る。２値化値は、次いで算術コーディングされ得る。本開示の技法によれば、コードワードは２値化値に対応し得る。したがって、ビデオエンコーダ２０は、２値化値についてのコードワードインデックスを決定することによって、係数についての２値化値を決定し得る。したがって、本開示におけるコードワードを決定することへの言及は、ＶＬＣコードワードの決定と、たとえば、ＣＡＢＡＣなどの算術コーディングを使用してさらにコーディングされ得る２値化値の決定の両方を含むと理解されるべきである。
【００８６】
[0093]正しくビットストリームを復号するために、エンコーダとデコーダの両方が、コードワードの同じセット（たとえば、同じテーブル）と、コードワードへのシンボルの同じ割当てとを使用する。前に説明したように、圧縮を最大にするために、最も頻繁に生じるシンボルには、最も短いコードワードが割り当てられるべきである。しかしながら、異なるシンボルの頻度（確率）は、符号化画像のタイプに応じて変化し得る。したがって、コードワードの単一のセットと、それらのコードワードへのシンボルの単一の割当て（コードワード番号へのシンボルのマッピング）とを使用することにより、コーディング効率が低下することになる。
【００８７】
[0094]この問題を修正するために、適応の異なる方法が使用される。シンボルのセットについて、いくつかのコードワードのセットが利用可能であり得る。これらのセットのうちのどちらが使用されるかは、コード化ブロックのタイプ（Ｉ、Ｐ、またはＢタイプブロック）、成分（ルーマまたはクロマ）またはＱＰ値など、エンコーダとデコーダの両方に知られている情報に依存し得る。性能は、コードワード間で切り替えるために使用されるパラメータがどのくらい十分にシンボル統計値を特徴づけるかに依存する。
【００８８】
[0095]圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用される量子化パラメータ（ＱＰ）の値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存する。いくつかの例では、モード選択ユニット４０は、各符号化パスが異なるＱＰを使用する、複数の符号化パスを実行することによって使用すべきＱＰを決定し、たとえば、レートひずみ最適化（ＲＤＯ）と呼ばれるプロセスにおいて、ビデオデータをコーディングするために使用されるビット数と、ビデオデータ中にもたらされるひずみの量とを最も良く平衡させるＱＰを選択する。
【００８９】
[0096]図２に示すように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図２の例では、ビデオエンコーダ２０は、動き補償ユニット４４と、動き推定ユニット４２と、参照フレームメモリ６４と、加算器５０と、変換ユニット５２と、量子化ユニット５４と、エントロピーコーディングユニット５６とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理することになる。
【００９０】
[0097]符号化プロセス中に、ビデオエンコーダ２０はコーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間圧縮を行うために、１つまたは複数の参照フレーム中の１つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディングを実行する。また、イントラ予測ユニット４６は、空間圧縮を行うために、コーディングされるブロックと同じフレームまたはスライス中の１つまたは複数の近傍ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。
【００９１】
[0098]モード選択ユニット４０は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの１つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器５０に与え、参照フレームとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器６２に与え得る。上記で説明したように、モード選択ユニット４０は、ＱＰなどの他のコーディング特性とともに、適切なコーディングモードを選択するためにレートひずみ最適化を使用し得る。
【００９２】
[0099]動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム（または、他のコード化ユニット）内のコーディングされている現在のブロックに対する予測参照フレーム（または、他のコード化ユニット）内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。
【００９３】
[0100]動き推定ユニット４２は、ビデオブロックを参照フレームメモリ６４中の参照フレームのビデオブロックと比較することによってインターコード化フレームのビデオブロックの動きベクトルを計算する。動き補償ユニット４４はまた、参照フレーム、たとえば、ＩフレームまたはＰフレームのサブ整数ピクセルを補間し得る。一例として、ＩＴＵ  Ｈ．２６４規格には、符号化されている現在フレームよりも前の表示順序を有する参照フレームを含むリスト０、および符号化されている現在フレームよりも後の表示順序を有する参照フレームを含むリスト１という２つのリストが記載されている。したがって、参照フレームメモリ６４に記憶されたデータは、これらのリストに従って編成され得る。
【００９４】
[0101]動き推定ユニット４２は、参照フレームメモリ６４からの１つまたは複数の参照フレームのブロックを現在のフレーム、たとえば、ＰフレームまたはＢフレームの符号化すべきブロックと比較する。参照フレームメモリ６４中の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット４２によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット４２および／または動き補償ユニット４４はまた、サブ整数ピクセル位置の値が参照フレームメモリ６４に記憶されていない場合、参照フレームメモリ６４に記憶された参照フレームのサブ整数ピクセル位置の値を計算するように構成され得る。動き推定ユニット４２は、計算された動きベクトルをエントロピーコーディングユニット５６と動き補償ユニット４４とに送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。
【００９５】
[0102]動き補償ユニット４４は、予測ブロックに基づいて予測データを計算し得る。ビデオエンコーダ２０は、コーディングされている元のビデオブロックから、動き補償ユニット４４からの予測データを減算することによって残差ビデオブロックを形成する。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット５２は、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換などの他の変換を実行し得る。
【００９６】
[0103]ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット５２は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域（空間領域とも呼ばれる）から周波数領域などの変換領域に変換し得る。量子化ユニット５４は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。
【００９７】
[0104]量子化の後に、エントロピーコーディングユニット５６は量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット５６は、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング技法を実行し得る。エントロピーコーディングユニット５６によるエントロピーコーディングの後、符号化ビデオは、別のデバイスに送信されるか、あるいは後の送信または取出しのためにアーカイブされ得る。コンテキスト適応型バイナリ算術コーディングの場合、コンテキストは近傍マクロブロックに基づき得る。
【００９８】
[0105]本開示の技法によれば、エントロピーコーディングユニット５６は、係数（すなわち、量子化変換係数）についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行するように構成され得る。たとえば、ＶＬＣの場合、エントロピーコーディングユニット５６は、係数についてのＶＬＣコードワードを決定し得る。別の例として、ＣＡＢＡＣの場合、エントロピーコーディングユニット５６は、係数についての２値化値を決定し得、さらに２値化値をエントロピー符号化し得る。このようにして、ＣＡＢＡＣの場合、２値化値はコードワードに対応し得る。特に、ＣＡＢＡＣを使用してコーディングするときに、エントロピーコーディングユニット５６は、ＶＬＣ中のコードワードインデックス値に対応するコードワードを決定する説明と同様の方法でコードワードインデックス値に対応する２値化値を決定し得る。
【００９９】
[0106]エントロピーコーディングユニット５６は、本開示の技法を使用して｛ラン、レベルＩＤ｝ペアをコーディングし得る。たとえば、エントロピーコーディングユニット５６は、上記で説明したエンコーダ擬似コードに従って実行するように構成され得る。すなわち、いくつかの係数について、エントロピーコーディングユニット５６は、コードワードインデックス値と現在係数についてのデータとの間のマッピングを決定するための関数を実行するように構成され得る。たとえば、エントロピーコーディングユニット５６は、係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、関数を実行し得る。
【０１００】
[0107]別の例として、エントロピーコーディングユニット５６は、変換ユニットにおける第１の係数の左にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するまでの走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを有する係数に対して異なる関数を実行し得る。さらに別の例として、エントロピーコーディングユニット５６は、変換ユニットにおける第１の係数の上にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するまでの走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを有する係数に対してさらに異なる関数を実行し得る。現在係数の上および左の係数の例について、図４に関して以下により詳細に説明する。
【０１０１】
[0108]さらに、いくつかの例では、エントロピーコーディングユニット５６は、係数の走査順序値が２つのしきい値間にあるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行するように構成され得る。すなわち、エントロピーコーディングユニット５６は、走査順序値が第１のしきい値よりも小さく、第１のしきい値よりも小さい第２のしきい値よりも大きいときに、マッピングを決定するための関数を実行し得る。たとえば、Ｔ1は第１のしきい値を表し、Ｔ2は第２のしきい値を表し、ｋは係数の走査順序値を表すと仮定する。エントロピーコーディングユニット５６は、Ｔ2＜ｋ＜Ｔ1のとき、マッピングを決定するための関数を実行するように構成され得る。エントロピーコーディングユニット５６、またはビデオエンコーダ２０の別のユニットは、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、適応パラメータセット（ＡＰＳ）、スライスヘッダ、フレームヘッダ、シーケンスヘッダ、または他のデータ構造などのパラメータセット中で第１および／または第２のしきい値を表すシグナリングデータをコーディングするように構成され得る。同様に、ビデオエンコーダ２０は、しきい値の値を表すシグナリングデータをコーディングし得、係数についてのデータとコードワードインデックス値との間のマッピングを決定すべきかどうかを決定するために、ただ１つのしきい値が使用される。
【０１０２】
[0109]エントロピーコーディングユニット５６が、ＣＡＶＬＣを使用してデータをコーディングするように構成された場合、エントロピーコーディングユニット５６は、ＶＬＣテーブルからＶＬＣコードワードを選択するためにコードワードインデックス値を使用し得る。たとえば、ＶＬＣテーブルは、特定の順序に従って（たとえば、最も短いものから最も長いものに）構成されたコードワードを含み得、コードワードインデックス値はＶＬＣテーブル中のエントリに対応し得る。たとえば、コードワードインデックス値がｎと仮定すると、エントロピーコーディングユニット５６は、ＶＬＣテーブルから第ｎのＶＬＣコードワードを選択し得る。
【０１０３】
[0110]エントロピーコーディングユニット５６が、ＣＡＢＡＣを使用してデータをコーディングするように構成された場合、エントロピーコーディングユニット５６は、ＣＡＢＡＣを使用してコーディングされるべき２値化値を選択するためにコードワードインデックス値を使用し得る。たとえば、エントロピーコーディングユニット５６は、上記で説明したＶＬＣコードワードの選択と同様の方法で、２値化テーブルから２値化値を選択し得る。したがって、コードワードインデックス値がｎであると仮定すると、エントロピーコーディングユニット５６は、２値化テーブルから第ｎの２値化値を選択し得る。その上、エントロピーコーディングユニット５６は、ＣＡＢＡＣによる算術コーディングを使用して２値化値を符号化し得る。すなわち、エントロピーコーディングユニット５６は、現在コンテキスト状態を決定するために、現在シンタックス要素をコーディングするためのコンテキストを初期化し、次いで、２値化値の各ビットをコーディングし得る（ＣＡＢＡＣでは、ビットは「ビン」と呼ばれる）。２値化値の各ビンをコーディングした後に、エントロピーコーディングユニット５６は、直近にコーディングされたビンの値に基づいて現在コンテキスト状態を更新し得る。
【０１０４】
[0111]場合によっては、エントロピーコーディングユニット５６またはビデオエンコーダ２０の別のユニットは、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピーコーディングユニット５６はマクロブロックおよびパーティションのＣＢＰ値を決定するように構成され得る。エントロピーコーディングユニット５６はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。
【０１０５】
[0112]逆量子化ユニット５８および逆変換ユニット６０は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを参照フレームメモリ６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、参照フレームメモリ６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【０１０６】
[0113]このようにして、ビデオエンコーダ２０は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを行うように構成されたビデオコーダの一例を表す。特に、この例では、ビデオコーダはビデオエンコーダである。係数についてのデータをコーディングするために、ビデオエンコーダ２０は、ビデオ符号化プロセス中にコードワードを使用して係数についての｛ラン、レベルＩＤ｝ペアを符号化するように構成され得る。同様に、コードワードは２値化値を備え得、データをコーディングするために、ビデオエンコーダ２０は、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して２値化値をコーディングするように構成され得る。
【０１０７】
[0114]図３は、ビデオデータのブロックの係数をコーディングするための技法を実装し得るビデオデコーダ３０の一例を示すブロック図である。図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２と、イントラ予測ユニット７４と、逆量子化ユニット７６と、逆変換ユニット７８と、参照フレームメモリ８２と、加算器８０とを含む。ビデオデコーダ３０は、いくつかの例では、ビデオエンコーダ２０（図２）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信した動きベクトルに基づいて予測データを生成し得る。
【０１０８】
[0115]本開示の技法によれば、エントロピー復号ユニット７０は、現在係数についてのデータ、たとえば、現在係数についての｛ラン、レベルＩＤ｝ペアに対応するコードワードインデックス値を復号し得る。たとえば、ＣＡＶＬＣでは、エントロピー復号ユニット７０は、ＶＬＣコードワードを受信し、ＶＬＣテーブルからコードワードインデックス値を決定し得る。別の例として、ＣＡＢＡＣでは、エントロピー復号ユニット７０は、２値化値を再生するためにＣＡＢＡＣ符号化データを復号し得る。すなわち、エントロピー復号ユニット７０は、エントロピーコーディングユニット５６に関して上記で説明した遷移と同様のコンテキスト状態を通して遷移すること、および現在の状態と復号されている現在値とに基づいて現在ビットの値を決定することによって、ビットごとに（またはビンごとに）２値化値を再生し得る。このようにして、エントロピー復号ユニット７０は２値化値を再生し得る。エントロピー復号ユニット７０は、次いで、２値化テーブルから２値化値のコードワードインデックス値を決定し得る。
【０１０９】
[0116]いずれの場合も、現在係数のデータについてのコードワード（たとえば、ＶＬＣコードワードまたは２値化値）を決定した後に、いくつかの例では、エントロピー復号ユニット７０は、コードワードインデックス値とデータ、たとえば、｛ラン、レベルＩＤ｝ペアとの間のマッピングを決定するための関数を使用し得る。たとえば、エントロピー復号ユニット７０は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、マッピングを決定するための関数を実行し得る。
【０１１０】
[0117]別の例として、エントロピー復号ユニット７０は、係数に対して異なる関数を実行して、変換ユニットにおける第１の係数の左にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するための走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを上記係数が有するかどうかを決定し得る。さらに別の例として、エントロピー復号ユニット７０は、係数に対してさらに異なる関数を実行して、変換ユニットにおける第１の係数の上にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するための走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを上記係数が有するかどうかを決定し得る。
【０１１１】
[0118]さらに、いくつかの例では、エントロピー復号ユニット７０は、係数の走査順序値が２つのしきい値間にあるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行するように構成され得る。すなわち、エントロピー復号ユニット７０は、走査順序値が第１のしきい値よりも小さく、第１のしきい値よりも小さい第２のしきい値よりも大きいときに、マッピングを決定するための関数を実行し得る。たとえば、Ｔ1は第１のしきい値を表し、Ｔ2は第２のしきい値を表し、ｋは係数の走査順序値を表すと仮定する。エントロピー復号ユニット７０は、Ｔ2＜ｋ＜Ｔ1のとき、マッピングを決定するための関数を実行するように構成され得る。エントロピー復号ユニット７０、またはビデオデコーダ３０の別のユニットは、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、適応パラメータセット（ＡＰＳ）、スライスヘッダ、フレームヘッダ、シーケンスヘッダ、または他のデータ構造などのパラメータセット中で第１および／または第２のしきい値を表すシグナリングデータをコーディング（すなわち、復号）するように構成され得る。同様に、ビデオデコーダ３０は、しきい値の値を表すシグナリングデータをコーディングし得、係数についてのデータとコードワードインデックス値との間のマッピングを決定すべきかどうかを決定するために、ただ１つのしきい値が使用される。すなわち、ビデオデコーダ３０は、（１つまたは複数の）しきい値の（１つまたは複数の）値を決定するために、そのようなデータ構造を受信し、データ構造を復号し得る。
【０１１２】
[0119]このようにして、ビデオデコーダ３０は、変換ユニットの現在係数についての｛ラン、レベルＩＤ｝値のペアを決定し得る。ビデオデコーダ３０は、係数についての他のシンタックスデータ（たとえば、実際のレベル値）をさらに復号し、それにより、変換ユニットを再構成し得る。たとえば、レベルＩＤ値が、係数が１よりも大きい絶対値を有することを示したとき、ビデオデコーダ３０は、係数の実効値を示す追加のシンタックスデータを復号し得る。変換ユニットの各係数についてこれを実行し、走査順序に従って０のランの後に順序中の非０値係数についてのレベル値を配置することによって、ビデオデコーダ３０は、現在コーディングユニットのための変換ユニットを再生し得る。その上、逆量子化ユニット７６は、変換ユニットを逆量子化し得、逆変換ユニット７８は、空間領域中の残差値を再生するために、変換ユニットを逆変換し得る。
【０１１３】
[0120]ビデオデコーダ３０では、現在フレーム中のブロックは、最初にエンコーダの場合と同様の方法でそれの予測を構成し、圧縮された予測誤差を予測に追加することによって得られる。圧縮された予測誤差は、量子化係数を使用して変換基底関数を重み付けすることによって発見される。再構成されたフレームと元のフレームとの間の差は、再構成誤差と呼ばれる。
【０１１４】
[0121]動き補償ユニット７２は、ビットストリーム中で受信した動きベクトルを使用して、参照フレームメモリ８２中の参照フレーム中の予測ブロックを識別し得る。イントラ予測ユニット７４は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。逆量子化ユニット７６は、ビットストリーム中で供給され、エントロピー復号ユニット７０によって復号された量子化ブロック係数を逆量子化（inverse quantize）、すなわち、逆量子化（de-quantize）する。逆量子化プロセスは、たとえば、Ｈ．２６４復号規格によって定義された従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、各マクロブロックについてエンコーダ５０によって計算される量子化パラメータＱＰYの使用を含み得る。
【０１１５】
[0122]逆変換ユニット５８は、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。動き補償ユニット７２は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルのための補間値を計算し得る。動き補償ユニット７２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【０１１６】
[0123]動き補償ユニット７２は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの（１つまたは複数の）フレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための１つまたは複数の参照フレーム（および参照フレームリスト）と、符号化ビデオシーケンスを復号するための他の情報とを決定する。
【０１１７】
[0124]加算器８０は、残差ブロックを、動き補償ユニット７２またはイントラ予測ユニットによって生成される対応する予測ブロックと加算して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。復号ビデオブロックは、次いで、参照フレームメモリ８２に記憶され、参照フレームメモリ８２は、参照ブロックを後続の動き補償に供給し、また、（図１のディスプレイデバイス３２などの）ディスプレイデバイス上での提示のために復号されたビデオを生成する。
【０１１８】
[0125]ビデオデコーダ３０は、ＴＵの受信した係数を復号するために、関数または１次元テーブルを使用することなどの本開示の技法のいずれかまたはすべてを実行するように構成され得る。ビデオデコーダ３０は、上記のデコーダ擬似コード、または上記のエンコーダ擬似コードとは逆の方法を実装するように構成され得る。
【０１１９】
[0126]このようにして、ビデオデコーダ３０は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを行うように構成されたビデオコーダの一例を表す。特に、この例では、ビデオコーダはビデオデコーダである。係数についてのデータをコーディングするために、ビデオデコーダ３０は、コードワードを使用して係数についての｛ラン、レベルＩＤ｝ペアを決定するように構成され得る。その上、ビデオデコーダ３０は、コードワードインデックス値から係数についてのデータを決定するためにコードワードを復号した後に関数を実行するように構成され得る。
【０１２０】
[0127]図４は、係数１２０Ａ〜１２０Ｐ（係数１２０）の例示的なジグザグ走査を示す概念図である。図４は４×４ブロックの一例を示しているが、他のブロックサイズも可能である。係数１２０は、概して、ＴＵのピクセルの変換と量子化とから生じる量子化変換係数に対応する。この例では、ジグザグ走査は、係数１２０Ａから開始し、次いで係数１２０Ｂに進み、次いで係数１２０Ｅに進み、次いで係数１２０Ｉに進み、次いで係数１２０Ｆに進み、次いで係数１２０Ｃに進み、次いで係数１２０Ｄに進み、次いで係数１２０Ｇに進み、次いで係数１２０Ｊに進み、次いで係数１２０Ｍに進み、次いで係数１２０Ｎに進み、次いで係数１２０Ｋに進み、次いで係数１２０Ｈに進み、次いで係数１２０Ｌに進み、次いで係数１２０Ｏに進み、最後に係数１２０Ｐに進む。
【０１２１】
[0128]この走査を実行することによって、ピクセルの係数の２次元構成は、係数１２０の各々の値を含む１次元配列に変換され得る。これらの値は、アレイ中で走査順に構成され得る。たとえば、係数１２０Ａの値が配列中の最初にあり得、その後に係数１２０Ｂ、１２０Ｅ、１２０Ｉ、１２０Ｆなどの値が続き得る。
【０１２２】
[0129]所与のブロック中の係数は、ある順序（走査）で構成され、１次元順序付き係数ベクトルを生じる。１つの広く使用される走査は、ジグザグ走査である。４×４ブロックの例示的なジグザグスキャンを図４に示す。水平走査、垂直走査、波面走査のような何らかの他の走査もあり得る。本開示では、ジグザグ走査は、提案された方式を説明するために使用される。また、本開示の提案された方式は、他の走査とともに動作することができることを理解されたい。
【０１２３】
[0130]ジグザグ走査は、２次元（２Ｄ）変換を適用した後、最高のエネルギーを有する変換係数（すなわち、より高い値の係数）が低周波数変換関数に対応し、図４に示すように、ブロックの左上に配置されることを想定する。逆に、より高い周波数、より低いエネルギー変換係数は、ブロックの右下のほうに存在する。したがって、ジグザグスキャニングによって生成される係数ベクトルにおいて、大きさが大きい係数ほど、ベクトルの開始近くに現れる可能性が高くなる。量子化の後、大部分の低いエネルギー係数は０に等しくなる。係数コーディング中に係数走査を適応させることも可能である。たとえば、走査中のより小さい番号は、非０係数がより頻繁に発生するそれらの位置に割り当てられ得る。
【０１２４】
[0131]ＨＥＶＣテストモデルにおいてＶＬＣを使用して単一の４×４ブロックをエントロピー符号化することは、一例として、以下のステップを伴う。
【０１２５】
１．走査中の最後の非０係数の絶対値｜レベル｜が１であるのか、＞１であるのかを示すレベルＩＤと組み合わされた、この係数の位置を符号化する。４×４ブロックの残りの係数は、逆方向走査順序でコーディングされ、ランモードまたはレベルモードでコーディングされる。ランモードからレベルモードに切り替わるためのプロシージャは、すでにコーディングされた係数の絶対値に基づいて決定される。
【０１２６】
２．ランモードコーディング。このモードでは、前の非０係数から開始するゼロ係数の数がシグナリングされる。シンタックス要素ｉｓＬｅｖｅｌＯｎｅ＿ｒｕｎは、ランとレベルＩＤとをジョイントコーディングする。ランの値は、逆走査順序中の現在非０係数と次の非０係数との間のゼロ係数の数に等しいが、レベルＩＤは、次の非０係数の｜レベル｜が１であるのか、＞１であるのかを示す。現在非０係数が位置ｋにある場合、ラン値は０からｋまでの範囲中にあり得る。ｋに等しいラン値は、このブロック中にそれ以上非０係数がないことを意味する。｛レベルＩＤ、ラン｝とコードワード数ｃｎとの間のマッピングは、値ｋに依存する。
【０１２７】
３．レベルモードコーディング。｜レベル｜の値は、ＶＬＣｘを使用して復号され、ｘは、レベルモードでコーディングされている第１の係数の場合０である。各係数のレベルモード復号の後、｜レベル｜＞ｖｌｃ＿ｌｅｖｅｌ＿ｔａｂｌｅ［ｘ］の場合、ＶＬＣテーブルインデックスｘは１だけ増分される。
【０１２８】
[0132]ＣＡＢＡＣを使用して｛ラン、レベルＩＤ｝ペアをコーディングするとき、同様のプロセスが実行され得る。しかしながら、本開示に示すように、ＶＬＣコードワードを選択するのではなく、ビデオコーダは２値化値を選択し、次いで、ＣＡＢＡＣを使用してシンタックス要素をコーディングするとき、さらに２値化値を２進算術コーディングし得る。
【０１２９】
[0133]上述のように、１次元テーブルと１次元テーブルに近似する式とが、走査順序中の１つまたは複数の特殊位置のために与えられ得る。ＶＬＣの場合、ランモードコーディングは、逆走査順序で、たとえば、係数１２０Ｐから係数１２０Ａまで実行され得る。したがって、係数１２０Ａは、ランモードコーディングの目的で、すなわち、｛ラン、レベルＩＤ｝ペアをコーディングするときに走査順序中の「最後の」係数として扱われ得る。上述のように、走査順序中の特殊位置の一例は、値ｋがしきい値よりも小さく、ランがｋ＋１に等しい位置である。たとえば、係数１２０Ｄが逆走査順序中の最後の係数であった場合、係数１２０Ｄはラン値６とｋ値７とを有し得る。したがって、ビデオエンコーダ２０またはビデオデコーダ３０は、コードワードインデックスと係数１２０Ｄについての｛ラン、レベルＩＤ｝ペアとの間のマッピングを決定するために、１次元テーブルまたは関数を使用し得る。
【０１３０】
[0134]上記で説明したように、他の位置は、１次元テーブルまたは関数が与えられ得る特殊位置と見なされ得る。他の特殊位置の例には、ｒｕｎ＿ｌおよびｒｕｎ＿ｔがある。一例として、係数１２０Ｄおよび１２０Ｃが０値であり、係数１２０Ｆが非０値を有するとき、係数１２０Ｇは、ｒｕｎ＿ｌ位置にあると見なされ得る。上記で説明したように、「ラン左」または「ｒｕｎＬｅｆｔ（ｋ）」位置とも呼ばれるｒｕｎ＿ｌ位置は、現在位置とｒｕｎ＿ｌ位置との間の走査順序中のすべての係数が０値であるような現在位置のすぐ左の位置である。別の例として、代替的に、係数１２０Ｄが０値であり、係数１２０Ｃが非０値を有するとき、係数１２０Ｇは、ｒｕｎ＿ｔ位置にあると見なされ得る。上記で説明したように、「ラン上」または「ｒｕｎＴｏｐ（ｋ）」位置とも呼ばれるｒｕｎ＿ｔ位置は、現在位置とｒｕｎ＿ｔ位置との間の走査順序中のすべての係数が０値であるような現在位置のすぐ上の位置である。
【０１３１】
[0135]図５は、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは、現在ＣＵ、または現在ＣＵの一部分を備え得る。ビデオエンコーダ２０（図１および図２）に関して説明するが、他のデバイスが同様の方法を実行するように構成され得ることを理解されたい。
【０１３２】
[0136]この例では、ビデオエンコーダ２０は、初めに、現在ブロックを予測する（１５０）。たとえば、ビデオエンコーダ２０は、現在ブロックのための１つまたは複数の予測ユニット（ＰＵ）についてのピクセル値を計算し得る。たとえば、動き推定ユニット４２は、前にコーディングされたピクチャ中の参照ブロックを指すＰＵについての動きベクトルを計算し得、動き補償ユニット４４は、参照ブロックから、予測ユニットについてのピクセル値として使用されるべきピクセル値を抽出し得る。代替的に、イントラ予測ユニット４６は、イントラ予測を使用して、予測されたピクセル値を計算し得る。
【０１３３】
[0137]ビデオエンコーダ２０は、次いで、たとえば、変換ユニット（ＴＵ）を生成するために、現在ブロックのための残差ブロックを計算する（１５２）。残差ブロックを計算するために、ビデオエンコーダ２０は、元のコーディングされていないブロックと現在ブロックのための予測ブロックとの間の差を計算し得る。たとえば、加算器５０は、元のブロックについてのピクセル値とコロケート予測されたピクセル値との間の差を計算し得る。ビデオエンコーダ２０は、次いで、残差ブロックの係数を変換し、量子化する（１５４）。これは、量子化変換係数を含む変換ユニットを生じ得る。
【０１３４】
[0138]次に、ビデオエンコーダ２０は、変換ユニットの量子化変換係数を走査する（１５６）。走査中に、または走査の後に、ビデオエンコーダ２０は、ランモードで係数を符号化する（１５８）。たとえば、ビデオエンコーダ２０は、係数についての｛ラン、レベルＩＤ｝ペアを表す、ＶＬＣコードワードまたは２値化値などのコードワードを決定し得る。ＶＬＣコーディングの場合、ビデオエンコーダ２０は、｛ラン、レベルＩＤ｝ペアについて決定されたコードワード番号に対応するＶＬＣコードワードを使用して｛ラン、レベルＩＤ｝ペアをコーディングし得る。ＣＡＢＡＣコーディングの場合、ビデオエンコーダ２０は、｛ラン、レベルＩＤ｝ペアについて決定されたコードワード番号に対応する２値化値をＣＡＢＡＣコーディングし得る。
【０１３５】
[0139]特に、ビデオエンコーダ２０は、逆走査順序中の係数についての｛ラン、レベルＩＤ｝ペアをコーディングし得る。各｛ラン、レベルＩＤ｝ペアについて、ビデオエンコーダ２０は、｛ラン、レベルＩＤ｝ペアを符号化するために使用すべきテーブル中のコードワード（たとえば、ＶＬＣテーブル中のＶＬＣコードワードまたは２値化テーブル中の２値化値）へのインデックスを表すコードワード番号（ｃｎ）を決定し得る。ステップ１５８を実行するためのいくつかの例に関する追加の詳細について、図６に関して以下に説明する。このようにしてコードワードを選択して、ビデオエンコーダ２０は、ブロックの係数についてのコード化データを出力する（１６０）。たとえば、ＶＬＣの場合、ビデオエンコーダ２０はＶＬＣコードワードを出力し得るが、ＣＡＢＡＣの場合、ビデオエンコーダ２０は、２値化値についてのＣＡＢＡＣコード化データを出力し得る。
【０１３６】
[0140]図６は、現在ブロックの係数についてのコードワードインデックスを符号化するための例示的な方法を示すフローチャートである。特に、図６の方法は、図５のステップ１５８を実行するための方法の一例をより詳細に示している。図６の方法について、単一の｛ラン、レベルＩＤ｝ペアがコーディングされる単一の係数に関して説明する。
【０１３７】
[0141]初めに、ビデオエンコーダ２０は、位置ｋにおいて係数を（逆走査順序を使用して）走査する（１８０）。この例では、係数は、対応するしきい値よりも小さいｋ値を有すると仮定される。ビデオエンコーダ２０は、次いで、係数についてのラン値とレベルＩＤ値とを決定する（１８２）。特に、ビデオエンコーダ２０は、ランが、現在係数と次の非０値係数との間の０値係数の数に等しいか、または、残りの非０値係数がない場合に逆走査中の最後係数に等しいこと、を決定し得る。同様に、ビデオエンコーダ２０は、係数が絶対値「１」を有するときにレベルＩＤが値「０」を有すること、または係数が１よりも大きい絶対値を有するときにレベルＩＤが値「１」を有することを決定し得る。言い換えれば、位置ｋにおける係数を「Ａ」と呼び、走査順序中の次の非０値係数を「Ｂ」と呼ぶ。０に等しいレベルＩＤは、Ｂの絶対値が１であることを示し得、１に等しいレベルＩＤは、Ｂの絶対値が１よりも大きいことを示し得る。
【０１３８】
[0142]ビデオエンコーダ２０は、次いで、レベルＩＤが値「０」を有するかどうかを決定する（１８３）。レベルＩＤが値「０」を有しない（１８３の「ＮＯ」ブランチ）、たとえば、値「１」の場合、ビデオエンコーダ２０は、ｃｎの値をｋ＋２＋ランに等しく設定する（１８４）。他方で、レベルＩＤが「０」に等しい場合（１８３の「ＹＥＳ」ブランチ）、ビデオエンコーダ２０は、ランがｋ＋１に等しいかどうかをさらに決定する（１８５）。特に、ビデオエンコーダ２０は、現在係数が逆走査順序中の最後非０値係数であるかどうかを判断し得る。
【０１３９】
[0143]ビデオエンコーダ２０が、ランがｋ＋１に等しいと決定したとき（１８５の「ＹＥＳ」ブランチ）、ビデオエンコーダ２０は、たとえば、ｋの値にインデックスされた１次元テーブルを使用して｛ラン、レベルＩＤ｝ペアについてのｃｎの値を計算する（１８６）。代替的に、ビデオエンコーダ２０は、１次元テーブルに近似する関数を実行し、値ｋを関数に渡し得る。関数は、ｋの値に基づいてｃｎについての値を返し得る。このようにして、ビデオエンコーダ２０は、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行し得、この例では、ｃｎはコードワードインデックス値である。
【０１４０】
[0144]他方で、ランがｋ＋１に等しくない場合（１８５の「ＮＯ」ブランチ）、ビデオエンコーダ２０は、ランがＥ１（ｋ）、すなわち、ｋの値について１次元テーブルによって返された値、よりも小さいかどうかを決定する（１８８）。ランがＥ１（ｋ）よりも小さい場合（１８８の「ＹＥＳ」ブランチ）、ビデオエンコーダ２０は、ｃｎがランに等しい値を有することを決定する（１９０）。他方で、ランがＥ１（ｋ）よりも大きい場合（１８８の「ＮＯ」ブランチ）、ビデオエンコーダ２０は、ｃｎがｒｕｎ＋１に等しい値を有することを決定する（１９２）。ビデオエンコーダ２０は、次いで、ｃｎの決定された値にマッピングされたコードワード、たとえば、ＶＬＣテーブルからのＶＬＣコードワード、またはＣＡＢＡＣの場合、２値化テーブルからの２値化値を選択する（１９４）。さらに、ＣＡＢＡＣの場合、ビデオエンコーダ２０は、選択された２値化値をエントロピー符号化し得る。
【０１４１】
[0145]このようにして、図５および図６は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを含む、ビデオデータをコーディングする方法の例を表す。
【０１４２】
[0146]図７は、ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは、現在ＣＵ、または現在ＣＵの一部分を備え得る。ビデオデコーダ３０（図１および図３）に関して説明するが、他のデバイスが同様の方法を実行するように構成され得ることを理解されたい。
【０１４３】
[0147]ビデオデコーダ３０は、現在ブロックのための予測ブロックを計算するために、たとえば、イントラまたはインター予測モードを使用して現在ブロックを予測する（２００）。ビデオデコーダ３０はまた、現在ブロックに対応する残差ブロックの係数についてのコードワードに対応するコード化データを受信する（２０２）。たとえば、ＶＬＣでは、コード化データはＶＬＣコードワード自体であり得るが、ＣＡＢＡＣの場合、コード化データは、ビデオデコーダ３０が、２値化値（すなわち、コードワード）を再生するためにＣＡＢＡＣ復号し得る２値化値に対応するＣＡＢＡＣコード化データを備え得る。
【０１４４】
[0148]ビデオデコーダ３０は、コードワードがマッピングされるコードワードインデックスを決定し、係数についてのデータを再生するためにランモードを使用して、コードワードからマッピングされるコードワードインデックスを復号する（２０４）。もちろん、上記で説明したように、係数についてのデータは｛ラン、レベルＩＤ｝ペアに対応する。図７には示されていないが、ビデオデコーダ３０はさらに、レベルＩＤが、レベル値が１よりも大きいことを示すとき、係数についての実際のレベル値を示す係数についてのレベルデータを復号し得る。ビデオデコーダ３０はまた、量子化変換係数のブロックを作成するために再生係数を逆走査する（２０６）。ビデオデコーダ３０は、次いで、残差ブロックを生成するために、係数を逆量子化し、逆走査する（２０８）。残差ブロックは、ピクセル領域中の残差係数を含み得る。ビデオデコーダ３０は、最終的に、予測ブロックと残差ブロックとを組み合わせることによって現在ブロックを復号する（２１０）。すなわち、ビデオデコーダ３０は、対応するブロックについての個々のピクセル値を再生するために、残差値と予測値とを加算し得る。
【０１４５】
[0149]図８は、コードワードインデックスを復号するための例示的な方法を示すフローチャートである。特に、図８の方法は、より詳細に図７のステップ２０４を実行するための方法の一例である。図８の例は、単一の係数についての単一のコードワードインデックス値ｃｎに関して説明し、この係数は、しきい値よりも小さいｋ値を有すると仮定される。
【０１４６】
[0150]いくつかの例では、ビデオデコーダ３０はＶＬＣコードワードを受信し得るが、他の例では、ビデオデコーダ３０は、２値化値（すなわち、コードワード）を再生するために、受信したＣＡＢＡＣコード化データを復号し得る。いずれの場合も、ビデオデコーダ３０は、位置ｋにおける係数についてのコードワードから係数についてのコードワードインデックス値ｃｎを決定する（２２０）。たとえば、ビデオデコーダ３０は、ＶＬＣテーブルから、受信したＶＬＣコードワードがマッピングされるコードワードインデックス値を決定し得る。代替的に、ビデオデコーダ３０は、２値化値を再生し、２値化テーブルを使用してコードワードインデックスを決定し得る。このようにして、ビデオデコーダ３０は、コードワードインデックス値に関連するコードワード（たとえば、ＶＬＣコードワードまたは２値化値）を使用して、係数についてのデータをコーディングし得る。
【０１４７】
[0151]ビデオデコーダ３０は、次いで、ｃｎがｋ＋１よりも大きいかどうかを決定する（２２２）。ｃｎがｋ＋１よりも大きい場合（２２２の「ＹＥＳ」ブランチ）、ビデオデコーダ３０は、係数についてのレベルＩＤが値「１」を有すること（２２４）と、係数についてのラン値が値ｃｎ−ｋ−２を有すること（２２６）とを決定する。このようにして、ビデオデコーダ３０は、ｃｎがｋ＋１よりも大きいとき、係数についての｛ラン、レベルＩＤ｝ペアを再構成し得る。
【０１４８】
[0152]他方で、ｃｎがｋ＋１よりも大きくないとき（２２２の「ＮＯ」ブランチ）、ビデオデコーダ３０は、レベルＩＤが値「０」を有することを決定する（２２８）。その上、ビデオデコーダ３０は、ｃｎが、Ｅ１（ｋ）によって返される値、すなわち、ｋの値に対して実行される関数によって返される値に等しいかどうかを決定し、関数は１次元テーブルに近似する（２３０）。代替的に、ビデオデコーダ３０は、実際の１次元テーブルを使用してこの値を決定し得る。Ｅ１（ｋ）によって返される値が、ｃｎに等しい場合（２３０の「ＹＥＳ」ブランチ）、ビデオデコーダ３０は、ランが値ｋ＋１を有することを決定する（２３２）。このようにして、係数が走査順序中の最後有効係数であるとき、ビデオデコーダ３０は、係数についてのデータ（たとえば、ラン値）とコードワードインデックス値ｃｎとの間のマッピングを決定するための関数を実行し得る。
【０１４９】
[0153]他方で、Ｅ１（ｋ）によって返される値が、ｃｎに等しくない場合（２３０の「ＮＯ」ブランチ）、ビデオデコーダ３０は、ｃｎが、Ｅ１（ｋ）によって返される値よりも小さいかどうかを決定する（２３４）。ｃｎが、Ｅ１（ｋ）によって返される値よりも小さい場合（「２３４のＹＥＳブランチ」）、ビデオデコーダ３０は、ランがｃｎに等しい値を有することを決定する（２３６）。しかしながら、ｃｎが、Ｅ１（ｋ）によって返される値よりも大きい場合（２３４の「ＮＯ」ブランチ）、ビデオデコーダ３０は、ランがｃｎ−１に等しい値を有することを決定する（２３８）。ビデオデコーダ３０は、次いで、決定された｛ラン、レベルＩＤ｝ペアを使用して係数を復号する（２４０）。
【０１５０】
[0154]このようにして、図７および図８の例は、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および係数が変換ユニットにおける走査順序中の最後有効係数であるとき、係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、コードワードインデックス値に関連するコードワードを使用して係数についてのデータをコーディングすることとを含む、データをコーディングするための方法の例を表す。
【０１５１】
[0155]図５〜図８の例には示されていないが、ビデオエンコーダ２０およびビデオデコーダ３０は、他の状況の場合、係数についてのデータとコードワードインデックス値との間のマッピングを決定するために他の関数を使用するように構成され得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、変換ユニットにおける第１の係数の左にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するための走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを有する係数についてのマッピングを決定するために異なる関数を実行するように構成され得る。別の例として、ビデオエンコーダ２０およびビデオデコーダ３０は、変換ユニットにおける第１の係数の上にある第２の係数が、０よりも大きい絶対値を有するとき、ラン値が、第２の係数に達するための走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを有する係数についてのマッピングを決定するためにさらに別の異なる関数を実行するように構成され得る。
【０１５２】
[0156]その上、上述のように、ｋ値は、図５〜図８の方法を実行する際に対応するしきい値よりも小さいと仮定された。しかしながら、他の例では、ビデオエンコーダ２０およびビデオデコーダ３０は、係数についてのｋが２つのしきい値間にあるとき、これらの方法を実行し得る。たとえば、ビデオエンコーダ２０は、ｋが第１のしきい値Ｔ１よりも小さく、第２のしきい値Ｔ２よりも大きいとき、図５および図６の方法を実行し得る。同様に、ビデオデコーダ３０は、ｋが第１のしきい値Ｔ１よりも小さく、第２のしきい値Ｔ２よりも大きいとき、図７および図８の方法を実行し得る。しかしながら、ｋがＴ１よりも大きいか、またはＴ２よりも小さいとき、ビデオエンコーダ２０およびビデオデコーダ３０は、これらの例では、代替方法を実行し得る。さらに、本方法は、しきい値についての値を決定するためのシグナリングデータをコーディングすることをさらに含み得る。
【０１５３】
[0157]例によっては、本明細書で説明した方法のうちいずれかの、いくつかの作用またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る（たとえば、すべての説明した作用またはイベントが、本方法の実施のために必要であるとは限らない）ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続してではなくむしろ、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して実行され得る。
【０１５４】
[0158]１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、あるいは（２）信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１５５】
[0159]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１５６】
[0160]命令は、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路、あるいはそれらの組合せによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【０１５７】
[0161]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実施され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【０１５８】
[0162]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］  ビデオデータをコーディングする方法であって、前記方法は、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および前記係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、
前記係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、
前記コードワードインデックス値に関連するコードワードを使用して前記係数についての前記データをコーディングすることと、
を備える方法。
［２］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、前記方法は、さらに、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を備える、［１］に記載の方法。
［３］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、前記方法は、さらに、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を備える、［１］に記載の方法。
［４］  前記しきい値は第１のしきい値を備え、前記関数を実行することと、前記データをコーディングすることとは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記関数を実行することと、前記データをコーディングすることを備える、［１］に記載の方法。
［５］  前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングすることをさらに備える、［１］に記載の方法。
［６］  前記係数についての前記データをコーディングすることは、ビデオ符号化プロセス中に前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを符号化することを備える、［１］に記載の方法。
［７］  前記係数についての前記データをコーディングすることは、ビデオ復号プロセス中に前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを決定することを備える、［１］に記載の方法。
［８］  前記コードワードは２値化値を備え、前記データをコーディングすることは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングすることをさらに備える、［１］に記載の方法。
［９］  前記データをコーディングすることは、前記コードワードインデックス値を再生するために前記コードワードを復号することを備え、前記関数を実行することは、前記コードワードインデックス値から前記係数についての前記データを決定するために前記コードワードを復号した後に前記関数を実行することを備える、［１］に記載の方法。
［１０］  前記コードワードを復号することは、前記コードワードを備える２値化値を再生するためにデータをエントロピー復号することと、前記２値化値が対応する前記コードワードインデックス値を決定することと、を備える［９］に記載の方法。
［１１］  前記変換ユニットに対応する予測データを決定することと、前記変換ユニットについての残差データを再生することと、前記予測データと前記残差データとを組み合わせることと、をさらに備える［９］に記載の方法。
［１２］  前記係数についての前記データをコーディングすることは、前記関数を実行した後に前記コードワードを使用して前記データを符号化することを備える、［１］に記載の方法。
［１３］  ビデオデータをコーディングするためのデバイスであって、前記デバイスは、ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および前記係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、前記コードワードインデックス値に関連するコードワードを使用して前記係数についての前記データをコーディングすることとを行うように構成されたビデオコーダを備えるデバイス。
［１４］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、前記ビデオコーダは、さらに、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行うように構成された、［１３］に記載のデバイス。
［１５］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、前記ビデオコーダは、さらに、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行うように構成された、［１３］に記載のデバイス。
［１６］  前記しきい値は第１のしきい値を備え、前記ビデオコーダは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに前記関数を実行し、前記データをコーディングするように構成された、［１３］に記載のデバイス。
［１７］  前記ビデオコーダは、さらに、前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングするようにさらに構成された、［１３］に記載のデバイス。
［１８］  前記ビデオコーダはビデオデコーダを備える、［１３］に記載のデバイス。
［１９］  前記係数についての前記データをコーディングするために、前記ビデオデコーダは、前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを決定するように構成された、［１８］に記載のデバイス。
［２０］  前記ビデオデコーダは、前記コードワードインデックス値を再生するために前記コードワードを復号するように構成され、前記関数を実行するために、前記ビデオデコーダは、前記コードワードインデックス値から前記係数についての前記データを決定するために前記コードワードを復号した後に前記関数を実行するように構成された、［１８］に記載のデバイス。
［２１］  前記ビデオコーダはビデオエンコーダを備える、［１３］に記載のデバイス。
［２２］  前記係数についての前記データをコーディングするために、前記ビデオエンコーダは、ビデオ符号化プロセス中に、前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを符号化するように構成された、［２１］に記載のデバイス。
［２３］  前記コードワードは２値化値を備え、前記データをコーディングするために、前記ビデオコーダは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングするように構成された、［１３］に記載のデバイス。
［２４］  ビデオデータをコーディングするためのデバイスであって、前記デバイスは、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および前記係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、前記係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行する手段と、
前記係数が前記走査順序値を有するとき、および前記係数が前記変換ユニットにおける前記走査順序中の前記最後有効係数であるとき、前記コードワードインデックス値に関連するコードワードを使用して前記係数についての前記データをコーディングする手段と、
を備えるデバイス。
［２５］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行する手段と、
前記第１の係数についての前記データが前記｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい前記値を有するとき、前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングする手段と、
をさらに備える、［２４］に記載のデバイス。
［２６］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するために前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行する手段と、
前記第１の係数についての前記データが前記｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい前記値を有するとき、前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングする手段と、
をさらに備える、［２４］に記載のデバイス。
［２７］  前記しきい値は第１のしきい値を備え、前記関数を実行する手段と、前記データをコーディングする手段とは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記関数を実行する手段と、前記データをコーディングする手段とを備える、［２４］に記載のデバイス。
［２８］  前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記しきい値を示すシグナリング値をコーディングする手段をさらに備える、［２４］に記載のデバイス。
［２９］  前記係数についての前記データをコーディングする手段は、ビデオ復号プロセス中に前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを決定する手段を備える、［２４］に記載のデバイス。
［３０］  前記データをコーディングする手段は、前記コードワードインデックス値を再生するために前記コードワードを復号する手段を備え、前記関数を実行する手段は、前記コードワードインデックス値から前記係数についての前記データを決定するために前記コードワードを復号した後に前記関数を実行する手段を備える、［２９］に記載のデバイス。
［３１］  前記係数についての前記データをコーディングする手段は、ビデオ符号化プロセス中に前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを符号化する手段を備える、［２４］に記載のデバイス。
［３２］  前記コードワードは２値化値を備え、前記データをコーディングする手段は、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングする手段をさらに備える、［２４］に記載のデバイス。
［３３］  実行されたとき、ビデオデータをコーディングするためのデバイスのプロセッサに、
ビデオデータの変換ユニットの係数が、しきい値よりも小さい走査順序値を有するとき、および前記係数が前記変換ユニットにおける走査順序中の最後有効係数であるとき、
前記係数についてのデータとコードワードインデックス値との間のマッピングを決定するための関数を実行することと、
前記コードワードインデックス値に関連するコードワードを使用して前記係数についての前記データをコーディングすることと、
を行わせる命令を記憶したコンピュータ可読媒体を備えるコンピュータプログラム製品。
［３４］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の左にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記プロセッサに、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行わせる命令をさらに備える、［３３］に記載のコンピュータプログラム製品。
［３５］  前記関数は第１の関数を備え、前記マッピングは第１のマッピングを備え、前記コードワードインデックス値は第１のコードワードインデックス値を備え、前記係数は第１の係数を備え、
前記第１の係数についての前記データが、ラン値が前記変換ユニットにおける前記第１の係数の上にある第２の係数に達するための前記走査順序中の係数の数に等しくなるような｛ラン、レベルＩＤ｝ペアを備えるとき、および前記第２の係数が０よりも大きい絶対値を有するとき、前記プロセッサに、
前記第１の係数についての前記データと第２のコードワードインデックス値との間の第２のマッピングを決定するための第２の関数を実行することと、
前記第２のコードワードインデックス値に関連するコードワードを使用して前記第１の係数についての前記データをコーディングすることと、
を行わせる命令をさらに備える、［３３］に記載のコンピュータプログラム製品。
［３６］  前記しきい値が第１のしきい値を備え、前記プロセッサに前記関数を実行させる前記命令と、前記プロセッサに前記データをコーディングさせる前記命令とは、前記走査順序値が前記第１のしきい値よりも小さく、前記第１のしきい値よりも小さい第２のしきい値よりも大きいときに、前記プロセッサに前記関数を実行させる命令と、前記プロセッサに前記データをコーディングさせる命令とを備える、［３３］に記載のコンピュータプログラム製品。
［３７］  前記変換ユニットを含むスライスについてのスライスパラメータセット（ＳＰＳ）と、前記変換ユニットを含む前記スライスについての適応パラメータセット（ＡＰＳ）と、前記変換ユニットを含むピクチャについてのピクチャパラメータセット（ＰＰＳ）とのうちの少なくとも１つ中で、前記プロセッサに、前記しきい値を示すシグナリング値をコーディングさせる命令をさらに備える、［３３］に記載のコンピュータプログラム製品。
［３８］  前記プロセッサに前記係数についての前記データをコーディングさせる前記命令は、前記プロセッサに前記係数についての前記データを復号させる命令を備える、［３３］に記載のコンピュータプログラム製品。
［３９］  前記プロセッサに前記係数についての前記データをコーディングさせる前記命令は、前記プロセッサに、前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを決定させる命令を備える、［３８］に記載のコンピュータプログラム製品。
［４０］  前記プロセッサに前記データをコーディングさせる前記命令は、前記プロセッサに、前記コードワードインデックス値を再生するために前記コードワードを復号させる命令を備え、
前記プロセッサに前記関数を実行させる前記命令は、前記プロセッサに、前記コードワードインデックス値から前記係数についての前記データを決定するために前記コードワードを復号した後に前記関数を実行させる命令を備える、
［３８］に記載のコンピュータプログラム製品。
［４１］  前記プロセッサに前記コードワードを復号させる前記命令は、前記プロセッサに、前記コードワードを備える２値化値を再生するためにデータをエントロピー復号させる命令と、
前記プロセッサに、前記２値化値が対応する前記コードワードインデックス値を決定させる命令と、
を備える、［３８］に記載のコンピュータプログラム製品。
［４２］  前記プロセッサに前記係数についての前記データをコーディングさせる前記命令は、前記プロセッサに、前記係数についての前記データを復号させる命令を備える、［３３］に記載のコンピュータプログラム製品。
［４３］  前記プロセッサに前記係数についての前記データをコーディングさせる前記命令は、前記プロセッサに、前記コードワードを使用して前記係数についての｛ラン、レベルＩＤ｝ペアを符号化させる命令を備える、［４２］に記載のコンピュータプログラム製品。
［４４］  前記コードワードは２値化値を備え、
前記プロセッサに前記データをコーディングさせる前記命令は、前記プロセッサに、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）を使用して前記２値化値をエントロピーコーディングさせる命令をさらに備える、［３３］に記載のコンピュータプログラム製品。
【図１】
0005937205.tif 000013
【図２】
0005937205.tif 000014
【図３】
0005937205.tif 000015
【図４】
0005937205.tif 000016
【図５】
0005937205.tif 000017
【図６】
0005937205.tif 000018
【図７】
0005937205.tif 000019
【図８】
0005937205.tif 000020