図4は、エンコーダとデコーダとの一例を示すブロック図である。
システム400は、デコーダ412によって復号されるべき、符号化されたブロックを生成するために、エンコーダ411を含む。エンコーダ411とデコーダ412とはネットワークを介して通信し得る。
エンコーダ411は、高スループット2値化モードを使用して符号化するように構成された電子デバイス421を含む。電子デバイス421は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図5および図6に示される動作を実施するためにプロセッサによって実行可能な命令を記憶する。
デコーダ412は、高スループット2値化モードを使用して復号するように構成された電子デバイス422を含む。電子デバイス422は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図7および図8に示される動作を実施するように実行可能な命令を記憶する。
図5は、電子デバイス上での高スループット2値化モードのための方法の一構成を示す流れ図である。
ブロック511において、電子デバイス421は、変換され量子化された係数(TQC)のブロックを取得する。菱形512において、電子デバイス421は、高スループット2値化モード条件が満たされるかどうかを判定する。菱形512において条件が満たされない場合、ブロック513において、電子デバイス421は、(従来のCABAC選択方式に従って)レギュラーコーディングモードとバイパスコーディングモードとを選択的に使用することによってブロックをコーディングする。
菱形512において条件が満たされる場合、ブロック514において、電子デバイス421は、ブロックをコーディングするために高スループット2値化モードとバイパスコーディングモードとを使用する。電子デバイス421は、ブロック515において、生成されたビットストリームをネットワークを介して送信し、および/または、生成されたビットストリームをメモリデバイスに記憶する。
HTBモードは、レベル値をコーディングするためにバイパスコーディングモードを使用する。レギュラー符号化モードとは対照的に、バイパスコーディングモードは、入力ビンについて固定の確率分布を仮定するので、バイパスコーディングモードは、計算コストが高いコンテキスト推定および確率更新段を省略する。
コーディングのためにバイパスコーディングモードを使用することに加えて、従来のCABACとは対照的に、HTBモードは、コーディングのために簡略化された符号付け構造を使用する。例えば、従来のCABACは、Greater_than_1、Greater_than_2、符号情報、および絶対−3を含む、コーディングのための4つのサブパートを必要とする。
図6は、高スループット2値化モードを使用するエンコーダ処理の一構成を示す流れ図である。
ブロック612〜615は、ブロック514において実施される動作をさらに詳細に示す。ブロック612において、電子デバイス421は、絶対値−1関数を各非0値に適用し各非0値の符号を検査することによって、TQCのブロックからの任意の非0値について符号とレベル情報とを生成する。説明を簡単にするために、本出願の背景技術セクションからの1Dアレイ化されたTQCの値[4,0,3,−3,2,1,0,−1,0,...]について考える。絶対値−1関数を各非0値に適用し、各非0値の符号を検査すると、以下のように符号とレベル情報との6つの組合せ、すなわち、+3、+2、−2、+1、+0、および−0が生成される。
ブロック613において、電子デバイス421は、マッピング表を使用して、入力値を、符号とレベル情報との各生成された組合せにマッピングする。例示的なマッピング表が図9に示されている。図9は、ブロック612およびブロック613に従って入力値を決定するための数式をも示す。
ブロック614において、電子デバイス421は、複数の2値化表、例えば、コンテキスト適応型可変長コーディング(CAVLC)のVLC表を使用して、入力値の適応型2値化を実施する。CAVLCのVLC表の一例が図10に示されている。図10は、前の入力情報に基づいて2値化表を更新するための数式をも示す。
一例では、ブロック614は、少なくとも第1の入力値を2値化するために列VLC−Table−0(図10)からの値を初めに使用することを含み得る。VLC表番号は、前の値が所与のしきい値、例えば3、5、13、27よりも大きいときに単調に増加し得る。したがって、第1の単調増加の後に続く適応型2値化は、列VLC−Table−1からの値を使用し得、第2の単調増加の後に続く適応型2値化は、列VLC−Table−2からの値を使用し得る、などである。
ブロック615において、電子デバイス421は、CABACバイパスコーディングモードを使用して、適応型2値化の得られた値を符号化する。
(高スループット2値化モード条件)
一例では、画像データのブロックに対応する特性がプリセットされたしきい値よりも大きい場合、高スループット2値化モード条件が満たされ、例えば、電子デバイス421は、高スループット2値化モードインジケータ、例えば、HTBモードフラグを1の値に設定し得る(これは、もちろん、設計の選好に応じて、HTBモードフラグのデフォルト値を変更するか、またはHTBモードフラグをデフォルト値のままにすることを含み得る)。
一例では、電子デバイス421は、コーディングのビットレートが、プリセットされたしきい値よりも大きいかどうかを判定する。ビットレートが、プリセットされたしきい値よりも大きい場合、高スループット2値化モード条件が満たされる。一例では、プリセットされたビットレートしきい値はQP16に対応する。ただし、異なるQP値に対応するプリセットされたしきい値が使用され得る。
一例では、高スループット2値化モード条件が満たされるかどうかの(電子デバイス421または電子デバイス422による)判定は、画像データの対応するブロックの変換ユニットレベル(例えば、これに限定はしないが、変換ユニットによって生成されるレベル値)が、プリセットされたしきい値よりも大きいかどうかに基づく。
一例では、高スループット2値化モード条件は、0よりも大きい大きさをもつ、画像データの対応するブロックのレベル値の数が、プリセットされたしきい値、例えば、8よりも大きいときに満たされ得る。別の例では、高スループット2値化モード条件は、第1のプリセットされたしきい値よりも大きい大きさをもつ、画像データの対応するブロックのレベル値の数が、第2のプリセットされたしきい値よりも大きいときに満たされる。さらなる例では、高スループット2値化モード条件は、画像データの対応するブロックのレベル値が、プリセットされた値よりも大きいときに満たされる。
図20A〜図20Eは、直前の2つの段落で説明した原理のうちの少なくともいくつかに従って動作する例示的なシステム中のエンコーダまたはデコーダのために使用され得る構成のいくつかの例を示す。図20Aは、図示のように、プロセス1611〜1616を示す。図20Bは、図示のように、プロセス1711〜1716を示す。図20Cは、プロセス1801〜1805およびプロセス1814〜1820を示す。図20Dは、プロセス1901〜1905およびプロセス1914〜1920を示す。図20Eでは、図示のように、図20Cのプロセスがプロセス1816まで実施される。プロセス1816においてカウンタがしきい値よりも大きい場合、構成は図20Eに示されているように続く。
一例では、高スループット2値化モード条件が満たされるかどうかの(電子デバイス421または電子デバイス422による)判定は、画像データの対応するブロックのスライスレベルが、プリセットされたしきい値よりも大きいかどうかに基づく。
(高スループット2値化モードインジケータ)
一例では、電子デバイス421は、高スループット2値化インジケータ、例えばHTBモードフラグを、ヘッダ中に、例えばスライスヘッダ中に設定するように構成される。高スループット2値化インジケータは、スライスヘッダに対応するブロックに対して、図5に示されたプロセスが実行されるか否かを判定するために使用され得る。
一例では、HTBモードフラグを「1」に設定すると、電子デバイス421は、「1」のHTBモードフラグ値を観測したことに応答して、スライスヘッダに対応するブロックに対して図5のフローチャートに示されたプロセスを実施する。HTBモードフラグを「0」に設定すると、電子デバイス421は、「0」のHTBモードフラグ値を観測したことに応答して、従来のCABAC技法に従ってスライスヘッダに対応するブロックを符号化する。
HTBモードフラグ値は、復号のために電子デバイス422によっても観測される。一例では、電子デバイス422は、「1」のHTBモードフラグ値を観測したことに応答して、スライスヘッダに対応するブロックに対して図7のフローチャートに示されたプロセスに従って、「1」のHTBモードフラグ値を有するスライスヘッダに対応するブロックを復号する。電子デバイス422は、「0」のHTBモードフラグ値を観測したことに応答して、従来のCABAC技法に従って、「0」のHTBモードフラグ値を有するスライスヘッダに対応するブロックを復号する。
図7は、復号側の電子デバイス上での高スループット2値化モードのための方法の一構成を示す流れ図である。
ブロック710において、電子デバイス422はビットストリームを取得する。ブロック711において、電子デバイス422は、取得されたビットストリームからバイナリシンボルを復元する。
菱形712において、電子デバイス422は、高スループット2値化モード条件が満たされるかどうかを判定する。一例では、判定は、受信されたビットストリームに対応する、スライスヘッダなどのヘッダを検査することを含み得る。ヘッダを検査することは、高スループット2値化モードインジケータの値について、取得されたビットストリームに対応するスライスヘッダを検査することをさらに含み得る。菱形712において条件が満たされない場合、ブロック713において、電子デバイス422は、レギュラー復号モードとバイパスコーディングモードとを選択的に使用することによってバイナリシンボルを復号する。
菱形712において条件が満たされる場合、ブロック714において、電子デバイス421は、バイナリシンボルを復号するために高スループット2値化モードとバイパス復号モードとを使用する。電子デバイス422は、ブロック715において、TQCの取得されたブロックをメモリデバイスに記憶し、および/またはビデオデータを復元し得る。
図8は、高スループット2値化モードを使用するデコーダ処理の一構成を示す流れ図である。
ブロック812〜815は、ブロック714において実施される動作をさらに詳細に示す。ブロック812において、電子デバイス422は、符号化されたバイナリシンボルをバイパス復号する。ブロック813において、電子デバイス422は、バイパス復号の結果を逆2値化する。ブロック814において、電子デバイス422は、マッピング表を使用して、逆2値化からの復元された入力値を、符号とレベル情報とにマッピングする。ブロック815において、電子デバイス422は、符号とレベル情報とを使用して、変換され量子化された係数(TQC)のブロックを復号する。
一例では、プロセッサおよび該プロセッサと電子通信しているメモリを含む電子デバイスが提供される。メモリに記憶されるのは、動作を実施するためにプロセッサによって実行可能な命令である。
一例では、動作は、変換され量子化された係数(TQC)のブロックを取得することを含み得る。別の動作は、高スループット2値化モード条件が満たされるかどうかを判定することを含み得る。別の動作は、高スループット2値化モード条件が満たされると判定したことに応答して、高スループット2値化モードを使用して第1のビットストリームを生成することを含み得る。別の動作は、高スループット2値化モード条件が満たされないと判定したことに応答して、第2のビットストリームを生成することを含み得る。別の動作は、生成された第1または第2のビットストリームをデコーダに送信することを含み得る。
一例では、高スループット2値化モードを使用する第1のビットストリームの生成は、追加の動作を含み得る。1つの動作は、絶対値−1関数を各非0値に適用し各非0値の符号を検査することによって、ブロックからの任意の非0値について符号とレベル情報とを生成することを含み得る。別の動作は、マッピング表を使用して、入力値を、符号とレベル情報との各生成された組合せにマッピングすることを含み得る。別の動作は、複数の2値化表を使用して、マッピングされた入力値の適応型2値化を実施することを含み得る。別の動作は、適応型2値化の結果を符号化することを含み得る。
一例では、複数の2値化表は、CAVLCのVLC表を含む。適応型2値化の結果を符号化することは、CABACバイパスバイパスコーディングモードを利用する動作をさらに含み得る。
一例では、複数の2値化表を使用するマッピングされた入力値の適応型2値化は、追加の動作を含み得る。1つの動作は、マッピングされた入力値のうちの1つが、プリセットされたしきい値よりも大きいかどうかを判定することを含み得る。別の動作は、前記マッピングされた入力値が、プリセットされたしきい値よりも大きいと判定したことに応答して、表の更新を実施することを含み得る。一例では、表の更新選択は、表のセットからの表の選択を含む。
一例では、第1のビットストリームの生成は追加の動作を含み得る。1つの動作は、CABACに従ってレギュラーコーディングモードとバイパスコーディングモードとを選択的に利用することによってブロックをコーディングすることを含み得る。別の動作は、バイパスコーディングモードのみを利用して第1のビットストリームを生成することを含み得る。
一例では、高スループット2値化モード条件が満たされるかどうかの判定は、画像データのブロックに対応する特性が、プリセットされたしきい値よりも大きいかどうかに基づく。
一例では、高スループット2値化モード条件が満たされるかどうかの判定は、画像データの対応するブロックのスライスレベルが、プリセットされたしきい値よりも大きいかどうかに基づく。
一例では、高スループット2値化モード条件が満たされるかどうかの判定は、画像データの対応するブロックの変換ユニットレベルが、プリセットされたしきい値よりも大きいかどうかに基づく。
(HEVCにおけるCABACのロスレスコーディング技法)
図12は、ロスレスコーディング技法のためのエンコーダとデコーダとの一例を示すブロック図である。
システム1400は、デコーダ1412によって復号されるべき、符号化されたブロックを生成するために、エンコーダ1411を含む。エンコーダ1411とデコーダ1412とはネットワークを介して通信し得る。
エンコーダ1411は、HEVCにおけるCABACのロスレスコーディング技法を使用して符号化するように構成された電子デバイス1421を含む。電子デバイス1421は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図13、図16、および図18に示される動作を実施するためにプロセッサによって実行可能な命令を記憶する。
デコーダ1412は、HEVCにおけるCABACのロスレスコーディング技法を使用して復号するように構成された電子デバイス1422を含む。電子デバイス1422は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図15、図17、および図19に示される動作を実施するように実行可能な命令を記憶する。
図13は、電子デバイス上でのロスレスコーディングのための方法の一構成を示す流れ図である。
ブロック911において、電子デバイス1421は、残差サンプルを表すブロックを取得する。一例では、ジグザグ走査方向は、隣接ピクセル間の空間的冗長性を除去するために使用されるイントラ予測の方向に適合するように再定義され得る。ロスレス・イントラ・コーディング・モードにおいて利用可能ないくつかのイントラ予測モードがある。一例では、垂直イントラ予測モードでは、上側のピクセルが現在のピクセル値の予測値になり、現在の値と予測値(垂直モードにおける上側のピクセル値)との間の差分が残差サンプル値になる。コンテキストモデル選択は、イントラ予測の方向と、対応するブロックサイズとにも依存し得る。
ブロック912において、電子デバイス1421は、シンタックス要素のシーケンスにおいて使用されるべき有意性マップを生成する。ブロック913において、電子デバイス1421は、ブロックの最後の走査位置に対応する有意性マップフィールドに、ブロックの最後の位置のレベルに対応する値を入力する。
ブロック914において、電子デバイス1421は、前記値を有する有意性マップを含むシンタックス要素のシーケンスを生成する。シンタックス要素のシーケンスを生成することは、従来のCABACロスレスコーディングモードの最後の位置をコーディングするステップを除外する。
図14は、図13に示された構成によるシンタックス要素のシーケンスを示す表である。
図11に示されたシンタックス要素のシーケンスと比較して、図14に示されているシンタックス要素のシーケンスを対比することによって、いくつかの相違が観察され得る。図11に示されたシンタックス要素のシーケンスは、従来のCABACロスレスコーディングモードが最後の位置のコーディングステップを含むので、Last_position_XフィールドとLast_position_Yフィールドとを含む。対照的に、図14に示されているシンタックス要素のシーケンスは、図14の構成が最後の位置のコーディングステップを省略するので、Last_position_XフィールドとLast_position_Yフィールドとを含まない。
シンタックス要素の両方のシーケンスは有意性マップを含むが、有意性マップの間に相違がある。図11のシンタックス要素のシーケンスの有意性マップでは、入力されたLast_position_X/Last_position_Yフィールドに対応すべき有意性マップフィールドは入力されていない。対照的に、図14では、ブロックの最後の走査位置に対応する有意性マップフィールドは、ブロックの最後の位置のレベルに対応する値、すなわちこの例示的なブロックでは「0」が入力されている。
図15は、復号側の電子デバイス上でのロスレス復号のための方法の一構成を示す流れ図である。
ブロック1011において、電子デバイス1422は、ビットストリームから、ブロックの最後の走査位置に対応するいくつかの値を含んでいる有意性マップフィールドを有するシンタックス要素のシーケンスを復元する。ブロック1012において、電子デバイス1422は、有意性マップを使用して、および有意性マップの前記値を使用して、ブロックのレベルを復号する。ブロック1013において、電子デバイス1422は、残差値に対応する取得されたブロックをメモリデバイスに記憶し、および/またはビデオデータを復元する。
図16は、電子デバイス上でのロスレスコーディングのための方法の別の構成を示す流れ図である。
ブロック1111において、電子デバイス1421は、残差サンプルのブロックについてのレベル情報を表すシンタックス要素のシーケンスを取得する。ブロック1112において、電子デバイス1421は、複数の2値化表、例えばCAVLCのVLC表(図10)を使用して、シンタックス要素のシーケンスの絶対−3部分の値に対して適応型2値化を実施し、シンタックス要素のシーケンスの絶対−3部分の値は、複数の2値化表のための入力値として使用される。前の入力情報に基づいて2値化表を更新するための式が以下に示されている。
if(‘abs[coefficient(i)]−3’>(Table[vlc]))vlc++;
where Table[vlc]={3,5,13,27};
「i」は走査位置を表し、「vlc」は現在のvlc表番号を表す。
*利用可能な前の「絶対−3」がないので、vlcは最初に0(またはイントラスライスでは1)に設定され、vlcが4に等しいときにvlc表の更新は停止される。
一例では、ブロック1111は、少なくとも第1の入力値を2値化するために、インタースライスでは列VLC−Table−0(図10)およびイントラスライスでは列VLC−Table−1からの値を初めに使用することを含み得る。VLC表番号は、前の値が所与のしきい値、例えば3、5、13、27よりも大きいときに単調に増加し得る。したがって、第1の単調増加の後に続く適応型2値化は、列VLC−Table−1からの値を使用し得、第2の単調増加の後に続く適応型2値化は、列VLC−Table−2からの値を使用し得る、などである。
ブロック1113において、電子デバイス1421は、CABACバイパスコーディングモードを使用して、適応型2値化の得られた値を符号化する。
図17は、復号側の電子デバイス上でのロスレスコーディングのための方法の別の構成を示す流れ図である。
ブロック1211において、電子デバイス1422は、ビットストリームからバイナリシンボルを復元する。ブロック1212において、電子デバイス1422は、バイナリシンボルをバイパス復号する。ブロック1213において、電子デバイス1422は、バイパス復号の結果を適応的に逆2値化する。ブロック1214において、電子デバイス1422は、適応型逆2値化の結果を使用して、残差情報を表すブロックを復元する。
図18は、電子デバイス上でのロスレスコーディングのための方法のさらに別の構成を示す流れ図である。
ブロック1311において、電子デバイス1421は、CABACのコンテキストモデルのサブセットのみにアクセスする。CABACのコンテキストモデルの数は184であり得る。サブセットを生成するために、これらのコンテキストモデルは、コンテキストモデルの関連する特性に基づいて、例えば、どのコンテキストモデルが周波数成分に関連付けられるかに基づいて、どのコンテキストモデルが走査位置に関連付けられるかに基づいて、どのコンテキストモデルがCABACの最後の位置のコーディングステップに関連付けられるかに基づいてなど、またはそれらの任意の組合せに基づいてフィルタ処理され得る。フィルタ処理は、一例では電子デバイス1421によって実施され得るが、別の例では、電子デバイス1421がロスレスコーディングモードのために提供されるサブセットにアクセスし得るように、電子デバイス1421にサブセットが提供され得る。一例では、サブセットを生成するために、CABACのコンテキストモデルは、コンテキストモデルの関連する特性に基づいて、例えば、どのコンテキストモデルが周波数成分に関連付けられるかに基づいて、どのコンテキストモデルが走査位置に関連付けられるかに基づいて、どのコンテキストモデルがCABACの最後の位置のコーディングステップに関連付けられるかに基づいてなど、またはそれらの任意の組合せに基づいて分類され得る。一例では、周波数成分と走査位置とは等しく、交換可能である
一例では、サブセットは、第1の周波数成分に等しくない周波数成分をもつCABACコンテキストモデルを含んでいないことがある。一例では、得られるサブセットは、26個のコンテキストモデル、すなわち、有意性マップをコーディングするための2つのコンテキストモデル(一方は第1のルーマ周波数成分に関し、他方は第1のクロマ周波数成分に関する)、ならびにGreater_than_1フラグの第1のルーマ周波数成分をコーディングするため、Greater_than_1フラグの第1のクロマ周波数成分をコーディングするため、ルーマのGreater_than_2フラグの第1のルーマ周波数成分をコーディングするため、およびGreater_than_2フラグの第1のクロマ周波数成分をコーディングするためのそれぞれ6つのコンテキストモデルを含むことになろう。したがって、Greater_than_1とGreather_than_2とのために合計24個のコンテキストモデルが使用される。一例では、前記第1の周波数成分は、ブロック1312において有意性マップをコーディングするときのみアクセスされる。
表(3)に示されるように、フラグの第1のルーマ周波数をコーディングするための6つのコンテキストモデルは、サブブロックタイプとLargerT1値とに依存し得、ここで、LargerT1値は、前のサブブロック中の1よりも大きい係数レベル値の数である。一例では、「サブブロック」という用語は、残差サンプルの(またはTQCへのブロックの)区分を指す。例えば、4×4のサブブロックサイズでは、8×8のサイズをもつ残差サンプルが4つの4×4サブブロックに分割される。同様に、8×4のサブブロックサイズでは、32×8のサイズをもつ残差サンプルが8つの8×4サブブロックに分割される。サブブロックは、コーディング順序によって識別され、サブブロック0が最初にコーディングされるサブブロックを示す。一例では、最初にコーディングされるサブブロックは、ブロックの右下に位置するサブブロックである。別の例では、最初にコーディングされるサブブロックは、ブロックの中央に位置するサブブロックである。
ブロック1312において、電子デバイス1421は、有意性マップをコーディングするためにコンテキストモデルのサブセットを使用する。
段落0123において説明するように、第1の周波数成分(または走査位置)に等しくない周波数成分(または走査位置)をもつコンテキストモデルは、ロスレスコーディングモードにおいて使用されないことがある。これは、ロスレスコーディングモードのための計算複雑さおよび記憶容量を低減する利益を有する。コンテキストモデルの第1のサブセットは有意性マップ処理のために使用され得る。コンテキストモデルの第2のサブセットは、レベルコーディング、例えばGreater_than_1コーディングおよび/またはGreater_than_2コーディングのために使用され得る。第1のサブセットは第2のサブセットとは異なり得る。
上記で説明した原理のうちの少なくともいくつかを適用する例において、有意性マップ処理において使用されるコンテキストモデルの第1のサブセットは、ただ1つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、有意性マップ処理において使用されるコンテキストモデルの第1のサブセットは、色情報(ルーマ/クロマ)に基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用するさらに別の例では、有意性マップ処理において使用されるコンテキストモデルの第1のサブセットは、予測タイプ、例えば、ブロック内のフレーム内またはフレーム間予測の使用に基づく1つよりも多いコンテキストモデル、例えばいくつかのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、有意性マップ処理において使用されるコンテキストモデルの第1のサブセットは、ブロックサイズに基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、有意性マップ処理において使用されるコンテキストモデルの第1のサブセットは、サブブロックタイプに基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。
上記で説明した原理のうちの少なくともいくつかを適用する例において、レベルコーディングにおいて使用されるコンテキストモデルの第2のサブセットは、ただ1つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、レベルコーディングにおいて使用されるコンテキストモデルの第2のサブセットは、色情報(ルーマ/クロマ)に基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用するさらに別の例では、レベルコーディングにおいて使用されるコンテキストモデルの第2のサブセットは、ブロック予測タイプ、例えば、ブロック内のフレーム内またはフレーム間予測の使用に基づく1つよりも多いコンテキストモデル、例えばいくつかのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、レベルコーディングにおいて使用されるコンテキストモデルの第1のサブセットは、ブロックサイズに基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。上記で説明した原理のうちの少なくともいくつかを適用する別の例では、レベルコーディングにおいて使用されるコンテキストモデルの第1のサブセットは、サブブロックタイプに基づく1つよりも多いコンテキストモデル、例えば2つまたは3つのコンテキストモデルを含み得る。
図19は、復号側の電子デバイス上でのロスレスコーディングのための方法のさらに別の構成を示す流れ図である。
ブロック1511において、電子デバイス1422は、CABACのコンテキストモデルのサブセットのみにアクセスする。ブロック1512において、電子デバイス1422は、コンテキストモデルのサブセットを使用してビットストリームからバイナリシンボルを復元する。ブロック1513において、電子デバイス1422は、復号の結果を使用してビデオデータを復元する。
上記において、電子デバイス1421によって実装され得る構成は、図13、図16、および図18に示されている。これらの構成のすべてを用いてエンコーダを構成すると、コーディング性能が、既知のCABACロスレスコーディングモードと比較して向上する。とはいえ、これらの構成のすべてよりも少ないものを任意の組合せで用いて、例えば、これらの構成のうちの1つまたはこれらの構成のうちのいずれか2つを用いてエンコーダを構成することも可能で実際的であり、また、既知のCABACロスレスコーディングモードと比較してコーディング性能を向上させる。
上記において、電子デバイス1422によって実装され得る構成は、図14、図17、および図19に示されている。これらの構成のすべてを用いてデコーダを構成すると、コーディング性能が、既知のCABACロスレスコーディングモードと比較して向上する。とはいえ、これらの構成のすべてよりも少ないものを任意の組合せで用いて、例えば、これらの構成のうちの1つまたはこれらの構成のうちのいずれか2つを用いてデコーダを構成することも可能で実際的であり、また、既知のCABACロスレスコーディングモードと比較してコーディング性能を向上させる。
一例では、プロセッサおよび該プロセッサと電子通信しているメモリを含む電子デバイスが提供される。メモリに記憶されるのは、動作を実施するためにプロセッサによって実行可能な命令である。
一例では、動作は、ロスレス符号化のために残差サンプルを表すブロックを取得することを含み得る。別の動作は、有意性マップを生成することを含み得、この生成は、ブロックの最後の走査位置に対応する有意性マップフィールドに、ブロックの最後の走査位置のレベルに対応する値を入力することを含む。別の動作は、この値を有する有意性マップを含むシンタックス要素のシーケンスを生成することを含み得る。別の動作は、シンタックス要素の生成されたシーケンスを表すビットストリームをデコーダに送信することを含み得る。
一例では、シンタックス要素のシーケンスは、コンテキスト適応型バイナリ算術コーディング(CABAC)の最後の位置をコーディングするステップを実施せずに生成される。
一例では、別の動作は、複数の2値化表を使用して適応型2値化を実施することを含み得、シンタックス要素のシーケンスの絶対−3部分の値は、複数の2値化表のための入力値として使用される。別の動作は、適応型2値化の結果を符号化することを含み得る。複数の2値化表はCAVLCのVLC表であり得る。
一例では、適応型2値化の結果を符号化することは、追加の動作を含み得る。追加の動作は、CABACバイパスコーディングモードを利用することを含み得る。
一例では、複数の2値化表を使用する入力値の適応型2値化は、追加の動作を含み得る。追加の動作は、入力値のうちの1つが、プリセットされたしきい値よりも大きいかどうかを判定することを含み得る。追加の動作は、前記入力値が、プリセットされたしきい値よりも大きいと判定したことに応答して、表の更新を実施することを含み得る。
一例では、別の動作は、CABACのコンテキストモデルのサブセットのみにアクセスすることを含み得る。別の動作は、有意性マップをコーディングするためにコンテキストモデルのサブセットを使用することを含み得る。サブセットは、第1の周波数に等しくない周波数成分をもつCABACのコンテキストモデルを含み得る。
一例では、プロセッサおよび該プロセッサと電子通信しているメモリを含む電子デバイスが提供される。メモリに記憶されるのは、動作を実施するためにプロセッサによって実行可能な命令である。
一例では、動作は、ロスレス符号化のために残差サンプルを表すブロックを取得することを含み得る。別の動作は、ブロックを表すためにシンタックス要素のシーケンスを生成することを含み得る。別の動作は、複数の2値化表を使用して適応型2値化を実施することを含み得、シンタックス要素のシーケンスの絶対−3部分の値は、複数の2値化表のための入力値として使用される。別の動作は、適応型2値化の結果を符号化することを含み得る。別の動作は、符号化をデコーダに送信することを含み得る。
一例では、複数の2値化表はCAVLCのVLC表である。
一例では、適応型2値化の結果を符号化することは、追加の動作を含み得る。追加の動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)バイパスコーディングモードを利用することを含み得る。
一例では、複数の2値化表を使用する入力値の適応型2値化は、追加の動作を含み得る。追加の動作は、入力値のうちの1つが、プリセットされたしきい値よりも大きいかどうかを判定することを含み得る。追加の動作は、前記入力値が、プリセットされたしきい値よりも大きいと判定したことに応答して、表の更新を実施することを含み得る。
一例では、別の動作は、有意性マップを生成することを含み得、この生成は、ブロックの最後の走査位置に対応する有意性マップフィールドに、ブロックの最後の走査位置のレベルに対応する値を入力することを含む。別の動作は、生成された有意性マップを使用してシンタックス要素のシーケンスを生成することを含み得る。
一例では、シンタックス要素のシーケンスは、CABACの最後の位置をコーディングするステップを実施せずに生成される。
一例では、方法が提供される。本方法は、デコーダを使用して実施され得る。本方法の1つの動作は、どのコンテキストモデルが周波数成分に関連付けられるかに基づいて、コンテキスト適応型バイナリ算術コーディング(CABAC)のコンテキストモデルをフィルタ処理することを含み得る。本方法の別の動作は、ビットストリームを取得することを含み得る。本方法の別の動作は、ビットストリームからバイナリシンボルを復元することを含み得る。本方法の別の動作は、フィルタ処理されたコンテキストモデルを使用してバイナリシンボルを復号することを含み得る。本方法の別の動作は、復号の結果を使用してビデオデータを復元することを含み得る。
一例では、別の動作は、ビットストリームから、残差サンプルを表すブロックの最後の走査位置に対応する値が入力された有意性マップを有する、シンタックス要素のシーケンスを復元することを含み得る。別の動作は、有意性マップを使用して、および有意性マップの前記値を使用して、ブロックのレベルを復号することを含み得る。
一例では、ブロックのレベルの復号は、CABACの最後の位置を復号するステップを実施せずに実施され得る。
一例では、別の動作は、復元されたバイナリシンボルをバイパス復号することを含み得る。別の動作は、バイパス復号の結果を適応的に逆2値化することを含み得る。別の動作は、逆2値化の結果を使用して、残差情報を表すブロックを復元することを含み得る。
一例では、別の動作は、適応型逆2値化のためにCAVLCの複数のVLC表を使用することを含み得る。
一例では、バイパス復号は、CABACバイパス復号モードを利用することを含み得る。
図21は、復号側の電子デバイス上で高スループットモード条件が満たされるかどうかを判定するための方法の一構成を示す流れ図である。
ブロック2611において、電子デバイス422はビットストリームを取得する。ブロック2612において、電子デバイス422は、レベル値のブロックを取得する。一例では、ブロックはTQCのブロックを含む。
ブロック2613において、電子デバイス422は、0に等しくないレベル値の数を判定する。菱形2614において、電子デバイス422は、この数が、プリセットされたしきい値よりも大きいかどうかを判定する。一例では、プリセットされたしきい値は8であり得、これは4×4ブロックの値の数の半分である。N個のレベル値を有するブロックサイズを用いた例では、しきい値は、Nの50%に相当し得る。一例では、電子デバイス422は、電子デバイス421からシグナリングを受信する。電子デバイス421によって送信されるシグナリングは、プリセットされたしきい値を指定するか、またはプリセットされたしきい値を決定するために電子デバイス421によって使用され得る情報を含み得る。
菱形2614において、数が、プリセットされたしきい値よりも大きくない場合、ブロック2615において、電子デバイス422は、第1の2値化方法で0に等しくないレベル値を復号する。菱形2614において、数が、プリセットされたしきい値よりも大きい場合、ブロック2616において、電子デバイス422は、第1の2値化方法とは異なる第2の2値化方法で0に等しくないレベル値を復号する。一例では、第2の2値化方法は、前に説明したHTBモードなど、高スループット2値化モードを含み得る。一例では、第1の2値化方法は、従来のCABACの2値化を含み得る。
図22は、復号側の電子デバイス上で高スループットモード条件が満たされるかどうかを判定するための方法の別の構成を示す流れ図である。
ブロック2711において、電子デバイス422はビットストリームを取得する。ブロック2712において、電子デバイス422は、レベル値のブロックを取得する。一例では、ブロックはTQCのブロックを含む。
ブロック2713において、電子デバイス422は、第1のプリセットされたしきい値よりも大きい絶対値をもつレベル値の数を判定する。一例では、第1のプリセットされたしきい値は、1または2のいずれかであり得るが、別の例では他の第1のプリセットされたしきい値が使用され得る。菱形2714において、電子デバイス422は、数が、第2のプリセットされたしきい値よりも大きいかどうかを判定する。一例では、第2のプリセットされたしきい値は8であり得、これは4×4ブロックの値の数の半分である。N個のレベル値を有するブロックサイズを用いた例では、第2のプリセットされたしきい値は、Nの50%に相当し得る。
一例では、電子デバイス422は、電子デバイス421からシグナリングを受信する。電子デバイス421によって送信されるシグナリングは、第1のプリセットされたしきい値および/または第2のプリセットされたしきい値を指定するか、あるいは第1のプリセットされたしきい値および/または第2のプリセットされたしきい値を決定するために電子デバイス421によって使用され得る情報を含み得る。
菱形2714において、数が、第2のプリセットされたしきい値よりも大きくない場合、ブロック2715において、電子デバイス422は、第1の2値化方法で0に等しくないレベル値を復号する。菱形2714において、数が、プリセットされたしきい値よりも大きい場合、ブロック2716において、電子デバイス422は、第1の2値化方法とは異なる第2の2値化方法で0に等しくないレベル値を復号する。一例では、第2の2値化方法は、前に説明したHTBモードなど、高スループット2値化モードを含み得る。一例では、第1の2値化方法は、既知のCABAC復号の2値化を含み得る。
図23は、エンコーダとデコーダとの一例を示すブロック図である。
システム2400は、デコーダ2412によって復号されるべき、符号化されたブロックを生成するために、エンコーダ2411を含む。エンコーダ2411とデコーダ2412とはネットワークを介して通信し得る。
デコーダ2412は、高スループット有意性マップ処理を使用して復号するように構成された電子デバイス2422を含む。電子デバイス2422は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図24〜図27に示される動作を実施するように実行可能な命令を記憶する。
エンコーダ2411は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得る電子デバイス2421を含み、メモリは、図24〜図27に示されている構成の説明およびそれらの対応する説明から当業者によって理解されるであろう動作を実施するようにプロセッサによって実行可能な命令を記憶する。
図24は、復号側の電子デバイス上での高スループット有意性マップ復号のための方法の構成を示す流れ図である。
ブロック2801において、電子デバイス2422はビットストリームを取得する。ブロック2802において、電子デバイス2422は、レベル値のブロックを取得する。一例では、ブロックはTQCのブロックを含む。ブロック2803において、電子デバイス2422は、ブロックのレベル値、例えばブロックの第1のレベル値またはブロックの次のレベル値を取得する。
菱形2804において、電子デバイス2422は、取得されたレベル値がブロックの最後のレベル値であるかどうかを判定する。菱形2804において、取得されたレベル値が最後のレベル値でない場合、電子デバイス2422は菱形2814に進む。菱形2804において、取得されたレベル値が最後のレベル値である場合、ブロック2805において、電子デバイス2422は、レベル値の大きさを復号する(これは、レベル値ごとに符号情報と絶対量の両方を決定することを含み得る)。
再び菱形2814を参照すると、電子デバイス2422は、第1の復号方法を使用して、取得されたレベル値が0でないかどうかを判定する。菱形2814において、取得されたレベル値が0でない場合、電子デバイス2422は、ブロック2815に進み、そうでない場合、電子デバイス2422はブロック2803に戻る。ブロック2815において、電子デバイス2422はカウンタを増分する。
菱形2816において、電子デバイス2422は、カウンタの現在のカウントが、プリセットされたしきい値よりも大きいかどうかを判定する。一例では、プリセットされたしきい値は、図21に関して説明したプリセットされたしきい値を含み得る。菱形2816において、カウンタの現在のカウントが、プリセットされたしきい値よりも大きい場合、電子デバイス2422はブロック2817に進み、そうでない場合、電子デバイス2422はブロック2803に戻る。
ブロック2817において、電子デバイス2422は、ブロックの次のレベル値を取得する。菱形2818において、電子デバイス2422は、取得されたレベル値がブロックの最後のレベル値であるかどうかを判定する。菱形2818において、取得されたレベル値が最後のレベル値でない場合、電子デバイス2422はブロック2819に進み、そうでない場合、ブロック2820において、電子デバイス2422は、レベル値の大きさを復号する。
ブロック2819において、電子デバイス2422は、第1の復号方法とは異なる第2の復号方法を使用して、取得されたレベル値が0でないかどうかを判定する。一例では、第2の復号方法は、高スループット復号方法、バイパス復号方法などを含む。一例では、第1の復号方法はCABACのレギュラー復号モードを含む。
上記によれば、有意性マップは、要素ごとに、例えば、有意性マップフィールドごとに復号され得る。プリセットされたしきい値に達したとき、電子デバイス2422は、残りの有意性マップ部分の復号を変更し得る。残りの有意性マップ部分には高スループットまたはバイパス有意性マップ復号モードが使用され得る。したがって、復号性能は、従来のCABAC有意性マップ復号よりも向上し得る。
図25は、復号側の電子デバイス上での高スループット有意性マップ復号のための方法の別の構成を示す流れ図である。
図25に示される方法では、図示のように、プロセス2801〜2805(図24)と同様のプロセス2901〜2905が実施され得る。菱形2914において、電子デバイス2422は、第1の復号方法を使用して、取得されたレベル値の絶対値が第1のしきい値よりも大きいかどうかを判定する。一例では、第1のしきい値は、1または2のいずれかであり得るが、別の例では他の第1のしきい値が使用され得る。菱形2914において、取得されたレベル値の絶対値が第1のしきい値よりも大きい場合、電子デバイス2422はブロック2915に進み、そうでない場合、電子デバイス2422はブロック2903に戻る。ブロック2915において、電子デバイス2422はカウンタを増分する。
菱形2916において、電子デバイス2422は、カウンタの現在のカウントが、第2のプリセットされたしきい値よりも大きいかどうかを判定する。一例では、第2のプリセットされたしきい値は8であり得、これは4×4ブロックの値の数の半分である。N個のレベル値を有するブロックサイズを用いた例では、第2のプリセットされたしきい値は、Nの50%に相当し得る。菱形2916において、カウンタの現在のカウントが、第2のしきい値よりも大きい場合、電子デバイス2422はブロック2917に進み、そうでない場合、電子デバイス2422はブロック2903に戻る。
ブロック2917において、電子デバイス2422は、ブロックの次のレベル値を取得する。菱形2918において、電子デバイス2422は、取得されたレベル値がブロックの最後のレベル値であるかどうかを判定する。菱形2918において、取得されたレベル値が最後のレベル値でない場合、電子デバイス2422はブロック2919に進み、そうでない場合、ブロック2920において、電子デバイス2422は、レベル値の大きさを復号する。
ブロック2919において、電子デバイス2422は、第1の復号方法とは異なる第2の復号方法を使用して、取得されたレベル値の絶対値が第1のしきい値よりも大きいかどうかを判定する。一例では、第2の復号方法は、高スループット復号方法、バイパス復号方法などを含む。一例では、第1の復号方法はCABACのレギュラー復号モードを含む。
上記によれば、有意性マップは、要素ごとに、例えば、有意性マップフィールドごとに復号され得る。プリセットされたしきい値に達したとき、電子デバイス2422は、残りの有意性マップ部分の復号を変更し得る。残りの有意性マップ部分には高スループットまたはバイパス有意性マップ復号モードが使用され得る。したがって、復号性能は、従来のCABAC有意性マップ復号よりも向上し得る。
図26は、復号側の電子デバイス上での復号バイパス機能を用いた高スループット有意性マップ復号のための方法の構成を示す流れ図である。
図26に示される方法では、図示のように、プロセス2801〜2804およびプロセス2814〜2816(図24)と同様のプロセス3001〜3004およびプロセス3014〜3016が実施され得る。ブロック3005において、電子デバイス2422は、第3の復号方法、例えば2値化方法を使用して、レベル値の大きさを復元する。ブロック3020において、電子デバイス2422は、第3の復号方法を使用してレベル値の第1の部分の大きさを復元し、第4の復号方法、例えば異なる2値化方法を使用してレベル値の第2の部分の大きさを復元する。
一例では、レベル値の第1の部分は、第1の復号方法を用いて処理されるレベル値を含む。レベル値の第2の部分は、第1の復号方法を用いて処理されないレベル値を含む。
図26に示されている構成と同様の、復号側の電子デバイス上での復号バイパス機能を用いた高スループット有意性マップ復号のための方法の他の構成は、可能で実際的であり得ることが明らかなはずである。例えば、別の構成では、電子デバイス2422は、菱形2914(図25)に同様に、第1の復号方法を使用して、取得されたレベル値の絶対値が第1のプリセットされたしきい値よりも大きいかどうかを判定する。また、電子デバイス2422は、菱形2916(図25)と同様に、カウンタが、第2のプリセットされたしきい値よりも大きいかどうかを判定する。
上記によれば、有意性マップは、要素ごとに、例えば、有意性マップフィールドごとに復号され得る。プリセットされたしきい値に達したとき、電子デバイス2422は、有意性マップを復号することを停止し得る(有意性マップの残りの要素は復号されない)。その後、復号された要素に対応するレベル値は、2値化方法(例えば0値を送ることができる2値化方法)を使用して処理され、一方、残りの要素は、異なる2値化方法(例えば0値を送ることができない2値化方法)を使用して処理される。したがって、復号性能は、従来のCABAC有意性マップ復号よりも向上し得る。
図27は、復号側の電子デバイス上での復号方法スイッチング機能を用いた高スループット有意性マップ復号のための方法の構成を示す流れ図である。
図27に示される方法では、図示のように、プロセス2801〜2804およびプロセス2814〜2819(図24)と同様のプロセス3801〜3804およびプロセス3814〜3819が実施され得る。ブロック3805において、電子デバイス2422は、第3の復号方法(図26の第3の復号方法)を使用してレベル値の大きさを復元する。ブロック3820において、電子デバイス2422は、第3の復号方法を使用してレベル値の第1の部分の大きさを復元し、第4の復号方法(図26の第4の復号方法)を使用してレベル値の第2の部分の大きさを復元する。一例では、レベル値の第1の部分は、ブロック3803において取得されたレベル値を含み、一方、レベル値の第2の部分は、ブロック3817において取得されたレベル値を含む。
図27に示されている構成と同様の、復号側の電子デバイス上での復号バイパス機能を用いた高スループット有意性マップ復号のための方法の他の構成は、可能で実際的であり得ることが明らかなはずである。例えば、別の構成では、電子デバイス2422は、菱形2914(図25)に同様に、第1の復号方法を使用して、取得されたレベル値の絶対値が第1のプリセットされたしきい値よりも大きいかどうかを判定する。また、電子デバイス2422は、菱形2916(図25)と同様に、カウンタが、第2のプリセットされたしきい値よりも大きいかどうかを判定する。
一例では、プロセッサおよび該プロセッサと電子通信しているメモリを含む第1の電子デバイスが提供される。メモリに記憶されるのは、動作を実施するためにプロセッサによって実行可能な命令である。
一例では、動作は、ビットストリームを受信することを含み得る。別の動作は、受信されたビットストリームに基づいてレベル値のブロックを取得することを含み得る。別の動作は、しきい値に従ってレベル値の一部分を識別することを含み得る。別の動作は、その一部分を識別した後に、高スループット有意性マップ処理モードを使用してレベル値のすべての残りの部分を処理することを含み得る。別の動作は、この処理に基づいてビデオデータを復元することを含み得る。
一例では、プロセッサおよび該プロセッサと電子通信しているメモリを含む第2の電子デバイスが提供される。メモリに記憶されるのは、動作を実施するためにプロセッサによって実行可能な命令である。動作は、第1の電子デバイスにシグナリングを送信することを含み得、シグナリングはしきい値を識別する。
上記によれば、有意性マップは、要素ごとに、例えば、有意性マップフィールドごとに復号され得る。プリセットされたしきい値に達したとき、電子デバイス2422は、有意性マップを復号することを停止し得る(有意性マップの残りの要素は復号されない)。その後、復号された要素に対応するレベル値は、2値化方法(例えば0値を送ることができる2値化方法)を使用して処理され、一方、残りの要素は、異なる2値化方法(例えば0値を送ることができない2値化方法)を使用して処理される。したがって、復号性能は、従来のCABAC有意性マップ復号よりも向上し得る。
(HEVCにおけるCABACの異なるパラメータ選択技法を用いたロスレスコーディング)
HEVCにおいてCABAC符号化をロスレスコーディングモードで利用するとき、符号化/復号は計算的に複雑である。計算複雑さの1つの理由は、シンタックス要素「絶対−3」の符号化である。既知のCABACコーディングでは、シンタックス要素を符号化するために指数ゴロム(Golomb)ライス(Rice)コーディング方法が使用される。
背景として、指数ゴロムライス(G−R)コーディング方法は、図28に示されるライスパラメータ更新表を利用する。G−Rコーディング方法は、次の段落においてさらに詳細に説明するように、CABACの既知のロスレスコーディングモードにおいてシンタックス要素「絶対−3」(すなわち図2の表の最終行)をコーディングするために適用される。
ライスパラメータは、ビンへのシンボルの変換を制御する。例によって説明するために、図28の表とG−Rコーディングとを使用してシンボル0、11、4...を変換することを考え、ここで、「0」(1番目のシンボル)はサブブロック中の初期シンボルである。1番目のシンボルはサブブロック中の初期シンボルであるので、ライスパラメータは1番目のシンボルについて0に初期化される。1番目のシンボル「0」は、0の現在のライスパラメータを使用してコーディングされる。一例では、RPのライスパラメータを用いてシンボルをコーディングするプロセスは、商=floor((シンボル−1)/RP)の値を計算することと、1に等しいビンに続く0に等しいビンの商ストリングを含んでいる出力を生成することとからなる。ここで、商は整数であり、floor()は、整数と分数成分とを含んでいる値を整数成分にマッピングする演算である。説明のために、ライスパラメータ3を用いて「5」のシンボルをコーディングすると、1の商値と、「01」の出力ビンとを生じるであろう。同様に、ライスパラメータ33を用いて「100」のシンボルをコーディングすると、3の商値と、「0001」の出力ビンとを生じるであろう。代替例では、RPのライスパラメータを用いてシンボルをコーディングするプロセスは、商=floor((シンボル−1)/RP)の値を計算することと、0に等しいビンに続く1に等しいビンの商ストリングを含んでいる出力を生成することとからなる。さらに別の例では、RPのライスパラメータを用いてシンボルをコーディングするプロセスは、ルックアップ表のセットからシンボルとビンのシーケンスとの間のマッピングを定義するRP番目のルックアップ表を選択することからなる。図28の表によるルックアップ結果が0であるとすれば、ライスパラメータは、次のシンボルについて更新しない。2番目のシンボル「11」は、したがって、0の現在のライスパラメータを使用してコーディングされる。2番目のシンボル「11」とライスパラメータ「0」とについてのルックアップ結果(「2」)が現在のライスパラメータ値(すなわち0)とは異なるとすれば、ライスパラメータは0から2に更新される。3番目のシンボル「4」は、次いで、2の現在のライスパラメータを用いてコーディングされる。ルックアップ結果が現在のライスパラメータとは異なる値でないとすれば、次のシンボルには2のライスパラメータが使用される。
既知のCABACに従って「絶対−3」値をG−Rコーディングする計算は複雑であるので、符号化/復号は、かなりの量の処理リソースを消費し得、および/または完了するためにかなりの時間量を要し得る。以下の開示は、このおよび他の問題を解決する。
図29は、エンコーダとデコーダとの一例を示すブロック図である。
システム2900は、デコーダ2912によって復号されるべき、符号化されたブロックを生成するために、エンコーダ2911を含む。エンコーダ2911とデコーダ2912とはネットワークを介して通信し得る。
エンコーダ2911は、HEVCにおけるCABACの異なるパラメータ選択を用いてロスレスコーディングを使用して符号化するように構成された電子デバイス2921を含む。電子デバイス2921は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図30に示される動作を実施するためにプロセッサによって実行可能な命令を記憶する。
デコーダ2912は、HEVCにおけるCABACの異なるパラメータ選択を用いてロスレスコーディングを使用して復号するように構成された電子デバイス2922を含む。電子デバイス2922は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図31に示される動作を実施するように実行可能な命令を記憶する。
図30は、電子デバイス上での異なるパラメータ選択を用いたロスレスコーディングのための方法の一構成を示す流れ図である。
ブロック3011において、電子デバイス2921は、算術ベースのエンコーダ、例えばCABACベースのエンコーダを使用して符号化されるべきデータのブロックを取得する。菱形3012において、電子デバイス2921は、ロスレス符号化を使用してブロックが符号化されるべきかどうかを判定する。ロスレス符号化を使用してブロックが符号化されるべきでない場合、ブロック3013において、電子デバイス2921は、データのブロックを符号化するために第1の絶対−3コーディング技法を使用する。
ロスレス符号化を使用してブロックが符号化されるべきである場合、ブロック3014において、電子デバイス2921は、データのブロックを符号化するために第2の異なる絶対−3コーディング技法を使用する。ブロック3015において、電子デバイス2921は、生成されたビットストリームをネットワークを介して送信し、および/または、生成されたビットストリームをメモリデバイスに記憶する。
一例では、第1の絶対−3コーディング技法は、CABACコーディングのR−Gコーディング技法を含み、すなわち、ライスパラメータは、各サブブロックコーディング段において0で初期化し、図28に示される表の5つのライスパラメータが考慮される。一例では、第2の異なる絶対−3コーディング技法は、各サブブロックコーディング段において0で初期化せず、すなわち、別様に初期化され、および/または異なるライスパラメータ更新表、例えば簡約されたライスパラメータ更新表を使用する。
一例では、異なる初期化は、各サブブロックではなく各ブロックにおいてライスパラメータを0に初期化することを含み得る。一例では、異なる初期化は、現在のサブブロックの初期ライスパラメータとして、前のサブブロックにおいて使用された最後のライスパラメータを使用することを含み得る。
一例では、異なる初期化は、残差サンプルの統計に基づいて初期化することを含み得る。一例では、異なる初期化は、ブロックタイプ、ブロックサイズ、または色情報(ルーマ/クロマ)など、あるいはそれらの任意の組合せに基づいて、あらかじめ定義されたライスパラメータ値で初期化することを含み得る。ブロックタイプは、ブロックのブロックサイズ、ブロックの予測情報(イントラ/インター)、およびブロックの色情報(ルーマ/クロマ)に基づいてブロックを表すための値である。一例では、異なる初期化は、現在のブロックタイプが、あるあらかじめ定義された値、例えば「2」および/または「5」に等しいとき、ライスパラメータをあらかじめ定義された値「1」で初期化することを含み得る。
一例では、異なるライスパラメータ更新表は、第1の絶対−3コーディング技法のために使用されるライスパラメータ更新表よりも少ないライスパラメータを含む。一例では、異なるライスパラメータ更新表は、(ライスパラメータが「0」および「1」に等しい)最初の2つの場合のみを含む。そのようなライスパラメータ更新表の例は図37に含まれる。
一例では、第2の異なる絶対−3コーディング技法が使用される場合、電子デバイス2921は、対応するインジケータ、例えば第2の異なる絶対−3コーディング技法に関連するフラグを1の値に設定し得る(これは、もちろん、設計の選好に応じて、前記フラグのデフォルト値を変更するか、または前記フラグをデフォルト値のままにすることを含み得る)。
図31は、復号側の電子デバイス上での異なるパラメータ選択を用いたロスレスコーディングのための方法の一構成を示す流れ図である。
ブロック3110において、電子デバイス2922はビットストリームを取得する。ブロック3111において、電子デバイス2922は、取得されたビットストリームからバイナリシンボルを復元する。
菱形3112において、電子デバイス2922は、ロスレス復号を使用してバイナリシンボルが復号されるべきかどうかを判定する。一例では、判定は、受信されたビットストリームに対応する、スライスヘッダなどのヘッダを検査することを含み得る。ヘッダを検査することは、第2の異なる絶対−3コーディング技法に関連するフラグの値について、取得されたビットストリームに対応するスライスヘッダを検査することをさらに含み得る。別の例では、判定は、ブロックタイプ、またはTQCへの係数レベルの変換を制御する量子化パラメータなど、ブロックに関連する、以前に復号されたシンボルを検査することを含み得る。菱形3112において条件が満たされない場合、ブロック3113において、電子デバイス2922は、TQCのブロックを取得するために第1の絶対−3コーディング技法を使用する。
菱形3112において条件が満たされる場合、ブロック3114において、電子デバイス2921は、残差サンプルを取得するために第2の異なる絶対−3コーディング技法を使用する。電子デバイス2922は、ブロック3115において、TQCの取得されたブロックまたは取得された残差サンプルをメモリデバイスに記憶し得、および/またはビデオデータを復元し得る。
(HEVCにおけるCABACの高スループットコーディング)
HEVCにおいてCABACコーディングを利用するとき、スループット性能は、これらに限定はしないが、ビン/ピクセルの総数、バイパスビン/ピクセルの数、およびレギュラー(またはコンテキスト)コーディングされるビン/ピクセルの数など、様々な要因に応じて異なり得る。したがって、これらの要因に応じて、コーディングは、かなりの量の処理リソースを消費し得、および/またはかなりの時間量を要し得る。以下の開示は、このおよび他の問題を解決する。
背景として、既知のCABACによれば、シンタックス要素の最高25個のレベルコードフラグがコンテキストコーディングされる。残りのレベルコードフラグはバイパスコーディングされる。あらかじめ定義された(固定)数のGreater_than_1フラグ、すなわち8つのGreater_than_1フラグがコンテキストコーディングされる。あらかじめ定義された(固定)数のGreater_than_2フラグ、すなわち1つがコンテキストコーディングされる。有意性マップフラグのすべて、すなわち最高16個がコンテキストコーディングされる(シンタックス要素は、ブロックの最後の位置情報に応じて16個未満の有意性マップフラグを有し得る。したがって、所与のサブセットブロックについて最大25個のコンテキストコーディングされたビンが必要とされる(25ビン/16ピクセル=1.56ビン/ピクセル)。上記の例は、4×4サブブロックを使用するときである。
図34は、電子デバイス上でのHEVCにおけるCABACの高スループットコーディングのための方法の一構成を示す流れ図である。
ブロック3411において、電子デバイス3321は、算術ベースのエンコーダ、例えばCABACベースのエンコーダを使用して符号化されるべきデータのブロックを取得する。ブロック3412において、電子デバイス3321は、シンタックス要素の第1の量のレベルコードフラグ、例えばCABACシンタックス要素のGreater_than_1およびGreater_than_2フラグをコンテキストコーディングする。第1の量は、第1のあらかじめ定義された数を含み、例えば9、すなわち、8つのGreater_than_1フラグおよび1つのGreater_than_2フラグを含む。
ブロック3413において、電子デバイス3321は、シンタックス要素の有意性マップにおいて実際にコーディングされたビンの数を識別する。ブロック3414において、電子デバイス3321は、第2のあらかじめ定義された数、例えば、CABACでは16と、識別された数との差分を決定する。ロック3415において、電子デバイス3321は、第2の量のレベルコードフラグをコンテキストコーディングし、第2の量は、決定された差分を含む。ブロック3416において、電子デバイス3321は、生成されたビットストリームをネットワークを介して送信し、および/または、生成されたビットストリームをメモリデバイスに記憶する。
一例では、図34に示される構成が使用される場合、電子デバイス3321は、対応するインジケータ、例えばフラグを1の値に設定し得る(これは、もちろん、設計の選好に応じて、フラグのデフォルト値を変更するか、またはフラグをデフォルト値のままにすることを含み得る)。一例では、インジケータは、コンテキストコーディングされる追加のGreater_than_1および/またはGreater_than_2フラグの数を識別し得る。
上記で説明した構成に従って生成されたシンタックス要素の一例が図36に示されている。この例では、例示的なシンタックス要素の有意性マップにおいて実際にコーディングされるビンの数は12である。16と12との間の決定された差分は4である。コンテキストコーディングされるレベルコードフラグの第1の量は9である(8つのGreater_than_1フラグおよび1つのGreater_than_2フラグ)。コンテキストコーディングされるレベルコードフラグの第2の量は4である。この特定の例では、これらの4つは、すべてGreater_than_1フラグであるが、別の例では、これらの4つは、1つまたは複数のGreater_than_1フラグおよび1つまたは複数のGreater_than_2フラグ、あるいは4つのGreater_than_2フラグを含み得る。残りのレベルコードフラグはバイパス符号化される。
図35は、復号側の電子デバイス上でのHEVCにおけるCABACの高スループットコーディングのための方法の一構成を示す流れ図である。
ブロック3510において、電子デバイス3322はビットストリームを取得する。ブロック3511において、電子デバイス3322は、取得されたビットストリームからバイナリシンボルを復元する。
ブロック3512において、電子デバイス3322は、シンタックス要素の第1の量のレベルコードフラグ、例えばCABACシンタックス要素のGreater_than_1およびGreater_than_2フラグをコンテキスト復号し、第1の量は、第1のあらかじめ定義された数、例えば9、すなわち、8つのGreater_than_1フラグおよび1つのGreater_than_2フラグに等しい。菱形3513において、電子デバイス3322は、シンタックス要素の追加のレベルコードフラグがコンテキストコーディングされるかどうかを判定する。一例では、判定は、受信されたビットストリームに対応する、スライスヘッダなどのヘッダを検査することを含み得る。ヘッダを検査することは、インジケータ、例えばフラグの値について、取得されたビットストリームに対応するスライスヘッダを検査することをさらに含み得る。菱形3513において電子デバイス3322が追加のレベルコードフラグはコンテキストコーディングされないと判定した場合、ブロック3514において、電子デバイス3322は、シンタックス要素の残りのレベルコードフラグをバイパス復号する。
菱形3513において電子デバイス3322が追加のレベルコードフラグはコンテキストコーディングされると判定した場合、ブロック3515において、電子デバイス3322は、シンタックス要素の第2の量のレベルコードフラグをコンテキスト復号する。一例では、電子デバイス3322は、スライスヘッダからの情報に基づいて、コンテキストコーディングされる追加のGreater_than_1および/またはGreater_than_2フラグの数を識別し得る。ブロック3514において、電子デバイス3322は、すべての残りのレベルコードフラグをバイパス復号する。ブロック3516において、電子デバイス3322は、TQCの取得されたブロックまたは取得された残差サンプルをメモリデバイスに記憶し、および/またはビデオデータを復元する。
図38は、復号側の電子デバイス上でのHEVCにおけるCABACの高スループットコーディングのための方法の一構成を示す流れ図である。
ブロック3850において、電子デバイス3322はビットストリームを取得する。ブロック3851において、電子デバイス3322は、取得されたビットストリームからレベル値のブロックを取得する。
ブロック3853において、電子デバイス3322は、ブロックの最後の有意係数の位置を決定する。ブロック3854において、電子デバイス3322は、取得されたブロックから有意係数をコンテキスト復号し、決定された位置に応じて、コンテキスト復号すべきシンボルの最大数を決定する。
ブロック3855において、電子デバイス3322は、カウンタをリセットする、例えばカウンタを0に設定する。菱形3856において、電子デバイス3322は、復号されるべきレベルコードフラグが残っているかどうかを判定する。菱形3856においてレベルコードフラグが残っていない場合、ブロック3857において、電子デバイス3322は、TQCの取得されたブロックまたは取得された残差サンプルをメモリデバイスに記憶し、および/またはビデオデータを復元する。
レベルコードフラグが残っている場合(菱形3856)、菱形3858において、電子デバイス3322は、カウンタがしきい値よりも大きいかどうかを判定する。一例では、しきい値は、決定された最大値に関連付けられる。一例では、しきい値は、決定された最大値とブロックの有意性マップフラグの数との差分に対応し得る。菱形3858においてカウンタがしきい値よりも大きい場合、ブロック3859において、電子デバイス3322は、レベルコードフラグをバイパス復号する。菱形3858においてカウンタがしきい値よりも大きくない場合、ブロック3860において、電子デバイス3322は、レベルコードフラグをコンテキスト復号する。電子デバイス3322は、ブロック3861において、カウンタを増分する。
図39は、復号側の電子デバイス上でのHEVCにおけるCABACの高スループットコーディングのための方法の一構成を示す流れ図である。
ブロック3950において、電子デバイス3322はビットストリームを取得する。ブロック3951において、電子デバイス3322は、取得されたビットストリームからレベル値のブロックを取得する。
ブロック3953において、電子デバイス3322は、最後の有意係数の位置を決定する。ブロック3954において、電子デバイス3322は、取得されたブロックから有意係数をコンテキスト復号し、決定された位置とサブブロック位置の両方に応じて、コンテキスト復号すべきシンボルの最大数を決定する。処理3955〜3961は処理3855〜3861に対応し得る。
図40は、復号側の電子デバイス上でのHEVCにおけるCABACの高スループットコーディングのための方法の一構成を示す流れ図である。
ブロック4050において、電子デバイス3322はビットストリームを取得する。ブロック4051において、電子デバイス3322は、取得されたビットストリームからレベル値のブロックを取得する。
ブロック4053において、電子デバイス3322は、最後の有意係数の位置を決定する。ブロック4054において、電子デバイス3322は、取得されたブロックから有意係数をコンテキスト復号し、ブロックの特性、例えばブロックの有意係数の数に応じて、コンテキスト復号すべきシンボルの最大数を決定する。処理4055〜4061は処理3855〜3861に対応し得る。
一例では、システムが提供される。本システムは、電子デバイスを備え得、電子デバイスは、ビットストリームからレベル値のブロックを取得することと、ブロックのレベルコードフラグをコンテキスト復号することと、ブロックの次のレベルコードフラグがあるかどうかを検査することと、次のレベルコードフラグがある場合、コンテキストコーディングされたレベルコードフラグのカウントがしきい値よりも大きいかどうかを判定することと、カウントがしきい値よりも大きくないと判定したことに応答して、次のレベルコードフラグをバイパス復号することと、カウントがしきい値よりも大きいと判定したことに応答して、次のレベルコードフラグをコンテキスト復号することと、復号されたレベルコードフラグを使用してTQCのブロックまたは残差サンプルを復元することと、復元されたブロックをメモリデバイスに記憶し、および/またはビデオデータを復元することとを行うように構成される。
電子デバイスは、次のレベルコードフラグをコンテキストコーディングしたことに応じて、カウントを増分するように構成され得る。電子デバイスは、ブロックのすべてのレベルコードフラグが復号されるまで、検査、判定、復号、および増分を繰り返すように構成され得る。電子デバイスは、第1のレベルコードフラグをコンテキストコーディングしたことに応じて、カウントを増分するように構成され得る。
電子デバイスは、ブロックの最後の有意係数の位置を決定することと、ブロックの特性に少なくとも部分的に基づいて、コンテキスト復号すべきシンボルの最大数を決定することとを行うように構成され得る。電子デバイスは、最大数決定の結果に従ってしきい値を設定するように構成され得る。
電子デバイスは、ブロックの最後の有意係数の位置を決定することと、決定された位置に少なくとも部分的に基づいて、コンテキスト復号すべきシンボルの最大数を決定することとを行うように構成され得る。電子デバイスは、決定された位置に少なくとも部分的に基づいて、およびサブブロックの位置に少なくとも部分的に基づいて、コンテキスト復号すべきシンボルの最大数を決定するように構成され得る。
電子デバイスは、ブロックに関連するシンタックス要素の第1の量のレベルコードフラグをコンテキスト復号することと、第1の量が、第1のあらかじめ定義された数に等しいことと、シンタックス要素の有意性マップにおいて実際にコーディングされたビンの数を識別することと、第2のあらかじめ定義された数と識別された数との差分を決定することと、シンタックス要素の第2の量のレベルコードフラグをコンテキスト復号することと、第2の量が、決定された差分を含むこととを行うように構成され得る。一例では、第1のあらかじめ定義された数は9を含み得る。一例では、第2のあらかじめ定義された数は16を含み得る。一例では、第1の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、8つの「1よりも大きい」フラグと、1つの「2よりも大きい」フラグとを含む。一例では、第2の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、「1よりも大きい」フラグのみを含む。一例では、第2の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、「2よりも大きい」フラグのみを含む。一例では、第2の量のコンテキストコーディングされたフラグに対応するレベルコードフラグは、第3のあらかじめ定義された数の「2よりも大きい」フラグと、動的な数の「1よりも大きい」フラグとを含み、動的な数は、第2の量と第3のあらかじめ定義された数との差分を含む。
一例では、システムが提供される。本システムは、エンコーダの第1の電子デバイスを備え得、第1の電子デバイスは、算術ベースのエンコーダを使用して符号化されるべきデータのブロックを取得することと、ロスレス符号化を使用してデータのブロックが符号化されるべきかどうかを判定することと、ロスレス符号化を使用してデータのブロックが符号化されるべきでないと判定したことに応答して、データのブロックを符号化するために第1の絶対−3コーディング技法を使用することと、ロスレス符号化を使用してデータのブロックを符号化されるべきであると判定したことに応答して、データのブロックを符号化するために第2の絶対−3コーディング技法を使用することと、第2の絶対−3コーディング技法が、第1の絶対−3コーディング技法とは異なることと、符号化をメモリデバイスに記憶させることとを行うように構成される。
本システムは、デコーダの第2の電子デバイスをさらに備え得、第2の電子デバイスは、ロスレス復号を使用して、受信されたバイナリシンボルが復号されるべきかどうかを判定することと、ロスレス復号を使用してバイナリシンボルが復号されるべきでないと判定したことに応答して、TQCのブロックを取得するために第1の絶対−3コーディング技法を使用することと、ロスレス復号を使用してバイナリシンボルが復号されるべきであると判定したことに応答して、残差サンプルを取得するために第2の絶対−3コーディング技法を使用することとを行うように構成される。
第1の電子デバイスは、ロスレス符号化を使用してデータのブロックが符号化されるべきでないと判定したことに応答して、サブブロックの初期値についてライスパラメータを0で初期化することと、ロスレス符号化を使用してデータのブロックが符号化されるべきであると判定したことに応答して、サブブロックの初期値について前のサブブロックの最後の値からのライスパラメータを使用することとを行うように構成され得る。
第1の電子デバイスは、ロスレス符号化を使用してデータのブロックが符号化されるべきでないと判定したことに応答して、サブブロックの初期値についてライスパラメータを0で初期化することと、ロスレス符号化を使用してデータのブロックが符号化されるべきであると判定したことに応答して、サブブロックの初期値について0でのライスパラメータの初期化をバイパスすることとを行うように構成され得る。
第1の電子デバイスは、ロスレス符号化を使用してデータのブロックが符号化されるべきであると判定したことに応答して、ブロックタイプと、ブロックサイズと、色情報(ルーマ/クロマ)とを含むグループから選択される少なくとも1つに基づいて、ライスパラメータをあらかじめ定義された値で初期化するように構成され得る。
第1の電子デバイスは、ロスレス符号化を使用してデータのブロックが符号化されるべきであると判定したことに応答して、現在のブロックタイプが2または5に等しいときにライスパラメータを1で初期化するように構成され得る。
第1の電子デバイスは、ロスレス符号化を使用してデータのブロックが符号化されるべきでないと判定したことに応答して、サブブロックの初期値についてライスパラメータを0で初期化することと、ロスレス符号化を使用してデータのブロックが符号化されるべきであると判定したことに応答して、サブブロックの初期値について0でのライスパラメータの初期化をバイパスすることとを行うように構成され得る。
第1の電子デバイスは、ロスレス復号を使用してバイナリシンボルが復号されるべきでないと判定したことに応答して、第1のライスパラメータ更新表を採用することと、ロスレス復号を使用してバイナリシンボルが復号されるべきであると判定したことに応答して、第1のライスパラメータ更新表とは異なる第2のライスパラメータ更新表を採用することとを行うように構成され得る。
第2のライスパラメータ更新表は、第1のライスパラメータ更新表の短縮バージョンを備え得る。一例では、第2のライスパラメータ更新表のみは、現在のライスパラメータが2、3、または4に更新または初期化された後の更新を防止するように構成される。
一例では、システムが提供される。本システムは、エンコーダの第1の電子デバイスを備え得、第1の電子デバイスは、算術ベースのエンコーダを使用して符号化されるべきデータのブロックを取得することと、シンタックス要素の第1の量のレベルコードフラグをコンテキストコーディングすることと、第1の量が、第1のあらかじめ定義された数に等しいことと、シンタックス要素の有意性マップにおいて実際にコーディングされたビンの数を識別することと、第2のあらかじめ定義された数と識別された数との差分を決定することと、シンタックス要素の第2の量のレベルコードフラグをコンテキストコーディングすることと、第2の量が、決定された差分を含むことと、コンテキストコーディングによって生成されたビットストリームをメモリデバイスに記憶させることとを行うように構成される。
算術ベースのエンコーダはCABACエンコーダを備え得る。第1のあらかじめ定義された数は9を含み得る。第2のあらかじめ定義された数は16を含み得る。第1の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、8つの「1よりも大きい」フラグと、1つの「2よりも大きい」フラグとを含み得る。第2の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、「1よりも大きい」フラグのみを含み得る。第2の量のコンテキストコーディングされたレベルコードフラグに対応するレベルコードフラグは、「2よりも大きい」フラグのみを含み得る。一例では、第2の量のコンテキストコーディングされたフラグに対応するレベルコードフラグは、第3のあらかじめ定義された数の「2よりも大きい」フラグと、動的な数の「1よりも大きい」フラグとを含み得、動的な数は、第2の量と第3のあらかじめ定義された数との差分を含む。
(HEVCにおけるCABACの変換スキップされたブロックのための高スループット残差コーディング)
図41は、エンコーダとデコーダとの一例を示すブロック図である。
システム4100は、デコーダ4112によって復号されるべき、符号化されたブロックを生成するために、エンコーダ4111を含む。エンコーダ4111とデコーダ4112とはネットワークを介して通信し得る。
エンコーダ4111は、高スループット残差コーディングモードを使用して符号化するように構成された電子デバイス4121を含む。電子デバイス4121は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図42に示される動作を実施するためにプロセッサによって実行可能な命令を記憶する。
デコーダ4112は、高スループット残差コーディングモードを使用して復号するように構成された電子デバイス4122を含む。電子デバイス4122は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図43に示される動作を実施するように実行可能な命令を記憶する。
図42は、高スループット残差コーディングのための方法の一構成を示す流れ図である。
ブロック4211において、電子デバイス4121は、算術ベースのエンコーダ、例えばCABACベースのエンコーダを使用して符号化されるべきデータのブロックを取得する。菱形4212において、電子デバイス4121は、高スループット残差コーディングを使用してブロックが符号化されるべきかどうかを判定する。高スループット残差コーディングを使用してブロックが符号化されるべきでない場合、ブロック4213において、電子デバイス4121は、データのブロックを符号化するために第1のコーディング技法を使用する。一例では、第1のコーディング技法は、絶対−3コーディング技法、例えば図30のブロック3013に関して説明したコーディング技法を含み得る。
高スループット残差コーディングを使用してブロックが符号化されるべきである場合、ブロック4214において、電子デバイス4121は、データのブロックを符号化するために第1のコーディング技法とは異なる第2のコーディング技法を使用する。ブロック4215において、電子デバイス4121は、生成されたビットストリームをネットワークを介して送信し、および/または、生成されたビットストリームをメモリデバイスに記憶する。
一例では、第2のコーディング技法は、第1のコーディング技法のコーディング段のサブセットのみを含む。一例では、第1のコーディング技法は、Greater_than_1コーディング段とGreater_than_2コーディング段とを含み、第2のコーディング技法は、Greater_than_1コーディング段とGreater_than_2コーディング段とのうちの少なくとも1つを含まない。
一例では、第1のコーディング技法は、有意性マップコーディングの後に絶対−3コーディングを含むが、第2のコーディング技法は、有意性マップコーディングの後に絶対−3コーディングを含まない。第2のコーディング技法の一例では、有意性マップコーディングの後に、絶対−1値または絶対−2値がコーディングされる。一例では、Greater_than_1コーディング段とGreater_than_2コーディング段の両方がスキップされる場合、絶対−1値がコーディングされるが、Greater_than_2コーディング段がスキップされGreater_than_1コーディング段がスキップされない場合、絶対−2値がコーディングされる。一例では、符号コーディングが絶対−1または絶対−2コーディングの後に実施され得るが、別の例では、符号コーディングは絶対−1または絶対−2コーディングの前に実施され得る。
一例では、絶対−1または絶対−2値コーディングは、本明細書で説明するいずれかのゴロムライス(G−R)コードを使用する。例えば、絶対−1または絶対−2値コーディングは、図30に関して説明したG−Rコーディング技法を使用し得る。一例では、絶対−1または絶対−2コーディングは、第1のコーディング技法のために使用されるのと同じG−Rコーディングを使用する。
一例では、絶対−1または絶対−2値コーディングのために使用されるG−Rコーディング技法は、ブロックタイプ、ブロックサイズ、または色情報(ルーマ/クロマ)など、あるいはそれらの任意の組合せに基づいて、あらかじめ定義されたライスパラメータ値で初期化することを使用し、含み得る。一例では、あらかじめ定義されたライスパラメータはテクスチャ(ルーマ/クロマ)に依存し得る。例えば、あらかじめ定義されたライスパラメータ値は、ルーマブロックでは2であり得、クロマブロックでは1であり得る。一例では、絶対−1または絶対−2コーディングと絶対−3コーディングとのために同じG−Rコーディングが使用される。
一例では、電子デバイス4121は、復号側に初期化情報を明示的にシグナリングし得る。初期化情報は、ビットストリームについてまたは現在のブロックについて、すなわちブロックごとにライスパラメータ初期化値を含み得る。初期化情報がブロックについて2つ以上のライスパラメータ初期化値を含む場合、初期化情報はまた、第1の値または第2の値を使用するための基準を示し得、すなわち、値は2および1であり得、条件は、ルーマブロックでは2および/またはクロマブロックでは1であり得る。一例では、追加の情報は、追加のシンタックス要素を含み得る。
一例では、菱形4212は、データのブロックのTransform_skip_flagまたはTrans_quant_Bypass_flagが設定されるかどうかを判定することを含み得る。一例では、Transform_skip_flagまたはTrans_quant_Bypass_flagが1に等しい場合、データのそのブロックのために高スループット残差コーディングが使用される(逆に、Transform_skip_flagとTrans_quant_Bypass_flagとのいずれも設定されない場合、データのそのブロックのために高スループット残差コーディングは使用されない)。
背景として、Transform_skip_flagは、対応するブロックが変換されるか否かを示す。既知の方式では、対応するブロックが変換されるとき、Transform_skip_flagは0に等しい。Transform_skip_flagが1に等しいとき、対応するブロックは変換されない、すなわち、残差データは残差サンプルを表す。
背景として、Trans_quant_Bypass_flagは、対応するブロックが変換され量子化されるか否かを示す。Trans_quant_Bypass_flagが1に等しいとき、対応するブロックは変換され量子化されない、すなわち、残差データは残差サンプルを表す。また、変換はロスレスコーディングモードでなくレギュレアーコーディングモードにおいて使用されるので、符号化がロスレスコーディングモードによるとき、Trans_quant_Bypass_flagは1に等しい。
一例では、符号化されるべきデータのブロックについて、少なくとも1つのレベルコード段、例えばGreater_than_1および/またはGreater_than_2が、選択的にスキップされ得ることを諒解されたい。一例では、少なくとも1つのレベルコード段がスキップされるか否かを判定するために、データのブロックのTransform_skip_flagを検査することが使用される。一例では、少なくとも1つのレベルコーディング段は、ロスレスコーディングモードを使用してデータのブロックが符号化されるべきである場合にスキップされ得る。少なくとも1つのレベルコード段がスキップされるとき、スループット利得が実現され得ることを諒解されたい。
一例では、第2の異なるコーディング技法が使用される場合、電子デバイス4121は、対応するインジケータ、例えば第2の異なるコーディング技法に関連するフラグを1の値に設定し得る(これは、もちろん、設計の選好に応じて、前記フラグのデフォルト値を変更するか、または前記フラグをデフォルト値のままにすることを含み得る)。しかしながら、いくつかの例では、復号側は、ブロックについてTransform_skip_flagおよび/またはTrans_quant_Bypass_flagを検査し、Transform_skip_flagとTrans_quant_Bypass_flagとのいずれか一方が1に等しい場合、符号化側がブロックのために第2のコーディング技法を使用したことを推測し得るので、そのような明示的シグナリングは不要である。
図43は、復号側の高スループット残差コーディングのための方法の一構成を示す流れ図である。
ブロック4310において、電子デバイス4122はビットストリームを取得する。ブロック4311において、電子デバイス4122は、取得されたビットストリームからバイナリシンボルを復元する。
菱形4312において、電子デバイス4122は、高スループット残差コーディングを使用してバイナリシンボルが復号されるべきかどうかを判定する。一例では、菱形4312は、復元されたバイナリシンボルが、変換された係数を表すかどうかを判定すること、例えば、復元されたバイナリシンボルに関連するTransform_skip_flagが設定されるかどうかを判定すること、Trans_quant_bypass_flagが設定されるかどうかを判定すること、および/またはロスレスコーディングモードを使用してビットストリームがコーディングされたかどうかを判定することを含む。菱形4312において条件が満たされない場合、ブロック4313において、電子デバイス4122は、TQCのブロックを取得するために第1のコーディング技法を使用する。
菱形4312において条件が満たされる場合、ブロック4314において、電子デバイス4122は、残差サンプルを取得するために第2の異なるコーディング技法を使用する。電子デバイス4122は、ブロック4315において、TQCの取得されたブロックまたは取得された残差サンプルをメモリデバイスに記憶し得、および/またはビデオデータを復元し得る。
一例では、第1のコーディング技法と第2のコーディング技法とのうちの第1のコーディング技法のみが絶対−3コーディング技法を含む。一例では、第2のコーディング技法は絶対−1または絶対−2コーディング技法を含む。
一例では、第1のコーディング技法は、Greater_than_1フラグおよびGreater_than_2フラグをコーディングすること、すなわち、GR1コーディング段およびGR2コーディング段を含み、第2のコーディング技法は、いかなるGreater_than_1フラグおよび/またはGreater_than_2フラグもコーディングしない、すなわち、GR1コーディング段を含まずおよび/またはGR2コーディング段を含まない。
一例では、第1のコーディング技法は、絶対−3値をコーディングするためにゴロムライス(G−R)コーディング方法を含み、第2のコーディング技法は、絶対−1または絶対−2値をコーディングするためにG−Rコーディング方法を含む。一例では、G−Rコーディング方法は、ブロックタイプと、ブロックサイズと、色情報(ルーマ/クロマ)とを含むグループから選択される少なくとも1つに基づいて、ライスパラメータをあらかじめ定義された値で初期化することを含む。一例では、あらかじめ定義されたライスパラメータはテクスチャ(ルーマ/クロマ)に依存し得る。例えば、あらかじめ定義されたライスパラメータ値は、ルーマブロックでは2であり、クロマブロックでは1である。一例では、絶対−1または絶対−2コーディングと絶対−3コーディングとのために同じG−Rコーディングが使用される。
一例では、システムは、デコーダの第1の電子デバイスを備え、第1の電子デバイスは、ビットストリームを取得することと、取得されたビットストリームからバイナリシンボルを復元することと、高スループット残差コーディングモードを使用してバイナリシンボルが復号されるべきかどうかを判定することと、高スループット残差コーディングモードを使用してバイナリシンボルが復号されるべきでないと判定したことに応答して、変換され量子化された係数(TQC)のブロックを取得するために第1のコーディング技法を使用することと、高スループット残差コーディングモードを使用してバイナリシンボルが復号されるべきであると判定したことに応答して、残差サンプルを取得するために第2の異なるコーディング技法を使用することと、TQCの取得されたブロックまたは取得された残差サンプル、あるいはTQCの取得されたブロックまたは取得された残差サンプルを表すビデオデータをメモリデバイスに記憶することとを行うように構成される。
一例では、第1のコーディング技法と第2のコーディング技法とのうちの第1のコーディング技法のみが絶対−3コーディングを含む。一例では、第2のコーディング技法は絶対−1または絶対−2コーディングを含む。
一例では、第1の電子デバイスは、復元されたバイナリシンボルが、変換された係数を表すかどうかを判定することと、復元されたバイナリシンボルが、変換された係数を表さないと判定したことに応答して、第2の異なるコーディング技法を使用することとを行うように構成される。一例では、第1の電子デバイスは、復元されたバイナリシンボルに関連する変換スキップフラグまたは変換量子化バイパスフラグが設定されるかどうかを判定することと、変換スキップフラグまたは変換量子化バイパスフラグが設定されると判定したことに応答して、第2の異なるコーディング技法を使用することとを行うように構成される。一例では、第1の電子デバイスは、復元されたバイナリシンボルに関連する変換スキップフラグまたは変換量子化バイパスフラグが設定されるかどうかを判定することと、変換スキップフラグまたは変換量子化バイパスフラグが設定されると判定したことに応答して、第2の異なるコーディング技法を使用することとを行うように構成される。一例では、ロスレスコーディングモードを使用してビットストリームがコーディングされたかどうかを判定することと、ロスレスコーディングモードを使用してビットストリームがコーディングされたと判定したことに応答して、第2の異なるコーディング技法を使用することとを含む。
一例では、第1のコーディング技法は、Greater_than_1フラグとGreater_than_2フラグとをコーディングすることを含み、第2のコーディング技法は、いかなるGreater_than_1フラグおよび/またはGreater_than_2フラグもコーディングしない。
一例では、ビットストリームは、コンテキスト適応型バイナリ算術コーディング(CABAC)ベースのエンコーダから発生する。
一例では、第1のコーディング技法は、絶対−3値をコーディングするためにゴロムライス(G−R)コーディング方法を含み、第2のコーディング技法は、絶対−1または絶対−2値をコーディングするためにG−Rコーディング方法を含む。
一例では、C−Rコーディング方法は、ブロックタイプと、ブロックサイズと、色情報(ルーマ/クロマ)とを含むグループから選択される少なくとも1つに基づいて、ライスパラメータをあらかじめ定義された値で初期化することを含む。一例では、電子デバイス4121は、ビットストリームの初期化情報に基づいて、ビットストリームについてまたはブロックについてあらかじめ定義された値を決定し得る。初期化情報は、ビットストリームについてまたは現在のブロックについて、すなわちブロックごとにライスパラメータ初期化値を含み得る。初期化情報がブロックについて2つ以上のライスパラメータ初期化値を含む場合、初期化情報はまた、第1の値または第2の値を使用するための基準を示し得、すなわち、値は2および1であり得、条件は、ルーマブロックでは2および/またはクロマブロックでは1であり得る。一例では、追加の情報は、追加のシンタックス要素を含み得る。
一例では、電子デバイス4121は、現在のブロックの非0係数の数を決定したことに応答して、あらかじめ定義された値を決定し得る。例えば、電子デバイス4121は、非0係数の数がしきい値よりも大きい場合、第1のあらかじめ定義された値を使用し、非0係数の数がしきい値以下である場合、第1のあらかじめ定義された値とは異なる第2のあらかじめ定義された値を使用し得る。
図44は、復号側の高スループット残差コーディングのための方法の一構成を示す流れ図である。
ブロック4410において、電子デバイス4122はビットストリームを取得する。ブロック4411において、電子デバイス4122は、取得されたビットストリームからバイナリシンボルを復元する。
菱形4412において、電子デバイス4122は、高スループット残差コーディングを使用してバイナリシンボルが復号されるべきかどうかを判定する。一例では、菱形4412は、復元されたバイナリシンボルが、変換された係数を表すかどうかを判定すること、例えば、復元されたバイナリシンボルに関連するTransform_skip_flagが設定されるかどうかを判定することを含む。
菱形4412において条件が満たされない場合、ブロック4413において、電子デバイス4122は、TQCのブロックを取得するためにライスパラメータ更新機能を適用する。例えば、ブロック4413において、電子デバイス4122は、初期ライスパラメータ値を使用して初期レベル値を復号し、次のレベル値を復号することなどより前に初期ライスパラメータ値を増分すべきかどうかを判定するために、図28によって説明されたライスパラメータ更新機能などのライスパラメータ更新機能を適用し得る。
菱形4412において条件が満たされる場合、電子デバイス4122は、レベル値を別様に復号する。例えば、電子デバイス4122は、取得されたビットストリームからライスパラメータ値を復号し得る。また、電子デバイス4122は、ブロックについてすべてのレベル値を復号するために、復号されたライスパラメータ値を使用し得る。
一例では、ブロック4414において、電子デバイス4122は、ビットストリームが、ライスパラメータ更新機能の最大値よりも大きいライスパラメータ値をシグナリングするかどうかを判定する。ビットストリームが、最大値よりも大きいライスパラメータ値をシグナリングする場合、ブロック4417において、電子デバイス4122は、ライスパラメータ更新機能の最大値よりも大きいライスパラメータ値を使用する。例えば、ブロック4413において適用されるライスパラメータ更新機能は、(図28によって説明されたライスパラメータ更新機能が使用される場合は)0から最大4にわたり得る。しかしながら、ビットストリームは、ライスパラメータ更新機能の最大値よりも大きいライスパラメータ値、例えば5をシグナリングし得る。
ビットストリームが、最大値よりも大きいライスパラメータ値をシグナリングしない場合、ブロック4416において、電子デバイス4122は、ブロック4413において適用されるライスパラメータ更新機能の最大値よりも大きくないライスパラメータ値、例えば0〜4を使用し得る。ブロック4416において使用されるライスパラメータ値は、取得されたビットストリームによってシグナリングされ得る。電子デバイス4122は、ブロックについてすべてのレベル値を復号するために、復号されたライスパラメータ値を使用し得る。
電子デバイス4122は、ブロック4418において、TQCの取得されたブロックまたは取得された残差サンプルをメモリデバイスに記憶し得、および/またはビデオデータを復元し得る。
ブロック4414が電子デバイス4122によって実施されるべきであるかどうかを制御するためにフラグまたは他のインジケータが使用され得る。エンコーダ側の電子デバイス4121は、ブロック4414が電子デバイス4122によって実施されるようにするために、フラグまたは他のインジケータを1の値に設定し得る(これは、もちろん、設計の選好に応じて、前記フラグのデフォルト値を変更するか、または前記フラグをデフォルト値のままにすることを含み得る)。フラグはビットストリーム中のいかなるレベルでも配置され得、例えばシーケンスレベル、スライスレベル、コーディングユニット(CU)レベル、予測ユニット(PU)レベル、または変換ユニット(TU)レベルなどで配置される。一例では、電子デバイス4122は、コンテンツのビット深度がしきい値よりも大きく、フラグが1に設定される場合のみ、ブロック4414を実施し得る。
菱形4414が実施されるべきでない(例えば、ブロックが変換スキップブロックでないか、フラグが0に設定されるか、またはビット深度がプリセットしきい値以下である)場合、ライスパラメータ値はビットストリーム中でシグナリングされないことがあるか、またはライスパラメータ値はライスパラメータ更新機能の範囲内であり得る。変換スキップブロックは受信されたが、フラグが0に等しいか、または、ビット深度が、プリセットされたしきい値以下である場合、電子デバイス4122は、残差サンプルを取得するためにライスパラメータ更新機能を適用し得る。一例では、ライスパラメータ更新機能は、図28によって説明されたライスパラメータ更新機能とは異なり得、例えば、最大ライスパラメータ値は4よりも大きくなり、例えば6以上になり得る。
図45Aは、ライスパラメータ更新機能を適用する一構成を示す流れ図である。
ブロック4510において、電子デバイス4122はライスパラメータを初期化する。ブロック4511において、電子デバイス4122は、初期化されたライスパラメータを使用してレベル値を復号する。
菱形4512において、電子デバイス4122は、第1のライスパラメータ更新機能を適用すべきかどうかを判定する。一例では、第1のライスパラメータ更新機能は、図28で説明したライスパラメータ更新機能と同じである。菱形4512において条件が満たされる場合、ブロック4514において、電子デバイス4122は、第1のライスパラメータ更新機能を適用する。
一例では、菱形4512は、復元されたバイナリシンボルが、変換された係数を表すかどうかを判定すること、例えば、復元されたバイナリシンボルに関連するTransform_skip_flagが設定されるかどうかを判定することを含む。そのような例では、第1のライスパラメータ更新機能は、復元されたバイナリシンボルに関連するTransform_skip_flagが設定される、例えば、1の値に等しいと判定したことに応答して適用される。
第1のライスパラメータ更新機能が電子デバイス4122によって適用されるべきであるかどうかを制御するためにフラグまたは他のインジケータが使用され得る。エンコーダ側の電子デバイス4121は、電子デバイス4122に第2の異なるライスパラメータ更新機能を使用させるために、フラグまたは他のインジケータを1の値に設定し得る(これは、もちろん、設計の選好に応じて、前記フラグのデフォルト値を変更するか、または前記フラグをデフォルト値のままにすることを含み得る)。フラグはビットストリーム中のいかなるレベルでも配置され得、例えばシーケンスレベル、スライスレベル、CUレベル、PUレベル、またはTUレベルなどで配置される。一例では、電子デバイス4121は、コンテンツのビット深度がしきい値よりも大きく、フラグが1に設定される場合のみ、第2のライスパラメータ更新機能を適用することを決定し得る。
菱形4512において条件が満たされない場合、ブロック4513において、電子デバイス4122は、第1のライスパラメータ更新機能とは異なる第2のライスパラメータ更新機能を適用する。第2のライスパラメータ更新機能は、第1のライスパラメータ更新機能とは異なる最大値、例えばより高い最大値を有し得る。一例では、第2のライスパラメータ更新機能は6以上の最大値を有する。
例えば、図45Bは、8の最大値を有する例示的な第2の異なるライスパラメータ更新機能のための表4900を示している。表4900において、シンボルは、絶対−1、絶対−2、または絶対−3に対応し得る。Nの最大ライスパラメータ値をもつ別の表では、しきい値は4、7、13、25、49、97、193、385、...(3*2N+1)であり得る。
図44および図45に関して説明した構成とは異なる電子デバイス4121および電子デバイス4122の別の例示的な構成では、電子デバイス4122は、4の最大ライスパラメータ値を有するライスパラメータ更新機能をHEVCが適用するのと同様の様式で、6以上の最大ライスパラメータ値を有するライスパラメータ更新機能を適用する。電子デバイス4121および電子デバイス4122のさらに別の例示的な構成では、電子デバイス4121は、電子デバイス4122が、6以上の最大ライスパラメータ値を有するライスパラメータ更新機能を適用するのか、4の最大ライスパラメータ値を有するライスパラメータ更新機能を適用するかのかを制御するために、フラグまたは他のインジケータを設定する。フラグまたは他のインジケータが1に設定された場合、電子デバイス4122は、6以上の最大ライスパラメータ値を有するライスパラメータ更新機能を適用する。フラグまたは他のインジケータが0に設定された場合、電子デバイス4122は、4の最大ライスパラメータ値を有するライスパラメータ更新機能を適用する。電子デバイス4121および電子デバイス4122のさらに別の例示的な構成では、電子デバイス4122は、コンテンツのビット深度がしきい値よりも大きく、フラグが1に設定される場合のみ、6以上の最大ライスパラメータ値を有するライスパラメータ更新機能を適用する。
(より高いビット深度コーディングのための修正変換スキップモード)
背景として、HEVCによる復号では、エントロピー復号の後に逆量子化が続き、逆量子化の後に逆変換スキップが続き得る。既知のエントロピー復号または本明細書で説明するエントロピー復号方法のいずれかを使用するシステムでは、変換スキップブロックについて逆変換は実施されない。代わりに、逆量子化の結果にスケーリングが適用され得る。スケーリング演算は、導出された変数TS_Shiftに基づいて決定される。HEVCでは、逆変換スキップ演算は以下の擬似コードに対応する。
If(TS_Shift>0){
残余=(逆量子化された係数値+(1<<(TS_Shift−1)))>>TS_Shift
}else{
残余=(逆量子化された係数値)<<TS_Shift
}
ここで、
x>>yは、2進数字yによる2の補数整数表現xの算術的右シフトに対応する。この関数は、yの非負整数値についてのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされるビットは、シフト演算より前にxのMSBに等しい値を有する。
x<<yは、2進数字yによる2の補数整数表現xの算術的左シフトに対応する。この関数は、yの非負整数値についてのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされるビットは、0に等しい値を有する。
既知のスケーリング演算は、TS_ShiftをMAX_TDR−Bit_Depth−Log2TrSizeとして決定することを伴う。Max_TDRは、変換の最大ダイナミックレンジであり、これは、既知のシステムでは15であり得る。Bit_Depthは、サンプル値のビット深度であり、これは、既知のシステムでは0〜16にわたり得る。Log2TrSizeは、変換サイズのLog2であり、これは、既知のシステムでは2であり得、ここで、変換スキップは4×4ブロックに適用される(TrSizeはブロックのサイズを意味する)。より高いビット深度コーディングでは、スケーリング演算を適用した後に精度減損が観測されており、ここで、TS_Shift=MAX_TDR−Bit_Depth−Log2TrSizeである。
当技術分野で知られている精度減損が観測されないでより高いビット深度コーディングをサポートするために、TS_Shiftは、MAX[(MAX_TDR−Bit_Depth−Log2TrSize),0]として決定され得る。MAX演算は、括弧の間の値、例えばMAX_TDR−Bit_Depth−Log2TrSizeおよび0のうちの最大値を返す。したがって、TS_Shiftは非負整数であり、例えば0以上の整数である。
別の例では、当技術分野で知られている精度減損が観測されないでより高いビット深度コーディングをサポートするために、TS_Shiftは、MAX_TDR−Bit_Depth−Log2TrSize+Aとして決定され得る。エンコーダは、TS_Shiftが0よりも小さくなり得るか否かを制御するために変数Aを選択し得る。デコーダは、MAX_TDR−Bit_Depth−Log2TrSize+Aを使用してTS_Shiftを決定するために、ビットストリームから値Aを復号し得る。
一例では、エンコーダは、入力ビデオデータのビット深度が14ビット以上である場合、Aを1に設定し得、他のビット深度ではAは0に設定される。また、エンコーダは、入力ビデオデータのビット深度が14ビット以上であるが16ビット以下である場合、Aを3に設定し得、他のビット深度ではAは0に設定される。
図46は、エンコーダとデコーダとの一例を示すブロック図である。
システム4600は、デコーダ4612によって復号されるべき、符号化されたブロックを生成するために、エンコーダ4611を含む。エンコーダ4611とデコーダ4612とはネットワークを介して通信し得る。
エンコーダ4611は、修正変換スキップモードを使用して符号化するように構成された電子デバイス4621を含む。電子デバイス4621は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図47に示される動作を実施するためにプロセッサによって実行可能な命令を記憶する。
デコーダ4612は、修正変換スキップモードを使用して復号するように構成された電子デバイス4622を含む。電子デバイス4622は、プロセッサおよび該プロセッサと電子通信しているメモリを備え得、メモリは、図48に示される動作を実施するように実行可能な命令を記憶する。
図47は、修正変換スキップモードを使用するための方法の一構成を示す流れ図である。
ブロック4701において、電子デバイス4621は、算術ベースで符号化される、例えばCABACベースのエンコーダを使用して符号化されるべきデータのブロックを取得する。菱形4702において、電子デバイス4621は、修正変換スキップモードを使用してブロックの符号化が復号されるべきかどうかを判定する。
修正変換スキップモードを使用してブロックの符号化が復号されるべきである場合、ブロック4703において、電子デバイス4621は、TS_Shiftを決定するために修正変換スキップモードを採用するようにデコーダ4612にシグナリングする。一例では、信号は、生成されたビットストリーム中のフラグであり得る。フラグはビットストリーム中のいかなるレベルでも配置され得、例えばシーケンスレベル、スライスレベル、CUレベル、PUレベル、またはTUレベルなどで配置される。TS_Shiftが修正変換スキップモードにおいてMAX_TDR−Bit_Depth−Log2TrSize+Aとして計算されるべきである場合、電子デバイス4621は、フラグを設定することに加えてAの値をもシグナリングし得る。
修正変換スキップモードを使用してブロックの符号化が復号されるべきでない場合、ブロック4704において、電子デバイス4621は、TS_Shiftを決定するために修正変換スキップモードを採用するようにデコーダ4612にシグナリングしない。
ブロック4705において、電子デバイス4621は、データのブロックを符号化し、生成されたビットストリームをネットワークを介して送信し、および/または、生成されたビットストリームをメモリデバイスに記憶する。
図48は、復号側で修正変換スキップモードを使用するための方法の一構成を示す流れ図である。
ブロック4801において、電子デバイス4622はビットストリームを取得する。ブロック4802において、電子デバイス4622はバイナリシンボルを復元する。
菱形4803において、電子デバイス4622は、修正変換スキップモードを使用してバイナリシンボルが復号されるべきかどうかを判定する。一例では、電子デバイス4622は、取得されたビットストリーム中のフラグが設定されるかどうかを判定する。
修正変換スキップモードを使用してバイナリシンボルが復号されるべきである場合、ブロック4804において、電子デバイス4622は、第1のアルゴリズムを使用してTS_Shiftを決定し、ビデオデータを復元する。一例では、第1のアルゴリズムは、MAX[(MAX_TDR−Bit_Depth−Log2TrSize),0]である。別の例では、第1のアルゴリズムは、MAX_TDR−Bit_Depth−Log2TrSize+Aである。後者の場合、電子デバイス4622は、エンコーダ4611からの信号に基づいて値Aをも決定し得る。代替的に、後者の場合、電子デバイス4622は、取得されたビットストリームの特性に基づいてAの値を推測し得る。例えば、電子デバイス4622、ビットストリームのビット深度が14ビット以上であるかどうか、およびそうである場合、Aのために値1が使用される。しかしながら、検査が、ビットストリームが14ビットよりも小さいことを示す場合、Aのために値0が使用される。別の例では、電子デバイス4622は、ビットストリームのビット深度が14ビット以上であるが16ビット以下であるかどうかを判定し、そうである場合、Aのために値3が使用される。しかしながら、検査が、ビットストリームのビット深度が14ビットよりも小さいかまたは16ビットよりも大きいことを示す場合、Aのために値0が使用される。
修正変換スキップモードを使用してバイナリシンボルが復号されるべきでない場合、ブロック4805において、電子デバイス4622は、第2の異なるアルゴリズムを使用してTS_Shiftを決定し、ビデオデータを復元する。例えば、TS_Shiftは、MAX_TDR−Bit_Depth−Log2TrSizeとして決定される。ブロック4806において、電子デバイス4622は、復元されたビデオデータをメモリデバイスに記憶する。
HEVC仕様内で、逆量子化された入力d[x][y]のセットのための逆変換スキッププロセスの出力r[x][y]は、以下のように指定されている。
r[x][y]=d[x][y]<<7
bdShift=(cldx==0)?20−BitDepthY:20−BitDepthC
r[x][y]=(r[x][y]+(1<<(bdShift−1)))>>bdShift
ただし、cldxは色成分インデックスを表す。したがって、BitDepthYおよびBitDepthCは、それぞれルーマソースビット深度およびクロマソースビット深度を示す。bdShiftは、ビット深度に依存するシフトファクタである。==は、関係演算子「に等しい」に対応する。
TS_ShiftをMAX[(MAX_TDR−Bit_Depth−Log2TrSize),0]として決定することは、以下の修正逆変換スキッププロセスに関連し得る。
r[x][y]=d[x][y]<<7
bdShift=(cldx==0)?20−BitDepthY:20−BitDepthC
bdShift=MAX(7,bdShift)
r[x][y]=(r[x][y]+(1<<(bdShift−1)))>>bdShift
ただし、xおよびyは、垂直次元および水平次元のためのアレイインデックスを表し、
式x?y:zは以下に対応する。xが真であるか、または0に等しくない場合、式はyの値になり、そうでない場合、式はzの値になる。
入力として逆量子化された係数d[x][y]を取り、残差サンプル値r[x][y]を出力する、逆変換スキップシフトプロセスのための全体的なスケーリング演算は、初期の左ビットシフト演算と、後の右ビットシフト演算とを含んでいることがある。いくつかのシステムでは、左ビットシフト演算によってシフトされるビット数は、右ビットシフト演算によってシフトされるビット数に等しいかまたはそれよりも小さくなければならないことが望ましいことがある。左ビットシフト演算によってシフトされるビット数が、右ビットシフト演算によってシフトされるビット数よりも大きい場合、得られる出力は、0に設定された最下位ビットのサブセットを含んでいることがある。これは、逆変換スキッププロセスにおける忠実度の減損に対応する。例示的な実装形態では、左ビットシフト演算によってシフトされるビット数が、右ビットシフト演算によってシフトされるビット数以下でなければならないという制限は、右ビットシフト演算によってシフトされるビットの最小数を限定することによって達成され、例えば、右ビットシフトの量は、MAX(右ビットシフトの量の下限、右ビットシフトの量の導出値)として計算され得る。別の例示的な実装形態では、左ビットシフト演算によってシフトされるビット数が、右ビットシフト演算によってシフトされるビット数以下でなければならないという制限は、左ビットシフト演算によってシフトされるビットの最大数を限定することによって達成され、例えば、左ビットシフトの量は、MIN(左ビットシフトの量の上限、左ビットシフトの量の導出値)として計算され得る。MIN演算は、括弧の間の値の最小値を返し、例えば、MIN(x,y)は、x<=yの場合はxになり、そうでない場合はyになる。別の例示的な実装形態では、左ビットシフト演算によってシフトされるビット数が、右ビットシフト演算によってシフトされるビット数以下でなければならないという制限は、右ビットシフト演算によってシフトされる最小ビット数と、左ビットシフト演算によってシフトされる最大ビット数の両方を限定することによって達成される。別の例示的な実装形態では、左ビットシフト演算によってシフトされるビット数が、右ビットシフト演算によってシフトされるビット数以下でなければならないという制限は、任意の他の適切な機構によって達成される。
左ビットシフト演算によってシフトされる最大ビット数を限定するとき、逆量子化された入力d[x][y]のセットのための逆変換スキッププロセスの出力r[x][y](なお、d[x][y]は、スケーリングされた変換係数と呼ばれることもあることに留意されたい)は、以下のように指定され得る。
a.変数bdShiftは以下のように導出される。
bdShift=(cIdx==0)?20−BitDepthY:20−BitDepthC
b.残差サンプルrの(nTbS)×(nTbS)アレイは以下のように導出される。
transform_skip_flag_sh[xTbY][yTbY][cIdx]が1に等しい場合、x=0..nTbS−1、y=0..nTbS−1であれば、残差サンプルアレイ値r[x][y]は以下のように導出される。
r[x][y]=(d[x][y]<<MIN(7,bdShift))
そうでない場合(transform_skip_flag_sh[xTbY][yTbY][cIdx]が0に等しい)、入力として、変換ブロックロケーション(xTbY,yTbY)、変換ブロックのサイズnTbS、色成分変数cIdx、およびスケーリングされた変換係数dの(nTbS)×(nTbS)アレイを用いて、スケーリングされた変換係数のための変換プロセスが呼び出され、出力は、残差サンプルrの(nTbS)×(nTbS)アレイである。
c.x=0..nTbS−1、y=0..nTbS−1であれば、残差サンプル値r[x][y]は以下のように修正される。
r[x][y]=(r[x][y]+(1<<(bdShift−1)))>>bdShift
ここで、
(xTbY,yTbY)は、現在のピクチャの左上ルーマサンプルに対して現在のルーマ変換ブロックの左上サンプルを指定するルーマロケーションに対応し、
cIdxは、現在のブロックの色成分を指定し、
nTbSは、現在の変換ブロックのサイズを指定し、
BitDepthYおよびBitDepthCは、それぞれルーマソースビット深度およびクロマソースビット深度を示す。
transform_skip_flag_sh[x0][y0][cIdx]は、関連する変換ブロックに変換が適用されるか否かを指定する。アレイインデックスx0、y0は、ピクチャの左上ルーマサンプルに対して考慮されている変換ブロックの左上ルーマサンプルのロケーション(x0,y0)を指定する。アレイインデックスcIdxは、色成分のインジケータを指定する。cIdxは、ルーマでは0に等しく、Cbでは1に等しく、Crでは2に等しい。1に等しいtransform_skip_flag_sh[x0][y0][cIdx]は、現在の変換ブロックに変換が適用されないことを指定する。0に等しいtransform_skip_flag_sh[x0][y0][cIdx]は、現在の変換ブロックに変換が適用されるか否かの決定が他のシンタックス要素に依存することを指定する。transform_skip_flag_sh[x0][y0][cIdx]が存在しないとき、それは0に等しいことが推測される。
例示的な実施形態では、左ビットシフト演算によってシフトされる最大ビット数を限定するとき、左ビットシフトの量の導出値は、例えば現在の変換ブロックのサイズについて、ビットストリーム中でシグナリングされた過去のデータに基づいて決定される。左ビットシフトの量の導出値をderivedTSLeftShiftと表す場合、(スケーリングされた変換係数とも呼ばれる)逆量子化された入力d[x][y]のセットのための逆変換スキッププロセスの出力r[x][y]は、以下のように指定され得る。
a.変数bdShiftは以下のように導出される。
bdShift=(cIdx==0)?20−BitDepthY:20−BitDepthC
b.残差サンプルrの(nTbS)×(nTbS)アレイは以下のように導出される。
transform_skip_flag_sh[xTbY][yTbY][cIdx]が1に等しい場合、x=0..nTbS−1、y=0..nTbS−1であれば、残差サンプルアレイ値r[x][y]は以下のように導出される。
r[x][y]=(d[x][y]<<MIN(derivedTSLeftShift,bdShift))
そうでない場合(transform_skip_flag_sh[xTbY][yTbY][cIdx]が0に等しい)、入力として、変換ブロックロケーション(xTbY,yTbY)、変換ブロックのサイズnTbS、色成分変数cIdx、およびスケーリングされた変換係数dの(nTbS)×(nTbS)アレイを用いて、スケーリングされた変換係数のための変換プロセスが呼び出され、出力は、残差サンプルrの(nTbS)×(nTbS)アレイである。
c.x=0..nTbS−1、y=0..nTbS−1であれば、残差サンプル値r[x][y]は以下のように修正される。
r[x][y]=(r[x][y]+(1<<(bdShift−1)))>>bdShift
一例では、transform_skip_flag_sh[xTbY][yTbY][cIdx]は、Transform_skip_flagに対応する。
上記で説明したシステムおよび装置は、本明細書で説明した動作の一部または全部を実施するために、専用プロセッサシステム、マイクロコントローラ、プログラマブルロジックデバイス、マイクロプロセッサ、またはそれらの任意の組合せを使用し得る。上記で説明した動作のいくつかはソフトウェアで実装され得、他の動作はハードウェアで実装され得る。本明細書で説明した動作、プロセス、および/または方法のうちの1つまたは複数は、図示された図に関して本明細書で説明したものと実質的に同様の装置、デバイス、および/またはシステムによって実施され得る。
処理デバイスは、メモリに記憶された命令または「コード」を実行し得る。メモリはデータも記憶し得る。処理デバイスは、これらに限定するわけではないが、アナログプロセッサ、デジタルプロセッサ、マイクロプロセッサ、マルチコアプロセッサ、プロセッサアレイ、ネットワークプロセッサなどを含み得る。処理デバイスは、統合制御システムまたはシステムマネージャの一部であり得るか、あるいはワイヤレス送信を介してネットワーク化システムとローカルにまたはリモートでインターフェースするように構成されたポータブル電子デバイスとして提供され得る。
プロセッサメモリは、処理デバイスとともに集積化され得、例えば、RAMまたはFLASHメモリが集積回路マイクロプロセッサ内などに配置される。別の例では、メモリは、外部ディスクドライブ、ストレージアレイ、ポータブルFLASHキーフォブなど、独立したデバイスを備え得る。メモリおよび処理デバイスは、例えば、I/Oポート、ネットワーク接続などによって、動作可能に接続されるか、または互いに通信していることがあり、処理デバイスは、メモリ上に記憶されたファイルを読み取り得る。関連するメモリは、設計(ROM)によりパーミッション設定によって、「読み取り専用」であっても、そうでなくてもよい。メモリの他の例としては、これらに限定するわけではないが、固体半導体デバイス中に実装され得る、WORM、EPROM、EEPROM、FLASHなどを含み得る。他のメモリは、従来の回転ディスクドライブなど、可動部を備え得る。すべてのそのようなメモリは「機械読み取り可能」であり得、処理デバイスによって読み取り可能であり得る。
動作命令またはコマンドは、(「コンピュータプログラム」または「コード」としても知られる)記憶されたコンピュータソフトウェアの有形形態で実装または具現され得る。プログラム、またはコードは、デジタルメモリに記憶され得、処理デバイスによって読み取られ得る。「コンピュータ読み取り可能な記憶媒体」(または代替的に、「機械読み取り可能な記憶媒体」)は、メモリが、コンピュータプログラムまたは他のデータの特質をもつデジタル情報を、少なくとも一時的に、記憶することが可能であり得る限り、および記憶された情報が適切な処理デバイスによって「読み取られ」得る限り、上記のタイプのメモリのすべて、ならびに将来の新しい技法を含み得る。「コンピュータ読み取り可能」という用語は、完全なメインフレーム、ミニコンピュータ、デスクトップ、またはラップトップコンピュータさえも示唆する「コンピュータ」の歴史的用法に限定されるわけではない。そうではなく、「コンピュータ読み取り可能」は、プロセッサ、処理デバイス、または任意のコンピューティングシステムによって読み取り可能であり得る記憶媒体を含み得る。そのような媒体は、コンピュータまたはプロセッサによってローカルにおよび/またはリモートでアクセス可能であり得る任意の利用可能な媒体であり得、揮発性および不揮発性媒体、ならびにリムーバブルおよび非リムーバブル媒体、あるいはそれらの任意の組合せを含み得る。
コンピュータ読み取り可能な記憶媒体に記憶されたプログラムはコンピュータプログラム製品を含み得る。例えば、記憶媒体は、コンピュータプログラムを記憶または輸送するための便利な手段として使用され得る。便宜上、動作は、様々な相互接続または結合された機能ブロックまたは図として説明されることがある。しかしながら、これらの機能ブロックまたは図は、境界が不明確な単一の論理デバイス、プログラム、または動作に等価的に統合され得る場合があり得る。
本明細書で教示された概念が多くの別の方法で特定の適用例に適合され得ることが当業者には認識されよう。特に、示された例は、本開示を読んだときに明らかになるであろう多くの代替実装形態のうちの1つにすぎないことが当業者には理解されよう。
本明細書は、いくつかの箇所で「an(1つの)」、「one(1つの)」、「another(別の)」、または「some(いくつかの)」例を参照することがあるが、これは、それぞれのそのような参照が同じ例を対象とすること、あるいは特徴が単一の例にのみ当て嵌まることを必ずしも意味しない。