(57)【要約】  ビデオデータを符号化するためのデバイスは、サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、ビデオデータの第１のブロックについてＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、サブセットは、セットよりも小さい、ＳＡＯタイプのサブセットから、ビデオデータの第１のブロックのためのＳＡＯタイプを選択することと、符号化ビットストリームに含めるために、第１のブロックのための選択されたＳＡＯタイプを識別するための情報を生成することとを行うように構成され得る。
2018511235.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を備える方法。
【請求項２】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項１に記載の方法。
【請求項３】
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、請求項１に記載の方法。
【請求項４】
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
をさらに備える、請求項１に記載の方法。
【請求項５】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備え、前記方法が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化すること
をさらに備える、請求項１に記載の方法。
【請求項６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行することを備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、請求項１に記載の方法。
【請求項７】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項１に記載の方法。
【請求項８】
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと
をさらに備える、請求項１に記載の方法。
【請求項９】
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化することが、マージフラグを生成することを備える、請求項８に記載の方法。
【請求項１０】
前記ＳＡＯ情報導出プロセスを終了することが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを備える、請求項８に記載の方法。
【請求項１１】
ビデオデータを符号化するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行うように構成された、デバイス。
【請求項１２】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項１０に記載のデバイス。
【請求項１３】
前記１つまたは複数のプロセッサが、
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
を行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１４】
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
を行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１５】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備える、ここにおいて、前記１つまたは複数のプロセッサが、クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化することを行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するために、前記１つまたは複数のプロセッサが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行すること、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、を行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１７】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項１０に記載のデバイス。
【請求項１８】
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと、
を行うようにさらに構成された、請求項１０に記載のデバイス。
【請求項１９】
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化するために、前記１つまたは複数のプロセッサが、マージフラグを生成することを行うようにさらに構成された、請求項１８に記載のデバイス。
【請求項２０】
前記ＳＡＯ情報導出プロセスを終了するために、前記１つまたは複数のプロセッサが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを行うようにさらに構成された、請求項１８に記載のデバイス。
【請求項２１】
前記デバイスが、
集積回路、
マイクロプロセッサ、または
前記ビデオデータを取得するように構成されたカメラを備えるワイヤレス通信デバイス
のうちの少なくとも１つを備える、請求項１１に記載のデバイス。
【請求項２２】
ビデオデータを符号化するための装置であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化するための手段と、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行するための手段と、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択するための手段と、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成するための手段と
を備える装置。
【請求項２３】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項２２に記載の装置。
【請求項２４】
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングするための手段と、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングするための手段と、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、請求項２２に記載の装置。
【請求項２５】
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについてＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行するための手段と、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択するための手段と、
前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択するための手段と
をさらに備える、請求項２２に記載の装置。
【請求項２６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行するための手段を備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択するための前記手段が、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択するための手段を備え、前記装置が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化するための手段
をさらに備える、請求項２２に記載の装置。
【請求項２７】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行するための手段を備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、請求項２２に記載の装置。
【請求項２８】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項２２に記載の装置。
【請求項２９】
ビデオデータの前記第１のブロックのオフセット値を決定するための手段と、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算するための手段と、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較するための手段と、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了するための手段と
をさらに備える、請求項２２に記載の装置。
【請求項３０】
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、２０１５年３月６日に出願された米国仮特許出願第６２／１２９，６２８号の利益を主張する。
【０００２】
[0002]本開示は、ビデオ符号化に関し、より詳細には、サンプル適応オフセット（ＳＡＯ：sample adaptive offset）オフセットコーディングのための技法に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ  １０，アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、最近確定されたＩＴＵ−Ｔ  Ｈ．２６５、高効率ビデオコーディング（ＨＥＶＣ：High Efficiency Video Coding）規格によって定義された規格、および現在開発中の様々なＨＥＶＣ拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間（イントラピクチャ）予測および／または時間（インターピクチャ）予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部）はビデオブロックに区分され得、これらのビデオブロックは、ツリーブロック、コーディングユニット（ＣＵ）および／またはコーディングノードと呼ばれることもある。ピクチャのイントラコード化（Ｉ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測または時間的予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差を示す。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。被量子化変換係数は、最初は２次元アレイで構成され、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するために、エントロピーコーディングが適用され得る。
【発明の概要】
【０００６】
[0006]本開示では、サンプル適応オフセット（ＳＡＯ）フィルタ処理に関する技法について説明し、より詳細には、本開示では、ビデオ符号化プロセスにおいてＳＡＯ情報を導出することに関連する複雑さを低減するための技法について説明する。
【０００７】
[0007]一例では、ビデオデータを符号化する方法は、サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、ビデオデータの第１のブロックについてＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、サブセットは、セットよりも小さい、ＳＡＯタイプのサブセットから、ビデオデータの第１のブロックのためのＳＡＯタイプを選択することと、符号化ビットストリームに含めるために、第１のブロックのための選択されたＳＡＯタイプを識別するための情報を生成することとを含む。
【０００８】
[0008]一例では、ビデオデータを符号化するためのデバイスは、ビデオデータを記憶するように構成されたメモリと、サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、ビデオデータの第１のブロックについてＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、サブセットは、セットよりも小さい、ＳＡＯタイプのサブセットから、ビデオデータの第１のブロックのためのＳＡＯタイプを選択することと、符号化ビットストリームに含めるために、第１のブロックのための選択されたＳＡＯタイプを識別するための情報を生成することとを行うように構成された１つまたは複数のプロセッサとを含む。
【０００９】
[0009]別の例では、ビデオデータを符号化するための装置は、サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化するための手段と、ビデオデータの第１のブロックについてＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行するための手段と、ここにおいて、サブセットは、セットよりも小さい、ＳＡＯタイプのサブセットから、ビデオデータの第１のブロックのためのＳＡＯタイプを選択するための手段と、符号化ビットストリームに含めるために、第１のブロックのための選択されたＳＡＯタイプを識別するための情報を生成するための手段とを含む。
【００１０】
[0010]別の例では、コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、ビデオデータの第１のブロックについてＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、サブセットは、セットよりも小さい、ＳＡＯタイプのサブセットから、ビデオデータの第１のブロックのためのＳＡＯタイプを選択することと、符号化ビットストリームに含めるために、第１のブロックのための選択されたＳＡＯタイプを識別するための情報を生成することとを行わせる命令を記憶する。
【００１１】
[0011]本開示の１つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】[0012]本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２Ａ】[0013]サンプル適応オフセットコーディングのための例示的なエッジオフセット分類を示す概念図。
【図２Ｂ】サンプル適応オフセットコーディングのための例示的なエッジオフセット分類を示す概念図。
【図２Ｃ】サンプル適応オフセットコーディングのための例示的なエッジオフセット分類を示す概念図。
【図２Ｄ】サンプル適応オフセットコーディングのための例示的なエッジオフセット分類を示す概念図。
【図３】[0014]サンプル適応オフセットコーディングのための例示的なバンドオフセット分類を示す概念図。
【図４Ａ】[0015]本開示で説明する技法を実装し得る例示的なビデオエンコーダを示すブロック図。
【図４Ｂ】[0016]本開示で説明する技法を実装し得る例示的なビデオエンコーダの代替ビューを示すブロック図。
【図５】[0017]本開示で説明する技法を実装し得る例示的なビデオデコーダを示すブロック図。
【図６】[0018]ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図７】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図８】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図９】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図１０】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図１１】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図１２】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【図１３】ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図。
【発明を実施するための形態】
【００１３】
[0019]本開示では、サンプル適応オフセット（ＳＡＯ）フィルタ処理に関する技法について説明し、より詳細には、本開示では、ビデオ符号化プロセスにおいてＳＡＯ情報を導出することに関連する複雑さを低減するための技法について説明する。以下でより詳細に説明するように、本開示で使用するＳＡＯ情報は、概して、オフセットタイプとオフセット値との一方または両方を指す。ＳＡＯフィルタ処理は、ビデオコーディングにおいて使用されるある種の（a type of）ループフィルタ処理である。一般に、いくつかの例では、ビデオフレーム（たとえば、再構成された画像）中のピクセルへのオフセット値の加算により、符号化されたビデオデータを記憶または送信するのに必要なビットオーバーヘッドを大幅に増やすことなく、コーディングを改善し得る。ＳＡＯフィルタ処理から潜在的に生じるコーディングの改善は、たとえば、ビデオデータを符号化するときにより良いレートひずみ（ＲＤ）トレードオフが達成され得ること、および／または復号されたビデオ画像が所与のビットレートについて元のビデオ画像に対してより少ないひずみを含んでいることがあり得る。ＳＡＯ技法により、エッジメトリック、バンドメトリック、または他のタイプのメトリックなど、ピクセル（またはブロック）分類メトリックに応じて、異なるオフセット値を異なるピクセル（またはピクセルのブロック）に適用することが可能になる。
【００１４】
[0020]いくつかの実装形態では、ＳＡＯフィルタユニットは、本開示では一般にバンドオフセットフィルタ処理およびエッジオフセットフィルタ処理と呼ばれる、２つのタイプのＳＡＯフィルタ処理を実行するように構成され得る。ＳＡＯフィルタユニットはまた、時にはオフセットを適用しないことがあり、このこと自体が、以下でより詳細に説明するように、第３のタイプのＳＡＯフィルタ処理であると考えられ得る。ＳＡＯフィルタによって適用されるオフセットフィルタ処理のタイプは、明示的にまたは暗黙的に、ビデオデコーダにシグナリングされ得る。エッジオフセットフィルタ処理を適用する場合、ピクセルは、コーディングユニットのエッジ情報に基づいて分類され得、オフセットは、エッジ分類に基づいてピクセルに対して決定され得る。以下でより詳細に説明するように、通常はエッジベースのＳＡＯに４つのバリエーションがあり、ここで、ピクセルの値はピクセルの８つの隣接ピクセルのうちの２つと比較される。どの２つのピクセルが比較のために使用されるかは、エッジベースのオフセットのどのバリエーションが使用されるのかに依存する。隣接ピクセルに対するピクセルの大きさの差に基づいて、オフセットがピクセル値に加算される。
【００１５】
[0021]バンドオフセットフィルタ処理を適用する場合、ピクセルは、強度値などのピクセル値に基づいて様々なバンドに分類され得、各バンドは関連するオフセットを有する。バンドは、ある範囲のピクセル値を含む。たとえば、０〜２５５の範囲にわたるピクセル値は、３２個の等しいバンド（０〜３１と名付けられる）に分割され得るので、ピクセル値０〜７が第１のバンドであり、ピクセル値８〜１５が第２のバンドであり、ピクセル値１６〜２３が第３のバンドであり、すべての３２個のバンドに対して以下同様である。複数の異なるオフセット値のうちのどの特定のオフセット値をピクセルまたはピクセルのグループに適用するかを決定するために、バンドが使用され得る。たとえば、ピクセルが１０の値である（これは、上の例では第２のバンド、すなわち値８〜１５の中にある）場合、第２のバンドに関連付けられるオフセットがピクセル値に加算され得る。
【００１６】
[0022]様々なバンドのオフセットをシグナリングし生成する目的で、バンドは、２つ以上のグループへとグループ化され得る。バンドオフセットフィルタ処理では、ピクセルは、たとえば、上記で説明したように３２個のバンド（バンド０〜３１）に分類され得、バンドは２つのグループにグループ化され得る（たとえば、１６個のバンドの２つのグループ、４つのバンドの１つのグループと２８個のバンドの１つのグループ、８つのバンドの１つのグループと２４個のバンドの１つのグループ、または他のそのようなグループ化）。バンドのグループ化は、そのバンドに対するオフセット値が符号化されたビデオビットストリーム中でシグナリングされる順序を決定するために使用され得、および／または、特定のバンドが０以外のオフセット値を有するのかどうかを判定するために使用され得る。バンドのためのオフセットは、現在の値が現在の値と前の値との間の差としてシグナリングされる差分コーディング技法を使用してシグナリングされ得る。シグナリングオーバーヘッドを低減するために、少数のバンドだけ（たとえば、４つのバンド）が非ゼロオフセット値に関連付けられ得、一方、すべての他のバンドが０のオフセット値を有すると仮定される。
【００１７】
[0023]高効率ビデオコーディング（ＨＥＶＣ）規格で実装されているので（as）、ＳＡＯフィルタ処理は、スライスレベルで使用可能および使用不能（enabled and disabled）にされ得、さらに、ルーマおよびクロマサンプルについて別個にＳＡＯフィルタ処理は使用可能および使用不能にされ得る。たとえば、ビデオデータの特定のスライスについて、ルーマサンプルとクロマサンプルとがＳＡＯフィルタ処理され得るか、ルーマサンプルもクロマサンプルもＳＡＯフィルタ処理されないことがあるか、あるいはルーマサンプルとクロマサンプルのうちの１つがＳＡＯフィルタ処理されるが、もう一方はＳＡＯフィルタ処理されないことがある。ＳＡＯフィルタ処理がスライスのために使用可能であるとき、ＳＡＯタイプとオフセット値とは最大コーディングユニット（ＬＣＵ）レベルでシグナリングされる。上記で紹介したように、ＳＡＯタイプは、バンドオフセットフィルタ処理、エッジオフセットフィルタ処理、またはＳＡＯフィルタ処理なしを含むことができる。したがって、ＳＡＯフィルタ処理が特定のスライスのために使用可能である場合でも、そのスライスのいくつかのＬＣＵはＳＡＯフィルタ処理されないことがある（すなわち、いくつかのＬＣＵは、ＳＡＯフィルタ処理なしのＳＡＯタイプを有することになる）。いくつかの例では、ＳＡＯタイプとオフセット値とは、一連のマージフラグとともに（with）シグナリングされ得、ここで、第１のマージフラグの真値は、オフセットタイプを示し、ＬＣＵのオフセット値は、左側の隣接ＬＣＵから継承され、第２のマージフラグの真値は、ＳＡＯタイプを示し、オフセット値は、上側の隣接ＬＣＵから継承される（inherited）。マージフラグの両方が偽である場合、新しいＳＡＯタイプと新しいオフセット値とがＬＣＵについて送られる。
【００１８】
[0024]ＨＥＶＣがスライスレベルでＳＡＯフィルタ処理を使用可能および使用不能にし、ＬＣＵレベルでＳＡＯ情報をシグナリングするが、本開示の技法がＳＡＯ構成で実装され、ここで、そのようなシグナリングが異なるレベルで、または異なるシグナリング機構を一緒に使用するＳＡＯ構成で生じるＳＡＯ構成で行われる（implemented）と考えられることを理解されたい。
【００１９】
[0025]ＳＡＯ情報（たとえば、ＳＡＯタイプと複数のオフセット値と）は、ＬＣＵについてシグナリングされる。ＳＡＯタイプに基づいて、ビデオデコーダは、ピクセルごとに、複数のオフセット値からどのオフセット値を各ピクセルに加算すべきかを決定する。以下でより詳細に説明するように、特定のピクセルまたはピクセルのブロック（たとえば、ＬＣＵ中の２×２ブロック）についてどのオフセット値を適用すべきかの決定は、ピクセルのブロックの特定のピクセルのために決定されたエッジおよびバンド分類に基づいて決定され得る。
【００２０】
[0026]上述のように、ビデオフレーム中のピクセルへのオフセット値の加算は、符号化されたビデオデータを記憶または送信するのに必要なビットオーバーヘッドを大幅に増加させることなしに再構成されたビデオ品質の品質を改善し得る。ただし、ＳＡＯは、ビデオエンコーダの複雑さを大幅に増加させ得る。ビデオエンコーダは、複数のコーディングパスを実行することによってビデオデータの特定の部分をどのように符号化する（encode）のかを決定し、各コーディングパスは、異なるコーディングツール（たとえば、予測モード、変換モード、フィルタ）を利用するか、または同じだが異なるパラメータをもつ（with）コーディングツールを利用する。本開示で使用されるように、コーディングパスは、概して、それらのコーディングツールおよびパラメータをテストする（たとえば、それらのための達成されたＲＤトレードオフを分析する）ためにコーディングツールおよびパラメータのあるセットを用いてビデオデータの一部分を完全にあるいは部分的に符号化することを指す。複数のコーディングパスに基づいて、ビデオエンコーダは、望ましいＲＤにトレードオフを与えるコーディングツールとコーディングパラメータとのセットを決定する。ＳＡＯが複数のＳＡＯタイプを含み、その各々が複数のオフセット値を用いて実装され得るので、ビデオエンコーダは、どのＳＡＯタイプをおよびどのオフセット値をビデオの特定のブロックに使用すべきかを決定するために計算量的に複雑な処理に関与し（engage in）なければならないことがある。本開示は、ＳＡＯ情報を決定する複雑さを潜在的に低減し得る技法をもたらす（introduces）。
【００２１】
[0027]様々な技法について説明する際、本開示は、ブロック、ピクセル、ＳＡＯ情報などの間で区別するために第１の、第２の、第３のなどの用語を使用し得る。別段に記述がない限り、そのような用語を、順序関係、時間関係、または他のそのような関係を暗示すると仮定すべきではない。代わりに、そのような用語は、単に、異なるブロック、ピクセル、ＳＡＯ情報などを区別するために使用される。
【００２２】
[0028]図１は、本開示で説明するＳＡＯ符号化技法を利用し得る例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、宛先デバイス１４によって後で（at a later time）復号される符号化されたビデオデータを生成するソースデバイス１２を含み、後で詳しく述べるように、ビデオデータのこの符号化および復号は、ＳＡＯフィルタ処理において使用するオフセット値をコーディングすることを含み得る。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００２３】
[0029]宛先デバイス１４は、リンク１６を介して、復号されるべき符号化ビデオデータを受信し得る。リンク１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク１６は、ソースデバイス１２が符号化ビデオデータをリアルタイムで宛先デバイス１４に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を可能にするために有用であり得る任意の他の機器を含み得る。
【００２４】
[0030]代替的に、符号化データは出力インターフェース２２からストレージデバイス１９に出力され得る。同様に、符号化データは、入力インターフェースによってストレージデバイス１９からアクセスされ得る。ストレージデバイス１９は、ハードドライブ、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス１９は、ソースデバイス１２によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに相当し得る。宛先デバイス１４は、ストレージデバイス１９からストリーミングまたはダウンロードを介して、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶すること、およびその符号化ビデオデータを宛先デバイス１４へ送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイト用の）ウェブサーバ、ＦＴＰサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブを含む。宛先デバイス１４は、インターネット接続を含む任意の標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適したワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。ストレージデバイス１９からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００２５】
[0031]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および／またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ伝送をサポートするように構成され得る。
【００２６】
[0032]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。場合によっては、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ソースデバイス１２において、ビデオソース１８は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および／またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび／またはワイヤードの適用例に適用され得る。
【００２７】
[0033]キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化ビデオデータは、ソースデバイス１２の出力インターフェース２２を介して宛先デバイス１４へ直接送信され得る。符号化ビデオデータは、さらに（または代替的に）、復号および／または再生のための宛先デバイス１４または他のデバイスによる後のアクセスのためにストレージデバイス１９上に記憶され得る。
【００２８】
[0034]宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。場合によっては、入力インターフェース２８は、受信機および／またはモデムを含み得る。宛先デバイス１４の入力インターフェース２８は、リンク１６を通じて符号化されたビデオデータを受信する。リンク１６を介して通信されるかまたはストレージデバイス１９上で提供される符号化ビデオデータは、ビデオデータを復号する際にビデオデコーダ３０などのビデオデコーダによって使用するための、ビデオエンコーダ２０によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ上に記憶される符号化ビデオデータに含まれ得る。
【００２９】
[0035]ディスプレイデバイス３２は、宛先デバイス１４と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス１４は、一体型ディスプレイデバイスを含み、さらに外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス１４はディスプレイデバイスであり得る。概して、ディスプレイデバイス３２は、復号ビデオデータをユーザに表示し、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３０】
[0036]ビデオエンコーダ２０およびビデオデコーダ３０は、最近確定されたＨＥＶＣ規格（および現在開発中のそれの様々な拡張）など、ビデオ圧縮規格に従って動作し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、ＭＰＥＧ−４，Ｐａｒｔ  １０，アドバンストビデオコーディング（ＡＶＣ）と代替的に呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格など、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例としては、ＭＰＥＧ−２およびＩＴＵ−Ｔ  Ｈ．２６３がある。
【００３１】
[0037]図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００３２】
[0038]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、マイクロプロセッサを含む１つまたは複数の集積回路、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために１つまたは複数のプロセッサを使用して集積回路などのハードウェアでその命令を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００３３】
[0039]上記で紹介したように、ＪＣＴ−ＶＣはＨＥＶＣ規格の開発を最近確定した。ＨＥＶＣ規格化の取り組みは、ＨＥＶＣテストモデル（ＨＭ）と呼ばれるビデオコーディングデバイスの発展的モデルに基づいていた。ＨＭは、たとえば、ＩＴＵ−Ｔ  Ｈ．２６４／ＡＶＣに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、Ｈ．２６４は９個のイントラ予測符号化モードを与えるが、ＨＭは３５個ものイントラ予測符号化モードを与え得る。
【００３４】
[0040]ＨＥＶＣおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCbおよびＳCrと示される、３つのサンプルアレイを含み得る。ＳLはルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbはＣｂクロミナンスサンプルの２次元アレイである。ＳCrはＣｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【００３５】
[0041]ビデオエンコーダ２０は、ピクチャの符号化された表現を生成するために、コーディングツリーユニット（ＣＴＵ）のセットを生成し得る。ＣＴＵの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの２つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＴＵは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのＮ×Ｎブロックであり得る。ＣＴＵは「ツリーブロック」またはＬＣＵと呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００３６】
[0042]コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するためにＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実行し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックはサンプルのＮ×Ｎブロックであり得る。ＣＵは、ルーマサンプルアレイとＣｂサンプルアレイとＣｒサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの２つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＣＵは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
【００３７】
[0043]ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックである。ＣＵの予測ユニット（ＰＵ：prediction unit）は、ルーマサンプルの予測ブロックと、クロマサンプルの２つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＰＵは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロックおよびＣｒ予測ブロックのための予測ルーマブロック、予測Ｃｂブロックおよび予測Ｃｒブロックを生成し得る。
【００３８】
[0044]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するためにイントラ予測またはインター予測を使用し得る。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号サンプルに基づいてＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０が、ＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連するピクチャ以外の１つまたは複数のピクチャの復号サンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【００３９】
[0045]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵのための予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを生成した後、ビデオエンコーダ２０は、ＣＵのためのルーマ残差ブロックを生成し得る。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックのうちの１つ中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差を示す。さらに、ビデオエンコーダ２０はＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つ中のＣｂサンプルとＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差を示し得る。ビデオエンコーダ２０は、ＣＵのためのＣｒ残差ブロックをも生成し得る。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つ中のＣｒサンプルとＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差を示し得る。
【００４０】
[0046]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックとＣｂ残差ブロックとＣｒ残差ブロックとを１つまたは複数のルーマ変換ブロックとＣｂ変換ブロックとＣｒ変換ブロックとに分解するために４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形（たとえば、正方形または非正方形）ブロックである。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロックと、クロマサンプルの２つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックはＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。モノクロームピクチャまたは３つの別々の色平面を有するピクチャでは、ＴＵは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
【００４１】
[0047]ビデオエンコーダ２０は、ＴＵのためのルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１つまたは複数の変換を適用し得る。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ係数ブロックを生成するために、ＴＵのＣｂ変換ブロックに１つまたは複数の変換を適用し得る。ビデオエンコーダ２０は、ＴＵのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００４２】
[0048]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を実行し得る。
【００４３】
[0049]ビデオエンコーダ２０は、コード化ピクチャと関連データとの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、ＮＡＬユニットのシーケンスを備え得る。ＮＡＬユニットは、ＮＡＬユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在させられたＲＢＳＰの形態でそのデータを含んでいるバイトとを含んでいる、シンタックス構造である。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ＲＢＳＰをカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含み得る。ＮＡＬユニットのＮＡＬユニットヘッダによって指定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの事例では、ＲＢＳＰは０ビットを含む。
【００４４】
[0050]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化し得る。たとえば、第１のタイプのＮＡＬユニットはＰＰＳのためのＲＢＳＰをカプセル化し得、第２のタイプのＮＡＬユニットはコード化スライスのためのＲＢＳＰをカプセル化し得、第３のタイプのＮＡＬユニットはＳＥＩメッセージのためのＲＢＳＰをカプセル化し得、以下同様である。（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは、ＶＣＬ  ＮＡＬユニットと呼ばれることがある。
【００４５】
[0051]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ３０は、ビットストリームをパースして、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ３０は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ２０によって実行されるプロセスの逆であり得る。さらに、ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ３０は、現在のＣＵのＴＵに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ３０は、現在のＣＵのＰＵのための予測ブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構成し得る。ピクチャの各ＣＵのためのコーディングブロックを再構成することによって、ビデオデコーダ３０はピクチャを再構成し得る。
【００４６】
[0052]ＳＡＯコーディングは、ベースのＨＥＶＣ規格中に含まれていた。概して、ビデオフレーム中のピクセルへのオフセット値の加算は、符号化されたビデオデータを記憶または送信するのに必要なビットオーバーヘッドを大幅に増加させることなしに再構成されたビデオ品質の品質を改善し得る。ＳＡＯ技法により、ピクセル（またはブロック）分類メトリックに応じて異なるオフセット値を異なるピクセル（またはブロック）に適用することが可能になる。可能な分類メトリックには、バンドメトリックとエッジメトリックなどの活動メトリック（activity metrics）とが含まれる。ＳＡＯがＨＥＶＣ規格で実装されているので、各ＬＣＵは、３つのＳＡＯタイプのうちの１つを有することができ、これは、ピクセル分類と呼ばれることもある。３つのＳＡＯタイプは、オフセットなし、バンドタイプＳＡＯ、およびエッジタイプＳＡＯである。
【００４７】
[0053]図２Ａ〜図２Ｄは、ＨＥＶＣ中に含まれる４つのエッジオフセット分類を示す概念図である。エッジオフセットタイプは、エッジ情報に基づいて各ピクセルを分類する。図２Ａ〜図２Ｄに示すエッジ分類の各々について、現在のピクセルのエッジタイプは、現在のピクセル（Ｃ）の値を隣接ピクセル（１および２）の値と比較することによって計算される。図２Ａに示す分類０のＳＡＯエッジオフセット（ＳＡＯ＿ＥＯ＿０）の場合、現在のピクセル（ピクセルＣ）は、左側のネイバーピクセル（ピクセル１）および右側のネイバーピクセル（ピクセル１）と比較される。図２Ｂに示す分類１のＳＡＯエッジオフセット（ＳＡＯ＿ＥＯ＿１）の場合、現在のピクセル（ピクセルＣ）は、上側のネイバーピクセル（ピクセル１）および下側のネイバーピクセル（ピクセル２）と比較される。図２Ｃに示す分類２のＳＡＯエッジオフセット（ＳＡＯ＿ＥＯ＿２）の場合、現在のピクセル（ピクセルＣ）は、左上側のネイバーピクセル（ピクセル１）および右下側のネイバーピクセル（ピクセル２）と比較される。図２Ｄに示す分類３のＳＡＯエッジオフセット（ＳＡＯ＿ＥＯ＿３）の場合、現在のピクセル（ピクセルＣ）は、右上側のネイバーピクセル（ピクセル１）および左下側のネイバーピクセル（ピクセル２）と比較される。
【００４８】
[0054]４つのエッジオフセット分類はそれぞれ、−２から２にわたる５つの可能な整数値をもつエッジタイプを有することができる。最初に、現在のピクセルのエッジタイプは０であると仮定される。現在のピクセルＣの値が、第１のネイバーピクセル（ピクセル１）と第２のネイバーピクセル（ピクセル２）との両方の値に等しい場合、エッジタイプは０のままである。現在のピクセルＣの値がネイバーピクセル１の値よりも大きい場合、エッジタイプは１だけ増加される。現在ピクセルＣの値がネイバーピクセル１の値よりも小さい場合、エッジタイプは１だけ減少される。同様に、現在のピクセルＣの値がネイバーピクセル２の値よりも小さい場合、エッジタイプは１だけ増やされ、現在のピクセルＣの値がネイバーピクセル２の値よりも小さい場合、エッジタイプは１だけ減らされる。
【００４９】
[0055]したがって、現在のピクセルＣは、−２、−１、０、１、または２というエッジタイプを有し得る。現在のピクセルＣの値がネイバーピクセル１および２の両方の値より小さい場合、エッジタイプは−２である。現在のピクセルＣの値が一方のネイバーピクセルより小さいが他方の隣接ピクセルに等しい場合、エッジタイプは−１である。現在のピクセルＣの値が両方のネイバーピクセルと同じである場合、または、現在のピクセルＣの値が一方のネイバーピクセルより大きいが他方のネイバーピクセルより小さい場合、エッジタイプは０である。現在のピクセルＣの値が一方のネイバーピクセルより大きいが他方の隣接ピクセルに等しい場合、エッジタイプは１である。現在のピクセルＣの値がネイバーピクセル１と２の両方の値より大きい場合、エッジタイプは２である。各々の０ではないエッジタイプ値に対して、４つのオフセット値が決定され、デコーダによる使用のために符号化されたビデオビットストリーム中でシグナリングされる（すなわち、ｅｏｆｆｓｅｔ-2、ｅｏｆｆｓｅｔ-1、ｅｏｆｆｓｅｔ1、ｅｏｆｆｓｅｔ2）。
【００５０】
[0056]上記の説明に鑑みて、各エッジオフセット分類について、エッジタイプ値が以下の擬似コードに従ってピクセルについて計算され得る。
【００５１】
【数１】
2018511235.tif 000003
【００５２】
[0057]ビデオデコーダ３０は、ピクセルが−２のエッジタイプを有すると決定する場合、ビデオデコーダ３０は、ピクセルにオフセット値ｅｏｆｆｓｅｔ-2を加算する。ビデオデコーダ３０は、ピクセルが−１のエッジタイプを有すると決定する場合、ビデオデコーダ３０は、ピクセルにオフセット値ｅｏｆｆｓｅｔ-1を加算する。ビデオデコーダ３０は、ピクセルが１のエッジタイプを有すると決定する場合、ビデオデコーダ３０は、ピクセルにオフセット値ｅｏｆｆｓｅｔ1を加算する。ビデオデコーダ３０は、ピクセルが２のエッジタイプを有すると決定する場合、ビデオデコーダ３０は、ピクセルにオフセット値ｅｏｆｆｓｅｔ2を加算する。
【００５３】
[0058]図３は、バンドベースのＳＡＯ分類において使用され得る例示的なバンドを示す概念図である。図３中の各矩形はバンドを表す。図３の例に、３２個のバンド、すなわち、バンド０〜３１を示す。バンド０、バンド８、バンド２４、およびバンド３１など、バンドのいくつかを標示した（labeled）。いくつかの実装形態では、より多いまたはより少ないバンドが使用され得る。バンドベースのオフセットの場合、ピクセルは、強度値などのピクセル値に基づいて異なるバンドに分類される。例として、０〜２５５（たとえば、８ビットのビット深度）にわたるピクセル値をとったが、０〜１０２３（たとえば、１０ビットのビット深度）などの他の範囲も使用され得る。そのような例では、図３に示す最大値は２５５に等しくなることになり、図３に示す３２個のバンドの各々は８という範囲を有することになる。一番左側のバンド（すなわち、図３中のバンド０）はピクセル値０〜７であり、次のバンド（すなわち、図３中のバンド１）は８〜１５のピクセル値に対するものであり、次のバンド（すなわち、バンド２）はピクセル値１６〜２３に対するものであり、ピクセル値２４８〜２５５に対するものである一番右側のバンド（すなわち、図３中のバンド３１）まで以下同様である。バンドオフセットの場合、ピクセルは、強度値などのピクセル値に基づいて異なるバンドに分類される。ルーマおよびクロマのために別個の分類が使用され得る。ピクセル値がどのバンドに入るかに基づいて、あるオフセットがピクセルに加算される。たとえば、ピクセルが１９の値を有する場合、この現在の例によれば、ピクセル値は、ピクセル値１６から２３にわたるバンド２内に入る。したがって、ビデオデコーダ３０は、１９のピクセル値に、バンド２に関連するオフセットを適用することになる。
【００５４】
[0059]バンドの各々に関連するオフセット値をシグナリングする目的で、ビデオエンコーダ２０は、バンドを２つ以上のグループにグループ化し得る。２つのグループは、たとえば、シグナリングされたオフセット値をもつバンド（たとえば、図３の例ではバンド８〜１１）の第１のグループとシグナリングされなかったオフセット値をもつバンドの第２のグループとであり得る。シグナリングされたオフセット値は０または０でない値のいずれかであり得るが、ビデオデコーダ３０は、すべてのシグナリングされなかった値を０であると推論する。シグナリングされたオフセット値をもつバンドの第１のグループについて、ビデオエンコーダ２０は、ビデオデコーダ３０に、オフセット値（すなわち、ｂｏｆｆｓｅｔ0、ｂｏｆｆｓｅｔ1、ｂｏｆｆｓｅｔ2、ｂｏｆｆｓｅｔ3）ならびにシグナリングされたオフセット値をもつ第１のバンドの指示をシグナリングし得る。シグナリングされたオフセット値をもつ第１のバンドと第１のバンドの後に順番で続く次の３つのバンドとについて、ビデオエンコーダ２０は、ビデオデコーダ３０にオフセット値をシグナリングする。残りのバンドについて、ビデオデコーダ３０は、バンドが０のオフセット値を有することをシグナリングすることなしに推論し得る。
【００５５】
[0060]各ＬＣＵについて、ビデオエンコーダ２０は、バンドタイプのＳＡＯを使用して、エッジタイプのＳＡＯ（たとえば、ＳＡＯ＿ＥＯ＿０、ＳＡＯ＿ＥＯ＿１、ＳＡＯ＿ＥＯ＿２、ＳＡＯ＿ＥＯ＿３）を使用して、およびＳＡＯを使用せずに複数のコーディングパスを実行し得る。バンドタイプのＳＡＯについて、ビデオエンコーダ２０は、異なるグルーピングのバンドならびにバンドごとに異なる値（たとえば、ｂｏｆｆｓｅｔ0、ｂｏｆｆｓｅｔ1、ｂｏｆｆｓｅｔ2、ｂｏｆｆｓｅｔ3で異なる値）を使用して複数のコーディングパスを実行し、エッジタイプのＳＡＯごとに、ビデオエンコーダ２０はまた、異なるオフセット値（たとえば、ｅｏｆｆｓｅｔ-2、ｅｏｆｆｓｅｔ-1、ｅｏｆｆｓｅｔ1、ｅｏｆｆｓｅｔ2で異なる値）を使用して複数のコーディングパスを実行する。ＬＣＵごとにこの多数のコーディングパスを実行することは、計算集約的で（computationally intensive）あり得る。本開示は、ＬＣＵについてのＳＡＯ情報を決定することに関連する複雑さを低減し得る低複雑性のＳＡＯ符号化のための技法をもたらす。
【００５６】
[0061]本開示には、各オフセット導出の複雑さを低減し得る技法が含まれる。例示的な技法によれば、ビデオエンコーダ２０は、すべてのオフセットタイプではなくオフセットタイプのサブセットのみを検査し得る。言い換えれば、ビデオエンコーダ２０は、すべてのオフセットタイプではなく、オフセットタイプのサブセットを評価ためだけにコーディングパスを実行し得る。上記で説明したように、ＨＥＶＣ中で実装されるＳＡＯ中に、５つのオフセットタイプ（１つのバンドオフセットタイプと、垂直、水平、４５度、および１３５度を含む４つのエッジオフセットタイプと）がある。ビデオエンコーダ２０はまた、左側または上側のＬＣＵからのマージモードを使用してＳＡＯ情報を符号化し得、これは、それらのＬＣＵのうちの１つからＳＡＯ情報をコピーすることを含む。
【００５７】
[0062]本開示の技法によれば、ビデオエンコーダ２０は、たとえば、高速コーディングモードおよび高圧縮モードを含む複数のモードでビデオデータを符号化するように構成され得る。高圧縮モードは、高速コーディングモードと比較して同等のひずみレベルでより良い圧縮を与え得るが、高圧縮モードはまた、高速コーディングモードよりもビデオデータを符号化するのに長い時間がかかり得る。高速コーディングモードは、より迅速にビデオデータを符号化するためにある程度の（a certain amount of）圧縮品質を犠牲にし得る。高速符号化モードでは、ビデオエンコーダ２０は、すなわち、すべてのＳＡＯタイプよりも少ないＳＡＯタイプのサブセットのみを検査し得る、たとえば、それらに対してコーディングパスを実行し得るが、高圧縮モードでは、ビデオエンコーダ２０は、ＳＡＯタイプのすべてに対してコーディングパスを実行し得る。概して、本明細書で使用するサブセットという用語は、すべてのＳＡＯタイプの総数よりも少ないいくつかのＳＡＯタイプを指すことになる。一例として、高速符号化モードでは、ビデオエンコーダ２０は、バンドタイプのオフセット、水平エッジオフセット、および垂直エッジオフセットに対してのみコーディングパスを実行し得るが、高圧縮コーディングモードでは、ビデオエンコーダ２０は、５つすべてのＳＡＯタイプ、すなわち、バンドタイプのＳＡＯおよび４つのエッジタイプのＳＡＯタイプに対してコーディングパスを実行し得る。
【００５８】
[0063]いくつかの例では、ビデオエンコーダ２０は、いくつかのブロックについて５つすべてのＳＡＯタイプを検査（たとえば、それらに対してコーディングパスを実行）し得、他のブロックについて（すなわち、１つ、２つ、３つまたは４つのＳＡＯタイプのみなどＳＡＯタイプの５つすべてよりも少ない）５つのＳＡＯタイプのサブセットのみを検査し得る。いくつかの例では、ビデオエンコーダ２０は、１つのブロックについて５つすべてのＳＡＯタイプを検査し、次いで、隣接ブロックについて検査するためにＳＡＯタイプのサブセットを決定するためにそのブロックのための決定されたＳＡＯタイプを使用し得る。すなわち、隣接ブロックに対してコーディングパスが実行されるＳＡＯタイプのサブセットのメンバーは、ブロックのために決定された特定のＳＡＯタイプに基づいて選択され得る。
【００５９】
[0064]一例によれば、ビデオエンコーダ２０は、ＳＡＯタイプのサブセット（すなわち、垂直および水平などの２つのルーマエッジオフセットタイプ）のみを検査し、および／またはルーマのためのＳＡＯタイプのみを検査するように構成され得る。これらの技法を使用することによって、エンコーダによってＳＡＯ情報を決定することに関連する複雑さの７０％も取り除かれ（saved）得る。
【００６０】
[0065]本開示で説明する様々な技法は、スライスまたはピクチャごとに別様に適用され得る。一例として、１つのスライスまたはピクチャについて、ビデオエンコーダ２０は、各ＬＣＵについて５つすべてのＳＡＯタイプを検査することによってＳＡＯタイプを決定し得るが、他のスライスまたはピクチャについて、ビデオエンコーダ２０は、ＳＡＯタイプのサブセットのみを検査し得る。一例では、ビデオエンコーダ２０は、スライスタイプまたはピクチャタイプに基づいてすべてのＳＡＯタイプを検査すべきか、またはＳＡＯタイプのサブセットを検査すべきかを決定し得る。たとえば、ランダムアクセスピクチャについて、ビデオエンコーダ２０は、すべてのＳＡＯタイプを検査するが、１つまたは複数の他のピクチャについて、ＳＡＯタイプのサブセットのみを検査し得る。別の例として、非参照ピクチャについて、ビデオエンコーダ２０は、ＳＡＯタイプのサブセットのみを検査し得るが、参照ピクチャについて、ビデオエンコーダ２０は、すべてのＳＡＯタイプ（またはそれらのより多いサブセット）を検査し得る。したがって、非参照ピクチャについて検査されたＳＡＯタイプのセットが、参照ピクチャについて検査されたＳＡＯタイプのセットよりも小さいことがある。また別の例として、ビデオエンコーダ２０は、フレーム、すなわち、ピクチャが、Ｉピクチャであるのか、Ｐピクチャであるのか、またはＢピクチャであるのかに基づいてすべてのＳＡＯタイプを検査すべきか、またはＳＡＯタイプのサブセットを検査すべきかを決定し得る。したがって、Ｉピクチャ、ＰピクチャおよびＢピクチャについて検査されたＳＡＯタイプのセットは、互いに異なり、たとえば、より多くなるかまたはより少なくなり、ピクチャタイプに基づいて決定され得る。一例では、ＰピクチャおよびＢピクチャのためのＳＡＯタイプのセットは同じであるが、Ｉピクチャに対して異なり得る。別の例では、ＳＡＯタイプのセットは、Ｉピクチャ、ＰピクチャおよびＢピクチャの各々に対して異なり得る。別の例では、ＳＡＯタイプのセットは、ＩピクチャおよびＰピクチャに対して同じであるが、Ｂピクチャに対して異なり得る。別の例では、ＳＡＯタイプのセットは、ＩピクチャおよびＢピクチャに対して同じであるが、Ｐピクチャに対して異なり得る。
【００６１】
[0066]本開示の別の技法によれば、ビデオエンコーダ２０は、オフセットを導出するためにＬＣＵ内のピクセルのサブセットを使用するように構成され得る。一般に、ビデオエンコーダ２０は、オフセット値を導出するためにＬＣＵ内のすべてのピクセルを使用するが、本開示の技法によれば、ビデオエンコーダ２０は、ＬＣＵ内の部分的なピクセルのみを使用し得る。一例として、ビデオエンコーダ２０は、いかなる境界画素（boundary pixels）も含まないピクセルのサブセットを選択し、オフセット値を導出するためにピクセルのそのサブセットを使用し得る。一般的なソフトウェアアクセラレーション方式（たとえば、ＡＲＭ  ＮＥＯＮ、ＤＳＰ特殊命令、ＰＣ  ＳＳＥ）に適合するオフセット導出を行うために、本開示はまた、サブセットを８つのピクセルの倍数（たとえば８つ、１６個、２４個、３２個、４０個）にしようと提案する。大部分のソフトウェアアクセラレーション方式は、一度に８つのピクセルを扱うように構成され、したがって８の倍数を使用することは、パフォーマンスの改善につながり得る。
【００６２】
[0067]本開示の別の技法によれば、ビデオエンコーダ２０は、オフセット導出のためにデブロック前ピクセル（pre-deblocked pixels）を使用するように構成され得る。一般に、ビデオエンコーダは、オフセットを導出するためにデブロック後ピクセル（post-deblocked pixels）を使用するように構成される。図４Ａを参照すると、デブロック前画像の例は、デブロックフィルタ処理７２によってデブロックフィルタ処理される前の加算器６２からの再構成画像出力である。デブロック後画像の一例は、デブロックフィルタ処理された後のデブロックフィルタ処理７２からのザ（the）画像出力である。ただし、ブロックの下側の境界とブロックの右側の境界に対してデブロッキングを実行するために、ビデオエンコーダ２０は、右側の隣接ブロックと下側の隣接ブロックとをどのように符号化したのかを決定しておく必要がある。本開示の技法によれば、ビデオエンコーダ２０は、ブロックについてデブロック前ピクセルのみを分析することによって、またはブロックの上側および左側の境界についてデブロックピクセルを分析するが、ブロックの右側および下側の境界についてデブロック前ピクセル（たとえば、デブロックフィルタ処理されているピクセル）のみを分析することによってどのＳＡＯ情報をブロックに使用すべきかを決定し得る。デブロック前ピクセルを使用してオフセット値を導出するビデオエンコーダ２０を構成することは、ハードウェアパイプライン構造内の依存問題を改善し得る。
【００６３】
[0068]本開示の別の技法によれば、バンドタイプのＳＡＯについて、ビデオエンコーダ２０は、簡略化されたバンドオフセット中心導出（center derivation）を実行し得る。一般に、バンドオフセットの中心を決定するとき、ビデオエンコーダは、すべての可能な中心値（すなわち、３２個の位置）に対して完全なＲＤ分析を実行する。本開示の技法によれば、ビデオエンコーダ２０は、バンドオフセット中心（すなわち、ヒストグラム中心）を導出するためにヒストグラムを使用し得る。ビデオエンコーダ２０はまた、ヒストグラム形状、たとえば、尖鋭（peakedness）（尖度（kurtosis））に応じて、４つの隣接するバンドの中からバンドのサブセットのバンドオフセット値を決定し得る。
【００６４】
[0069]本開示はまた、オフセット導出の数を低減する、すなわち、ｂｏｆｆｓｅｔ0〜3およびｅｏｆｆｓｅｔ-2〜2についてテストされる異なる値の数を低減するための技法をもたらす。ビデオエンコーダ２０は、１つまたは複数の簡略化（simplifications）を使用することによってＳＡＯ情報を決定するために必要なオフセット導出の数を低減するように構成され得る。
【００６５】
[0070]一例によれば、ビデオエンコーダ２０は、しきい値ベースの通常オフセット早期終了を実行するように構成され得る。ＳＡＯでは、一般に、ビデオエンコーダは、現在のＬＣＵのためのオフセットを導出し、導出されたオフセットをＳＡＯマージ（左／上マージ）コストと比較し、より望ましいＲＤトレードオフを与えるオフセット情報（すなわち導出するかまたはマージかのいずれか）を選定する。ただし、多くの場合、（たとえば、隣接ブロックと同じＳＡＯ情報を使用する）マージモードが、しばしば（frequently）、新しいＳＡＯ情報を導出するよりも良いＲＤトレードオフをもたらす（produce）。多くの事例では、隣接ブロックのオフセット情報を使用すべきか否かの決定は、隣接ＳＡＯ情報のＲＤトレードオフを新たに導出されたＳＡＯ情報のＲＤトレードオフと比較することなしに行うことが可能であり得る。本開示の技法によれば、ビデオエンコーダ２０は、早期マージ終了のしきい値でトレーニングされ得る。しきい値は、たとえば、隣接ブロックのＳＡＯ情報が復号ビデオデータの品質をどれくらい改善するのか、または復号されたビデオが元のビデオにどれくらい似ているのかに基づき得る。隣接ブロックのＳＡＯ情報がそのしきい値を超える場合、ビデオエンコーダ２０は、導出されたＳＡＯオフセット情報を検査することをスキップし、代わりに、ＳＡＯマージモードを使用し得、すなわち、ここで、左側または上側のネイバーＬＣＵからのＳＡＯ情報が現在のＬＣＵのために使用される。しきい値トレーニングは、マージコストと通常オフセットコストとに関する前のフレームの統計値を使用して実行され得る。この文脈において、コストは、ひずみのある低減（a certain reduction in distortion）を達成するために必要なレートの上昇分の量を指すことがある。
【００６６】
[0071]本開示の技法によれば、ビデオエンコーダ２０はまた、しきい値ベースのマージ早期終了を実行するように構成され得る。通常オフセットに対応する現在のコストがすでに十分に良好（already good enough）である場合、ビデオエンコーダ２０は、マージ計算をスキップし得る。このしきい値トレーニングは、マージコストと通常オフセットコストとに関する１つまたは複数の前のフレームの統計値を使用して行われ得る。
【００６７】
[0072]本開示の別の技法によれば、ビデオエンコーダ２０は、Ｍ個のＬＣＵごとに強制マージを実行するように構成され得、ここで、Ｍは、所定の数のＬＣＵ’ｓである。ビデオエンコーダ２０は、Ｍ個のＬＣＵごとにマージモードを使用するように構成され得、したがって、ビデオエンコーダ２０は、ＬＣＵひとつひとつに新しいオフセットを導出する（すなわち、ＬＣＵごとに（for every other LCUs）マージを使用することを強いる）必要がない。
【００６８】
[0073]図４Ａは、本開示で説明する技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。特に、ビデオエンコーダ２０は、ビデオデータのブロックについてのＳＡＯ情報を決定するために本開示の技法を実装し得、ビデオエンコーダ２０は、符号化ビットストリーム中に、決定されたＳＡＯ情報を示すシンタックス情報を含め得る。
【００６９】
[0074]ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測（Ｐモード）または双予測（Ｂモード）などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
【００７０】
[0075]図４Ａの例では、ビデオエンコーダ２０は、区分ユニット３５と、予測処理ユニット４１と、加算器５０と、変換処理ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６と、復号ピクチャバッファ（ＤＰＢ）７８とを含む。予測処理ユニット４１は、動き推定ユニット４２と、動き補償ユニット４４と、イントラ予測処理ユニット４６とを含む。ビデオブロックの再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換処理ユニット６０と、加算器６２と、デブロッキングフィルタ７２と、ＳＡＯユニット７４とを含む。デブロッキングフィルタ７２とＳＡＯユニット７４とはループ内フィルタであるものとして図４Ａに示しているが、他の構成では、デブロッキングフィルタ７２とＳＡＯユニット７４とはループ後フィルタとして実装され得る。
【００７１】
[0076]図４Ａに示すように、ビデオエンコーダ２０はビデオデータを受信し、受信されたビデオデータをビデオデータメモリ３３に記憶する。ビデオデータメモリ３３は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ３３に記憶されたビデオデータは、たとえば、ビデオソース１８から取得され得る。ＤＰＢ７８は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ３３およびＤＰＢ７８は、同期ＤＲＡＭ（ＳＤＲＡＭ）を含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗性ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ３３およびＤＰＢ７８は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ３３は、ビデオエンコーダ２０の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【００７２】
[0077]区分ユニット３５は、ビデオデータメモリ３３からビデオデータを取り出し、たとえば、インター／イントラコーディングモード選択プロセスの一部として、ビデオブロックにデータを区分する。この区分はまた、たとえば、ＬＣＵおよびＣＵの４分木構造に従って、スライス、タイル、または他のより大きいユニットへの区分、アズウェルズアズビデオブロック区分を含み得る。ビデオエンコーダ２０は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに（および、場合によっては、タイルと呼ばれるビデオブロックのセットに）分割され得る。予測処理ユニット４１は、誤差結果（たとえばコーディングレートおよびひずみレベル）に基づいて現在のビデオブロックについて、複数のイントラコーディングモードのうちの１つ、または複数のインターコーディングモードのうちの１つなど、複数の可能なコーディングモードのうちの１つを選択し得る。予測処理ユニット４１は、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器５０に与え、参照ピクチャとして使用するための符号化されたブロックを再構築するために加算器６２に与え得る。
【００７３】
[0078]予測処理ユニット４１内のイントラ予測処理ユニット４６は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット４１内の動き推定ユニット４２および動き補償ユニット４４は、時間的圧縮を行うために、１つまたは複数の参照ピクチャ中の１つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測コーディングを実行する。
【００７４】
[0079]動き推定ユニット４２は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、ＰスライスまたはＢとしてシーケンス中のビデオスライスを指定し得る。動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、動き推定ユニット４２によって実行され、動きベクトルを生成する処理であり、ビデオブロックに対する動きを推定する。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。
【００７５】
[0080]予測ブロックは、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックのＰＵにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ２０は、ＤＰＢ７８に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ２０は、参照ピクチャの１／４ピクセル位置、１／８ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、フルピクセル位置と分数ピクセル位置とに対して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【００７６】
[0081]動き推定ユニット４２は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのＰＵのための動きベクトルを計算する。参照ピクチャは、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得、それらの参照ピクチャリストの各々は、７８に記憶された１つまたは複数の参照ピクチャを識別する。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。
【００７７】
[0082]動き補償ユニット４４によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によっては、サブピクセル精度への補間を実行することを伴い得る。現在のビデオブロックのＰＵのための動きベクトルを受信すると、動き補償ユニット４４は、動きベクトルが参照ピクチャリストのうちの１つにおいてそれを指す予測的ブロックの位置を特定し得る。ビデオエンコーダ２０は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器５０は、この減算演算を実行する１つまたは複数の構成要素を表す。動き補償ユニット４４はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ３０によって使用するための、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【００７８】
[0083]イントラ予測処理ユニット４６は、上記で説明したように、動き推定ユニット４２と動き補償ユニット４４とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測処理ユニット４６は、現在のブロックを符号化するために使用するイントラ予測モードを決定し得る。いくつかの例では、イントラ予測処理ユニット４６は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測処理ユニット４６は、テストされたモードから使用するために適切なイントラ予測モードを選択し得る。たとえば、イントラ予測処理ユニット４６は、様々なテストされたイントラ予測モードにＲＤ分析を使用してＲＤ値を計算し、テストされたモードの中で最良のまたは望ましいＲＤ特性を有するイントラ予測モードを選択し得る。ＲＤ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ（または誤差）の量、ならびに符号化ブロックを生成するために使用されたビットレート（すなわち、いくつかのビット）を決定する。イントラ予測処理ユニット４６は、どのイントラ予測モードがブロックについて最良のまたは望ましいＲＤ値を示すのかを決定するために、様々な符号化ブロックのひずみおよびレートから比を計算し得る。
【００７９】
[0084]いずれの場合も、ブロックのためのイントラ予測モードを選択した後に、イントラ予測処理ユニット４６は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット５６に与え得る。エントロピー符号化ユニット５６は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ２０は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル（コードワードマッピングテーブルとも呼ばれる）と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを、送信されるビットストリームに含め得る。
【００８０】
[0085]予測処理ユニット４１が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ２０は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック中の残差ビデオデータは、１つまたは複数のＴＵ中に含まれ、変換処理ユニット５２に適用され得る。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ：discrete cosine transform）または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット５２は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
【００８１】
[0086]変換処理ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット５４は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット５６が走査を実行し得る。
【００８２】
[0087]量子化に続いて、エントロピー符号化ユニット５６は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット５６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディングあるいは別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット５６によるエントロピー符号化の後に、符号化ビットストリームはビデオデコーダ３０に送信されるか、あるいはビデオデコーダ３０が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット５６はまた、コーディングされている現在のビデオスライスのための、動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
【００８３】
[0088]逆量子化ユニット５８および逆変換処理ユニット６０は、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット４４は、残差ブロックを参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構築された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するためのサブ整数ピクセル値を計算し得る。加算器６２は、ＤＰＢ７８に記憶するための参照ブロックを生成するために、再構築された残差ブロックを動き補償ユニット４４によって生成された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット４２および動き補償ユニット４４によって参照ブロックとして使用され得る。
【００８４】
[0089]ＤＰＢ７８への記憶より前に、再構成された残差ブロックは、１つまたは複数のフィルタによってフィルタ処理され得る。所望される場合、ブロッキネスアーティファクトを除去するために、再構成された残差ブロックをフィルタ処理するために、デブロッキングフィルタ７２も適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、（コーディングループ中またはコーディングループ後のいずれかの）適応ループフィルタなどの他のループフィルタも使用され得る。参照ブロックは、デブロッキングフィルタ７２とＳＡＯユニット７４とのうちの１つまたは複数によってフィルタ処理された後に、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット４２と動き補償ユニット４４とによって参照ブロックとして使用され得る。
【００８５】
[0090]ＳＡＯユニット７４は、ビデオコーディング品質を改善する様式で、ＳＡＯフィルタ処理のためのオフセット値を決定することができる。ビデオコーディング品質を改善することは、たとえば、再構成された画像が元の画像とより厳密に一致するようにするオフセット値を決定することを伴い得る。ビデオエンコーダ２０は、たとえば、異なるＳＡＯタイプおよび異なるオフセット値をもつ複数のパスを使用してビデオデータをコーディングし、所望のＲＤトレードオフに基づいて決定されるような、最良のコーディング品質をもたらすＳＡＯタイプおよびオフセット値を、符号化ビットストリーム中に含めるために選定し得る。
【００８６】
[0091]いくつかの構成では、ＳＡＯユニット７４は、上記で説明したように、２つのタイプのオフセット（たとえば、バンドオフセットおよびエッジオフセット）を適用するように構成され得る。ＳＡＯユニット７４はまた、時々オフセットを適用しないことがあり、このこと自体が、第３のタイプのオフセットと考えられ得る。ＳＡＯユニット７４によって適用されるオフセットのタイプは、ビデオデコーダに明示的あるいは暗黙的にシグナリングされ得る。エッジオフセットを適用するとき、ピクセルは、図２Ａ〜図２Ｄによるエッジ情報に基づいて分類され得、オフセット値は、エッジ分類に基づいて決定され得る。バンドベースのオフセットを適用するとき、ＳＡＯユニット７４は、強度値などのピクセル値に基づいてピクセルを異なるバンドに分類することができ、各バンドは関連するオフセットを有する。
【００８７】
[0092]図４Ｂは、本開示で説明する技法を実装し得る例示的なビデオエンコーダ２１の代替ビューを示すブロック図である。図４Ｂは、典型的なＨＥＶＣビデオエンコーダを表す。ビデオエンコーダ２１は、一般コーダ制御ユニット１４０と、動き推定ユニット１４２と、動き補償ユニット１４４と、イントラピクチャ推定ユニット１４５と、イントラピクチャ予測処理ユニット１４６と、変換スケーリングおよび量子化ユニット１５２／１５４と、スケーリングおよび逆変換ユニット１５８／１６０と、フィルタ制御分析ユニット１７０と、デブロッキングおよびＳＡＯフィルタ１７２／１７４と、復号ピクチャバッファ１７８と、ヘッダフォーマッティングおよびＣＡＢＡＣユニット１８０とを含む。これらの構成要素の各々は、概して、図４Ａ中でそれの同様の番号が付けられた均等物と同じ機能を実行する。たとえば、動き推定ユニット１４２は、概して、図４Ａ中の動き推定ユニット４２と同じ機能を実行し、変換スケーリングおよび量子化ユニット１５２／１５４は、概して、変換処理ユニット５２および量子化ユニット５４と同じ機能を実行する。
【００８８】
[0093]一般コーダ制御ユニット１４０は、ビデオエンコーダ２１がビデオデータをどのように符号化すべきかについての様々なパラメータを選択し、維持する。たとえば、一般コーダ制御ユニット１４０は、それに（to which）従ってビデオデータをコーディングすべきＨＥＶＣ規格のプロファイル、ティア、およびレベルを選択し得る。一般コーダ制御ユニット１４０はまた、たとえば、ビットレートおよび所望のＲＤレベルを確立し、維持し得る。
【００８９】
[0094]ビデオエンコーダ２１は、入力ビデオ信号をビデオブロック（たとえば、ＣＴＵ）に区分し、それらのＣＴＵを動き推定ユニット１４２とイントラピクチャ推定ユニット１４５とに送る。動き推定ユニット１４２は、ビデオシーケンスの所定のパターンに従ってビデオのブロックのためのインター予測モードを決定するように構成され得る。イントラピクチャ推定ユニット１４５は、ビデオデータのブロックのイントラ予測モードを決定するように構成され得る。ビデオエンコーダ２１は、ビデオデータのブロックをコーディングするためにイントラ予測モードまたはインター予測モードのうちの１つを選択する。選択されたイントラ予測データまたは動きデータは、ヘッダフォーマッティングおよびＣＡＢＡＣユニット１８０に送られ、これは、符号化ビットストリームに含めるためにデータをエントロピー符号化し得る。
【００９０】
[0095]加算器１５０において、ビデオエンコーダ２１は、元のブロックから、決定された動きデータまたはイントラ予測データを使用して識別される予測ブロックを減算することによって残差データを決定する。変換、スケーリング、および量子化ユニット１５２／１５４は、ＤＣＴなどの変換または概念的に同様の変換を使用して残差ビデオデータを残差変換係数に変換し、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。変換、スケーリング、および量子化ユニット１５２／１５４はまた、データをさらに圧縮するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。変換、スケーリング、および量子化ユニット１５２／１５４は、量子化変換係数をヘッダフォーマッティングおよびＣＡＢＡＣユニット１８０に送り、これは、符号化ビットストリームに含めるために量子化変換係数をエントロピー符号化し得る。
【００９１】
[0096]ビデオエンコーダ２１はまた、様々な符号化仮説のために達成されるビデオ符号化の品質を決定するための復号ループを含み得る。復号ループでは、スケーリングおよび逆変換ユニット１５８／１６０は、ピクセル領域において残差ブロックを再構成するために逆量子化および逆変換を適用する。加算器１６２は、再構成ブロックを決定するために動き補償ユニット１４４のイントラピクチャ予測処理ユニット１４６のいずれかによって発見された予測ブロックに再構成された残差ブロックを加算する。
【００９２】
[0097]フィルタ制御分析ユニット１７０は、再構成ブロックをフィルタ処理するために使用されるべき、任意のＳＡＯ情報を含むフィルタ情報を決定する。フィルタ制御分析ユニット１７０は、決定されたフィルタ情報をヘッダフォーマッティングおよびＣＡＢＡＣユニット１８０に送り、これは、符号化ビットストリームに含めるためにフィルタ情報をエントロピー符号化し得る。デブロッキングおよびＳＡＯフィルタ１７２／１７４はまた、ブロッキネスアーティファクト（blockiness artifacts）を除去し、場合によってはビデオ品質を改善するために再構成ブロックに、フィルタ制御分析ユニット１７０によって決定されたフィルタ情報に基づいて、１つまたは複数のフィルタを適用し得る。複数のコーディングパスを実行することの一部として、フィルタ制御分析ユニット１７０は、フィルタ情報の複数の異なるセットを導出し得、デブロッキングおよびＳＡＯフィルタ１７２／１７４は、ブロックをコーディングするために異なるセットのフィルタ情報のうちのどのフィルタ情報を使用すべきかを決定することの一部として、導出されたフィルタ情報を使用して再構成ブロックをフィルタ処理し得る。
【００９３】
[0098]ＤＰＢ１７８中での記憶の前に、デブロッキングおよびＳＡＯフィルタ１７２／１７４は、決定されたフィルタ情報を使用して再構成ブロックをフィルタ処理し得る。したがって、ビデオデータの将来のブロックをコーディングするとき、イントラピクチャ推定ユニット１４５と動き推定ユニット１４２とは、ビデオデコーダが予測ブロックの位置を特定するために使用するのと同じブロックであるフィルタ処理され、再構成されたブロック中で予測ブロックを探索し得る。
【００９４】
[0099]典型的なＨＥＶＣエンコーダでは、ビデオエンコーダは、ＨＥＶＣ対応（compliant）ビットストリームを生成するためにいくつかの新しいコーディングツールを実装しなければならない。それらの新しいコーディングツールのうち、いくつかのコーディングシナリオにおいて大きいコーディング利得を視覚的および客観的にもたらし得るＳＡＯがある。妥当な（reasonable）複雑さをもつ良好なＳＡＯパラメータ符号化エンジンを設計することは重要なチャレンジである。
【００９５】
[0100]上記で紹介した技法によれば、ビデオエンコーダ２０およびビデオエンコーダ２１は、ＳＡＯタイプのセットをサポートするビデオコーディング規格に従ってビデオデータを符号化するように構成されたビデオエンコーダの例を表す。本開示では、ビデオエンコーダ２０／２１は、ビデオエンコーダ２０またはビデオエンコーダ２１のいずれかを個々に表すか、あるいはビデオエンコーダ２０とビデオエンコーダ２１との両方の特徴を組み込んだビデオエンコーダを表すものである。別段に記述がない限り、ビデオエンコーダ２０およびビデオエンコーダ２１の機能および特徴は相互排他的でない。さらに、本開示の技法は、いかなる特定のタイプのビデオエンコーダにも限定されない。ビデオエンコーダ２０とビデオエンコーダ２１とは、本開示の技法を実行し得るビデオエンコーダの２つの例であるが、ビデオエンコーダ２０とビデオエンコーダ２１とは、本明細書で説明する技法を実行し得るビデオエンコーダの唯一の実装形態ではない。
【００９６】
[0101]一例では、ピクセルデータのブロックについて、ビデオエンコーダ２０／２１は、ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行し、このサブセットはセットよりも小さい。ビデオエンコーダ２０／２１は、ＳＡＯタイプのサブセットから、ビデオデータを符号化するためのＳＡＯタイプを選択し、選択されたＳＡＯタイプに従ってビデオデータを符号化する。いくつかの例では、ＳＡＯタイプのセットは、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む。
【００９７】
[0102]いくつかの例では、ビデオエンコーダ２０／２１は、ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することを伴う第１のコーディングモードでビデオデータをコーディングし、ＳＡＯタイプのセットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを含む第２のコーディングモードでビデオデータをコーディングすること。ピクセルデータの第１のブロックについて、ビデオエンコーダ２０／２１は、ＳＡＯタイプのセットをテストするために複数のコーディングパスを実行し得、ピクセルデータの第１のブロックについて、ビデオエンコーダ２０／２１は、ピクセルデータの第１のブロックを符号化するためにＳＡＯタイプを選択し得る。ピクセルデータの別のブロックについて、ビデオエンコーダ２０／２１は、ピクセルデータの第１のブロックを符号化するために選択されたＳＡＯタイプに基づいてＳＡＯタイプのサブセット中に含むべきＳＡＯタイプを選択し得る。
【００９８】
[0103]ビデオエンコーダ２０／２１はまた、ピクセルデータのルーマブロックについて、ＳＡＯタイプのセットからの１つまたは複数のＳＡＯタイプをテストするために複数のコーディングパスを実行するように構成され得、１つまたは複数のＳＡＯタイプから、ピクセルデータのルーマブロックを符号化するＳＡＯタイプを選択すること。ビデオエンコーダ２０／２１はまた、選択されたＳＡＯタイプを使用してルーマブロックに対応するクロマブロックを符号化し得る。言い換えれば、ビデオエンコーダ２０／２１は、ルーマＳＡＯタイプを選択し、クロマのために選択されたＳＡＯタイプを使用し得る。そのような例では、ビデオエンコーダ２０／２１は、クロマブロックについてＳＡＯタイプをテストすることなしに、またはＳＡＯタイプのサブセットのみ（たとえば、マージ候補のみ）をテストした後に選択されたＳＡＯタイプを使用してクロマブロックを符号化し得る。
【００９９】
[0104]ビデオエンコーダ２０／２１はまた、ピクセルデータのブロックについて、複数のＳＡＯタイプとオフセット値とを使用してブロック中のピクセルのサブセットのコーディングをテストするために複数のコーディングパスを実行することと、コーディングパスごとに、ビデオデータの元のブロックの対応するピクセルへの加算されたオフセット値とピクセルのサブセットを比較することとを行うように構成され得る。比較に基づいて、ビデオエンコーダ２０／２１は、ブロックを符号化するためにＳＡＯタイプと関連するオフセット値とを選択する。いくつかの例では、ピクセルのサブセットは、データのブロック中のすべてのピクセルよりも少ないピクセルを含み得、および／またはブロックの境界上のピクセルを除外し得る。ピクセルのサブセットは、８つのピクセルの整数倍であり得る。
【０１００】
[0105]ビデオエンコーダ２０／２１はまた、ＳＡＯタイプのセットを使用してビデオデータの第１の部分のブロックを符号化することと、ＳＡＯタイプのサブセットのみを使用してビデオデータの第２の部分のブロックを符号化することとを行うように構成され得る。ＳＡＯタイプのサブセットは、ＳＡＯタイプのセット中のＳＡＯタイプのすべてよりも少ないＳＡＯタイプを含む。ビデオデータの第１の部分は、たとえば、ビデオデータの第１のスライスであり得、ビデオデータの第２の部分は、ビデオデータの第２のスライスであり得る。ビデオデータの第１の部分は、たとえば、ビデオデータの第１のピクチャであり得、ビデオデータの第２の部分は、ビデオデータの第２のピクチャであり得る。別の例では、ビデオデータの第１の部分は参照ピクチャであり得、ビデオデータの第２の部分は非参照ピクチャであり得る。他の例では、ビデオデータの第１の部分は、ランダムアクセスピクチャであり得る。
【０１０１】
[0106]ビデオエンコーダ２０／２１はまた、第１のブロックについてのＳＡＯ情報を決定し、第１のブロックのＳＡＯ情報を使用して第２のブロックにオフセット値を加算するように構成され得る。ビデオエンコーダ２０／２１は、対応する元のブロックへの加算されたオフセット値と第２のブロックを比較し、第２のブロックと元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、第１のブロックのＳＡＯ情報を使用して第２のブロックを符号化し得、ＳＡＯ情報導出プロセスを終了すること。第１のブロックのＳＡＯ情報を使用して第２のブロックを符号化することの一部として、ビデオエンコーダ２０／２１は、マージフラグを生成することを備える。第２のブロックと元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、ビデオエンコーダ２０／２１は、第１のブロックのＳＡＯ情報以外のＳＡＯ情報を検査する前に、ＳＡＯ情報導出プロセスを終了し得る。ビデオエンコーダ２０／２１は、１つまたは複数の以前に符号化されたブロックと１つまたは複数の対応する元のビデオブロックとの比較に基づいてしきい値を動的に決定し得る。しきい値は、１つまたは複数の以前に符号化されたブロックと１つまたは複数の対応する元のビデオブロックとの間のひずみに基づき得る。第２のブロックと元のブロックとの間の差が差のしきい値量よりも小さいことは、第２のブロックと元のブロックとの間のひずみが、１つまたは複数の以前に符号化されたブロックと１つまたは複数の対応する元のビデオブロックとの間のひずみ以下であることに対応し得る。
【０１０２】
[0107]ビデオエンコーダ２０／２１は、ピクセルデータのブロックについて、複数のＳＡＯ情報をテストするために複数のコーディングパスを実行するように構成され得る。ブロックは、デブロック前ピクセルデータを含み得る。ビデオエンコーダ２０／２１は、複数のＳＡＯ情報から、ビデオデータを符号化することについてのＳＡＯ情報を選択し得る。ピクセルデータのブロックは、ブロックの右側の境界上のおよび／またはブロックの下側の境界上のデブロック前ピクセルを含み得る。いくつかの例では、ピクセルデータのブロックはまた、ブロックの左側の境界上のおよび／またはブロックの上側の境界上のデブロック後ピクセルを含み得る。
【０１０３】
[0108]ビデオエンコーダ２０／２１は、ピクセルのブロックについて、ブロック中のピクセルのためのピクセル値の分布を決定することと、分布に基づいて中心バンドを決定することとを行うように構成され得る。ビデオエンコーダ２０／２１は、決定された中心バンドに隣接するＭ個のバンドを検査するためにバンドタイプのＳＡＯ符号化を含む複数のコーディングパスを実行し得る。分布を決定することの一部として、ビデオエンコーダ２０／２１は、ブロック中のピクセルについて、ピクセルに関連するバンドを識別し得、中心バンドを決定することの一部として、ビデオエンコーダ２０／２１は、識別することに基づいて最も頻繁に発生するバンドを決定し得る。ビデオエンコーダ２０／２１は、決定された中心バンドに隣接するＭ個のブロックを検査するためにバンドタイプのＳＡＯ符号化を含む複数のコーディングパスを実行し、Ｍ個のバンドのみを検査し得、ここで、Ｍは、バンドの総数よりも少ない。
【０１０４】
[0109]ビデオエンコーダ２０／２１はまた、ＳＡＯ符号化技法を使用して複数のブロックを符号化することと、ＳＡＯマージモードを使用してコーディングされたいくつかのブロックを追跡することとを行うように構成され得る。追跡することに基づいて、ビデオエンコーダ２０／２１は、ＳＡＯマージモードが選択される回数が最小しきい値を超えるようにＳＡＯマージモードまたは非マージモードのいずれかを使用して複数のブロックのうちのブロックをコーディングすべきかを決定し得る。たとえば、ビデオエンコーダ２０／２１は、マージモードを使用してブロックの少なくとも最小数をコーディングするためにマージモードを使用するブロックの数を制御し得る。ビデオエンコーダ２０／２１は、ＳＡＯマージモードを使用してコーディングされるべきＭ個のブロックに（out of every）少なくとも１つを選択することによってＳＡＯマージモードまたは非マージモードのいずれかを使用して複数のブロックを符号化すべきかを決定し得、ここで、Ｍは、整数値である。ＳＡＯマージモードは、左側のネイバーのマージモードまたは上側のネイバーのマージモードの一方または両方を含み得る。
【０１０５】
[0110]図５は、本開示で説明する技法による、符号化ビデオデータを復号し得る例示的なビデオデコーダ３０を示すブロック図である。ビデオデコーダ３０を、ビデオデータを受信し、復号するように構成されたビデオデコーダとして提示したが、ビデオデコーダ３０に関して説明した技法の多くは、ビデオエンコーダ２０または２１によっても実行され得ることを理解されたい。ビデオエンコーダ２０／２１は、たとえば、ビデオ復号ループを含み得、複数のコーディングパスを実行することの一部として、ビデオエンコーダ２０／２１は、ビデオデータを符号化し、次いで、符号化の品質を分析するために符号化ビデオデータを復号し得る。
【０１０６】
[0111]図５の例では、ビデオデコーダ３０は、エントロピー復号ユニット８０と、予測処理ユニット８１と、逆量子化ユニット８６と、逆変換処理ユニット８８と、加算器９０と、デブロッキングフィルタ９３と、ＳＡＯユニット９４と、参照ピクチャメモリ９２とを含む。予測処理ユニット８１は、動き補償ユニット８２と、イントラ予測ユニット８４とを含む。ビデオデコーダ３０は、いくつかの例では、図４Ａおよび図４Ｂのビデオエンコーダ２０または２１に関して上記で説明した符号化パスとは概して逆の復号パスを実行し得る。
【０１０７】
[0112]復号プロセス中に、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化ビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ３０のエントロピー復号ユニット８０は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット８０は、動きベクトルと他のシンタックス要素とを予測処理ユニット８１に転送する。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルでシンタックス要素を受信し得る。
【０１０８】
[0113]ビデオスライスがイントラコーディングされた（Ｉ）スライスとしてコーディングされるとき、予測処理ユニット８１のイントラ予測ユニット８４は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた（すなわち、Ｂ、またはＰ）スライスとしてコーディングされるとき、予測処理ユニット８１の動き補償ユニット８２は、エントロピー復号ユニット８０から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測的ブロックは、参照ピクチャリストのうちの１つの中の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、参照ピクチャメモリ９２に記憶された参照ピクチャに基づくデフォルトの構成技法を使用して参照フレームリストのリスト０およびリスト１を構成し得る。
【０１０９】
[0114]動き補償ユニット８２は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するために予測情報を使用する。たとえば、動き補償ユニット８２は、ビデオスライスのビデオブロックをコーディングするために使用されるインター予測モードと、インター予測スライスタイプ（たとえば、ＢスライスまたはＰスライス）と、スライス用の参照ピクチャリストのうちの１つまたは複数についての構成情報と、スライスの各インター符号化ビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【０１１０】
[0115]動き補償ユニット８２はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット８２は、参照ブロックのサブ整数ピクセルの補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ２０によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット８２は、受信されたシンタックス要素からビデオエンコーダ２０によって使用された補間フィルタを決定し、予測ブロックを生成するためにその補間フィルタを使用し得る。
【０１１１】
[0116]逆量子化ユニット８６は、ビットストリーム中で与えられ、エントロピー復号ユニット８０によって復号された量子化変換係数を逆量子化、すなわち、量子化解除する。逆量子化プロセスは、ビデオエンコーダ２０によって計算され、シグナリングされた量子化パラメータの使用を含み得る。ビデオエンコーダ２０は、各ビデオブロックのための量子化パラメータを決定する。ビデオエンコーダ２０からのシグナリングされた情報を使用して、量子化パラメータは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するためにビデオスライス中の各ビデオブロックについてビデオデコーダ３０によって決定され得る。逆変換処理ユニット８８は、ピクセル領域における残差ブロックを生成するために、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【０１１２】
[0117]動き補償ユニット８２が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ３０は、逆変換処理ユニット８８からの残差ブロックを動き補償ユニット８２によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器９０は、この加算演算を実行する１つまたは複数の構成要素を表す。加算器９０によって形成された復号されたビデオブロックは次いで、デブロッキングフィルタ９３およびＳＡＯユニット９４によってフィルタ処理され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ９２に記憶される。参照ピクチャメモリ９２はまた、図１のディスプレイデバイス３２などのディスプレイデバイス上での後の表示のために、復号ビデオデータを記憶する。ＳＡＯユニット９４は、上で論じられたＳＡＯユニット７４と同じフィルタ処理（たとえば、エッジオフセットおよびバンドオフセット）を適用するように構成され得る。
【０１１３】
[0118]図６〜図１３は、ビデオ符号化プロセスの一部としてＳＡＯ情報を決定するための技法を示す流れ図である。図６〜図１３の技法について、一般的なビデオエンコーダを参照しながら説明する。一般的なビデオエンコーダは、ビデオエンコーダ２０および／またはビデオエンコーダ２１の特徴を組み込み得るか、またはビデオエンコーダの異なる構成であり得る。図６〜図１３の技法を説明しやすいように別個に示したが、説明した様々な技法は部分的にあるいは完全に互いに連携して使用され得ることを理解されたい。
【０１１４】
[0119]図６の技法によれば、ビデオエンコーダは、ＳＡＯタイプのセットをサポートするビデオコーディング規格に従ってビデオデータを符号化する（２６０）。ピクセルデータのブロックについて、ビデオエンコーダは、ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行し得る（２６２）。ＳＡＯタイプのサブセットは、ＳＡＯタイプのセット、すなわち、フルセットよりも少ない、すなわち、それよりも少ないタイプを含み得る。ビデオエンコーダは、ＳＡＯタイプのサブセットから、ビデオデータを符号化すべきＳＡＯタイプを選択する（２６４）。ビデオエンコーダは、選択されたＳＡＯタイプに従ってビデオデータを符号化する（２６６）。選択されたＳＡＯタイプに従ってビデオデータをコーディングすることは得る（may）、ビデオエンコーダは、たとえば、ビデオデコーダが選択されたＳＡＯタイプを識別することができるように、符号化ビットストリーム中にシグナリング（たとえば、マージシグナリング、差分シグナリング、または直接シグナリング）を含み得る。さらに、選択されたＳＡＯタイプに従ってビデオデータを符号化することの一部として、ビデオエンコーダは、選択されたＳＡＯタイプに従ってビデオデータの再構成ブロックにオフセット値を適用し得る。ビデオエンコーダは、コーディングパスを分析することの一部として、元のブロックへの加算されたオフセット値とこのブロックを比較し得、ビデオエンコーダは、さらに、将来のフレーム中のビデオのブロックを予測する際に使用するために復号ピクチャバッファ中に加算されたオフセット値とともにブロックを記憶し得る。
【０１１５】
[0120]図７の技法によれば、ピクセルデータのルーマブロックについて、ビデオエンコーダは、ＳＡＯタイプのセットからの１つまたは複数のＳＡＯタイプをテストするために複数のコーディングパスを実行する（２７０）。ビデオエンコーダは、１つまたは複数のＳＡＯタイプから、ピクセルデータのルーマブロックを符号化すべきＳＡＯタイプを選択する（２７２）。ビデオエンコーダは、選択されたＳＡＯタイプを使用してルーマブロックに対応するクロマブロックを符号化する（２７４）。したがって、ルーマサンプルとクロマサンプルとのためのＳＡＯタイプを別個に決定するのではなく、ビデオエンコーダは、たとえば、複数のコーディングパスを実行することによってブロックのルーマサンプルのためのＳＡＯタイプを決定し、次いで、複数のコーディングパスを実行することなしに、またはクロマサンプルを符号化するために低減された数のコーディングパスを実行しながらブロックのクロマサンプルを符号化するためにその同じＳＡＯタイプを使用し得る。
【０１１６】
[0121]図８の技法によれば、ピクセルデータのブロックについて、ビデオエンコーダは、複数のＳＡＯタイプとオフセット値とを使用してブロック中のピクセルのサブセットのコーディングをテストするために複数のコーディングパスを実行する（２８０）。コーディングパスごとに、ビデオエンコーダは、ビデオデータの元のブロックの対応するピクセルへの加算されたオフセット値とピクセルのサブセットを比較する（２８２）。比較に基づいて、ビデオエンコーダは、ブロックを符号化するためにＳＡＯタイプおよび関連するオフセット値とを選択する（２８４）。したがって、コーディングパスを実行し、ブロック（たとえば、ＬＣＵ）中のすべてのピクセルのオフセット値を決定するのではなく（rather than）、ビデオエンコーダは、ピクセルのサブセットのためのオフセットのみを決定し、元のビデオデータとサブセットのみを比較することによって複雑さを低減し得る。
【０１１７】
[0122]図９の技法によれば、ビデオエンコーダは、ＳＡＯタイプのセットを使用してビデオデータの第１の部分のブロックを符号化する（２９０）。ビデオエンコーダは、ＳＡＯタイプのサブセットのみを使用してビデオデータの第２の部分のブロックを符号化する（２９２）。ＳＡＯタイプのサブセットは、ＳＡＯタイプのセット中のＳＡＯタイプのすべてよりも少ないＳＡＯタイプを含む。
【０１１８】
[0123]図１０の技法によれば、ビデオエンコーダは、第１のブロックについてのＳＡＯ情報を決定する（３００）。ビデオエンコーダは、第１のブロックのＳＡＯ情報を使用して第２のブロックにオフセット値を加算する（３０２）。ビデオエンコーダは、対応する元のブロックへの加算されたオフセット値と第２のブロックを比較する（３０４）。第２のブロックと元のブロックとの間の差が差のしきい値量よりも小さいことに応答して（３０６、YES）、ビデオエンコーダは、第１のブロックのＳＡＯ情報を使用して第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了する（３０８）。ビデオエンコーダ２０は、たとえば、第２のブロックのために特に導出されたＳＡＯ情報をテストするためにコーディングパスを実行することなしに、第１のブロック（および場合によっては他のすでにコーディングされたブロック）のＳＡＯ情報のみをテストした後にＳＡＯ情報導出プロセスを終了し得る。第２のブロックと元のブロックとの間の差が差のしきい値量よりも小さくないことに応答して（３０６、NO）、ビデオエンコーダは、第２のブロックについてのＳＡＯ情報を決定するために追加のコーディングパスを実行する（３１０）。
【０１１９】
[0124]図１１の技法によれば、ピクセルデータのブロックについて、ビデオエンコーダは、複数のＳＡＯ情報をテストするために複数のコーディングパスを実行する（３１２）。ブロックは、デブロック前ピクセルデータを備える。ビデオエンコーダは、複数のＳＡＯ情報から、ビデオデータを符号化するためのＳＡＯ情報を選択する（３１４）。デブロック前ピクセルデータ、完全デブロック前または部分デブロック前のいずれかを使用することによって、より優れた並列処理を可能にすることによって符号化速度を増加させ得るビデオエンコーダハードウェア。デブロックフィルタ処理が境界ピクセル（border pixels）のみを改変する（alters）ので、デブロック前ピクセルデータを使用してＳＡＯ情報を決定することは、高品質な（quality）ＳＡＯフィルタ処理を劇的に改変しないことがある。
【０１２０】
[0125]図１２の技法によれば、ピクセルのブロックについて、ビデオエンコーダは、ブロック中のピクセルのためのピクセル値の分布を決定する（３２０）。ビデオエンコーダは、分布に基づいて中心バンドを決定する（３２２）。ビデオエンコーダは、決定された中心バンドに隣接するＭ個のバンドを検査する（たとえば、Ｍ個のバンドに対してコーディングパスを実行する）ために、バンドタイプのＳＡＯ符号化を含む複数のコーディングパスを実行する（３２４）。この例では、Ｍは整数値である。ビデオエンコーダは、ブロックについてのＳＡＯ情報を決定するために、中心バンドと中心バンドに隣接するＭ個のバンドとで達成されるコスト（たとえば、ＲＤトレードオフ）を、他のタイプのＳＡＯ符号化（たとえば、エッジタイプのＳＡＯ）と比較し得る。したがって、ビデオエンコーダは、バンドタイプのＳＡＯ符号化中で利用可能なすべてのバンドを検査することなしにＳＡＯ情報を決定し得る。
【０１２１】
[0126]図１３の技法によれば、ビデオエンコーダは、ＳＡＯ符号化技法を使用して複数のブロックを符号化する（３３０）。ビデオエンコーダは、複数のブロックについてＳＡＯマージモードを使用してコーディングされたいくつかのブロックを追跡する（３３２）。ビデオエンコーダは、ＳＡＯマージモードが選択される回数が最小しきい値を超えるようにＳＡＯマージモードまたは非マージモードのいずれかを使用して複数のブロックのうちのブロックをコーディングすべきかを決定する（３３４）。ＳＡＯマージモードでブロックをコーディングするとき、ビデオエンコーダは、たとえば、ビデオデータの符号化ビットストリームに含めるために、ブロックについてのＳＡＯ情報をコピーすべき隣接ブロックを識別する１つまたは複数のマージフラグを生成し得る。非マージモードでブロックをコーディングするとき、ビデオエンコーダは、ＳＡＯタイプとＳＡＯオフセット値との両方を含む新しいＳＡＯ情報をシグナリングし得る。
【０１２２】
[0127]１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、または（２）信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１２３】
[0128]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含めるべきである。
【０１２４】
[0129]命令は、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、特定用途向け集積回路ＡＳＩＣ、ＦＰＧＡ、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０１２５】
[0130]本開示の技法は、ワイヤレスハンドセット、ＩＣ、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１２６】
[0131]様々な例について説明した。これらおよび他の例は添付の特許請求の範囲内に入る。
【図１】
2018511235.tif 000004
【図２Ａ】
2018511235.tif 000005
【図２Ｂ】
2018511235.tif 000006
【図２Ｃ】
2018511235.tif 000007
【図２Ｄ】
2018511235.tif 000008
【図３】
2018511235.tif 000009
【図４Ａ】
2018511235.tif 000010
【図４Ｂ】
2018511235.tif 000011
【図５】
2018511235.tif 000012
【図６】
2018511235.tif 000013
【図７】
2018511235.tif 000014
【図８】
2018511235.tif 000015
【図９】
2018511235.tif 000016
【図１０】
2018511235.tif 000017
【図１１】
2018511235.tif 000018
【図１２】
2018511235.tif 000019
【図１３】
2018511235.tif 000020
【手続補正書】
【提出日】平成29年11月20日(2017.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、前記コーディングパスの各々が、前記ＳＡＯタイプの前記サブセットの異なるＳＡＯタイプをテストし、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を備える方法。
【請求項２】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項１に記載の方法。
【請求項３】
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、請求項１に記載の方法。
【請求項４】
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
をさらに備える、請求項１に記載の方法。
【請求項５】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備え、前記方法が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化すること
をさらに備える、請求項１に記載の方法。
【請求項６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行することを備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、請求項１に記載の方法。
【請求項７】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項１に記載の方法。
【請求項８】
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
前記加算されたオフセット値をともなったビデオデータの前記第２のブロックと対応する元のブロックとを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと
をさらに備える、請求項１に記載の方法。
【請求項９】
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化することが、マージフラグを生成することを備える、請求項８に記載の方法。
【請求項１０】
前記ＳＡＯ情報導出プロセスを終了することが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを備える、請求項８に記載の方法。
【請求項１１】
ビデオデータを符号化するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、前記コーディングパスの各々が、前記ＳＡＯタイプの前記サブセットの異なるＳＡＯタイプをテストし、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行うように構成された、デバイス。
【請求項１２】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項１１に記載のデバイス。
【請求項１３】
前記１つまたは複数のプロセッサが、
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
を行うようにさらに構成された、請求項１１に記載のデバイス。
【請求項１４】
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
を行うようにさらに構成された、請求項１１に記載のデバイス。
【請求項１５】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備える、ここにおいて、前記１つまたは複数のプロセッサが、クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化することを行うようにさらに構成された、請求項１１に記載のデバイス。
【請求項１６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するために、前記１つまたは複数のプロセッサが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行すること、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、を行うようにさらに構成された、請求項１１に記載のデバイス。
【請求項１７】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項１１に記載のデバイス。
【請求項１８】
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
前記加算されたオフセット値をともなったビデオデータの前記第２のブロックと対応する元のブロックとを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと、
を行うようにさらに構成された、請求項１１に記載のデバイス。
【請求項１９】
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化するために、前記１つまたは複数のプロセッサが、マージフラグを生成することを行うようにさらに構成された、請求項１８に記載のデバイス。
【請求項２０】
前記ＳＡＯ情報導出プロセスを終了するために、前記１つまたは複数のプロセッサが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを行うようにさらに構成された、請求項１８に記載のデバイス。
【請求項２１】
前記デバイスが、
集積回路、
マイクロプロセッサ、または
前記ビデオデータを取得するように構成されたカメラを備えるワイヤレス通信デバイス
のうちの少なくとも１つを備える、請求項１１に記載のデバイス。
【請求項２２】
ビデオデータを符号化するための装置であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化するための手段と、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行するための手段と、前記コーディングパスの各々が、前記ＳＡＯタイプの前記サブセットの異なるＳＡＯタイプをテストし、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択するための手段と、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成するための手段と
を備える装置。
【請求項２３】
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、請求項２２に記載の装置。
【請求項２４】
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングするための手段と、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングするための手段と、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、請求項２２に記載の装置。
【請求項２５】
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについてＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行するための手段と、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択するための手段と、
前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択するための手段と
をさらに備える、請求項２２に記載の装置。
【請求項２６】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行するための手段を備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択するための前記手段が、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択するための手段を備え、前記装置が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化するための手段
をさらに備える、請求項２２に記載の装置。
【請求項２７】
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行するための手段を備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、請求項２２に記載の装置。
【請求項２８】
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、請求項２２に記載の装置。
【請求項２９】
ビデオデータの前記第１のブロックのオフセット値を決定するための手段と、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算するための手段と、
前記加算されたオフセット値をともなったビデオデータの前記第２のブロックと対応する元のブロックとを比較するための手段と、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了するための手段と
をさらに備える、請求項２２に記載の装置。
【請求項３０】
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、前記コーディングパスの各々が、前記ＳＡＯタイプの前記サブセットの異なるＳＡＯタイプをテストし、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１２６
【補正方法】変更
【補正の内容】
【０１２６】
[0131]様々な例について説明した。これらおよび他の例は添付の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを符号化する方法であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を備える方法。
［Ｃ２］
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、Ｃ１に記載の方法。
［Ｃ３］
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、Ｃ１に記載の方法。
［Ｃ４］
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ５］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備え、前記方法が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化すること
をさらに備える、Ｃ１に記載の方法。
［Ｃ６］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行することを備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、Ｃ１に記載の方法。
［Ｃ７］
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、Ｃ１に記載の方法。
［Ｃ８］
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ９］
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化することが、マージフラグを生成することを備える、Ｃ８に記載の方法。
［Ｃ１０］
前記ＳＡＯ情報導出プロセスを終了することが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを備える、Ｃ８に記載の方法。
［Ｃ１１］
ビデオデータを符号化するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
１つまたは複数のプロセッサとを備え、前記１つまたは複数のプロセッサが、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行うように構成された、デバイス。
［Ｃ１２］
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、Ｃ１０に記載のデバイス。
［Ｃ１３］
前記１つまたは複数のプロセッサが、
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングすることと、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングすることと、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
を行うようにさらに構成された、Ｃ１０に記載のデバイス。
［Ｃ１４］
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについて、ＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行することと、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択することと、
ビデオデータの前記第１のブロックについて、前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択することと
を行うようにさらに構成された、Ｃ１０に記載のデバイス。
［Ｃ１５］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することが、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行することを備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択することが、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択することを備える、ここにおいて、前記１つまたは複数のプロセッサが、クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化することを行うようにさらに構成された、Ｃ１０に記載のデバイス。
［Ｃ１６］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するために、前記１つまたは複数のプロセッサが、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行すること、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、を行うようにさらに構成された、Ｃ１０に記載のデバイス。
［Ｃ１７］
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、Ｃ１０に記載のデバイス。
［Ｃ１８］
前記１つまたは複数のプロセッサが、
ビデオデータの前記第１のブロックのオフセット値を決定することと、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算することと、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較することと、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了することと、
を行うようにさらに構成された、Ｃ１０に記載のデバイス。
［Ｃ１９］
前記第１のブロックの前記ＳＡＯ情報を使用して前記第２のブロックを符号化するために、前記１つまたは複数のプロセッサが、マージフラグを生成することを行うようにさらに構成された、Ｃ１８に記載のデバイス。
［Ｃ２０］
前記ＳＡＯ情報導出プロセスを終了するために、前記１つまたは複数のプロセッサが、前記第１のブロックの前記ＳＡＯ情報以外のＳＡＯ情報を検査する前に、前記ＳＡＯ情報導出プロセスを終了することを行うようにさらに構成された、Ｃ１８に記載のデバイス。
［Ｃ２１］
前記デバイスが、
集積回路、
マイクロプロセッサ、または
前記ビデオデータを取得するように構成されたカメラを備えるワイヤレス通信デバイス
のうちの少なくとも１つを備える、Ｃ１１に記載のデバイス。
［Ｃ２２］
ビデオデータを符号化するための装置であって、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化するための手段と、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行するための手段と、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択するための手段と、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成するための手段と
を備える装置。
［Ｃ２３］
ＳＡＯタイプの前記セットが、バンドオフセットタイプと、第１のエッジオフセットタイプと、第２のエッジオフセットタイプと、第３のエッジオフセットタイプと、第４のエッジオフセットタイプとを含む、Ｃ２２に記載の装置。
［Ｃ２４］
第１のコーディングモードで前記ビデオデータの追加のブロックの第１のセットをコーディングするための手段と、ここにおいて、前記第１のコーディングモードが、前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行することを備える、
第２のコーディングモードで前記ビデオデータの追加のブロックの第２のセットをコーディングするための手段と、ここにおいて、前記第２のコーディングモードが、ＳＡＯタイプの前記セットのすべてのＳＡＯタイプをテストするために複数のコーディングパスを実行することを備える、
をさらに備える、Ｃ２２に記載の装置。
［Ｃ２５］
ビデオデータの前記第１のブロックより前に符号化されるビデオデータのブロックについてＳＡＯタイプの前記セットをテストするために複数のコーディングパスを実行するための手段と、
ビデオデータの前記第１のブロックより前に符号化されるビデオデータの前記ブロックのためのＳＡＯタイプを選択するための手段と、
前記第１のブロックより前に符号化されるビデオデータの前記ブロックを符号化するために選択された前記ＳＡＯタイプに基づいて前記ＳＡＯタイプの前記サブセット中に含むべき前記ＳＡＯタイプを選択するための手段と
をさらに備える、Ｃ２２に記載の装置。
［Ｃ２６］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ピクセルデータのルーマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするために前記複数のコーディングパスを実行するための手段を備え、ＳＡＯタイプの前記サブセットから、前記ビデオデータを符号化すべき前記ＳＡＯタイプを選択するための前記手段が、ビデオデータの前記ルーマブロックを符号化すべき前記ＳＡＯタイプを選択するための手段を備え、前記装置が、
クロマブロックについてＳＡＯタイプの前記セットからの前記１つまたは複数のＳＡＯタイプをテストするためにコーディングパスを実行することなしに前記選択されたＳＡＯタイプを使用して前記ルーマブロックに対応する前記クロマブロックを符号化するための手段
をさらに備える、Ｃ２２に記載の装置。
［Ｃ２７］
ビデオデータの前記第１のブロックについて前記ＳＡＯタイプの前記サブセットをテストするために前記複数のコーディングパスを実行するための前記手段が、前記ブロック中のピクセルのサブセットのコーディングをテストするために前記コーディングパスを実行するための手段を備え、ここにおいて、ピクセルの前記サブセットが、データの前記ブロック中のすべてのピクセルよりも少ないピクセルを備える、Ｃ２２に記載の装置。
［Ｃ２８］
ビデオデータの前記ブロックが、デブロックフィルタ処理されていないピクセルデータを備える、Ｃ２２に記載の装置。
［Ｃ２９］
ビデオデータの前記第１のブロックのオフセット値を決定するための手段と、
ビデオデータの前記第１のブロックのために決定された前記ＳＡＯタイプを使用してビデオデータの第２のブロックに前記オフセット値を加算するための手段と、
対応する元のブロックへの前記加算されたオフセット値とビデオデータの前記第２のブロックを比較するための手段と、
ビデオデータの前記第２のブロックとビデオデータの前記対応する元のブロックとの間の差が差のしきい値量よりも小さいことに応答して、前記第１のブロックのために決定された前記オフセットタイプと前記オフセット値とを使用してビデオデータの前記第２のブロックを符号化し、ＳＡＯ情報導出プロセスを終了するための手段と
をさらに備える、Ｃ２２に記載の装置。
［Ｃ３０］
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
サンプル適応オフセット（ＳＡＯ）タイプのセットに従ってビデオデータを符号化することと、
ビデオデータの第１のブロックについて前記ＳＡＯタイプのサブセットをテストするために複数のコーディングパスを実行することと、ここにおいて、前記サブセットが、前記セットよりも小さい、
ＳＡＯタイプの前記サブセットから、ビデオデータの前記第１のブロックのためのＳＡＯタイプを選択することと、
符号化ビットストリームに含めるために、前記第１のブロックのための前記選択されたＳＡＯタイプを識別するための情報を生成することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
【国際調査報告】
2018511235.tif 000021
2018511235.tif 000022
2018511235.tif 000023