JP6285025B2 - 水平および垂直変換の並行処理 - Google Patents

水平および垂直変換の並行処理 Download PDF

Info

Publication number
JP6285025B2
JP6285025B2 JP2016525378A JP2016525378A JP6285025B2 JP 6285025 B2 JP6285025 B2 JP 6285025B2 JP 2016525378 A JP2016525378 A JP 2016525378A JP 2016525378 A JP2016525378 A JP 2016525378A JP 6285025 B2 JP6285025 B2 JP 6285025B2
Authority
JP
Japan
Prior art keywords
stage
block
result
applying
results
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016525378A
Other languages
English (en)
Other versions
JP2016526854A5 (ja
JP2016526854A (ja
Inventor
シェ、チェン−テ
ゲ、フェン
モハン、スミト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016526854A publication Critical patent/JP2016526854A/ja
Publication of JP2016526854A5 publication Critical patent/JP2016526854A5/ja
Application granted granted Critical
Publication of JP6285025B2 publication Critical patent/JP6285025B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本開示は、ビデオコーディングに関し、より詳細には、ビデオデータをコーディングするときに変換を実行するための技法に関する。
[0002]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信、受信および記憶するための、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4,Part10,Advanced Video Coding(AVC)によって定義された規格、現在開発中の高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格、およびそのような規格の拡張に記載されているビデオ圧縮技法などを実装する。
[0003]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および/または時間的予測を含む。ブロックベースのビデオコーディングの場合、ビデオピクチャまたはスライスはブロックに区分され得る。各ブロックはさらに区分され得る。イントラコード化(I)ピクチャまたはスライス中のブロックは、同じピクチャまたはスライス中の隣接ブロック中の参照サンプルに対する空間的予測を使用して符号化される。インターコード化(PまたはB)ピクチャまたはスライス中のブロックは、同じピクチャまたはスライス中の隣接ブロック中の参照サンプルに対する空間的予測、あるいは他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。空間予測または時間予測により、コーディングされるべきブロックのための予測ブロックが生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。
[0004]インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データはコード化ブロックと予測ブロックとの間の差分を示す。イントラコーディングされたブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換され、残差変換係数が生じ得、その残差変換係数は、次いで量子化され得る。
[0005]本開示の技法は、概して、ビデオコーディングプロセスにおけるビデオデータの変換に関する。ビデオコーダは、2つのステージでビデオデータに2次元(2D)変換を適用し得る。バッファは、一般に、第1のステージと第2のステージとの間に配置され、それにより、ビデオコーダが、第2のステージの実行前に第1のステージからの処理済みデータを並べ替えることが可能になる。本開示の態様によれば、ビデオコーダは、第1のステージと第2のステージとの間でデータを並べ替えることなしに2D変換を適用し得る。このようにして、本開示の技法は、ビデオデータの変換に関連する遅延を低減または除去し得る。
[0006]一例では、ビデオコーディングにおいてビデオデータを変換する方法は、第1のステージの結果のブロックを生成するためにビデオデータ値のブロックに2次元変換の第1のステージを適用することと、第2のステージの結果のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用することとを含む。
[0007]別の例では、ビデオコーディングにおいてビデオデータを変換するための装置は、第1のステージの結果のブロックを生成するためにビデオデータ値のブロックに2次元変換の第1のステージを適用することと、第2のステージの結果のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用することとを行うように構成された1つまたは複数のプロセッサを含む。
[0008]別の例では、ビデオコーディングにおいてビデオデータを変換するための装置は、第1のステージの結果のブロックを生成するためにビデオデータ値のブロックに2次元変換の第1のステージを適用するための手段と、第2のステージの結果のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用するための手段とを含む。
[0009]別の例では、実行されたとき、1つまたは複数のプロセッサに、第1のステージの結果のブロックを生成するためにビデオデータ値のブロックに2次元変換の第1のステージを適用することと、第2のステージの結果のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用することとを行わせる命令を記憶した非一時的コンピュータ可読媒体。
[0010]本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
本開示の技法を実装し得る例示的なビデオ符号化および復号システムを示すブロック図。 本開示の技法を実装し得る、例示的なビデオエンコーダを示すブロック図。 本開示の技法を実装し得る、例示的なビデオデコーダを示すブロック図。 本開示の技法を実装し得る、例示的なビデオコーダの一部分を示すブロック図。 本開示の技法による、一連の行列演算を示す図。 本開示の技法を実装し得る、例示的なビデオコーダの一部分を示すブロック図。 本開示の技法による、一連の行列演算を示す図。 本開示の技法による、ビデオコーディングにおいて残差データを変換するための例示的なプロセスを示す流れ図。 本開示の技法による、ビデオコーディングにおいて残差データを変換するための別の例示的なプロセスを示す流れ図。
[0020]ビデオコーディングデバイス(たとえば、ビデオ符号化デバイスまたはビデオ復号デバイス)は、ビデオシーケンスに固有の冗長性を低減または除去するために空間(フレーム内)予測および/または時間(フレーム間)予測技法を適用することによって、ビデオ圧縮を達成し得る。たとえば、ビデオコーダは、イントラ(I)予測(すなわち、空間的予測)あるいはインター(PまたはB)予測(すなわち、時間的予測)のいずれかを通して予測子(predictor)を導出し得る。予測子が識別されると、ビデオコーダは、元のビデオデータブロックとそれの予測子との間の差分を決定し得る。この差分は、予測残差と呼ばれることがあり、コーディングされるべきブロックと参照ブロック、すなわち、予測子との間のピクセル差分を示す。
[0021]より良好な圧縮を達成するために、予測残差は、概して、変換(離散コサイン変換(DCT)、整数変換、カルーネンレーベ(Karhunen-Loeve)(K−L)変換、または他の変換)を適用することによって変換され得る。変換は、空間領域におけるピクセル差分値を、変換領域、たとえば、周波数領域における変換係数に変換する。
[0022]予測残差は、一般に、3つのサンプルアレイを有するビデオデータのための対応するクロマサンプル(Cb、Cr)とともにルーマサンプル(Y)を含む。以下でより詳細に説明するように、変換ユニットは、ルーマ変換ブロックと2つの対応するクロマ変換ブロックとを指すことがある。変換係数は、通常、変換ユニット中の変換ブロックごとに2次元(2D)アレイに構成される。したがって、ビデオコーダは、一般に、予測残差に2D変換を適用する。
[0023]ビデオコーダは、一般に、2つのステージで2D変換を適用する。たとえば、ビデオコーダは、残差値に水平方向へ第1のステージを適用し得る。ビデオコーダは、次いで、第1のステージの結果に垂直方向に第2のステージを適用し得る(またその逆も同様)。バッファは、一般に、第1のステージと第2のステージとの間に配置され、それにより、ビデオコーダが、第2のステージの実行より前に第1のステージからのデータを並べ替えることが可能になる。たとえば、垂直方向への第2のステージより前に水平方向に第1のステージを実行するとき、ビデオコーダは、(行順序から列順序に)ステージ間でデータを転置し得、したがって、データは、第2のステージの演算のために適切に構成される。すなわち、ビデオコーダは、データの行が第2のステージの演算より前に列に構成されるようにデータを転置し得る。
[0024]上記で説明したバッファリングは、変換プロセスに遅延をもたらし得る。たとえば、上記で説明した方法で第1のステージからの値を転置するために、ビデオコーダは、第2のステージの演算を開始することの前に第1のステージ全体が完了するのを待たなければならない。転置プロセス自体も遅延をもたらし得る。これらの遅延は、ブロックサイズとともに増加し得る。たとえば、比較的大きいブロック(たとえば、高効率ビデオコーディング(HEVC)規格における32×32)を変換することは、大きい関連する遅延を生じ得る。
[0025]本開示の態様は、概して、2D変換の効率的な適用に関する。たとえば、本開示の態様によれば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、上記で説明したように、第1のステージと第2のステージとの間でデータを並べ替えることなしに2D変換を適用し得る。データを並べ替えることは、概して、データの配置を変更することを指すことがあり、これは、データの列を形成するためにデータの行が再配置されるようにデータを転置することを含み得る。したがって、ビデオコーダは、第2のステージに関連する演算と同時に第1のステージに関連する演算を実行し得る。このようにして、ビデオコーダは、変換に関連する遅延を低減または除去し得る。
[0026]一例では、ビデオコーダは、第2のステージによって決定された順序で2D変換の第1のステージから2D変換の第2のステージに値を直接供給し得る(以下「転置先(transpose first)」プロセスと呼ぶ)。別の例では、ビデオコーダは、第1のステージの順序で第2のステージの演算を実行し、それによって、部分的な第2のステージの値を生成し得る。ビデオコーダは、第2のステージ全体が完了するまで部分的な第2のステージの値をアグリゲートし得る(以下「転置後(transpose later)」プロセスと呼ぶ)。
[0027]図1は、ビデオコーディングにおいて変換を実行するための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0028]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を促進するために有用であり得る、任意の他の機器を含み得る。
[0029]いくつかの例では、符号化されたデータは、出力インターフェース22からストレージデバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイスからアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。
[0030]宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を介して、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または、ファイルサーバに記憶されている符号化ビデオデータにアクセスするために適当な、それらの両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0031]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、Dynamic Adaptive Streaming over HTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、種々のマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0032]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、ビデオコーディングにおける変換を実行するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、内蔵ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0033]図1の図示のシステム10は一例にすぎない。変換を実行するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。さらに、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのためのビデオデバイス12とビデオデバイス14の間の一方向または双方向のビデオ送信をサポートし得る。
[0034]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0035]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、符号化ビデオデータを宛先デバイス14に与え得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
[0036]宛先デバイス14の入力インターフェース28はコンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコーディングされたユニット、たとえば、GOPの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0037]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適なエンコーダまたはデコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/または携帯電話、スマートフォン、タブレットコンピュータなどのようなワイヤレス通信デバイスを備え得る。
[0038]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0039]ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC:Advanced Video Coding)と呼ばれるITU−T H.264規格など、ビデオ圧縮規格、またはそのような規格の拡張に従って動作し得る。ITU−T H.264/MPEG−4(AVC)規格は、共同ビデオ部会(JVT:Joint Video Team)として知られる共同パートナーシップの成果として、ISO/IEC動画エキスパーツグループ(MPEG:Moving Picture Experts Group)とともにITU−Tビデオコーディングエキスパーツグループ(VCEG:Video Coding Experts Group)によって策定された。いくつかの態様では、本開示で説明する技法は、H.264規格に概して準拠するデバイスに適用され得る。H.264規格は、ITU−T研究委員会(Study Group)による2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ばれることがある。ビデオ圧縮規格の他の例としては、MPEG−2およびITU−T H.263がある。
[0040]JCT−VCは、高効率ビデオコーディング(HEVC)規格を最近確定した。本開示の技法は、任意の特定のコーディング規格に限定されないが、本技法は、HEVC規格に関係し得る。HEVCでは、ビデオピクチャは、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU)に分割され得る。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードがツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0041]4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUはリーフCUとも呼ばれる。たとえば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
[0042]CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、またはTU、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0043]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU:prediction unit)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64以上のピクセルをもつツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0044]概して、PUは、対応するCUの全部または一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUのためのデータは、PUに対応するTUのためのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。
[0045]TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を含み得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUについての残差データを含むTUを形成し、次いで、CUの変換係数を生成するためにTUを変換し得る。
[0046]変換係数は、通常、TUの変換ブロック(他の色空間も可能であるが、たとえば、Yブロック、Crブロック、Cbブロック)ごとに2Dアレイで構成される。したがって、ビデオエンコーダ20は、一般に、予測残差を変換するときに変換ブロックごとに2D変換を適用する。ビデオエンコーダ20は、2つのステージで2D変換を適用し得る。たとえば、ビデオエンコーダ20は、予測残差に水平方向へ第1のステージを適用し、その後、第1のステージの結果に垂直方向へ第2のステージを適用し得る(またその逆も同様)。
[0047]上記の例では、ビデオエンコーダ20は、変換の第2のステージを実行する前に、変換の第1のステージからの結果を並べ替え得る。たとえば、ビデオエンコーダ20は、第1のステージの結果を転置し、ビデオエンコーダ20は、適切な方向性で第2のステージを実行することが可能になり得る。ビデオエンコーダ20は、第2のステージを実行する前に第1のステージの結果を転置するためにバッファを使用し得る。
[0048]いくつかの事例では、上記で説明した並べ替えプロセスは、変換プロセスに遅延をもたらし得る。たとえば、上記で説明した方法で第1のステージからの値を転置するために、ビデオエンコーダ20は、第1のステージ全体が完了するまで待ち得る。転置プロセス自体も遅延をもたらし得る。これらの遅延は、ブロックサイズとともに増加し得る。たとえば、比較的大きいブロックを変換することは、比較的大きい関連する遅延を生じ得る。説明のための一例では、TUの変換係数の32×32のブロックを転置するために1024回の処理サイクルが必要とされ得る。
[0049]本開示の態様によれば、ビデオエンコーダ20は、第1のステージの結果のブロックを生成するために、残差ビデオデータ値のブロックに2D変換の第1のステージを適用し得る。ビデオエンコーダ20はまた、変換係数のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2D変換の第2のステージを適用し得る。
[0050]残差値を変換するとき、ビデオエンコーダ20は、一般に、一度に残差値の1つの行(または列)、たとえば、第1のステージによって変換されている行(または列)をバッファし得る。本開示の態様によれば、一例では、ビデオエンコーダ20は、変換を実行する前に変換されているブロックに関連するすべての残差データをバッファし得る。この例では、ビデオエンコーダ20は、以下でより詳細に説明するように、第2のステージによって必要とされる順序で第1のステージを処理し得、それにより、ビデオエンコーダ20は、第2のステージの演算より前にデータを並べ替えることなしに第2のステージによって必要とされる順序で第1のステージから第2のステージにデータを直接供給することが可能になり得る。
[0051]別の例では、すべての残差データをバッファし、第1のステージの演算が実行される方法を変えるのではなく、本開示の態様によれば、ビデオエンコーダ20は、第2のステージの結果が処理される方法を変え得る。たとえば、ビデオエンコーダ20は、従来の方法で、たとえば、行ごとにまたは列ごとに、第1のステージの演算を実行し得る。第1のステージの演算が完了すること(および第1のステージの結果を並べ替えること)まで待つのではなく、ビデオエンコーダ20は、部分的な第2のステージの結果を生成するために、第1のステージの結果を、それらが生成されると、第1のステージの結果を並べ替えることなく、第2のステージに直接供給し得る。すなわち、ビデオエンコーダ20は、第1のステージの結果ごとに部分的な第2のステージの結果を生成し得る。ビデオエンコーダ20は、次いで、最終的な第2のステージの結果を生成するために、各変換係数について部分的な結果をアグリゲート(aggregate)し得る。
[0052]変換の後、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ(rounded down)得、ここで、nはmよりも大きい。
[0053]ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実行し得る。
[0054]量子化変換係数を走査して1次元のベクトルを形成した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化の方法に従って、1次元のベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0055]ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびピクチャグループ(GOP:group of pictures)ベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30に送り得る。GOPシンタックスデータは、それぞれのGOP中のピクチャの数を記述し得、ピクチャシンタックスデータは、対応するピクチャを符号化するために使用される符号化/予測モードを示し得る。
[0056]ビデオデコーダ30は、コード化されたビデオデータを受信すると、ビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実行し得る。本開示の態様によれば、たとえば、ビデオデコーダ30は、ビデオエンコーダ20に関して上記で説明したのと同様の方法で変換を実行し得る。たとえば、上記で説明した変換プロセスを、順変換(たとえば、変換領域への残差値の変換)に関して説明したが、逆変換(たとえば、残差値への変換係数の変換)に同様の技法が適用可能であることを理解されたい。したがって、ビデオデコーダ30は、パースされた変換係数を符号化ビットストリームから残差値に逆変換するために本開示の変換技法を実行し得る。
[0057]このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオコーディングプロセスにおいてビデオデータを効率的に変換するために本開示の技法を実行し得る。たとえば、値を並べ替えることなしに変換の第2のステージの演算を実行することにより、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のステージの演算と第2のステージの演算とを同時に実行することが可能になり得る。
[0058]説明のための一例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第1の結果を生成するために、変換の第1のステージで第1の行(または列)を処理し得る。追加の第1のステージの演算が実行されるのを待つことなしに、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のステージの結果に変換の第2のステージを適用し得る。さらに、ビデオエンコーダ20および/またはビデオデコーダ30は、第2の結果を生成するために、変換の第1のステージで第2の行(または列)を同時に処理し得る。さらに、ビデオエンコーダ20およびビデオデコーダ30は、変換の第1のステージと第2のステージとの間で値を並べ替えることに関連する時間を除去することによって効率を増加させ得る。
[0059]いくつかの事例では、上記で説明した手法の間にトレードオフがあり得る。たとえば、1つのブロック全体の値(たとえば、残差値または係数値)でバッファを充填し、変換の第2のステージの順序で変換の第1のステージを実行するプロセスは、ビデオコーダの1つまたは複数の他の構成要素と共有され得る比較的大量の利用可能なメモリ帯域幅を有する(ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダに適し得る。対照的に、部分的な第2のステージの結果を生成およびアグリゲートするプロセスは、比較的固定の量のメモリ帯域幅を有するビデオコーダに適し得る。したがって、本開示の技法は、様々な構成を有する様々なビデオコーダに適用可能であり得る。
[0060]図2は、本開示で説明する変換のための技法を使用し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20について、例示のためにHEVCコーディングのコンテキストで説明するが、変換係数の走査を必要とし得る他のコーディング規格または方法に関して本開示を限定するものではない。
[0061]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接ピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラ(I)モードは、空間ベースのいくつかの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、時間ベースのいくつかの圧縮モードのいずれかを指すことがある。
[0062]図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオピクチャ内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、分割ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。追加のフィルタ(ループ内またはループ後)もデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0063]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオピクチャまたはスライスを受信する。ピクチャまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測ユニット46は、代替的に、空間圧縮を行うために、コーディングされるべきブロックと同じピクチャまたはスライス中の1つまたは複数の隣接ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0064]その上、分割ユニット48は、前のコーディングパスでの前の区分化方式の評価に基づいて、ビデオデータのブロックを、サブブロックに区分し得る。たとえば、パーティションユニット48は、初めにピクチャまたはスライスをLCUに区分し、レート歪み分析(たとえば、レート歪み最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、LCUをサブCUに区分することを示す4分木データ構造をさらに生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0065]モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与え得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピー符号化ユニット56に与える。
[0066]動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のピクチャ(または他のコード化ユニット)内のコーディングされている現在のブロックに対する参照ピクチャ(または他のコード化ユニット)内の予測ブロックに対する、現在のビデオピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの4分の1ピクセル位置、8分の1ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と小数ピクセル位置とに対する動き探索を実行し、小数ピクセル精度で動きベクトルを出力し得る。
[0067]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0068]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。加算器50は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0069]イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、使用するために適切なイントラ予測モードを、テストされたモードから選択し得る。
[0070]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードに対して、レート歪み分析を使用してレート歪みの値を計算し、テストされたモードの中から最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレート歪み値を呈するかを決定するために、様々な符号化されたブロックの歪みおよびレートから比を計算し得る。
[0071]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。
[0072]変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にはDCTに類似の他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
[0073]本開示の態様によれば、変換処理ユニット52は、変換を実行することより前に変換されているブロックに関連するすべての残差データをバッファし得る。この例では、変換処理ユニット52は、第2のステージによって必要とされる順序で第1のステージを処理し得る。したがって、変換処理ユニット52は、第2のステージを実行することより前にデータを並べ替えることなしに第2のステージによって必要とされる順序で第1のステージから第2のステージにデータを直接供給し得る。変換処理ユニット52は、第2のステージの演算と同時に少なくともいくつかの第1のステージの演算を実行し得る。たとえば、変換処理ユニット52は、第1の行(または、2D変換の構成によっては第1の列)が完了するとすぐに、第2のステージの演算を開始し得る。
[0074]変換の第1のステージを実行する前にすべての残差データをバッファするプロセスは、変換の第2のステージのために必要なデータの並べ替えが第1のステージの演算より前に利用可能であるので、本明細書では、「転置先(transpose first」」プロセスと呼ばれることがある。ただし、転置先プロセスでは、値の「転置」または並べ替えが実際には行われないことに留意されたい。むしろ、上記のように、「転置先」は、概して、第1のステージと第2のステージとの間で値を転置する必要を除去する、第1のステージの演算が実行される順序に言及する。
[0075]説明のための一例では、2D変換が残差データのブロックに適用されると仮定し、変換の第1のステージが行(row)方向であり、一方、変換の第2のステージが列(column)方向であると仮定する。この例では、以下の図5に関してより詳細に説明するように、変換処理ユニット52は、列順序で変換の第1のステージを適用し、それによって、第1のステージの結果の列を生成し得る。従って、変換処理ユニット52は、次いで、第1のステージの結果に変換の第2のステージを適用し得る。
[0076]別の例では、本開示の態様によれば、変換処理ユニット52は、第1のステージの方向性に従って、たとえば、行ごとに、または列ごとに第1のステージの演算を実行し得る。変換処理ユニット52は、次いで、第1のステージからの結果を並べ替えることなしに、第1のステージの結果ごとに部分的な第2のステージの結果を生成し得る。変換処理ユニット52は、次いで、最終的な第2のステージの結果を生成するために、変換係数ごとに部分的な結果をアグリゲート(aggregate)し得る。
[0077]部分的な第2のステージの結果を生成し、それらの結果をアグリゲートするプロセスは、第2のステージの演算が完了するまで第2のステージのデータが利用可能でないので、本明細書では、「転置後(transpose later)」プロセスと呼ばれ得る。ただし、この場合も、第1のステージまたは第2のステージの演算より前に値の「転置」または並べ替えが行われないことに留意されたい。むしろ、上記のように、「転置後」は、概して、第1のステージと第2のステージとの間で値を転置する必要を除去する、第1のステージの演算が実行される順序に言及する。
[0078]説明のための一例では、2D変換が残差データのブロックに適用されると仮定し、変換の第1のステージが行方向であり、一方、変換の第2のステージが列方向であると仮定する。この例では、以下の図7に関してより詳細に説明するように、変換処理ユニット52は、行順序で変換の第1のステージを適用し、それによって、第1のステージの結果の行を生成し得る。変換処理ユニット52は、第1のステージの結果が利用可能になるにつれて、第1のステージの結果の各々に変換の第2のステージを適用し、それによって、複数の第2のステージの結果を生成し得る。変換の第2のステージが完了すると、変換処理ユニット52は、変換係数ごとに部分的な結果をアグリゲートし得る。
[0079]いずれの場合も、変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が、走査を実行し得る。
[0080]量子化の後、エントロピー符号化ユニット56は、量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは近隣ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[0081]逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。本開示の態様によれば、逆変換ユニット60は、変換係数から残差値を生成するために、変換処理ユニット52に関して上記で説明したプロセスの逆を適用し得る。たとえば、逆変換ユニット60は、変換処理ユニット52に関して上記で説明した「転置先」または「転置後」変換プロセスを使用して、変換係数のブロックに2D逆変換を適用し得る。
[0082]動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオピクチャ中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0083]このようにして、ビデオエンコーダ20は、第1のステージの結果のブロックを生成するために残差ビデオデータ値のブロックに2次元変換の第1のステージを適用することと、変換係数のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用することとを行い得るビデオエンコーダの一例を表す。
[0084]図3は、本開示で説明する変換のための技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。
[0085]復号プロセスの間、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化ビデオビットストリームをビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0086]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオピクチャがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の、参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照ピクチャリスト、リスト0およびリスト1を構成し得る。
[0087]動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を決定し、その予測情報を使用して、復号されている現在のビデオブロックの予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0088]動き補償ユニット72はまた、補間フィルタに基づいて、補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0089]逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオエンコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0090]逆変換ユニット78は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。逆変換は、(たとえば、ビデオエンコーダ20によって)ビデオ符号化中に適用される順変換とは逆のものであり得る。本開示の態様によれば、逆変換ユニット78は、ビデオエンコーダ20に関して上記で説明した「転置先」または「転置後」プロセスに従って変換を実行し得る。
[0091]たとえば、逆変換ユニット78は、変換を実行することより前に変換されているブロックに関連するすべてのデータ(たとえば、逆量子化の結果)をバッファし得る。この例では、逆変換ユニット78は、第2のステージによって必要とされる順序で逆変換の第1のステージを処理し得る。したがって、逆変換ユニット78は、第2のステージを実行する前にデータを並べ替えることなしに第2のステージによって必要とされる順序で第1のステージから第2のステージにデータを直接供給し得る。逆変換ユニット78は、第2のステージの演算と同時に少なくともいくつかの第1のステージの演算を実行し得る。たとえば、逆変換ユニット78は、第1の行(または、2D変換の構成によっては第1の列)が完了するとすぐに、第2のステージの演算を開始し得る。
[0092]別の例では、本開示の態様によれば、逆変換ユニット78は、第1のステージの方向性に従って第1のステージの演算を実行し得る。逆変換ユニット78は、次いで、第1のステージからの結果を並べ替えることなしに、第1のステージの結果ごとに部分的な第2のステージの結果を生成し得る。逆変換ユニット78は、最終的な第2のステージの結果を生成するために、変換係数ごとに部分的な結果をアグリゲートし得る。この場合も、逆変換ユニット78は、第2のステージの演算と同時に少なくともいくつかの第1のステージの演算を実行し得る。たとえば、逆変換ユニット78は、第1のステージの第1の値が評価されるとすぐに第2のステージの演算を開始し得る。
[0093]いずれの場合も、動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。
[0094]所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタ処理するデブロッキングフィルタも適用され得る。他のループフィルタ(コーディングループの中、またはコーディングループの後のいずれかにおける)も、ピクセルの遷移を平滑化し、または場合によってはビデオ品質を改善するために使用され得る。次いで、所与のピクチャ中の復号されたビデオブロックは、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するために、復号されたビデオを記憶する。
[0095]このようにして、図3のビデオデコーダ30は、第1のステージの結果のブロックを生成するために残差ビデオデータ値のブロックに2次元変換の第1のステージを適用することと、変換係数のブロックを生成するために第1のステージの結果を並べ替えることなしに第1のステージの結果のブロックに2次元変換の第2のステージを適用することとを行い得るビデオデコーダの一例を表す。
[0096]図4は、本開示の技法を実装し得る、例示的なビデオエンコーダ92の一部分を示すブロック図である。いくつかの例では、図4に関して図示し説明したビデオエンコーダ92の一部分は、上記で説明したビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)の一部分を形成し得る。
[0097]いずれの場合も、図4の例示的なビデオエンコーダ92は、上記で説明した「転置先」プロセスと呼ばれる本開示の技法を行い得る。図4に示すビデオエンコーダ92の一部分は、概して、プリフェッチバッファ94と、順(forward)行変換ユニット98と、順(forward)列変換ユニット102と、量子化ユニット106と、メモリ110と、逆量子化ユニット114と、逆(inverse)列変換ユニット118と、逆(inverse)行変換ユニット122とを含む。図4に示すビデオエンコーダ92の1つまたは複数のユニットは、高度に統合され得るが、概念的な目的のために別々に示してあることを理解されたい。
[0098]いくつかの例では、プリフェッチバッファ94は、ビデオエンコーダ92の構成要素を含む変換エンジンに関連するメモリであり得る。他の例では、プリフェッチバッファ94は、ビデオエンコーダ92の様々な構成要素によって共有されるビデオエンコーダ92のメモリ中で割り振られ得る。いずれの場合も、プリフェッチバッファ94は、様々なサイズの残差データのブロック全体を記憶するようにサイズ決定され得る。さらに、いくつかの事例では、プリフェッチバッファ94にアクセスするための帯域幅は、比較的迅速にプリフェッチバッファ94を充填するのに十分大きくなり得る。
[0099]いくつかの例では、順行変換ユニット98と順列変換ユニット102とは、図2のビデオエンコーダ20に示す変換処理ユニット52と同様に構成されるか、またはそれと同じものであり得る。順行変換ユニット98および順列変換ユニット102は、残差データのブロックに、それぞれ、2D変換の順行変換および順列変換を適用し得る。順行変換は、変換の第1のステージと呼ばれることがあり、順列変換は、変換の第2のステージと呼ばれることがある。図4に示す順行変換ユニット98と順列変換ユニット102との構成は、例示のためのものに過ぎず、他の例では、順行変換ユニット98と順列変換ユニット102とは入れ換えられ得るか、または、異なる方向性を用いた変換が使用され得る。
[0100]量子化ユニット106は、順行変換ユニット98と順列変換ユニット102とからの変換係数を量子化し得る。いくつかの事例では、量子化ユニット106は、図2に示した量子化ユニット54と同様に構成されるか、またはそれと同じものであり得る。メモリ110は、量子化変換係数を記憶し得、ビデオエンコーダ92の1つまたは複数の他の構成要素と共有され得る。
[0101]逆量子化ユニット114は、量子化ユニット106とは逆の方法で逆量子化を実行し得る。同様に、逆列変換ユニット118および逆行変換ユニット122は、それぞれ、順列変換ユニット102および順行変換ユニット98とは逆の方法で変換を適用し得る。いくつかの例では、逆列変換は、逆変換の第1のステージと呼ばれることがあり、逆行変換は、変換の第2のステージと呼ばれることがある。
[0102]演算中、本開示の態様によれば、ビデオエンコーダ92は、プリフェッチバッファ94にピクセル値のブロック全体を記憶し得る。ビデオエンコーダ92は、順行変換ユニット98にピクセル値と予測ピクセル値との間の差分(残差値)を供給し得る。
[0103]順行変換ユニット98は、受信された残差値に水平方向に変換を適用し得る。本開示の態様によれば、順行変換ユニット98は、列順序で残差値に水平方向に変換を適用し得る。したがって、以下の図5に関してより詳細に説明するように、順行変換ユニット98は、順列変換ユニット102による適切な変換のために必要とされる順序で順列変換ユニット102に第1のステージの結果(部分的に変換された残差値)を与える。このようにして、ビデオエンコーダ92は、順行変換ユニット98と順列変換ユニット102との間で第1のステージの結果をバッファし、転置する(入れ換える)必要がない。
[0104]順列変換ユニット102は、残差値から変換係数を生成するために、受信された第1のステージの結果に対して順列変換を実行し得る。本開示の態様によれば、順列変換ユニット102は、順行変換ユニットと同時に少なくともいくつかの演算を実行し得る。たとえば、順列変換ユニット102は、第1のステージの結果を受信すると、第1のステージの演算を完了する前に第2のステージの演算を実行し始め得る。
[0105]量子化ユニット106は、順列変換ユニット102からの変換係数を量子化し、メモリ110に量子化変換係数を記憶する。いくつかの事例では、固定長またはエントロピーコーディングモジュールなどのビデオエンコーダ92のコーディングモジュールは、符号化ビットストリームを形成するためにメモリ110から量子化変換係数を取り出し得る。
[0106]ビデオエンコーダ92はまた、予測コーディングのための参照フレームを生成するために、メモリから量子化変換係数を取り出し得る。したがって、逆量子化ユニット114はまた、変換係数を生成するために、量子化変換係数を取り出し、逆量子化を実行し得る。
[0107]逆列変換ユニット118は、逆量子化ユニット114から変換係数を受信し得、受信された値に対して逆列変換を実行し得る。本開示の態様によれば、逆列変換ユニット118は、逆行変換ユニット122による適切な変換のために必要とされる順序で逆行変換ユニット122に第1のステージの結果(部分的に逆変換された残差値)を与え得る。このようにして、ビデオエンコーダ92は、逆列変換ユニット118と逆行変換ユニット122との間で第1のステージの結果をバッファし、転置する必要がない。
[0108]逆行変換ユニット122は、変換係数から(不可逆コーディング技法のために元の残差値とはわずかに異なり得る)再構成された残差値を生成するために、受信された第1のステージの結果に対して逆行(inverse row)変換を実行し得る。本開示の態様によれば、逆行変換ユニット122は、逆列変換ユニット118と同時に少なくともいくつかの演算を実行し得る。たとえば、逆行変換ユニット122は、第1のステージの結果を受信すると、第1のステージの演算を完了する前に第2のステージの演算を実行し始め得る。
[0109]図4を、ビデオエンコーダに関して説明したが、上記で説明した技法がビデオデコーダによっても実行され得ることを理解されたい。すなわち、図3に関して上述したように、ビデオデコーダは、概して逆の方法で、逆変換の第1のステージと逆変換の第2のステージとの間でデータを並べ替えることなしに本技法を実行し得る。
[0110]図5は、本開示の技法を示す一連の行列である。図5に示す一連の行列に、概して、上記で説明した「転置先(transport first)」プロセスを示す。ビデオエンコーダ92(図4)に関して説明するが、図5に関して説明するプロセスが、(たとえば、ビデオエンコーダ20、ビデオデコーダ30、または他のプロセッサを含む)様々な他のプロセッサによって実行され得ることを理解されたい。
[0111]図5の例は、第1のステージの結果134(y00〜y33)を生成するために、変換の第1のステージ132(a00〜a33)が適用される残差値130(x00〜x33)のアレイを含む。変換の第1のステージ132は、順行(forward row)変換として構成され得る。さらに、図5は、第2のステージの結果138(z00〜z03)を生成するために、第1のステージの結果134に適用される変換の第2のステージ136(b00〜b33)を含む。変換の第2のステージ136は、順列(forward column)変換として構成され得る。
[0112]図5に示すように、順行変換ユニット98は、残差値130(x00〜x33)に対して第1のステージ132(a00〜a33)を実行する。(たとえば、y00と、それに続くy01と、それに続くy02となどを生成するために)行順序で結果134を生成するために第1のステージ132を実行するのではなく、順行変換ユニット98は、列ごとの形で結果134を生成するために列順序で第1のステージ132に残差値130の各行を適用し得る。すなわち、順行変換ユニット98は、第1のステージの結果y00(たとえば、y00=x00*a00+x01*a10+x02*a20+x03*a30)を生成するために、残差値の第1の行130(x00、x01、x02、およびx03)に第1のステージの第1の列132(a00、a10、a20、およびa30)を適用する。同様に、順行変換ユニット98は、第1のステージの結果y10(たとえば、y01=x10*a00+x11*a10+x12*a20+x13*a30)を生成するために、残差値の第2の行130(x10、x11、x12、およびx13)に第1のステージの第1の列132(a00、a10、a20、およびa30)を適用する。順行変換ユニット98は、第1の列の第1のステージの結果134のそれぞれが評価されるまで、このようにして続け得る。順行変換ユニット98は、次いで、順行変換ユニット98がすべての第1のステージの結果134を評価するまで、第1のステージの結果134の第2の列などを生成することに進み得る。
[0113]順列変換ユニット102は、第1のステージの結果の列に列方向に変換を適用する。順行変換ユニット98が、列順序で第1のステージの結果134を生成するので、順列変換ユニット102は、順行変換ユニット98から第1のステージの結果134を受信すると直ちに、第2のステージ136を実行し始め得る。すなわち、順列変換ユニット102は、第1のステージの結果134に対して第2のステージ136を実行する前に、第1のステージの結果134を並べ替える必要がない。さらに、順列変換ユニット102は、順行変換ユニット98が第1のステージ132を実行するのと同時に第2のステージ136を実行し得る。すなわち、順列変換ユニット102は、順行変換ユニット98が第1のステージ132を完了する時間より前に第2のステージ136を実行し始め得る。
[0114]図5に示すように、順列変換ユニット102は、並べ替えることなしに第1のステージの結果134(y00〜y33)に対して第2のステージ136(b00〜b33)を直接実行する。たとえば、順列変換ユニット102は、第2のステージの結果z00(たとえば、z00=b00*y00+b01*y10+b02*y20+b03*y30)を生成するために、第1の列の第1のステージの結果134(y00、y10、y20、およびy30)に対して第2のステージの第1の行136(b00、b01、b02、およびb03)を実行する。同様に、順列変換ユニット102は、第2のステージの結果z10(たとえば、z10=b10*y00+b11*y10+b12*y20+b13*y30)を生成するために、第1のステージの結果の第1の列(y00、y10、y20、およびy30)に対して第2のステージの第2の行136(b10、b11、b12、およびb13)を実行する。順列変換ユニット102は、第1の列の第2のステージの結果138のそれぞれが決定されるまで、このようにして続け得る。順列変換ユニット138は、次いで、順列変換ユニット102がすべての第2のステージの結果138を決定するまで、第2のステージの結果138の第2の列などを生成することに進み得る。
[0115]残差値130を最初にプリフェッチし、それでプリフェッチバッファ94を充填し、第2のステージ136のために必要とされる順序で第1のステージ132を実行することによって、ビデオエンコーダ92は、第1のステージと第2のステージとの間で値をバッファすること、および/または、並べ替えることに関連する遅延を低減し得る。
[0116]図5に関して説明する技法は一例として与えたものにすぎないことを理解されたい。順行変換ユニット98および順列変換ユニット102に関して説明したが、本技法はまた、図4の逆列変換ユニット118および逆行変換ユニット122によって逆方向で実行され得る。他の例では、本技法は、様々な他の処理構成要素によって実行され得る。さらに、図4に関して上述したように、ビデオエンコーダに関して説明したが、上記で説明した技法がビデオデコーダによっても実行され得ることを理解されたい。
[0117]図6は、本開示の技法を実装し得る、例示的なビデオエンコーダ140の一部分を示すブロック図である。いくつかの例では、図6に関して図示し説明したビデオエンコーダ140の一部分は、上記で説明したビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)の一部分を形成し得る。
[0118]いずれの場合も、図4の例示的なビデオエンコーダ92は、上記で説明した「転置後」プロセスと呼ばれる本開示の技法を行い得る。図6に示すビデオエンコーダ140の一部分は、概して、順行変換ユニット142と、順列変換ユニット144と、部分結果バッファ148と、量子化ユニット152と、メモリ156と、逆量子化ユニット160と、逆列変換ユニット164と、逆行変換ユニット168と、部分結果バッファ172とを含む。図6に示すビデオエンコーダ140の1つまたは複数のユニットは、高度に統合され得るが、概念的な目的のために別々に示してあることを理解されたい。
[0119]いくつかの例では、順行変換ユニット142と順列変換ユニット144とは、図2のビデオエンコーダ20に示す変換処理ユニット52と同様に構成されるか、またはそれと同じものであり得る。順行変換ユニット142および順列変換ユニット144は、残差データのブロックに、それぞれ、2D変換の順行変換および順列変換を適用し得る。順行変換は、変換の第1のステージと呼ばれることがあり、順列変換は、変換の第2のステージと呼ばれることがある。図6に示す順行変換ユニット142と順列変換ユニット144との構成は、例示のためのものに過ぎず、他の例では、順行変換ユニット142と順列変換ユニット144とは入れ換えられ得、または、異なる方向性を用いた変換が使用され得る。
[0120]部分結果バッファ148は、ビデオエンコーダ140の構成要素を含む変換エンジンに関連するメモリであり得る。他の例では、部分結果バッファ148は、ビデオエンコーダ140の様々な構成要素によって共有されるビデオエンコーダ140のメモリ中で割り振られ得る。いずれの場合も、以下でより詳細に説明するように、部分結果バッファ148は、様々なサイズのブロックのための変換係数を記憶するようにサイズ決定され得る。たとえば、部分結果バッファ148は、ビデオデータのブロックのための変換係数を生成するためにアグリゲートされ得る、順列変換ユニット144からの結果を記憶し得る。いくつかの例では、部分結果バッファ148は、循環(circular)先入れ先出し(FIFO)バッファであり得る。
[0121]量子化ユニット152は、順行変換ユニット142と順列変換ユニット144とからの変換係数を量子化し得る。いくつかの事例では、量子化ユニット152は、図2に示した量子化ユニット54と同様に構成されるか、またはそれと同じものであり得る。メモリ156は、量子化変換係数を記憶し得、ビデオエンコーダ140の1つまたは複数の他の構成要素と共有され得る。
[0122]逆量子化ユニット160は、量子化ユニット152とは逆の方法で逆量子化を実行し得る。同様に、逆列変換ユニット164および逆行変換ユニット168は、それぞれ、順列変換ユニット144および順行変換ユニット142とは逆の方法で変換を適用し得る。いくつかの例では、逆列変換は、逆変換の第1のステージと呼ばれることがあり、逆行変換は、変換の第2のステージと呼ばれることがある。
[0123]部分結果バッファ148とは別々に示しているが、いくつかの例では、部分結果バッファ172は、部分結果バッファ148と統合され得る。以下でより詳細に説明するように、部分結果バッファ172は、様々なサイズのブロックのための残差データを記憶するようにサイズ決定され得る。たとえば、部分結果バッファ172は、ビデオデータのブロックのための残差値を生成するためにアグリゲートされ得る、逆行変換ユニット168からの結果を記憶し得る。
[0124]演算中、本開示の態様によれば、ビデオエンコーダ140は、順行変換ユニット142にピクセル値と予測ピクセル値との間の差分(残差値)を供給し得る。順行変換ユニット142は、受信された残差値に水平方向に変換を適用し得る。たとえば、順行変換ユニット142は、行順序で残差値に水平方向に変換を適用し得る。順行変換ユニット142は、行順序で順列変換ユニット144に第1のステージの結果(部分的に変換された残差値)を与える。
[0125]順列変換ユニット144は、残差値から変換係数を生成するために、受信された第1のステージの結果に対して順列変換を実行し得る。順列変換ユニット144は、順行変換ユニットと同時に少なくともいくつかの演算を実行し得る。たとえば、順列変換ユニット144は、順行変換ユニット142から第1のステージの結果を受信すると、第1のステージの演算の完了より前に、すなわち、すべての第1のステージの結果が生成される前に、第2のステージの演算を実行し始め得る。
[0126]本開示の態様によれば、順列変換ユニット144は、複数の部分的な変換結果を生成し、部分結果バッファ148に部分的な変換結果を記憶し得る。たとえば、以下の図7に関してより詳細に説明するように、順列変換ユニット144は、行順序で第1のステージの結果に列方向の変換を適用し得る。したがって、順列変換ユニット144は、第1のステージの結果ごとに部分的な第2のステージの結果を生成し得る。
[0127]部分的な第2のステージの結果を生成し、部分結果バッファ148に部分的な結果を記憶することによって、順列変換ユニット144は、結果を並べ替えることなしに第1のステージの結果に順列変換を適用し得る。したがって、ビデオエンコーダ140は、第2のステージを適用する前に第1のステージの結果をバッファし、転置する必要がない。むしろ、ビデオエンコーダ140は、変換係数を生成するために部分結果バッファ148に記憶された部分的な第2のステージの結果をアグリゲートし、ビデオエンコーダ140は、次いで、それをメモリ156に記憶し得る。いくつかの例では、上記のように、部分結果バッファ148は、循環FIFOバッファを形成し得る。そのような例では、部分的な結果が生成されるにつれて、各部分的な結果が、(結果行列中の同じ位置に関連する)対応する他の部分的な結果とアグリゲートされ得る。したがって、ビデオエンコーダ140は、第1の行の結果の各行が第2のステージで処理されるにつれて結果をアグリゲートすることができる。
[0128]本開示の態様によれば、順列変換ユニット144は、順行変換ユニット142と同時に少なくともいくつかの演算を実行し得る。たとえば、順列変換ユニット144は、第1のステージの結果を受信すると、(順行変換ユニット142において)第1のステージの演算を完了する前に、すなわち、すべての第1のステージの結果が生成される前に、第2のステージの演算を実行し始め得る。
[0129]量子化ユニット152は、(アグリゲーションの後に)変換係数を量子化し、メモリ156に量子化変換係数を記憶する。いくつかの事例では、固定長またはエントロピーコーディングモジュールなどのビデオエンコーダ140のコーディングモジュールは、符号化ビットストリームを形成するためにメモリ156から量子化変換係数を取り出し得る。
[0130]ビデオエンコーダ140はまた、予測コーディングのための参照フレームを生成するために、メモリから量子化変換係数を取り出し得る。したがって、逆量子化ユニット160はまた、変換係数を生成するために、量子化変換係数を取り出し、逆量子化を実行し得る。
[0131]逆列変換ユニット164は、逆量子化ユニット160から変換係数を受信し得、受信された値に対して逆列変換を実行し得る。逆列変換ユニット164は、逆行変換ユニット168に第1のステージの結果(部分的に逆変換された残差値)を与え得る。逆行変換ユニット168は、変換係数から残差値を生成するために、受信された第1のステージの結果に対して逆行変換を実行し得る。
[0132]本開示の態様によれば、逆行変換ユニット168は、複数の部分的な変換結果を生成し、部分結果バッファ172に部分的な変換結果を記憶し得る。たとえば、逆行変換ユニット168は、列順序で第1のステージの結果に行方向の変換を適用し得る。したがって、逆行変換ユニット168は、第1のステージの結果ごとに部分的な第2のステージの結果を生成し得る。
[0133]部分的な第2のステージの結果を生成し、部分結果バッファ172に部分的な結果を記憶することによって、逆行変換ユニット168は、結果を並べ替えることなしに第1のステージの結果に逆行変換を適用し得る。したがって、ビデオエンコーダ140は、第2のステージを適用することより前に第1のステージの結果をバッファし、転置する必要がない。むしろ、ビデオエンコーダ140は、残差値を生成するために部分結果バッファ172に記憶された部分的な第2のステージの結果をアグリゲートし、ビデオエンコーダ140は、次いで、それを参照ピクチャを決定するために使用し得る。本開示の態様によれば、逆行変換ユニット168は、逆列変換ユニット164と同時に少なくともいくつかの演算を実行し得る。たとえば、逆行変換ユニット168は、第1のステージの結果を受信すると、(逆列変換ユニット164において)第1のステージの演算を完了するより前に第2のステージの演算を実行し始め得る。
[0134]図6を、ビデオエンコーダに関して説明したが、上記で説明した技法がビデオデコーダによっても実行され得ることを理解されたい。すなわち、図3に関して上述したように、ビデオデコーダは、概して逆の方法で、逆変換の第1のステージと逆変換の第2のステージとの間でデータを並べ替えることなしに本技法を実行し得る。
[0135]図7は、本開示の技法を示す一連の行列である。図7に示す一連の行列に、概して、上記で説明した「転置後」プロセスを示す。ビデオエンコーダ140(図6)に関して説明するが、図7に関して説明するプロセスが、(たとえば、ビデオエンコーダ20、ビデオエンコーダ92、ビデオエンコーダ140、ビデオデコーダ30、または他のプロセッサを含む)様々な他のプロセッサによって実行され得ることを理解されたい。
[0136]図7の例は、第1のステージの結果184(y00〜y33)を生成するために、変換の第1のステージ182(a00〜a33)が適用される残差値180(x00〜x33)のアレイを含む。さらに、図7は、第2のステージの結果190(z00〜z33)を形成するためにアグリゲートされ得る部分的な第2のステージの結果188を生成するために、第1のステージの結果184に適用される変換の第2のステージ186(b00〜b33)を含む。
[0137]図7に示すように、順行変換ユニット142は、残差値180(x00〜x33)に対して第1のステージ182(a00〜a33)を実行し、これにより、第1のステージの結果184(y00〜y33)がもたらされる。図4および図5(「転置先」)に関して図示し説明した例とは対照的に、順行変換ユニット142は、(第1のステージの結果184、y00、y01、y02、およびy03の周りの円によって示されるように)行順序で第1のステージの結果184を生成するために、残差値の第1の行に対して第1のステージ182を実行する。たとえば、順行変換ユニット142は、第1のステージの結果y00(たとえば、y00=x00*a00+x01*a10+x02*a20+x03*a30)を生成するために、残差値の第1の行180(x00、x01、x02、およびx03)に第1のステージの第1の列(a00、a10、a20、およびa30)を適用する。同様に、順行変換ユニット142は、第1のステージの結果y01(たとえば、y01=x00*a01+x01*a11+x02*a21+x03*a31)を生成するために、残差値の第1の行180(x00、x01、x02、およびx03)に第1のステージの第2の列182(a01、a11、a21、およびa31)を適用する。順行変換ユニット142は、第1の行の第1のステージの結果184のそれぞれが評価されるまで、このようにして続け得る。順行変換ユニット142は、次いで、順行変換ユニット142がすべての第1のステージの結果184を評価するまで、第1のステージの結果184の第2の行などを生成することに進み得る。
[0138]さらに、第1のステージの結果の列全体(たとえば、列方向の第2のステージのために一般に必要とされるであろう、y00、y10、y20、y30)が利用可能になるのを待つのではなく、順列変換ユニット144は、行順序で部分的な第2のステージの結果を生成し得る。たとえば、順行変換ユニット142が、第1の列の最初の第1のステージの結果184(y00)を評価するとすぐに、順列変換ユニット144は、最初の第1のステージの結果(y00)に第2のステージ186(b00〜b33)を適用し得る。この例では、順列変換ユニット144は、(下向き矢印によって示されるように)第1の列に示す部分的な結果188(b00*y00、b10*y00、b20*y00、およびb30*y00)を生成し得る。
[0139]上記のように、順行変換ユニット142は行順序で進む。したがって、第2の第1のステージの結果184(y01)が利用可能になると、順列変換ユニットは、(下向き矢印によって示されるように)第2の列に示す部分的な結果188(b00*y01、b10*y01、b20*y01、およびb30*y01)を生成し得る。順行変換ユニット142が追加の第1のステージの結果184を生成すると、順列変換ユニット144は、対応する追加の部分的な結果188を生成し得る。したがって、順行変換ユニット142と順列変換ユニット144とは同時に動作し得、ビデオエンコーダ140は、第1の変換ステージと第2の変換ステージとの間で第1のステージの結果184を並べ替えない。
[0140]ビデオエンコーダ140は、部分結果バッファ148に部分的な結果の各々を記憶し得る。ビデオエンコーダ140は、順列変換ユニット144が第2のステージを完了すると部分的な結果をアグリゲートし得る。たとえば、図7の例に示すように、ビデオエンコーダ140は、b00*y00(y00からの部分的な結果)と、b01*y10y10からの部分的な結果)と、b02*y20y20からの部分的な結果)と、b03*y30y30からの部分的な結果)とをアグリゲートすることによって第2のステージの結果190(z00)を生成し得る。ビデオエンコーダ140は、同様の方法で残りの第2のステージの結果190を生成し得る。
[0141]いくつかの例では、ビデオエンコーダ140は、部分的な結果が利用可能になるにつれて、第2のステージの結果をアグリゲートし得る。他の例では、ビデオエンコーダ140は、第2のステージの結果をアグリゲートすることより前に、すべての部分的な第2のステージの結果を生成し得る。
[0142]図7に関して説明する技法は一例として与えたものにすぎないことを理解されたい。順行変換ユニット142、順列変換ユニット144、および部分結果バッファ148に関して説明したが、本技法はまた、図6の逆列変換ユニット164、逆行変換ユニット168、および部分結果バッファ172によって逆方向で実行され得る。他の例では、本技法は、様々な他の処理構成要素によって実行され得る。
[0143]図8は、本開示の技法による、ビデオコーディングにおいてビデオデータを変換する(たとえば、順変換を実行するときに残差データを変換する、または逆変換を実行するときに変換係数を変換する)ための例示的なプロセスを示す流れ図である。図8に示す例は、概して、ビデオコーダによって実行されるものとして説明する。いくつかの例では、図8のプロセスは、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどによって行われ得ることを理解されたい。
[0144]図8の例では、(たとえば、ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、バッファに、変換されるべきデータを記憶し得る(200)。順変換を実行するときに、たとえば、ビデオコーダは、残差ビデオデータのブロックをプリフェッチし、それをバッファに記憶し得る。逆変換を実行する前に、ビデオコーダは、バッファに変換係数のブロックを記憶し得る。
[0145]ビデオコーダは、次いで、データが第2のステージによって操作されるべき順序で2D変換の第1のステージを実行し得る(202)。たとえば、説明のために、ビデオコーダが、行方向の第1のステージと列方向の第2のステージとを有する2D変換を実行すると仮定する。この例では、ビデオコーダは、列順序で第1のステージ変換を実行し得、したがって、第2のステージは、並べ替えることなしに第1のステージからの結果を直接受信し得る。別の例では、説明のために、ビデオコーダが、列方向の第1のステージと行方向の第2のステージとを有する2D変換を実行すると仮定する。この例では、ビデオコーダは、行順序で第1のステージを実行し得、したがって、第2のステージは、並べ替えることなしに第1のステージの結果を直接受信し得る。様々な他の異なる方向性を有する変換を用いる他の例も可能である。
[0146]いずれの場合も、ビデオコーダは、第1のステージからの結果を並べ替えることなしに変換の第2のステージを実行し得る(204)。たとえば、ビデオコーダが、第2のステージによって要求された順序で第1のステージを実行するので、ビデオコーダは、第2のステージを実行するより前に第1のステージの結果を並べ替える必要はない。したがって、ビデオコーダは、そのような並べ替えに関連する遅延なしに値を効率的に変換し得る。さらに、ビデオコーダは、上記で説明したように、第1のステージおよび第2のステージの少なくとも一部分を同時に実行し得る。
[0147]図9は、本開示の技法による、ビデオコーディングにおいて残差データを変換するための例示的なプロセスを示す流れ図である。図9に示す例は、概して、ビデオコーダによって実行されるものとして説明する。いくつかの例では、図9のプロセスは、ビデオエンコーダ20、ビデオデコーダ30、または様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどによって行われ得ることを理解されたい。
[0148]図9の例では、(たとえば、ビデオエンコーダ20またはビデオデコーダ30などの)ビデオコーダは、2D変換の第1のステージを実行し得る(210)。たとえば、ビデオコーダは、変換残差値を部分的に生成するために順変換の第1のステージを適用し得る。別の例では、ビデオコーダは、部分的に逆変換された変換係数を生成するために逆変換の第1のステージを適用し得る。
[0149]ビデオコーダはまた、部分的な第2のステージの結果を生成するために第1のステージの順序で変換の第2のステージを実行し得る(212)。たとえば、説明のために、ビデオコーダが、残差ビデオデータのブロックに対して、行方向の第1のステージと列方向の第2のステージとを有する2D変換を実行すると仮定する。この例では、ビデオコーダは、第1のステージの結果が行順序で利用可能になるにつれて、第1のステージの結果に対して変換の第2のステージを実行し得る。したがって、(単に一例として)残差値の16×16ブロックについて、ビデオコーダは、最初の第1のステージの結果のための16個の部分的な結果を生成し得る。ビデオコーダはまた、ビデオコーダが第1のステージの結果の第1の行の各第1のステージの結果に対応する部分的な結果を生成するまで、(最初の第1のステージの結果と同じ行中に位置する)行順序で後続の第1のステージの結果のための16個の部分的な結果などを生成し得る。ビデオコーダは、次いで、ブロック全体のための部分的な第2のステージの結果を生成するまで、(第1のステージの結果の次の行が利用可能になるにつれて)第1のステージの結果の次の行などに移動し得る。
[0150]したがって、図9の例に示すように、ビデオコーダは、当該部分的な結果を、特定のロケーション(たとえば、ブロック中の変換係数または残差値のロケーション)のための任意の以前に生成した部分的な結果とアグリゲートし得る(214)。ビデオコーダは、次いで、コーディングされているブロックのための変換が完了しているかどうかを決定し得る(216)。生成された部分的な結果がブロックの最終ロケーションに関連付けられる場合(変換が完了している、ステップ216の「はい」分岐)、ビデオコーダは、アグリゲートされた第2のステージの結果を出力し得る(218)。変換が完了していない場合(ステップ216の「いいえ」分岐)、ビデオコーダは、ステップ210に戻り、次の第1のステージの結果を生成し得る。
[0151]本開示のいくつかの態様について、説明のために開発中のHEVC規格に関して説明した。ただし、本開示で説明する技法は、H.264または他の規格に従って定義されるビデオコーディングプロセスあるいはまだ開発されていないプロプライエタリビデオコーディングプロセスなど、他のビデオコーディングプロセスのために有用であり得る。
[0152]本開示で説明するビデオコーダは、ビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングユニットはビデオエンコーダまたはビデオデコーダを指すことがある。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指すことがある。
[0153]例によっては、本明細書で説明された技法のうちのいずれかの、いくつかの動作またはイベントは、異なる順序で実行され得、追加、統合、または完全に除外され得る(たとえば、すべての説明された動作またはイベントが、本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて実行され得る。
[0154]1つまたは複数の例において、前述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶され、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体または(2)信号もしくはキャリア波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明する技法の実装のために、命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0155]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、任意の接続が、適切にコンピュータ可読媒体と呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、マイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)と、レーザーディスク(登録商標)と、光ディスクと、デジタル多用途ディスク(DVD)と、フロッピー(登録商標)ディスクと、Blu−Ray(登録商標)ディスクとを含み、通常、ディスク(disk)は磁気的にデータを再生し、一方ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるものとする。
[0156]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0157]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0158]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオコーディングにおいてビデオデータを変換する方法であって、
第1のステージの結果のブロックを生成するために、ビデオデータ値のブロックに2次元変換の第1のステージを適用することと、
第2のステージの結果のブロックを生成するために、前記第1のステージの結果を並べ替えることなしに第1のステージの結果の前記ブロックに前記2次元変換の第2のステージを適用することと、
を備える方法。
[C2]
前記2次元変換の前記第1のステージは第1の方向性を有し、前記2次元変換の前記第2のステージは第2の異なる方向性を有する、C1に記載の方法。
[C3]
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶すること、をさらに備え、
前記第1のステージを適用することは、前記第1のステージの結果の列を形成するために、列順序で前記第1のステージを適用することを備え、
前記第2のステージを適用することは、前記第1のステージの結果の前記列に前記第2のステージを直接適用することを備える、
C1に記載の方法。
[C4]
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶すること、をさらに備え、
前記第1のステージを適用することは、前記第1のステージの結果の行を形成するために行順序で前記第1のステージを適用することを備え、
前記第2のステージを適用することは、前記第1のステージの結果の前記行に前記第2のステージを直接適用することを備える、
C1に記載の方法。
[C5]
前記第1のステージを適用することは、行順序で第1のステージの結果の前記ブロックを生成するために、前記第1のステージを適用することを備え、
前記第2のステージを適用することは、複数の部分的な第2のステージの結果を生成するために、行順序で前記第1のステージの結果に前記第2のステージを適用することを備え、
前記方法は、第2のステージの結果の前記ブロックを生成するために、前記複数の部分的な第2のステージの結果をアグリゲートすることをさらに備える、
C1に記載の方法。
[C6]
循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶することをさらに備える、C5に記載の方法。
[C7]
前記第1のステージを適用することは、列順序で第1のステージの結果の前記ブロックを生成するために、前記第1のステージを適用することを備え、
前記第2のステージを適用することは、複数の部分的な第2のステージの結果を生成するために、列順序で前記第1のステージの結果に前記第2のステージを適用することを備え、
前記方法は、第2のステージの結果の前記ブロックを生成するために、前記複数の部分的な第2のステージの結果をアグリゲートすることをさらに備える、
C1に記載の方法。
[C8]
循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶することをさらに備える、C7に記載の方法。
[C9]
前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、C1に記載の方法。
[C10]
前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、C1に記載の方法。
[C11]
ビデオコーディングにおいてビデオデータを変換するための装置であって、
第1のステージの結果のブロックを生成するために、ビデオデータ値のブロックに2次元変換の第1のステージを適用することと、
第2のステージの結果のブロックを生成するために、前記第1のステージの結果を並べ替えることなしに第1のステージの結果の前記ブロックに前記2次元変換の第2のステージを適用することと、
を行うように構成された1つまたは複数のプロセッサを備える装置。
[C12]
前記2次元変換の前記第1のステージは第1の方向性を有し、前記2次元変換の前記第2のステージは第2の異なる方向性を有する、C11に記載の装置。
[C13]
前記1つまたは複数のプロセッサは、
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するようにさらに構成され、
前記第1のステージを適用するために、前記1つまたは複数のプロセッサは、前記第1のステージの結果の列を形成するために、列順序で前記第1のステージを適用するように構成され、
前記第2のステージを適用するために、前記1つまたは複数のプロセッサは、前記第1のステージの結果の前記列に前記第2のステージを直接適用するように構成された、
C11に記載の装置。
[C14]
前記1つまたは複数のプロセッサは、
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するようにさらに構成され、
前記第1のステージを適用するために、前記1つまたは複数のプロセッサは、前記第1のステージの結果の行を形成するために行順序で前記第1のステージを適用するように構成され、
前記第2のステージを適用するために、前記1つまたは複数のプロセッサは、前記第1のステージの結果の前記行に前記第2のステージを直接適用するように構成された、
C11に記載の装置。
[C15]
前記第1のステージを適用するために、前記1つまたは複数のプロセッサは、行順序で第1のステージの結果の前記ブロックを生成するために前記第1のステージを適用するように構成され、
前記第2のステージを適用するために、前記1つまたは複数のプロセッサは、複数の部分的な第2のステージの結果を生成するために行順序で前記第1のステージの結果に前記第2のステージを適用するように構成され、
前記1つまたは複数のプロセッサは、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートするようにさらに構成された、
C11に記載の装置。
[C16]
前記1つまたは複数のプロセッサは、循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶するようにさらに構成された、C15に記載の装置。
[C17]
前記第1のステージを適用するために、前記1つまたは複数のプロセッサは、列順序で第1のステージの結果の前記ブロックを生成するために前記第1のステージを適用するように構成され、
前記第2のステージを適用するために、前記1つまたは複数のプロセッサは、複数の部分的な第2のステージの結果を生成するために列順序で前記第1のステージの結果に前記第2のステージを適用するように構成され、
前記1つまたは複数のプロセッサは、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートするようにさらに構成された、
C11に記載の装置。
[C18]
前記1つまたは複数のプロセッサは、循環先入れ先出し部分結果バッファに前記複数の部分的な第2のステージの結果を記憶するようにさらに構成された、C17に記載の装置。
[C19]
前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、C11に記載の装置。
[C20]
前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、C11に記載の装置。
[C21]
ビデオコーディングにおいてビデオデータを変換するための装置であって、
第1のステージの結果のブロックを生成するために、ビデオデータ値のブロックに2次元変換の第1のステージを適用するための手段と、
第2のステージの結果のブロックを生成するために、前記第1のステージの結果を並べ替えることなしに第1のステージの結果の前記ブロックに前記2次元変換の第2のステージを適用するための手段と、
を備える装置。
[C22]
前記2次元変換の前記第1のステージは第1の方向性を有し、前記2次元変換の前記第2のステージは第2の異なる方向性を有する、C21に記載の装置。
[C23]
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するための手段をさらに備え、
前記第1のステージを適用するための前記手段は、前記第1のステージの結果の列を形成するために列順序で前記第1のステージを適用するための手段を備え、
前記第2のステージを適用するための前記手段は、前記第1のステージの結果の前記列に前記第2のステージを直接適用するための手段を備える、
C21に記載の装置。
[C24]
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するための手段をさらに備え、
前記第1のステージを適用するための前記手段は、前記第1のステージの結果の行を形成するために行順序で前記第1のステージを適用するための手段を備え、
前記第2のステージを適用するための前記手段は、前記第1のステージの結果の前記行に前記第2のステージを直接適用するための手段を備える、
C21に記載の装置。
[C25]
前記第1のステージを適用するための前記手段は、行順序で第1のステージの結果の前記ブロックを生成するために前記第1のステージを適用するための手段を備え、
前記第2のステージを適用するための前記手段は、複数の部分的な第2のステージの結果を生成するために行順序で前記第1のステージの結果に前記第2のステージを適用するための手段を備え、
前記装置は、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートするための手段をさらに備える、
C21に記載の装置。
[C26]
循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶するための手段をさらに備える、C25に記載の装置。
[C27]
前記第1のステージを適用するための前記手段は、列順序で第1のステージの結果の前記ブロックを生成するために前記第1のステージを適用するための手段を備え、
前記第2のステージを適用するための前記手段は、複数の部分的な第2のステージの結果を生成するために列順序で前記第1のステージの結果に前記第2のステージを適用するための手段を備え、
前記装置は、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートするための手段をさらに備える、
C21に記載の装置。
[C28]
循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶するための手段をさらに備える、C27に記載の装置。
[C29]
前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、C21に記載の装置。
[C30]
前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、C21に記載の装置。
[C31]
実行されたとき、1つまたは複数のプロセッサに、
第1のステージの結果のブロックを生成するために、ビデオデータ値のブロックに2次元変換の第1のステージを適用することと、
第2のステージの結果のブロックを生成するために、前記第1のステージの結果を並べ替えることなしに第1のステージの結果の前記ブロックに前記2次元変換の第2のステージを適用することと、
を行わせる命令を記憶した非一時的コンピュータ可読媒体。
[C32]
前記2次元変換の前記第1のステージは第1の方向性を有し、前記2次元変換の前記第2のステージは第2の異なる方向性を有する、C31に記載の非一時的コンピュータ可読媒体。
[C33]
前記命令は、前記1つまたは複数のプロセッサに、
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶することをさらに行わせ、
前記第1のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、前記第1のステージの結果の列を形成するために列順序で前記第1のステージを適用することを行わせ、
前記第2のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、前記第1のステージの結果の前記列に前記第2のステージを直接適用することを行わせる、
C31に記載の非一時的コンピュータ可読媒体。
[C34]
前記命令は、前記1つまたは複数のプロセッサに、
前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶することをさらに行わせ、
前記第1のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、前記第1のステージの結果の行を形成するために行順序で前記第1のステージを適用することを行わせ、
前記第2のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、前記第1のステージの結果の前記行に前記第2のステージを直接適用することを行わせる、
C31に記載の非一時的コンピュータ可読媒体。
[C35]
前記第1のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、行順序で第1のステージの結果の前記ブロックを生成するために前記第1のステージを適用することを行わせ、
前記第2のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、複数の部分的な第2のステージの結果を生成するために行順序で前記第1のステージの結果に前記第2のステージを適用することを行わせ、
前記命令は、前記1つまたは複数のプロセッサに、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートすることをさらに行わせる、
C31に記載の非一時的コンピュータ可読媒体。
[C36]
前記命令は、前記1つまたは複数のプロセッサに、循環先入れ先出し部分結果バッファに前記複数の部分的な第2のステージの結果を記憶することをさらに行わせる、C35に記載の非一時的コンピュータ可読媒体。
[C37]
前記第1のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、列順序で第1のステージの前記ブロックを生成するために前記第1のステージを適用することを行わせる、
前記第2のステージを適用するために、前記命令は、前記1つまたは複数のプロセッサに、複数の部分的な第2のステージの結果を生成するために列順序で前記第1のステージの結果に前記第2のステージを適用することを行わせ、
前記命令が、前記1つまたは複数のプロセッサに、第2のステージの結果の前記ブロックを生成するために前記複数の部分的な第2のステージの結果をアグリゲートすることをさらに行わせる、
C31に記載の非一時的コンピュータ可読媒体。
[C38]
前記命令は、前記1つまたは複数のプロセッサに、循環先入れ先出し部分結果バッファに前記複数の部分的な第2のステージの結果を記憶することをさらに行わせる、C37に記載の非一時的コンピュータ可読媒体。
[C39]
前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、C31に記載の非一時的コンピュータ可読媒体。
[C40]
前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、C31に記載の非一時的コンピュータ可読媒体。

