JP4987049B2 - デコーディングパイプラインにおける第2デブロッカー - Google Patents

デコーディングパイプラインにおける第2デブロッカー Download PDF

Info

Publication number
JP4987049B2
JP4987049B2 JP2009201949A JP2009201949A JP4987049B2 JP 4987049 B2 JP4987049 B2 JP 4987049B2 JP 2009201949 A JP2009201949 A JP 2009201949A JP 2009201949 A JP2009201949 A JP 2009201949A JP 4987049 B2 JP4987049 B2 JP 4987049B2
Authority
JP
Japan
Prior art keywords
frame
decoded
deblocker
decoder
order
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.)
Active
Application number
JP2009201949A
Other languages
English (en)
Other versions
JP2010098725A (ja
Inventor
ジア ウェイ
Original Assignee
エヌヴィディア コーポレイション
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 エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2010098725A publication Critical patent/JP2010098725A/ja
Application granted granted Critical
Publication of JP4987049B2 publication Critical patent/JP4987049B2/ja
Active 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

関連米国出願
[0001]本出願は、本発明の譲受人に譲渡され参考としてここに援用する“On-the-SpotDeblocking in a Decoding Pipeline”と題する同時係争中の米国特許出願、代理人管理番号NVID−P−SC−08−0333−US2に関する。また、本出願は、本発明の譲受人に譲渡され参考としてここに援用する“AdaptiveDeblocking in a Decoding Pipeline”と題する同時係争中の米国特許出願、代理人管理番号NVID−P−SC−08−0333−US3にも係る。
[0002]本発明による実施形態は、一般に、ビデオデコーディング(ビデオ解凍)に関する。
[0003]ムービングピクチャーズエクスパートグループ−4(MPEG−4)パート10又はMPEG−4アドバンストビデオコーディング(AVC)としても知られているH.264は、ビデオ圧縮のための規格である。ビデオは、一連の画像(又はフレーム)を含み、各フレームは、ピクセルの二次元アレイより成る。ピクセルは、マクロブロック(ピクセルの16x16アレイ)へ分割される。各マクロブロックは、マクロブロック番号を有し、一般的に、マクロブロックは、フレームの左上でスタートして左から右へ上から下へ単調に増加して連続的に番号付けされる。マクロブロックは、スライスへとグループ分けすることができ、スライスは、スライスグループへとグループ分けすることができる。1つのスライス内のマクロブロックは、マイクロブロック番号が上昇する順序で配列される。スライスは、いかなる数のマクロブロックを含むこともでき、これらマクロブロックは、隣接してもしなくてもよく、即ち1つのスライス内のマクロブロックは、他のスライスグループの1つ以上の他のスライスのマクロブロック間に散在されてもよいが、同じスライスグループ内のスライスからのマクロブロックが互いに散在することはない。
[0004]上述したようにマクロブロックをスライスへグループ分けできるようにするH.264の特徴は、一般的に、融通性マクロブロック順序付け(FMO)と称される。このFMOは、送信中にスライスが失われるか又は破損された場合にエラーを隠すためにデコーダによって使用できるエラー耐性(resiliency)ツールの1つである。欠落又は破損したスライスにおけるマクロブロックは、別のスライスからマクロブロック情報を内挿し又は外挿することで再構成することができる。
[0005]別のH.264特徴は、一般的に、任意のスライス順序付け(ASO)と称される。ASOでは、スライスを任意の順序で送信することができる。例えば、スライスは、それが準備できるや否や送信されてもよく、即ちスライスは、そのスライスを作り上げる全マクロブロックがエンコードされるや否や、デコーダへストリーミングされてもよい。その結果、1つのスライスグループからのスライスが送信された後に、別のスライスグループからのスライスが送信され、その後、第1のスライスグループからの別のスライスが送信され、等々と続く。
[0006]従って、一般的に述べると、H.264は、エンコードされたマクロブロックを「順序ずれ」して送信するのを許す。即ち、マクロブロックは、特定の順序で(例えば、上から下へ及び左から右へ、マクロブロック番号に基づく上昇順に)エンコードされるが、マクロブロックがデコーディング装置へ送信される順序、ひいては、それがデコーディング装置により受信される順序は、エンコーディング順序とは異なるものでよい。
[0007]基本的なデコーディングオペレーションに加えて、デコーディング装置は、デブロッキングオペレーションを遂行する。デブロッキングでは、隣接するマクロブロック間の境界を平滑化するために、デコードされたマクロブロックにデブロッキングフィルタが適用される。
[0008]図1を参照すれば、マクロブロックM1をデブロックするためには、マクロブロックM2(マクロブロックM1の左側の最も近い隣接部)及びおそらくはマクロブロックM3(マクロブロックM1の上の最も近い隣接部)に対する情報が必要となる。しかしながら、マクロブロックM1は、1つのスライス(例えば、スライスS2)にあり、そして隣接マクロブロックM2及びM3は、1つ又は複数の異なるスライス(例えば、スライスS1)にあることがある。ASOがイネーブルされると、スライスS2は、スライスS1の前にデコーダへ送信される。従って、マクロブロックM1は、デブロッキングの準備ができるが、スライスS1がデコーダにまだ到着しない場合にはデブロッキングを遅らせねばならない。
[0009]その結果、H.264デコーディングは、典型的に、2パス解決策を使用して具現化される。第1パスでは、基本的デコーディング(デブロッキングの前のデコーディング)が遂行され、デコードされたデータは、それがデコードされたときにセーブされる。第2パスでは、デコードされたデータが再ロードされて、デブロッキングが遂行される。不都合にも、この形式の具現化は、デコーディング装置に付加的な負担をかける。より詳細には、デコーディング装置は、メモリへの及びメモリからのデータの転送を受け容れるためのより広いデータバス帯域巾を必要とし、デコードされたデータをデブロッキングの前に記憶するための付加的なメモリを必要とし、また、第1及び第2のパスが順次に遂行されるためにより長い計算時間を必要とすることがある。
[0010]本発明の実施形態によれば、デコーダは、データのエンコードされたフレームをデコードするのに使用できる第1(デブロッキングの前のデコーディング)ステージを備えている。また、デコーダは、第1ステージの下流に第2(デブロッキング)ステージも備えている。この第2ステージは、デコードされたフレームを並列にデブロックするように使用できる第1デブロッカー及び第2デブロッカーを含む。
[0011]第1及び第2のデブロッカーは、互いに並列に且つデコーディングステージとも並列に動作することができる。例えば、第1デブロッカーは、あるフレームをデブロッキングする一方、第2デブロッカーは、別のフレームをデブロッキングし、その間に、デコーディングステージは、更に別のフレームに対して動作することができる。更に、ある例においては、デブロッカーが、フレームのある部分に対して動作する一方、デコーディングステージが、同じフレームの後続部分に対して動作してもよい。
[0012]一般的に、エンコードされたフレームは、デコーダの第1ステージ(基本的デコーディングステージ)への入力として受け取られて、デコードされる。デコードされたフレームは、第1デブロッカー又は第2デブロッカーのいずれかへ転送され、それをデブロックすることができる。一実施形態では、デコードされたフレームは、そのデコードされたフレームをどのように分類するかに基づいて、第1デブロッカー又は第2デブロッカーのいずれかへ転送される。デコードされたフレームが第1形式のフレームとして分類された場合には、それが第1デブロッカーへ送信され、さもなければ、デコードされたフレームは、第2形式のフレームとして分類されて、第2デブロッカーへ送信される。
[0013]第2デブロッカーを導入することは、幾つかのフレームのデブロッキングを一次経路から並列の二次経路へオフロード化できることを意味する。処理時間が短縮され、全体的な性能が改善される。
[0014]本発明の種々の実施形態のこれら及び他の目的並びに効果は、当業者であれば、種々の添付図面に示された実施形態の以下の詳細な説明を読んだ後に明らかとなるであろう。
[0015]本発明は、同様の要素が同じ参照番号で示された添付図面を参照して、一例として、以下に詳細に説明する。
マクロブロックのアレイを示す。 本発明の実施形態によるデコーダを具現化できるシステムの一例を示すブロック図である。 本発明の一実施形態によるデコーディングパイプラインの要素を示すブロック図である。 本発明の一実施形態によるデコーダの要素を示すブロック図である。 本発明の一実施形態による第2デブロッカーを使用してデータを処理するためのコンピュータ実施方法の一例のフローチャートである。 本発明の一実施形態により第2デブロッカーを適応式に使用してデータを処理するためのコンピュータ実施方法の一例のフローチャートである。 本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。 本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。 本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。 本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。 本発明の一実施形態によりマクロブロックをデブロッキングするためのコンピュータ実施方法の一例のフローチャートである。 本発明の一実施形態によるデブロッキングに適したマクロブロックを識別するコンピュータ実施方法の一例のフローチャートである。 本発明の実施形態によりデブロックできる順序ずれフレームの一例を示す。
[0026]添付図面に例が示された本発明による実施形態を以下に詳細に説明する。本発明は、これらの実施形態に関連して説明するが、本発明をこれらの実施形態に限定するものでないことを理解されたい。逆に、本発明は、特許請求の範囲に規定された本発明の精神及び範囲内に包含される代替、変更及び等効物を網羅するものとする。更に、本発明の実施形態の以下の詳細な説明において、本発明の完全な理解を与えるために多数の特定の細部が述べられる。しかしながら、当業者であれば、本発明は、これらの特定の細部を伴わずに実施できることが認識されよう。他の点では、本発明の実施形態の態様を不必要に不明瞭にしないために、良く知られた方法、手順、コンポーネント及び回路は、詳細に説明しない。
[0027]以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対するオペレーションの手順、ステップ、論理的ブロック、処理、及び他の記号的表示に関して表現される。これらの記述及び表示は、データ処理技術の当業者の仕事の実体を他の当業者へ最も効率的に伝達するために当業者により使用される手段である。手順、コンピュータ実行ステップ、論理的ブロック、プロセス、等は、ここでは、そして一般的には、希望の結果を導くステップ又はインストラクションの自己矛盾のないシーケンスであると考えられる。これらステップは、物理的量の物理的な操作を必要とする。通常、必ずしもそうでないが、これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、及びその他、操作することのできる電気的又は磁気的信号の形態をとる。主として普通に使用されるという理由で、これらの信号をビット、値、要素、記号、特性、語、数字、等として参照するのが時々は便利であると分かっている。
[0028]しかしながら、これら及び同様の語は、全て、適当な物理量に関連されるべきであり、且つそれらの量に適用される便利な表示に過ぎないことを心に留めておかれたい。特に指示のない限り、以下の説明から明らかなように、本発明全体にわたり、「エンコーディング」、「デコーディング」、「デブロッキング」、「受信」、「送信」、「転送」、「識別」、「決定」、「分類」、「比較」、「選択」、「記憶」、「処理」、「使用」、「初期化」、「設定」、「フラグ」、「アクセス」、「関連付け」、等の語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)量として表されたデータを、コンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内の物理的量として同様に表された他のデータへと操作及び変換するコンピュータシステム又は同様の電子的コンピューティング装置のアクション及びプロセスを指すことが明らかである。
[0029]図5、6、8及び9は、本発明の実施形態によりデータを処理するためのコンピュータ実施方法の一例のフローチャートである。それらフローチャートには特定のステップが開示されるが、それらステップは、例示に過ぎない。即ち、本発明の実施形態は、種々の他のステップ、又はフローチャートに取り上げられたステップの変更を遂行するのに良く適している。
[0030]図5、6、8及び9のフローチャートは、1つ以上のコンピュータ又は他の装置により実行されるプログラムモジュールのようなある形態のコンピュータ使用可能な媒体に存在するコンピュータ実行可能なインストラクションとして具現化することができる。一般に、プログラムモジュールは、特定のタスクを遂行するか又は特定のアブストラクトデータ形式を具現化するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。プログラムモジュールの機能は、種々の実施形態で望まれるように合成又は分布されてもよい。
[0031]例えば、これに限定されないが、コンピュータ使用可能な媒体は、コンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール又は他のデータのような情報を記憶するための方法又は技術で具現化される揮発性及び不揮発性の、除去可能及び除去不能な媒体を含む。コンピュータ記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ又は他のメモリ技術、コンパクトディスクROM(CD−ROM)、デジタル多様性ディスク(DVD)、或いは他の光学的記憶装置、磁気化セット、磁気テープ、磁気ディスク記憶装置、又は他の磁気記憶装置、或いは希望の情報を記憶するのに使用できる他の媒体を含むが、これらに限定されない。
[0032]通信媒体は、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール又は他のデータを搬送波又は他のトランスポートメカニズムのような変調データ信号において実施することができ、任意の情報配信媒体を含む。「変調データ信号」という語は、信号に情報をエンコードするように1つ以上の特性がセット又は変化された信号を意味する。例えば、これに限定されないが、通信媒体は、ワイヤードネットワーク又は直接ワイヤード接続のようなワイヤード媒体と、音響、高周波(RF)、赤外線及び他のワイヤレス媒体のようなワイヤレス媒体とを含む。これらのいずれかを組み合わせることも、コンピュータ読み取り可能な媒体の範囲内に包含される。
[0033]図2は、本発明によるデコーダを具現化できるシステム20の一例を示すブロック図である。図2の例において、このシステムは、バス25を経てグラフィック処理ユニット(GPU)22に結合されたホスト中央処理ユニット(CPU)21を備えている。GPUは、媒体処理ユニット(MPU)と称されてもよい。CPU及びGPUは、両方とも、メモリ24に結合される。図2の例において、メモリは、共有メモリであり、従って、メモリは、CPU及びGPUの両方に対するインストラクション及びデータを記憶する。或いはまた、CPU及びGPUに専用の個別のメモリが各々あってもよい。また、メモリは、結合されたディスプレイ23を駆動するピクセルデータを記憶するためのビデオフレームバッファを含むこともできる。
[0034]一般的に述べると、システム20は、本発明の実施形態によるファンクションを具現化するコンピュータシステムプラットホームの基本的コンポーネントを備えている。システム20は、例えば、多数の異なる形式のコンピュータシステム(例えば、ラップトップ、デスクトップ及びノートブック)として、並びにセットトップボックス又はデジタルテレビジョンのようなホームエンターテイメントシステム(例えば、DVDプレーヤ)、ポータブル又はハンドヘルド電子装置(例えば、ポータブル電話、パーソナルデジタルアシスタント又はハンドヘルドゲーム装置)、或いは表示能力をもつ実質上あらゆる他の形式の装置として、具現化することができる。
[0035]図3は、本発明の一実施形態によるデコーダ30の要素を示すブロック図である。一般的に、このデコーダは、エンコードされたビットストリーム31を受け取り、ビットストリーム内のデータをデコードし、そして表示可能な映像データ34を発生する。
[0036]一実施形態において、生の映像データ(例えば、ビデオデータ)が、ある形式の圧縮スキームを使用して圧縮されて、エンコーディングパラメータのセット、例えば、これに限定されないが、フレーム形式(例えば、イントラコード化Iフレーム、予想Pフレーム又は2予想Bフレーム)、マクロブロック予想モード(例えば、インターブロック対イントラブロック)、変換(例えば、離散的コサイン変換)係数、テクスチャ係数、及び運動ベクトル情報を発生する。次いで、エンコーディングパラメータは、例えば、ハフマンコーディングを使用して可変長さコード(VLC)へと変換される。エンコードされたビットストリームは、VLCを含む直列化ビットストリームである。
[0037]デコーダは、本質的に、エンコーディングプロセスを逆転して、映像データを再構成する。図3の例では、デコーダは、デコーディングステージ32及びデブロッキングステージ33を含むデコーディングパイプライン36を備えている。
[0038]デコーディングステージは、可変長さデコーディング、逆量子化、逆変換、及び運動圧縮のような基本的デコーディングオペレーションを遂行する。一般的に、デコーディングステージは、エンコードされたビットストリームを構文解析してVLCを抽出し、次いで、VLCを変換して、上述したエンコーディングパラメータを再生する。エンコーディングパラメータは、次いで、オリジナルビデオデータを再構成するのに使用される(より詳細には、オリジナルビデオデータのあるバージョンが構成される)。
[0039]デブロッキングステージは、デブロッキングフィルタを適用してマクロブロックをデコードし、再構成された映像がレンダリング(表示)されるとき隣接マクロブロック間の境界を平滑化する。例えば、デブロッキングフィルタは、隣接マクロブロックの境界又はその付近におけるピクセル値の重み付けされた平均を使用して、境界に沿ってマクロブロックを混合し、これにより、圧縮(エンコーディング)プロセスによって導入されることのある欠陥であって、除去しないと、再構成された映像が塊のように見えるようにさせる欠陥を除去することができる。一実施形態では、デブロッキングステージは、2つのデブロッカーを備え、これらは、図4を参照して以下に詳細に説明する。
[0040]以下の説明において、特に指示のない限り、「デコーダ」は、デコーディング及びデブロッキングの両方を遂行する要素(例えば、スタンドアローン又は周辺装置或いは一体化システム)を指す。「デコーディング」は、特に指示のない限り、上述した基本的なデコーディングオペレーション(例えば、可変長さデコーディング、逆量子化、逆変換及び運動補償)を指す。「充分にデコードされたデータ」及び「完全にデコードされたデータ」という語は、特に指示のない限り、デコード及びデブロックの両方がなされたデータを指す。
デコーディングパイプラインにおける第2デブロッカー
[0041]図4は、本発明の一実施形態によりフレームバッファ45及びディスプレイ46に結合されたデコーダの要素を示すブロック図である。図4の例において、デコーダは、デコーディングステージ32及びデブロッキングステージ33を備えている。デブロッキングステージは、第1デブロッカー41及び第2デブロッカー42を含む。デコーディングステージから第1デブロッカーを通る経路は、ここでは、デコーディングパイプラインを通る一次経路と称され、一方、デコーディングステージから第2デブロッカーを通る経路は、ここでは、デコーディングパイプラインを通る第2経路と称される。一実施形態では、記憶要素43が、デコーディングステージの出力と第2デブロッカーの入力との間に結合されると共に、第1デブロッカーの入力にも結合される。
[0042]第1及び第2のデブロッカーの出力は、フレームバッファに記憶される。フレームバッファのコンテンツは、その後、ディスプレイ上でレンダリングすることもできるし及び/又は別のフレームをデコードするのに使用することもできる。後者のケースでは、あるフレーム(例えば、Iフレーム又はPフレーム又はおそらくBフレームのような参照フレーム;H.264によれば、Bフレームを参照フレームとして使用できる)がデコードされると、1つ以上の後続フレーム(例えば、別のPフレーム又はBフレーム)をデコードするのにそれに依存することができる。他のフレームがデコーディングのために依存する各フレームは、それら他のフレームがデコードされるときに使用できるようにフレームバッファに保持することができる。ある具現化においては、他のフレームをデコードするために依存するフレームを記憶するために、フレームバッファ以外のメモリを使用してもよい。
[0043]第1及び第2のデブロッカーは、互いに並列に且つデコーディングステージとも並列に動作することができる。例えば、第1デブロッカーは、1つのフレームをデブロッキングすることができ、一方、第2デブロッカーは、別のフレームをデブロッキングすると共に、デコーディングステージは、更に別のフレームに対して動作する。更に、ある例では、デブロッカーは、フレームのある部分に対して動作し、一方、デコーディングステージは、同じフレームの後続部分に対して動作する。換言すれば、ある環境のもとでは、あるフレームのマクロブロックがデコードされて、第1デブロッカーへ直接入力され、そしてそのフレームの他のマクロブロックのデコーディングと並列にオンザスポットでデブロックされる。オンザスポットデブロッキングに関する付加的な情報は、図6、8及び9に関連して与えられる。
[0044]第2のスタンドアローンデブロッカーの導入は、以下に詳しく述べる環境のもとで、幾つかのフレームのデブロッキングを、一次経路から、並列の二次経路へオフロード化できることを意味する。処理時間が短縮され、全体的な性能が改善される。
[0045]一般的に、図4のデコーダは、本発明の一実施形態に基づき第2デブロッカーを使用してデータを処理するコンピュータ実施方法を示す図5のフローチャートに概説されたように動作する。図5のブロック51において、エンコードされたフレームが、デコーダの第1ステージ(基本的デコーディングステージ)への入力として受け取られる。ブロック52において、エンコードされたフレームがデコードされて、デコードされたフレーム(デブロッキングの前にデコードされた)を発生する。
[0046]ブロック53において、デコードされたフレームは、第1デブロッカー又は第2デブロッカーのいずれかへ転送されて、デブロックできるようにされる。一実施形態では、デコードされたフレームは、このデコードされたフレームがどのように分類されるかに基づいて第1デブロッカー又は第2デブロッカーのいずれかへ転送される。デコードされたフレームが第1形式のフレームとして分類された場合には、それが第1デブロッカーへ送信され、さもなければ、デコードされたフレームは、第2形式のフレームとして分類されて、第2デブロッカーへ送信される。フレームの分類に関する付加的な情報は、図6に関連して与えられる。
[0047]図5のブロック54において、完全にデコードされた(デコード及びデブロックの両方がなされた)フレームがフレームバッファへ転送され、これを使用して、後続フレームを再構成し及び/又はレンダリングして目に見えるようにすることができる。
デコーディングパイプラインにおける適応デブロッキング
[0048]一実施形態において、図4のデコーダは、本発明の一実施形態により第2デブロッカーを使用してデータを処理するコンピュータ実施方法を示す図6のフローチャートに概説された適応式の仕方で動作する。ブロック61において、デコーダは、エンコードされたフレームにアクセスする。
[0049]ブロック62において、フレームが「順序正しいフレーム」であるか又は「順序ずれしたフレーム」であるかに関して判断がなされる。ここに使用する順序正しいフレームとは、既定の順序で配列されたマクロブロックを含むフレームであり、即ちフレームにおけるマクロブロックの配列が特定の規定の順序を満足する場合には、そのフレームが順序正しいフレームとして分類され、さもなければ、そのフレームが順序ずれしたフレームとして分類される。上述した融通性マクロブロック順序付け(FMO)及び/又は任意のスライス順序付け(ASO)を使用してエンコードされるフレームは、順序ずれしたフレームの一例である。
[0050]フレームヘッダは、フレームをFMO/ASOフレームとして、又は順序正しいフレーム対順序ずれしたフレームとして識別するのに使用できる情報を含まないことがある。しかしながら、一実施形態では、フレームの各マクロブロックに関連したマクロブロック番号を使用して、フレームが順序正しいフレームであるか順序ずれしたフレームであるかを、ここに述べる仕方で推測することができる。
[0051]一般的に述べると、マクロブロック番号は、マクロブロックがエンコードされる順序に一致する。例えば、マクロブロックは、フレームの左上のマクロブロックでスタートして左から右へ上から下へ単調に増加して連続的に番号付けされる。また、マクロブロックは、一般的に、フレームの左上のマクロブロックでスタートして左から右へ上から下へ進んでエンコードされる(時々「ラスタスキャン順序」と称される)。従って、エンコードされたフレームのマクロブロックが、それらがエンコードされた順序でデコーダに受け取られる場合には、フレームにおけるマクロブロック番号が正しい順序となる。
[0052]従って、一実施形態では、フレームのエンコードされたバージョン(ひいては、フレームのデコードされたバージョン)におけるマクロブロックの番号が数字の順序である場合には、そのフレームは、順序正しいフレームであり、さもなければ、そのフレームは、順序ずれしたフレームである。一実施形態では、デコーダがフレームにおけるマクロブロック(ここでは「現在マクロブロック」とも称される「当該マクロブロック」)を受け取るときに、デコーダは、当該マクロブロックのマクロブロック番号を、その当該マクロブロックの直前に受け取られたマクロブロックのマクロブロック番号と比較する。換言すれば、デコーダは、マクロブロックのマクロブロック番号を、マクロブロックがデコーダに受け取られる順序で次のように比較することができる。
全てのi=0、1、・・・N−1に対して、MB_IDi+1=MB_ID+1である場合には、そのフレームが順序正しいものであり、
さもなければ、そのフレームが順序ずれしたものである。
但し、“MB_ID”は、マクロブロック番号であり、“i”は、マクロブロックが受け取られる順序に対応し、そして“N”は、フレームにおけるマクロブロックの数である。
[0053]図6を参照し続けると、フレームが順序ずれフレームと分類された場合には、フローチャートは、ブロック63へ進み、さもなければ、フローチャートは、ブロック64へ進む。
[0054]ブロック63において、順序ずれしたフレームが「参照フレーム」であるか「非参照フレーム」であるかに関する決定がなされる。ここで使用される参照フレームとは、デコーディングのために別のフレームが依存するフレームである。参照フレームは、例えば、Iフレーム及びPフレームである(時々I画像及びP画像と称される)。H.264によれば、Bフレームを参照フレームとして使用することができる。また、ここで使用される非参照フレームとは、参照フレームでないフレームである。Bフレーム(又はB画像)は、非参照フレームの一例である。各フレームに関連したフレームヘッダは、従来、フレームをIフレーム、Pフレーム又はBフレームとして識別する情報を含む。
[0055]フレームが参照フレームとして分類される場合には、フローチャートは、ブロック64へ進み、さもなければ、フローチャートは、ブロック65へ進む。
[0056]ブロック64において、順序正しい参照フレーム又は順序正しい非参照フレームは、図4の第1デブロッカーを使用して完全にデコード(基本的デコーディング及びデブロッキング)される。即ち、フレームは、「オンザスポット」でデブロックされ、即ち、フレームは、必ずしも、デブロッキングの前にメモリに記憶されず、これは、順序ずれした非参照フレームが処理される仕方とは対照的である(図6のブロック65、66及び67を参照)。
[0057]フレームが順序正しい参照フレーム又は順序正しい非参照フレームである場合には、フレームがデコードされるときにデブロッキングを行うことができる。一般的に述べると、順序正しいフレームとして分類されるためには、フレームにおける全てのマクロブロックが上述したように順序正しいものである。図1に戻ると、マクロブロックM1をデブロックするために、マクロブロックM2及びM3(例えば、マクロブロックの左の最も近い隣接部及び/又はマクロブロックの上の最も近い隣接部)からの情報が使用される。一般的なルールとして、順序正しいフレームでは、フレームにおけるマクロブロックM1の位置に関わりなく、マクロブロックM1がデブロッキングの準備ができる前に、マクロブロックM2及びマクロブロックM3の両方がデコードされデブロックされる。
[0058]一般的に述べると、順序正しいフレームでは、特定のマクロブロックをデブロックするために依存するマクロブロック(1つ又は複数)は、その特定のマクロブロックをデブロックするのに間に合うようにデコードされデブロックされる。従って、順序正しいフレームは、オンザスポットでデブロックすることができ、即ちフレームにおける各マクロブロックがデコードされるときに、そのデコードされるマクロブロックは、基本的なデコーディングの直後に第1デブロッカーへ直接転送してデブロックすることができる。
[0059]順序正しいフレームを処理する間には、あるマクロブロックをデブロックしながら、次のマクロブロックをデコードすることができる。同様に、1つのフレームの全てのマクロブロックがデコードされると、パイプラインのデコーディングステージは、次のフレームのマクロブロックのデコーディングを開始できる一方、手前のフレームのマクロブロックがデブロックされる。即ち、デブロッキングステージが、1つのフレームの後半のマクロブロックを処理する間に、デコーディングステージが、次のフレームの最初のマクロブロックを処理することができる。
[0060]図6のブロック65において、順序ずれした非参照フレームがデコードされる(基本的デコーディングのみ)。この点において、図4のデコーディングステージは、次のフレームのデコーディングを開始するのに使用できるようになる。
[0061]図6のブロック66において、デコードされた順序ずれした非参照フレームは、図4の記憶要素43に任意に記憶される。フレームが順序ずれした非参照フレームであるときには、フレームにおけるデコードされたマクロブロックの幾つか又は全部を、それらマクロブロックをデブロックするのに必要な他のマクロブロックもデコードされるまで、記憶することが必要になる。更に、非参照フレームは、別のフレームをデコードするためにそれに依存するものではなく、従って、何らかの理由でデブロッキングを延期することが効果的である場合には、そのようにすることができる。ブロック67において、順序ずれした非参照フレームは、図4の第2デブロッカーを使用してデブロックされる。
[0062]従って、順序ずれした非参照フレームの基本的なデコーディングが遂行された後に、デコードされたデータは、デブロッキングのために第2デブロッカーへ通される。それと同時に、次のフレームをデコードするために一次デコーディング経路が使用可能となる。即ち、順序ずれした非参照フレームがデブロックされる間に、次のフレームをデブロッキングと並列に(時間的に重畳して)デコードすることができる。このように、非参照フレームのデコーディングは、FMO/ASOがイネーブルされても、順序正しいフレームのデコーディングと同程度に高速で遂行することができる。一般的に、ビデオシーケンスにおけるフレームの大半は、非参照フレームである。それ故、順序正しいデコーディングに匹敵するレートで非参照フレームを処理することにより、デコーディングパイプラインの全体的な性能を著しく改善することができる。
[0063]図6の実施形態を要約すれば、(フレーム内のマクロブロックが順序正しいか、順序ずれであるかに関わらず)デコードされたフレームが参照フレームとして分類された場合には、デコードされたフレームがオンザスポットデブロッキングのために第1デブロッカーへ直接送信される。デコードされたフレームが順序正しい非参照フレームとして分類された場合にも、デコードされたフレームは、オンザスポットデブロッキングのために第1デブロッカーへ直接送信される。また、デコードされたフレームが順序ずれした非参照フレームとして分類された場合には、それが第2デブロッカーへ送信される。換言すれば、上述した実施形態によれば、第1デブロッカーは、参照フレーム(順序正しい又は順序ずれした)及び順序正しい非参照フレームをデブロックし、一方、第2デブロッカーは、順序ずれした非参照フレームをデブロックする。
[0064]従って、本発明の一実施形態によれば、参照フレームと非参照フレームとの間を区別するのに加えて、順序正しいフレームと順序ずれしたフレームとの間も区別することができる。換言すれば、リアルタイム入力データに基づいて、ASO/FMOエンコーディングをオンザフライで検出し(より詳細には、推測し)、次いで、それに応じて、デコーディング解決策(より詳細には、デブロッキング解決策)を適応させることができる。ASO/FMOのリアルタイム検出は、フレーム内のスライスの到着順序が保証されない通信アプリケーションにおいて低遅延処理を達成する上で特に重要である。ここに述べる実施形態は、ASO/FMOが使用されるかどうかを事前に知ることなく、ASO/FMOが使用されないときには順序正しいデコーディングを遂行し、そしてASO/FMOが使用されるときには処理遅延を短縮することができる。
[0065]本発明の一実施形態によれば、第2デブロッカーがデコーディングパイプラインに導入され、ある形式のフレームに対して、一次デコーディング経路(第1デブロッカーを含む経路)から、並列の第2経路(第2デブロッカーを含む経路)へとデブロッキングタスクをオフロード化できるようにしている。その結果、第1デブロッカーは、実際上、より本質的なフレーム(例えば、参照フレーム)をデブロッキングするように予約される。従って、より本質的なフレームのデブロッキングは、より迅速に遂行することができる。更に、第1デブロッカーは、実際上、オンザスポットでデブロックできるフレーム(例えば、順序正しいフレーム)をデブロッキングするように予約される。マクロブロックがデコードされるときにオンザスポットデブロッキングが遂行されるので、オンザスポットデブロッキングに第1デブロッカーを使用することでデコーディングパイプラインに遅延が導入されることはない。
[0066]2つのデブロッカーを使用して、異なる形式のフレームを取り扱うことにより、フレームのデコーディング及びデブロッキングを全体的により迅速に遂行することができる。というのは、デコーディング及びデブロッキングを、各特定のフレーム形式に対して最も高速であるパイプライン経路を使用して達成できるからである。更に、参照フレーム及び順序正しいフレームに対してオンザスポットデブロッキングを使用することで、データバスを通るトラフィックを減少すると共に、記憶されるデータの量も減少する。というのは、従来の2パス具現化の場合のように、デコードされたデータを記憶してフェッチする必要がないからである。一般的に述べると、第2デブロッカーの使用は、全体的なデコーダ性能を改善する。
[0067]第2デブロッカーは、必ずしも、専用のプロセッサ又は他の専用のハードウェアリソースを使用して具現化されなくてもよい。第2デブロッカーは、例えば、アイドリング状態でもよいGPU又はCPUを使用して具現化することができる。換言すれば、ほとんどの場合でなくても幾つかの場合に、第2デブロッカーは、時間クリティカルフレームに対して動作しなくてもよく、従って、既存のハードウェアリソースが使用できるようになったときにそれらリソースを使用してその機能を与えることができる。
フレーム内のマクロブロックのオンザスポットデブロッキング
[0068]図6のついての以上の説明において、参照フレーム及び順序正しい非参照フレームは、オンザスポットで(デコーディングの直後に)デブロックできるが、順序ずれした非参照フレームは、デコードされ、記憶され、次いで、後でデブロックされる。しかしながら、順序ずれしたフレームとして分類されるフレーム内に、順序正しいマクロブロックのシーケンスが存在する。ある環境において、順序ずれしたフレームにおける順序正しいマクロブロックのシーケンスは、オンザスポットでデブロックすることができる。
[0069]より詳細には、フレーム内の特定のマクロブロックは、フレームにおいてそれに先行する全てのマクロブロックがデコードされデブロックされた(完全にデコードされた)ときにデブロックすることができる。一方、特定のマクロブロックに先行する全てのマクロブロックが完全にデコードされない場合には、その特定のマクロブロックが記憶され、そしてその後、フレームレベルにおいて上述したのと同様に、全ての先行するマクロブロックが完全にデコードされたときに、デブロッキングのためにそれが再ロードされる。マクロブロックがデブロックされた後に、それを使用して、デコードされたがデブロックされていない後続のマクロブロックをデブロックし、次いで、それを使用して、デコードされたがデブロックされていない別の後続のマクロブロックをデブロックし、等々を行って、デブロッキングに適した全てのマクロブロックがデブロックされるまでそれを繰り返すことができる。
[0070]図7Aは、フレーム内のマクロブロックのデブロッキング状態を追跡するのに使用できるアレイ70の一例を示す。このアレイは、フレーム内の各マクロブロックに対するビット値を含む。ビット値は、デコードされたがデブロックされていないマクロブロックはどれかを識別するようにセットされる。マクロブロックに対するビットがセットされない場合は、そのマクロブロックがまだデコードされていないか、又はデコード及びデブロックされたかのいずれかである。換言すれば、そのビットは、デブロッキングの候補であるマクロブロックを識別するようにセットされる。
[0071]図7Aの例において、アレイは、ビット値の4x3アレイを含む。図7Aは、ビデオデータのフレームの一部分しか示さず、一般的に、フレームは、12より多くのマクロブロックを含む。最初、全てのビット値が同じバイナリー値(例えば、0)にセットされる。フレームが完全にデコードされた後に、アレイが再初期化される。
[0072]図7Bは、マクロブロックM0、M1、M2及びM3がデコードされデブロックされたある時間後におけるアレイの一例を示す。図7Bの例において、マクロブロックM0、M1、M2及びM3は、同じスライス(スライスS1)にあり、そしてそれらがエンコードされた順序(例えば、次の順序M0、M1、M2及びM3)でデコーダに受け取られる。マクロブロックM0は、デブロッキングのために現在フレーム内の別のマクロブロックに依存しないので、オンザスポットでデコードされデブロックされる。オンザスポットデブロッキングは、デコーディングパイプラインを通る一次経路に沿って図4の第1デブロッカーを使用して遂行される。
[0073]次いで、マクロブロックM1は、現在フレームにおいて、デブロッキングのためにマクロブロックM0のみに依存するので、第1デブロッカーを使用してオンザスポットでデコードされデブロックされる。一般的に述べると、マクロブロックM1をデブロックするのに必要な全てのマクロブロックがデコードされデブロックされる。換言すれば、エンコーディング順序でマクロブロックM1に先行する全てのマクロブロックが受け取られてデブロックされる。次いで、同じ一般化をマクロブロックM2及びM3に適用することができ、それ故、これらマクロブロックも、第1デブロッカーを使用してオンザスポットでデコードされデブロックされる。図中、マクロブロックM0、M1、M2及びM3がデコードされデブロックされたことを指示するためにアスタリスクが使用される。実際上、このような区別を行う必要はない。
[0074]スライスS1に続いて、マクロブロックM6及びM7より成るスライスS2がデコーダに受け取られる。即ち、マクロブロックは、順序正しく受け取られない。マクロブロックM6及びM7は、エンコーディング順序でマクロブロックM6及びM7に先行する全てのマクロブロック(例えば、マクロブロックM4及びM5)がまだ受け取られてデブロックされていないので、デコードすることはできるがデブロックすることはできない。従って、マクロブロックM6及びM7に対応するビット値は、図7Cに示すように、アレイにおいて(例えば、1の値に)セットされる。また、デコードされたマクロブロックM6及びM7は、メモリ(例えば、図4の記憶要素43)に記憶される。
[0075]スライスS2に続いて、マクロブロックM8及びM9より成るスライスS3がデコーダに受け取られる。マクロブロックM8及びM9は、これらマクロブロックM8及びM9に先行する全てのマクロブロックがまだ受け取られてデブロックされていない(この時点では、マクロブロックM4及びM5がまだデブロックされていない)ので、デコードすることはできるがデブロックすることはできない。従って、マクロブロックM8及びM9に対応するビット値は、図7Dに示すように、アレイにおいて(例えば、1の値に)セットされる。
[0076]スライスS3に続いて、マクロブロックM4及びM5より成るスライスS4がデコーダに受け取られる。マクロブロックM4は、エンコーディング順序でそれに先行する全てのマクロブロック(即ち、マクロブロックM0、M1、M2及びM3)がデコードされデブロックされているので、第1デブロッカーにおいてオンザスポットでデコード及びデブロックすることができる。マクロブロックM4がデブロックされた後に、マクロブロックM5を第1デブロッカーにおいてオンザスポットでデコード及びデブロックすることができる。
[0077]更に、マクロブロックM5がデブロックされると、マクロブロックM6に先行する全てのマクロブロックが今やデブロックされ、従って、マクロブロックM6を記憶装置から検索してデブロックすることができる。この場合に、マクロブロックM6は、デコーディングパイプラインを通る一次経路に沿って、図4の第1デブロッカーを使用してデブロックされる。マクロブロックM6がデブロックされると、マクロブロックM7を記憶装置から検索して、第2デブロッカーを使用してデブロックし、等々、マクロブロックM9まで行われる。この例では、マクロブロックM10及びM11は、それに先行する全てのマクロブロックがデコードされデブロックされても、この時点ではデブロックされない。というのは、マクロブロックM10及びM11それ自体がまだ受け取られてデコードされていないからである。マクロブロックM10及びM11は、それが受け取られると、図4の第1デブロッカーを使用してオンザスポットでデコードしデブロックすることができる。
[0078]上述した実施形態によれば、マクロブロックは、3つの状態、即ちまだデコードされていない(不完全な基本的デコーディング)、デコードされたがデブロックされていない、及びデコードされデブロックされた、のうちの1つをとることができる。しかしながら、各マクロブロックの状態を指示するのに、2つの状態を有する1つのバイナリービットしか必要とされない。というのは、アレイを使用して、デブロッキングの候補であるマクロブロック(デコードされたがデブロックされていないマクロブロック)を識別するからである。デブロッキングに対するマクロブロックを識別するために、まだデコードされていないマクロブロックを、デコードされデブロックされたマクロブロックから区別する必要はない。
[0079]図8は、本発明の一実施形態によりオンザスポットでマクロブロックをデブロッキングするためのコンピュータ実施方法のフローチャートである。ブロック81において、(最後にデブロックされたマクロブロックに対する)変数“Last_Db_MB”が−1(負の1)の値に初期化される。また、図7Aのアレイも、上述したように初期化される。
[0080]ブロック82では、現在マクロブロックMに対するマクロブロック番号(“MB_ID”)がアクセスされる。ブロック83では、MB_IDの値が、1の値だけ増加されたLast_Db_MBの値(Last_Db_MB+1)と比較される。実際上、ブロック83を使用して、マクロブロックが順序正しく受け取られたか順序ずれして受け取られたか決定し、順序正しい場合には、その直前のマクロブロックM−1が完全にデコードされた(デコードされデブロックされた)かどうか決定する。MB_IDがLast_Db_MB+1に等しい場合には、現在マクロブロックMは、デブロックされた最後のマクロブロックLast_Db_MBに続く次のマクロブロックであり、即ち現在マクロブロックMのマクロブロック番号と、最後にデブロックされたマクロブロックLast_Db_MBのマクロブロック番号は、連続番号となり、フローチャートは、ブロック87へ進む。さもなければ、マクロブロックが順序ずれして受け取られたか、又は現在マクロブロックMが、最後にデブロックされたマクロブロックLast_Db_MBに続く次のマクロブロックではなく、即ち現在マクロブロックMは、最後にデブロックされたマクロブロックLast_Db_MBから、デブロックされていない1つ以上のマクロブロックだけ分離されたものであり、フローチャートは、ブロック84へ進む。
[0081]ブロック84において、現在マクロブロックMがデコードされ(デブロックはされず)、そしてデコードされたデータが(例えば、図4の記憶要素43に)セーブされる。ブロック85において、現在マクロブロックMは、デコードされたがデブロックはされないとしてフラグが立てられる。一実施形態では、現在マクロブロックMに対応するビット値が、図7A〜図7Dに関連して上述したように、アレイにおいてセットされる。
[0082]図8のブロック86において、現在マクロブロックMがフレームにおける最後のマクロブロックでない場合には、フローチャートは、ブロック82へ戻る(ある種のエラーがない限り、図8のフローチャートは、この時点で、常にブロック82へ戻る)。
[0083]ブロック87において、現在マクロブロックMは、図4の第1デブロッカーを使用して、オンザフライでデコードされデブロックされる。また、上述したように、あるマクロブロックは、エンコーディング順序でそれに先行する全てのマクロブロックがデブロックされた場合に、デブロックすることができる。現在マクロブロックMの直前のマクロブロックM−1が(フローチャートのブロック83で決定されたように)デブロックされた場合に、現在マクロブロックMをデブロックすることができる。換言すれば、デブロックされるために、マクロブロックM−1は、全ての先行するマクロブロックがデブロックされるという条件を満足する。即ち、現在マクロブロックMがマクロブロックM−1の直後にあるために、これもその条件を満足する。
[0084]図8のブロック88において、他の適格なマクロブロックが記憶装置から検索され、そして図4の第2デブロッカーを使用してデブロックされる。即ち、エンコーディング順序で現在マクロブロックMの直後に続くマクロブロックM+1も、そのマクロブロックM+1が以前にデコードされて記憶された場合にデブロックすることができる。マクロブロックM+1がデブロックされると、エンコーディング順序でマクロブロックM+1の直後に続くマクロブロックM+2は、それが以前にデコードされて記憶された場合にデブロックすることができ、等々となる。一実施形態では、デブロッキングに適した各マクロブロックは、図7A〜図7Dのアレイのようなアレイにおいてフラグが立てられる。また、図9に関連して以下に述べるように、付加的な情報も与えられる。
[0085]図8のブロック89において、(今や、最後にデブロックされたマクロブロックLast_Db_MBに等しい)現在マクロブロックMがフレームにおいて最後のマクロブロックでない場合には、フローチャートがブロック82へ戻る。さもなければ、フレームが完全にデコードされる。
[0086]図9は、本発明の一実施形態により適格なマクロブロックをデブロックするためのコンピュータ実施方法のフローチャートである。ブロック91において、フレーム内のN番目のマクロブロックがデブロックされ、そしてデブロッキングに対して適格な他のマクロブロックが識別される。一実施形態では、適格なマクロブロックを識別するために、図7A〜図7Dのアレイのようなアレイがアクセスされる。
[0087]図9のブロック92では、最後に(最も最近)デブロックされたマクロブロック(ブロック91においてデブロックされたマクロブロック)のマクロブロック番号が1だけ増加される(N=N+1)。ブロック93において、Nの現在値がフレーム内の最後のマクロブロックのマクロブロック番号より大きい場合には、フローチャートは、ブロック95へ進み、さもなければ、フローチャートは、ブロック94へ進む。
[0088]ブロック94において、現在マクロブロックに対応するアレイのビット値が読み取られる。ビット値が(例えば、1に等しく)セットされた場合には、現在マクロブロックをデブロックすることができ、フローチャートは、ブロック91へ戻り、そして現在マクロブロックがデブロックされる。さもなければ、フローチャートは、ブロック95へ進む。
[0089]ブロック95において、Last_Db_MBの値(前記のように定義された)は、Nの現在値を1だけ減少した値(N−1)にセットされ、このLast_Db_MBの値は、図8に関連して説明したように、返送され使用される。
[0090]従って、本発明の一実施形態によれば、マクロブロックは、デブロックするのに適したものとなるや否や、デブロックすることができる。順序ずれした(例えば、ASO/FMO)フレーム内にある幾つかのマクロブロックに対してオンザスポットデブロッキングを行うことができる。従って、このようなフレームにおける全てのマクロブロックをメモリへ及びメモリから転送する必要がないので、バストラフィックの量を減少することができ、また、消費されるメモリの量も減少される。更に、デコーディング及びデブロッキングを並列に遂行でき、即ち1つのマクロブロックがデコードされる間に、別のマクロブロックをデブロックできるので、コンピューティング時間を短縮することができる。
[0091]例えば、図10は、(陰影付けされたブロックを使用して表された)第1スライスのマクロブロックが、(陰影付けされないブロックを使用して表された)第2スライスのマクロブロックとチェッカーボードパターンで散在しているフレームの一部分を示す。第1スライスが最初にデコーダへ送られ、その後、第2スライスが送られ、それ故、フレームは、ASO/FMOフレームである。デコーディング中に、第1(左上)のマクロブロックMaは、オンザスポットでデブロックできるが、陰影付けされた他のブロックは、デブロッキングまで記憶される。第2(陰影付けされない)スライスのマクロブロックがデコードされるときには、第2スライスの各マクロブロックを、それがデコードされた直後にデブロックすることができると共に、第1スライスの各マクロブロックをメモリから順序正しくフェッチしてデブロックすることができる。より詳細には、マクロブロックMbは、デブロックされているマクロブロックMaにしか依存しないので、オンザスポットでデブロックすることができ、次いで、マクロブロックMcをメモリから検索してデブロックすることができ、マクロブロックMdをオンザスポットでデブロックすることができ、等々となる。それ故、第2スライスのマクロブロックをデブロッキングまで記憶する必要はなく、(マクロブロックMaを除く)第1スライスのマクロブロックのみがデブロッキングまで記憶される。従って、この例では、デブロッキングまで記憶されるのは、フレーム内のマクロブロックの半分未満であり、バスを経てメモリへ行き来するトラフィックも約半分に減少される。
[0092]動きの補償は、デブロッキングよりも、完了までにより長い時間を要するので、デコーディングパイプラインのデブロッキングステージが時々アイドル状態になることがある(例えば、データが欠乏することがある)。しかしながら、オンザスポットデブロッキングでは、デブロッキングステージは、アイドル時間を利用して、記憶されたマクロブロックを処理し、合計デコーディング時間を従来の2パス具現化に比して短縮することができる。
[0093]更に、ASO/FMOフレームは、オンザフライで検出することができる。順序正しいフレームのデコーディングについては従来の具現化と少なくとも同じ性能を達成するが、順序ずれしたフレームのデコーディングは、著しく改善される。更に、単一デコーダアーキテクチャーを使用して、順序正しい/順序ずれした参照/非参照フレームを処理することができ、即ちデコーダを通る経路は、処理されているフレームの形式に基づいて適応式に選択される。
[0094]本発明の特定の実施形態の以上の説明は、本発明を例示するためのものである。それらは、本発明を余すところなく述べたものでも、ここに開示した正確な形態に限定するものでもなく、以上の教示に鑑み、多数の変更や修正が考えられる。それらの実施形態は、本発明の原理及びその実際上の応用を最良に説明して、当業者が、本発明、及び意図された適当な用途に適するように変更された種々の実施形態を最良に利用できるようにするために、選択され記述された。本発明の範囲は、特許請求の範囲及びその等効物により規定されることが意図される。
20・・・システム、21・・・ホスト中央処理ユニット(CPU)、22・・・グラフィック処理ユニット(GPU)、23・・・ディスプレイ、24・・・メモリ、25・・・バス、30・・・デコーダ、31・・・エンコードされたビットストリーム、32・・・デコーディングステージ、33・・・デブロッキングステージ、34・・・映像データ、36・・・デコーディングパイプライン、41・・・第1デブロッカー、42・・・第2デブロッカー、43・・・記憶要素、45・・・フレームバッファ、46・・・ディスプレイ

