(57)【特許請求の範囲】
【請求項１】
圧縮ビデオデータを復号及び表示する方法であって、
ビットストリーム内の圧縮ビデオフレームにアクセスするステップと、
利用可能な複数のフレームバッファから一のフレームバッファを選択するステップと、
前記一のフレームバッファにフレーム識別子を割り振るステップと、
前記一のフレームバッファ内に格納されるビデオフレームを生成するために前記圧縮ビデオフレームを復号するステップと、
ピクチャ順序カウント（ＰＯＣ）情報を含むフレーム関連情報を受信するステップと、
前記フレーム識別子及び前記フレーム関連情報をディスプレイモジュールに渡すステップと
を含み、
前記選択するステップが、
前記一のフレームバッファを求める要求を受信するステップと、
前記ディスプレイモジュールに現行フレームバッファ使用状況を要求するステップと、
前記ディスプレイモジュールから前記現行フレームバッファ使用状況を受信するステップと、
前記現行フレームバッファ使用状況により特定される、既に復号され且つ不必要なビデオフレームを格納している利用可能なフレームバッファが存在する場合に、該利用可能なフレームバッファをリサイクルするステップと、
前記利用可能なフレームバッファが存在しない場合に、割り当てられたメモリから、復号されたビデオフレームを未だ格納したことがない一のフレームバッファを選択するステップと
を含む、
方法。
【請求項２】
複数のフレーム識別子のリストを備える更新されたフレームバッファ使用状況リストを受信するステップであって、前記複数のフレーム識別子のそれぞれがフレームバッファと関連付けられる、該ステップ
をさらに含む請求項１に記載の方法。
【請求項３】
前記更新されたフレームバッファ使用状況リストを参照して、利用可能なフレームバッファのリストを更新するステップ
をさらに含む請求項２に記載の方法。
【請求項４】
ビデオ復号のためのシステムであって、
圧縮ビデオデータのビットストリームを受信するため、及び情報を渡すためのプレーヤモジュールと、
前記プレーヤモジュールに接続されたコアレコーダであって、前記圧縮ビデオデータを復号し、ピクチャ順序カウント（ＰＯＣ）情報を含むフレーム関連情報を前記プレーヤモジュールに出力する該コアデコーダと、
前記プレーヤモジュールに接続されたディスプレイモジュールであって、前記コアレコーダにより復号されたビデオデータを用いてビデオストリームを出力する該ディスプレイモジュールと、
前記プレーヤモジュールに接続され、複数のフレームバッファから一のフレームバッファを選択して前記復号されたビデオデータを格納するフレームバッファマネージャであって、前記ディスプレイモジュールが前記一のフレームバッファに割り当てられたフレーム識別子を用いて該フレームバッファ内の前記復号されたビデオデータにアクセスする、該フレームバッファマネージャと、
前記プレーヤモジュールに接続された、前記複数のフレームバッファを備えるフレームバッファモジュールと
を備え、
前記フレームバッファマネージャが、前記一のフレームバッファを求める要求を受信した場合に、既に復号され且つ不必要なビデオフレームを格納している利用可能なフレームバッファが存在するならば、該利用可能なフレームバッファをリサイクルし、既に復号され且つ不必要なビデオフレームを格納している利用可能なフレームバッファが存在しないならば、割り当てられたメモリから、復号されたビデオフレームを未だ格納したことがない一のフレームバッファを割り当てる、
システム。
【請求項５】
前記圧縮ビデオデータのビットストリームが複数の圧縮ビデオフレームを備える、請求項４に記載のシステム。
【請求項６】
前記プレーヤモジュールが、前記複数の圧縮ビデオフレームのうちの一の圧縮ビデオフレームを受信すると前記フレームバッファマネージャに前記一のフレームバッファを要求し、前記フレームバッファマネージャが、さらに、前記フレーム識別子を前記一のフレームバッファと関連付ける、請求項５に記載のシステム。
【請求項７】
前記プレーヤモジュールが、さらに、前記圧縮ビデオフレームと前記フレーム識別子とを前記コアデコーダに渡す、請求項６に記載のシステム。
【請求項８】
前記プレーヤモジュールが、さらに、前記フレーム関連情報と前記フレーム識別子とを前記ディスプレイモジュールに渡す、請求項７に記載のシステム。
【請求項９】
前記圧縮ビデオデータが、Ｈ．２６４ビデオ規格のバージョンに実質的に従ってデータを備える、請求項４〜８のいずれか一項に記載のシステム。
【請求項１０】
前記プレーヤモジュールに接続され、複数の異なるビデオ規格に従って前記圧縮ビデオデータを復号する複数のコアデコーダを更に備える、請求項４〜９のいずれか一項に記載のシステム。
【請求項１１】
前記コアデコーダがプラットフォームに依存しない、請求項４〜１０のいずれか一項に記載のシステム。
【請求項１２】
コンピュータシステムにより実行される、フレームバッファマネージャの操作の方法であって、
フレームバッファを求める要求を受信するステップと、
複数の利用可能なフレームバッファのリストを更新するステップと、
前記リストが、リサイクルのために利用可能である、既に復号され且つ不必要なビデオフレームを格納している不必要なフレームバッファを含んでいるか否かを判定するステップと、
前記不必要なフレームバッファが利用可能である場合に、前記フレームバッファとして使用するために前記不必要なフレームバッファをリサイクルするステップと、
前記不必要なフレームバッファが利用可能でない場合に、利用可能なメモリから、復号されたビデオフレームを未だ格納したことがないフレームバッファを割り当てるステップと、
圧縮ビデオフレームを、前記フレームバッファに格納されるビデオデータに復号するステップと、
ピクチャ順序カウント（ＰＯＣ）情報を含むフレーム関連情報にアクセスするステップと、
前記復号されたビデオデータをディスプレイモジュールに渡すステップであって、該ディスプレイモジュールが、前記フレームバッファに関連付けられたフレーム識別子を用いて該フレームバッファ内の該復号されたビデオデータにアクセスする、該ステップと
を含む方法。
【請求項１３】
前記判定するステップが、
ディスプレイモジュールに現行フレームバッファ使用状況を要求するステップと、
前記ディスプレイモジュールから前記現行フレームバッファ使用状況を受信するステップと、
コアデコーダから、更新されたコアデコーダフレームバッファ使用状況を受信するステップと
を含む、請求項１２に記載の方法。
【請求項１４】
利用可能なフレームバッファの前記リストを更新するステップ
を更に含む請求項１２又は１３に記載の方法。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の実施形態は、圧縮ビデオ情報の復号に関する。
【関連技術】
【０００２】
[0002]ビデオ圧縮方式に対する一般的な手法は、あるビデオフレームと次のビデオフレームとの間の変化を追跡することを含む。ほとんどのビデオ圧縮規格は、ビデオのフレームごとに個別の完全な画像を記憶するのではなく、１つ又は複数の参照フレームを提供し、これらの参照フレームがどのように変化するかを注目することによってフレームの大部分を構築する。
【０００３】
[0003]例えば、より普及しているビデオ圧縮規格の幾つかでは、シーケンスの始めに単一の完全な画像が符号化される。そのような完全な画像は、イントラフレーム（Ｉフレーム）と呼ばれる。このＩフレームは、１つ又は複数の予測されるフレーム（Ｐフレーム）のための参照を提供し、Ｐフレームは、前に復号されたフレーム（Ｉフレーム、又は先行のＰフレーム）に依拠する。符号化されたビデオの大部分は、双予測フレーム（Ｂフレーム）から構成され、Ｂフレームは、前に復号された幾つかの参照フレーム（Ｉフレーム又はＰフレーム）に依拠する。
【０００４】
[0004]参照フレームの正確な用法は、様々なビデオ符号化方式ごとに異なる。例えば、ＭＰＥＧ−２符号化方式の下では、２つの最新の参照フレームのみが参照フレームとして使用されることがある。しかし、Ｈ．２６４符号化方式の下では、参照フレームは、はるかに長期にわたって必要とされることがあり、したがって保持される必要がある。
【０００５】
[0005]圧縮ビデオの復号は、現在、プラットフォーム固有のタスクである。例えばコンピュータ上でビデオを再生するために使用されるデコーダは、それが書き込まれたプラットフォームにそのデコーダをロックするように書き込まれることが多く、例えば、固有のメモリ処理タスクがデコーダに組み込まれる。したがって、異なるプラットフォーム、例えばポータブルメディア再生デバイスのためのデコーダの開発は、一般に、デコーダを全面的に書き直すことを含む。
【概要】
【０００６】
[0006]ビデオデータを復号及び表示するための実施形態を説明する。これらの実施形態の幾つかは、統合フレームバッファ管理システムを利用して、圧縮ビデオを復号及び表示する際により良いメモリ管理を容易にする。一手法として、圧縮ビデオデータを復号及び表示する方法を説明する。この方法は、圧縮ビデオフレームを受信するステップと、圧縮ビデオフレームを復号するのに使用するためのフレームバッファを割り当てるステップとを含む。フレーム識別子が、割り当てられたフレームバッファに割り振られる。圧縮ビデオフレームはフレームバッファに復号され、フレーム識別子はディスプレイモジュールに渡される。
【０００７】
[0007]別の手法は、ビデオの復号及び表示のためのシステムを含む。システムは、圧縮ビデオデータのビットストリームを受信し、システム全体にわたって情報を渡すためのプレーヤモジュールを含む。また、システムは、圧縮ビデオデータを復号するためのコアデコーダも含む。ビデオストリームを出力するために、ディスプレイモジュールが含まれる。また、フレームバッファを割り当てるために、フレームバッファモジュール内にフレームバッファマネージャが含まれる。
【０００８】
[0008]別の実施形態では、フレームバッファマネージャを操作する方法を説明する。この方法は、フレームバッファを求める要求を受信するステップを含む。次に、不必要なフレームバッファがリサイクルのために利用可能であるかどうか判定される。そのような不必要なフレームバッファが利用可能である場合には、要求されたフレームバッファとして使用するためにリサイクルされる。不必要なフレームバッファが利用可能でない場合には、要求されたフレームバッファは、利用可能なメモリから割り当てられる。
【０００９】
[0009]本明細書の一部に組み込まれて本明細書の一部を成す添付図面は、本発明の実施形態を例示し、本願の説明と共に本発明の原理を説明する役割を持つ。
【詳細な説明】
【００１０】
[0017]次に、本発明の幾つかの実施形態を詳細に説明する。本発明を（１つ又は複数の）代替実施形態に関連付けて説明するが、当然ながら、代替実施形態は本発明をこれらの実施形態に限定しようとするものではない。逆に、本発明は、添付した特許請求の範囲によって定義される本発明の精神及び範囲に含まれ得る代替形態、修正形態、及び等価形態を網羅するように意図されている。
【００１１】
[0018]さらに、以下の詳細な説明では、特許請求される主題を完全に理解してもらうために、幾つかの特定の詳細を記載する。しかし、これらの特定の詳細を用いることなく、又はそれらと同等の詳細を用いて実施形態を実施し得ることを当業者は理解されよう。他の例では、主題の態様及び特徴を不必要に曖昧にしないように、よく知られている方法、手順、コンポーネント、及び回路は詳細には説明しない。
【００１２】
[0019]以下に続く詳細な説明の一部は、プロセス又は方法に関して提示されて論じられる。それらのプロセス又は方法のステップ及びシーケンスは、この方法の操作を説明する本願における図面（例えば図５）に開示されるが、そのようなステップ及びシーケンスは例示的なものである。実施形態は、様々な他のステップ、又は本願における図面の流れ図に列挙されるステップの変形態様の実施、及び本願で示されて説明される順序以外の順序での実施にもよく適している。
【００１３】
[0020]詳細な説明の幾つかの部分は、コンピュータメモリ上で実行可能なデータビットに対する操作の手順、ステップ、論理ブロック、処理、及び他の記号表現で提示される。これらの記述及び表現は、データ処理技術分野の当業者によって使用されている手段であり、その分野の当業者の仕事の要旨をその分野の別の当業者に最も効果的に伝える。手順、コンピュータ実行ステップ、論理ブロック、プロセスなどは、ここでは、また一般には、所望の結果をもたらすステップ又は命令の自己一貫性シーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、これらの量は、コンピュータシステム内で記憶、転送、組合せ、比較、及び他の操作を施すことができる電気又は磁気信号の形態を取るが、必ずしもそうである必要はない。時として、これらの信号をビット、値、要素、記号、文字、用語、数などとして表すことが、主に一般的な用法であるという理由から簡便であることが分かっている。
【００１４】
[0021]しかし、これら及び同様の用語は全て、適切な物理量に関連付けられたものであり、これらの量に与えられる簡便な標示にすぎないことを念頭に置いておくべきである。以下の論述から明らかなように特に述べない限り、全体を通じて、「アクセスする」、「書き込む」、「含む」、「記憶する」、「伝送する」、「横断する」、「関連する」、「識別する」などの用語を利用する論述は、当然のことながら、コンピュータシステムのレジスタ及びメモリ内部の物理（電子）量として表されるデータを操作して、コンピュータシステムメモリ又はレジスタ、或いは他のそのような情報記憶、伝送、又は表示デバイス内部の物理量として同様に表される他のデータに変換する、コンピュータシステム又は同様の電子計算装置の動作及びプロセスのことをいう。
【００１５】
[0022]計算装置は、典型的には、少なくとも何らかの形態のコンピュータ可読媒体を含む。コンピュータ可読媒体は、計算装置によってアクセスすることができる任意の利用可能な媒体であってよい。例として、コンピュータ可読媒体はコンピュータ記憶媒体及び通信媒体を備えることがあるが、これに限定されない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の記憶のための任意の方法又は技術で実装される、揮発性及び不揮発性の、着脱可能及び着脱不可能な媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、又は他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用することができ、計算装置によってアクセスされ得る任意の他の媒体を含むが、それらに限定されない。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の搬送機構などの変調データ信号として具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するようにその特性の１つ又は複数が設定又は変更された信号を意味する。例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、及び音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体を含むが、これに限定されない。任意の上述した媒体の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。
【００１６】
[0023]幾つかの実施形態は、プログラムモジュールなどの、１つ又は複数のコンピュータ又は他のデバイスによって実行されるコンピュータ実行可能な命令の一般的な文脈で記述されることがある。一般に、プログラムモジュールは、特定のタスクを実施する、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、様々な実施形態において求めに応じて組み合わされ又は分散されることがある。
【００１７】
[0024]本願で説明される実施形態は、ＣＰＵ及びＧＰＵをコンピュータシステムの個別の部品として表すことがあるが、当業者は、ＣＰＵ及びＧＰＵを単一デバイスに統合できること、及びＣＰＵとＧＰＵとが命令論理、バッファ、機能ユニットなど様々なリソースを共有する場合があること、又はグラフィックス操作及び汎用操作に関して別個のリソースが提供される場合があることを理解するであろう。したがって、ＧＰＵに関連するものとして本願で説明される任意の又は全ての回路及び／又は機能を、適切に構成されたＣＰＵ内に実装して実行することも可能である。
【００１８】
[0025]さらに、本願で説明する実施形態ではＧＰＵに言及することがあるが、当然ながら、本願で説明される回路及び／又は機能は汎用又は他の専用コプロセッサなどの他のタイプの処理装置やＣＰＵ内に実装可能である。
【００１９】
（基本的な計算システム）
[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]以上、本発明の実施形態を説明した。本発明を特定の実施形態で説明してきたが、当然ながら、本発明はそのような実施形態によって限定されるものと解釈すべきではなく、特許請求の範囲に従って解釈すべきである。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施形態が実装されうる典型的なコンピュータシステムのブロック図である。
【図２】一実施形態における典型的なビットストリームを示す図である。
【図３】一実施形態における、ビットストリームに関する復号順序及び表示順序を示す図である。
【図４】一実施形態における、ビデオ復号及び表示のためのシステムのブロック図である。
【図５】一実施形態における、圧縮ビデオデータを復号及び表示する典型的な処理の流れ図である。
【図６】一実施形態における、フレームバッファマネージャの操作の典型的な処理の流れ図である。
【図７】一実施形態における、圧縮ビデオデータを復号及び表示する典型的な処理のデータフロー図である。
【符号の説明】
【００７３】
１００  アドレス／データバス
１０１  中央処理装置
１０２  揮発性メモリユニット
１０３  不揮発性メモリユニット
１０４  データ記憶デバイス
１０５  グラフィックスサブシステム
１０６  英数字入力デバイス
１０７  カーソル制御又は指示デバイス
１０８  信号通信インターフェース
１１０  表示デバイス
１１１  ビデオケーブル
１１２  コンピュータシステム
２００  ビットストリーム
２０１  Ｉフレーム
２０２  Ｐフレーム
２０３  Ｂフレーム
４０１  ビットストリーム
４１０  プレーヤモジュール
４２０  コアデコーダ
４３０  ディスプレイモジュール
４４０  フレームバッファマネージャ
４９９  ビデオストリーム
７１０  プレーヤモジュール
７２０  コアデコーダ
７３０  ディスプレイモジュール
７４０  フレームバッファマネージャ
【図１】
0004836010.tif 000002
【図２】
0004836010.tif 000003
【図３】
0004836010.tif 000004
【図４】
0004836010.tif 000005
【図５】
0004836010.tif 000006
【図６】
0004836010.tif 000007
【図７】
0004836010.tif 000008