(57)【特許請求の範囲】
【請求項１】
ＤＣ及びＡＣ係数を有する変換係数データセットに対してＤＣ及びＡＣ予測を実行するステップと、
現在処理中のデータパケットとして定義される現在データパケット、にオーバーフロー状態が発生するかどうか決定するステップと、
オーバーフロー状態が発生しない場合に、ＡＣ予測係数及びＤＣ予測係数を有するデータセットを前記現在データパケットに供給するステップと、
オーバーフロー状態が発生する場合に、前記ＡＣ予測を停止すると共に、前記ＡＣ係数及び前記ＤＣ予測係数を有するデータセットを、次に処理されるデータパケットとして定義される新たなデータパケットに供給するステップと、
を備える動的なＡＣ予測方法。
【請求項２】
オーバーフロー状態が発生するかどうか決定する前に、前記変換係数データセットがイントラブロックに関連され、且つＡＣ予測を動的に実行するＡＣ予測動的モードが選択されたかどうか決定するステップ、を更に備える、請求項１に記載の動的なＡＣ予測方法。
【請求項３】
前記変換係数データセットがインターブロックに関連されるかイントラブロックに関連されるか決定するステップと、
前記変換係数データセットがインターブロックに関連される場合には、前記ＡＣ係数及び前記ＤＣ係数を有するデータセットを前記現在データパケットに供給するステップと、
前記変換係数データセットがイントラブロックに関連される場合には、ＡＣ予測をデアサートするＡＣ予測オフモードが選択されるかどうか決定するステップと、
前記ＡＣ予測オフモードが選択された場合には、前記ＡＣ係数及び前記ＤＣ予測係数を有するデータセットを前記現在データパケットに供給するステップと、
ＡＣ予測をアサートするＡＣ予測オンモードが選択された場合には、前記ＡＣ予測係数及び前記ＤＣ予測係数を有するデータセットを前記現在データパケットに供給するステップと、を更に備える請求項２に記載の動的なＡＣ予測方法。
【請求項４】
前記ＤＣ予測は、
水平予測を実行すべきか垂直予測を実行すべきか決定するステップと、
水平予測を実行すべき場合には、現在ブロックＸに関連した前記変換係数データセットから前記ＤＣ予測係数ＱＦＸを次の式に基づいて決定するステップと、
ＱＦＸ＝ＰＱＦＸ＋ＦＡ／／ＤＣ＿ｓｃａｌｅｒ
垂直予測を実行すべき場合には、前記現在ブロックＸから前記ＤＣ予測係数ＱＦＸを次の式に基づいて決定するステップと、
ＱＦＸ＝ＰＱＦＸ＋ＦＣ／／ＤＣ＿ｓｃａｌｅｒを備え、但し、ＰＱＦＸは、現在ブロックＸのＤＣ係数であり、ＦＣ及びＦＡは、現在ブロックＸに対する上部隣接ブロックＣ及び左側隣接ブロックＡのＤＣ係数であり、更に、ＤＣ＿ｓｃａｌｅｒは、当該ブロックの量子化ステップサイズＱＰである、請求項１に記載の動的なＡＣ予測方法。
【請求項５】
前記ＡＣ予測は、
水平予測を実行すべき場合には、前記現在ブロックＸからＡＣ予測係数ＱＦＸ[ｉ][０]を次の式に基づいて決定するステップと、
ＱＦＸ[０][ｉ]＝ＰＱＦＸ[０][ｉ]＋(ＱＦＡ[０][ｉ]＊ＱＰＡ)／／ＱＰＸ
垂直予測を実行すべき場合には、前記現在ブロックＸからＡＣ予測係数ＱＦＸ[０][ｊ]を次の式に基づいて決定するステップと、
ＱＦＸ[ｊ][０]＝ＰＱＦＸ[ｊ][０]＋(ＱＦＣ[ｊ][０]＊ＱＰＣ)／／ＱＰＸ
を備え、但し、ｉ＝１から７、ｊ＝１から７、ＱＦＡ[ｉ][ｊ]は、左側隣接ブロックＡからのＡＣ係数であり、ＱＦＣ[ｉ][ｊ]は、上部隣接ブロックＣからのＡＣ係数であり、ＰＱＦＸは、現在ブロックＸのＡＣ係数であり、更に、ＱＰＡ、ＱＰＣ、及びＱＰＸは、各々、ブロックＡ、Ｃ及びＸに関連した量子化ステップサイズである、請求項４に記載の動的なＡＣ予測方法。
【請求項６】
バッファ、可変長さコード回路及び中央処理ユニット（ＣＰＵ）に結合されたＡＣ／ＤＣ予測装置において、
前記バッファから変換係数データセットの少なくとも１つのＤＣ係数を受け取るＤＣ予測回路であって、前記ＤＣ係数に対する予測を実行するＤＣ予測回路と、
前記ＤＣ回路に結合されたＡＣ予測回路であって、前記バッファから変換係数データセットのＡＣ係数を受け取り、前記ＡＣ係数に対する予測を実行するＡＣ予測回路と、
前記ＡＣ予測回路及び前記ＤＣ予測回路に結合された判断ロジックであって、該判断ロジックは、現在処理中のデータパケットとして定義される現在データパケットにオーバーフロー状態が発生するかどうか決定し、オーバーフロー状態が発生しない場合には、ＡＣ予測係数及びＤＣ予測係数を有するデータセットを前記現在データパケットに供給するように働き、オーバーフロー状態が発生する場合には、前記ＡＣ予測回路をディスエイブルすると共に、ＡＣ係数及びＤＣ予測係数を有するデータセットを、次に処理されるデータパケットとして定義される新たなデータパケットに供給するように働く判断ロジックと、
を備えたＡＣ／ＤＣ予測装置。
【請求項７】
オーバーフロー状態が発生するかどうか決定する前に、前記判断ロジックは、前記変換係数データセットがイントラブロックに関連され、且つＡＣ予測を動的に実行するＡＣ予測動的モードが選択されたかどうか決定する、請求項６に記載のＡＣ／ＤＣ予測装置。
【請求項８】
前記判断ロジックは、更に、前記変換係数データセットがインターブロックに関連されるかイントラブロックに関連されるか決定し、前記変換係数データセットがインターブロックに関連される場合には、前記判断ロジックは、前記ＡＣ係数及び前記ＤＣ係数を有するデータセットを前記現在データパケットに供給するように働き、前記変換係数データセットがイントラブロックに関連される場合には、前記判断ロジックは、ＡＣ予測をデアサートするＡＣ予測オフモードが選択されるかどうか決定し、前記ＡＣ予測オフモードが選択された場合には、前記判断ロジックは、前記ＡＣ係数及び前記ＤＣ予測係数を有するデータセットを前記現在データパケットに供給するように働き、更に、ＡＣ予測をアサートするＡＣ予測オンモードが選択された場合には、前記判断ロジックは、前記ＡＣ予測係数及び前記ＤＣ予測係数を有するデータセットを前記現在データパケットに供給するように働く、請求項６に記載のＡＣ／ＤＣ予測装置。
【請求項９】
前記ＤＣ予測回路は、水平予測を実行すべきか垂直予測を実行すべきか決定し、水平予測を実行すべき場合には、現在ブロックＸに関連した前記変換係数データセットから前記ＤＣ予測係数ＱＦＸを次の式に基づいて決定し、
ＱＦＸ＝ＰＱＦＸ＋ＦＡ／／ＤＣ＿ｓｃａｌｅｒ
垂直予測を実行すべき場合には、前記現在ブロックＸから前記ＤＣ予測係数ＱＦＸを次の式に基づいて決定し、
ＱＦＸ＝ＰＱＦＸ＋ＦＣ／／ＤＣ＿ｓｃａｌｅｒ
但し、ＰＱＦＸは、現在ブロックＸのＤＣ係数であり、ＦＣ及びＦＡは、現在ブロックＸに対する上部隣接ブロックＣ及び左側隣接ブロックＡのＤＣ係数であり、更に、ＤＣ＿ｓｃａｌｅｒは、当該ブロックの量子化ステップサイズＱＰである、請求項６に記載のＡＣ／ＤＣ予測装置。
【請求項１０】
水平予測を実行すべき場合には、前記現在ブロックＸからＡＣ予測係数ＱＦＸ[ｉ][０]を次の式に基づいて決定し、
ＱＦＸ[０][ｉ]＝ＰＱＦＸ[０][ｉ]＋(ＱＦＡ[０][ｉ]＊ＱＰＡ)／／ＱＰＸ
垂直予測を実行すべき場合には、前記現在ブロックＸからＡＣ予測係数ＱＦＸ[０][ｊ]を次の式に基づいて決定し、
ＱＦＸ[ｊ][０]＝ＰＱＦＸ[ｊ][０]＋(ＱＦＣ[ｊ][０]＊ＱＰＣ)／／ＱＰＸ
但し、ｉ＝１から７、ｊ＝１から７、ＱＦＡ[ｉ][ｊ]は、左側隣接ブロックＡからのＡＣ係数であり、ＱＦＣ[ｉ][ｊ]は、上部隣接ブロックＣからのＡＣ係数であり、ＰＱＦＸは、現在ブロックＸのＡＣ係数であり、更に、ＱＰＡ、ＱＰＣ、及びＱＰＸは、各々、ブロックＡ、Ｃ及びＸに関連した量子化ステップサイズである、請求項９に記載のＡＣ／ＤＣ予測装置。
【発明の詳細な説明】
【発明の分野】
【０００１】
本発明は、一般に、コンピュータシステムに係り、より詳細には、ＭＰＥＧ−４データパーティションモードにおける動的パケットサイズ制御に係る。
【発明の背景】
【０００２】
ムービング・ピクチャー・エクスパーツ・グループ（ＭＰＥＧ）は、ビデオデータを圧縮するための国際標準化機構（ＩＳＯ）規格である。ビデオの圧縮は、省略のない映画のようなビデオデータファイルを、記憶（例えば光学記憶媒体に）、処理及び送信のために管理し易くする上で重要である。一般に、ＭＰＥＧ圧縮は、冗長及び非当該データを排除することで達成される。ビデオ映像は、通常、スクリーンを横切る滑らかなカラー領域で構成されるので、ビデオ情報は、一般に、空間及び時間的にほとんど変化しない。従って、映像におけるビデオ情報の大部分が予測可能であり、それ故、冗長である。そこで、ＭＰＥＧ圧縮の第１の目的は、冗長な情報を除去して、真の即ち予測できない情報だけを残すことである。一方、非当該ビデオ映像情報とは、ある合理的な視聴条件のもとで人間の目に見えない情報である。例えば、人間の目は、高い空間周波数のノイズの方が、低い空間周波数のノイズより気付かず、且つシーンが変化する直前及び直後では細部の損失にあまり気付かない。従って、ＭＰＥＧ圧縮の第２の目的は、非当該情報を除去することである。冗長情報の除去と、非当該情報の除去とを結合することで、ビデオデータファイルの高度な圧縮が許される。
【０００３】
ＭＰＥＧ圧縮は、良く知られた種々の技術を合体して前記目的を達成するもので、動き補償予測、離散コサイン変換（ＤＣＴ）、量子化、及び可変長さコード化（ＶＬＣ）を含む。ＤＣＴは、ピクセルデータを、関連係数をもつ空間周波数のセットへと変換するアルゴリズムである。ＤＣＴ係数は非均一に分布し、映像の非ゼロＤＣＴ係数のほとんどが一般的なエリアに配置される傾向があるために、ＶＬＣを使用し、この分布特性を利用して非ゼロのＤＣＴ係数をゼロのＤＣＴ係数から識別する。このようにする間に、冗長／予測可能情報を除去することができる。更に、ビデオ映像をＤＣＴのもとで空間周波数へと分解することは、関連ＤＣＴ係数を経ての高い周波数を、関連ＤＣＴ係数を経ての低い周波数よりも低い精度でコード化することができ、これにより、非当該情報を除去することが許される。従って、各空間周波数において人間の目で許容し得るノイズの量に基づいてＤＣＴ係数を重み付けして、係数の縮小セットを発生できるようにするステップとして、量子化を一般化することができる。
【０００４】
更に、ＭＰＥＧ圧縮は、代替係数／離散係数(Alternative Coefficient/Discrete Coefficient)（ＡＣ／ＤＣ）予測のような付加的な圧縮段階も含む。ＡＣとは、通常、一方又は両方の次元において周波数が非ゼロ（高い周波数）であるようなＤＣＴ係数として定義される。ＤＣとは、通常、周波数が両次元においてゼロ（低い周波数）であるようなＤＣＴ係数として定義される。ＡＣ／ＤＣ予測モジュールは、現在ブロックに対するＡＣ及びＤＣを、隣接する左上ブロック、上部ブロック及び隣接する左ブロックのような隣接ブロックのＡＣ及びＤＣ値に基づいて予測する。例えば、予測は、次のように行うことができる。
（｜Ｂ−Ａ｜≧｜Ｂ−Ｃ｜）の場合には、Ｘ＝Ａ
その他の場合には、Ｘ＝Ｃ
但し、Ｂは、現在ブロックに対する左上ブロックのＡＣ又はＤＣ値であり、Ｃは、現在ブロックに対する上部ブロックのＡＣ又はＤＣ値であり、Ａは、現在ブロックに対する左ブロックのＡＣ又はＤＣ値であり、そしてＸは、現在ブロックのＡＣ又はＤＣ値である。
【０００５】
このような予測及びその他の特徴が、参考としてその全体をここに援用する「MPEG-4 Information Technology-Coding of Audio-Visual Objects-Part 2: Visual」ＩＳＯ／ＩＥＣ／１４４９６−２：１９９９に説明されている。更に、米国特許第６，３４１，１４４号、及びその継続米国特許第６，５５６，６２５号は、ＡＣ／ＤＣ予測を詳細に説明しており、これらもその全体を参考としてここに援用する。
【０００６】
圧縮されたビデオデータは、送信エラーを受け易い。ＭＰＥＧ−４は、エラーの影響を局所化し、同期を再確立し、更に、誤ったデータを回復するためのエラー反発性ツールを提供する。その最終結果として、より信頼性の高いデータ送信が得られる。これらのツールは、データパーティション、パケット化、及び可逆ＶＬＣを含む。データパーティションは、ビデオパケット内のテクスチャデータから動き及び形状データを分離及び区分化することによりエラーの影響を局所化し及び隔離するように設計される。ビデオパケットは、１つ又は多数のマクロブロックで作られる。フレーム（ＭＰＥＧ−４の用語ではビデオオブジェクト平面としても知られている）は、多数のパケットより成る。各パケットは、マーカー及びパケットヘッダでスタートする。各パケットのデータは、他のパケットに対して独立してエンコードされる。ＭＰＥＧ−４のデータパーティションモードでは、パケット内のデータを３つの部分に分割することが必要である。各部分は、パケット内の全てのマクロブロックからのビットストリーム成分より成る。データパーティションモードの間に、パケットサイズ（即ちパケット内のデータビットの数）は、簡単なプロフィールレベル１のビデオビットストリームでは２０４８ビットに、簡単なプロフィールレベル２のビデオビットストリームでは４０９６ビットに、更に、簡単なプロフィールレベル３のビデオビットストリームでは８１９２ビットに制限される。
【０００７】
データパーティションモードにおける厳密なパケットサイズの結果として、マクロブロックのエンコード中にパケットデータのオーバーフローに関して固有の問題が発生する。パケットオーバーフローに関連したデータロスを防止するために、オーバーフローを生じるマクロブロックを新たなパケットにおいて再エンコードする必要がある。しかしながら、データパーティションモードの間にＡＣ予測が常にオンにされる場合には、このような再エンコードで、ＡＣ予測方向及び予測差に変化が生じ、ひいては、ビットストリームのジグザグのラン長さに影響を及ぼすことがある。逆に、データパーティションモードの間にＡＣ予測が完全にオフにされた場合には、圧縮効率が否定的に影響を受ける。
【０００８】
従って、ＭＰＥＧデータパーティションモードにおいてビデオパケットのオーバーフローを防止する一方、圧縮効率の影響を最小とし且つビデオの画質を維持するための方法及び装置が要望される。
【発明の概要】
【０００９】
従って、本発明は、ＭＰＥＧデータパーティションモードにおいてビデオパケットのオーバーフローを防止する一方、圧縮効率の影響を最小とし且つビデオの画質を維持するための方法及び装置を提供する。
【００１０】
本発明は、データパーティションモードのための動的なＡＣ予測技術で前記要望を満足させる。本発明によれば、動的なＡＣ予測技術は、先ず、マクロブロックが現在パケットにおいてエンコードされた場合にそれがパケットオーバーフローを生じるかどうか決定する。もしそうであれば、新たなパケットが開始され、それに対してマクロブロックが第１のマクロブロックとしてＡＣ予測を伴わずにエンコードされる。さもなければ、ＡＣ予測を伴うマクロブロックが現在パケットに保持され、新たなマクロブロックがエンコードされる。
【００１１】
本発明の全ての特徴及び効果は、添付図面を参照した好ましい実施形態の以下の詳細な説明から明らかとなろう。
【本発明の詳細な説明】
【００１２】
本発明の以下の詳細な説明では、本発明の完全な理解を与えるために多数の特定の細部について述べる。しかしながら、当業者であれば、本発明は、これら特定の細部を伴わずに実施されてもよいことが明らかであろう。他の例では、本発明の態様を不必要に不明瞭にしないために、良く知られた方法、手順、要素及び回路は、詳細に説明しない。本発明の以下の詳細な説明は、ＭＰＥＧ圧縮ビデオ像データに関連したものであるが、本発明は、ビデオ、オーディオ、テキスト、ソフトウェア及び他の形式のデータを伴う他のデータ圧縮機構にも適用できることを理解されたい。
【００１３】
本発明によれば、動的なＡＣ予測技術は、パケットのオーバーフローが生じたときに次のパケットにおいて現在マクロブロックをエンコードするためにＡＣ予測を自動的にディスエイブルするデータパーティションモードに対して実施される。さもなければ、オーバーフローが生じないときには、圧縮効率を維持するためにＡＣ予測がイネーブルされた状態に保たれる。より詳細には、好ましい実施形態では、マクロブロックが現在パケットにおいてエンコードされる場合にそれがパケットオーバーフローを引き起こすかどうかの決定が最初になされる。もしそうであれば、新たなパケットが開始され、それに対してマクロブロックが第１マクロブロックとしてＡＣ予測を伴わずにエンコードされる。さもなければ、ＡＣ予測を伴うマクロブロックが現在パケットに保持され、新たなマクロブロックがエンコードされる。新たなパケットへの再エンコード中にはマクロブロックに対してＡＣ予測が実行されないが、新たなパケットにクオリティの低下が生じることはない。というのは、新たなパケットの第１マクロブロックとして、マクロブロックは、以前のパケットからのマクロブロックと高い相関をもつおそれがなく、従って、ＡＣ予測を第１マクロブロックに対して実行する必要性がおそらくないからである。しかしながら、この第１マクロブロックに対して新たなパケット内の後続マクロブロックについては、ＡＣ予測が実行される。前記ファクタは、ビデオ画質の改善に貢献する。
【００１４】
本発明を具現化又は実施することのできるコンピュータシステム１００を例示する高レベル図である図１を参照して説明する。より詳細には、コンピュータシステム１００は、ラップトップ又はハンドヘルドコンピュータシステムでよい。コンピュータシステム１００は、一例に過ぎず、本発明は、デスクトップコンピュータシステム、汎用コンピュータシステム、埋設コンピュータシステム等を含む多数の異なるコンピュータシステム内で作用できることを理解されたい。
【００１５】
図１に示したように、コンピュータシステム１００は、一体化プロセッサ回路１０１、周辺コントローラ１０２、リードオンリメモリ（ＲＯＭ）１０３、及びランダムアクセスメモリ（ＲＡＭ）１０４を備えた高度に一体化されたシステムである。この高度に一体化されたアーキテクチャーは、電力を節約できるようにする。周辺コントローラ１０２は、一体化プロセッサ回路１０１に設けられない複雑な及び／又はピン数の多い周辺機器とインターフェイスすることが必要な場合には、任意である。
【００１６】
周辺コントローラ１０２は、一体化プロセッサ回路１０１の一方の端に接続されるが、ＲＯＭ１０３及びＲＡＭ１０４は、一体化プロセッサ回路１０１の他方の端に接続される。一体化プロセッサ回路１０１は、処理ユニット１０５と、メモリインターフェイス１０６と、グラフィックス／ディスプレイコントローラ１０７と、直接メモリアクセス（ＤＭＡ）コントローラ１０８と、コアロジックファンクションとを備え、該コアロジックファンクションは、エンコーダ／デコーダ（ＣＯＤＥＣ）インターフェイス１０９、パラレルインターフェイス１１０、シリアルインターフェイス１１１及び入力装置インターフェイス１１２を含む。処理ユニット１０５は、中央処理ユニット（ＣＰＵ）、メモリ管理ユニット（ＭＭＵ）を命令／データキャッシュと共に一体化する。
【００１７】
ＣＯＤＥＣインターフェイス１０９は、オーディオソース及び／又はモデムを一体化プロセッサ回路１０１へ接続するためのインターフェイスをなす。パラレルインターフェイス１１０は、ハードディスクやプリンタ等のパラレル入力／出力（Ｉ／Ｏ）装置を一体化プロセッサ回路１０１に接続するのを許す。シリアルインターフェイス１１１は、ユニバーサル非同期受信器送信器（ＵＡＲＴ）、ユニバーサルシリアルバス（ＵＳＢ）及びファイアウオール（ＩＥＥＥ１３９４）のようなシリアルＩ／Ｏ装置を一体化プロセッサ回路１０１に接続するためのインターフェイスをなす。入力装置インターフェイス１１２は、キーボード、マウス及びタッチパッドのような入力装置を一体化プロセッサ回路１０１に接続するためのインターフェイスをなす。
【００１８】
ＤＭＡコントローラ１０８は、メモリインターフェイス１０６を経てＲＡＭ１０４に記憶されたデータにアクセスし、そのデータを、ＣＯＤＥＣインターフェイス１０９、パラレルインターフェイス１１０、シリアルインターフェイス１１１又は入力装置インターフェイス１１２に接続された周辺装置に供給する。又、ＤＭＡコントローラ１０８は、ＣＯＤＥＣインターフェイス１０９、パラレルインターフェイス１１０、シリアルインターフェイス１１１及び入力装置インターフェイス１１２からメモリインターフェイス１０６を経てＲＡＭ１０４へデータを送信する。グラフィックス／ディスプレイコントローラ１０７は、ＲＡＭ１０４からメモリインターフェイス１０６を経てビデオ／グラフィックスデータを要求し、それにアクセスする。次いで、グラフィックス／ディスプレイコントローラ１０７は、データを処理し、その処理されたデータをフォーマットし、次いで、そのフォーマットされたデータを、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）又はテレビジョン（ＴＶ）モニタのようなディスプレイ装置へ送信する。コンピュータシステム１００では、単一のメモリバスを使用して、一体化プロセッサ回路１０１をＲＯＭ１０３及びＲＡＭ１０４へ接続する。
【００１９】
本発明は、グラフィックス／ディスプレイコントローラ１０７の一部分として実施される。このグラフィックス／ディスプレイコントローラ１０７を詳細に示した図２を参照して以下に説明する。一般に、グラフィックス／ディスプレイコントローラ１０７は、ＣＰＵインターフェイスユニット（ＣＩＦ）２０１と、ＳＲＡＮ２０２と、位相固定ループ（ＰＬＬ）回路２０３と、発振器２０４と、ピクセル処理ロジック２０８と、グラフィックスエンジン（ＧＥ）２０６と、メモリインターフェイスユニット（ＭＩＵ）２０７と、フラットパネルインターフェイス（ＦＰＩ）２０９と、ＣＲＴデジタル／アナログコンバータ（ＤＡＣ）２１０と、後処理モジュール２１１と、ＭＰＥＧ−４ビデオデコーダ２１２と、ＭＰＥＧ−４ビデオエンコーダ２１３とを備えている。グラフィックス／ディスプレイコントローラ１０７は、更に、アナログであるかデジタルであるかに関わらず、記憶されたビデオ信号の再生を含むビデオカメラ又は他の入力ビデオ信号を受け入れるためのビデオ入力ポートも備えている。ＣＩＦ２０１は、処理ユニット１０５及びＤＭＡコントローラ１０８へのインターフェイスをなす。従って、ＣＩＦ２０１は、処理ユニット１０５から受信した要求及びビデオ／映像データを希望の行先へルーティングする。特に、ＣＩＦ２０１は、レジスタ読み取り／書き込み要求及びメモリ読み取り／書き込み要求を、ホストＣＰＵ処理ユニット１０５及びＤＭＡコントローラ１０８から、グラフィックス／ディスプレイコントローラ１０７内の適当なモジュールへ送信する。例えば、メモリ読み取り／書き込み要求は、ＭＩＵ２０７へ通され、該ＭＩＵは、次いで、ＳＲＡＭ２０２内のフレームバッファからデータを読み取ったり、そこへデータを書き込んだりする。又、ＣＩＦ２０１は、ＤＭＡコントローラ１０８を伴う連絡係(liaison)としても働いて、システムメモリ（ＲＯＭ１０３及びＲＡＭ１０４）からデータをフェッチし、そのデータをＧＥ２０６及びＭＩＵ２０７へ供給する。更に、ＣＩＦ２０１は、多数の制御レジスタを有し、これら制御レジスタは、ＭＰＥＧの後処理プロセスを制御するように処理ユニット１０５内のホストＣＰＵによりプログラムすることができる（例えば、ある制御レジスタのコンテンツを使用して、ＭＰＥＧ−４デコーダ２１２を構成してもよい）。又、ＣＩＦ２０１は、本発明により教示されたように動的なＡＣ予測を伴うエンコードされたビデオ信号を含む圧縮されたビデオ／映像ビットストリームをＭＰＥＧ−４デコーダ２１２へ通して、映像構成／圧縮解除を実行する。更に、ＣＩＦ２０１は、ＣＯＤＥＣインターフェイス１０９又はシリアルインターフェイス１１１に接続されたソースから受け取った非圧縮のビデオ／映像ビットストリームをＭＰＥＧ−４エンコーダへ通して、圧縮を実行した後、その圧縮されたビットストリームを、一体化プロセッサ回路１０１に直結されるか又はそれにリモート接続された装置へ送信することができる。
【００２０】
ＳＲＡＭ２０２内のフレームバッファは、モニタに表示されるべき映像のｐｉｘｍａｐ（即ちフレームバッファへとマップされるピクセルパターン）も記憶して、種々の目的で一時的バッファとして働くように使用される。更に、ＳＲＡＭ２０２は、ビデオバッファ及びトランザクションレジスタとして割り当てられたメモリを有してもよい。ＧＥ２０６は、グラフィックス／ビデオ映像データを処理し、このデータは、次いで、ホストＣＰＵにより発生されたコマンドに基づいてＳＲＡＭ２０２のバッファに記憶される。ＧＥ２０６は、グラフィックスオペレーション（例えば、ＢｉｔＢＬＴ及びＲＯＰ、エリア充填、線引き）を実行すると共に、クリッピング、トランスパレンシー、ローテーション、カラーエクスパンション等のハードウェアサポートを与える。ＧＥ２０６は、更に、内蔵されたストレッチブロックトランスファー（ＳＴＲＢＬＴ）ファンクションにより、ビデオ映像エクスパンション、プログレッシブスキャン変換、ＹｃｂＣｒ（ＹＵＶ）対ＲＧＢカラー−スペース変換等を実行する。手短に言えば、ＧＥ２０６は、ビデオ／グラフィックスディスプレイのレンダリングファンクションから処理ユニット１０５を解放し、処理ユニット１０５が時間的に重要なオペレーション又はリアルタイムオペレーションを実行するのを許す。
【００２１】
ＭＩＵ２０７は、ＳＲＡＭ（フレームバッファ）２０２内のフレームバッファ、ビデオバッファ及びトランザクションレジスタからの／への全ての読み取り及び書き込みトランザクションを制御する。このような読み取り及び書き込み要求は、ホストＣＰＵから、ＣＩＦ２０１、ＧＥ２０６、ピクセル処理ロジック２０８、ＦＰＩ２０９、等を経て到来してもよい。更に、ＭＩＵ２０７は、メモリアドレッシング、メモリタイミング制御、等に関連したタスクを実行する。後処理モジュール２１１は、圧縮解除されたＭＰＥＧビデオ増データからブロッキング及びリンギング欠陥を除去して、圧縮解除されたビデオデータのクオリティを改善する。圧縮解除されたＭＰＥＧビデオ映像データは、例えば、光学媒体プレーヤから、シリアルインターフェイス１１１又はＭＰＥＧ−４デコーダ２１２を経て受け取ることができる。フィルタされたビデオ映像データは、次いで、ＳＲＡＭ２０２へ送信される。
【００２２】
ピクセル処理ロジック２０８は、ＳＲＡＭ２０２内のバッファからＭＩＵ２０７を経てビデオ／グラフィックスデータを検索し、その映像データをピクセルへとシリアル化し、次いで、それらピクセルを所定のフォーマットへとフォーマットした後に、それらをＦＰＩ２０９又はＣＲＴ  ＤＡＣ２１０へ出力する。従って、ピクセル処理ロジック２０８は、ＳＲＡＭ２０２に記憶された映像をデータにアクセスするために必要な水平及び垂直表示タイミング信号、メモリアドレス、読み取り要求及び制御信号を発生する。含まれるディスプレイ装置がＬＣＤである場合には、ピクセル処理ロジック２０８からのピクセルデータが、ＬＣＤへ通される前に、ＦＰＩ２０９へ送信される。ＦＰＩ２０９は、ディスプレイのために異なる色合い又はグレーシェードを更に追加することによりデータを更に処理する。更に、薄膜トランジスタ（ＴＦＴ）ＬＣＤ（能動的マトリクスＬＣＤとしても知られている）が使用されるか、超ねじれネマチック（ＳＴＮ）ＬＣＤ（受動的マトリクスＬＣＤとしても知られている）が使用されるかに基づいて、ＦＰＴ２０９は、データを、ディスプレイの形式に適するようにフォーマットする。更に、ＦＰＩ２０９は、単色ＬＣＤが使用される場合には、カラーデータを単色データに変換するのを許す。逆に、ディスプレイ装置が陰極線管（ＣＲＴ）である場合には、ピクセルデータが、ＣＲＴへ送信される前に、ＣＲＴデジタル／アナログコンバータ（ＤＡＣ）２１０へ供給される。このＣＲＴ  ＤＡＣ２１０は、ピクセル処理ロジック２０８からのデジタルピクセルデータを、ＣＲＴモニタに表示されるべきアナログの赤、緑及び青（ＲＧＢ）信号に変換する。
【００２３】
本発明の実施形態を具現化する例示的ＭＰＥＧ−４ビデオエンコーダ２１３を詳細に示す図３を参照して説明する。図３に示されたように、ＭＰＥＧ−４ビデオエンコーダ２１３は、動き補償装置（−）（ＭＣ−）３０１と、ＤＣＴモジュール３０２と、量子化装置３０３と、メモリ３０４と、バッファ３０５と、逆量子化装置３０６と、逆ＤＣＴ（ＩＤＣＴ）モジュール３０７と、動き補償装置（＋）（ＭＣ＋）３０８と、キャッシュ３０９と、動き推定装置３１０と、レート制御モジュール３１１と、代替係数／離散係数（ＡＣ／ＤＣ）モジュール３１２と、スキャンモジュール３１３と、ラン長さ事象（ＲＬＥ）モジュール３１４と、可変長さコード（ＶＬＣ）３１５とを備えている。本発明の範囲は、ＭＰＥＧ−４ビデオエンコーダ（即ちビデオエンコードファンクション）がグラフィックス／ディスプレイコントローラ１０７の外部にそれとは独立して存在する実施形態を網羅することが明らかである。
【００２４】
システム１００に接続されたビデオカメラのようなソースからのビデオ入力がメモリ３０４へ供給される。このソースからのビデオ入力は、現在ビデオフレームデータである。好ましくは、メモリ３０４は、現在ビデオ入力からのデータを記憶するための現在フレームエリアと、基準ビデオフレームからのデータ及び圧縮から再構成されたビデオフレームからのデータを記憶するための基準フレーム／再構成フレームエリアと、エンコーダ２１３により新たにエンコードされたビデオフレームからのデータを記憶するためのエンコードビットストリームバッファとに分割される。キャッシュ３０９は、一度に１つのマクロブロックについてメモリ３０４から現在ビデオフレームデータをフェッチすると共に、一度に多数のマクロブロックについて基準ビデオフレームデータをフェッチする（これら多数のマクロブロックは、近くに隣接するものである）。キャッシュ３０９は、動き推定装置３１０から決定された「良好」一致のビデオブロックに関連した動きベクトルを入力として受け取る。キャッシュ７０９は、現在ビデオフレームからのデータ及び基準ビデオフレームからのデータを、受信した「良好」一致ビデオブロックの動きベクトルに基づいて、ＭＣ−３０１及び動き推定装置３１０へ供給する。又、キャッシュ３０９は、基準ビデオフレームからのデータを、受信した「良好」一致ビデオブロックの動きベクトルに基づいて、ＭＣ＋３０８へ供給する。各マクロブロックは、通常、６個のデータブロック（ＹＵＶ４：２：０）を有し、その４つ（Ｙ０−Ｙ３）は、ルミナンスデータであり、その２つ（Ｕ＆Ｖ）は、クロミナンスデータである。
【００２５】
ＭＣ−３０１は、本質的には減算器で、基準ビデオフレームからの予測データを、希望の画像グループ（ＧＯＰ）構造に基づいてエンコードするために正しい順序で与えられた現在ビデオフレームからのデータから減算する。この減算器は、Ｉフレーム又はＩ−マクロブロックに対してディスエイブルされる（例えば、予測がゼロにセットされる）。予測エラーであるＭＣ−３０１の出力（又はＩフレームの場合にはビデオ入力）は、ＤＣＴモジュール３０２へ通され、このモジュールは、離散コサイン変換（ＤＣＴ）を実行して、ＤＣＴ係数を量子化装置３０３へ出力する。このＤＣＴ係数は、一般に、単一のＤＣ係数と多数のＡＣ係数を含む。ＡＣ係数の幾つかは、非ゼロである。ＤＣ係数は、マクロブロックの平均値を表わすが、ＡＣ係数は、マクロブロックにおける種々の高調波周波数を表わす。ＤＣＴ係数は、ピクセルブロックにサイズ（８ｘ８）が等しい係数ブロックに配列される。量子化装置３０３は、各空間周波数において人間の目で許容できるノイズの量に基づいてＤＣＴ係数を重み付けして、係数の縮小セットを発生できるステップとして一般化することのできる量子化プロセスを実行する。これは、一般に、スカラー値Ｑｐを使用して係数信号をスケーリングすることにより達成されてもよい。これは、小さな係数の幾つかをゼロへと分割及び裁断させ、これにより、エンコード動作に使用できる量子化レベルの数を減少させる。量子化されたＤＣＴ係数は、バッファ３０５へ送られて一時的に記憶された後に、ＡＣ／ＤＣ予測モジュール３１２及び逆量子化装置３０６へ通される。好ましい実施形態では、バッファ３０５は、奥行き４８行ｘ巾９６ビットのデュアルポートＳＲＡＭで、一方のポートは、量子化装置３０３からの書き込み動作専用とされ、他方のポートは、逆量子化装置３０６及びＡＣ／ＤＣ予測モジュール３１２への読み込み動作専用とされる。
【００２６】
ＡＣは、通常、一方又は両方の次元における周波数が非ゼロ（高い周波数）であるところのＤＣＴ係数として定義される。ＤＣは、通常、両方の次元における周波数がゼロ（低い周波数）であるところのＤＣＴ係数として定義される。本発明を実施するＡＣ／ＤＣ予測モジュール３１２は、隣接する左上ブロック、上部ブロック及び隣接する左ブロックのような隣接ブロックのＡＣ及びＤＣ値の勾配予測分析に基づいて、現在ブロックのＡＣ及びＤＣを予測する。例えば、予測は、次のように行うことができる。
（｜Ｂ−Ａ｜≧｜Ｂ−Ｃ｜）の場合には、Ｘ＝Ａ
その他の場合には、Ｘ＝Ｃ
但し、Ｂは、現在ブロックに対する左上ブロックのＡＣ又はＤＣ値であり、Ｃは、現在ブロックに対する上部ブロックのＡＣ又はＤＣ値であり、Ａは、現在ブロックに対する左ブロックのＡＣ又はＤＣ値であり、そしてＸは、現在ブロックのＡＣ又はＤＣ値である。
【００２７】
図４は、ＡＣ／ＤＣ予測モジュール３１２により処理されるべき隣接ＤＣＴ係数ブロックのフォーマット構造を示す。図示されたように、各ＤＣＴ係数ブロックにおいて、ＤＣ係数は、正に左上隅に配置され、ＡＣ係数は、ブロックの残り部分全体にわたり、最上位（例えば、非ゼロ）係数が第１行（即ち、ＤＣ係数により占有された行）に水平に配置されるか、又は第１列（即ち、ＤＣ係数により占有された列）に垂直に配置されるように設けられる。
【００２８】
図３に戻ると、バッファ３０５は、現在マクロブロックＸのＡＣ及びＤＣ係数値と、少なくとも現在マクロブロックＸに対する隣接マクロブロックＡ、Ｂ及びＣのＡＣ及びＤＣ係数値とを記憶する。隣接マクロブロックＡ、Ｂ及びＣは、全て、現在マクロブロックの前に処理され、従って、バッファ３０５は、量子化装置３０３からある時間にわたって受信した所定数の処理されたマクロブロックの係数を記憶する。各々の新たなマクロブロックが処理されるにつれて、バッファ５０４のコンテンツは、適当な隣接マクロブロックＡ、Ｂ及びＣを反映するように更新／再編成される。
【００２９】
本発明によれば、ＡＣ／ＤＣ予測モジュール３１２は、３つのＡＣ予測モード、即ち常にオン、常にオフ、及び動的なオンを有する。ＡＣ／ＤＣ予測モジュール３１２は、３つの予測モードの１つを選択し、その動作モードを識別するためにＡＣ予測フラグを発生する。ＡＣ／ＤＣ予測モジュール３１２は、ＤＣ残留信号、ＡＣ信号（ＡＣ係数又はＡＣ残留のいずれかを表わす）、及びＡＣ予測フラグを出力する。
【００３０】
ＭＰＥＧエンコーダ２１３のデータ経路におけるＡＣ／ＤＣ予測モジュール３１２及び量子化装置３０３の動作の順序は、重要でない。図３は、量子化装置３０３がデータ経路においてＡＣ／ＤＣ予測モジュール３１２に先行するように示しているが、ＡＣ／ＤＣ予測モジュール３１２が量子化装置３０３に先行するように回路の順序を逆にしてもよいことが当業者に明らかであろう。
【００３１】
ＶＬＣモジュール３１５のスキャン方向を勾配方向に結び付けることにより、付加的な帯域巾効率を得ることができる。この理由で、ＡＣ／ＤＣ予測モジュール３１２は、ＡＣ及びＤＣ予測係数をスキャンモジュール３１３へ与え、該スキャンモジュールは、二次元アレーマクロブロックからの６４素子長さのベクトルを、該ベクトルの始めに低い周波数（例えば、ＤＣ）の成分が配置されるように形成する。ＡＣ／ＤＣ予測モジュール３１２において実行される勾配分析及びインター／イントラ分析を使用して、３つのスキャン方向、即ち交番水平(Alternate-Horizontal)、交番垂直(Alternate-Vertical)、及びジグザグ（ＺＺ）、の１つを選択する。テーブル１−３は、３つの前記スキャンパターンの順序を要約するものである。より詳細には、テーブル１−３は、６４素子のベクトルを形成するために対応セルのコンテンツをスキャンモジュール３１２によりアクセスする順序を指示する数字を各アレイセルに各々有する３つの８ｘ８アレイを示す。スキャンを部分的に示すものとして、例えば、テーブル１、交番水平スキャンパターンを考えると、数字ゼロ（０）をもつ最も左上のセル、即ちブロックのＤＣ残留係数の位置からスキャンがスタートする。このセルから、スキャンは、水平方向に３つの位置を横断する（即ち、０−３）。第４のセルから、スキャンは、第２行の第１セルへと下方にジャンプする。このセルから、スキャンは、水平方向に１つの位置を横断する（即ち、４−５）。次いで、スキャンは、第３行の第１セルへと下方にジャンプし、水平方向に１つの位置を横断する（即ち、６−７）。スキャンは、数字が大きくなる順序で同じロジックをたどって続けられる。
【００３２】
【表１】
0004649178.tif 000002
【００３３】
【表２】
0004649178.tif 000003
【００３４】
【表３】
0004649178.tif 000004
【００３５】
スキャンモジュール３１３は、ランレベル事象を発生するために６４素子ベクトルをＲＬＥモジュール３１４に与える。一般に、ＲＬＥモジュール３１４は、ベクトルにおける連続するゼロの数を決定し、その決定に基づいてＲＬＥ許容ワードを形成する。量子化の後に、おそらく著しい数のゼロ（おそらく高い周波数成分である）がブロックにあり、このような情報を送信又は記憶する必要はない。従って、ＲＬＥワードは、ベクトルにおける連続する非ゼロ素子間のゼロの数を表わす。又、ＲＬＥワードは、ゼロの後の最後の非ゼロ素子の値と、この値がベクトルにおいて真の最後の成分であるかどうか指示する情報とを含む。
【００３６】
ＲＬＥワードは、ＶＬＣモジュール３１５へ与えられ、該ＶＬＣモジュールは、ＲＬＥワードをＶＬＣパターンへとマップする。例えば、あるＲＬＥワードには、特定のビットパターンが与えられる。ほとんどの一般的なＲＬＥワードには、最も短いＶＬＣビットパターンが与えられている。ＶＬＣパターンは、ＭＰＥＧ−４規格に規定されている。（「MPEG-4 Information Technology-Coding of Audio-Visual Objects-Part 2: Visual」ＩＳＯ／ＩＥＣ／１４４９６−２：１９９９を参照されたい。）ラン長さ及び可変長さコード（結合コード）は、一般に、ハフマンコードと称され、１つのＶＬＣモジュールへと結合することができる。一般に、ＤＣＴ係数が非均一に分布して、映像の非ゼロＤＣＴ係数のほとんどが一般的なエリアに位置する傾向となるために、ＶＬＣ及びラン長さエンコード動作を使用し、この分布特性を利用して、非ゼロのＤＣＴ係数をゼロのＤＣＴ係数から識別する。このようにする際に、冗長な／予測可能な情報を除去することができる。ビデオフレームデータのエンコード（即ち圧縮）されたブロックは、次いで、エンコードされたフレームキャッシュに記憶するためにメモリ３０４へ送信される。
【００３７】
動き補償された予測を行なうプロセスは、予測の基礎となる信号を必要とする。この信号は、メモリ３０４の基準キャッシュに記憶された基準／以前のビデオフレームデータを表わす。ＭＰＥＧ−４ビデオエンコーダ２１３の予測プロセスが、ＭＰＥＧ−４ビデオデコーダ２１２（即ちリモートビデオレコーダ）に得られるものと実質的に同様の信号を基礎としてその予測を行うように確保するために、ビデオエンコーダ２１３にローカルデコーダを含ませて、ローカルデコードされた信号をそのエンコーダに発生させる。逆量子化装置３０６、ＩＤＣＴ３０７、及びＭＣ＋３０８より成るローカルデコーダは、基本的に、量子化装置３０３及びＤＣＴ３０２のエンコード段階を取り消し、デコードされた予測エラーを発生して、それを予測（基準フレーム）データの適当に遅延されたバージョンに追加して戻し、動き補償を伴うローカルデコードされた（再構成された）信号を発生する。遅延された予測データは、キャッシュ３０９により与えられる。
【００３８】
再構成された信号は、メモリ３０４の再構成キャッシュへ送信されて記憶される。現在ビデオフレームの各マクロブロックに対して、本発明を実施する動き推定装置３１０は、最小ＳＡＤ値に基づいて基準ビデオフレーム内の「良好」一致マクロブロックをサーチする。動き推定装置３１０は、現在フレーム及び基準フレームデータのブロックを入力として受け取る。又、動き推定装置３１０は、レート制御モジュール３１１からフレーム形式を指示する信号も受け取る。又、動き推定装置３１０は、動きベクトルも決定する。更に、動き推定装置３１０は、現在ビデオフレーム内のマクロブロックがイントラ（独立してエンコードされる）であるかインター（動き補償の後にエンコードされる）であるかを決定する。これらの決定は、レート制御モジュール３１１及びＡＣ／ＤＣ予測モジュール３１２へ通信される。動きベクトルの決定は、キャッシュ３０９及びＭＣ＋３０８へ通信される。
【００３９】
ＶＬＣモジュール３１５により出力されるビットストリームのレートは、ビデオデータのコンテンツ（即ち、変化するシーン及びオブジェクト）に基づき時間と共に変化し得る。この可変ビットレートは、時には望ましからぬことがある。むしろ、使用可能なチャンネルに適合するように、又は統計学的なマルチプレクシングの場合には、多数のビデオ信号間に一定のビットレートを共有できるように、一定のビットレートが望ましいこともある。従って、アプリケーションに基づいて、可変ビットレート又は一定ビットレートが選択される。そこで、バッファ入力の平均ビットレートがチャンネルの平均ビットレートと同じで、バッファが決してオーバーフローしたりアンダーフローになったりしないよう確保することが重要である。レート制御モジュール３１１は、オーバーフロー及びアンダーフローを防止するために、メモリ３０４におけるビットストリームバッファの平均ビットレートを許容限界範囲内に留めるよう制御するのに使用される。平均ビットレートの制御を達成するために、レート制御モジュール３１１は、量子化装置３０３及びＡＣ／ＤＣモジュール３１２の量子化ファクタを変化させる。粗いスケールは、画質を犠牲にして、低い平均ビットレートを発生するが、微細なスケールは、優れた画質を、高い平均ビットレートにおいて発生する。バッファがいっぱいになると、量子化装置３０３及びＡＣ／ＤＣモジュール３１２は、より粗い状態になり、これは、平均ビットレートを減少する傾向があり、バッファを空にするよう助成する。更に、レート制御モジュール３１１は、Ｉ及びＰフレームにより発生されるビットレートの予測差（例えば、モデリングの投影による）を考慮に入れる。
【００４０】
本発明を実施するＡＣ／ＤＣ予測モジュール３１２の実施形態の当該要素のブロック図である図５を参照して説明する。図５に示すように、ＡＣ／ＤＣ予測モジュール３１２は、ＤＣ予測装置５０１と、ＡＣ予測装置５０２と、減算器／加算器５０３と、判断ロジック５０４と、減算器／加算器５０５と、オーバーフロー計算器５０６と、ラッチ回路５０７−５１０と、プログラムレジスタ５１１と、インバーター５１３−５１４とを備えている。
【００４１】
判断ロジック５０７は、動き推定装置２１０からのインター／イントラ信号と、ＣＰＵによりプログラムされた外部プログラムレジスタ（図示せず）からのＡＣオン／オフ／動的信号と、オーバーフロー計算器５０６からのＡＣ予測フラグとを入力として受信する。これに応答して、判断ロジック５０７は、ｚｚ信号をプログラムレジスタ５１１へ出力し、インターイネーブル信号をラッチ５０７及び５０９へ出力し、イントラ＆ＡＣオフイネーブル信号をラッチ回路５０８及び５１０へ出力し、ＤＣ予測装置イネーブル信号をＤＣ予測装置５０１へ出力し、更に、ＡＣ予測装置イネーブル信号をＡＣ予測装置５０２へ出力する。ＡＣ予測フラグ信号及びＡＣ予測装置イネーブル信号をアンドゲートへ入力として与えると共に、ＡＣ予測フラグ信号及びＡＣ予測装置イネーブル信号を別のアンドゲートへ入力として与えることにより、ＡＣ予測フラグ信号がデアサートされたときに、ＡＣ予測装置イネーブル信号及びイントラ＆ＡＣオフイネーブル信号をオーバーライドして、それらの状態の作用を本質的に逆転する（例えば、低から高へ又は高から低へ）。ＡＣ予測フラグがアサートされたときには、ＡＣ予測装置イネーブル信号及びイントラ＆ＡＣオフイネーブル信号の状態の作用が維持される。
【００４２】
判断ロジック５０４は、現在マクロブロックがインターであることを指示するインター／イントラ入力信号を受信した場合に、インターイネーブル信号をアサートし、イントラ＆ＡＣオフイネーブル信号をアサートし、ＺＺ信号をアサートし、ＤＣ予測装置イネーブル信号をデアサートし、更に、ＡＣ予測装置イネーブル信号をデアサートする。アサートされると、ＺＺ信号は、プログラムレジスタ５１１のＭＳＢを高にセットする。アサートされると、インターイネーブル信号は、ラッチ回路５０７をディスエイブルする。というのは、インターイネーブル信号は、ラッチ回路５０７に到達する前にインバーター５１４に各々与えられるからである。逆に、アサートされたときに、インターイネーブル信号は、ラッチ回路５０９をイネーブルする。アサートされると、イントラ＆ＡＣオフイネーブル信号は、ラッチ回路５０８をディスエイブルする。というのは、イントラ＆ＡＣオフイネーブル信号は、ラッチ回路５０８に到達する前にインバーター５１３に与えられるからである。逆に、アサートされると、インターイネーブル信号は、ラッチ回路５０９をイネーブルし、イントラ＆ＡＣオフイネーブル信号は、ラッチ回路５１０をイネーブルする。デアサートされると、ＤＣ予測装置イネーブル信号は、ＤＣ予測装置５０１をディスエイブルし、ＡＣ予測装置イネーブル信号は、ＡＣ予測装置５０２をディスエイブルする。このようにする際に、ＤＣ予測装置５０１及びＡＣ予測装置５０２は、ディスエイブルされ、更に、ラッチ回路５０９及び５１０へ入力として各々与えられるバッファ３０５からのＤＣ及びＡＣ係数は、ラッチ回路５０９及び５１０の出力としてスキャンモジュール３１３へ与えられ、該スキャンモジュールは、プログラムレジスタ５１１のＭＳＢにより、ＺＺスキャンを実行するように指令される。ＡＣ及びＤＣ係数は、データパーティションモードにおいて現在データパケットに与えられる。
【００４３】
インター／イントラ入力信号が、現在マクロブロックがイントラであることを指示すると共に、ＡＣオン／オフ／動的信号が、選択されたＡＣモードがオフであることを指示する場合には、判断ロジック５０４は、イントラ＆ＡＣオフイネーブル信号をアサートし、インターイネーブル信号をデアサートし、ＡＣ予測装置イネーブル信号をデアサートし、ＤＣ予測装置イネーブル信号をアサートし、ＡＣ予測装置イネーブル信号をデアサートし、更に、ＺＺ信号をアサートし、これは、プログラムレジスタ５１１のＭＳＢを高にセットする。アサートされると、イントラ＆ＡＣオフイネーブル信号は、インバーター５１３を経てラッチ回路５０８をディスエイブルする一方、ラッチ回路５１０をイネーブルする。デアサートされると、インターイネーブル信号は、ラッチ回路５０９をディスエイブルする一方、インバーター５１４を経てラッチ回路５０７をイネーブルする。デアサートされたＡＣ予測装置イネーブル信号は、ＡＣ予測装置５０２をディスエイブルする。アサートされたＤＣ予測装置イネーブル信号は、ＤＣ予測装置５０１をイネーブルする。このようにする際に、ＤＣ予測が実行され、ＡＣ予測がディスエイブルされ、ラッチ回路５１０へ入力として与えられるバッファ３０５からのＡＣ係数は、ラッチ回路５１０の出力としてスキャンモジュール３１３へ与えられ、更に、減算器５０３からのＤＣ予測係数（残留信号）は、ラッチ回路５０７の出力としてスキャンモジュール３１３へ与えられる。スキャンモジュール３１３は、プログラムレジスタ５１１のＭＳＢによりＺＺスキャンを実行するように指令される。ＡＣ係数及びＤＣ予測係数は、データパーティションモードにおいて現在データパケットに与えられる。
【００４４】
インター／イントラ入力信号が、現在マクロブロックがイントラであることを指示すると共に、ＡＣオン／オフ／動的信号が、選択されたＡＣモードがオンであることを指示する場合には、判断ロジック５０４は、イントラ＆ＡＣオフイネーブル信号をデアサートし、インターイネーブル信号をデアサートし、ＡＣ予測装置イネーブル信号をアサートし、ＤＣ予測装置信号をアサートし、更に、ＺＺ信号をデアサートして、プログラムレジスタ５１１のＭＳＢを低にセットする。プログラムレジスタのＭＳＢが低であるときには、そのＬＳＢを使用して、スキャン方向が水平であるか垂直であるかを決定する。デアサートされると、イントラ＆ＡＣオフイネーブル信号は、ラッチ回路５１０をディスエイブルする一方、インバーター５１３を経てラッチ回路５０８をイネーブルする。デアサートされると、インターイネーブル信号は、ラッチ回路５０９をディスエイブルする一方、ラッチ回路５０７をイネーブルする。アサートされたＤＣ予測装置イネーブル信号及びアサートされたＡＣ予測装置イネーブル信号は、ＤＣ予測装置５０１及びＡＣ予測装置５０２を各々イネーブルする。このようにする際に、ＤＣ予測が実行され、ＡＣ予測が実行され、減算器５０５からのＡＣ予測係数（残留信号）がラッチ回路５０８の出力としてスキャンモジュール３１３へ与えられると共に、減算器５０３からのＤＣ予測係数（残留信号）がラッチ回路５０７の出力としてスキャンモジュール３１３へ与えられる。プログラムレジスタ５１１のＭＳＢが低にセットされた状態では、スキャンモジュール３１３は、ＤＣ予測装置５０１により発生された水平／垂直信号の値でプログラムされたプログラムレジスタ５１１のＬＳＢにより指令される。例えば、プログラムレジスタ５１１のＬＳＢが高である場合には、スキャンモジュール３１３は、交番水平スキャンを実行する。プログラムレジスタ５１１のＬＳＢが低である場合には、スキャンモジュール３１３は、交番垂直スキャンを実行する。ＡＣ係数及びＤＣ予測係数は、データパーティションモードにおいて現在データパケットに与えられる。
【００４５】
インター／イントラ入力信号が、現在マクロブロックがイントラであることを指示すると共に、ＡＣオン／オフ／動的信号が、選択されたＡＣモードが動的であることを指示する場合には、判断ロジック５０７は、イントラ＆ＡＣオフイネーブル信号をデアサートし、インターイネーブル信号をデアサートし、ＡＣ予測装置イネーブル信号をアサートし、ＤＣ予測装置イネーブル信号をアサートし、更に、ＺＺ信号をデアサートして、プログラムレジスタ５１１のＭＳＢを低にセットする。このようにする際に、ＤＣ予測がイネーブルされ、ＡＣ予測がイネーブルされ、減算器５０５からのＡＣ予測係数（残留信号）がラッチ回路５０８の出力としてスキャンモジュール３１３へ与えられ、更に、減算器５０３からのＤＣ予測係数（残留信号）がラッチ回路５０７の出力としてスキャンモジュール３１３へ与えられる。これは、ＡＣ予測動的モードに対する第１パスを表わす。プログラムレジスタ５１１のＭＳＢが低にセットされた状態では、スキャンモジュール３１３は、ＤＣ予測装置５０１により発生された水平／垂直信号の値でプログラムされたプログラムレジスタ５１１のＬＳＢにより指令される。例えば、プログラムレジスタ５１１のＬＳＢが高である場合には、スキャンモジュール３１３は、交番水平スキャンを実行する。プログラムレジスタ５１１のＬＳＢが低である場合には、スキャンモジュール３１３は、交番垂直スキャンを実行する。
【００４６】
判断ロジック５０４に関連したファンクション及び説明と、詳細な説明の部分において与えられる他の情報とに鑑み、当業者であれば、ここに述べるファンクションを実行する判断ロジックを容易に設計することができよう。
【００４７】
本発明によれば、ＡＣ動的モードの第２パス中に、オーバーフロー計算器５０６は、現在パケットが、現在選択されているデータパーティションモードのもとで最大パケットサイズ（例えば、１０２４ビット、２０４８ビット又は４０９６ビット）を越えたかどうか決定する。現在マクロブロックが現在パケットに追加された場合に、選択された最大パケットサイズを越えなければ、オーバーフロー計算器５０６は、ＡＣ予測フラグ信号をアサートし、この信号は、ＲＬＥ３１４及びＡＣ予測装置５０２へ与えられて、そのように通知する。アサートされたときに、ＡＣ予測フラグは、更に、ＡＣ予測を続けるべきであることをＡＣ予測装置５０２に指示する。さもなければ、オーバーフロー計算器５０６は、ＡＣ予測フラグ信号をデアサートして、ＲＬＥ３１４に、現在マクロブロックが次のパケットに追加されること、及びＡＣ予測をディスエイブルすべきことを通知する。したがって、ＡＣ予測フラグ信号は、判断ロジック５０４からのＡＣ予測装置イネーブル信号及びイントラ＆ＡＣオフイネーブル信号をオーバーライドする。オーバーフロー計算器５０６は、オーバーフロー状態が生じることを次の式に基づいて決定する。
（非ゼロ＃−ＤＣ非ゼロ＃）＊３１＋１２８＋BitsInPacket ＞ PacketSize
但し、非ゼロ＃は、ＡＣ予測プロセスにより決定された非ゼロＡＣ係数の数であり、ＤＣ非ゼロ＃は、ＤＣ予測プロセスにより決定された非ゼロＤＣ係数の数であり、３１は、非ゼロ係数に対する最大サイズであり、１２８は、データパーティションモードで処理されるマクロブロックのパート１及びパート２に対する最大ビットであり、BitsInPacketは、以前のマクロブロックまでパケットに現在あるビットの数であり、そしてPacketSizeは、データパーティションモードに対してプリセットされたパケットサイズである。
【００４８】
オーバーフロー計算器５０６は、現在マクロブロック全体に対してＡＣ予測が実行された後のＡＣ予測装置５０２からの非ゼロ＃信号と、現在マクロブロック全体に対してＤＣ予測が実行された後のＤＣ予測装置５０１からのＤＣ非ゼロ＃信号と、ＶＬＣ３１５からのBitsInPacketと、ＣＰＵ２０５からのPacketSize信号とを入力として受け取る。オーバーフロー計算器５０６は、判断ロジック５０４の一部分であってもよいことが当業者に明らかであろう。
【００４９】
要約すれば、ＡＣ予測動的モードの第２パスにおいてオーバーフロー状態が検出された場合には、ＡＣ予測がディスエイブルされ、バッファ３０５により与えられたＡＣ係数と、ＤＣ予測残留信号とが、スキャンモジュール３１３へ、次いで、ＲＬＥモジュール３１４へ、ラッチ回路５１９及び５０７を各々経て与えられる。ＡＣ予測フラグがデアサートされてオーバーフロー状態を指示すると、ＲＬＥモジュール３１４は、現在マクロブロックのＤＣ予測信号及びＡＣ係数を次のパケットに入れる。この場合にはＡＣ係数に対する予測は行われない。というのは、新たなパケットにおける第１マクロブロックとして、以前のマクロブロックとの相関がほとんどないからである。予測を行なわないことは、不必要にロスを招く圧縮がないと共に、ビデオ画質の低下もないことを意味する。オーバーフロー状態が検出されない場合には、ＡＣ予測残留及びＤＣ予測残留信号が、スキャンモジュール３１３へ、次いで、ＲＬＥモジュール３１４へ、ラッチ回路５０８及び５０７を各々経て与えられる。従って、本発明によれば、不必要な圧縮を実施しないことによりビデオ画質を維持しながら圧縮効率を最適化するようにＡＣ予測が動的に実行される。
【００５０】
ＤＣ予測装置５０１及びＡＣ予測装置５０２は、勾配分析を実行する。ＤＣ予測装置５０１は、ブロックＡ（ブロックＡ、Ｂ、Ｃ及びＸの位置の例示については図４を参照されたい）のＤＣ係数であるＤＣＡを、ブロックＢのＤＣ係数であるＤＣＢと比較し、垂直勾配を決定する。又、ＤＣ予測装置５０１は、ブロックＣのＤＣ係数であるＤＣＣを、ブロックＢのＤＣ係数であるＤＣＢと比較し、水平勾配を決定する。これら垂直及び水平勾配は、予測の基礎として使用されるべきブロックＢに対してより大きな勾配で互いに比較される。これは、ブロックＢが現在ブロックＸに対して最も遠いブロックであり、且つブロックＢに対してより大きな勾配は、現在ブロックＸに対する当該隣接ブロック（Ａ又はＣ）がおそらく現在ブロックとのより高い相関を有することを示すからである。
【００５１】
垂直勾配が水平勾配より大きい場合には、ブロックＡがおそらくブロックＸとの高い相関を有し、ＤＣ予測装置５０１は、ブロックＡをブロックＸの予測の基礎として使用する水平予測を使用する。逆に、水平勾配が垂直勾配より大きい場合には、ブロックＣがおそらくブロックＸとの高い相関を有し、ＤＣ予想装置５０１は、ブロックＣをブロックＸの予測の基礎として使用する垂直予測を使用する。ＤＣ予測装置５０１は、水平予測が使用されるか垂直予測が使用されるかに基づいて水平／垂直信号を発生する。ＤＣ予測装置５０１は、予測に使用されるブロックのＤＣ係数を減算器／加算器５０３へ与え、これは、ＤＣ予測装置５０１により出力されたＤＣ係数を、ブロックＸのＤＣ係数から減算し／それに加算し、ブロックＸに対するＤＣ予測係数（残留信号）を得る。予測に使用されるブロックのＤＣ係数を減算器／加算器５０３へ送信する前に、ＤＣ予測装置５０１は、当該ブロックの量子化プロセスに使用される量子化ステップサイズＱＰに基づくＤＣ＿ｓｃａｌｅｒを使用してＤＣ係数に対して整数除算演算を実行する。別の実施形態では、ＤＣ予測装置５０１及び減算器／加算器５０３は、１つの回路に結合することができる。以下のテーブル４は、異なる成分形式及びステップサイズＱＰに対するＤＣ＿Ｓｃａｌｅｒ値を一例として要約する。従って、ＤＣ予測装置５０１は、減算器／加算器５０３と一緒に結合されて、次を実行する。
（ブロックＣからの予測）の場合：
ＱＦＸ＝ＰＱＦＸ＋ＦＣ／／ＤＣ＿ｓｃａｌｅｒ
さもなければ、（ブロックＡからの予測）の場合：
ＱＦＸ＝ＰＱＦＸ＋ＦＡ／／ＤＣ＿ｓｃａｌｅｒ
但し、ＱＦＸは、ＤＣ予測係数（残留信号）であり、ＰＱＦＸは、現在ブロックＸのＤＣ係数であり、更に、ＦＣ及びＦＡは、各々、ブロックＣ及びＡのＤＣ係数である。
【００５２】
【表４】
0004649178.tif 000005
【００５３】
ＡＣ予測装置５０２及び減算器／加算器５０５は、実質的に同様の機構を使用して、ＡＣ予測残留信号を発生する。別の実施形態では、ＡＣ予測装置５０２及び減算器／加算器５０４を１つの回路に結合することができる。ＡＣ予測装置５０２は、ＤＣ予測装置５０１により発生された水平／垂直信号を使用して、水平予測（現在ブロックＸに対するＡＣ予測の基礎としてブロックＡが使用される）が使用されるか、垂直予測（現在ブロックＸに対するＡＣ予測の基礎としてブロックＣが使用される）が使用されるか決定する。ブロック間の最も高い相関を示し得るＤＣＴ変換からのＡＣ係数は、ＤＣ係数と同じ第１行又は同じ第１列にあるものである。水平予測が使用される場合には、ブロックＡのＤＣ係数と同じ列からのＡＣ係数が使用される。従って、ＤＣ係数と同じ列におけるブロックＸの各ＡＣ係数（即ち、ＡＣＸ（０、１）からＡＣＸ（０、ｎ））に対して、ＡＣ予測装置５０２は、ブロックＡからの同様に配置されたＡＣ係数（即ち、ＡＣＡ（０、１）からＡＣＡ（０、ｎ））に対応する予測を実行する。垂直予測が使用される場合には、ブロックＣのＤＣ係数と同じ行からのＡＣ係数が使用される。従って、ＤＣ係数と同じ行におけるブロックＸの各ＡＣ係数（即ち、ＡＣＸ（１、０）からＡＣＸ（ｎ、０））に対して、ＡＣ予測装置５０２は、ブロックＣからの同様に配置されたＡＣ係数（即ち、ＡＣＣ（０、１）からＡＣＣ（０、ｎ））に対応する予測を実行する。
【００５４】
ＡＣ予測装置５０２は、予測に使用されるブロックのＡＣ係数を減算器５０５へ与え、これは、ＡＣ予測装置５０２により出力されたＡＣ係数を、ブロックＸのＡＣ係数から減算し／それに加算し、ブロックＸのＡＣ予測係数（残留信号）を得る。予測に使用されるブロックのＡＣ係数を減算器／加算器５０５へ送信する前に、ＡＣ予測装置５０２は、当該隣接ブロックＡ又はＣの量子化ステップサイズＱＰ（予測方向に基づく）と現在ブロックＸの量子化ステップサイズＱＰＸとの間の比を使用してＡＣ係数に対して整数スケーリング演算を実行する。これは、ＡＣ予測に使用された以前の水平隣接又は垂直隣接ブロックの量子化の差を補償する。従って、ＡＣ予測装置５０２は、減算器／加算器５０５と一緒に結合されて、次を実行する。
（ブロックＣからの予測）の場合：
ＱＦＸ[ｊ][０]＝ＰＱＦＸ[ｊ][０]＋(ＱＦＣ[ｊ][０]＊ＱＰＣ)／／ＱＰＸ
さもなければ、（ブロックＡからの予測）の場合：
ＱＦＸ[０][ｉ]＝ＰＱＦＸ[０][ｉ]＋(ＱＦＡ[０][ｉ]＊ＱＰＡ)／／ＱＰＸ
但し、ｉ＝１から７、ｊ＝１から７、ＱＦＸ[ｉ][ｊ]は、ＸブロックからのＡＣ予測係数（残留信号）であり、ＱＦＡ[ｉ][ｊ]は、ＡブロックからのＡＣ係数であり、ＱＦＣ[ｉ][ｊ]は、ＣブロックからのＡＣ係数であり、ＰＱＦＸ[ｉ][ｊ]は、現在ブロックＸのＡＣ係数であり、更に、ＱＰＡ、ＱＰＣ、及びＱＰＸは、各々、ブロックＡ、Ｃ及びＸに関連した量子化ステップサイズである。
【００５５】
ここに示す実施形態では、ラッチ回路５０７及び５０９の各々は、マクロブロックにおける６個のブロックＹ０、Ｙ１、Ｙ２、Ｙ３、Ｕ及びＶの全部で６個のＤＣ係数（即ちブロック当たり１つのＤＣ係数）を受け入れるように設計された一緒に接続された６個のＤ型フリップ−フロップより成る。他の形式のフリップ−フロップを使用することもできる。ラッチ回路５０８及び５１０の各々は、マクロブロックにおける６個のブロックＹ０、Ｙ１、Ｙ２、Ｙ３、Ｕ及びＶの全部で４２個のＡＣ係数（即ちブロック当たり７つのＡＣ係数）を受け入れるように設計された一緒に接続された４２個のＤ型フリップ−フロップより成る。ラッチ回路５０７−５０８は、マクロブロックにおける全部で６個のブロックに対する予測プロセスに続いて全てのＡＣ及びＤＣ予測残留信号を、出力するまで記憶するように設計される。
【００５６】
又、上述したＡＣ／ＤＣ予測モジュール３１２の動作は、プログラムされたプロセッサ又はデジタル信号プロセッサを使用してソフトウェアで実行されてもよい。図６は、本発明による動的なＡＣ予測方法の一実施形態を示すフローチャートである。ステップ６００において、現在マクロブロックがインターであるかイントラであるかの決定がなされる。現在マクロブロックがインターである場合には、ｚｚスキャンが実行され（ステップ６０５）、ＺＺスキャンされたＡＣ及びＤＣ係数がＲＬＥモジュール３１４へ送信される（ステップ６１０）。現在マクロブロックがイントラである場合には、ＡＣ予測モードがオフであるかどうか決定される（ステップ６１５）。ＡＣ予測モードがオフである場合には、ＤＣ予測が実行され（ステップ６２０）、ｚｚスキャンが実行される（ステップ６２５）。スキャンされたＡＣ係数及びＤＣ予測残留係数がＲＬＥモジュール３１４へ送信される（ステップ６３０）。ＡＣ予測モードがオフでない場合には、ＡＣ予測モードがオンであるかどうか決定される（ステップ６３５）。
【００５７】
ＡＣ予測モードがオンである場合には、ＤＣ及びＡＣ予測が実行され（ステップ６６５）、予測方向（水平／垂直）が決定され（ステップ６７０）、ＤＣ＿Ｓｃａｌｅｒ値が決定される（ステップ６７５）。これら３つのステップの順序は、変更されてもよい。次いで、予測方向が水平であるかどうか決定される（ステップ６８０）。もしそうであれば、交番垂直スキャンが実行される（ステップ６８５）、スキャンされたＡＣ及びＤＣ予測残留係数がＲＬＥへ送信される（ステップ６９５）。もしそうでなければ、交番水平スキャンが実行され（ステップ６９０）、スキャンされたＡＣ及びＤＣ予測残留係数がＲＬＥへ送信される（ステップ６９５）。
【００５８】
ＡＣ予測モードがオンでない場合には、ＡＣ予測モードが動的であるかどうかの決定がなされる（ステップ６４０）。ＡＣ予測モードが動的である場合には、ＤＣ及びＡＣ予測が実行され（ステップ６４５）、予測方向（水平／垂直）が決定され（ステップ６５０）、ＤＣ＿Ｓｃａｌｅｒ値が決定される（ステップ６５５）。これら３つのステップの順序は、変更されてもよい。次いで、現在マクロブロックで、現在パケットが最大プリセット限界を越えるかどうか決定される（ステップ６６０）。もしそうであれば、前述したステップ６２０−６３０が実行される。もしそうでなければ、予測方向が水平であるかどうか決定される（ステップ６８０）。もしそうであれば、交番垂直スキャンが実行され（ステップ６８５）、スキャンされたＡＣ及びＤＣ予測残留係数がＲＬＥへ送信される（ステップ６９５）。もしそうでなければ、交番水平スキャンが実行され（ステップ６９０）、スキャンされたＡＣ及びＤＣ予測残留係数がＲＬＥへ送信される（ステップ６９５）。
【００５９】
本発明の幾つかの実施形態では、ＭＰＥＧデータパーティションモードにおいてビデオパケットのオーバーフローを防止する一方、圧縮効率の影響を最小とし且つビデオの画質を維持するための方法及び装置を説明した。本発明は、特定の実施形態について説明したが、このような実施形態に限定されるものではなく、本発明は、特許請求の範囲により規定されるものとする。
【図面の簡単な説明】
【００６０】
【図１】本発明を実施する計算装置１００を例示する高レベル図である。
【図２】計算装置１００のグラフィックス／ディスプレイコントローラ１０７を詳細に示す図である。
【図３】本発明を実施するＭＰＥＧエンコーダ２１３の実施形態の当該要素を示す図である。
【図４】本発明を実施するＡＣ／ＤＣ予測モジュール３１２により処理されるべき隣接ＤＣＴ係数ブロックのフォーマット構造を示す図である。
【図５】本発明を実施するＡＣ／ＤＣ予測モジュール３１２の実施例の当該要素を示す図である。
【図６】本発明による動的なＡＣ予測方法の実施形態を示すフローチャートである。
【符号の説明】
【００６１】
１００・・・コンピュータシステム、１０１・・・一体化プロセッサ回路、１０２・・・周辺コントローラ、１０３・・・リードオンリメモリ（ＲＯＭ）、１０４・・・ランダムアクセスメモリ（ＲＡＭ）、１０５・・・処理ユニット、１０６・・・メモリインターフェイス、１０７・・・グラフィックス／ディスプレイコントローラ、１０８・・・直接メモリアクセス（ＤＭＡ）コントローラ、１０９・・・ＣＯＤＥＣインターフェイス、１１０・・・パラレルインターフェイス、１１１・・・シリアルインターフェイス、１１２・・・入力装置インターフェイス、２０１・・・ＣＰＵインターフェイスユニット（ＣＩＦ）、２０２・・・ＳＲＡＭ、２０３・・・位相固定ループ（ＰＬＬ）回路、２０４・・・発振器、２０８・・・ピクセル処理ロジック、２０６・・・グラフィックスエンジン、２０７・・・メモリインターフェイスユニット（ＭＩＵ）、２０９・・・フラットパネルインターフェイス（ＦＰＩ）、２１０・・・ＣＲＴデジタル／アナログコンバータ（ＤＡＣ）、２１１・・・後処理モジュール、２１２・・・ＭＰＥＧ−４ビデオデコーダ、２１３・・・ＭＰＥＧ−４ビデオエンコーダ、３０１・・・動き補償装置、３０２・・・ＤＣＴモジュール、３０３・・・量子化装置、３０４・・・メモリ、３０５・・・バッファ、３０６・・・逆量子化装置、３０７・・・逆ＤＣＴモジュール、３０８・・・動き補償装置、３０９・・・キャッシュ、３１０・・・動き推定装置、３１２・・・代替係数／離散係数（ＡＣ／ＤＣ）モジュール、３１３・・・スキャンモジュール、３１４・・・ラン長さ事象（ＲＬＥ）モジュール、３１５・・・可変長さコード（ＶＬＣ）
【図１】
0004649178.tif 000006
【図２】
0004649178.tif 000007
【図３】
0004649178.tif 000008
【図４】
0004649178.tif 000009
【図５】
0004649178.tif 000010
【図６】
0004649178.tif 000011