(57)【特許請求の範囲】
【請求項１】
ビデオデータバッファリングシステムにおいて、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を決定するように構成されている先読みパーサと、
前記ビデオデータビットストリームのエンコードされた部分をデコードするように構成されているデコーダと、
前記ビデオデータのデコードされた部分の値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるように構成されているメモリマネージャとを具備し、
前記ビデオデータのデコードされた部分の値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数に少なくとも部分的に基づいており、
前記ビデオデータのデコードされた部分の値は、さらに、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動に少なくとも部分的に基づいているシステム。
【請求項２】
前記第１のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅は、前記第２のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅よりも大きい請求項１記載のシステム。
【請求項３】
前記第１のバッファ中のビデオデータの各デコードされた部分は、前記第２のバッファ中のビデオデータの各デコードされた部分よりも頻繁に参照されることが予測されていた請求項１記載のシステム。
【請求項４】
前記第１のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、内部メモリ中に、または、組み込みダイナミックランダムアクセスメモリ（“ｅＤＲＡＭ”）中にある請求項１記載のシステム。
【請求項５】
前記ビデオデータのデコードされた部分の前記予測された帯域幅が、しきい値よりも大きい、または、しきい値に等しいと予測されるときに、前記ビデオデータのデコードされた部分は内部メモリ中に記憶される請求項４記載のシステム。
【請求項６】
前記第２のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、外部メモリ中に、または、同期型ダイナミックランダムアクセスメモリ（“ＳＤＲＡＭ”）中にある請求項１記載のシステム。
【請求項７】
前記ビデオデータのデコードされた部分の前記予測された帯域幅が、しきい値よりも小さい、または、しきい値に等しいと予測されるときに、前記ビデオデータのデコードされた部分は外部メモリ中に記憶される請求項６記載のシステム。
【請求項８】
前記先読みパーサは、フルパーシング、または、パーシャルパーシングを実行する請求項１記載のシステム。
【請求項９】
前記ビデオデータの部分は、デコードされるピクチャのバッファページ、フレーム、マクロブロック、または、サブマクロブロックを含む請求項１記載のシステム。
【請求項１０】
ビデオデータをバッファリングする方法において、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を決定することと、
前記ビデオデータビットストリームのエンコードされた部分をデコードすることと、
前記ビデオデータのデコードされた部分の値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否か決定することとを含み、
前記ビデオデータのデコードされた部分の値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数に少なくとも部分的に基づいており、
前記ビデオデータのデコードされた部分の値は、さらに、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動に少なくとも部分的に基づいている方法。
【請求項１１】
前記第１のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅は、前記第２のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅よりも大きい請求項１０記載の方法。
【請求項１２】
前記第１のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、内部メモリ中に、または、組み込みダイナミックランダムアクセスメモリ（“ｅＤＲＡＭ”）中にある請求項１０記載の方法。
【請求項１３】
前記第２のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、外部メモリ中に、または、同期型ダイナミックランダムアクセスメモリ（“ＳＤＲＡＭ”）中にある請求項１０記載の方法。
【請求項１４】
前記第１のバッファは、前記第２のバッファが使用される前に満たされる請求項１０記載の方法。
【請求項１５】
ビデオデータバッファリングシステムにおいて、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を決定する手段と、
前記ビデオデータビットストリームのエンコードされた部分をデコードする手段と、
前記ビデオデータのデコードされた部分の値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否かを決定する手段とを具備し、
前記ビデオデータのデコードされた部分の値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数に少なくとも部分的に基づいており、
前記ビデオデータのデコードされた部分の値は、さらに、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動に少なくとも部分的に基づいているシステム。
【請求項１６】
ソフトウェアを含むコンピュータ読取可能媒体において、
前記ソフトウェアは、実行されるとき、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を決定する動作と、
前記ビデオデータビットストリームのエンコードされた部分をデコードする動作と、
前記ビデオデータのデコードされた部分の値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否かを決定する動作とを前記コンピュータに実行させ、
前記ビデオデータのデコードされた部分の値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数に少なくとも部分的に基づいており、
前記ビデオデータのデコードされた部分の値は、さらに、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動に少なくとも部分的に基づいている媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マルチメディアビデオデコーディングと、ビデオのデコードされた部分のデコードされたピクチャのインテリジェントなバッファリングとに関連している。
【背景】
【０００２】
消費者に対して動画を見せるために、ビデオ技術は非常に人気がある。ビデオは、未だに、電子的に、取り込み、記録し、処理し、記憶し、送信し、そして、再構成することができる映画のシーンを表すイメージのシーケンスである。ビデオは、デジタルおよびアナログの記憶フォーマットで記憶できる。デジタル記憶フォーマットは、ＤＶＤ、クイックタイム（登録商標）、およびＭＰＥＧ−４を含む。アナログ記憶フォーマットは、ＶＨＳ（登録商標）およびベータマックス（登録商標）のビデオテープを含む。
【０００３】
ビデオ圧縮は、ビデオイメージを表すために使用するデータをエンコードして、そのデータ量を減少させる、データ圧縮プロセスのことを指す。ビデオ圧縮は、典型的に、ビデオデータの宛先への送信とその後のデコーディングより前に実行される。ビデオ圧縮標準規格は、ＭＰＥＧ−２、Ｈ２６３、ＭＰＥＧ−４パート２、およびＨ２６４／ＡＶＣを含む。Ｈ２６４標準規格は、以前の標準規格と比較して、低いビットレートにおいて高い品質のビデオを提供する。
【０００４】
ビデオデータは空間的な冗長および時間的な冗長を含むことから、ビデオ圧縮を達成することができる。これらの冗長により、非圧縮ビデオストリームが非効率になる。１つの技術において、ビデオ圧縮は、単一のフレームの部分間における差分を登録することによるイントラフレーム圧縮を通して、空間的な冗長を減少させる。同じように、ビデオ圧縮は、フレーム間の差分を登録することによるインターフレーム圧縮を通して、時間的な冗長を減少させる。
【０００５】
ビデオ解像度は、標準精細ビデオおよび高精細（ＨＤ）ビデオを含む。ＨＤビデオは、一般的に、標準精細ビデオよりも高い解像度の何らかのビデオシステムのことを指す。ＨＤビデオ解像度は、１２８０ｘ７２０（７２０ｐ）または１９２０ｘ１０８０（１０８０ｉもしくは１０８０ｐ）を含む。ＨＤビデオにより、結果として視覚明瞭度がより良くなるが、より多くのメモリ記憶空間を占めることになる。
【０００６】
ビデオエンコーディングにおいて、システムのデータ転送の最大レートは、これのデジタル帯域幅である。言い換えると、帯域幅は、コンピュータがデータチャネルを通してデータを転送することができる、データ量である。帯域幅は、１秒ごとのビットで表現されるビットレートとして測定することができ、接続を通してデータを転送することができる最大のビットレートを示している。コンピュータネットワーキングにおいて、帯域幅管理は、チャネルがその容量まで満たされることを避けるように、ネットワークチャネルを通して通信されるデータ量を測定して制御するプロセスである。チャネルがその容量まで満たされることの結果として、ネットワークが混雑し、性能が悪くなるだろう。よって、帯域幅セービングは、ビデオ性能が悪くなるのを防ぐ助けをする。
【０００７】
従来のビデオデコーダにおいては、エンコードされたビットストリームが、システムに入力される。１つの技術において、残余を形成するために、エンコードされたビットストリームをエントロピーデコードすることができる。この残余は、その後、逆スキャンされ、逆量子化されて、逆変換される。その後、動き補償モジュールが、前のフレームまたは将来のフレームを使用して、インターマクロブロック予測値を発生させ、または、空間補償モジュールが、隣接するマクロブロックを使用して、イントラマクロブロック予測値を発生させる。ＭＰＥＧ４／Ｈ２６３標準規格は、インター予測値のみをサポートするのに対して、Ｈ２６４標準規格は、インター予測値とイントラ予測値の双方をサポートする。スキャンされ、量子化され、変換された残余に予測値マクロブロックを付加することができる。この結果は、フィルタリングされて、その後、再構成およびデコードされたマクロブロックとして、出力される。
【０００８】
インターマクロブロック予測値は、異なるサイズのブロックから形成することができる。異なるサイズのブロックは、パーティションおよびサブパーティションと呼ばれる可変サイズの非オーバーラッピングブロックの整数倍数を含む。ＭＰＥＧ４／Ｈ２６３は、１個の１６ｘ１６のマクロブロックか、４個の８ｘ８のブロックまたはパーティションかをサポートする。Ｈ２６４は、１個の１６ｘ１６のマクロブロックや、２個の１６ｘ８のブロックまたはパーティションや、２個の８ｘ１６のブロックまたはパーティションや、４個の８ｘ８のブロックまたはパーティションをサポートする。Ｈ２６４は、各８ｘ８のパーティションが、１個の８ｘ８のパーティションや、２個の８ｘ４のサブパーティションや、２個の４ｘ８のサブパーティションや、４個の４ｘ４のサブパーティションに分割されるようにさらにサポートする。各パーティションまたはサブパーティションは、どの参照フレームを使うべきかと、予測値のパーティションまたはサブパーティションを集める、参照フレーム中の位置とを記述している独立した動きベクトルを持つことができる。これらの参照フレームは、メモリ中のデコードされたピクチャのバッファにおいて、一時的に記憶され、編成される。デコードされたピクチャのバッファは、デコーディングピクセルプロセッサ（すなわち、デコーダ）にピクチャまたはフレームを提供できる。ビデオデコーダは、ビデオビットストリームをデコードする過程の間に、デコーダが、読み取り、書き込む、メモリ中のいくつかのバッファを維持する。これらの読み取ることと書き込むこととは、ビデオビットストリームの読み取り／書き込みと、システムビットストリームの読み取り／書き込みと、コマンドバッファの読み取り／書き込みと、動きベクトルの読み取り／書き込みとを含む。デコードされたピクチャのバッファとデコーディングピクセルプロセッサとの間で、参照したビデオのデコードされた部分を送ること、および、受け取ることは、帯域幅の消費が最も大きくなることが多い。
【０００９】
ビデオのデコードした部分は、デコーダにより１回参照することがあり、または、複数回参照することがある。ビデオの部分が多く参照されればされるほど、これにはより多くの帯域幅が取られる。ビデオの部分が頻繁に参照される場合、デコードされたビデオ部分が頻繁に参照されない場合よりも多くの帯域幅が消費される。この理由は、デコードされたビデオ部分が参照されるたびに、デコードされたピクチャのバッファからデコーダにデコードされたビデオ部分が送信され、各送信の間に帯域幅を消費するからである。
【概要】
【００１０】
１つの実施形態は、ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、ビデオデータのデコードされる部分の値を予測するように構成されている先読みパーサと、ビデオデータビットストリームのエンコードされた部分をデコードするように構成されているデコーダと、ビデオデータのデコードされた部分の予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、ビデオデータのデコードされた部分を記憶させるように構成されているメモリマネージャとを具備する、ビデオデータバッファリングシステムである。
【００１１】
別の実施形態には、ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、ビデオデータのデコードされる部分の値を予測することと、ビデオデータビットストリームのエンコードされた部分をデコードすることと、ビデオデータのデコードされた部分の予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、ビデオデータのデコードされた部分を記憶させるか否か決定することとを含む、ビデオデータをバッファリングする方法がある。
【００１２】
別の実施形態には、ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、ビデオデータのデコードされる部分の値を予測する手段と、ビデオデータビットストリームのエンコードされた部分をデコードする手段と、ビデオデータのデコードされた部分の予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、ビデオデータのデコードされた部分を記憶させるか否かを決定する手段とを具備するビデオデータバッファリングシステムがある。
【００１３】
別の実施形態には、ソフトウェアを含むコンピュータ読取可能媒体がある。このソフトウェアは、実行されるとき、ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、ビデオデータのデコードされる部分の値を予測する動作と、ビデオデータビットストリームのエンコードされた部分をデコードする動作と、ビデオデータのデコードされた部分の予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、ビデオデータのデコードされた部分を記憶させるか否かを決定する動作とをコンピュータに実行させる。
【００１４】
別の実施形態には、エンコードされているビデオデータのスキップされた部分を識別してマークするように構成されている先読みパーサと、ビデオデータのスキップされた部分をデコードするように構成され、ビデオデータのデコードされたスキップ部分は、ビデオデータの対応する同一のデコードされた部分を持つデコーダと、ビデオデータのデコードされたスキップ部分と、ビデオデータの対応する同一のデコードされた部分とを、単一の参照メモリ位置中に記憶させるように構成されているメモリマネージャとを具備する、ビデオデータバッファリングシステムがある。
【図面の簡単な説明】
【００１５】
【図１】図１は、ビデオビットストリーム中のフレームのグループを図示しているブロックダイヤグラムである。
【図２】図２は、デコードされたピクチャのインテリジェントなバッファリングのためのシステムを図示しているブロックダイヤグラムである。
【図３】図３は、デコードされたピクチャのインテリジェントなバッファリングに対する高レベルプロセスを図示しているフローチャートである。
【図４】図４は、デコードされたピクチャのインテリジェントなバッファリングのための１つの実施形態のテスト結果を図示しているプロットである。
【詳細な説明】
【００１６】
デコードされたピクチャのインテリジェントなバッファリングのためのシステムおよび方法を記述する。１つの実施形態では、ビデオビットストリームバッファは、ビデオの部分を含むエンコードされた圧縮ビットストリームを受信して一時的に保持する。１つの実施形態では、バッファは、到来ビデオビットストリームからのビデオの１つ以上のフレームを保持する。先読みパーサは、その後、先にビデオビットストリームバッファ中をスキャンし、ビデオビットストリームバッファ中のエンコードされたビデオビットストリームの部分を解析して、デコードされるビデオ部分の“値”を予測する。１つの実施形態おいて、デコードされるビデオ部分の値は、そのビデオ部分がより後のビデオフレームによりどのくらいの頻度で参照されるかに関連している。例えば、複数回参照されると決定されているビデオフレームは、高い値が設定されてもよいが、他のビデオフレームにより参照されないビデオフレームは、低い値で設定されてもよい。ビデオの部分の値のこの先読み予測に基づいて、インテリジェントメモリマネージャは、デコードされたピクチャのバッファ中のデコードされた異なるビデオ部分に優先順位を付ける。高く評価されたビデオ部分は、非常に速いアクセス時間を持つ第１のバッファに送られてもよく、より低く評価されたビデオ部分は、より遅いアクセス時間を有する第２のバッファに送られてもよい。
【００１７】
１つの実施形態では、高く評価されたビデオ部分は、第１の内部メモリ中に記憶され、低く評価されたビデオ部分は、第２の外部メモリ中に記憶される。このようなストラテジーを使用すると、単一のメモリ中にすべてのデコードされたビデオ部分を記憶させることと比較して、帯域幅と、電力と、金銭的なコストとのセービングを達成できる。１つの実施形態では、内部メモリは、キャッシュメモリであってもよく、外部メモリは、ランダムアクセスメモリ（ＲＡＭ）であってもよい。ハンドヘルド応用および移動体応用において、電力と、帯域幅と、金銭的なコストとのセービングは重要である。
【００１８】
この詳細な説明は、本発明のある特有な実施形態に向けられている。しかしながら、本発明は、数多くの異なる方法で具現化することができる。この説明において、同一の数字により全体を通して同一のパーツが指定されている図面に対して、参照が行われている。さらに詳細には、これらには限定されないが、移動体電話機、ワイヤレスデバイス、およびパーソナルデータアシスタント（ＰＤＡ）のような、さまざまな電子デバイスで、または、さまざまな電子デバイスに関係して、実施形態を実現してもよいと考えられる。
【００１９】
ここで使用する“ビデオ部分”は、エンコードされたビデオ部分とデコードされたビデオ部分とを含む。エンコードされたビデオ部分は、デコーディングの前の、ビデオファイルまたはビットストリームの部分を含む。デコードされたビデオ部分は、エンコードされたビデオ部分のデコードされたバージョンであり、デコードされたビデオ部分は、それらに関係する値を持つことができる。ビデオ部分は：複数のビデオフレームや、１個のビデオフレームや、ビデオフレームのフラグメントや、スライスや、ピクセルや、デコードされたピクチャのバッファページや、フレームの、チャンクや、フラグメントや、ピースや、部分や、ビットや、ピクチャや、ブロックや、マクロブロックや、サブマクロブロックや、パーティションや、サブパーティションを含んでもよい。知られているように、複数のビデオブロックは、マクロブロックを形成し、複数のマクロブロックは、スライスを形成する。複数のスライスは、フレームを形成し、複数のフレームは、さらには、ビデオを形成する。１つの実施形態では、デコードされた各ビデオ部分は、同じサイズである。別の実施形態では、デコードされたビデオ部分は、メモリ中の可変サイズに対応していてもよい。
【００２０】
また、ここで使用する、ビデオの“高く評価された”部分は、ビデオの低く評価された部分よりも、ビデオデコーディングの観点から重要なビデオ部分である。高く評価されたビデオ部分は、他のビデオ部分と比較して、より定期的にデコーディングにおいて使用されるビデオ部分（例えば、フレームやマクロブロック）を含んでいてもよい。例えば、パーサが、ビデオ部分が頻繁に参照されるだろうと予測する場合、ビデオ部分は高く評価されていると考えられる。また例として、高く評価された部分は、ビットストリーム中の他のデコードされるビデオ部分により、頻繁にアクセスされるかもしれない。高く評価されたビデオ部分は、より後のビデオ部分からの動きベクトルにより、頻繁に参照されるかもしれない。逆に、低く評価されたビデオ部分は、頻繁に参照されないビデオ部分であるビデオ部分を含んでいてもよい。
【００２１】
また、ここで使用する、ビデオ部分の“値を予測すること”は、デコーディングプロセスの間に、ビデオ部分の重要性のレベルを予測することを含む。１つの実施形態では、予測は、エンコードされたビットストリーム中で、または、ビデオビットストリームバッファ中で、ビデオ部分（例えばフレーム）が参照される回数に基づいている。この予測は、厳密な決定であることがあり、または、代替的には、この予測は、ビデオ部分がより後のビデオフレームによりどのくらいの頻度で参照されることが予期されているかに基づく単なる推定であることがある。
【００２２】
“参照される”ビデオ部分は、既にデコードされているビデオ部分を含むが、より後のデコードされるビデオ部分を決定するために使用される。ビデオ部分を参照することは、ビデオ部分にアクセスすることとして言及されることもある。
【００２３】
図１は、ビデオビットストリーム中のビデオフレーム１１０ａ〜ｅの時間シーケンスを図示しているブロックダイヤグラムである。フレーム１１０ａ〜ｅは、フレーム１１０が時間において時間−１から時間＋３に進行するときに、各ビデオフレーム内を左から右へ移動する自動車１０５ａ〜ｅを示している。１つの実施形態では、ビデオビットストリームは、次に来るフレーム中で最も参照されるマクロブロックを予測するために、時間−１において解析される。フレーム−１において、自動車１０５を含むマクロブロック１１５、１１８は、現在のフレームと、フレーム＋１と、フレーム＋２と、フレーム＋３により、後に参照される。よって、自動車１０５を含むマクロブロック１１５、１１８は、頻繁に参照されるだろうと決定されてもよい。１つの実施形態では、頻繁に参照されるマクロブロックは、図２を参照して説明するように、他のマクロブロックと比較して、プロセッサに対してより速いアクセス時間を提供するメモリ位置に記憶される。
【００２４】
図２は、デコードされたピクチャのインテリジェントなバッファリングのためのシステムアーキテクチャ２００を図示している。システム２００は、エンコードされたビデオビットストリームＡを含み、エンコードされたビデオビットストリームＡは、ビデオビットストリームバッファ２１０により処理されて、先読みパーサ２２０に送られ、最終的には回路２９５に入れられる。回路２９５は、デコーダ２３０と、メモリマネージャ２４０と、アドレス変換器２５０と、第１のメモリ２７０における第１のバッファ２６０とを備える。回路２９５の外部には、第２のメモリ２９０における第２のバッファ２８０がある。
【００２５】
ここで開示した実施形態に関連して記述した、さまざまな例示的な論理ブロックと、モジュールと、回路と、アルゴリズムステップを、電気ハードウェアや、コンピュータソフトウェアや、双方の組み合わせたものとして実現してもよいことを、当業者はさらに正しく認識するだろう。ハードウェアおよびソフトウェアの交換可能性を明確に図示するために、さまざまな例示的なコンポーネントと、ブロックと、モジュールと、回路と、ステップとを、一般的にこれらの機能性の観点から記述している。このような機能性が、ハードウェアまたはソフトウェアとして実現されるか否かは、特定の応用と、システム全体に課せられた設計の制約とに基づいている。熟練者は、それぞれの特定の応用に対して変化する方法で、記述した機能性を実現してもよいが、このようなインプリメンテーションの決定は、本発明の範囲からの逸脱を生じさせるものとして解釈されるべきではない。
【００２６】
無線のような、媒体を介して、ビデオデータを効率的に送ることができるように、図２中のエンコードされたビデオビットストリームＡは、圧縮されたビデオデータを含んでいてもよい。ビデオビットストリームバッファ２１０は、圧縮されたビデオデータを、デコーダ２３０によりデコードする準備ができるまで、一時的に記憶できる。したがって、デコーダ２３０は、ビデオデータビットストリームのエンコードされた部分をデコードする１つの手段を提供する。
【００２７】
圧縮されたビデオビットストリームがバッファ２１０中に一時的に記憶された後は、これは先読みパーサ２２０に対して利用可能である。先読みパーサ２２０は、ビデオビットストリームバッファ２１０中のエンコードされたビデオ部分を通してスキャンして、圧縮されたビットストリームのどのビデオ部分が高く評価される可能性が最も高いかを予測することができる。したがって、先読みパーサ２２０は、ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、ビデオデータのデコードされる部分の値を予測する１つの手段を提供する。
【００２８】
１つの実施形態では、この予測は、各ビデオ部分に値を割り当てることにより達成される。１つの実施形態では、この値は、メモリマネージャ２４０により監視されている（示されていない）優先順位の付いたテーブル中に記憶される。１つの実施形態では、予測された値が、しきい値よりも大きい、または、しきい値に等しいときには、デコードされたビデオ部分は第１のバッファ２６０に送られ、予測された値がしきい値よりも小さいときには、第２のバッファ２８０に送られる。１つの実施形態では、値は、デコードされたビデオ部分の予測された帯域幅に関連している。別の実施形態では、値は、デコードされたビデオ部分の予測された寿命、または、寿命を通してのデコードされたビデオ部分の予測された帯域幅変動に関連している。別の実施形態では、値は、エンコードされたビデオ部分が、デコーダ２３０において、ビデオビットストリーム中のより後のフレームにより、何回参照されると予測されたかに関連している。パーサ２２０は、エンコードされたビデオ部分をデコーダ２３０に送り、予測した値をメモリマネージャ１４０に送ることができる。
【００２９】
先読みパーサ２２０は、デコーディングの前に、ビデオのエンコードされた部分を時間的に先に見て、デコーディングの後の、対応するデコードされたビデオ部分に対する値を予測するように構成されている。１つの実施形態では、デコードされるビデオ部分の帯域幅は、システム中のデコーダによる、ビデオ部分の総読み取り回数と総書き込み回数との合計を、ビデオ部分の総寿命により割ったものとして、計算される。言い換えると、帯域幅は、ビデオアンダーテイクの特定のフレームや特定の複数のフレームを参照する量に関連している。このように、パーサ２２０は、事前におよびインテリジェントに、エンコードされたビデオ部分を先読みして、デコードされたビデオ部分のどの部分が頻繁に参照されるかを、量的に決定するか、または、予測するかできる。
【００３０】
データ局所性を活用するために、参照パターンは、通常、少なくともいくつかのフレーム前において事前に決定されているかもしれない。この理由から、ビデオフレームがデコードされるときまでには、データ局所性を活用するには遅すぎるかもしれない。それゆえ、先読みパーサ２２０は、どのビデオ部分がより頻繁に参照されるかを事前に決定してもよい。例えば、パーサ２２０は、所定の数のエンコードされたビデオ部分（例えば１５個のフレーム）を先読みして、ビデオビットストリームバッファ中のそれらのもっと後のフレームの動きベクトルを見ることができる。パーサ２２０は、その後、各フレームに対して、各フレームに関係する動きベクトルの解析を通していくつの他のフレームを参照し返すかを決定できる。
【００３１】
また、パーサ２２０は、どのビデオ部分が頻繁に参照されるか、および、どのビデオ部分が頻繁に参照されないかを決定してもよい。１つの実施形態では、頻繁にアクセスされるビデオ部分（例えばフレーム）は、内部のより近いメモリ（例えばｅＤＲＡＭ）中に記憶されるのに対して、頻繁にアクセスされないビデオ部分は、外部のより遠いメモリ（例えばＳＤＲＡＭ）中に記憶される。
【００３２】
１つの例として、パーサ２２０は、ビデオビットストリームバッファ２１０から１５個のフレームを取り出すことにより、この１５個のフレームを先に見ることができる。１５個のフレームのそれぞれに対して、先読みパーサ２２０は、各フレームに関係する動きベクトルを決定する。パーサは、その後、各動きベクトルにより参照されるフレームを識別する。動きベクトルのしきい値よりも多い数により参照されるフレームは、デコーダ２３０によってこれらを速く取り出すことができるように、第１のメモリ２７０内に記憶されることが決定される。しきい値よりも少ない数により参照されるフレームは、これらがデコーダ２３０により頻繁には必要とされないことから、第２のメモリ２９０中に記憶される。
【００３３】
パーサ２２０がさらに先読みすればするほど、値の予測はより正確になりえる。先読みパーサ２２０は、フルパーシングおよびパーシャルパーシングの実施形態を実行することができる。フルパーシングの実施形態では、先読みパーサ２２０は、圧縮されたビデオ全体を先にスキャンしてビューする。このシナリオでは、パーサ２２０は、特定のビデオ部分が厳密に何回参照されるかを決定する。フルパーシングの１つの実施形態では、先読みパーサ２２０は、どのフレームが最も参照されるかの単一の決定を行い、これらのフレームを第１のメモリ中に記憶させることができる。フルパーシングの別の実施形態では、先読みパーサ２２０は、やはり、アクセスの数を１度のみ計算するが、どのビデオ部分を第１のメモリ中に記憶させるかを継続して再割り振りするためにこの知識を使う。フルパーシングの実施形態では、最も正確な帯域幅情報を取得するために、動きベクトルと参照インデックスとの双方が再構成される。フルパーシングは、ビデオ部分の値の精密な決定を生成させることができるが、このプロセスは、相対的に複雑で時間がかかり、デコーディングシステムの計算電力に依存する実時間ビデオデコーディングに対しては、不適切であるかもしれない。
【００３４】
先読みパーサ２２０はまた、“パーシャルパーシング”を実行することができる。パーシャルパーシングでは、先読みパーサ２２０により部分的なビデオデータのみがレビューされる。参照タイプに基づくパーシャルパーシングの実施形態では、参照インデックスのみが再構成され、動きベクトルは再構成されない。パーシャルパーシングの別の実施形態では、参照インデックスと動きベクトルのどちらも再構成されないが、スライスレベルヘッダのみが再構成される。結果として、パーシャルパーシングの実施形態は、動きベクトルがデコードされないことから、正確さに欠ける帯域幅情報を取得する。しかしながら、情報は正確さに欠ける一方、これは一般的に処理がより速く、したがって、実時間の状況に対しては、より適切であるかもしれない。したがって、パーシャルパーシングは、動きベクトルが、整数または関数であるか否かを決定せず、それゆえに、帯域幅算出の正確性に影響することがある。
【００３５】
パーシャルパーシングの別の実施形態では、先読みパーサ２２０は、エンコードされたビットストリーム全体よりも少ないものをスキャンする。例えば、１つおきのフレームのみが先読みパーサ２２０により解析されてもよい。ビットストリームのより多くのフレームをスキャンすることは、どのフレーム、すなわちマクロブロックがより多く参照されるかのより正確な予測を導く一方で、これは高いレベルの計算オーバーヘッドも必要とする。多くの場合、ビデオストリーム全体よりも少ないものをスキャンすることは、より実用的である。パーシャルパーシングでは、先読みパーサ２２０は、ビデオ部分がバッファ内に記憶されるときにスナップショットをレビューすることに基づいて、どのビデオ部分が最も高い値を持っているかの予測を行ってもよい。
【００３６】
先読みプロセスの一部としてプレビューされるフレームの数は、変動してもよい。１つの実施形態では、先にビューされるフレームの数は、ビデオビットストリームバッファ２１０のサイズに比例する。別の実施形態では、パーサ２２０は、１個〜５個のフレーム、６個〜１０個のフレーム、１１個〜１５個のフレーム、１６個〜２０個、または、２１個〜２５個のフレームなどのような、いくつかのフレームを先にスキャンする。
【００３７】
例として、パーサ２２０の予測側面を説明すると、先読みパーサ２２０が先に次の１５個のフレームを読み取るとき、先読みパーサ２２０は、これらのフレーム内の各マクロブロックの値を知る。しかしながら、パーサ２２０は、これらの次の１５個のフレームを超える任意のフレームの値も予測する必要があるかもしれない。より多くのフレームを先にスキャンすればするほど、ビデオがさらに進行するにつれて、より正確な予測をすることができる。
【００３８】
ビデオ部分の値は、経時的に不均一になることがある。例えば、時間が進むにつれて、高く評価されたビデオ部分は、低く評価された部分中にコンバートすることがある。これが生じるとき、マネージャ２４０は、第１の高い性能のバッファ２６０に含まれる低く評価されたビデオ部分を第２のバッファ２８０に送ることがある。同じように、低く評価された部分は、高く評価されたビデオ部分になることがある。これが生じるとき、マネージャ２４０は、高く評価されたビデオ部分を、第２のバッファ２８０から第１のバッファ２６０に送ることがある。値が帯域幅に基づいているとき、第１のバッファ中の各デコードされたビデオ部分の帯域幅は、第２のバッファ中の各デコードされたビデオ部分の帯域幅より大きくなることがある。パーシャルパーシングでは、パーサ２２０は、第１のバッファ２６０および第２のバッファ２８０の中に含まれるビデオ部分のこの予測を定期的に更新することがある。フルパーシングでは、マネージャ２４０は、デコードされたビデオ部分の現在の予測された値に基づいて、バッファ中のビデオ部分に優先順位を付けることができる。
【００３９】
先読みパーサ２２０は、所定の数のフレームを先読みするものとして、しばし上述してきた。しかしながら、先読みパーサ２２０は、ビデオの任意の部分を先読みすることができる。
【００４０】
回路２９５内のデコーダ２３０は、ユーザによりビデオ部分をビューできるように、ビデオ部分を再構成する。１つの実施形態では、デコーダ２３０は、ピクセルプロセッサとして呼ばれる。デコーダ２３０は、現在のビデオ部分をデコードするために、アドレス変換器２５０を通して取得された以前にデコードされたビデオ部分を参照してもよい。
【００４１】
メモリマネージャ２４０は、デコーダ２３０の出力に接続されており、デコードされたビデオ部分を、パーサ２２０によるこれらの予測された値に基づいて、第１のメモリ２７０における第１のバッファ２６０と第２のメモリ２９０における第２のバッファ２８０との間に割り振ることができる。高く評価されたビデオ部分を、第１のバッファ２６０中に置くことができる。逆に、低く評価された部分を、第２のバッファ２８０中に置くことができる。したがって、メモリマネージャ２４０は、ビデオデータのデコードされた部分の予測された値に基づいて、第１のメモリ２７０における第１のバッファ２６０中に、または、第２のメモリ２９０における第２のバッファ２８０中に、ビデオデータのデコードされた部分を記憶させるか否かを決定する１つの手段を提供する。
【００４２】
１つの実施形態では、マネージャ２４０は、最も価値のあるものから最も価値のないものまでの順序で、ビデオ部分をテーブル中で編成する。１つの実施形態では、第１のバッファは、第２のバッファが使用される前に満たされる。例えば、マネージャ２４０は、最も価値のあるピース（例えば、大きな帯域幅のデコードされたビデオ部分）で第１のバッファ２６０を満たし、その後、残りのピースを第２のバッファ２８０中に送る。
【００４３】
マネージャ２４０はまた、第１のバッファ２６０および第２のバッファ２８０中のビデオ部分を、再編成ならびに廃棄することができる。フルパーシングおよびパーシャルパーシングにおいて高く評価されたビデオ部分は、経時的に変化することがある。それゆえ、高く評価されたビデオ部分が第１のバッファ２６０中に残るように、マネージャ２４０は、第１のバッファ２６０と第２のバッファ２８０とを再編成できる。また、ビデオ部分がもはや参照されないときには、マネージャ２４０は、このリタイヤしたビデオ部分を廃棄できる。
【００４４】
このインテリジェントなシステムおよびプロセスは、従来のキャッシュと区別がつく。従来のキャッシュは、通常、ＦＩＦＯ（先入れ先出し）のような、決定論的置き換えポリシーに関係している。従来のキャッシュは、通常、直接マッピングまたはセットアソシアティブのような、決定論的マッピングストラテジーに関係している。このような決定論的ストラテジーでは、高く評価されたビデオ部分をキャッシュ中に“捕える”可能性は低い。従来のキャッシュは、頻繁に参照されるデータを高速アクセスのために記憶させることができる一時的な記憶エリアである。従来のキャッシュでは、いったんデータがキャッシュ中に記憶されると、オリジナルデータを再フェッチしたり、再計算したりするのではなく、むしろキャッシュされたコピーを参照することにより、将来の利用が行われる。従来のキャッシュは、そうでなければコンピュータのメインメモリからフェッチされるデータに対するアクセス時間を減少させる。しかしながら、従来のキャッシュはインテリジェントではない。従来のキャッシュは、データを受動的に保持する。従来のキャッシュは、キャッシュが複製するデータのアドレスの知識のみを持ち、データが必要とされるときに、システムは、単に従来のキャッシュをチェックし、データは、キャッシュ中にあるか、キャッシュ中にはないかである。従来のキャッシュは、事前に将来のフレームを先読みしない。それゆえ、従来のキャッシュは、どのデータが重要であるかを予測または決定する時間を持たないだろう。よって、従来のキャッシュは、ビデオ部分の予測された値に基づいて決定を行わない。さらに、従来のキャッシュは、ビデオのエンコードされた部分により取られる帯域幅を予測しない。したがって、従来のキャッシュは、デコードされたピクチャのインテリジェントなバッファリングのシステムおよび方法と区別がつく。１つの実施形態では、第１のメモリ２７０および第２のメモリ２９０は、キャッシュではない。
【００４５】
所定のフレームまたはイメージは、その寿命の間に、デコーダ２３０により複数回参照されることがある。１個のマクロブロックを処理するのに必要な時間のような、短い時間期間内に、参照フレームの複数のアクセス（データ局所性）は通常起こらない。代わりに、データ局所性は典型的に、いくつかのフレームのスパンにわたって起こる。参照が、短い時間内または空間スパン内に起こらないことから、従来のキャッシュによってデータ局所性を活用することができない。このようなシナリオにおいて、動き補償帯域幅は、全体的なビデオデコーディング帯域幅に大きく寄与するものを表すことから、全体的な外部メモリ帯域幅に寄与することになる、所定のフレームが外部メモリから繰り返しロードされるのを防ぐために、多く参照されたフレームを内部メモリ内またはより近いメモリ（例えばｅＤＲＡＭ）内に保持することは、有用である。本発明の１つの実施形態では、高く評価されたビデオ部分は、第１のメモリ（例えば内部メモリ）中に記憶され、低く評価された部分は、第２のメモリ（例えば、外部メモリ）中に記憶される。別の実施形態では、第２のバッファが使用される前に、第１のバッファが満たされる。
【００４６】
デコードされたビデオ部分を参照のために少なくとも２つのメモリに送るマネージャ２４０の能力は、内部メモリまたは外部メモリのうちの１つの中のみに、すべてのデコードされたビデオ部分を記憶させるシステムとも区別がつく。ＨＤビデオのような、大きなビデオ応用において、内部メモリ中にすべてのビデオデータを記憶させることは、非常に大きなｅＤＲＡＭを必要とするだろうし、これは非常に高価であり、実用的ではないだろう。代替的に、すべてのＨＤビデオデータをＳＤＲＡＭ中に記憶させることは、かなりの帯域幅と電力とを使用するだろうし、これは、通信デバイスに対して理想的ではないだろう。本発明の１つの実施形態では、最も頻繁にアクセスされるビデオ部分を内部メモリ（例えばｅＤＲＡＭ）中に記憶させ、残りのビデオ部分を外部メモリ（例えばＳＤＲＡＭ）中に記憶させることにより、マネージャ２４０は、ビデオ部分に優先順位を付ける。この優先順位付けの結果として、金銭的なコストと帯域幅とのセービングを達成できる。
【００４７】
ビデオ部分がデコードされる前に、マネージャ２４０は、第１のバッファ２６０中に空間を割り振ることができる。１つの実施形態では、マネージャ１４０は、もはや高く評価されていない（例えば、もはや帯域幅に寄与すると予期されていない）ビデオ部分をリタイヤさせる。別の実施形態では、マネージャ１４０は、高く評価されたビデオ部分を見越して、第１のバッファ２６０中に利用可能なメモリ空間を割り振る。
【００４８】
異なる実施形態では、マネージャ２４０は、デコードされたビデオ部分を、疎らに、または、頻繁に割り振ることができる。疎らの割り振り実施形態では、マネージャ２４０は、初めに、デコードされたビデオ部分を、その値に基づいて、第１のメモリ２６０と第２のメモリ２８０との間に割り振る。いったんこの割り振りが行われると、この疎らの割り振り実施形態により、フレームがリタイヤする（すなわち、もはや参照されなくなる）まで、ビデオ部分が割り振られたメモリ中に残ることができる。言い換えると、いったんマネージャ２４０により、初めの割り振り決定が行われると、ビデオ部分は、第１のバッファ２６０と第２のバッファ２８０との間を行ったり来たり頻繁に転送されない。これは、より融通の利かない実施形態ではあるが、この手順は、実現するのに、より頻繁な割り振り実施形態よりも複雑ではない。
【００４９】
頻繁な割り振りチェックの実施形態では、デコードされたビデオ部分は、初めに、その値に基づいて、マネージャ２４０により、第１のバッファ２６０または第２のバッファ２８０に割り振られる。この実施形態では、マネージャ２４０は、デコードされたビデオ部分の値を常にチェックして、これらを再割り振りすべきかを見る。この実施形態では、マネージャ２４０は、ビデオ部分をそれらの値に基づいてテーブル中で分類して、どのビデオ部分を再割り振りすべきかの識別を容易にしてもよい。
【００５０】
アドレス変換器２５０も、デコーダ２３０に接続されている。アドレス変換器２５０は、チェック機能および変換機能を実行できる。チェック機能では、アドレス変換器２５０は、第１のメモリ２７０または第２のメモリ２９０からメモリ参照がルーティングされるか否かを決定するために、デコーディングの間に、第１のメモリ２７０および第２のメモリ２９０をチェックできる。しかしながら、アドレス変換器２５０は代わりにページテーブルにアクセスできることから、アドレス変換器２５０は、第１のメモリ２７０または第２のメモリ２９０を直接的に（例えば、物理的に）チェックする必要はない。ページテーブルはメモリマネージャ２４０により発生させることができ、変換されたアドレスエントリを含むことができる。アドレス変換器２５０は、第１のメモリ２７０または第２のメモリ２９０からメモリ参照がルーティングされるか否かを決定するために、変換されたアドレスエントリにアクセスできる。変換機能では、アドレス変換器２５０は、実行中に、第２のメモリ２９０の仮想アドレスを、第１のメモリ２７０の物理アドレスに変換することにより、仮想メモリの錯覚をサポートすることができる。
【００５１】
ページテーブルの概念は、仮想メモリ概念において同等の使用を持つ。仮想メモリ概念は、単一の大きな記憶装置の見せかけを与えるために、メインメモリとＳＤＲＡＭとの間の、命令とデータとの動きを自動化するように、従来のコンピュータアーキテクチャにおいて使用されている。
【００５２】
本発明の１つの実施形態では、第１のメモリ２７０は、物理アドレス空間中に、高く評価されたビデオ部分を記憶する。第１のメモリ２７０の物理アドレスは、変換させる必要がない。低く評価されたビデオ部分は、第２のメモリ２９０中に記憶させることができ、ここで、第２のメモリ２９０のアドレスは、仮想アドレスにより表すことができる。したがって、アドレス変換器２５０は、実行中に、第２のメモリ２９０の仮想アドレスを、第１のメモリ２７０の物理アドレスに変換することにより、仮想メモリの錯覚をサポートすることができる。結果として、第１のメモリ２７０は、第２のメモリ２９０からのデータを含んでいる仮想メモリとして使用することができる。１つの実施形態では、アドレス変換器２５０は、ｅＤＲＡＭとＳＤＲＡＭとの間の仮想化をサポートする。アドレス変換器２５０は、変換ルックアサイドバッファとして実現することができる。
【００５３】
第１のバッファ２６０および第２のバッファ２８０は、第１のメモリ２７０および第２のメモリ２９０中にデコードされたビデオ部分をそれぞれ記憶する、デコードされたピクチャのバッファでありえる。１つの実施形態では、デコードされたピクチャのバッファは、６個から８個のビデオフレームを記憶するのに十分なくらい大きく設計されている。
【００５４】
メモリの２つの例は、組み込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）と、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）である。ｅＤＲＡＭは、典型的なＳＤＲＡＭと違い、メインＡＳＩＣのような、同じ、カード、ダイ、またはパッケージ上に、あるいは、デコーディングプロセッサ上に典型的に統合された局所的なメモリまたは内部メモリである。組み込みメモリは、より広いバスと、より速い動作スピードを可能にする。しかしながら、理由の一部として、いくつかのダイを１つのチップ中にパッケージ化させなくてはならないことから、ｅＤＲＡＭは、製造するのにさらに高価である。ＳＤＲＡＭは、同期型インターフェースを有し、このことは、ＳＤＲＡＭが、制御入力に応答する前に、クロック信号を待つことを意味している。それゆえ、ＳＤＲＡＭはコンピュータのシステムバスに同期化される。通信デバイスにおいて、電力と帯域幅とは重要である。ＳＤＲＡＭと比較して、ｅＤＲＡＭは、より低い帯域幅とより低い電力消費との利益を有するが、より低いメモリ密度とより高い金銭的なコストとの不利益を有する。
【００５５】
第１のメモリ２７０は、回路２９５上のデコーダ２３０に統合することができる。内部にあることにより、第１のメモリ２７０中のビデオ部分は、デコーダ２３０により近く、しがたって、全体的なビデオ帯域幅に寄与することは少なく、それゆえに、電力をセーブする。１つの実施形態では、第１のメモリはｅＤＲＡＭである。別の実施形態では、第１のメモリ２７０は、第２のメモリ２９０よりも近くにある。別の実施形態では、第１のメモリ２７０は、第２のメモリ２９０よりも速いアクセス時間を持つ。
【００５６】
第２のメモリ２９０は、回路２９５に対して外部にすることができる。外部にあることにより、第２のメモリ２９０中のビデオ部分は、全体的なビデオ帯域幅に寄与することが多いが、第１のメモリ２７０をより小さく設計することができ、それゆえ、さほど高価とはならない。実用的な応用に対して、適度なサイズのより近いメモリを可能にする外部メモリが望ましい。１つの実施形態は、第２のメモリ２９０はＳＤＲＡＭである。別の実施形態は、第２のメモリ２９０は、第１のメモリ２７０よりも離れており、または、より遅い。
【００５７】
回路２９５は、ビデオディスプレイ制御装置やビデオディスプレイプロセッサのような、ビデオデータを入力する何らかのコンポーネントでありえる。回路２９５は、本発明の精神から逸脱することなく、追加的な、メモリ、バッファ、パーサ、および、プロセッサのような、図２中には示されていない追加的なコンポーネントを持つことができる。
【００５８】
１つの実施形態では、システムは、プロセッサに対してより近いバッファ中に、より頻繁に参照されるビデオ部分を記憶させることにより、帯域幅と電力とを下げる。別の実施形態では、高い値のビデオ部分が発見され、これらにより速くアクセスできる内部メモリ中のバッファに送られ、帯域幅を下げ、電力をセーブする。さらなるビデオ部分が、すぐ近くのバッファ中に記憶されると、さらなる帯域幅セービングが達成される。１つの実施形態では、金銭的なコストは考慮されず、すべてのデコードされたビデオ部分がすぐ近くのバッファ中に記憶される。別の実施形態では、デコードされたビデオ部分は、予測された値に基づいて、第１のバッファ２６０と第２のバッファ２８０との間に分割される。
【００５９】
逆に、外部メモリバッファ中に、少なくともいくつかのビデオ部分を記憶させることに対して利益がある。ビデオ標準規格（例えばＨ２６４）では、参照するためのある量のデコードされたビデオ（例えば、６個から８個のフレーム）が利用可能である必要がある。少なくともいくつかのビデオ部分を外部バッファ中に記憶させることにより、２つのバッファが、ビデオ標準規格により要求された、デコードされたビデオの記憶装置の容量にかなうように、内部メモリをより小さく設計できる。より小さい組み込みメモリは、より大きい組み込みメモリよりも、金銭的にまったく高価ではない。したがって、トレードオフは、より大きくより近いバッファを持つことによる帯域幅セービングと、より小さくより近いバッファを持つことによる金銭的なコストセービングとの間で、行うことができる。
【００６０】
低帯域幅と低電力とを達成するために、より多くの帯域幅を消費するビデオの部分を、デコーダ２３０または回路２９５の近くに記憶させるべきである。ビデオ部分をさらに遠くまで送ることは、さらに電力を消費するので、内部メモリ記憶装置は、外部メモリ記憶装置よりも利益がある。また、上述したように、ＨＤビデオのようないくつかのビデオ解像度は、標準的なビデオよりもメモリ空間を消費する。ＨＤビデオフレームに対して十分に大きい内部メモリは、典型的に、多くの回路応用に対して金銭的に高価すぎる。例えば、Ｈ２６４ビデオ標準規格では、デコードされたピクチャのバッファが、デコーダが参照するために利用可能なおおよそ６個から８個のデコードされたピクチャフレームを記憶してキープすることが必要とされる。各フレームがおおよそ３ＭＢである場合、６個から８個のフレームの記憶装置には、１８ＭＢから２４ＭＢのメモリが必要とされるだろうし、これは、多くの回路応用に対して高価すぎることが多い。
【００６１】
いくつかのビデオ領域は、経時的に変化せず、静的であるとして呼ばれる。静的なビデオ領域は、特に高解像度ビデオに多く生じる傾向がある。静的なビデオ領域は、スキップされたビデオ部分（例えば、スキップされたマクロブロック）を含み、ゼロ動きベクトル予測値を持つ。静的なビデオ部分をデコードした後に、デコードされたビデオ部分は、別のデコードされたビデオ部分と同一である。１つの実施形態では、同一のビデオ部分は、別のデコードされたビデオ部分と正に同じピクセルを含んでいるデコードされたビデオ部分である。
【００６２】
従来では、同一のデコードされた部分の複製“コピー”が作られ、メモリ中に記憶される。例えば、５個の同一のマクロブロックが存在する場合、従来では、オリジナルマクロブロックと４個のコピーとがすべて作られ、メモリ中に記憶されるだろう。従来のアプローチの不利益は、４個のコピーを作るために使用するさらなる帯域幅と、４個のコピーにより占有されるさらなるメモリ空間とを含む。
【００６３】
１つの実施形態では、メモリ中の単一の物理位置のみが占有され、この位置は、複数の同一のビデオ部分を表す。例えば、５個の同一のマクロブロックが存在する場合、５個のマクロブロックのそれぞれは、メモリ中において単一のメモリ位置により表される。この単一のメモリ位置は、各同一のビデオ部分に対する参照位置として扱われる。１つの実施形態では、先読みパーサ２２０は、スキップされたビデオ部分を“スキップされた”としてマークする。デコーダ２３０が、スキップされたビデオ部分をデコードするとき、デコーダ２３０は、アドレス変換器２５０を使用して、参照位置を参照する。
【００６４】
同一のビデオ部分に対する単一の参照位置のみを記憶させ、参照することは、かなりの帯域幅をセーブする。特に、消費される唯一の帯域幅は、（示されていない）ディスプレイプロセッサによる読み出しによるものである。このアプローチは、同一のビデオ部分に対して、デコーダ２３０とメモリ２７０、２９０との間の、他の書き出しおよび読み込み帯域幅コンポーネントのすべてをなくす。帯域幅セービングの結果として、付随する電力セービングが達成される。また、メモリ空間および複雑性が減少する。メモリ空間における減少は、第１のメモリ２７０中に存在することができるビデオ部分の数を効率的に増加させる。この減少の結果として、第２のメモリ２９０からのより多くのビデオ部分を、第１のメモリ２７０中に記憶させることができ、これにより、さらなる帯域幅セービングが提供される。
【００６５】
図３は、デコードされたピクチャのインテリジェントなバッファリングに対する高レベルプロセスを図示しているフローチャートである。プロセスはステップ３００において開始する。ステップ３１０において、プロセスでは、先読みパーサを使用して、エンコードされたビットストリーム中のビデオ部分の値を予測する。１つの実施形態において、先読みパーサは、フルパーシングまたはパーシャルパーシングを使用して、所定の数のエンコードされたフレームを先読みし、デコーディングの後のフレームの部分の帯域幅値を予測できる。
【００６６】
ステップ３２０において、プロセスでは、デコーダを使用して、ビデオ部分をデコードする。上記で論じたように、ビデオ部分は、フレーム、ピクチャ、マクロブロックなどでありえる。次に、決定ステップ３３０では、ビデオ部分の予測された値が高いか否かを決定する。高い場合、プロセスはステップ３４０に移り、ここで、予測された高い値を有するデコードされたビデオ部分が第１のメモリ中に記憶される。１つの実施形態では、第１のメモリは内部メモリ（例えばｅＤＲＡＭ）である。
【００６７】
決定ステップ３３０に対する回答がいいえである場合には、プロセスはステップ３５０に移り、ここで、プロセスは、デコードされたビデオ部分を、第２のメモリ中に記憶させる。１つの実施形態では、第２のメモリは外部メモリ（例えばＳＤＲＡＭ）である。ステップ３６０において、プロセスは、第２のメモリのアドレスを仮想の第１のメモリアドレスに変換する。１つの実施形態では、この変換はアドレス変換器により実行される。ステップ３７０において、プロセスは、第１のメモリまたは仮想の第１のメモリから、デコードされたビデオ部分を参照する。その後、プロセスはステップ３１０に折り返すか、ステップ３８０においてプロセスは終了する。
【００６８】
図４は、デコードされたピクチャのインテリジェントなバッファリングを使用したテスト結果のプロットを図示している。テスト条件は、ｅＤＲＡＭ内部メモリと、ＳＤＲＡＭ外部メモリと、４個のデコードされた参照ピクチャフレームとを含み、それぞれのデコードされたフレームは、１９２０ｘ１０８８解像度（おおよそ各３ＭＢ）であり、したがって、４個のデコードされたフレームはトータルで１２ＭＢである。さらに、テスト条件は、Ｈ２６４圧縮と、ＩＢＢＰＢＢＰグループのフレームフォーマットと、３０フレーム／秒のフレームレートと、６４ビットのバス幅と、４ＫＢのビデオ部分と、６４ｘ６４の参照ピクチャと、デコーダより先に１５個のフレームを先読みする先読みパーサと、フルパーシングとを含む。
【００６９】
図４のｙ軸において、１秒ごとのメガバイト（ｍｂｓ）で帯域幅セービングが測定されている。ｘ軸では、第１のメモリおよび第２のメモリにおいて、データのメガバイトとしてビデオ部分が測定されている。このテストでは、第１のメモリがｅＤＲＡＭであり、第２のメモリがＳＤＲＡＭであった。
【００７０】
このテストの結果は、帯域幅セービングが、第１のメモリ中に入れられるデータの容量に、直接的に比例してはいないが、関連していることを示している。このテストにおいて、１２ＭＢのうちの０ＭＢが第１のメモリ中に記憶されている（すなわち、１２ＭＢすべてが第２のメモリ中にある）とき、帯域幅セービングは０ＭＢｐｓである。より多くのメモリが第２のメモリから第１のメモリにシフトされると、帯域幅セービングが達成される。例えば、１２ＭＢのうちの１ＭＢが第１のメモリ中に記憶される（データのうちの１１ＭＢが第２のメモリ中にあることを意味する）とき、対応する５０ＭＢｐｓの帯域幅セービングが達成される。１２ＭＢのうちの４ＭＢ（または５ＭＢ）が第１のメモリ中に記憶されるとき、対応する２５０ＭＢｐｓの帯域幅セービングが達成される。言い換えると、ビデオサイズの３０％（すなわち、１２ＭＢのうちの４ＭＢ）が第１のメモリ中に記憶されるとき、５０％の帯域幅セービング（すなわち、３００ＭＢｐｓのうちの２５０ＭＢｐｓ）が達成される。１２ＭＢすべてが第１のメモリ中に記憶される場合、対応する３００ＭＢｐｓの帯域幅セービングが達成される。しかしながら、１２ＭＢのメモリは、第１のメモリ中に記憶させるのにコストがかかりすぎるかもしれない。デコードされたビデオ部分のすべてよりも少ないものを第１のメモリ中に記憶させることは、帯域幅と金銭的なコストとの間の望ましいトレードオフであるかもしれない。マネージャの優先順位付けを通しての、帯域幅セービングと付随する電力セービングとの結果として、高精細ビデオのような、大きいメモリ応用を処理することができる。
【００７１】
上述により、記述した実施形態が、移動局のようなデバイスにおいて、ビデオ部分のデコードされたピクチャのインテリジェントなバッファリングを提供することを正しく認識すべきである。デュアルモードのＡＭＰＳおよびＣＤＭＡのシステムにおける通信に対して、記述した実施形態を適用することができる。また、インテリジェントなバッファリングが必要とされる類似した状況においてどのように本発明を適用するかは、当業者にとって容易に明らかになるだろう。
【００７２】
ＣＤＭＡ通信システムの一般原理、特に、通信チャネルを通しての送信のためのスペクトル拡散信号の発生に対する一般原理は、“衛星中継器または地上中継器を使用するスペクトル拡散多元接続通信システム”と題し、本発明の譲受人に譲渡された米国特許第４９０１３０７号において記載されている。さらに、“ＣＤＭＡセルラ電話機システムにおいて、信号波形を発生させるためのシステムおよび方法”と題し、本発明の譲受人に譲渡された米国特許第５１０３４５９号は、ＰＮ拡散、ウォルシュカバー、およびＣＤＭＡスペクトル拡散通信信号を発生させるための技術に関連する原理を開示している。さらに、実施形態は、データの時間多重化と、“高データレート”通信システムに関連するさまざまな原理とを利用しており、“高レートパケットデータ送信に対する方法および装置”と題し、１９９７年１１月３日に出願され、本発明の譲受人に譲渡された米国特許出願シリアル番号０８／９６３３８６において開示されたような、“高データレート”通信システムにおいて、開示した実施形態を使用することができる。
【００７３】
当業者は、さまざまな異なる技術および技法のうちの任意のものを使用して、情報および信号を表してもよいことを理解するであろう。例えば、上記の記述全体を通して参照されうるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁粒、光界または光粒、あるいは、これらの任意の組み合わせたものにより表してもよい。
【００７４】
ここに開示した実施形態と関連して説明したさまざまな例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、現場プログラム可能ゲートアレイ（ＦＰＧＡ）または他のプログラム可能論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは、ここに記述した機能を実行するように設計されているこれらの任意の組み合わせたものにより、実現または実行してもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替実施形態では、プロセッサは、任意の従来のプロセッサ、制御装置、マイクロ制御装置、または状態機械であってもよい。プロセッサはまた、例えば、ＤＳＰおよびマイクロプロセッサを組み合わせたものや、複数のマイクロプロセッサや、ＤＳＰコアを伴う１つ以上のマイクロプロセッサや、任意のその他のこのようなコンフィギュレーションのような、コンピューティングデバイスを組み合わせたものとして実現してもよい。
【００７５】
ここに開示した実施形態と関連して記述した方法またはアルゴリズムのステップは、コンピュータまたは電子記憶装置で、ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、あるいは、双方を組み合わせたもので直接的に具現化してもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーブバルディスク、ＣＤ−ＲＯＭ、または、技術的に知られている他の何らかの形態の記憶媒体のような、コンピュータ記憶装置に存在していてもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合されていてもよい。代替実施形態では、記憶媒体は、プロセッサと一体化されていてもよい。プロセッサおよび記憶媒体は、ＡＳＩＣに存在していてもよい。ＡＳＩＣは、移動局に存在していてもよい。代替実施形態では、プロセッサおよび記憶媒体は、ディスクリートコンポーネントとして移動局に存在していてもよい。
【００７６】
開示した実施形態のこれまでの記述は、当業者が本発明を製作または使用できるように提供した。これらの実施形態に対するさまざま改良は当業者に容易に明らかとなり、ここに規定した一般的な原理は、本開示の精神または範囲から逸脱することなく、他の実施形態に適用してもよい。したがって、本開示は、ここで示した実施形態に限定されることを意図しているものではなく、ここで開示した原理および新しい特徴と一致した最も広い範囲に一致させるべきである。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
〔１〕ビデオデータバッファリングシステムにおいて、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を予測するように構成されている先読みパーサと、
前記ビデオデータビットストリームのエンコードされた部分をデコードするように構成されているデコーダと、
前記ビデオデータのデコードされた部分の前記予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるように構成されているメモリマネージャとを具備するシステム。
〔２〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動である〔１〕記載のシステム。
〔３〕前記第１のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅は、前記第２のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅よりも大きい〔２〕記載のシステム。
〔４〕前記第１のバッファ中のビデオデータの各デコードされた部分は、前記第２のバッファ中のビデオデータの各デコードされた部分よりも頻繁に参照されることが予測されていた〔１〕記載のシステム。
〔５〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数である〔１〕記載のシステム。
〔６〕前記第１のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、内部メモリ中に、または、組み込みダイナミックランダムアクセスメモリ（“ｅＤＲＡＭ”）中にある〔２〕記載のシステム。
〔７〕前記ビデオデータのデコードされた部分の前記予測された帯域幅が、しきい値よりも大きい、または、しきい値に等しいと予測されるときに、前記ビデオデータのデコードされた部分は内部メモリ中に記憶される〔６〕記載のシステム。
〔８〕前記第２のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、外部メモリ中に、または、同期型ダイナミックランダムアクセスメモリ（“ＳＤＲＡＭ”）中にある〔２〕記載のシステム。
〔９〕前記ビデオデータのデコードされた部分の前記予測された帯域幅が、しきい値よりも小さい、または、しきい値に等しいと予測されるときに、前記ビデオデータのデコードされた部分は外部メモリ中に記憶される〔８〕記載のシステム。
〔１０〕前記先読みパーサは、フルパーシング、または、パーシャルパーシングを実行する〔１〕記載のシステム。
〔１１〕前記ビデオデータの部分は、デコードされるピクチャのバッファページ、フレーム、マクロブロック、または、サブマクロブロックを含む〔１〕記載のシステム。
〔１２〕ビデオデータをバッファリングする方法において、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を予測することと、
前記ビデオデータビットストリームのエンコードされた部分をデコードすることと、
前記ビデオデータのデコードされた部分の前記予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否か決定することとを含む方法。
〔１３〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動である〔１２〕記載の方法。
〔１４〕前記第１のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅は、前記第２のバッファ中の前記デコードされたビデオデータの各部分の前記予測された帯域幅よりも大きい〔１３〕記載の方法。
〔１５〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数である〔１２〕記載の方法。
〔１６〕前記第１のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、内部メモリ中に、または、組み込みダイナミックランダムアクセスメモリ（“ｅＤＲＡＭ”）中にある〔１２〕記載の方法。
〔１７〕前記第２のバッファは、デコードされたピクチャのバッファであり、前記デコードされたピクチャのバッファは、外部メモリ中に、または、同期型ダイナミックランダムアクセスメモリ（“ＳＤＲＡＭ”）中にある〔１２〕記載の方法。
〔１８〕前記第１のバッファは、前記第２のバッファが使用される前に満たされる〔１２〕記載の方法。
〔１９〕ビデオデータバッファリングシステムにおいて、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を予測する手段と、
前記ビデオデータビットストリームのエンコードされた部分をデコードする手段と、
前記ビデオデータのデコードされた部分の前記予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否かを決定する手段とを具備するシステム。
〔２０〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分の予測された帯域幅、前記ビデオデータのデコードされた部分の予測された寿命、または、前記寿命を通しての前記ビデオデータのデコードされた部分の予測された帯域幅変動である〔１９〕記載のシステム。
〔２１〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数である〔１９〕記載のシステム。
〔２２〕ソフトウェアを含むコンピュータ読取可能媒体において、
前記ソフトウェアは、実行されるとき、
ビデオデータのデコードされる部分に対応する、ビデオデータビットストリームのエンコードされた部分を先読みすることにより、前記ビデオデータのデコードされる部分の値を予測する動作と、
前記ビデオデータビットストリームのエンコードされた部分をデコードする動作と、
前記ビデオデータのデコードされた部分の前記予測された値に基づいて、第１のメモリにおける第１のバッファ中に、または、第２のメモリにおける第２のバッファ中に、前記ビデオデータのデコードされた部分を記憶させるか否かを決定する動作とを前記コンピュータに実行させる媒体。
〔２３〕前記ビデオデータのデコードされた部分の前記予測された値は、予測された帯域幅である〔２２〕記載の媒体。
〔２４〕前記ビデオデータのデコードされた部分の前記予測された値は、前記ビデオデータのデコードされた部分が動き補償のために参照されるだろうと予測された回数である〔２２〕記載の媒体。
〔２５〕ビデオデータバッファリングシステムにおいて、
エンコードされているビデオデータのスキップされた部分を識別してマークするように構成されている先読みパーサと、
前記ビデオデータのスキップされた部分をデコードするように構成され、前記ビデオデータのデコードされたスキップ部分は、前記ビデオデータの対応する同一のデコードされた部分を持つデコーダと、
前記ビデオデータのデコードされたスキップ部分と、前記ビデオデータの対応する同一のデコードされた部分とを、単一の参照メモリ位置中に記憶させるように構成されているメモリマネージャとを具備するシステム。
〔２６〕前記単一の参照メモリ位置は、第１のメモリ中に位置付けられている〔２５〕記載のシステム。
〔２７〕前記第１のメモリは、組み込みダイナミックランダムアクセスメモリ（“ｅＤＲＡＭ”）である〔２６〕記載のシステム。
【図１】
0005290429.tif 000002
【図２】
0005290429.tif 000003
【図３】
0005290429.tif 000004
【図４】
0005290429.tif 000005