Claims (17)

  1. エンコードされたデータのフレームをデコードするためのデコーダであって、
    エンコードされた第1フレームをデコードして、デコードされた第1フレームを発生するように動作できるデコーダ第1ステージと、
    前記第1ステージの下流に結合されたデコーダ第2ステージであり、コードされたフレームを並列にデブロッキングするように動作できる第1デブロッカー及び第2デブロッカーを含み、前記デコードされた第1フレームにはフレーム形式が関連付けられ、前記デコードされた第1フレームは、前記フレーム形式に基づいて前記第1デブロッカー及び前記第2デブロッカーの1つへ送られ、前記デコードされた第1フレームは、前記エンコードされた第1フレーム内のマクロブロックが特定順序で前記デコーダに到着する場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた第1フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた第1フレームは、別のフレームがデコーディングについて前記デコードされた第1フレームの情報に依存する場合には参照フレームとして識別され、さもなければ、前記デコードされた第1フレームは、非参照フレームとして識別され、更に、前記デコードされた第1フレームは、そのデコードされた第1フレームが順序ずれした非参照フレームとして分類された場合には前記第2デブロッカーへ送られ、さもなければ、前記デコードされた第1フレームは、前記第1デブロッカーへ送られる、デコーダ第2ステージと、
    を備えるデコーダ。
  2. 前記エンコードされた第1フレームは、複数のマクロブロックを含み、それらのマクロブロックにはマクロブロック番号が各々関連付けられ、前記デコードされた第1フレームは、マクロブロック番号が連続的に増加する順序でマクロブロックが前記デコーダに到着する場合には順序正しいフレームとして識別される、請求項に記載のデコーダ。
  3. 前記第2デブロッカーに結合され、前記デコードされたフレームをデブロッキングの前に記憶するように動作できる記憶要素を更に備える、請求項1に記載のデコーダ。
  4. 前記デコーダ第1ステージは、エンコードされた第2フレームを、前記デコードされた第1フレームのデブロッキングと並列にデコードするように動作できる、請求項1に記載のデコーダ。
  5. 前記デコーダ第1ステージは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを遂行するように動作できる、請求項1に記載のデコーダ。
  6. データのエンコードされたフレームを処理するコンピュータ実施方法であって、
    エンコードされた第1フレームをデコーダの第1ステージへの入力として受け取るステップと、
    前記第1ステージにおいて前記エンコードされた第1フレームをデコードして、デコードされた第1フレームを発生するステップと、
    前記デコードされた第1フレームを、前記エンコードされた第1フレーム内のマクロブロックが特定順序にある場合には順序正しいフレームとして識別し、さもなければ、前記デコードされた第1フレームを、順序ずれしたフレームとして識別するステップと、
    前記デコードされた第1フレームを、別のフレームがデコーディングについて前記デコードされた第1フレームの情報に依存する場合には参照フレームとして識別し、さもなければ、前記デコードされた第1フレームを非参照フレームとして識別するステップと、
    前記デコードされた第1フレームを前記第1ステージから前記デコーダの第2ステージへ転送するステップであり、前記第2ステージが、デコードされたフレームを並列にデブロッキングするように動作できる第1デブロッカー及び第2デブロッカーを含み、前記デコードされた第1フレームは、そのデコードされた第1フレームが順序ずれした非参照フレームとして識別された場合には前記第2デブロッカーへ転送され、さもなければ、前記デコードされた第1フレームは前記第1デブロッカーへ転送される、ステップと、
    前記第2ステージにおいて前記デコードされた第1フレームをデブロッキングして、ディスプレイ装置上でレンダリングするのに適したデコードされデブロックされた第1フレームを発生するステップと、
    を備えるコンピュータ実施方法。
  7. 前記エンコードされた第1フレームは、特定の順序でエンコードされた複数のマクロブロックを含み、
    当該方法は、更に、
    マクロブロックが特定のエンコーディング順序以外でデコーダに到着する場合及び前記デコードされた第1フレームが非参照フレームとして識別される場合に前記デコードされた第1フレームを前記第2デブロッカーへ送るステップと
    さもなければ、前記デコードされた第1フレームを前記第1デブロッカーへ送るステップと、
    を更に備える請求項に記載の方法。
  8. 前記マクロブロックの各々には、各マクロブロック番号が関連付けられ、前記複数のマクロブロックは、マクロブロック番号が増加する順序でエンコードされる、請求項に記載の方法。
  9. 1つ以上のデコードされたフレームをデブロッキングの前に記憶するステップを更に備える、請求項に記載の方法。
  10. エンコードされた第2フレームを、前記デコードされた第1フレームのデブロッキングと並列にデコードするステップを更に備える、請求項に記載の方法。
  11. 前記デコーディングは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを含む、請求項に記載の方法。
  12. エンコードされたデータのフレームをデコードするデコーダパイプラインであって、
    エンコードされたフレームをデコードするよう動作できるデコーディングステージと、
    前記デコーディングステージに結合されたデブロッキングステージであり、デコードされたフレームをデブロッキングするよう動作できる第1デブロッカー及び第2デブロッカーを含むデブロッキングステージと、
    を備え、デコードされた参照フレームは、前記第1デブロッカーを使用してデブロックされるが、前記第2デブロッカーを使用してデブロックされず、デコードされた非参照フレームをデブロックするために、デコードされた非参照フレームのエンコードされたバージョン内におけるマクロブロックの順序に基づいて前記第1デブロッカー及び前記第2デブロッカーの1つが選択され、更に、フレームは、別のフレームがデコーディングについてそれに依存する場合には参照フレームとして分類され、さもなければ、非参照フレームとして分類される、デコーダパイプライン。
  13. 前記デコードされた非参照フレームは、前記エンコードされたバージョンにおけるマクロブロックが特定の順序にある場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた非参照フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた非参照フレームは、順序正しいフレームとして分類された場合には前記第1デブロッカーへ送られ、一方、順序ずれしたフレームとして分類された場合には前記第2デブロッカーへ送られる、請求項12に記載のデコーダパイプライン。
  14. 前記デコードされた非参照フレームは、マクロブロック番号が連続的に増加する順序で前記エンコードされたバージョンにおけるマクロブロックが前記デコーダに到着する場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた非参照フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた非参照フレームは、順序正しいフレームとして分類された場合には前記第1デブロッカーへ送られ、一方、順序ずれしたフレームとして分類された場合には前記第2デブロッカーへ送られる、請求項12に記載のデコーダパイプライン。
  15. 前記第2デブロッカーに結合されて、前記デコードされたフレームをデブロッキングの前に記憶するよう動作できる記憶要素を更に備える、請求項12に記載のデコーダパイプライン。
  16. 前記デコーディングステージは、エンコードされたフレームを処理するよう動作でき、前記デブロッキングステージは、デコードされたフレームを処理するように並列に動作できる、請求項12に記載のデコーダパイプライン。
  17. 前記デコーディングステージは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを遂行するよう動作できる、請求項12に記載のデコーダパイプライン。