Claims (18)

  1. ビデオコーディングにおいてビデオデータを変換する方法であって、
    ビデオデータ値のブロックを変換するために2次元変換の第1のステージを、ビデオコーディングデバイスによって、決定することと、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを、前記ビデオコーディングデバイスによって、決定することと、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを、前記ビデオコーディングデバイスによって、適用することと、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接、前記ビデオコーディングデバイスによって、転送することと、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを、前記ビデオコーディングデバイスによって、適用することと、
    を備え、
    前記第1のステージを適用することは、前記第1のステージの結果の列を形成するために、ビデオデータ値の前記ブロックの行に、前記第1ステージの列を適用することを備え、
    前記第1のステージの結果を転送することは、前記第1のステージの結果の前記列を前記第2のステージに直接転送することを備え、
    前記第2のステージを適用することは、前記第2のステージの結果のブロックの列を形成するために、前記第1ステージの結果の前記列に、前記第2のステージの行を適用することを備え、
    前記第1のステージを適用することは、前記第1のステージの結果を列順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備える、方法。
  2. 前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶すること、をさらに備える、
    請求項1に記載の方法。
  3. ビデオコーディングにおいてビデオデータを変換する方法であって、
    ビデオデータ値のブロックを変換するために2次元変換の第1のステージを、ビデオコーディングデバイスによって、決定することと、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを、前記ビデオコーディングデバイスによって、決定することと、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを、前記ビデオコーディングデバイスによって、適用することと、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接、前記ビデオコーディングデバイスによって、転送することと、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを、前記ビデオコーディングデバイスによって、適用することと、
    を備え、
    前記第2のステージを適用することは、複数の部分的な第2のステージの結果を生成するために、前記第2のステージの前記方向性に基づいて前記第1のステージの結果に前記第2のステージを適用すること、および第2のステージの結果の前記ブロックを生成するために、前記複数の部分的な第2のステージの結果をアグリゲートすることを備え、
    前記第1のステージを適用することは、前記第1のステージの結果の行中の各要素値を形成するために、ビデオデータ値の前記ブロックの1つの行に、前記第1ステージの各列を適用することを備え、
    前記第1のステージの結果を転送することは、前記第1のステージの結果の前記行中の各要素値を前記第2のステージに直接転送することを備え、
    前記第2のステージを適用することは、部分的な第2のステージの結果を形成するために、前記第1ステージの結果の前記行中の前記要素値に、前記第2のステージのを適用することを備え、
    前記第1のステージを適用することは、前記第1のステージの結果を行順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備え、前記部分的な第2のステージの結果は、前記第2の行列の各行に対し生成される、方法。
  4. 循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶することをさらに備える、請求項3に記載の方法。
  5. 前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、請求項1または3に記載の方法。
  6. 前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、請求項1または3に記載の方法。
  7. ビデオコーディングにおいてビデオデータを変換するための装置であって、
    ビデオデータ値のブロックを記憶するように構成されたメモリと、
    ビデオデータ値の前記ブロックを変換するために2次元変換の第1のステージを決定することと、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを決定することと、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを適用することと、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接転送することと、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを適用することと、
    を行うように構成された1つまたは複数のプロセッサと
    を備え、
    前記第1のステージを適用することは、前記第1のステージの結果の列を形成するために、ビデオデータ値の前記ブロックの行に、前記第1ステージの列を適用することを備え、
    前記第1のステージの結果を転送することは、前記第1のステージの結果の前記列を前記第2のステージに直接転送することを備え、
    前記第2のステージを適用することは、前記第2のステージの結果のブロックの列を形成するために、前記第1ステージの結果の前記列に、前記第2のステージの行を適用することを備
    前記第1のステージを適用することは、前記第1のステージの結果を列順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備える、装置。
  8. 前記1つまたは複数のプロセッサは、
    前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するようにさらに構成された、
    請求項7に記載の装置。
  9. ビデオコーディングにおいてビデオデータを変換するための装置であって、
    ビデオデータ値のブロックを記憶するように構成されたメモリと、
    ビデオデータ値の前記ブロックを変換するために2次元変換の第1のステージを決定することと、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを決定することと、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを適用することと、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接転送することと、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを適用することと、
    を行うように構成された1つまたは複数のプロセッサと、
    を備え、
    前記第2のステージを適用するために、前記1つまたは複数のプロセッサは、複数の部分的な第2のステージの結果を生成するために、前記第2のステージの前記方向性に基づいて前記第1のステージの結果に前記第2のステージを適用すること、および第2のステージの結果の前記ブロックを生成するために、前記複数の部分的な第2のステージの結果をアグリゲートするように構成され、
    前記第1のステージを適用することは、前記第1のステージの結果の行中の各要素値を形成するために、ビデオデータ値の前記ブロックの1つの行に、前記第1ステージの各列を適用することを備え、
    前記第1のステージの結果を転送することは、前記第1のステージの結果の前記行中の各要素値を前記第2のステージに直接転送することを備え、
    前記第2のステージを適用することは、部分的な第2のステージの結果を形成するために、前記第1ステージの結果の前記行中の前記要素値に、前記第2のステージのを適用することを備え、
    前記第1のステージを適用することは、前記第1のステージの結果を行順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備え、前記部分的な第2のステージの結果は、前記第2の行列の各行に対し生成される、装置。
  10. 前記1つまたは複数のプロセッサは、循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶するようにさらに構成された、請求項9に記載の装置。
  11. 前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、請求項7または9に記載の装置。
  12. 前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、請求項7または9に記載の装置。
  13. ビデオコーディングにおいてビデオデータを変換するための装置であって、
    ビデオデータ値のブロックを変換するために2次元変換の第1のステージを決定するための手段と、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを決定するための手段と、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを適用するための手段と、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接転送するための手段と、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを適用するための手段と、
    を備え、
    前記第1のステージを適用するための手段は、前記第1のステージの結果の列を形成するために、ビデオデータ値の前記ブロックの行に、前記第1ステージの列を適用するための手段を備え、
    前記第1のステージの結果を転送するための手段は、前記第1のステージの結果の前記列を前記第2のステージに直接転送するための手段を備え、
    前記第2のステージを適用するための手段は、前記第2のステージの結果のブロックの列を形成するために、前記第1ステージの結果の前記列に、前記第2のステージの行を適用するための手段を備え、
    前記第1のステージを適用することは、前記第1のステージの結果を列順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備える、装置。
  14. 前記第1のステージを適用することの前に、バッファに前記ブロックのすべてのビデオデータ値を記憶するための手段をさらに備える、
    請求項13に記載の装置。
  15. ビデオコーディングにおいてビデオデータを変換するための装置であって、
    ビデオデータ値のブロックを変換するために2次元変換の第1のステージを決定するための手段と、ここにおいて、前記第1のステージは、水平方向性または垂直方向性を有する、
    前記2次元変換の第2のステージを決定するための手段と、ここにおいて、前記第2のステージは、前記第1のステージが水平方向性を有する場合、垂直方向性を有し、前記第2のステージは、前記第1のステージが垂直方向性を有する場合、水平方向性を有する、
    第1のステージの結果を生成するために、ビデオデータ値の前記ブロックに前記2次元変換の前記第1のステージを適用するための手段と、
    前記第1のステージと前記第2のステージとの間で前記第1のステージの結果を並べ替えることおよびバッファすることなしに、前記第1のステージの結果を前記第2のステージに直接転送するための手段と、
    第2のステージの結果のブロックを生成するために、前記転送された第1のステージの結果に前記2次元変換の前記第2のステージを適用するための手段と、
    を備え、
    前記第2のステージを適用するための前記手段は、複数の部分的な第2のステージの結果を生成するために、前記第2のステージの前記方向性に基づいて前記第1のステージの結果に前記第2のステージを適用するための手段、および第2のステージの結果の前記ブロックを生成するために、前記複数の部分的な第2のステージの結果をアグリゲートするための手段を備え、
    前記第1のステージを適用するための手段は、前記第1のステージの結果の行中の各要素値を形成するために、ビデオデータ値の前記ブロックの1つの行に、前記第1ステージの各列を適用するための手段を備え、
    前記第1のステージの結果を転送するための手段は、前記第1のステージの結果の前記行中の各要素値を前記第2のステージに直接転送するための手段を備え、
    前記第2のステージを適用するための手段は、部分的な第2のステージの結果を形成するために、前記第1ステージの結果の前記行中の前記要素値に、前記第2のステージのを適用するための手段を備え、
    前記第1のステージを適用することは、前記第1のステージの結果を行順序で生成するために、ビデオデータ値の前記ブロックに対応する第1の行列に、前記第1の行列の右から前記第1のステージに対応する第1の変換行列を乗算することを備え、
    前記第2のステージを適用することは、前記第1のステージの結果に対応する第2の行列に、前記第2の行列の左から前記第2のステージに対応する第2の変換行列を乗算することを備え、前記部分的な第2のステージの結果は、前記第2の行列の各行に対し生成される、装置。
  16. 循環先入れ先出し部分結果バッファに、前記複数の部分的な第2のステージの結果を記憶するための手段をさらに備える、請求項15に記載の装置。
  17. 前記2次元変換は、第2のステージの結果の前記ブロックが変換係数のブロックを備えるような順変換を備える、請求項13または15に記載の装置。
  18. 前記2次元変換は、第2のステージの結果の前記ブロックが再構成された残差値のブロックを備えるような逆変換を備える、請求項13または15に記載の装置。
