(57)【要約】【課題】  デコーディングパイプラインにおける第２デブロッカーを提供する。【解決手段】  デコーダは、データのエンコードされたフレームを（デブロッキングの前に）デコードするのに使用できる第１ステージを含む。また、デコーダは、第１ステージの下流に第２ステージを含むこともできる。この第２ステージは、デコードされたフレームを並列にデブロックするのに使用できる第１デブロッカー及び第２デブロッカーを含む。【選択図】  図４
2010098725.tif 000002
【特許請求の範囲】
【請求項１】
エンコードされたデータのフレームをデコードするためのデコーダであって、
エンコードされた第１フレームをデコードして、デコードされた第１フレームを発生するように動作できるデコーダ第１ステージと、
前記第１ステージの下流に結合されたデコーダ第２ステージであり、コードされたフレームを並列にデブロッキングするように動作できる第１デブロッカー及び第２デブロッカーを含むデコーダ第２ステージと、
を備えるデコーダ。
【請求項１】
前記デコードされた第１フレームにはフレーム形式が関連付けられ、前記デコードされた第１フレームは、前記フレーム形式に基づいて前記第１デブロッカー及び前記第２デブロッカーの１つへ送られる、請求項１に記載のデコーダ。
【請求項２】
前記デコードされた第１フレームは、前記エンコードされた第１フレーム内のマクロブロックが特定順序で前記デコーダに到着する場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた第１フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた第１フレームは、別のフレームがデコーディングについて前記デコードされた第１フレームの情報に依存する場合には参照フレームとして識別され、さもなければ、前記デコードされた第１フレームは、非参照フレームとして識別され、更に、前記デコードされた第１フレームは、そのデコードされた第１フレームが順序ずれした非参照フレームとして分類された場合には前記第２デブロッカーへ送られ、さもなければ、前記デコードされた第１フレームは、前記第１デブロッカーへ送られる、請求項２に記載のデコーダ。
【請求項３】
前記エンコードされた第１フレームは、複数のマクロブロックを含み、それらのマクロブロックにはマクロブロック番号が各々関連付けられ、前記デコードされた第１フレームは、マクロブロック番号が連続的に増加する順序でマクロブロックが前記デコーダに到着する場合には順序正しいフレームとして識別される、請求項３に記載のデコーダ。
【請求項４】
前記第２デブロッカーに結合され、前記デコードされたフレームをデブロッキングの前に記憶するように動作できる記憶要素を更に備える、請求項１に記載のデコーダ。
【請求項５】
前記デコーダ第１ステージは、エンコードされた第２フレームを、前記デコードされた第１フレームのデブロッキングと並列にデコードするように動作できる、請求項１に記載のデコーダ。
【請求項６】
前記デコーダ第１ステージは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを遂行するように動作できる、請求項１に記載のデコーダ。
【請求項７】
データのエンコードされたフレームを処理するコンピュータ実施方法であって、
エンコードされた第１フレームをデコーダの第１ステージへの入力として受け取るステップと、
前記第１ステージにおいて前記エンコードされた第１フレームをデコードして、デコードされた第１フレームを発生するステップと、
前記デコードされた第１フレームを前記第１ステージから前記デコーダの第２ステージへ転送するステップであり、前記第２ステージが、デコードされたフレームを並列にデブロッキングするように動作できる第１デブロッカー及び第２デブロッカーを含むものであるステップと、
前記第２ステージにおいて前記デコードされた第１フレームをデブロッキングして、ディスプレイ装置上でレンダリングするのに適したデコードされデブロックされた第１フレームを発生するステップと、
を備えるコンピュータ実施方法。
【請求項８】
前記デコードされた第１フレームを、前記エンコードされた第１フレーム内のマクロブロックが特定順序にある場合には順序正しいフレームとして識別し、さもなければ、前記デコードされた第１フレームを、順序ずれしたフレームとして識別するステップと、
前記デコードされた第１フレームを、別のフレームがデコーディングについて前記デコードされた第１フレームの情報に依存する場合には参照フレームとして識別し、さもなければ、前記デコードされた第１フレームを非参照フレームとして識別するステップと、
前記デコードされた第１フレームを、そのデコードされた第１フレームが順序ずれした非参照フレームとして識別された場合には前記第２デブロッカーへ転送し、さもなければ、前記デコードされた第１フレームを前記第１デブロッカーへ転送するステップと、
を更に備える請求項８に記載の方法。
【請求項９】
前記エンコードされた第１フレームは、特定の順序でエンコードされた複数のマクロブロックを含み、
当該方法は、更に、
マクロブロックが特定のエンコーディング順序以外でデコーダに到着する場合及び前記デコードされた第１フレームが非参照フレームとして識別される場合に前記デコードされた第１フレームを前記第２デブロッカーへ送るステップであり、フレームは、別のフレームがデコーディングのためにそれに依存しない場合に非参照フレームとして識別されるようにしたステップと、
さもなければ、前記デコードされた第１フレームを前記第１デブロッカーへ送るステップと、
を更に備える請求項８に記載の方法。
【請求項１０】
前記マクロブロックの各々には、各マクロブロック番号が関連付けられ、前記複数のマクロブロックは、マクロブロック番号が増加する順序でエンコードされる、請求項１０に記載の方法。
【請求項１１】
１つ以上のデコードされたフレームをデブロッキングの前に記憶するステップを更に備える、請求項８に記載の方法。
【請求項１２】
エンコードされた第２フレームを、前記デコードされた第１フレームのデブロッキングと並列にデコードするステップを更に備える、請求項８に記載の方法。
【請求項１３】
前記デコーディングは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを含む、請求項８に記載の方法。
【請求項１４】
エンコードされたデータのフレームをデコードするデコーダパイプラインであって、
エンコードされたフレームをデコードするよう動作できるデコーディングステージと、
前記デコーディングステージに結合されたデブロッキングステージであり、デコードされたフレームをデブロッキングするよう動作できる第１デブロッカー及び第２デブロッカーを含むデブロッキングステージと、
を備え、デコードされた参照フレームは、前記第１デブロッカーを使用してデブロックされるが、前記第２デブロッカーを使用してデブロックされず、デコードされた非参照フレームをデブロックするために、デコードされた非参照フレームのエンコードされたバージョン内におけるマクロブロックの順序に基づいて前記第１デブロッカー及び前記第２デブロッカーの１つが選択され、更に、フレームは、別のフレームがデコーディングについてそれに依存する場合には参照フレームとして分類され、さもなければ、非参照フレームとして分類される、デコーダパイプライン。
【請求項１５】
前記デコードされた非参照フレームは、前記エンコードされたバージョンにおけるマクロブロックが特定の順序にある場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた非参照フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた非参照フレームは、順序正しいフレームとして分類された場合には前記第１デブロッカーへ送られ、一方、順序ずれしたフレームとして分類された場合には前記第２デブロッカーへ送られる、請求項１５に記載のデコーダパイプライン。
【請求項１６】
前記デコードされた非参照フレームは、マクロブロック番号が連続的に増加する順序で前記エンコードされたバージョンにおけるマクロブロックが前記デコーダに到着する場合には順序正しいフレームとして識別され、さもなければ、前記デコードされた非参照フレームは、順序ずれしたフレームとして識別され、更に、前記デコードされた非参照フレームは、順序正しいフレームとして分類された場合には前記第１デブロッカーへ送られ、一方、順序ずれしたフレームとして分類された場合には前記第２デブロッカーへ送られる、請求項１５に記載のデコーダパイプライン。
【請求項１７】
前記第２デブロッカーに結合されて、前記デコードされたフレームをデブロッキングの前に記憶するよう動作できる記憶要素を更に備える、請求項１５に記載のデコーダパイプライン。
【請求項１８】
前記デコーディングステージは、エンコードされたフレームを処理するよう動作でき、前記デブロッキングステージは、デコードされたフレームを処理するように並列に動作できる、請求項１５に記載のデコーダパイプライン。
【請求項１９】
前記デコーディングステージは、可変長さデコーディング、逆量子化、逆変換、及び動き補償より成るグループから選択されたオペレーションを遂行するよう動作できる、請求項１５に記載のデコーダパイプライン。
【発明の詳細な説明】
【関連米国出願】
【０００１】
[0001]本出願は、本発明の譲受人に譲渡され参考としてここに援用する“On-the-SpotDeblocking in a Decoding Pipeline”と題する同時係争中の米国特許出願、代理人管理番号ＮＶＩＤ−Ｐ−ＳＣ−０８−０３３３−ＵＳ２に関する。また、本出願は、本発明の譲受人に譲渡され参考としてここに援用する“AdaptiveDeblocking in a Decoding Pipeline”と題する同時係争中の米国特許出願、代理人管理番号ＮＶＩＤ−Ｐ−ＳＣ−０８−０３３３−ＵＳ３にも係る。
【技術分野】
【０００２】
[0002]本発明による実施形態は、一般に、ビデオデコーディング（ビデオ解凍）に関する。
【背景技術】
【０００３】
[0003]ムービングピクチャーズエクスパートグループ−４（ＭＰＥＧ−４）パート１０又はＭＰＥＧ−４アドバンストビデオコーディング（ＡＶＣ）としても知られているＨ．２６４は、ビデオ圧縮のための規格である。ビデオは、一連の画像（又はフレーム）を含み、各フレームは、ピクセルの二次元アレイより成る。ピクセルは、マクロブロック（ピクセルの１６ｘ１６アレイ）へ分割される。各マクロブロックは、マクロブロック番号を有し、一般的に、マクロブロックは、フレームの左上でスタートして左から右へ上から下へ単調に増加して連続的に番号付けされる。マクロブロックは、スライスへとグループ分けすることができ、スライスは、スライスグループへとグループ分けすることができる。１つのスライス内のマクロブロックは、マイクロブロック番号が上昇する順序で配列される。スライスは、いかなる数のマクロブロックを含むこともでき、これらマクロブロックは、隣接してもしなくてもよく、即ち１つのスライス内のマクロブロックは、他のスライスグループの１つ以上の他のスライスのマクロブロック間に散在されてもよいが、同じスライスグループ内のスライスからのマクロブロックが互いに散在することはない。
【０００４】
[0004]上述したようにマクロブロックをスライスへグループ分けできるようにするＨ．２６４の特徴は、一般的に、融通性マクロブロック順序付け（ＦＭＯ）と称される。このＦＭＯは、送信中にスライスが失われるか又は破損された場合にエラーを隠すためにデコーダによって使用できるエラー耐性(resiliency)ツールの１つである。欠落又は破損したスライスにおけるマクロブロックは、別のスライスからマクロブロック情報を内挿し又は外挿することで再構成することができる。
【０００５】
[0005]別のＨ．２６４特徴は、一般的に、任意のスライス順序付け（ＡＳＯ）と称される。ＡＳＯでは、スライスを任意の順序で送信することができる。例えば、スライスは、それが準備できるや否や送信されてもよく、即ちスライスは、そのスライスを作り上げる全マクロブロックがエンコードされるや否や、デコーダへストリーミングされてもよい。その結果、１つのスライスグループからのスライスが送信された後に、別のスライスグループからのスライスが送信され、その後、第１のスライスグループからの別のスライスが送信され、等々と続く。
【０００６】
[0006]従って、一般的に述べると、Ｈ．２６４は、エンコードされたマクロブロックを「順序ずれ」して送信するのを許す。即ち、マクロブロックは、特定の順序で（例えば、上から下へ及び左から右へ、マクロブロック番号に基づく上昇順に）エンコードされるが、マクロブロックがデコーディング装置へ送信される順序、ひいては、それがデコーディング装置により受信される順序は、エンコーディング順序とは異なるものでよい。
【０００７】
[0007]基本的なデコーディングオペレーションに加えて、デコーディング装置は、デブロッキングオペレーションを遂行する。デブロッキングでは、隣接するマクロブロック間の境界を平滑化するために、デコードされたマクロブロックにデブロッキングフィルタが適用される。
【０００８】
[0008]図１を参照すれば、マクロブロックＭ１をデブロックするためには、マクロブロックＭ２（マクロブロックＭ１の左側の最も近い隣接部）及びおそらくはマクロブロックＭ３（マクロブロックＭ１の上の最も近い隣接部）に対する情報が必要となる。しかしながら、マクロブロックＭ１は、１つのスライス（例えば、スライスＳ２）にあり、そして隣接マクロブロックＭ２及びＭ３は、１つ又は複数の異なるスライス（例えば、スライスＳ１）にあることがある。ＡＳＯがイネーブルされると、スライスＳ２は、スライスＳ１の前にデコーダへ送信される。従って、マクロブロックＭ１は、デブロッキングの準備ができるが、スライスＳ１がデコーダにまだ到着しない場合にはデブロッキングを遅らせねばならない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
[0009]その結果、Ｈ．２６４デコーディングは、典型的に、２パス解決策を使用して具現化される。第１パスでは、基本的デコーディング（デブロッキングの前のデコーディング）が遂行され、デコードされたデータは、それがデコードされたときにセーブされる。第２パスでは、デコードされたデータが再ロードされて、デブロッキングが遂行される。不都合にも、この形式の具現化は、デコーディング装置に付加的な負担をかける。より詳細には、デコーディング装置は、メモリへの及びメモリからのデータの転送を受け容れるためのより広いデータバス帯域巾を必要とし、デコードされたデータをデブロッキングの前に記憶するための付加的なメモリを必要とし、また、第１及び第２のパスが順次に遂行されるためにより長い計算時間を必要とすることがある。
【課題を解決するための手段】
【００１０】
[0010]本発明の実施形態によれば、デコーダは、データのエンコードされたフレームをデコードするのに使用できる第１（デブロッキングの前のデコーディング）ステージを備えている。また、デコーダは、第１ステージの下流に第２（デブロッキング）ステージも備えている。この第２ステージは、デコードされたフレームを並列にデブロックするように使用できる第１デブロッカー及び第２デブロッカーを含む。
【００１１】
[0011]第１及び第２のデブロッカーは、互いに並列に且つデコーディングステージとも並列に動作することができる。例えば、第１デブロッカーは、あるフレームをデブロッキングする一方、第２デブロッカーは、別のフレームをデブロッキングし、その間に、デコーディングステージは、更に別のフレームに対して動作することができる。更に、ある例においては、デブロッカーが、フレームのある部分に対して動作する一方、デコーディングステージが、同じフレームの後続部分に対して動作してもよい。
【００１２】
[0012]一般的に、エンコードされたフレームは、デコーダの第１ステージ（基本的デコーディングステージ）への入力として受け取られて、デコードされる。デコードされたフレームは、第１デブロッカー又は第２デブロッカーのいずれかへ転送され、それをデブロックすることができる。一実施形態では、デコードされたフレームは、そのデコードされたフレームをどのように分類するかに基づいて、第１デブロッカー又は第２デブロッカーのいずれかへ転送される。デコードされたフレームが第１形式のフレームとして分類された場合には、それが第１デブロッカーへ送信され、さもなければ、デコードされたフレームは、第２形式のフレームとして分類されて、第２デブロッカーへ送信される。
【００１３】
[0013]第２デブロッカーを導入することは、幾つかのフレームのデブロッキングを一次経路から並列の二次経路へオフロード化できることを意味する。処理時間が短縮され、全体的な性能が改善される。
【００１４】
[0014]本発明の種々の実施形態のこれら及び他の目的並びに効果は、当業者であれば、種々の添付図面に示された実施形態の以下の詳細な説明を読んだ後に明らかとなるであろう。
【００１５】
[0015]本発明は、同様の要素が同じ参照番号で示された添付図面を参照して、一例として、以下に詳細に説明する。
【図面の簡単な説明】
【００１６】
【図１】マクロブロックのアレイを示す。
【図２】本発明の実施形態によるデコーダを具現化できるシステムの一例を示すブロック図である。
【図３】本発明の一実施形態によるデコーディングパイプラインの要素を示すブロック図である。
【図４】本発明の一実施形態によるデコーダの要素を示すブロック図である。
【図５】本発明の一実施形態による第２デブロッカーを使用してデータを処理するためのコンピュータ実施方法の一例のフローチャートである。
【図６】本発明の一実施形態により第２デブロッカーを適応式に使用してデータを処理するためのコンピュータ実施方法の一例のフローチャートである。
【図７Ａ】本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。
【図７Ｂ】本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。
【図７Ｃ】本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。
【図７Ｄ】本発明の一実施形態によるマクロブロック状態を追跡するのに使用できるアレイの一例を示す。
【図８】本発明の一実施形態によりマクロブロックをデブロッキングするためのコンピュータ実施方法の一例のフローチャートである。
【図９】本発明の一実施形態によるデブロッキングに適したマクロブロックを識別するコンピュータ実施方法の一例のフローチャートである。
【図１０】本発明の実施形態によりデブロックできる順序ずれフレームの一例を示す。
【００１７】
【発明を実施するための形態】
【００１８】
[0026]添付図面に例が示された本発明による実施形態を以下に詳細に説明する。本発明は、これらの実施形態に関連して説明するが、本発明をこれらの実施形態に限定するものでないことを理解されたい。逆に、本発明は、特許請求の範囲に規定された本発明の精神及び範囲内に包含される代替、変更及び等効物を網羅するものとする。更に、本発明の実施形態の以下の詳細な説明において、本発明の完全な理解を与えるために多数の特定の細部が述べられる。しかしながら、当業者であれば、本発明は、これらの特定の細部を伴わずに実施できることが認識されよう。他の点では、本発明の実施形態の態様を不必要に不明瞭にしないために、良く知られた方法、手順、コンポーネント及び回路は、詳細に説明しない。
【００１９】
[0027]以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対するオペレーションの手順、ステップ、論理的ブロック、処理、及び他の記号的表示に関して表現される。これらの記述及び表示は、データ処理技術の当業者の仕事の実体を他の当業者へ最も効率的に伝達するために当業者により使用される手段である。手順、コンピュータ実行ステップ、論理的ブロック、プロセス、等は、ここでは、そして一般的には、希望の結果を導くステップ又はインストラクションの自己矛盾のないシーケンスであると考えられる。これらステップは、物理的量の物理的な操作を必要とする。通常、必ずしもそうでないが、これらの量は、コンピュータシステムにおいて記憶、転送、合成、比較、及びその他、操作することのできる電気的又は磁気的信号の形態をとる。主として普通に使用されるという理由で、これらの信号をビット、値、要素、記号、特性、語、数字、等として参照するのが時々は便利であると分かっている。
【００２０】
[0028]しかしながら、これら及び同様の語は、全て、適当な物理量に関連されるべきであり、且つそれらの量に適用される便利な表示に過ぎないことを心に留めておかれたい。特に指示のない限り、以下の説明から明らかなように、本発明全体にわたり、「エンコーディング」、「デコーディング」、「デブロッキング」、「受信」、「送信」、「転送」、「識別」、「決定」、「分類」、「比較」、「選択」、「記憶」、「処理」、「使用」、「初期化」、「設定」、「フラグ」、「アクセス」、「関連付け」、等の語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）量として表されたデータを、コンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内の物理的量として同様に表された他のデータへと操作及び変換するコンピュータシステム又は同様の電子的コンピューティング装置のアクション及びプロセスを指すことが明らかである。
【００２１】
[0029]図５、６、８及び９は、本発明の実施形態によりデータを処理するためのコンピュータ実施方法の一例のフローチャートである。それらフローチャートには特定のステップが開示されるが、それらステップは、例示に過ぎない。即ち、本発明の実施形態は、種々の他のステップ、又はフローチャートに取り上げられたステップの変更を遂行するのに良く適している。
【００２２】
[0030]図５、６、８及び９のフローチャートは、１つ以上のコンピュータ又は他の装置により実行されるプログラムモジュールのようなある形態のコンピュータ使用可能な媒体に存在するコンピュータ実行可能なインストラクションとして具現化することができる。一般に、プログラムモジュールは、特定のタスクを遂行するか又は特定のアブストラクトデータ形式を具現化するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。プログラムモジュールの機能は、種々の実施形態で望まれるように合成又は分布されてもよい。
【００２３】
[0031]例えば、これに限定されないが、コンピュータ使用可能な媒体は、コンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール又は他のデータのような情報を記憶するための方法又は技術で具現化される揮発性及び不揮発性の、除去可能及び除去不能な媒体を含む。コンピュータ記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ又は他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多様性ディスク（ＤＶＤ）、或いは他の光学的記憶装置、磁気化セット、磁気テープ、磁気ディスク記憶装置、又は他の磁気記憶装置、或いは希望の情報を記憶するのに使用できる他の媒体を含むが、これらに限定されない。
【００２４】
[0032]通信媒体は、コンピュータ読み取り可能なインストラクション、データ構造、プログラムモジュール又は他のデータを搬送波又は他のトランスポートメカニズムのような変調データ信号において実施することができ、任意の情報配信媒体を含む。「変調データ信号」という語は、信号に情報をエンコードするように１つ以上の特性がセット又は変化された信号を意味する。例えば、これに限定されないが、通信媒体は、ワイヤードネットワーク又は直接ワイヤード接続のようなワイヤード媒体と、音響、高周波（ＲＦ）、赤外線及び他のワイヤレス媒体のようなワイヤレス媒体とを含む。これらのいずれかを組み合わせることも、コンピュータ読み取り可能な媒体の範囲内に包含される。
【００２５】
[0033]図２は、本発明によるデコーダを具現化できるシステム２０の一例を示すブロック図である。図２の例において、このシステムは、バス２５を経てグラフィック処理ユニット（ＧＰＵ）２２に結合されたホスト中央処理ユニット（ＣＰＵ）２１を備えている。ＧＰＵは、媒体処理ユニット（ＭＰＵ）と称されてもよい。ＣＰＵ及びＧＰＵは、両方とも、メモリ２４に結合される。図２の例において、メモリは、共有メモリであり、従って、メモリは、ＣＰＵ及びＧＰＵの両方に対するインストラクション及びデータを記憶する。或いはまた、ＣＰＵ及びＧＰＵに専用の個別のメモリが各々あってもよい。また、メモリは、結合されたディスプレイ２３を駆動するピクセルデータを記憶するためのビデオフレームバッファを含むこともできる。
【００２６】
[0034]一般的に述べると、システム２０は、本発明の実施形態によるファンクションを具現化するコンピュータシステムプラットホームの基本的コンポーネントを備えている。システム２０は、例えば、多数の異なる形式のコンピュータシステム（例えば、ラップトップ、デスクトップ及びノートブック）として、並びにセットトップボックス又はデジタルテレビジョンのようなホームエンターテイメントシステム（例えば、ＤＶＤプレーヤ）、ポータブル又はハンドヘルド電子装置（例えば、ポータブル電話、パーソナルデジタルアシスタント又はハンドヘルドゲーム装置）、或いは表示能力をもつ実質上あらゆる他の形式の装置として、具現化することができる。
【００２７】
[0035]図３は、本発明の一実施形態によるデコーダ３０の要素を示すブロック図である。一般的に、このデコーダは、エンコードされたビットストリーム３１を受け取り、ビットストリーム内のデータをデコードし、そして表示可能な映像データ３４を発生する。
【００２８】
[0036]一実施形態において、生の映像データ（例えば、ビデオデータ）が、ある形式の圧縮スキームを使用して圧縮されて、エンコーディングパラメータのセット、例えば、これに限定されないが、フレーム形式（例えば、イントラコード化Ｉフレーム、予想Ｐフレーム又は２予想Ｂフレーム）、マクロブロック予想モード（例えば、インターブロック対イントラブロック）、変換（例えば、離散的コサイン変換）係数、テクスチャ係数、及び運動ベクトル情報を発生する。次いで、エンコーディングパラメータは、例えば、ハフマンコーディングを使用して可変長さコード（ＶＬＣ）へと変換される。エンコードされたビットストリームは、ＶＬＣを含む直列化ビットストリームである。
【００２９】
[0037]デコーダは、本質的に、エンコーディングプロセスを逆転して、映像データを再構成する。図３の例では、デコーダは、デコーディングステージ３２及びデブロッキングステージ３３を含むデコーディングパイプライン３６を備えている。
【００３０】
[0038]デコーディングステージは、可変長さデコーディング、逆量子化、逆変換、及び運動圧縮のような基本的デコーディングオペレーションを遂行する。一般的に、デコーディングステージは、エンコードされたビットストリームを構文解析してＶＬＣを抽出し、次いで、ＶＬＣを変換して、上述したエンコーディングパラメータを再生する。エンコーディングパラメータは、次いで、オリジナルビデオデータを再構成するのに使用される（より詳細には、オリジナルビデオデータのあるバージョンが構成される）。
【００３１】
[0039]デブロッキングステージは、デブロッキングフィルタを適用してマクロブロックをデコードし、再構成された映像がレンダリング（表示）されるとき隣接マクロブロック間の境界を平滑化する。例えば、デブロッキングフィルタは、隣接マクロブロックの境界又はその付近におけるピクセル値の重み付けされた平均を使用して、境界に沿ってマクロブロックを混合し、これにより、圧縮（エンコーディング）プロセスによって導入されることのある欠陥であって、除去しないと、再構成された映像が塊のように見えるようにさせる欠陥を除去することができる。一実施形態では、デブロッキングステージは、２つのデブロッカーを備え、これらは、図４を参照して以下に詳細に説明する。
【００３２】
[0040]以下の説明において、特に指示のない限り、「デコーダ」は、デコーディング及びデブロッキングの両方を遂行する要素（例えば、スタンドアローン又は周辺装置或いは一体化システム）を指す。「デコーディング」は、特に指示のない限り、上述した基本的なデコーディングオペレーション（例えば、可変長さデコーディング、逆量子化、逆変換及び運動補償）を指す。「充分にデコードされたデータ」及び「完全にデコードされたデータ」という語は、特に指示のない限り、デコード及びデブロックの両方がなされたデータを指す。
【００３３】
デコーディングパイプラインにおける第２デブロッカー
[0041]図４は、本発明の一実施形態によりフレームバッファ４５及びディスプレイ４６に結合されたデコーダの要素を示すブロック図である。図４の例において、デコーダは、デコーディングステージ３２及びデブロッキングステージ３３を備えている。デブロッキングステージは、第１デブロッカー４１及び第２デブロッカー４２を含む。デコーディングステージから第１デブロッカーを通る経路は、ここでは、デコーディングパイプラインを通る一次経路と称され、一方、デコーディングステージから第２デブロッカーを通る経路は、ここでは、デコーディングパイプラインを通る第２経路と称される。一実施形態では、記憶要素４３が、デコーディングステージの出力と第２デブロッカーの入力との間に結合されると共に、第１デブロッカーの入力にも結合される。
【００３４】
[0042]第１及び第２のデブロッカーの出力は、フレームバッファに記憶される。フレームバッファのコンテンツは、その後、ディスプレイ上でレンダリングすることもできるし及び／又は別のフレームをデコードするのに使用することもできる。後者のケースでは、あるフレーム（例えば、Ｉフレーム又はＰフレーム又はおそらくＢフレームのような参照フレーム；Ｈ．２６４によれば、Ｂフレームを参照フレームとして使用できる）がデコードされると、１つ以上の後続フレーム（例えば、別のＰフレーム又はＢフレーム）をデコードするのにそれに依存することができる。他のフレームがデコーディングのために依存する各フレームは、それら他のフレームがデコードされるときに使用できるようにフレームバッファに保持することができる。ある具現化においては、他のフレームをデコードするために依存するフレームを記憶するために、フレームバッファ以外のメモリを使用してもよい。
【００３５】
[0043]第１及び第２のデブロッカーは、互いに並列に且つデコーディングステージとも並列に動作することができる。例えば、第１デブロッカーは、１つのフレームをデブロッキングすることができ、一方、第２デブロッカーは、別のフレームをデブロッキングすると共に、デコーディングステージは、更に別のフレームに対して動作する。更に、ある例では、デブロッカーは、フレームのある部分に対して動作し、一方、デコーディングステージは、同じフレームの後続部分に対して動作する。換言すれば、ある環境のもとでは、あるフレームのマクロブロックがデコードされて、第１デブロッカーへ直接入力され、そしてそのフレームの他のマクロブロックのデコーディングと並列にオンザスポットでデブロックされる。オンザスポットデブロッキングに関する付加的な情報は、図６、８及び９に関連して与えられる。
【００３６】
[0044]第２のスタンドアローンデブロッカーの導入は、以下に詳しく述べる環境のもとで、幾つかのフレームのデブロッキングを、一次経路から、並列の二次経路へオフロード化できることを意味する。処理時間が短縮され、全体的な性能が改善される。
【００３７】
[0045]一般的に、図４のデコーダは、本発明の一実施形態に基づき第２デブロッカーを使用してデータを処理するコンピュータ実施方法を示す図５のフローチャートに概説されたように動作する。図５のブロック５１において、エンコードされたフレームが、デコーダの第１ステージ（基本的デコーディングステージ）への入力として受け取られる。ブロック５２において、エンコードされたフレームがデコードされて、デコードされたフレーム（デブロッキングの前にデコードされた）を発生する。
【００３８】
[0046]ブロック５３において、デコードされたフレームは、第１デブロッカー又は第２デブロッカーのいずれかへ転送されて、デブロックできるようにされる。一実施形態では、デコードされたフレームは、このデコードされたフレームがどのように分類されるかに基づいて第１デブロッカー又は第２デブロッカーのいずれかへ転送される。デコードされたフレームが第１形式のフレームとして分類された場合には、それが第１デブロッカーへ送信され、さもなければ、デコードされたフレームは、第２形式のフレームとして分類されて、第２デブロッカーへ送信される。フレームの分類に関する付加的な情報は、図６に関連して与えられる。
【００３９】
[0047]図５のブロック５４において、完全にデコードされた（デコード及びデブロックの両方がなされた）フレームがフレームバッファへ転送され、これを使用して、後続フレームを再構成し及び／又はレンダリングして目に見えるようにすることができる。
【００４０】
デコーディングパイプラインにおける適応デブロッキング
[0048]一実施形態において、図４のデコーダは、本発明の一実施形態により第２デブロッカーを使用してデータを処理するコンピュータ実施方法を示す図６のフローチャートに概説された適応式の仕方で動作する。ブロック６１において、デコーダは、エンコードされたフレームにアクセスする。
【００４１】
[0049]ブロック６２において、フレームが「順序正しいフレーム」であるか又は「順序ずれしたフレーム」であるかに関して判断がなされる。ここに使用する順序正しいフレームとは、既定の順序で配列されたマクロブロックを含むフレームであり、即ちフレームにおけるマクロブロックの配列が特定の規定の順序を満足する場合には、そのフレームが順序正しいフレームとして分類され、さもなければ、そのフレームが順序ずれしたフレームとして分類される。上述した融通性マクロブロック順序付け（ＦＭＯ）及び／又は任意のスライス順序付け（ＡＳＯ）を使用してエンコードされるフレームは、順序ずれしたフレームの一例である。
【００４２】
[0050]フレームヘッダは、フレームをＦＭＯ／ＡＳＯフレームとして、又は順序正しいフレーム対順序ずれしたフレームとして識別するのに使用できる情報を含まないことがある。しかしながら、一実施形態では、フレームの各マクロブロックに関連したマクロブロック番号を使用して、フレームが順序正しいフレームであるか順序ずれしたフレームであるかを、ここに述べる仕方で推測することができる。
【００４３】
[0051]一般的に述べると、マクロブロック番号は、マクロブロックがエンコードされる順序に一致する。例えば、マクロブロックは、フレームの左上のマクロブロックでスタートして左から右へ上から下へ単調に増加して連続的に番号付けされる。また、マクロブロックは、一般的に、フレームの左上のマクロブロックでスタートして左から右へ上から下へ進んでエンコードされる（時々「ラスタスキャン順序」と称される）。従って、エンコードされたフレームのマクロブロックが、それらがエンコードされた順序でデコーダに受け取られる場合には、フレームにおけるマクロブロック番号が正しい順序となる。
【００４４】
[0052]従って、一実施形態では、フレームのエンコードされたバージョン（ひいては、フレームのデコードされたバージョン）におけるマクロブロックの番号が数字の順序である場合には、そのフレームは、順序正しいフレームであり、さもなければ、そのフレームは、順序ずれしたフレームである。一実施形態では、デコーダがフレームにおけるマクロブロック（ここでは「現在マクロブロック」とも称される「当該マクロブロック」）を受け取るときに、デコーダは、当該マクロブロックのマクロブロック番号を、その当該マクロブロックの直前に受け取られたマクロブロックのマクロブロック番号と比較する。換言すれば、デコーダは、マクロブロックのマクロブロック番号を、マクロブロックがデコーダに受け取られる順序で次のように比較することができる。
全てのｉ＝０、１、・・・Ｎ−１に対して、ＭＢ＿ＩＤｉ＋１＝ＭＢ＿ＩＤｉ＋１である場合には、そのフレームが順序正しいものであり、
さもなければ、そのフレームが順序ずれしたものである。
但し、“ＭＢ＿ＩＤ”は、マクロブロック番号であり、“ｉ”は、マクロブロックが受け取られる順序に対応し、そして“Ｎ”は、フレームにおけるマクロブロックの数である。
【００４５】
[0053]図６を参照し続けると、フレームが順序ずれフレームと分類された場合には、フローチャートは、ブロック６３へ進み、さもなければ、フローチャートは、ブロック６４へ進む。
【００４６】
[0054]ブロック６３において、順序ずれしたフレームが「参照フレーム」であるか「非参照フレーム」であるかに関する決定がなされる。ここで使用される参照フレームとは、デコーディングのために別のフレームが依存するフレームである。参照フレームは、例えば、Ｉフレーム及びＰフレームである（時々Ｉ画像及びＰ画像と称される）。Ｈ．２６４によれば、Ｂフレームを参照フレームとして使用することができる。また、ここで使用される非参照フレームとは、参照フレームでないフレームである。Ｂフレーム（又はＢ画像）は、非参照フレームの一例である。各フレームに関連したフレームヘッダは、従来、フレームをＩフレーム、Ｐフレーム又はＢフレームとして識別する情報を含む。
【００４７】
[0055]フレームが参照フレームとして分類される場合には、フローチャートは、ブロック６４へ進み、さもなければ、フローチャートは、ブロック６５へ進む。
【００４８】
[0056]ブロック６４において、順序正しい参照フレーム又は順序正しい非参照フレームは、図４の第１デブロッカーを使用して完全にデコード（基本的デコーディング及びデブロッキング）される。即ち、フレームは、「オンザスポット」でデブロックされ、即ち、フレームは、必ずしも、デブロッキングの前にメモリに記憶されず、これは、順序ずれした非参照フレームが処理される仕方とは対照的である（図６のブロック６５、６６及び６７を参照）。
【００４９】
[0057]フレームが順序正しい参照フレーム又は順序正しい非参照フレームである場合には、フレームがデコードされるときにデブロッキングを行うことができる。一般的に述べると、順序正しいフレームとして分類されるためには、フレームにおける全てのマクロブロックが上述したように順序正しいものである。図１に戻ると、マクロブロックＭ１をデブロックするために、マクロブロックＭ２及びＭ３（例えば、マクロブロックの左の最も近い隣接部及び／又はマクロブロックの上の最も近い隣接部）からの情報が使用される。一般的なルールとして、順序正しいフレームでは、フレームにおけるマクロブロックＭ１の位置に関わりなく、マクロブロックＭ１がデブロッキングの準備ができる前に、マクロブロックＭ２及びマクロブロックＭ３の両方がデコードされデブロックされる。
【００５０】
[0058]一般的に述べると、順序正しいフレームでは、特定のマクロブロックをデブロックするために依存するマクロブロック（１つ又は複数）は、その特定のマクロブロックをデブロックするのに間に合うようにデコードされデブロックされる。従って、順序正しいフレームは、オンザスポットでデブロックすることができ、即ちフレームにおける各マクロブロックがデコードされるときに、そのデコードされるマクロブロックは、基本的なデコーディングの直後に第１デブロッカーへ直接転送してデブロックすることができる。
【００５１】
[0059]順序正しいフレームを処理する間には、あるマクロブロックをデブロックしながら、次のマクロブロックをデコードすることができる。同様に、１つのフレームの全てのマクロブロックがデコードされると、パイプラインのデコーディングステージは、次のフレームのマクロブロックのデコーディングを開始できる一方、手前のフレームのマクロブロックがデブロックされる。即ち、デブロッキングステージが、１つのフレームの後半のマクロブロックを処理する間に、デコーディングステージが、次のフレームの最初のマクロブロックを処理することができる。
【００５２】
[0060]図６のブロック６５において、順序ずれした非参照フレームがデコードされる（基本的デコーディングのみ）。この点において、図４のデコーディングステージは、次のフレームのデコーディングを開始するのに使用できるようになる。
【００５３】
[0061]図６のブロック６６において、デコードされた順序ずれした非参照フレームは、図４の記憶要素４３に任意に記憶される。フレームが順序ずれした非参照フレームであるときには、フレームにおけるデコードされたマクロブロックの幾つか又は全部を、それらマクロブロックをデブロックするのに必要な他のマクロブロックもデコードされるまで、記憶することが必要になる。更に、非参照フレームは、別のフレームをデコードするためにそれに依存するものではなく、従って、何らかの理由でデブロッキングを延期することが効果的である場合には、そのようにすることができる。ブロック６７において、順序ずれした非参照フレームは、図４の第２デブロッカーを使用してデブロックされる。
【００５４】
[0062]従って、順序ずれした非参照フレームの基本的なデコーディングが遂行された後に、デコードされたデータは、デブロッキングのために第２デブロッカーへ通される。それと同時に、次のフレームをデコードするために一次デコーディング経路が使用可能となる。即ち、順序ずれした非参照フレームがデブロックされる間に、次のフレームをデブロッキングと並列に（時間的に重畳して）デコードすることができる。このように、非参照フレームのデコーディングは、ＦＭＯ／ＡＳＯがイネーブルされても、順序正しいフレームのデコーディングと同程度に高速で遂行することができる。一般的に、ビデオシーケンスにおけるフレームの大半は、非参照フレームである。それ故、順序正しいデコーディングに匹敵するレートで非参照フレームを処理することにより、デコーディングパイプラインの全体的な性能を著しく改善することができる。
【００５５】
[0063]図６の実施形態を要約すれば、（フレーム内のマクロブロックが順序正しいか、順序ずれであるかに関わらず）デコードされたフレームが参照フレームとして分類された場合には、デコードされたフレームがオンザスポットデブロッキングのために第１デブロッカーへ直接送信される。デコードされたフレームが順序正しい非参照フレームとして分類された場合にも、デコードされたフレームは、オンザスポットデブロッキングのために第１デブロッカーへ直接送信される。また、デコードされたフレームが順序ずれした非参照フレームとして分類された場合には、それが第２デブロッカーへ送信される。換言すれば、上述した実施形態によれば、第１デブロッカーは、参照フレーム（順序正しい又は順序ずれした）及び順序正しい非参照フレームをデブロックし、一方、第２デブロッカーは、順序ずれした非参照フレームをデブロックする。
【００５６】
[0064]従って、本発明の一実施形態によれば、参照フレームと非参照フレームとの間を区別するのに加えて、順序正しいフレームと順序ずれしたフレームとの間も区別することができる。換言すれば、リアルタイム入力データに基づいて、ＡＳＯ／ＦＭＯエンコーディングをオンザフライで検出し（より詳細には、推測し）、次いで、それに応じて、デコーディング解決策（より詳細には、デブロッキング解決策）を適応させることができる。ＡＳＯ／ＦＭＯのリアルタイム検出は、フレーム内のスライスの到着順序が保証されない通信アプリケーションにおいて低遅延処理を達成する上で特に重要である。ここに述べる実施形態は、ＡＳＯ／ＦＭＯが使用されるかどうかを事前に知ることなく、ＡＳＯ／ＦＭＯが使用されないときには順序正しいデコーディングを遂行し、そしてＡＳＯ／ＦＭＯが使用されるときには処理遅延を短縮することができる。
【００５７】
[0065]本発明の一実施形態によれば、第２デブロッカーがデコーディングパイプラインに導入され、ある形式のフレームに対して、一次デコーディング経路（第１デブロッカーを含む経路）から、並列の第２経路（第２デブロッカーを含む経路）へとデブロッキングタスクをオフロード化できるようにしている。その結果、第１デブロッカーは、実際上、より本質的なフレーム（例えば、参照フレーム）をデブロッキングするように予約される。従って、より本質的なフレームのデブロッキングは、より迅速に遂行することができる。更に、第１デブロッカーは、実際上、オンザスポットでデブロックできるフレーム（例えば、順序正しいフレーム）をデブロッキングするように予約される。マクロブロックがデコードされるときにオンザスポットデブロッキングが遂行されるので、オンザスポットデブロッキングに第１デブロッカーを使用することでデコーディングパイプラインに遅延が導入されることはない。
【００５８】
[0066]２つのデブロッカーを使用して、異なる形式のフレームを取り扱うことにより、フレームのデコーディング及びデブロッキングを全体的により迅速に遂行することができる。というのは、デコーディング及びデブロッキングを、各特定のフレーム形式に対して最も高速であるパイプライン経路を使用して達成できるからである。更に、参照フレーム及び順序正しいフレームに対してオンザスポットデブロッキングを使用することで、データバスを通るトラフィックを減少すると共に、記憶されるデータの量も減少する。というのは、従来の２パス具現化の場合のように、デコードされたデータを記憶してフェッチする必要がないからである。一般的に述べると、第２デブロッカーの使用は、全体的なデコーダ性能を改善する。
【００５９】
[0067]第２デブロッカーは、必ずしも、専用のプロセッサ又は他の専用のハードウェアリソースを使用して具現化されなくてもよい。第２デブロッカーは、例えば、アイドリング状態でもよいＧＰＵ又はＣＰＵを使用して具現化することができる。換言すれば、ほとんどの場合でなくても幾つかの場合に、第２デブロッカーは、時間クリティカルフレームに対して動作しなくてもよく、従って、既存のハードウェアリソースが使用できるようになったときにそれらリソースを使用してその機能を与えることができる。
【００６０】
フレーム内のマクロブロックのオンザスポットデブロッキング
[0068]図６のついての以上の説明において、参照フレーム及び順序正しい非参照フレームは、オンザスポットで（デコーディングの直後に）デブロックできるが、順序ずれした非参照フレームは、デコードされ、記憶され、次いで、後でデブロックされる。しかしながら、順序ずれしたフレームとして分類されるフレーム内に、順序正しいマクロブロックのシーケンスが存在する。ある環境において、順序ずれしたフレームにおける順序正しいマクロブロックのシーケンスは、オンザスポットでデブロックすることができる。
【００６１】
[0069]より詳細には、フレーム内の特定のマクロブロックは、フレームにおいてそれに先行する全てのマクロブロックがデコードされデブロックされた（完全にデコードされた）ときにデブロックすることができる。一方、特定のマクロブロックに先行する全てのマクロブロックが完全にデコードされない場合には、その特定のマクロブロックが記憶され、そしてその後、フレームレベルにおいて上述したのと同様に、全ての先行するマクロブロックが完全にデコードされたときに、デブロッキングのためにそれが再ロードされる。マクロブロックがデブロックされた後に、それを使用して、デコードされたがデブロックされていない後続のマクロブロックをデブロックし、次いで、それを使用して、デコードされたがデブロックされていない別の後続のマクロブロックをデブロックし、等々を行って、デブロッキングに適した全てのマクロブロックがデブロックされるまでそれを繰り返すことができる。
【００６２】
[0070]図７Ａは、フレーム内のマクロブロックのデブロッキング状態を追跡するのに使用できるアレイ７０の一例を示す。このアレイは、フレーム内の各マクロブロックに対するビット値を含む。ビット値は、デコードされたがデブロックされていないマクロブロックはどれかを識別するようにセットされる。マクロブロックに対するビットがセットされない場合は、そのマクロブロックがまだデコードされていないか、又はデコード及びデブロックされたかのいずれかである。換言すれば、そのビットは、デブロッキングの候補であるマクロブロックを識別するようにセットされる。
【００６３】
[0071]図７Ａの例において、アレイは、ビット値の４ｘ３アレイを含む。図７Ａは、ビデオデータのフレームの一部分しか示さず、一般的に、フレームは、１２より多くのマクロブロックを含む。最初、全てのビット値が同じバイナリー値（例えば、０）にセットされる。フレームが完全にデコードされた後に、アレイが再初期化される。
【００６４】
[0072]図７Ｂは、マクロブロックＭ０、Ｍ１、Ｍ２及びＭ３がデコードされデブロックされたある時間後におけるアレイの一例を示す。図７Ｂの例において、マクロブロックＭ０、Ｍ１、Ｍ２及びＭ３は、同じスライス（スライスＳ１）にあり、そしてそれらがエンコードされた順序（例えば、次の順序Ｍ０、Ｍ１、Ｍ２及びＭ３）でデコーダに受け取られる。マクロブロックＭ０は、デブロッキングのために現在フレーム内の別のマクロブロックに依存しないので、オンザスポットでデコードされデブロックされる。オンザスポットデブロッキングは、デコーディングパイプラインを通る一次経路に沿って図４の第１デブロッカーを使用して遂行される。
【００６５】
[0073]次いで、マクロブロックＭ１は、現在フレームにおいて、デブロッキングのためにマクロブロックＭ０のみに依存するので、第１デブロッカーを使用してオンザスポットでデコードされデブロックされる。一般的に述べると、マクロブロックＭ１をデブロックするのに必要な全てのマクロブロックがデコードされデブロックされる。換言すれば、エンコーディング順序でマクロブロックＭ１に先行する全てのマクロブロックが受け取られてデブロックされる。次いで、同じ一般化をマクロブロックＭ２及びＭ３に適用することができ、それ故、これらマクロブロックも、第１デブロッカーを使用してオンザスポットでデコードされデブロックされる。図中、マクロブロックＭ０、Ｍ１、Ｍ２及びＭ３がデコードされデブロックされたことを指示するためにアスタリスクが使用される。実際上、このような区別を行う必要はない。
【００６６】
[0074]スライスＳ１に続いて、マクロブロックＭ６及びＭ７より成るスライスＳ２がデコーダに受け取られる。即ち、マクロブロックは、順序正しく受け取られない。マクロブロックＭ６及びＭ７は、エンコーディング順序でマクロブロックＭ６及びＭ７に先行する全てのマクロブロック（例えば、マクロブロックＭ４及びＭ５）がまだ受け取られてデブロックされていないので、デコードすることはできるがデブロックすることはできない。従って、マクロブロックＭ６及びＭ７に対応するビット値は、図７Ｃに示すように、アレイにおいて（例えば、１の値に）セットされる。また、デコードされたマクロブロックＭ６及びＭ７は、メモリ（例えば、図４の記憶要素４３）に記憶される。
【００６７】
[0075]スライスＳ２に続いて、マクロブロックＭ８及びＭ９より成るスライスＳ３がデコーダに受け取られる。マクロブロックＭ８及びＭ９は、これらマクロブロックＭ８及びＭ９に先行する全てのマクロブロックがまだ受け取られてデブロックされていない（この時点では、マクロブロックＭ４及びＭ５がまだデブロックされていない）ので、デコードすることはできるがデブロックすることはできない。従って、マクロブロックＭ８及びＭ９に対応するビット値は、図７Ｄに示すように、アレイにおいて（例えば、１の値に）セットされる。
【００６８】
[0076]スライスＳ３に続いて、マクロブロックＭ４及びＭ５より成るスライスＳ４がデコーダに受け取られる。マクロブロックＭ４は、エンコーディング順序でそれに先行する全てのマクロブロック（即ち、マクロブロックＭ０、Ｍ１、Ｍ２及びＭ３）がデコードされデブロックされているので、第１デブロッカーにおいてオンザスポットでデコード及びデブロックすることができる。マクロブロックＭ４がデブロックされた後に、マクロブロックＭ５を第１デブロッカーにおいてオンザスポットでデコード及びデブロックすることができる。
【００６９】
[0077]更に、マクロブロックＭ５がデブロックされると、マクロブロックＭ６に先行する全てのマクロブロックが今やデブロックされ、従って、マクロブロックＭ６を記憶装置から検索してデブロックすることができる。この場合に、マクロブロックＭ６は、デコーディングパイプラインを通る一次経路に沿って、図４の第１デブロッカーを使用してデブロックされる。マクロブロックＭ６がデブロックされると、マクロブロックＭ７を記憶装置から検索して、第２デブロッカーを使用してデブロックし、等々、マクロブロックＭ９まで行われる。この例では、マクロブロックＭ１０及びＭ１１は、それに先行する全てのマクロブロックがデコードされデブロックされても、この時点ではデブロックされない。というのは、マクロブロックＭ１０及びＭ１１それ自体がまだ受け取られてデコードされていないからである。マクロブロックＭ１０及びＭ１１は、それが受け取られると、図４の第１デブロッカーを使用してオンザスポットでデコードしデブロックすることができる。
【００７０】
[0078]上述した実施形態によれば、マクロブロックは、３つの状態、即ちまだデコードされていない（不完全な基本的デコーディング）、デコードされたがデブロックされていない、及びデコードされデブロックされた、のうちの１つをとることができる。しかしながら、各マクロブロックの状態を指示するのに、２つの状態を有する１つのバイナリービットしか必要とされない。というのは、アレイを使用して、デブロッキングの候補であるマクロブロック（デコードされたがデブロックされていないマクロブロック）を識別するからである。デブロッキングに対するマクロブロックを識別するために、まだデコードされていないマクロブロックを、デコードされデブロックされたマクロブロックから区別する必要はない。
【００７１】
[0079]図８は、本発明の一実施形態によりオンザスポットでマクロブロックをデブロッキングするためのコンピュータ実施方法のフローチャートである。ブロック８１において、（最後にデブロックされたマクロブロックに対する）変数“Ｌａｓｔ＿Ｄｂ＿ＭＢ”が−１（負の１）の値に初期化される。また、図７Ａのアレイも、上述したように初期化される。
【００７２】
[0080]ブロック８２では、現在マクロブロックＭに対するマクロブロック番号（“ＭＢ＿ＩＤ”）がアクセスされる。ブロック８３では、ＭＢ＿ＩＤの値が、１の値だけ増加されたＬａｓｔ＿Ｄｂ＿ＭＢの値（Ｌａｓｔ＿Ｄｂ＿ＭＢ＋１）と比較される。実際上、ブロック８３を使用して、マクロブロックが順序正しく受け取られたか順序ずれして受け取られたか決定し、順序正しい場合には、その直前のマクロブロックＭ−１が完全にデコードされた（デコードされデブロックされた）かどうか決定する。ＭＢ＿ＩＤがＬａｓｔ＿Ｄｂ＿ＭＢ＋１に等しい場合には、現在マクロブロックＭは、デブロックされた最後のマクロブロックＬａｓｔ＿Ｄｂ＿ＭＢに続く次のマクロブロックであり、即ち現在マクロブロックＭのマクロブロック番号と、最後にデブロックされたマクロブロックＬａｓｔ＿Ｄｂ＿ＭＢのマクロブロック番号は、連続番号となり、フローチャートは、ブロック８７へ進む。さもなければ、マクロブロックが順序ずれして受け取られたか、又は現在マクロブロックＭが、最後にデブロックされたマクロブロックＬａｓｔ＿Ｄｂ＿ＭＢに続く次のマクロブロックではなく、即ち現在マクロブロックＭは、最後にデブロックされたマクロブロックＬａｓｔ＿Ｄｂ＿ＭＢから、デブロックされていない１つ以上のマクロブロックだけ分離されたものであり、フローチャートは、ブロック８４へ進む。
【００７３】
[0081]ブロック８４において、現在マクロブロックＭがデコードされ（デブロックはされず）、そしてデコードされたデータが（例えば、図４の記憶要素４３に）セーブされる。ブロック８５において、現在マクロブロックＭは、デコードされたがデブロックはされないとしてフラグが立てられる。一実施形態では、現在マクロブロックＭに対応するビット値が、図７Ａ〜図７Ｄに関連して上述したように、アレイにおいてセットされる。
【００７４】
[0082]図８のブロック８６において、現在マクロブロックＭがフレームにおける最後のマクロブロックでない場合には、フローチャートは、ブロック８２へ戻る（ある種のエラーがない限り、図８のフローチャートは、この時点で、常にブロック８２へ戻る）。
【００７５】
[0083]ブロック８７において、現在マクロブロックＭは、図４の第１デブロッカーを使用して、オンザフライでデコードされデブロックされる。また、上述したように、あるマクロブロックは、エンコーディング順序でそれに先行する全てのマクロブロックがデブロックされた場合に、デブロックすることができる。現在マクロブロックＭの直前のマクロブロックＭ−１が（フローチャートのブロック８３で決定されたように）デブロックされた場合に、現在マクロブロックＭをデブロックすることができる。換言すれば、デブロックされるために、マクロブロックＭ−１は、全ての先行するマクロブロックがデブロックされるという条件を満足する。即ち、現在マクロブロックＭがマクロブロックＭ−１の直後にあるために、これもその条件を満足する。
【００７６】
[0084]図８のブロック８８において、他の適格なマクロブロックが記憶装置から検索され、そして図４の第２デブロッカーを使用してデブロックされる。即ち、エンコーディング順序で現在マクロブロックＭの直後に続くマクロブロックＭ＋１も、そのマクロブロックＭ＋１が以前にデコードされて記憶された場合にデブロックすることができる。マクロブロックＭ＋１がデブロックされると、エンコーディング順序でマクロブロックＭ＋１の直後に続くマクロブロックＭ＋２は、それが以前にデコードされて記憶された場合にデブロックすることができ、等々となる。一実施形態では、デブロッキングに適した各マクロブロックは、図７Ａ〜図７Ｄのアレイのようなアレイにおいてフラグが立てられる。また、図９に関連して以下に述べるように、付加的な情報も与えられる。
【００７７】
[0085]図８のブロック８９において、（今や、最後にデブロックされたマクロブロックＬａｓｔ＿Ｄｂ＿ＭＢに等しい）現在マクロブロックＭがフレームにおいて最後のマクロブロックでない場合には、フローチャートがブロック８２へ戻る。さもなければ、フレームが完全にデコードされる。
【００７８】
[0086]図９は、本発明の一実施形態により適格なマクロブロックをデブロックするためのコンピュータ実施方法のフローチャートである。ブロック９１において、フレーム内のＮ番目のマクロブロックがデブロックされ、そしてデブロッキングに対して適格な他のマクロブロックが識別される。一実施形態では、適格なマクロブロックを識別するために、図７Ａ〜図７Ｄのアレイのようなアレイがアクセスされる。
【００７９】
[0087]図９のブロック９２では、最後に（最も最近）デブロックされたマクロブロック（ブロック９１においてデブロックされたマクロブロック）のマクロブロック番号が１だけ増加される（Ｎ＝Ｎ＋１）。ブロック９３において、Ｎの現在値がフレーム内の最後のマクロブロックのマクロブロック番号より大きい場合には、フローチャートは、ブロック９５へ進み、さもなければ、フローチャートは、ブロック９４へ進む。
【００８０】
[0088]ブロック９４において、現在マクロブロックに対応するアレイのビット値が読み取られる。ビット値が（例えば、１に等しく）セットされた場合には、現在マクロブロックをデブロックすることができ、フローチャートは、ブロック９１へ戻り、そして現在マクロブロックがデブロックされる。さもなければ、フローチャートは、ブロック９５へ進む。
【００８１】
[0089]ブロック９５において、Ｌａｓｔ＿Ｄｂ＿ＭＢの値（前記のように定義された）は、Ｎの現在値を１だけ減少した値（Ｎ−１）にセットされ、このＬａｓｔ＿Ｄｂ＿ＭＢの値は、図８に関連して説明したように、返送され使用される。
【００８２】
[0090]従って、本発明の一実施形態によれば、マクロブロックは、デブロックするのに適したものとなるや否や、デブロックすることができる。順序ずれした（例えば、ＡＳＯ／ＦＭＯ）フレーム内にある幾つかのマクロブロックに対してオンザスポットデブロッキングを行うことができる。従って、このようなフレームにおける全てのマクロブロックをメモリへ及びメモリから転送する必要がないので、バストラフィックの量を減少することができ、また、消費されるメモリの量も減少される。更に、デコーディング及びデブロッキングを並列に遂行でき、即ち１つのマクロブロックがデコードされる間に、別のマクロブロックをデブロックできるので、コンピューティング時間を短縮することができる。
【００８３】
[0091]例えば、図１０は、(陰影付けされたブロックを使用して表された)第１スライスのマクロブロックが、(陰影付けされないブロックを使用して表された)第２スライスのマクロブロックとチェッカーボードパターンで散在しているフレームの一部分を示す。第１スライスが最初にデコーダへ送られ、その後、第２スライスが送られ、それ故、フレームは、ＡＳＯ／ＦＭＯフレームである。デコーディング中に、第１（左上）のマクロブロックＭａは、オンザスポットでデブロックできるが、陰影付けされた他のブロックは、デブロッキングまで記憶される。第２（陰影付けされない）スライスのマクロブロックがデコードされるときには、第２スライスの各マクロブロックを、それがデコードされた直後にデブロックすることができると共に、第１スライスの各マクロブロックをメモリから順序正しくフェッチしてデブロックすることができる。より詳細には、マクロブロックＭｂは、デブロックされているマクロブロックＭａにしか依存しないので、オンザスポットでデブロックすることができ、次いで、マクロブロックＭｃをメモリから検索してデブロックすることができ、マクロブロックＭｄをオンザスポットでデブロックすることができ、等々となる。それ故、第２スライスのマクロブロックをデブロッキングまで記憶する必要はなく、(マクロブロックＭａを除く)第１スライスのマクロブロックのみがデブロッキングまで記憶される。従って、この例では、デブロッキングまで記憶されるのは、フレーム内のマクロブロックの半分未満であり、バスを経てメモリへ行き来するトラフィックも約半分に減少される。
【００８４】
[0092]動きの補償は、デブロッキングよりも、完了までにより長い時間を要するので、デコーディングパイプラインのデブロッキングステージが時々アイドル状態になることがある（例えば、データが欠乏することがある）。しかしながら、オンザスポットデブロッキングでは、デブロッキングステージは、アイドル時間を利用して、記憶されたマクロブロックを処理し、合計デコーディング時間を従来の２パス具現化に比して短縮することができる。
【００８５】
[0093]更に、ＡＳＯ／ＦＭＯフレームは、オンザフライで検出することができる。順序正しいフレームのデコーディングについては従来の具現化と少なくとも同じ性能を達成するが、順序ずれしたフレームのデコーディングは、著しく改善される。更に、単一デコーダアーキテクチャーを使用して、順序正しい／順序ずれした参照／非参照フレームを処理することができ、即ちデコーダを通る経路は、処理されているフレームの形式に基づいて適応式に選択される。
【００８６】
[0094]本発明の特定の実施形態の以上の説明は、本発明を例示するためのものである。それらは、本発明を余すところなく述べたものでも、ここに開示した正確な形態に限定するものでもなく、以上の教示に鑑み、多数の変更や修正が考えられる。それらの実施形態は、本発明の原理及びその実際上の応用を最良に説明して、当業者が、本発明、及び意図された適当な用途に適するように変更された種々の実施形態を最良に利用できるようにするために、選択され記述された。本発明の範囲は、特許請求の範囲及びその等効物により規定されることが意図される。
【符号の説明】
【００８７】
２０・・・システム、２１・・・ホスト中央処理ユニット（ＣＰＵ）、２２・・・グラフィック処理ユニット（ＧＰＵ）、２３・・・ディスプレイ、２４・・・メモリ、２５・・・バス、３０・・・デコーダ、３１・・・エンコードされたビットストリーム、３２・・・デコーディングステージ、３３・・・デブロッキングステージ、３４・・・映像データ、３６・・・デコーディングパイプライン、４１・・・第１デブロッカー、４２・・・第２デブロッカー、４３・・・記憶要素、４５・・・フレームバッファ、４６・・・ディスプレイ
【図１】
2010098725.tif 000003
【図２】
2010098725.tif 000004
【図３】
2010098725.tif 000005
【図４】
2010098725.tif 000006
【図５】
2010098725.tif 000007
【図６】
2010098725.tif 000008
【図７Ａ】
2010098725.tif 000009
【図７Ｂ】
2010098725.tif 000010
【図７Ｃ】
2010098725.tif 000011
【図７Ｄ】
2010098725.tif 000012
【図８】
2010098725.tif 000013
【図９】
2010098725.tif 000014
【図１０】
2010098725.tif 000015
【外国語明細書】
2010098725000001.pdf