JP2009201949A 2008-10-14 2009-09-01 デコーディングパイプラインにおける第2デブロッカー Active JP4987049B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/250,809 2008-10-14
US12/250,809 US8867605B2 (en) 2008-10-14 2008-10-14 Second deblocker in a decoding pipeline

Publications (2)

Publication Number Publication Date
JP2010098725A JP2010098725A (ja) 2010-04-30
JP4987049B2 true JP4987049B2 (ja) 2012-07-25

Family

ID=42098825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009201949A Active JP4987049B2 (ja) 2008-10-14 2009-09-01 デコーディングパイプラインにおける第2デブロッカー

Country Status (5)

Country Link
US (1) US8867605B2 (ja)
JP (1) JP4987049B2 (ja)
KR (1) KR101082184B1 (ja)
CN (1) CN101729895B (ja)
TW (1) TWI473040B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9179166B2 (en) 2008-12-05 2015-11-03 Nvidia Corporation Multi-protocol deblock engine core system and method
US9241167B2 (en) * 2012-02-17 2016-01-19 Microsoft Technology Licensing, Llc Metadata assisted video decoding
US20140056363A1 (en) * 2012-08-23 2014-02-27 Yedong He Method and system for deblock filtering coded macroblocks
CN106470341B (zh) 2015-08-17 2020-10-02 恩智浦美国有限公司 媒体显示系统
WO2020180166A1 (ko) * 2019-03-07 2020-09-10 디지털인사이트주식회사 영상 부호화/복호화 방법 및 장치

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080A (en) * 1858-04-27 Improvement in harvesters
FI106071B (fi) 1997-03-13 2000-11-15 Nokia Mobile Phones Ltd Mukautuva suodatin
JPH11205792A (ja) 1998-01-14 1999-07-30 Sony Corp ブロック歪低減方法及び装置
KR100359208B1 (ko) 2000-12-27 2002-11-04 주식회사 팬택앤큐리텔 고속 디블럭킹 필터 장치
US6980596B2 (en) * 2001-11-27 2005-12-27 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
US6907079B2 (en) * 2002-05-01 2005-06-14 Thomson Licensing S.A. Deblocking filter conditioned on pixel brightness
EP1408697A4 (en) * 2002-07-11 2007-07-25 Matsushita Electric Ind Co Ltd METHOD FOR DETERMINING THE FILTRATION THICKNESS, METHOD FOR MOVING PICTOR CODING AND METHOD FOR MOVING PICTOR CODING
US6917310B2 (en) * 2003-06-25 2005-07-12 Lsi Logic Corporation Video decoder and encoder transcoder to and from re-orderable format
WO2005018239A1 (ja) * 2003-08-19 2005-02-24 Matsushita Electric Industrial Co., Ltd. 動画像符号化方法および動画像復号化方法
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
KR100624426B1 (ko) 2004-07-06 2006-09-19 삼성전자주식회사 파이프 라인 방식의 복호화 장치 및 방법과, 이 장치를제어하는 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수있는 기록 매체
CN1922885A (zh) * 2004-08-05 2007-02-28 松下电器产业株式会社 图象解码装置和图象编码装置
US8116379B2 (en) * 2004-10-08 2012-02-14 Stmicroelectronics, Inc. Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard
KR20060060919A (ko) * 2004-12-01 2006-06-07 삼성전자주식회사 H.264/mpeg-4 에서의 블록킹 효과를 제거하기 위한디블록 필터 및 필터링 방법
JP4270125B2 (ja) 2004-12-16 2009-05-27 ソニー株式会社 データ処理装置、画像処理装置、それらの方法およびプログラム
US8576924B2 (en) * 2005-01-25 2013-11-05 Advanced Micro Devices, Inc. Piecewise processing of overlap smoothing and in-loop deblocking
US20060233253A1 (en) 2005-03-10 2006-10-19 Qualcomm Incorporated Interpolated frame deblocking operation for frame rate up conversion applications
JP2006254231A (ja) * 2005-03-11 2006-09-21 Toshiba Corp 情報処理装置および同装置で用いられるプログラム
TWI264951B (en) 2005-05-19 2006-10-21 Cheertek Inc Deblock filter method for applying on video encoding/decoding and the apparatus thereof
US7796792B2 (en) * 2005-06-29 2010-09-14 Agfa Healthcare, N.V. Method of identifying disturbing frequencies originating from the presence of an anti-scatter grid during acquisition of a radiation image
KR100772379B1 (ko) * 2005-09-23 2007-11-01 삼성전자주식회사 외부 메모리 장치, 그 영상 데이터 저장 방법, 이를 이용한영상 처리 장치
US7796692B1 (en) * 2005-11-23 2010-09-14 Nvidia Corporation Avoiding stalls to accelerate decoding pixel data depending on in-loop operations
JP2007251881A (ja) 2006-03-20 2007-09-27 Funai Electric Co Ltd ブロックノイズ除去装置及び電子機器
US20080056350A1 (en) * 2006-08-31 2008-03-06 Ati Technologies, Inc. Method and system for deblocking in decoding of video data
KR100827107B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
TW200820783A (en) * 2006-10-25 2008-05-01 Realtek Semiconductor Corp Apparatus and method for deblock filtering
US20080123750A1 (en) * 2006-11-29 2008-05-29 Michael Bronstein Parallel deblocking filter for H.264 video codec
US20080159407A1 (en) * 2006-12-28 2008-07-03 Yang Nick Y Mechanism for a parallel processing in-loop deblock filter
US8369411B2 (en) * 2007-03-29 2013-02-05 James Au Intra-macroblock video processing
US8861591B2 (en) * 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US20090010326A1 (en) * 2007-07-05 2009-01-08 Andreas Rossholm Method and apparatus for parallel video decoding
EP2061250B8 (en) * 2007-11-16 2012-02-29 ST-Ericsson SA Deblocking filter
CN101207812B (zh) * 2007-12-10 2010-04-07 海信集团有限公司 一种视频环路滤波方法
US20090304085A1 (en) * 2008-06-04 2009-12-10 Novafora, Inc. Adaptive Deblocking Complexity Control Apparatus and Method