JP2016525378A 2013-07-12 2014-07-01 水平および垂直変換の並行処理 Expired - Fee Related JP6285025B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/940,474 US9554152B2 (en) 2013-07-12 2013-07-12 Concurrent processing of horizontal and vertical transforms
US13/940,474 2013-07-12
PCT/US2014/045122 WO2015006107A1 (en) 2013-07-12 2014-07-01 Concurrent processing of horizontal and vertical transforms

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017221778A Division JP2018078572A (ja) 2013-07-12 2017-11-17 水平および垂直変換の並行処理

Publications (3)

Publication Number Publication Date
JP2016526854A JP2016526854A (ja) 2016-09-05
JP2016526854A5 JP2016526854A5 (ja) 2017-03-30
JP6285025B2 true JP6285025B2 (ja) 2018-02-28

Family

ID=51211908

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016525378A Expired - Fee Related JP6285025B2 (ja) 2013-07-12 2014-07-01 水平および垂直変換の並行処理
JP2017221778A Pending JP2018078572A (ja) 2013-07-12 2017-11-17 水平および垂直変換の並行処理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017221778A Pending JP2018078572A (ja) 2013-07-12 2017-11-17 水平および垂直変換の並行処理

Country Status (6)

Country Link
US (1) US9554152B2 (ja)
EP (1) EP3020197A1 (ja)
JP (2) JP6285025B2 (ja)
KR (1) KR20160032111A (ja)
CN (1) CN105556973A (ja)
WO (1) WO2015006107A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2658263T3 (pl) * 2010-12-22 2023-03-13 Lg Electronics Inc. Sposób predykcji wewnątrzramkowej i urządzenie wykorzystujące ten sposób
US9813737B2 (en) * 2013-09-19 2017-11-07 Blackberry Limited Transposing a block of transform coefficients, based upon an intra-prediction mode
US11093635B2 (en) * 2016-05-05 2021-08-17 The Johns Hopkins University Apparatus and method for private information retrieval
GB2554680B (en) * 2016-10-03 2020-04-01 Advanced Risc Mach Ltd Selecting encoding options
US10328386B2 (en) * 2017-05-18 2019-06-25 Uop Llc Co-cast thin film composite flat sheet membranes for gas separations and olefin/paraffin separations
GB2567835B (en) 2017-10-25 2020-11-18 Advanced Risc Mach Ltd Selecting encoding options
US10298895B1 (en) * 2018-02-15 2019-05-21 Wipro Limited Method and system for performing context-based transformation of a video

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101031A (ja) * 1991-10-09 1993-04-23 Nec Corp ニユーラルネツトワーク装置
SG45281A1 (en) * 1992-06-26 1998-01-16 Discovision Ass Method and arrangement for transformation of signals from a frequency to a time domain
JPH0660108A (ja) * 1992-08-07 1994-03-04 Fujitsu Ltd 離散コサイン/逆離散コサイン変換器
US6112219A (en) 1993-09-23 2000-08-29 Realnetworks, Inc. Method and apparatus for performing fast discrete cosine transforms and fast inverse discrete cosine transforms using look-up tables
JPH07200539A (ja) * 1993-12-28 1995-08-04 Matsushita Electric Ind Co Ltd 二次元dct演算装置
US6026217A (en) * 1996-06-21 2000-02-15 Digital Equipment Corporation Method and apparatus for eliminating the transpose buffer during a decomposed forward or inverse 2-dimensional discrete cosine transform through operand decomposition storage and retrieval
WO2001009717A1 (en) 1999-08-02 2001-02-08 Morton Steven G Video digital signal processor chip
JP2001128177A (ja) * 1999-11-01 2001-05-11 Matsushita Electric Ind Co Ltd 2次元直交変換方法
US20010016010A1 (en) * 2000-01-27 2001-08-23 Lg Electronics Inc. Apparatus for receiving digital moving picture
KR100735233B1 (ko) * 2005-02-25 2007-07-03 삼성전자주식회사 개인방송 서비스 제공 시스템
US8654833B2 (en) 2007-09-26 2014-02-18 Qualcomm Incorporated Efficient transformation techniques for video coding
JP2009272727A (ja) * 2008-04-30 2009-11-19 Toshiba Corp 予測誤差の方向性に基づく変換方法、画像符号化方法及び画像復号化方法
JP2010122850A (ja) * 2008-11-19 2010-06-03 Muroran Institute Of Technology 行列方程式計算装置および行列方程式計算方法
KR20120046725A (ko) * 2009-08-06 2012-05-10 파나소닉 주식회사 부호화 방법, 복호 방법, 부호화 장치 및 복호 장치
BR122020016581B1 (pt) * 2010-09-28 2022-03-03 Samsung Electronics Co., Ltd. Método de decodificação de vídeo, e método de codificação de vídeo
US8913666B2 (en) 2010-10-01 2014-12-16 Qualcomm Incorporated Entropy coding coefficients using a joint context model
US9747255B2 (en) * 2011-05-13 2017-08-29 Texas Instruments Incorporated Inverse transformation using pruning for video coding
US9756360B2 (en) 2011-07-19 2017-09-05 Qualcomm Incorporated Coefficient scanning in video coding
US9665540B2 (en) 2011-07-21 2017-05-30 Arm Limited Video decoder with a programmable inverse transform unit
JP2013110502A (ja) * 2011-11-18 2013-06-06 Sony Corp 画像処理装置及び画像処理方法

