(57)【要約】  本明細書では、メッシュベースの計算を使用した低複雑な順変換のためのシステムおよび方法について説明する。本開示で説明する主題の一態様は、ビデオ情報を記憶するように構成されたメモリを備えるビデオエンコーダを提供する。ビデオエンコーダは、メモリと通信しているプロセッサをさらに備える。プロセッサは、変換を複数の変換段階に分解することを行うように構成される。プロセッサは、各変換段階における変換段階出力を決定するために複数の段階を使用してビデオ情報を変換することを行うようにさらに構成される。プロセッサは、各変換段階における変換段階出力を所定のビット深度に制約することを行うようにさらに構成される。プロセッサは、複数の段階の最後の段階の制約された変換出力に対して演算を実行すること、ここにおいて、演算が、所定のビット深度を有するデータとともに使用するためにのみ利用可能である、を行うようにさらに構成される。
2017514353.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ情報を記憶するように構成されたメモリと、
前記メモリと通信しているプロセッサであって、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を行うように構成されたプロセッサと
を備える、ビデオエンコーダ。
【請求項２】
前記プロセッサが、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項３】
前記プロセッサは、クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項４】
前記所定のビット深度が１６ビットである、請求項１に記載のビデオエンコーダ。
【請求項５】
前記プロセッサが、前記制約された変換段階出力と前記変換段階出力との間の偏差を決定するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項６】
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、請求項５に記載のビデオエンコーダ。
【請求項７】
前記プロセッサは、前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算するようにさらに構成された、請求項５に記載のビデオエンコーダ。
【請求項８】
前記プロセッサが、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換するようにさらに構成された、請求項７に記載のビデオエンコーダ。
【請求項９】
ビデオを符号化する方法であって、
ビデオ情報を記憶することと、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を備える方法。
【請求項１０】
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することをさらに備える、請求項９に記載の方法。
【請求項１１】
クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約することをさらに備える、請求項９に記載の方法。
【請求項１２】
前記所定のビット深度が１６ビットである、請求項９に記載の方法。
【請求項１３】
前記制約された変換段階出力と前記変換段階出力との間の偏差を決定することをさらに備える、請求項９に記載の方法。
【請求項１４】
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、請求項１３に記載の方法。
【請求項１５】
前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算することをさらに備える、請求項１３に記載の方法。
【請求項１６】
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換することをさらに備える、請求項１５に記載の方法。
【請求項１７】
実行されたとき、装置に、
ビデオ情報を記憶することと、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を行わせるコードを備える、非一時的コンピュータ可読媒体。
【請求項１８】
実行されたとき、前記装置に、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することを行わせるコードをさらに備える、請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
実行されたとき、前記装置に、クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約することを行わせるコードをさらに備える、請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
実行されたとき、前記装置に、前記制約された変換段階出力と前記変換段階出力との間の偏差を決定することを行わせるコードをさらに備える、請求項１７に記載のコンピュータ可読媒体。
【請求項２１】
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
実行されたとき、前記装置に、前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算することを行わせるコードをさらに備える、請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
実行されたとき、前記装置に、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換することを行わせるコードをさらに備える、請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
ビデオを符号化するための装置であって、
ビデオ情報を記憶するための手段と、
変換を複数の変換段階に分解するための手段と、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換するための手段と、
各変換段階における前記変換段階出力を所定のビット深度に制約するための手段と、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行するための手段と、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を備える、装置。
【請求項２５】
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するための手段をさらに備える、請求項２５に記載の装置。
【請求項２６】
クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約するための手段をさらに備える、請求項２５に記載の装置。
【請求項２７】
前記制約された変換段階出力と前記変換段階出力との間の偏差を決定するための手段をさらに備える、請求項２５に記載の装置。
【請求項２８】
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、請求項２７に記載の装置。
【請求項２９】
前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算するための手段をさらに備える、請求項２７に記載の装置。
【請求項３０】
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換するための手段をさらに備える、請求項３０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、ビデオ符号化に関する。
【背景技術】
【０００２】
[0002]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータもしくはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話もしくは衛星無線電話、スマートフォン、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、アドバンストビデオコーディング（ＡＶＣ：Advanced Video Coding）、高効率ビデオコーディング（ＨＥＶＣ）によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および／または記憶し得る。
【０００３】
[0003]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間的（ピクチャ内）予測および／または時間的（ピクチャ間）予測を含む。ブロックベースのビデオコーディングでは、ビデオスライス（たとえば、ビデオフレームまたはビデオフレームの一部分）は、ツリーブロック、コーディングユニット（ＣＵ）、および／またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ＣＵの予測ビデオデータを決定するために、ＣＵはさらに１つまたは複数の予測ユニット（ＰＵ）に区分され得る。ビデオ圧縮技法はまた、ＣＵを、コーディングされるべきビデオブロックと予測ビデオデータとの間の差を表す残差ビデオブロックデータの１つまたは複数の変換ユニット（ＴＵ）に区分し得る。２次元離散コサイン変換（ＤＣＴ）などの線形変換をＴＵに適用して残差ビデオブロックデータをピクセル領域から周波数領域に変換して、さらなる圧縮を実現し得る。さらに、ピクチャのイントラコード化（Ｉ）スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックにおける参照サンプルに対する空間的予測を使用して符号化され得る。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００４】
[0004]空間的予測または時間的予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。最初に２次元アレイで構成された量子化変換係数は、変換係数の１次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するために、エントロピー符号化が適用され得る。
【０００５】
[0005]ＡＶＣなどのより古いビデオ規格では、順変換および逆変換のサイズ（たとえば、４×４および８×８）は、ビデオ符号化のパフォーマンスのボトルネックとして作用しなかった。しかしながら、より最近のＨＥＶＣ規格は、１６×１６および３２×３２までの順方向変換サイズおよび逆変換サイズを利用し、これは、ＨＥＶＣプロセスの制限ファクタとして作用する。より大きい変換は、ピクセル領域から係数領域に変換するときに複雑さが増し、より多くのサイクルを処理することが必要になる。コーディング効率のために、規格は、ビデオエンコーダ中の大きい順変換ベクトルを複数の段階に分解するプロセス（たとえば、「メッシュベースの方法」、「バタフライ方法」または「偶数奇数分解」）と各段階において内部ビット深度を制約することとから利益を得る。本明細書で開示する技法のいくつかの利点は、ビデオエンコーダ中の大きい順変換ベクトルを複数の段階に分解し、各段階において内部ビット深度を制約することによってビデオ符号化中のコーディング効率を改善し、計算リソース要件を低減することに関する。
【発明の概要】
【０００６】
[0006]概して、本開示は、大きい順変換を複数の段階に分解し（たとえば、順変換を実装するメッシュベースの方法）、計算効率の良い命令セットを収容し得るレベルに各段階において内部ビット深度を制約することによってビデオ符号化パフォーマンスを改善することに関する技法について説明する。たとえば、変換に対する入力ビット深度は、９ビットであり得、開始内部ビット深度は、１６ビットよりも大きくなり得るが、ビデオエンコーダは、飽和論理を使用して（たとえば、内部値を１６ビットにクリッピングして）変換の内部ビット深度を１６ビットに制約するように構成され得る。ビデオ品質の損失を防ぐために、ビデオエンコーダは、偏差（たとえば、誤差）のレベルを測定し、レベルをしきい値と比較し、偏差のレベルがしきい値を超える場合、変換された係数のサブセットを再計算するようにさらに構成され得る。
【０００７】
[0007]１つまたは複数の例の詳細が以下の添付の図面および説明に記載されている。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【０００８】
[0008]本開示で説明する主題の一態様は、ビデオ情報を記憶するように構成されたメモリを備えるビデオエンコーダを提供する。ビデオエンコーダは、メモリと通信しているプロセッサをさらに備える。プロセッサは、変換を複数の変換段階に分解することを行うように構成される。プロセッサは、各変換段階における変換段階出力を決定するために複数の段階を使用してビデオ情報を変換することを行うようにさらに構成される。プロセッサは、各変換段階における変換段階出力を所定のビット深度に制約することを行うようにさらに構成される。プロセッサは、複数の段階の最後の段階の制約された変換出力に対して演算を実行すること、ここにおいて、演算が、所定のビット深度を有するデータとともに使用するためにのみ利用可能である、を行うようにさらに構成される。
【０００９】
[0009]本開示で説明する主題の別の態様は、ビデオを符号化する方法を提供する。本方法は、ビデオ情報を記憶することを含む。本方法は、変換を複数の変換段階に分解することをさらに含む。本方法は、各変換段階における変換段階出力を決定するために複数の段階を使用してビデオ情報を変換することをさらに含む。本方法は、各変換段階における変換段階出力を所定のビット深度に制約することをさらに含む。本方法は、複数の段階の最後の段階の制約された変換出力に対して演算を実行すること、ここにおいて、演算が、所定のビット深度を有するデータとともに使用するためにのみ利用可能である、をさらに含む。
【００１０】
[0010]本開示で説明する主題の別の態様は非一時的コンピュータ可読媒体を提供する。本媒体は、実行されたとき、装置に、ビデオ情報を記憶することを行わせるコードを備える。本媒体は、実行されたとき、装置に、変換を複数の変換段階に分解することを行わせるコードをさらに備える。本媒体は、実行されたとき、装置に、各変換段階における変換段階出力を決定するために複数の段階を使用してビデオ情報を変換することを行わせるコードをさらに備える。本媒体は、実行されたとき、装置に、各変換段階における変換段階出力を所定のビット深度に制約することを行わせるコードをさらに備える。本媒体は、実行されたとき、装置に、複数の段階の最後の段階の制約された変換出力に対して演算を実行すること、ここにおいて、演算が、所定のビット深度を有するデータとともに使用するためにのみ利用可能である、を行わせるコードをさらに備える。
【００１１】
[0011]本開示で説明する主題の別の態様は、ビデオを符号化するための装置を提供する。本装置は、ビデオ情報を記憶するための手段を備える。本装置は、変換を複数の変換段階に分解するための手段をさらに備える。本装置は、各変換段階における変換段階出力を決定するために複数の段階を使用してビデオ情報を変換するための手段をさらに備える。本装置は、各変換段階における変換段階出力を所定のビット深度に制約するための手段をさらに備える。本装置は、複数の段階の最後の段階の制約された変換出力に対して演算を実行するための手段、ここにおいて、演算が、所定のビット深度を有するデータとともに使用するためにのみ利用可能である、をさらに備える。
【図面の簡単な説明】
【００１２】
【図１】[0012]本開示で説明する態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。
【図２】[0013]本開示で説明する態様による技法を実装し得るビデオエンコーダの一例を示すブロック図。
【図３】[0014]本開示で説明する態様による技法を実装し得るビデオデコーダの一例を示すブロック図。
【図４】[0015]たとえば、メッシュベースの計算を使用した低複雑な順変換の方法のフローチャート。
【図５】[0016]低複雑な順変換のための方法のフローチャート。
【発明を実施するための形態】
【００１３】
[0017]図面に示す様々な特徴は一定の縮尺で描かれていないことがある。したがって、様々な特徴の寸法は、明快のために恣意的に拡大または縮小されていることがある。さらに、図面のいくつかは、所与のシステム、方法またはデバイスの構成要素のすべてを示しているとは限らないことがある。最後に、本明細書および図の全体にわたって、同様の特徴を示すために同様の参照番号が使用されることがある。
【００１４】
[0018]本開示で説明する技法は、概して、特に、高効率ビデオコーディング（ＨＥＶＣ）規格およびそれの拡張に関してビデオ符号化中の順変換に関する。
【００１５】
[0019]ビデオコーディング規格は、ＩＴＵ−Ｔ  Ｈ．２６１と、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌと、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌと、ＩＴＵ−Ｔ  Ｈ．２６３と、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌと、そのスケーラブルビデオコーディング（ＳＶＣ）拡張およびマルチビュービデオコーディング（ＭＶＣ）拡張を含む（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＴＵ−Ｔ  Ｈ．２６４とを含む。さらに、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ：Video Coding Experts Group）とＩＳＯ／ＩＥＣモーションピクチャエキスパートグループ（ＭＰＥＧ：Motion Picture Experts Group）とのジョイントコラボレーションチームオンビデオコーディング（ＪＣＴ−ＶＣ：Joint Collaboration Team on Video Coding）によって開発された新しいビデオコーディング規格、高効率ビデオコーディング（ＨＥＶＣ）がある。
【００１６】
[0020]上述のように、ＡＶＣ規格は、最大８×８変換サイズしか利用しなかったが、ＨＥＶＣ規格は、サイズが最大３２×３２の（たとえば、ＨＥＶＣエンコーダでの）順変換および逆変換を利用する。より大きい変換サイズは、ＨＥＶＣにおける大きいコードブロックのコーディング効率が増加するが、それらはまた、より小さい変換サイズを使用することと比較して複雑さ、計算サイクル、および処理時間が増加する。本開示で説明する方法は、エンコーダがピクセル領域から係数領域にビデオ情報を変換するときに必要とされる複雑さおよびサイクルの増加を低減し得る。たとえば、いくつかの方法は、ビデオエンコーダ中の大きい順変換ベクトルを複数の段階に分解することと（たとえば、メッシュベースの方法）、各段階において内部ビット深度を制約することとを含む。
【００１７】
[0021]いくつかの実装形態では、残差領域から係数領域に転換するために（たとえば、順変換を実装するメッシュベースの方法または「バタフライ」方法を使用して）大きい順変換を複数の段階に分解することは、行列乗算方法を使用するよりも効率的な処理を生じ得る。以下の付録Ａのコードに、メッシュベースのＮ×Ｎの変換の実装形態の一例を示す。一実装形態では、変換ユニット（たとえば、１６×１６の変換）は、２５６個の残差ソースピクセル（たとえば、付録ＡにおけるｐＳｒｃ）で開始し得、その各々がルーマ値を表し得る。プロセッサまたはエンコーダ（たとえば、図２のエンコーダ２０の変換処理ユニット５２）は、次いで、ソースピクセルごとに１つずつ、２５６個の出力係数（たとえば、付録ＡにおけるｐＤｓｔ）を決定し得る。第１の段階の後に、プロセッサまたはエンコーダ（たとえば、変換処理ユニット５２）は、次いで、２つのピクセルの１２８個の和と２つのピクセルの１２８個の差と（たとえば、付録ＡのｎＥのものとｎＯのものと）を決定し得る。第２の処理段階中に、プロセッサまたはエンコーダは、ペアの和と差の和とを決定するために、ｎＥとｎＯとの和および差を使用し得る。４つの段階の後に、プロセッサまたはエンコーダは、出力係数（たとえば、ｐＤｓｔ）を生成し得る。（付録Ａに示した）このメッシュベースの方法を使用して、フルサイズの変換は、いくつかのより小さい、あまり複雑でない変換に分解され得、これは、一緒に乗じられた場合、フルサイズの変換を再び生成することになる。
【００１８】
[0022]上記で説明したメッシュ方法などのメッシュ方法または任意の他の分解方法を実行した後に、本開示で説明する方法は、各段階において内部ビット深度をあるレベルに制約するようにプロセッサまたはエンコーダを構成して、プロセッサまたはエンコーダが、そのレベルのためにさらに計算効率の良い命令セットを利用することを可能にし得る。実際、いくつかのエンコーダおよびデコーダは、いくつかのビット深度を有する入力とともに使用するためにのみ利用可能である計算効率の良い命令セットを含む。たとえば、変換に対する入力ビット深度は、９ビットであり得、開始内部ビット深度は、１６ビットよりも大きくなり得るが、ビデオエンコーダは、変換の各分解された段階の内部ビット深度（たとえば、変換出力ビット深度だけではなく変換演算中のビット深度）を１６ビットに制約するように構成され得る。各段階の内部ビット深度が１６ビットに制約されるので、プロセッサは、１６ビット演算とともに使用するために特に設計された計算効率の良い命令セット（たとえば、ＡＲＭアーキテクチャ、Ａｄｖａｎｃｅｄ  ＳＩＭＤ（ＮＥＯＮ）、デジタル信号処理（ＤＳＰ）など）を利用し得る。一実装形態では、ビデオエンコーダは、飽和論理を使用して（たとえば、内部値を１６ビットにクリッピングして）各段階において内部ビット深度を制約し得る。
【００１９】
[0023]場合によっては、変換段階においてビット深度を制約することは、最終ビデオ品質の低下をもたらし得る。この結果を防ぐために、本開示で説明する方法は、制約プロセスによって生じる偏差（たとえば、誤差）のレベルを測定し得る。本方法は、次いで、偏差のレベルを所定のしきい値（たとえば、耐久限界）と比較し、次いで、偏差のレベルが所定のしきい値を超える場合、変換された係数のサブセットを再計算し得る。このようにしてビット深度を制約し、係数のサブセットを再計算することによって、本開示で説明する方法により、ビデオエンコーダの変換処理ユニットが、ビデオ品質をも保持しながら、より少ない計算リソースを使用することが可能になり得る。
【００２０】
[0024]ブロックベースの処理を使用するビデオコーデック（たとえば、ビデオフレームがビデオブロックまたはコーディングユニットに区分され得るＨＥＶＣ）では、（たとえば、インター予測またはイントラ予測からの）予測ブロックまたは予測ユニットが元のピクセルから減算され得る。上記でさらに説明したように、残差データは、次いで、順変換（たとえば、離散コサイン変換）を使用して残差変換係数に変換され、量子化され、（たとえば、さらなる圧縮を達成するために）エントロピー符号化され得る。エントロピー符号化は、以下でさらに説明する様々なエントロピーコーディングエンジン（たとえば、ＣＡＶＬＣ、ＣＡＢＡＣなど）を使用して実行され得る。その後、同じく以下でさらに説明するように、デコーダは、次いで、係数をエントロピー復号し、逆量子化し、逆変換し得る。最後に、係数は、予測ブロックに追加されて、再構成されたピクセルを形成し得る。
【００２１】
[0025]ビデオコーディングの一実施形態では、画像ブロックは、最初に、再構成された、一時的におよび／または空間的に隣接するブロック中のピクセルを使用して予測され得る。（「残余」と呼ばれることがある）予測誤差が、次いで、変換され、量子化され得る。たとえば、Ｓが、サイズがＮ×Ｎの残余ブロックである場合、変換されたブロックＫは、次のように行列乗算を使用して導出され得る。
【００２２】
【数１】
2017514353.tif 000003
【００２３】
ここで、Ｋ、Ａ、およびＢも、Ｎ×Ｎのサイズである。Ａは垂直変換行列であり、Ｂは水平変換行列である。いくつかの実施形態では、ＡおよびＢは、互いの転置である（たとえば、Ｂ＝Ａ’であり、ここで、「’」は転置を意味する）。他の実施形態では、ＡおよびＢは、互いの転置でない。ＡおよびＢが互いの転置であるとき、前の式は次のようになる。
【００２４】
【数２】
2017514353.tif 000004
【００２５】
[0026]各変換（ＡおよびＢ）は、様々な変換のいずれかを含み得る。いくつかの実施形態では、変換は、離散コサイン変換（ＤＣＴ）、離散サイン変換（ＤＳＴ）、アダマール変換、ハール変換などのうちの１つを含む。
【００２６】
[0027]ＳＶＣ拡張では、ビデオ情報の複数のレイヤがあり得る。最下層は、ベースレイヤ（ＢＬ）として働き得、最上層は、拡張レイヤ（ＥＬ）または「エンハンスメントレイヤ」として働き得る。最上層と最下層との間のすべてのレイヤは、ＥＬまたはＢＬの一方または両方として働き得る。ＳＶＣは、品質スケーラビリティ（または信号対雑音比、ＳＮＲ）、空間スケーラビリティ、および／または時間スケーラビリティを与えるために使用され得る。エンハンストレイヤは、ベースレイヤとは異なる空間解像度を有し得る。現在のブロックの予測は、ＳＶＣのために与えられる様々なレイヤを使用して実行され得る。そのような予測は、レイヤ間予測と呼ばれることがある。レイヤ間予測方法は、レイヤ間冗長性を低減するためにＳＶＣにおいて利用され得る。レイヤ間予測のいくつかの例としては、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測があり得る。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤ中のコロケートされたブロックの再構成を使用する。レイヤ間動き予測は、エンハンスメントレイヤ内の動きを予測するのにベースレイヤの動きを使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。「イントラＢＬモード」と呼ばれる、エンハンスメントレイヤのための１つの特定のコーディングモードは、ベースレイヤ中の対応する（「コロケートされた」と呼ばれる、たとえば、同じ空間的ロケーションに位置する）ブロックのテクスチャを使用して予測され得るテクスチャを含む。
【００２７】
[0028]レイヤ間残差予測では、ベースレイヤの残差は、エンハンスメントレイヤ中の現在のブロックを予測するために使用され得る。残差は、ビデオユニットの時間的予測とソースビデオユニットとの間の差分として定義され得る。残差予測では、ベースレイヤの残余はまた、現在のブロックを予測する際に考慮される。たとえば、現在のブロックは、エンハンスメントレイヤからの残余、エンハンスメントレイヤからの時間的予測、およびベースレイヤからの残余を使用して再構成され得る。現在のブロックは以下の式に従って再構成され得る。
【００２８】
【数３】
2017514353.tif 000005
【００２９】
ここで、
【００３０】
【数４】
2017514353.tif 000006
【００３１】
は現在のブロックの再構成を示し、ｒｅはエンハンスメントレイヤからの残余を示し、Ｐｅはエンハンスメントレイヤからの時間的予測を示し、ｒｂはベースレイヤからの残余予測を示す。
【００３２】
[0029]差分領域を使用したインターコーディングの場合、現在予測ブロックは、エンハンスメントレイヤ参照ピクチャ中の対応する予測ブロックサンプルと、スケーリングされたベースレイヤ参照ピクチャ中の対応する予測ブロックサンプルとの間の差分値に基づいて決定される。差分値は差分予測ブロック（difference predicted block）と呼ばれることがある。エンハンスメントレイヤ予測サンプルを取得するために、コロケートベースレイヤ再構成サンプルが差分予測ブロックに追加される。
【００３３】
[0030]本開示で説明する技法は、ＨＥＶＣにおける順変換の行列乗算中の複雑な計算要件に関する問題に対処し得る。本技法は、エンコーダおよび／または変換処理ユニットが順変換行列乗算を実行し得る速度、効率、および有効性を改善し得る。
【００３４】
[0031]添付の図面を参照しながら、新規のシステム、装置、および方法の様々な態様について、以下でより十分に説明する。ただし、本開示は、多くの異なる形態で具現化される場合があり、本開示全体にわたって提示される任意の特定の構造または機能に限定されるものと解釈されるべきではない。むしろ、本開示が、入念で完全であり、本開示の範囲を当業者に十分に伝達するように、これらの態様が提供される。本明細書の教示に基づいて、単独で実装されるか、それとも本発明の何らかの他の態様と組み合わされるかにかかわらず、本開示の範囲が本明細書で開示される新規なシステム、装置、および方法のどんな態様も包含するものとすることを当業者は理解されたい。たとえば、本明細書に記載の任意の数の態様を使用して装置が実装され得、または方法が実施され得る。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えて、またはそれ以外の、他の構造、機能、または構造および機能を使用して実施される装置または方法を包含するものとする。本明細書で開示されるすべての態様が、ある請求項の１つまたは複数の要素によって実施され得ることを理解されたい。
【００３５】
[0032]特定の態様が本明細書で説明されるが、これらの態様の多数の変形および置換が、本開示の範囲に含まれる。好適な態様のいくつかの利益および利点について説明するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、その一部が例として図面および好ましい態様の以下の説明において示される、異なるワイヤレス技術と、システム構成と、ネットワークと、伝送プロトコルとに幅広く適用可能であることが意図されている。この詳細な説明および図面は、限定的であるのではなく本開示の説明に役立つものにすぎず、本開示の範囲は、添付の特許請求の範囲とその同等物とによって定義される。
【００３６】
[0033]図１は、本開示で説明する態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。図１に示すように、ビデオ符号化および復号システム１０は、宛先デバイス１４によって後で復号されるべき符号化ビデオデータを提供するソースデバイス１２を含む。特に、ソースデバイス１２は、コンピュータ可読媒体１６を介して宛先デバイス１４にビデオデータを与える。ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット（たとえば、スマートフォン）、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス１２および宛先デバイス１４は、ワイヤレス通信のために装備され得る。
【００３７】
[0034]上述のように、宛先デバイス１４は、コンピュータ可読媒体１６を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体１６は、符号化されたビデオデータをソースデバイス１２から宛先デバイス１４に移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体１６は、ソースデバイス１２が符号化ビデオデータを宛先デバイス１４にリアルタイムで直接送信するのを可能にするための通信媒体（図示せず）を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス１４に送信され得る。通信媒体は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または（インターネットなどの）グローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス１２から宛先デバイス１４への通信を可能にするために有用であり得る任意の他の機器を含み得る。
【００３８】
[0035]いくつかの例では、符号化データは、出力インターフェース２２からストレージデバイス（図示せず）に出力され得る。同様に、符号化データは入力インターフェース２８によってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Ｂｌｕｅ−ｒａｙディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれをも含み得る。さらなる例では、ストレージデバイスは、ソースデバイス１２によって生成された符号化ビデオを記憶することができるファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ストレージデバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス１４に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバには、ウェブサーバ（たとえば、ウェブサイト用の）、ＦＴＰサーバ、ネットワークアタッチドストレージ（ＮＡＳ）デバイス、またはローカルディスクドライブがある。宛先デバイス１４は、インターネット接続を含む、任意の標準のデータ接続を通して符号化ビデオデータにアクセスし得る。データ接続は、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（たとえば、ＤＳＬ、ケーブルモデムなど）、または両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【００３９】
[0036]本開示の技法は、ワイヤレス応用またはワイヤレス設定に必ずしも制限されない。本技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、ＨＴＴＰ上の動的適応ストリーミング（ＤＡＳＨ：dynamic adaptive streaming over HTTP）などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用例など、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、ビデオテレフォニーなどの適用例のための一方向または双方向のビデオ送信をサポートするように構成され得る。
【００４０】
[0037]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。本開示によれば、ソースデバイス１２のビデオエンコーダ２０は、複数の規格または規格拡張に準拠するビデオデータを含む、ビットストリームをコーディングするための技法を適用するように構成され得る。他の例では、ソースデバイス１２および宛先デバイス１４は、他の構成要素または構成を含み得る。たとえば、ソースデバイス１２は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス１４は、内蔵ディスプレイデバイス３２ではなく、外部ディスプレイデバイスとインターフェースし得る。
【００４１】
[0038]概して、本開示の技法は、ビデオ符号化デバイスによって実行されるが、これらの技法は、通常は「コーデック」と呼ばれるビデオエンコーダ／デコーダによっても実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイス１２および宛先デバイス１４は、ソースデバイス１２が、宛先デバイス１４に送信するためのコーディングされたビデオデータを生成するコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイス１２および宛先デバイス１４は、それらがそれぞれビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、ビデオテレフォニーなどのために、ソースデバイス１２と宛先デバイス１４との間の一方向または双方向のビデオ送信をサポートし得る。
【００４２】
[0039]ソースデバイス１２のビデオソース１８は、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどのビデオキャプチャデバイス（図示せず）を含み得る。さらなる代替として、ビデオソース１８は、コンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成することができる。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１４は、カメラ付き携帯電話またはビデオ付き携帯電話であり得る。別の実施形態では、本開示で説明する技法は、ビデオコーディング全般に適用可能であり得、ワイヤレスおよび／またはワイヤード適用例に適用され得る。各々の場合において、キャプチャされたビデオ、事前にキャプチャされたビデオ、またはコンピュータで生成されたビデオは、ビデオエンコーダ２０によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース２２によってコンピュータ可読媒体１６に出力され得る。
【００４３】
[0040]コンピュータ可読媒体１６は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Ｂｌｕ−ｒａｙ（登録商標）ディスク、または他のコンピュータ可読媒体などの記憶媒体（すなわち、非一時的記憶媒体）を含み得る。いくつかの例では、ネットワークサーバ（図示せず）は、ソースデバイス１２から符号化ビデオデータを受信し、たとえば、ネットワーク送信、直接ワイヤード通信などを介して、その符号化ビデオデータを宛先デバイス１４に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス１２から符号化されたビデオデータを受信し、その符号化されたビデオデータを包含しているディスクを生成し得る。したがって、コンピュータ可読媒体１６は、様々な形態の１つまたは複数のコンピュータ可読媒体を含み得る。
【００４４】
[0041]宛先デバイス１４の入力インターフェース２８は、コンピュータ可読媒体１６から情報を受信し得る。コンピュータ可読媒体１６の情報は、ビデオエンコーダ２０によって定義されるシンタックス情報を含み得る。シンタックス情報はまた、ビデオデコーダ３０によって使用され得、これは、ブロックおよび他のコード化ユニットの特性および／または処理を記述するシンタックス要素を含み得る。ディスプレイデバイス３２は、復号されたビデオデータをユーザに表示し得、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
【００４５】
[0042]ビデオエンコーダ２０およびビデオデコーダ３０は、高効率ビデオコーディング（ＨＥＶＣ）規格またはそれの変形形態のいずれか（たとえば、ＨＥＶＣテストモデル（ＨＭ））などのビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ２０およびビデオデコーダ３０は、ＩＴＵ−Ｔ  Ｈ．２６４規格（ＭＰＥＧ−４）、Ｐａｒｔ１０、アドバンストビデオコーディング（ＡＶＣ）、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６２（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ）、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６１、またはいずれのそのような規格の拡張などの他のプロプライエタリまたは業界規格に従って動作し得る。いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、オーディオエンコーダ、オーディオデコーダ、ＭＵＸ−ＤＥＭＵＸユニット（図示せず）、または他のハードウェアおよびソフトウェアと一体化され得る。
【００４６】
[0043]ビデオエンコーダ２０およびビデオデコーダ３０は各々、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの様々な適切なエンコーダ回路のいずれかとして実装され得る。本開示の技法を実行する必要がある場合、ビデオエンコーダ２０および／またはビデオデコーダ３０は、好適な非一時的コンピュータ可読媒体中にソフトウェアの命令を記憶し、１つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つまたは複数のエンコーダまたはデコーダに含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。ビデオエンコーダ２０および／またはビデオデコーダ３０を含むデバイスは、集積回路、マイクロプロセッサ、および／またはセルフォンなどのワイヤレス通信デバイスを備え得る。
【００４７】
[0044]ＨＥＶＣ規格は、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット（ＬＣＵ）に分割され得ることを規定する。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットであるＬＣＵのサイズを定義し得る。スライスは、コーディングの順序で、いくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、１つまたは複数のスライスに区分化され得る。各ツリーブロックは、４分木に従ってコーディングユニット（ＣＵ）に分割され得る。概して、４分木データ構造はＣＵごとに１つのノードを含み、ルートノードはツリーブロックに対応する。ＣＵが４つのサブＣＵに分割される場合、ＣＵに対応するノードは、４つのリーフノードを含み、その各々は、サブＣＵの１つに対応する。
【００４８】
[0045]４分木データ構造の各ノードは、対応するＣＵのためのシンタックスデータを与え得る。たとえば、４分木内のノードは、そのノードに対応するＣＵがサブＣＵに分割されるか否かを示すスプリットフラグを含み得る。ＣＵのシンタックス要素は、再帰的に定義され得、ＣＵがサブＣＵに分割されるか否かに依存し得る。ＣＵがこれ以上分割されない場合、そのＣＵはリーフＣＵと呼ばれる。本開示では、元のリーフＣＵの明示的な分割が存在しない場合でも、リーフＣＵの４つのサブＣＵはリーフＣＵと呼ばれる。たとえば、１６×１６サイズのＣＵがさらに分割されない場合、この１６×１６ＣＵが決して分割されなくても、４つの８×８サブＣＵはリーフＣＵとも呼ばれることになる。
【００４９】
[0046]ＣＵは、ＣＵがサイズの特異性を有しないことを別にすれば、Ｈ．２６４規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、４つの子ノード（サブＣＵとも呼ばれる）に分割され得、各子ノードは、次に親ノードとなり、別の４つの子ノードに分割され得る。４分木のリーフノードと呼ばれる、最後の分割されない子ノードは、リーフＣＵとも呼ばれるコーディングノードを備える。コーディングされたビットストリームに関連するシンタックスデータは、最大ＣＵ深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット（ＳＣＵ）をも定義し得る。本開示では、ＨＥＶＣのコンテキストにおけるＣＵ、ＰＵ、またはＴＵ、あるいは他の規格のコンテキストにおける同様のデータ構造（たとえば、Ｈ．２６４／ＡＶＣにおけるマクロブロックおよびそれのサブブロック）のいずれかを指すために「ブロック」という用語を使用する。
【００５０】
[0047]ＣＵは、コーディングノードと、コーディングノードと関連付けられた予測ユニット（ＰＵ）および変換ユニット（ＴＵ）とを含む。ＣＵのサイズは、コーディングノードのサイズに対応し、形状が方形でなければならない。ＣＵのサイズは、８×８ピクセルから、いくつかの事例では、６４×６４ピクセル以上の最大値を有するツリーブロックのサイズにまで及び得る。各ＣＵは、１つまたは複数のＰＵと１つまたは複数のＴＵとを包含し得る。ＣＵに関連付けられたシンタックスデータは、たとえば、１つまたは複数のＰＵへのＣＵの区分を記述し得る。区分モードは、ＣＵがスキップモード符号化もしくは直接モード符号化されるか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかで異なり得る。ＰＵは、形状が非方形に区分され得る。ＣＵに関連するシンタックスデータはまた、たとえば、４分木に従うＣＵの１つまたは複数のＴＵへの区分を記述し得る。ＴＵは、形状が方形または非方形（たとえば、長方形）であり得る。
【００５１】
[0048]ＨＥＶＣ規格は、異なるＣＵに対しては異なり得る、ＴＵに従った変換を可能にする。ＴＵは通常、区分されたＬＣＵに対して定義される所与のＣＵ内のＰＵのサイズに基づくサイズにされるが、必ずそうであるとは限らない。ＴＵは、一般に、ＰＵと同じサイズであるか、またはそれよりも小さい。いくつかの例では、ＣＵに対応する残差サンプルは、「残差４分木」（ＲＱＴ：residual quad tree）と呼ばれる４分木構造を使用して、より小さいユニットに再分割され得る。ＲＱＴのリーフノードは、変換ユニット（ＴＵ）と呼ばれ得る。ＴＵに関連するピクセル差分値は、変換係数を生成するために変換され、その変換係数は量子化され得る。
【００５２】
[0049]リーフＣＵは、１つまたは複数の予測ユニット（ＰＵ）を含み得る。概して、ＰＵは、対応するＣＵの全部または一部分に対応する空間エリアを表し、そのＰＵの参照サンプルを取り出すためのデータを含み得る。その上、ＰＵは、予測に関係するデータを含む。たとえば、ＰＵがイントラモードで符号化されるとき、ＰＵに関するデータは、ＰＵに対応するＴＵに関するイントラ予測モードを記述するデータを含み得る残差４分木（ＲＱＴ）内に含まれ得る。別の例として、ＰＵがインターモードで符号化されるとき、ＰＵは、ＰＵのための１つまたは複数の動きベクトルを定義するデータを含み得る。ＰＵのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの分解能（たとえば、１／４ピクセル精度または１／８ピクセル精度）、動きベクトルが指す参照ピクチャ、および／または動きベクトルの参照ピクチャリスト（たとえば、リスト０、リスト１、またはリストＣ）を記述することができる。
【００５３】
[0050]１つまたは複数のＰＵを有するリーフＣＵは、１つまたは複数の変換ユニット（ＴＵ）を含み得る。変換ユニットは、上で論じられたように、ＲＱＴ（ＴＵの４分木構造とも呼ばれる）を使用して規定され得る。たとえば、分割フラグは、リーフＣＵが４つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブＴＵに、さらに分割され得る。ＴＵがこれ以上分割されないとき、そのＴＵはリーフＴＵと呼ばれ得る。一般に、イントラコーディングの場合、リーフＣＵに属するすべてのリーフＴＵは同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、概して、リーフＣＵのすべてのＴＵの予測値を計算するために適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフＴＵの残差値を、ＴＵに対応するＣＵの一部分と元のブロックとの間の差分として計算し得る。ＴＵは、必ずしもＰＵのサイズに制限されるとは限らない。したがって、ＴＵは、ＰＵよりも大きくまたは小さくなり得る。イントラコーディングの場合、ＰＵは、同じＣＵのための対応するリーフＴＵとコロケートされ得る。いくつかの例では、リーフＴＵの最大サイズは、対応するリーフＣＵのサイズに対応し得る。
【００５４】
[0051]その上、リーフＣＵのＴＵは、残差４分木（ＲＱＴ）と呼ばれる、それぞれの４分木データ構造にも関連付けられ得る。すなわち、リーフＣＵは、リーフＣＵがどのようにＴＵに区分されるかを示す４分木を含み得る。ＴＵ４分木のルートノードは概してリーフＣＵに対応し、ＣＵ４分木のルートノードは概してツリーブロック（またはＬＣＵ）に対応する。分割されないＲＱＴのＴＵはリーフＴＵと呼ばれる。概して、本開示では、別段に明記されていない限り、リーフＣＵおよびリーフＴＵに言及するためにそれぞれＣＵおよびＴＵという用語を使用する。
【００５５】
[0052]ビデオシーケンスは、通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ（ＧＯＰ）は、一般に、ビデオピクチャのうちの一連の１つまたは複数を備える。ＧＯＰは、ＧＯＰ中に含まれるいくつかのピクチャを記述するシンタックスデータを、ＧＯＰのヘッダ中、ピクチャの１つもしくは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。図１のビデオエンコーダ２０は、ビデオデータを符号化するために個々のビデオスライス内のビデオブロックに対して動作し得る。ビデオブロックは、ＣＵ内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有することができ、指定されたコーディング規格に従ってサイズが異なり得る。
【００５６】
[0053]ＨＥＶＣは、様々なＰＵサイズにおける予測をサポートする。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ＨＥＶＣは、２Ｎ×２ＮまたはＮ×ＮのＰＵサイズにおけるイントラ予測と、２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、またはＮ×Ｎの対称なＰＵサイズにおけるインター予測とをサポートする。ＨＥＶＣは、また、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズでのインター予測のための、非対称な区分をサポートする。非対称区分では、ＣＵの一方向は区分されないが、他の方向は２５％および７５％に区分される。２５％パーティションに対応するＣＵの部分は、「ｎ」、ならびにそれに続く「Ｕｐ」、「Ｄｏｗｎ」、「Ｌｅｆｔ」、または「Ｒｉｇｈｔ」の指示によって示される。したがって、たとえば、「２Ｎ×ｎＵ」は、上部で２Ｎ×０．５Ｎ  ＰＵ、および下部で２Ｎ×１．５Ｎ  ＰＵに水平に区分される２Ｎ×２Ｎ  ＣＵを指す。
【００５７】
[0054]本開示では、「ＮｘＮ」および「Ｎ×Ｎ（Ｎ  ｂｙ  Ｎ）」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのピクセル寸法、たとえば、１６ｘ１６ピクセルまたは１６×１６（１６  ｂｙ１６）ピクセルを指すために互換的に使用され得る。概して、１６×１６ブロックは、垂直方向に１６ピクセル（ｙ＝１６）、および水平方向に１６ピクセル（ｘ＝１６）を有する。同様に、Ｎ×Ｎブロックは、垂直方向にＮピクセル、水平方向にＮピクセルを有し得、Ｎが非負の整数値を表す。ブロック中のピクセルは、行および列に配置され得る。さらに、ブロックは、必ずしも、水平方向において垂直方向と同一個数のピクセルを有するとは限らない。たとえば、ブロックはＮ×Ｍピクセルを備え得、ここで、Ｍは必ずしもＮに等しいとは限らない。
【００５８】
[0055]ＣＵのＰＵを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ２０は、ＣＵのＴＵのための残差データを計算し得る。ＰＵは、（ピクセル領域とも呼ばれる）空間領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、ＴＵは、変換、たとえば、残差ビデオデータへの離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後の、変換領域における係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、ＰＵに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ２０は、ＣＵのための残差データを含むＴＵを形成し、次いで、ＣＵのための変換係数を生成するために、ＴＵを変換し得る。
【００５９】
[0056]変換係数を生成するための変換の後で、ビデオエンコーダ２０は変換係数の量子化を実行し得る。量子化は、その最も広義の通常の意味を有することを意図された広義の用語である。一実施形態では、量子化は、さらなる圧縮を提供する、係数を表すのに使用されるデータの量をおそらくは減らすために変換係数が量子化されるプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、ｎビットの値は、量子化中にｍビットの値に切り捨てられ得、ここで、ｎはｍよりも大きい。
【００６０】
[0057]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化された変換係数を含む２次元行列から１次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー（したがって、より低い周波数）係数を配置し、アレイの後部により低いエネルギー（したがって、より高い周波数）係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ２０は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化された変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ２０は、適応スキャンを実行することができる。１次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオエンコーダ２０は、たとえば、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディング、または別のエントロピー符号化方法に従って、１次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ２０はまた、ビデオデータを復号する際にビデオデコーダ３０によって使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【００６１】
[0058]ビデオエンコーダ２０は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびＧＯＰベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはＧＯＰヘッダ中で、ビデオデコーダ３０へ送り得る。ＧＯＰシンタックスデータは、それぞれのＧＯＰ中のいくつかのフレームを記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用された符号化／予測モードを示し得る。
【００６２】
[0059]図２は、本開示で説明する態様による技法を実装し得るビデオエンコーダの一例を示すブロック図である。ビデオエンコーダ２０のユニットのうちの１つまたは複数は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。一例として、変換処理ユニット５２は、本開示で説明する変換技法のいずれかまたはすべてを実行するように構成され得る。しかしながら、本開示の態様はそのように限定されない。いくつかの例では、本開示で説明する技法は、ビデオエンコーダ２０の様々な構成要素間で共有され得る。いくつかの例では、プロセッサ（図示せず）が、本開示で説明する技法のいずれかまたはすべてを実行するように構成され得る。
【００６３】
[0060]ビデオエンコーダ２０は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単一方向予測（Ｐモード）または双予測（Ｂモード）などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
【００６４】
[0061]ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信し得る。図２の例では、ビデオエンコーダ２０は、モード選択ユニット４０と、参照フレームメモリ６４と、加算器５０と、変換処理ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。モード選択ユニット４０は、動き推定ユニット４２と、動き補償ユニット４４と、イントラ予測ユニット４６と、パーティションユニット４８とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含み得る。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図示せず）を含めることもできる。所望される場合、デブロッキングフィルタは、通常、加算器６２の出力をフィルタ処理することになる。デブロッキングフィルタに加えて、追加のフィルタ（ループ内またはループ後）も使用され得る。そのようなフィルタは、簡潔のために図示されないが、所望される場合、加算器５０の出力を（インループフィルタとして）フィルタ処理し得る。
【００６５】
[0062]符号化プロセス中に、ビデオエンコーダ２０は、コーディングされるべきビデオフレームまたはスライスを受信し得る。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット４２および動き補償ユニット４４は、時間的予測を提供するために、１つまたは複数の参照フレーム内の１つまたは複数のブロックに対して、受信されたビデオブロックのインター予測コーディングを実行し得る。イントラ予測ユニット４６は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の１つまたは複数の隣接ブロックに対する受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ２０は、たとえば、ビデオデータのブロックごとに適当なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【００６６】
[0063]その上、区分ユニット４８は、前のコーディングパスでの前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット４８は、最初にフレームまたはスライスをＬＣＵに区分し、レート歪み分析（たとえば、レート歪み最適化）に基づいて、ＬＣＵの各々をサブＣＵに区分し得る。モード選択ユニット４０は、サブＣＵへのＬＣＵの区分を示す４分木データ構造をさらに生成し得る。４分木のリーフノードＣＵは、１つまたは複数のＰＵと１つまたは複数のＴＵとを含み得る。
【００６７】
[0064]モード選択ユニット４０は、たとえば、誤差結果に基づいてコーディングモードのうちの１つ、すなわち、イントラまたはインターを選択し、得られたイントラコーディングまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器５０に与え、参照フレームとして使用するための符号化されたブロックを再構成するために加算器６２に与え得る。モード選択ユニット４０はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などの、シンタックス要素をエントロピー符号化ユニット５６に与え得る。
【００６８】
[0065]動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット４２によって実行される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム（または他のコード化ユニット）内でコーディングされている現在のブロックに対する参照フレーム（または他のコード化ユニット）内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのＰＵの変位を示し得る。予測ブロックは、絶対差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ２０は、参照フレームメモリ６４に記憶されている参照ピクチャの、サブ整数ピクセル位置に対する値を計算し得る。たとえば、ビデオエンコーダ２０は、参照ピクチャの４分の１ピクセル位置、８分の１ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット４２は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【００６９】
[0066]動き推定ユニット４２は、ＰＵの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックに関するＰＵの動きベクトルを計算する。参照ピクチャは、第１の参照ピクチャリスト（リスト０）または第２の参照ピクチャリスト（リスト１）から選択され得、それらの参照ピクチャリストの各々は、参照フレームメモリ６４に記憶された１つまたは複数の参照ピクチャを識別する。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。
【００７０】
[0067]動き補償ユニット４４によって実行される動き補償は、動き推定ユニット４２によって決定された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを伴い得る。この場合も、いくつかの例では、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。現在のビデオブロックのＰＵの動きベクトルを受信すると、動き補償ユニット４４は、動きベクトルが参照ピクチャリストのうちの１つにおいて指す予測ブロックの位置を特定し得る。加算器５０は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成し得る。動き推定ユニット４２はルーマ成分に対して動き推定を実行し得、動き補償ユニット４４は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用し得る。モード選択ユニット４０はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ３０が使用するビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。シンタックス要素は、ビデオシーケンスレベル、ビデオフレームレベル、ビデオスライスレベル、ビデオＣＵレベル、またはビデオＰＵレベルのうちの１つまたは複数における予測情報を表し得る。たとえば、動き補償ユニット４４は、ＣＵ、ＰＵ、およびＴＵのサイズを含むビデオブロック情報、ならびにイントラモード予測に関する動きベクトル情報を示すシンタックス要素を生成し得る。
【００７１】
[0068]イントラ予測ユニット４６は、上記で説明したように、動き推定ユニット４２と動き補償ユニット４４とによって実行されるインター予測の代替として、現在のブロックをイントラ予測または計算し得る。特に、イントラ予測ユニット４６は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット４６は、たとえば別々の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット４６（または、いくつかの例では、モード選択ユニット４０）は、テストされたモードから使用すべき適当なイントラ予測モードを選択し得る。
【００７２】
[0069]たとえば、イントラ予測ユニット４６は、様々なテストされたイントラ予測モードのためのレート歪み分析を使用してレート歪み値を計算し、テストされたモードの間で最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み（または誤差）の量、ならびに、符号化ブロックを生成するために使用されるビットレート（すなわち、ビット数）を決定する。イントラ予測ユニット４６は、どのイントラ予測モードがブロックについて最良のレート歪み値を呈するかを決定するために、様々な符号化ブロックの歪みおよびレートから比を計算し得る。
【００７３】
[0070]ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット４６は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット５６に与え得る。エントロピー符号化ユニット５６は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ２０は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル（コードワードマッピングテーブルとも呼ばれる）と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
【００７４】
[0071]ビデオエンコーダ２０は、モード選択ユニット４０からの予測データを、コーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器５０は、この減算演算を実行し得る。変換処理ユニット５２は、離散コサイン変換（ＤＣＴ）または概念的には類似の変換などの変換を残差ブロックに適用し、残差変換係数の値を備えるビデオブロックを生成し得る。変換処理ユニット５２は、ＤＣＴに概念的に類似する他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換が使用され得る。変換処理ユニット５２は、次いで、変換を残差ブロックに適用して、残差変換係数のブロックを生成し得る。変換処理ユニット５２は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。より具体的には、変換の適用の前に、ＴＵは、ピクセル領域中に残差ビデオデータを備え得、変換の適用の後、ＴＵは、周波数領域中に残差ビデオデータを表す変換係数を備え得る。
【００７５】
[0072]従来、ビデオエンコーダ２０は、実装されるビデオ圧縮規格によってサポートされるＴＵの様々なサイズの各々について別個のコンテキストモデルを維持する。ＨＥＶＣ規格の場合、ビデオ符号化効率を向上させるために、たとえば、３２×３２から１２８×１２８までの追加の変換ユニットサイズが使用され得るが、追加のＴＵサイズによって、追加の変換ユニットサイズの各々にコンテキストモデルを維持するためにメモリおよび計算要件も増大する。場合によっては、ＴＵサイズが大きくなるにつれて使用されるコンテキストが多くなることがあり、したがって、より大きいＴＵサイズ用のより多くのコンテキストを維持するためにメモリおよび計算要件も増大する可能性がある。この問題の影響を低減するために、変換処理ユニット５２は、行列乗算中に（「順変換」と呼ばれることがある）変換を簡略化し、それのビット深度を制約することに関して上記および以下で説明する方法（たとえば、以下で、図４〜図５に関して説明する内部ビット深度制約方法）のいずれかを実行するようにさらに構成され得る。
【００７６】
[0073]変換処理ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、次いで、ビットレートをさらに低減するために変換係数を量子化し得る。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット５４は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット５６が走査を実行し得る。
【００７７】
[0074]一例として、変換処理ユニット５２は、変換結果を所定のビット深度値（たとえば、１６ビットのビット深度または他のビット深度値）に制約し得る。一実装形態では、変換処理ユニット５２は、１つまたは複数の内部変換段階において変換結果を制約し得る。ビデオエンコーダ２０は、次いで、所定のビット深度値のために最適化された特殊な命令セットを利用し得る。このようにして、変換処理ユニット５２は、より速い処理速度を受け得る。このプロセスについて、図４中でさらに説明し、実証する。
【００７８】
[0075]上記で説明した例では、変換処理ユニット５２は、変換結果を１６ビット値に制約するように構成される。他の場合には、変換処理ユニット５２は、制約された値が満足な結果をもたらすことになると決定するようにさらに構成され得る。このプロセスについて、図５中でさらに説明し、実証する。
【００７９】
[0076]量子化の後に、エントロピー符号化ユニット５６は、量子化変換係数をエントロピーコーディングし得る。たとえば、エントロピー符号化ユニット５６は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）、確率間隔区分エントロピー（ＰＩＰＥ）コーディング、または別のエントロピー符号化技法を実行し得る。コンテキストベースエントロピー符号化の場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット５６によるエントロピー符号化の後、符号化されたビットストリームは、別のデバイス（たとえば、ビデオデコーダ３０）に送信されるか、または後で送信するかもしくは取り出すためにアーカイブされ得る。
【００８０】
[0077]逆量子化ユニット５８および逆変換ユニット６０は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成し得る。動き補償ユニット４４は、残差ブロックを参照フレームメモリ６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器６２は、参照フレームメモリ６４に記憶するために再構成されたビデオブロックを生成するのに、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算し得る。再構成されたビデオブロックは、次いで、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット４２および動き補償ユニット４４によって使用され得る。
【００８１】
[0078]図３は、本開示で説明する態様による技法を実装し得るビデオデコーダの一例を示すブロック図である。本開示で説明する技法は、ビデオデコーダ３０の様々な構成要素を利用し得る。いくつかの例では、プロセッサ（図示せず）が、技法のいずれかまたはすべてを実行するように構成され得る。
【００８２】
[0079]図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２とイントラ予測ユニット７４とをさらに含む予測ユニット８１と、逆量子化ユニット７６と、逆変換ユニット７８と、参照ピクチャ（フレーム）メモリ８２と、加算器８０とを含む。ビデオデコーダ３０は、ビデオエンコーダ２０（たとえば、図１および図２参照）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルに基づいて、予測データを生成し得、一方、イントラ予測ユニット７４は、エントロピー復号ユニット７０から受信されたイントラ予測モードインジケータに基づいて、予測データを生成し得る。
【００８３】
[0080]従来、ビデオエンコーダ３０は、実装されるビデオ圧縮規格によってサポートされるＴＵの様々なサイズの各々について別個のコンテキストモデルを維持することになる。ＨＥＶＣ規格の場合、ビデオ符号化効率を向上させるために、たとえば、３２×３２から１２８×１２８までの追加の変換ユニットサイズが利用され得るが、追加のＴＵサイズによって、追加の変換ユニットサイズの各々にコンテキストモデルを維持するためにメモリおよび計算要件も増大する。
【００８４】
[0081]復号プロセス中に、ビデオデコーダ３０は、ビデオエンコーダ２０から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す、符号化されたビデオビットストリームを受信し得る。ビデオデコーダ３０のエントロピー復号ユニット７０は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット７０は、次いで、動きベクトルと他のシンタックス要素とを動き補償ユニット７２に転送し得る。ビデオデコーダ３０は、ビデオスライスレベルおよび／またはビデオブロックレベルで構文要素を受信し得る。
【００８５】
[0082]ビデオスライスが、イントラコード化（Ｉ）スライスとしてコーディングされるとき、イントラ予測ユニット７４は、現在のフレームまたはピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームが、インターコーディングされた（たとえば、Ｂ、Ｐ、またはＧＰＢ）スライスとしてコーディングされる時に、動き補償ユニット７２は、エントロピー復号ユニット７０から受け取られた動きベクトルと他の構文要素とに基づいて、現在のビデオスライスのビデオブロックの予測ブロックを生成し得る。予測ブロックは、参照ピクチャリストのうちの１つ内の参照ピクチャのうちの１つから生成され得る。ビデオデコーダ３０は、参照ピクチャ（フレーム）メモリ８２に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照フレームリスト、すなわち、リスト０とリスト１とを構成し得る。動き補償ユニット７２は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するために予測情報を使用し得る。たとえば、動き補償ユニット７２は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード（たとえば、イントラ予測またはインター予測）と、インター予測スライスタイプ（たとえば、Ｂスライス、Ｐスライス、またはＧＰＢスライス）と、スライスの参照ピクチャリストのうちの１つまたは複数のための構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用し得る。
【００８６】
[0083]動き補償ユニット７２は、補間フィルタに基づいて補間を実行し得る。動き補償ユニット７２は、参照ブロックのサブ整数ピクセルの補間された値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ２０によって使用された補間フィルタを使用し得る。この場合、動き補償ユニット７２は、受信したシンタックス要素から、ビデオエンコーダ２０によって使用された補間フィルタを決定し、予測ブロックを生成するために、その補間フィルタを使用し得る。
【００８７】
[0084]逆量子化ユニット７６は、ビットストリーム中で与えられ、エントロピー復号ユニット７０によって復号された量子化変換係数を逆量子化（ｉｎｖｅｒｓｅ  ｑｕａｎｔｉｚｅ）、たとえば、逆量子化（ｄｅ−ｑｕａｎｔｉｚｅ）し得る。逆量子化処理は、量子化の程度、および同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライスの中の各ビデオブロックに対してビデオデコーダ３０によって計算された量子化パラメータＱＰＹの使用を含み得る。
【００８８】
[0085]逆変換ユニット７８は、ピクセル領域内の残差ブロックを生成するために、逆変換、たとえば、逆ＤＣＴ、逆整数変換、または概念的には類似の逆変換プロセスを、変換係数に適用し得る。動き補償ユニット７２が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ３０は、逆変換ユニット７８からの残差ブロックを動き補償ユニット７２によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成し得る。加算器８０は、この加算演算を実行し得る。ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためのデブロッキングフィルタも適用され得る。（コーディングループ中またはコーディングループ後のいずれかの）他のループフィルタも、ピクセルの遷移を平滑化し、または場合によっては、ビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、参照ピクチャ（フレーム）メモリ８２に記憶され得、この参照ピクチャ（フレーム）メモリ８２は、後続の動き補償のために使用される参照ピクチャを記憶し得る。参照ピクチャ（フレーム）メモリ８２はまた、図１のディスプレイデバイス３２などのディスプレイデバイス上に後で提示するために復号ビデオを記憶し得る。
【００８９】
[0086]図４に、たとえば、メッシュベースの計算を使用した低複雑な順変換の方法４００のフローチャートを示す。方法４００は、プロセッサまたは、たとえば、図２のエンコーダ２０などのエンコーダによって実行され得る。一実施形態では、図２のエンコーダ２０の変換処理ユニット５２は、方法４００を実行するように構成され得る。本方法の様々なブロックが、変換処理ユニットによって実行されるものとして説明したが、本方法の様々なブロックが、他のプロセッサ、エンコーダ、またはそれらのユニットによって実行され得ることを理解されたい。
【００９０】
[0087]方法４００により、エンコーダは、１６ビットのデータのために最適化された特殊な命令セット（たとえば、ＡＲＭアーキテクチャ、Ａｄｖａｎｃｅｄ  ＳＩＭＤ（ＮＥＯＮ）、デジタル信号処理（ＤＳＰ）など）を使用して１６ビット演算を実行することを可能にするために変換結果を１６ビット値に制約することが可能になる。上記で説明したように、ビット深度を制約することは、コーディング効率を改善し、ビデオ符号化中の計算リソース要件を低減し得る。しかしながら、場合によっては、ビット深度を制約することはまた、変換出力の品質を減少させ得る。したがって、１６ビット演算を実行する前に、エンコーダ（たとえば、エンコーダ２０の変換処理ユニット５２）は、制約された値が満足な結果をもたらすことになると決定し、それに応じて調整するようにさらに構成され得、これについて、図５に関してさらに説明する。
【００９１】
[0088]方法４００は、ブロック４０５において開始する。次いで、ブロック４１０において、変換処理ユニット５２は、フルサイズの順方向変換行列を複数の、あまり複雑でない段階に分解し得る（たとえば、多段変換行列を決定し得る）。分解は、メッシュベースの分解方法を使用することによって行われ得る。一実装形態では、フルサイズの変換行列を分解するために計算リソースを使用するのではなく、変換処理ユニット５２は、代わりに、メモリまたはコード化ビットストリームから複数の段階を取り出し得る。いくつかの実装形態では、最初の順変換行列は、３２×３２の変換行列であり得る。他の実装形態では、変換行列は、別のサイズであり得る。
【００９２】
[0089]次いで、ブロック４１５において、変換処理ユニット５２は、複数の段階の各々に対して適切な変換演算を実行し得る。場合によっては、変換演算が実行された後、これらの段階のうちの１つまたは複数は、１６ビットよりも大きい変換結果を含み得る。これらの変換結果は、１６ビットよりも大きいシステムのために設計された内部計算動作（たとえば、３２ビット演算）を必要とし得、これは、変換処理ユニット５２の効率を減少させ得る。
【００９３】
[0090]したがって、ブロック４２０において、変換処理ユニット５２は、複数の段階の各々における変換結果の内部ビット深度を１６ビット値に制約し得る。変換処理ユニット５２は、飽和論理を使用して、たとえば、内部値を１６ビット値にクリッピングすることによってこの制約されたプロセスを実行し得る。より詳細には、変換処理ユニット５２は、変換出力ビット深度を制約するだけでなく、変換演算中に内部でビット深度を制約し得る。これを達成するために、変換処理ユニット５２は、各中間変換段階の出力においてクリッピング関数を実行し得る。一実装形態では、変換処理ユニット５２は、制約されたプロセスを実行するために付録Ａに示すコードに付加されるクリッピング関数を使用し得、ここで、ａおよびｎは、１６ビットの範囲内に制約される和とともに追加されるべき値を表す。１つの例示的なクリッピング関数は、ｙ＝ＣＬＩＰ3（ｘ，ｍｉｎval，ｍａｘval）として表され得る。この例示的な機能では、ｘは、バイト数を表し得る。ｘがｍｉｎvalよりも小さい場合、ｙはｍｉｎvalに設定され得る。さらに、ｘがｍａｘvalよりも大きい場合、ｙはｍａｘvalに設定され得る。ｘがｍｉｎvalとｍａｘvalとの範囲の間に入る場合、ｙは、ｘに設定され得る。より具体的な例示的なクリッピング関数は、（ａ＋ｂ）sat＝ＣＬＩＰ3（−３２７６８，３２７６７，ａ＋ｂ）または（ａ0＊ｂ0＋ａ1＊ｂ1＋・・・）sat＝ＣＬＩＰ3（−３２７６８，３２７６７，ａ0＊ｂ0＋ａ1＊ｂ1＋・・・）のいずれかのうちの１つとして表され得、これは、上記のクリッピング例と同様の論理ツリーに従う。クリッピング関数の他の構造は、制約プロセスを実行するために実装され得る。いずれの場合も、加算演算、減算演算、および／または乗算および加算演算について、飽和論理は、結果を１６ビットに制約し得る。
【００９４】
[0091]各段階において内部ビット深度を１６ビットに制約することによって、変換処理ユニット５２は、そのレベルのために計算効率の良い命令セットを利用することが可能になり得る。たとえば、変換に対する入力ビット深度は９ビットであり得、開始内部ビット深度は、１６ビットよりも大きくなり得る。一例では、変換処理ユニット５２は、特定のビットレベルでの演算（たとえば、１６ビット演算、３２ビット演算、または６４ビット演算など）しか実行することが可能でないことがある。したがって、内部ビット深度が１６ビットよりも大きいとき、変換処理ユニット５２は、少なくとも３２ビットレベルで内部演算を実行する必要があり得る。この結果を回避するために、変換処理ユニット５２は、（たとえば、３２ビットの内部演算が必要とされないように）変換の各分解された段階の内部ビット深度を１６ビットに制約し得る。言い換えれば、各段階の内部ビット深度が１６ビットに制約されるので、プロセッサは、１６ビット演算とともに使用するために特に設計された計算効率の良い命令セット（たとえば、ＡＲＭアーキテクチャ、Ａｄｖａｎｃｅｄ  ＳＩＭＤ（ＮＥＯＮ）、デジタル信号処理（ＤＳＰ）など）を利用し得る。
【００９５】
[0092]次いで、随意のブロック４２５において、変換処理ユニット５２は、随意に、各段階における制約された値の偏差（たとえば、誤差）をしきい値と比較することによって制約された値が満足な結果をもたらすことになるかどうかを決定し得る。たとえば、方法５００は、ブロック４２５において、図５に関して以下で説明する方法５００のブロック５１０および５２０を実行することによって制約された値が満足な結果をもたらすことになるかどうかを決定し得る。制約された値が満足な結果をもたらすことになる場合、方法４００は、ブロック４３０に続く。そうでない場合、ブロック４２７において、変換処理ユニット５２は、（たとえば、方法５００のブロック５３０に関して以下で説明するように）偏差がしきい値よりも低くなるまで係数のサブセットを再計算し得る。この方法５００により、変換処理ユニット５２は、ビデオ品質をも保持しながら、コーディング効率を増加することが可能になり得る。制約された値が満足な結果をもたらすことになると変換処理ユニット５２が決定すると、次いで、ブロック４３０において、変換処理ユニット５２は、１６ビットのデータのために最適化された特殊な命令セット（たとえば、ＡＲＭアーキテクチャ、Ａｄｖａｎｃｅｄ  ＳＩＭＤ（ＮＥＯＮ）、デジタル信号処理（ＤＳＰ）など）を使用して１６ビット演算を変換データに対して実行することを続け得る。ブロック４９０において、本方法は終了する。
【００９６】
[0093]図５に、低複雑な順変換のための方法５００のフローチャートを示す。方法５００は、プロセッサまたは、図２に関して上記で説明したエンコーダ２０などのエンコーダによって実行され得る。一実施形態では、エンコーダの変換処理ユニット（たとえば、図２のエンコーダ２０の変換処理ユニット５２）は、方法５００を実行するために使用され得る。実際、方法５００が、エンコーダ２０の変換処理ユニット５２によって実行されるものとして記述されているが、方法５００が、エンコーダの異なるプロセッサ、エンコーダ、または処理ユニットによって実行され得ることを理解されたい。一実施形態では、方法５００は、最初に、制約する値を（たとえば、図４の方法からの制約された値）が満足な結果をもたらすことになるかどうかを決定し、それに応じて調整する。図４に関して上記で説明したように、変換処理ユニット５２が内部ビット深度を制約すると、変換出力の品質をも低下させ得る。図５に関して説明する方法は、偏差が所定のしきい値を下回るまで、品質の低下がどの程度まで発生し得るのかを決定し、それに応じて調整する。
【００９７】
[0094]方法５００は、ブロック５０５において開始する。方法５００の始めに、変換処理ユニット５２は、フルサイズの順方向変換行列を複数の、あまり複雑でない段階にすでに分解している。たとえば、順変換行列は、図４に関して説明した方法に従って分解されていることがある。各段階の内部ビット深度は、図４に関してさらに説明するように、特定のビット深度値（たとえば、１６ビットのビット深度値）にすでに制約されていることがある。
【００９８】
[0095]次いで、ブロック５１０において、変換処理ユニット５２は、制約された値（たとえば、最終係数）の元の値からの偏差を決定し得る。一例として、飽和論理が使用されるとき、最終係数値は、元の値から逸脱し得る（たとえば、あるレベルの誤差を含み得る）。
【００９９】
[0096]偏差を計算した後に、ブロック５２０において、変換処理ユニット５２は、偏差が所定のしきい値制限よりも大きいかどうかを決定し得る。そうである場合、方法５００はブロック５３０に進む。ブロック５３０において、変換処理ユニット５２は、（たとえば、ＡＣレベルの係数のサブセットを再計算するために変換を部分的に適用することによって）係数のサブセットを再計算し、制約された値のその同じサブセットを再計算された結果と置き換え得る。このプロセスは、計算の要件（たとえば、サイクル）および複雑さをも最小化しながら、最終係数値が有する、元の値からの偏差を補正し得る。一実装形態では、ＤＣレベルの係数がＡＣレベルの係数よりも大きいダイナミックレンジを有するので、係数のサブセットは、ＤＣレベルの係数のみを含み得、したがって、それらは、元の値から逸脱する可能性が高い。他の実装形態では、増加精度をさらに高めるために、係数のサブセットは、ＤＣレベルの係数を含んでいることに加えて、ＤＣレベルに近い値をもつＡＣレベルの係数を含み得る。
【０１００】
[0097]上記で説明したように係数の小さいサブセットを再計算した後に、変換処理ユニットは、次いで、ブロック５１０に戻り、偏差をしきい値と再び照合し得る。（ブロック５２０において）偏差が所定のしきい値耐久制限よりも小さいと変換処理ユニット５２が決定すると、方法５００は、ブロック５９０に進み、終了する。ブロック５９０において、変換処理ユニット５２は、制約された値が満足な結果をもたらすことになると決定し、係数の再計算されたサブセットを与え得る。変換処理ユニット５２は、次いで、図４に関して上記で説明した、方法４００のブロック４２７において係数の再計算されたサブセットを利用し得る。
【０１０１】
[0098]上記の方法のすべてについて、Ｎ×Ｎの変換に関して説明した。しかしながら、本開示で説明する方法は、Ｎ×Ｎの変換に限定されない。本方法はまた、変換における次元数にかかわらず、任意のサイズの変換に関して実施され得る。
【０１０２】
[0099]上記例に応じて、本明細書で説明した技法のいずれかのいくつかの行為またはイベントが、異なるシーケンスで実行され得、全体的に追加、マージ、または除外され得る（たとえば、すべての説明した行為またはイベントが本技法の実施のために必要であるとは限らない）ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実行され得る。
【０１０３】
[00100]１つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれの任意の組合せで実施され得る。ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形のコンピュータ可読記憶媒体、または（２）信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１０４】
[00101]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含めるべきである。
【０１０５】
[00102]命令は、１つもしくは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他の同等の集積回路またはディスクリート論理回路などの１つもしくは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つまたは複数の回路または論理要素で十分に実装され得る。
【０１０６】
[00103]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明された１つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
【０１０７】
[00104]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲に含まれる。
【０１０８】
付録Ａ：１６×１６順変換のメッシュベースの実装の例
for (j=0; j<16; j++) 
{    
/* E and O*/ 
for (k=0;k<8;k++) 
{ 
nE[k] = pSrc[k] + pSrc[15-k]; 
nO[k] = pSrc[k] - pSrc[15-k]; 
} 
/* EE and EO */ 
for (k=0;k<4;k++) 
{ 
nEE[k] = nE[k] + nE[7-k]; 
nEO[k] = nE[k] - nE[7-k]; 
} 
/* EEE and EEO */ 
nEEE[0] = nEE[0] + nEE[3];    
nEEO[0] = nEE[0] - nEE[3]; 
nEEE[1] = nEE[1] + nEE[2]; 
nEEO[1] = nEE[1] - nEE[2]; 
pDst[ 0 ] = (anTransCoef16[ 0][0]*nEEE[0] + anTransCoef16[ 0][1]*nEEE[1] + 4)>>3;        
pDst[ 8 ] = (anTransCoef16[ 8][0]*nEEE[0] + anTransCoef16[ 8][1]*nEEE[1] + 4)>>3;    
pDst[ 4 ] = (anTransCoef16[ 4][0]*nEEO[0] + anTransCoef16[ 4][1]*nEEO[1] + 4)>>3;        
pDst[ 12] = (anTransCoef16[12][0]*nEEO[0] + anTransCoef16[12][1]*nEEO[1] + 4)>>3; 
for (k=2;k<16;k+=4) 
{ 
pDst[ k ] = (anTransCoef16[k][0]*nEO[0] + anTransCoef16[k][1]*nEO[1] + anTransCoef16[k][2]*nEO[2] + anTransCoef16[k][3]*nEO[3] + 4)>>3;      
} 
for (k=1;k<16;k+=2) 
{ 
pDst[ k ] = (anTransCoef16[k][0]*nO[0] + anTransCoef16[k][1]*nO[1] + anTransCoef16[k][2]*nO[2] + anTransCoef16[k][3]*nO[3] +  
anTransCoef16[k][4]*nO[4] + anTransCoef16[k][5]*nO[5] + anTransCoef16[k][6]*nO[6] + anTransCoef16[k][7]*nO[7] + 4)>>3; 
} 
pSrc += 16; 
pDst += 16; 
} 
pSrc = pCoef; 
pDst = pRes; 
for (j=0; j<16; j++) 
{    
/* E and O*/ 
for (k=0;k<8;k++) 
{ 
nE[k] = pSrc[k*16] + pSrc[(15-k)*16]; 
nO[k] = pSrc[k*16] - pSrc[(15-k)*16]; 
} 
/* EE and EO */ 
for (k=0;k<4;k++) 
{ 
nEE[k] = nE[k] + nE[7-k]; 
nEO[k] = nE[k] - nE[7-k]; 
} 
/* EEE and EEO */ 
nEEE[0] = nEE[0] + nEE[3];    
nEEO[0] = nEE[0] - nEE[3]; 
nEEE[1] = nEE[1] + nEE[2]; 
nEEO[1] = nEE[1] - nEE[2]; 
pDst[ 0    ] = (anTransCoef16[ 0][0]*nEEE[0] + anTransCoef16[ 0][1]*nEEE[1] + 512)>>10;        
pDst[ 8*16 ] = (anTransCoef16[ 8][0]*nEEE[0] + anTransCoef16[ 8][1]*nEEE[1] + 512)>>10;    
pDst[ 4*16 ] = (anTransCoef16[ 4][0]*nEEO[0] + anTransCoef16[ 4][1]*nEEO[1] + 512)>>10;        
pDst[ 12*16] = (anTransCoef16[12][0]*nEEO[0] + anTransCoef16[12][1]*nEEO[1] + 512)>>10; 
for (k=2;k<16;k+=4) 
{ 
pDst[ k*16 ] = (anTransCoef16[k][0]*nEO[0] + anTransCoef16[k][1]*nEO[1] + anTransCoef16[k][2]*nEO[2] + anTransCoef16[k][3]*nEO[3] + 512)>>10;      
} 
for (k=1;k<16;k+=2) 
{ 
pDst[ k*16 ] = (anTransCoef16[k][0]*nO[0] + anTransCoef16[k][1]*nO[1] + anTransCoef16[k][2]*nO[2] + anTransCoef16[k][3]*nO[3] + 
anTransCoef16[k][4]*nO[4] + anTransCoef16[k][5]*nO[5] + anTransCoef16[k][6]*nO[6] + anTransCoef16[k][7]*nO[7] + 512)>>10; 
} 
pSrc ++; 
pDst ++; 
} 
【図１】
2017514353.tif 000007
【図２】
2017514353.tif 000008
【図３】
2017514353.tif 000009
【図４】
2017514353.tif 000010
【図５】
2017514353.tif 000011
【手続補正書】
【提出日】平成28年11月18日(2016.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータのブロックを記憶するように構成されたメモリと、
前記メモリと通信しているプロセッサであって、
ピクセル領域から係数領域に前記ビデオデータのブロックを変換するための変換を複数の変換段階に分解することと、
前記複数の変換段階を前記ビデオデータのブロックに適用することによって、前記ピクセル領域から前記係数領域に前記ビデオデータのブロックを変換し、各変換段階における出力係数のセットを生成することと、
各変換段階における前記出力係数のセットを所定のビット深度に制約することと、
前記制約された係数のセットと各変換段階における前記出力係数のセットとの間の偏差を決定することと、
前記決定された偏差が所定のしきい値よりも大きいとき、変換段階の前記出力係数のセットのサブセットを再計算することと、
前記複数の変換段階の最後の段階の前記制約された出力係数に対して演算を実行することと、ここにおいて、前記演算の前記ビット深度が、前記所定のビット深度に等しい、
を行うように構成されたプロセッサと
を備える、ビデオエンコーダ。
【請求項２】
前記プロセッサが、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項３】
前記プロセッサは、クリッピングされた係数が必ず所定の範囲内に入るように前記係数をクリッピングすることによって各変換段階における前記出力係数のセットを制約するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項４】
前記所定のビット深度が１６ビットである、請求項１に記載のビデオエンコーダ。
【請求項５】
前記偏差が、前記制約された係数のセットと前記出力係数のセットとの間の前記差を備える、請求項１に記載のビデオエンコーダ。
【請求項６】
前記プロセッサが、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオデータのブロックを変換するようにさらに構成された、請求項１に記載のビデオエンコーダ。
【請求項７】
ビデオを符号化する方法であって、
ビデオデータのブロックを記憶することと、
ピクセル領域から係数領域に前記ビデオデータのブロックを変換するための変換を複数の変換段階に分解することと、
前記複数の変換段階を前記ビデオデータのブロックに適用することによって、前記ピクセル領域から前記係数領域に前記ビデオデータのブロックを変換し、各変換段階における出力係数のセットを生成することと、
各変換段階における前記係数出力のセットを所定のビット深度に制約することと、
前記制約された係数のセットと各変換段階における前記出力係数のセットとの間の偏差を決定することと、
前記決定された偏差が所定のしきい値よりも大きいとき、変換段階の前記出力係数のセットのサブセットを再計算することと、
前記複数の段階の最後の段階の前記制約された出力係数に対して演算を実行することと、ここにおいて、前記演算の前記ビット深度が、前記所定のビット深度に等しい、
を備える方法。
【請求項８】
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することをさらに備える、請求項７に記載の方法。
【請求項９】
クリッピングされた係数が必ず所定の範囲内に入るように前記係数をクリッピングすることによって各変換段階における前記出力係数のセットを制約することをさらに備える、請求項７に記載の方法。
【請求項１０】
前記所定のビット深度が１６ビットである、請求項７に記載の方法。
【請求項１１】
前記偏差が、前記制約された係数のセットと前記出力係数のセットとの間の前記差を備える、請求項７に記載の方法。
【請求項１２】
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオデータのブロックを変換することをさらに備える、請求項７に記載の方法。
【請求項１３】
実行されたとき、装置に、
ビデオデータのブロックを記憶することと、
ピクセル領域から係数領域に前記ビデオデータのブロックを変換するための変換を複数の変換段階に分解することと、
前記複数の変換段階を前記ビデオデータのブロックに適用することによって、前記ピクセル領域から前記係数領域に前記ビデオデータのブロックを変換し、各変換段階における出力係数のセットを生成することと、
各変換段階における前記出力係数のセットを所定のビット深度に制約することと、
前記制約された係数のセットと各変換段階における前記出力係数のセットとの間の偏差を決定することと、
前記決定された偏差が所定のしきい値よりも大きいとき、変換段階の前記出力係数のセットのサブセットを再計算することと、
前記複数の変換段階の最後の段階の前記制約された出力係数に対して演算を実行することと、ここにおいて、前記演算の前記ビット深度が、前記所定のビット深度に等しい、
を行わせるコードを備える、非一時的コンピュータ可読媒体。
【請求項１４】
実行されたとき、前記装置に、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することを行わせるコードをさらに備える、請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
実行されたとき、前記装置に、クリッピングされた係数が必ず所定の範囲内に入るように前記係数をクリッピングすることによって各変換段階における前記出力係数のセットを制約することを行わせるコードをさらに備える、請求項１３に記載のコンピュータ可読媒体。
【請求項１６】
前記偏差が、前記制約された係数のセットと前記出力係数のセットとの間の前記差を備える、請求項１３に記載のコンピュータ可読媒体。
【請求項１７】
実行されたとき、前記装置に、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオデータのブロックを変換することを行わせるコードをさらに備える、請求項１３に記載のコンピュータ可読媒体。
【請求項１８】
ビデオを符号化するための装置であって、
ビデオデータのブロックを記憶するための手段と、
ピクセル領域から係数領域に前記ビデオデータのブロックを変換するための変換を複数の変換段階に分解するための手段と、
前記複数の変換段階を前記ビデオデータのブロックに適用することによって、前記ピクセル領域から前記係数領域に前記ビデオデータのブロックを変換し、各変換段階における出力係数のセットを生成するための手段と、
各変換段階における前記出力係数のセットを所定のビット深度に制約するための手段と、
前記制約された係数のセットと各変換段階における前記出力係数のセットとの間の偏差を決定するための手段と、
前記決定された偏差が所定のしきい値よりも大きいとき、変換段階の前記出力係数のセットのサブセットを再計算するための手段と、
前記複数の変換段階の最後の段階の前記制約された出力係数に対して演算を実行するための手段と、ここにおいて、前記演算の前記ビット深度が、前記所定のビット深度に等しい、
を備える、装置。
【請求項１９】
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するための手段をさらに備える、請求項１８に記載の装置。
【請求項２０】
クリッピングされた係数が必ず所定の範囲内に入るように前記係数をクリッピングすることによって各変換段階における前記出力係数のセットを制約するための手段をさらに備える、請求項１８に記載の装置。
【請求項２１】
前記偏差が、前記制約された係数のセットと前記出力係数のセットとの間の前記差を備える、請求項１８に記載の装置。
【請求項２２】
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオデータのブロックを変換するための手段をさらに備える、請求項１８に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
[00104]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲に含まれる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオ情報を記憶するように構成されたメモリと、
前記メモリと通信しているプロセッサであって、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を行うように構成されたプロセッサと
を備える、ビデオエンコーダ。
［Ｃ２］
前記プロセッサが、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するようにさらに構成された、Ｃ１に記載のビデオエンコーダ。
［Ｃ３］
前記プロセッサは、クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約するようにさらに構成された、Ｃ１に記載のビデオエンコーダ。
［Ｃ４］
前記所定のビット深度が１６ビットである、Ｃ１に記載のビデオエンコーダ。
［Ｃ５］
前記プロセッサが、前記制約された変換段階出力と前記変換段階出力との間の偏差を決定するようにさらに構成された、Ｃ１に記載のビデオエンコーダ。
［Ｃ６］
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、Ｃ５に記載のビデオエンコーダ。
［Ｃ７］
前記プロセッサは、前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算するようにさらに構成された、Ｃ５に記載のビデオエンコーダ。
［Ｃ８］
前記プロセッサが、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換するようにさらに構成された、Ｃ７に記載のビデオエンコーダ。
［Ｃ９］
ビデオを符号化する方法であって、
ビデオ情報を記憶することと、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を備える方法。
［Ｃ１０］
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することをさらに備える、Ｃ９に記載の方法。
［Ｃ１１］
クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約することをさらに備える、Ｃ９に記載の方法。
［Ｃ１２］
前記所定のビット深度が１６ビットである、Ｃ９に記載の方法。
［Ｃ１３］
前記制約された変換段階出力と前記変換段階出力との間の偏差を決定することをさらに備える、Ｃ９に記載の方法。
［Ｃ１４］
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、Ｃ１３に記載の方法。
［Ｃ１５］
前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算することをさらに備える、Ｃ１３に記載の方法。
［Ｃ１６］
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換することをさらに備える、Ｃ１５に記載の方法。
［Ｃ１７］
実行されたとき、装置に、
ビデオ情報を記憶することと、
変換を複数の変換段階に分解することと、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換することと、
各変換段階における前記変換段階出力を所定のビット深度に制約することと、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行することと、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を行わせるコードを備える、非一時的コンピュータ可読媒体。
［Ｃ１８］
実行されたとき、前記装置に、メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解することを行わせるコードをさらに備える、Ｃ１７に記載のコンピュータ可読媒体。
［Ｃ１９］
実行されたとき、前記装置に、クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約することを行わせるコードをさらに備える、Ｃ１７に記載のコンピュータ可読媒体。
［Ｃ２０］
実行されたとき、前記装置に、前記制約された変換段階出力と前記変換段階出力との間の偏差を決定することを行わせるコードをさらに備える、Ｃ１７に記載のコンピュータ可読媒体。
［Ｃ２１］
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、Ｃ２０に記載のコンピュータ可読媒体。
［Ｃ２２］
実行されたとき、前記装置に、前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算することを行わせるコードをさらに備える、Ｃ２０に記載のコンピュータ可読媒体。
［Ｃ２３］
実行されたとき、前記装置に、少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換することを行わせるコードをさらに備える、Ｃ２２に記載のコンピュータ可読媒体。
［Ｃ２４］
ビデオを符号化するための装置であって、
ビデオ情報を記憶するための手段と、
変換を複数の変換段階に分解するための手段と、
各変換段階における変換段階出力を決定するために前記複数の段階を使用して前記ビデオ情報を変換するための手段と、
各変換段階における前記変換段階出力を所定のビット深度に制約するための手段と、
前記複数の段階の最後の段階の前記制約された変換出力に対して演算を実行するための手段と、ここにおいて、前記演算が、前記所定のビット深度を有するデータとともに使用するためにのみ利用可能である、
を備える、装置。
［Ｃ２５］
メッシュベースの方法、バタフライ方法、または偶数奇数分解を使用して前記変換を分解するための手段をさらに備える、Ｃ２５に記載の装置。
［Ｃ２６］
クリッピングされた変換段階出力が必ず所定の範囲内に入るように前記変換段階出力をクリッピングすることによって前記変換段階出力を制約するための手段をさらに備える、Ｃ２５に記載の装置。
［Ｃ２７］
前記制約された変換段階出力と前記変換段階出力との間の偏差を決定するための手段をさらに備える、Ｃ２５に記載の装置。
［Ｃ２８］
前記偏差が、前記制約された変換段階出力と前記変換段階出力との間の前記差を備える、Ｃ２７に記載の装置。
［Ｃ２９］
前記偏差が所定のしきい値よりも大きいとき、少なくとも１つの変換段階内で係数のサブセットを再計算するための手段をさらに備える、Ｃ２７に記載の装置。
［Ｃ３０］
少なくとも係数の前記再計算されたサブセットを使用して前記ビデオ情報を変換するための手段をさらに備える、Ｃ３０に記載の装置。
【国際調査報告】
2017514353.tif 000012
2017514353.tif 000013
2017514353.tif 000014