Also Published As

Publication number Publication date
JP2010098725A (ja) 2010-04-30
KR101082184B1 (ko) 2011-11-09
CN101729895B (zh) 2013-01-09
CN101729895A (zh) 2010-06-09
TWI473040B (zh) 2015-02-11
KR20100041681A (ko) 2010-04-22
US20100091878A1 (en) 2010-04-15
US8867605B2 (en) 2014-10-21
TW201019271A (en) 2010-05-16

Similar Documents

Publication Publication Date Title
US8724694B2 (en) On-the spot deblocker in a decoding pipeline
US8861586B2 (en) Adaptive deblocking in a decoding pipeline
US8576924B2 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US7792385B2 (en) Scratch pad for storing intermediate loop filter data
RU2720975C2 (ru) Способ кодирования и декодирования изображений, устройство кодирования и декодирования и соответствующие компьютерные программы
US9319697B2 (en) Coding and decoding images with sign data hiding
EP4027642A1 (en) Method for picture segmentation using columns
JP4987049B2 (ja) デコーディングパイプラインにおける第2デブロッカー
US20190068981A1 (en) Storing and retrieving lossy-compressed high bit depth image data
JP6708374B2 (ja) 画像群内で修正可能要素のセットを決定するための方法、デバイス、プログラム、及び可読媒体
JP7439841B2 (ja) ループ内フィルタリングの方法及びループ内フィルタリングの装置
JP4691062B2 (ja) 情報処理装置
US10171818B2 (en) Scanning orders for non-transform coding
US20050089232A1 (en) Method of video compression that accommodates scene changes
US9788002B2 (en) Image processing apparatus and method
US20110051815A1 (en) Method and apparatus for encoding data and method and apparatus for decoding data
US10805611B2 (en) Method and apparatus of constrained sequence header
JP4779977B2 (ja) 画像符号化・復号化装置
US11509940B1 (en) Video apparatus with reduced artifact and memory storage for improved motion estimation
JP2015185897A (ja) 画像符号化方法及び画像符号化装置
WO2013165624A1 (en) Mechanism for facilitating cost-efficient and low-latency encoding of video streams
JP2002112275A (ja) 画像復号方法、画像復号装置、およびデータ記憶媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120125

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: 20120403

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120424

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4987049

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250