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