Also Published As

Publication number Publication date
WO2015006107A1 (en) 2015-01-15
US9554152B2 (en) 2017-01-24
CN105556973A (zh) 2016-05-04
EP3020197A1 (en) 2016-05-18
JP2016526854A (ja) 2016-09-05
KR20160032111A (ko) 2016-03-23
JP2018078572A (ja) 2018-05-17
US20150016536A1 (en) 2015-01-15

Similar Documents

Publication Publication Date Title
JP6285025B2 (ja) 水平および垂直変換の並行処理
JP6081499B2 (ja) 変換係数コーディングのためのコンテキスト導出における走査ベーススライディングウィンドウ
JP5869108B2 (ja) メモリ効率的コンテキストモデリング
JP6545623B2 (ja) ビデオコード化における低遅延バッファリングモデル
JP6396439B2 (ja) 残差差分パルスコード変調(dpcm)拡張ならびに変換スキップ、回転、および走査との調和
JP5788517B2 (ja) ジョイントコンテキストモデルを使用した係数のエントロピーコード化
JP5937206B2 (ja) ビデオデータをコンテキスト適応型コーディングすること
JP6527877B2 (ja) ビデオコーディングプロセスにおける係数レベルコーディング
JP6542225B2 (ja) イントラブロックコピーのための残差予測
JP2017513342A (ja) ゼロアウトされた係数を使用した低複雑な順変換のためのシステムおよび方法
JP2018530246A (ja) ビデオコーディングのために位置依存の予測組合せを使用する改善されたビデオイントラ予測
JP5955955B2 (ja) リーフレベルコード化単位のサブセットについての変換係数のシンタックス要素の信号伝達
JP2016076963A (ja) ビデオコーディングにおける並列コンテキスト計算
JP6271558B2 (ja) 改善されたランダムアクセスポイントピクチャ挙動を用いたビデオコーディング
JP2013543317A5 (ja)
JP2016534649A (ja) イントラブロックコピー実行時の領域決定
JP6042526B2 (ja) ビデオコーディングのための最後の位置コーディングのためのコンテキストの導出
JP2015516768A (ja) 変換係数コーディング
JP2017195607A (ja) パラメータセットコーディング
JP2017513311A (ja) 残差差分パルス符号変調のための量子化プロセス
JP6363172B2 (ja) マルチレイヤビデオコード化におけるレイヤ間ピクチャタイプアライメントの指示
JP5937205B2 (ja) ビデオコーディングのためのランモードベース係数コーディング
JP2018536344A (ja) 並列算術コーディング技法
US9628800B2 (en) Adaptive control for transforms in video coding
JP2017514353A (ja) メッシュベースの計算を使用した低複雑な順変換のためのシステムおよび方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170227

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170612

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171117

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20171128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180131

R150 Certificate of patent or registration of utility model

Ref document number: 6285025

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees