(57)【要約】  【解決手段】  レンダリングされた映像フレームをストアするためのレンダリング済待ち行列を利用し、映像編集及び映像再生する。レンダリング済待ち行列は、映像フレームが、映像ファイルのタイムライン速度より低い速度でレンダリングされるときに生ずる映像グリッチを回避し、正順及び逆順のタイムライン方向の滑らかな映像再生を容易にする。本発明の実施形態はまた、レンダリング済待ち行列にも関連し、さらに映像の滑らかな再生を確実にするためのグラフィックス処理ユニットの使用も含む。【選択図】  図１
2009502050.tif 000002
【特許請求の範囲】
【請求項１】
複数の映像フレームを表示するためのコンピュータに実装された方法であって、
前記映像フレームを映像ファイルから復号するステップと、
前記復号された映像フレームをビデオメモリにストアするステップと、
前記ストアされた映像フレームをレンダリングするステップと、
前記レンダリングされた映像フレームをレンダ―アヘッド（レンダリング済）待ち行列に待機させるステップと、及び
前記レンダリングされた映像フレームをレンダリング済待ち行列から画面に表示するステップと、を含む方法。
【請求項２】
グラフィックス処理ユニットが、ビデオメモリにストアされた前記映像フレームにエフェクトをレンダリングし、前記処理された映像フレームを前記レンダリング済待ち行列に待機させることを特徴とする請求項１記載の方法。
【請求項３】
中央処理ユニットが前記映像フレームを復号し、グラフィックス処理ユニットが、前記レンダリングされた映像フレームを前記画面に表示することを特徴とする請求項１記載の方法。
【請求項４】
さらに、前記映像フレームが前記画面に表示された後、１つ以上の映像フレームを前記レンダリング済待ち行列に保持するステップを含む請求項１記載の方法。
【請求項５】
さらに、前記レンダリング済待ち行列上の少なくとも１つの映像フレームを前記画面に逆順に表示するステップを含む請求項４記載の方法。
【請求項６】
さらに、前記ストアされた映像フレームをレンダリングするステップと、
前記レンダリングされた映像フレームを正順に第２の待ち行列に待機させるステップと、
前記レンダリングされた映像フレームを前記第２の待ち行列から逆順に移動するステップと、
前記レンダリングされた映像フレームを逆順に前記レンダリング済待ち行列に待機させるステップと、
前記レンダリングされた映像フレームを前記レンダリング済待ち行列から前記画面に逆順に表示するステップと、を含む請求項１記載の方法。
【請求項７】
映像フレームをレンダリングし、前記レンダリング済待ち行列に追加する速度が、前記フレームを前記画面に表示する速度を上回ることを特徴とする請求項１記載の方法。
【請求項８】
前記レンダリング済待ち行列が、少なくとも３つの映像フレームを含むことを特徴とする請求項１記載の方法。
【請求項９】
前記待ち行列が前記レンダリングされた映像フレームをストアするメモリバッファを含み、更に、
使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するステップと、
レンダリングされた映像フレームが画面に表示された後、前記レンダリング済待ち行列のメモリバッファからそれを削除するステップと、
映像フレームの割り当てのためにメモリバッファを使用可能にするステップと、
前記レンダリング済待ち行列の使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するステップを含む請求項１記載の方法。
【請求項１０】
１つ以上のコンピュータ可読メディアが、請求項１記載のコンピュータ実行可能な方法を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項１記載の方法。
【請求項１１】
映像ファイル、ビデオメモリ、画面、中央処理ユニット及びグラフィックス処理ユニットを有する、映像を表示するためのシステムであって、
レンダリングされた映像フレームを含むレンダリング済待ち行列と、
複数の映像フレームを含む映像ファイルを前記ビデオメモリ内に復号するためのコンピュータ実行可能命令を実行するために構成される前記中央処理ユニットと、
前記ビデオメモリ内の前記映像フレームをレンダリングし、
前記レンダリングされた映像フレームを前記レンダリング済待ち行列に待機させ、及び
前記レンダリングされた映像フレームをレンダリング済待ち行列から画面に表示するためのコンピュータ実行可能命令を実行するように構成される前記グラフィックス処理ユニットと、を含むシステム。
【請求項１２】
前記グラフィックス処理ユニットがさらに、前記映像フレームが前記画面に表示された後、前記映像フレームを前記レンダリング済待ち行列に保持するためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項１１記載のシステム。
【請求項１３】
前記グラフィックス処理ユニットがさらに、前記レンダリング済待ち行列上の少なくとも１つの映像フレームを前記画面に逆順に表示するためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項１１記載のシステム。
【請求項１４】
前記レンダリング済待ち行列が、少なくとも３つの映像フレームを含む請求項１１記載のシステム。
【請求項１５】
前記グラフィックス処理ユニットがさらに、
２つ以上の映像フレームをレンダリングするステップと、
前記レンダリングされた映像フレームを正順に第２の待ち行列に待機させるステップと、
前記レンダリングされた映像フレームを前記第２の待ち行列から逆順に移動するステップと、
前記レンダリングされた映像フレームを前記レンダリング済待ち行列に逆順に待機させるステップと、及び
前記レンダリングされた映像フレームをレンダリング済待ち行列から前記画面に逆順に表示するステップと、
のためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項１１記載のシステム。
【請求項１６】
映像フレームをレンダリングし、前記レンダリング済待ち行列に追加する速度が、前記フレームを前記画面に表示する速度を上回ることを特徴とする請求項１１記載のシステム。
【請求項１７】
前記待ち行列が、前記レンダリングされた映像フレームをストアするメモリバッファを含み、前記グラフィックス処理ユニットがさらに、
使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するステップと、
レンダリングされた映像フレームが前記画面に表示された後、前記レンダリング済待ち行列上のメモリバッファからそれを削除するステップと、
映像フレームの割り当てのために前記メモリバッファを有効にするステップと、及び
前記レンダリング済待ち行列の前記使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するステップと、
のためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項１１記載のシステム。
【請求項１８】
映像フレームを画面に表示するためのコンピュータ実行可能命令を有する１つ以上のコンピュータ可読メディアであって、前記命令が、
複数の映像フレームを映像ファイルから復号し、前記復号された映像フレームをビデオメモリにストアするための命令と、
前記映像フレームをレンダリングするための命令と、
前記レンダリングされた映像フレームをレンダリング済待ち行列に待機させるための命令と、及び
レンダリングされた映像フレームを前記レンダリング済待ち行列から画面に表示するための命令と、を含むことを特徴とするコンピュータ可読メディア。
【請求項１９】
さらに、２つ以上の映像フレームをレンダリングするための命令と、
前記レンダリングされた映像フレームを第２の待ち行列に正順に待機させるための命令と、
前記レンダリングされた映像フレームを前記第２の待ち行列から前記レンダリング済待ち行列に逆順に待機させるための命令と、及び
レンダリングされた映像フレームをレンダリング済待ち行列から前記画面に逆順に表示するための命令を含む請求項１８記載のコンピュータ可読メディア。
【請求項２０】
前記待ち行列が前記レンダリングされた映像フレームをストアするメモリバッファを含み、更に、
使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するための命令と、
レンダリングされた映像フレームが前記画面に表示された後、前記レンダリング済待ち行列のメモリバッファからそれを削除するための命令と、
映像フレームの割り当てのために前記バッファを有効にするための命令と、及び
前記レンダリング済待ち行列の使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するための命令と、を含む請求項１８記載のコンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、映像レンダリングと映像及び音声ファイルの再生に関連する。
具体的に言うと、本発明の実施形態は、映像タイムラインのフレーム速度で、映像と音声ファイルを滑らかにレンダリングし表示するために、グラフィックス待ち行列を利用するシステム及び方法に関連する。
【背景技術】
【０００２】
映像ファイルの滑らかな再生のための一般的な形式規格は、映像タイムラインにおいて毎秒３０個の映像フレームを表示することを含む。映像ファイルを画面に表示し、音声シーケンスをスピーカに出力する前に映像ファイル及び個々の映像フレーム及び音声シーケンスについて発生する処理のため、映像編集処理の間、多くの場合、映像及び音声ファイルを構成する映像フレーム及び音声シーケンスの滑らかな再生が得られるわけではない。
【０００３】
中央処理ユニット（ＣＰＵ）のリソースを必要とする映像編集及び再生において、いくつかの処理が発生する。これらの処理の多くは、ファイルをシークし、第１の映像ファイルをオープンし、復号し、エフェクト（見え方）をファイルの映像フレームにレンダリングし、フレームを画面に表示し、第１の映像ファイルをクローズし、第２の映像ファイルをオープンし、復号することなどを含む「プリロール処理」の一部である。同様に、映像フレームとの同期と同じように、音声ファイルの音声シーケンスの処理もまた、ＣＰＵ処理能力を必要とする。映像及び音声ファイルを滑らかに再生するための１つの映像フレームを表示するのにかかる時間（例えば１秒の１／３０）内に、ＣＰＵは通常、プリロール処理すべての処理を実行できない。その結果、ＣＰＵが必要なプリロール処理の処理を映像タイムラインより低い速度で実行するとき、映像及び音声再生は、途切れがちか又はたどたどしく（すなわちグリッチのように）見える。
【０００４】
映像の逆再生もまた、多くのＣＰＵリソースを必要とする。映像ファイルの順方向再生におけるグリッチに加え、最も圧縮された映像ファイル形式（例えば、ＷＭＶ）の逆再生はリアルタイム（実時間）で実行できない。Ｉ−Ｆｒａｍｅ（Ｉ−フレーム）を基本とする映像ファイルは、一般的な形式の実時間映像フォーマットであり、前のフレームとの差異として映像フレームをストアする。そこで、映像フレームＸを再生するために、まずフレームＸとそれの直前に先行する映像タイムラインのフレーム（例えば、フレームＸ−１）との間における相違を決定しなければならない。したがって、映像の逆再生は、映像ファイルにおいて、前のフレームすべてを先行するキーフレームに復号するためにＣＰＵが必要な処理をするため、ＣＰＵに対する非常に高価な動作となり得る。一旦、復号されると、ＣＰＵにより映像エフェクトをレンダリングしければならず、処理リソースを一層消費する。この処理ために、ＣＰＵが、復号し、レンダリングし、映像フレームを音声シーケンスと同期させ、実時間で映像ファイルを再生することは困難となる。
【０００５】
プリロール処理を処理することに加え、メール受信などのバックグラウンドで発生するスケジュールされているか又はランダムな処理によって、ＣＰＵ処理リソースが消費され得、プリロール処理の処理を実行するのに提供され得るＣＰＵリソースはさらに制限され得る。このように、スケジュールされるか又はランダムな処理がＣＰＵ処理時間をさらに必要とするので、映像再生においてより多くのグリッチが発生し得る。
【０００６】
したがって、これら及び他の不具合のうち、１つ以上の問題を解決するために、正及び逆のタイムライン方向の映像の滑らかな再生のためのシステム及び方法が望まれている。
【発明の開示】
【課題を解決するための手段】
【０００７】
正及び逆双方のタイムライン方向の滑らかな映像の再生を提供することによって公知技術の欠陥を克服する。映像ファイルが復号され、その結果の映像タイムラインが、ビデオメモリに直接保存される。本発明の実施形態は、レンダリング処理の間に、映像フレームエフェクトを処理するグラフィックス処理ユニット（ＧＰＵ）のリソースを利用する。レンダリングされた映像フレームは、ビデオメモリ内のレンダ―アヘッド（render-ahead：レンダリング済）待ち行列にストアされる。その後、フレームをレンダリング済待ち行列から移動され、画面に表示される。
【０００８】
別の特徴において本発明の実施形態は、逆のタイムライン順に映像を滑らかに再生するためのレンダリング済待ち行列及び第２の待ち行列を利用する。映像フレームを、メモリ内に正のタイムライン順に復号し、それらにエフェクトがレンダリングされる。レンダリングされたフレームは、第２の待ち行列にストアされる。第２の待ち行列のフレームはその後、第２の待ち行列から逆順に移動され、レンダリング済待ち行列に割り当てられる。その後、フレームをレンダリング済待ち行列から移動し、逆順のタイムラインで画面に表示する。
【０００９】
あるいはまた本発明は、他の様々な方法と装置を含み得る。
【００１０】
他の特徴を本明細書の以下に一部明らかにし、かつ指摘する。
【００１１】
「発明を実施するための最良の形態」において、さらに後述されるいくつかの概念を紹介するために簡易化された形式でこの概要を提供する。この概要が、請求項記載対象の重要な特色又は本質的な特徴を特定することを意図せず、また援助として請求項記載対象の範囲を決定するときに使用されることも意図しない。
【００１２】
対応する参照文字は、図面を通し、対応する部分を示す。
【発明を実施するための最良の形態】
【００１３】
最初に図１を参照し、本発明を実施できる、映像を表示する方法について例示的な流れ図を提供する。（１０２）において、映像ファイルが中央処理ユニット（ＣＰＵ）によってアクセスされ、（１０４）において、映像フレームのタイムラインシーケンスに復号されるとき、本方法が開始される。一旦復号されると、（１０６）において、ＣＰＵは、ビデオメモリ映像フレームのタイムラインを直接ストアする。一旦、ビデオメモリにおいてグラフィックス処理ユニット（ＧＰＵ）は、映像フレームにアクセスし、（１０８）において、必要とされる任意のエフェクトを処理し、その後、（１１０）において、処理された映像フレームをレンダリング済待ち行列に待機させる。（１１２）において、その後ＧＰＵは、映像タイムラインのフレーム速度でレンダリング済待ち行列から処理映像フレームを移動し、（１１４）において、映像フレームを画面に表示する。
【００１４】
別の実施形態においては、ＣＰＵは、レンダリング済待ち行列から処理映像フレームを移動し、それらを画面上に表示する。
【００１５】
別の実施形態においては、本発明は、映像編集の間、映像及び音声ファイル双方を再生するシステム及び方法を提供する。図２を参照し、本発明を実施できる映像表示及び音声出力の方法に関する例示的な流れ図を提供する。（２０２）において、映像ファイルが中央処理ユニット（ＣＰＵ）によってアクセスされ、（２０４）において、映像フレームのタイムラインシーケンスに復号されるとき、本方法は開始される。一旦復号されると、（２０６）において、ＣＰＵは、映像フレームに関するタイムラインをビデオメモリに直接ストアする。一旦、ビデオメモリにおいて、グラフィックス処理ユニット（ＧＰＵ）が、映像フレームにアクセスし、（２０８）において、必要とされる任意のエフェクトを処理し、その後、（２１０）において、処理された映像フレームをレンダリング済待ち行列へ待機させる。
【００１６】
本方法はまた、映像ファイルに関連した音声ファイルの処理、待機、同期も提供する。
（２１４）において、音声ファイルは、中央処理ユニット（ＣＰＵ）によってアクセスされ、（２１６）において、一連の音声シーケンスに復号される。一旦、復号されると、（２１８）において、ＣＰＵは音声シーケンスをメモリ直接ストアする。（２２０）において、一旦、メモリ内で音声シーケンスは、音声待ち行列に待機される。
【００１７】
（２１２）において、ＣＰＵは、映像タイムラインのフレーム速度で処理映像フレームをレンダリング済待ち行列から移動するようにＧＰＵに命令する。ＧＰＵが負荷の大きい画素処理をする間、ＣＰＵは本処理を開始する。（２２２）において、ＣＰＵは、音声シーケンスを音声待ち行列から移動する。（２２４）において、映像フレームは音声シーケンスと同期し、（２２６）において、映像フレームが画面に表示され、音声シーケンスがスピーカへ出力される。
【００１８】
別の実施形態においては、ＣＰＵは、レンダリング済待ち行列から処理映像フレームを移動し、音声待ち行列から音声シーケンスを移動し、映像フレームを音声シーケンスと同期させ、映像フレームを画面に表示し、音声シーケンスをスピーカに出力する。
レンダリング済待ち行列
本発明は、レンダリング済待ち行列を利用することによって、映像ファイル再生の間、グリッチをもたらす公知技術の欠陥を克服する。レンダリング済待ち行列は、ビデオメモリにおいて作成され、既にレンダリング済の映像エフェクトを有する映像フレームを含む。映像フレームをレンダリング済待ち行列から取得し、映像タイムラインのフレーム速度で画面に表示する。映像フレームは、映像タイムラインの再生速度を超える速度でレンダリング済待ち行列に追加される。また、映像タイムラインが一時停止（ポーズ）された状態にあっても、待ち行列に生成される映像数が許容される限り、映像フレームを待ち行列に追加できる。一時停止された状態において映像再生を開始するので、待ち行列は、常に再生開始時の映像フレームを含む。
【００１９】
待ち行列にフレームを加える平均速度が、映像タイムラインの速度を上回るので、待ち行列は、前述のＣＰＵのランダムなバックグラウンド処理（例えば、ファイルの切り換えなどの内部イベント、ディスク又はＣＰＵリソースを使用する別の処理などの外部イベント）のような他のどんな入力もできず、満杯のままである。したがって、映像の再生の間、レンダリングされた映像フレームは、レンダリング済待ち行列から絶え間なくアクセスされ、タイムラインのフレーム速度で表示し、滑らかな映像の再生を提供する。
【００２０】
ＣＰＵ処理リソースを消費する処理が発生する場合、待ち行列に待機させられたフレームすべてが表示されるまで、レンダリング済待ち行列によって滑らかな映像の再生ができる。レンダリング済待ち行列すべての映像フレームを表示する前にＣＰＵ処理リソースを必要とする処理が停止した場合、ＣＰＵは、映像タイムラインを上回る速度で映像フレームをレンダリング済待ち行列に補充するために、映像処理を再開でき、連続した滑らかな映像再生が可能となる。
【００２１】
ＣＰＵリソースが映像編集処理の時に消費されるときもまた、レンダリング済待ち行列によって映像の滑らかな再生ができる。例えば、映像フレームを表示するのに必要な期間、一時的にメディアを圧縮したフォーマットのファイルをシークすることは、通常実行できない。このようにシーク処理が完了するまで、レンダリング済待ち行列に保持された映像フレームを表示することにより、レンダリング済待ち行列によって、映像編集処理は、映像のシーク及び画面への再生を同時にできるようになる。一旦、シーク処理が終了すると、映像フレームが再度、レンダリング済待ち行列に追加される。
【００２２】
図３は、ＣＰＵリソースを必要とする一般的な処理が、レンダリング済待ち行列のフレーム数に与える相対的な影響の例示である。シーク処理のように、多くのＣＰＵリソースを必要とする処理が生ずるとき、シークによってＣＰＵは、フレームをレンダリング済待ち行列に追加することが妨げられるため、ＣＰＵリソースの使用に従って、レンダリング済待ち行列おけるフレーム数が減少し始める。一旦、シーク処理が止まると、ＣＰＵは再びフレームを処理可能となり、それらをレンダリング済待ち行列に追加することができ、ある期間に渡って緩やかな上向き方向の線で表される。着信する電子メールのような軽微な処理を処理するためにＣＰＵリソースが短時間要求される時のようにランダムな処理が、ＣＰＵの「一次的中断」をもたらす時に、レンダリング済待ち行列のサンプルの数は、短時間減少する。一旦、ランダムな処理を終了すると、ＣＰＵは、再びフレームをレンダリング済待ち行列に追加し始め、時間の経過に従って再び上向きの線によって表される。レンダリング済待ち行列おけるフレームすべてが表示される前に、シーク処理、ランダムな処理又はＣＰＵリソースを必要とする他の処理が停止する限り、映像の再生は滑らかである。
しかし、レンダリング済待ち行列におけるフレーム数を再生する時間を上回る期間に渡ってＣＰＵリソースが必要である場合、レンダリング済待ち行列は消費され、映像再生が途切れて見えるようになり、映像グリッチが発生する。
【００２３】
レンダリング済待ち行列のサイズは、映像を編集及び再生するために使用される計算機器のハードウェアの能力に依存する。一実施形態において、レンダリング済待ち行列は、最大３０個の映像フレームを含み、最大１秒の映像タイムラインである。別の実施形態においては、レンダリング済待ち行列は、最大６０個の映像フレームか又は最大２秒の映像タイムラインを含む。別の実施形態においては、レンダリング済待ち行列は、少なくとも３個の映像フレームを含む。別の実施形態においては、レンダリング済待ち行列は、少なくとも５個の映像フレームを含む。
【００２４】
レンダリング済待ち行列におけるフレーム数が、指定された数（例えば、３個のフレーム）を下回る場合、映像の滑らかな再生を続けることを試みるためにバッファサイズを減少（例えば、バッファサイズを６４０×４８０から３２０×２８０に減少）できる。依然として再生が滑らかに表示されない場合、より遅いけれども滑らかな正常な状態でフレームを表示する低速再生のために、タイムライン速度を落とすことができる。
音声待ち行列
レンダリング済待ち行列に加え、本システム及び方法はさらに、音声待ち行列を含むことができる。映像フレーム待ち行列バッファを作成するために利用されるレンダリング済待ち行列と大体同じように、音声待ち行列は、音声ファイルから復号されメモリに割り当てられる音声シーケンスを含む。音声待ち行列を維持することにより、別の処理においてＣＰＵリソースが消費されるとき、音声シーケンスを止める結果とならないような映像ファイルタイムライン速度で、映像フレームと同期するために音声シーケンスを利用できる。
また音声は、同じ位置においてそのソースファイルが読み出されるように、前もって映像と共にレンダリングされる必要がある。音声及び映像が、ファイルにおいて別の場所から読まれる場合、結果として、反応しないか（すなわちハング）又は不十分なディスク性能を引き起こすプログラムになり得る。
グラフィックス処理ユニット
一実施形態においては、ＣＰＵによって実行される多くの前処理を実行するために、ＧＰＵが利用される。この構成においては、コンピュータ装置は、マルチプロセッサとして作用でき、復号された映像と音声ファイルを提供するＣＰＵと、さらに映像フレームへの映像エフェクトを処理し、フレームを待機させ、映像フレームを画面に表示するＧＰＵとの間にパイプライン効果を存続させる。
【００２５】
ＧＰＵを利用することによって、ＣＰＵは、映像フレームと音声シーケンスとを同期させ、音声シーケンスをスピーカに出力するような、他の映像編集処理における処理にリソースを費やすことができる。追加すると、映像のレンダリング、待機及びエフェクト処理の途絶をもたらさずに、ＣＰＵのリソースは、バックグラウンド処理、ファイルの復号及びメール受信処理のようなランダムな処理を実行できる。
【００２６】
このようにＧＰＵによってさらに、映像レンダリング済待ち行列及び音声待ち行列が、映像及び音声ファイルの滑らかな再生のための映像フレーム及び音声シーケンスを確実に含むようにできる。
【００２７】
ＧＰＵによって計算機器はさらに、滑らかな処理が可能となり、さもなければ多くのＣＰＵリソースを消費するＩ−フレームを基本とする映像ファイルの逆再生のような複雑な再生処理が表示可能になる。
逆再生
本発明は、映像フレームを操作するために、レンダリング済待ち行列及び第２の待ち行列を利用し、映像ファイルの逆順の滑らかな再生を可能とする。逆再生は、最初に短期間、第２の待ち行列に映像ファイルを正順に再生し、次に、第２の待ち行列からそれらを逆順に移動し、フレームを画面に逆順に表示する前に、レンダリング済待ち行列にそれらを割り当てることによって達成できる。レンダリング済待ち行列によって、計算機器が、さらなるフレームを取得し、それらの順序を逆にし、逆再生用にそれらをレンダリング済待ち行列に割り当てるといった非常に長い処理を実行する間、フレームをレンダリング済待ち行列から逆順に滑らかに表示することができる。逆再生が停止されるか又は映像ファイルの始まりに達するまで、本処理は繰り返される。
【００２８】
映像ファイルのほとんどは、単純には逆再生できず、むしろ最初に逆再生が発生し得る前に、隣接フレームに対する映像フレームそれぞれを処理することが要求される。前述のように、Ｉ−フレームを基本とする映像ファイルは、実時間の映像フォーマットの一般的な形式であって、一連の基本フレームの映像フレームか又は基本フレームと中間にあるフレームとの間の相違（差分）としてストアされる、中間フレーム間のキーフレームをストアする。このように、映像フレームＸを再生するためには、フレームＸと映像タイムラインにおけるフレームＸと直接先行するフレーム（例えばフレームＸ−１）との相違点を最初に決定しなければならない。したがって、キーフレームが例えば、時間１０及び時間２０において割り当てられていて、時間１５における映像フレームが所望される場合、計算機器は、時間１０におけるキーフレームまで戻り、時間１１におけるフレームと時間１０におけるキーフレームとの間の相違を処理することによって、時間１１におけるフレームを描画しなければならない。時間１２におけるフレームは、時間１１におけるフレームからの相違を追加することによって描画され、時間１５におけるフレームが、時間１４におけるフレームからの相違から取得されるまでその他が続く。
【００２９】
フレームＸの後を表示するため、逆のタイムライン順の映像フレームを取得するために、映像タイムラインにおいて映像フレームＸに先行する映像フレームが割り当てられ、ビデオメモリにロードされる。その後、エフェクトがフレームにレンダリングされ、レンダリングされたフレームは、第２の待ち行列に正のタイムライン方向に追加される。その後、フレームが第２の待ち行列から逆順に移動され、逆のタイムライン方向のレンダリング済待ち行列のフレームＸの直後に追加される。待ち行列にロードされるフレーム数は、使用できるビデオメモリ及びＸ個のフレームを画面に表示するために要求される時間に依存する。この処理は、フレームを画面に逆のタイムライン方向に表示する期間全体にわたって、繰り返される。
【００３０】
図４は、逆のタイムライン方向におけるフレームの再生処理の例示である。フレームが表示されるにしたがって、レンダリング済待ち行列におけるフレーム数は間断なく減少する。フレーム数が減少すると、レンダリング済待ち行列のフレームに直接先行するさらなるフレームが割り当てられ、ビデオメモリにロードされる。その後、エフェクトがフレームにレンダリングされ、フレームが第２の待ち行列に追加される。一旦、特定の数のフレームが第２の待ち行列に追加されると、サンプルが逆のタイムライン順に移動され、レンダリング済待ち行列に追加され、図４がその点における上向きのスパイク線を例示する。その後、本処理は、映像の逆再生が停止されるまで繰り返される。
逆フレームステップ
前述したほとんどの映像ファイルはＩ−フレーム形式のため、逆のタイムライン方向へのフレームステップは、通常、フレームが、逆のタイムライン方向の開始フレームに達するまで正順のタイムライン方向への映像フレームすべての復号を必要とする。また前述したように、シークし、逆のタイムライン方向に映像の次のセグメントを処理し、逆再生のためレンダリング済待ち行列にそれを割り当てる一方で、レンダリング済待ち行列によって、前に表示されたレンダリング済待ち行列のフレームを表示することにより逆のタイムライン方向に滑らかなフレームステップができる。
【００３１】
一実施形態においては、指定された数の映像フレームを画面に表示した後、レンダリング済待ち行列においてそれらを維持する。その後、逆のタイムラインフレームステップにおいて、映像のセグメントが所望されるとき、映像ファイルからフレームをシークすることも復号することも必要としないで、特定のフレーム数が、既にレンダリング済待ち行列に存在し表示に使用できる。例えば、Ｙ個のフレームを表示後、レンダリング済待ち行列においてレンダリング済待ち行列の（Ｙより少ない数の）Ｚ個のフレームが逆のタイムライン方向に表示された後に維持される場合、本発明の方法は、タイムラインにおけるＹ個のフレームに直接先行する映像フレームをシークし、逆のタイムライン方向に最後のＹ個のフレームを表示した後、それらを表示するためにフレームが、レンダリング済待ち行列に逆順に追加される。この実施形態においては、レンダリング済待ち行列は、逆のタイムライン方向で表示するために使用できる待ち行列において、常にＹ〜Ｙ−Ｚ個のフレームを有する。この例においては、Ｙ及びＺは、特定の数の映像フレームを表す変数であり、使用可能なビデオメモリ量及びタイムラインの現在のセクションをレンダリングするのに必要とされるビデオメモリ量に基づく。
メモリマネージャ
レンダリング済待ち行列及び本発明に使用される他の任意の待ち行列を作成し、統合化するためにビデオメモリマネージャを記述する必要がある。６４０×４８０の映像フレームサイズにおいては、映像フレームそれぞれが１．２メガバイト（Ｍｂ）のメモリを必要とする。３２メガバイトのような小さなメモリカードにおいては、バックバッファ、スワップチェーン及びその他のためのメモリ要求などのメモリに対するシステム要求を考慮に入れて、映像フレームをストアするために使用可能な約２０個のバッファがある。２５６メガバイトのカードにおいては、映像フレームをストアするために使用できる約２００個を超える大きなバッファがある。別の処理又はドライバ実装によって必要とされるメモリ容量については計算できないので、それらを使い果たすまで、映像及び音声の再生のために使用可能なバッファ量は決定できない。
【００３２】
ビデオメモリのエラー発生を回避するために、本発明の映像再生処理に必要であるバッファすべてを生成するカスタムメモリマネージャを記述する。バッファ割り当てが失敗する（例えば、ビデオメモリを使い果たすことによってレンダリング済待ち行列にレンダリングされた映像フレームを追加することができない）とき、「メモリ不足」エラーを発生させる代わりに、レンダリング済待ち行列において現在のフレームが移動されるまで、カスタムビデオメモリマネージャは、レンダリングされた映像フレームの割り当てを遅らせる。
フレームが移動されるとき、待ち行列のストレージのために必要であるメモリを再割り当てのためにシステムに返す。その後、カスタムビデオメモリマネージャは、レンダリングされた映像フレームを再割り当てのためにシステムに返されたバッファにストアする。
【００３３】
この自己修正アルゴリズムを利用することによって、レンダリング済待ち行列は、動作するために異なるメモリ量を要求するタイムラインの切換セグメントを扱うことができる。
より少ないビデオメモリを使用するセグメントから切り替わるとき、新しいセグメントを扱うための待ち行列の最大サイズは増加する。代わりに、より多くのビデオメモリを使用するセグメントから切り替わるとき、新しいセグメントを扱うための待ち行列の最大サイズは減少する。例えば、５個のビデオメモリユニットがシステム上にあって、現在の映像セグメントが４個のユニットを必要とする場合、残っている１つのユニットが、待ち行列において使用できる。現在のセグメントが、１個のメモリユニットを必要とする場合、待ち行列は４個のメモリユニットを有する。
【００３４】
カスタムメモリマネージャの一実施形態を以下の例において、さらに詳細に説明する。
【００３５】
図５は、コンピュータ（１３０）形式の汎用計算機器の一例を示す。本発明の一実施形態においては、コンピュータ（１３０）などのコンピュータが、本明細書に例示され記載された他の図において使用するのに適している。コンピュータ（１３０）は、１つ以上のプロセッサ又は処理ユニット（１３２）及びシステムメモリ（１３４）を有する。図示した実施形態において、システムバス（１３６）は、システムメモリ（１３４）を含む様々なシステムコンポーネントとプロセッサ（１３２）とを接続する。バス（１３６）は、メモリバス又はメモリコントローラ、周辺機器用バス、アクセラレートグラフィックスポート及びプロセッサ又は任意の様々なバス構成を使用するローカルバスを含む１つ以上の任意のタイプのバス構成を表す。制限ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ機器に関する標準化団体（ＶＥＳＡ）ローカルバス及びメザニンバスとして知られる周辺機器相互接続（ＰＣＩ）バスを含む。
【００３６】
コンピュータ（１３０）は、通常、少なくともいくつかの形式のコンピュータ可読メディアを有する。コンピュータ可読メディアは、揮発性及び不揮発性双方のメディア、取り外し可能及び取り外し不可能双方のメディアを含み、コンピュータ（１３０）によってアクセスされる任意の使用可能なメディアであり得る。制限ではなく例として、コンピュータ可読メディアは、コンピュータストレージメディア及び通信メディアを含む。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報ストレージに関する任意の方法又は技術で実装された揮発性及び不揮発性の取り外し可能及び取り外し不可能なメディアを含む。例えば、コンピュータストレージメディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスクストレージ、磁気カセット、磁気テープ、ディスクストレージ装置又は他の磁気ストレージ装置、又は所望の情報をストアするため使用されるコンピュータ（１３０）によってアクセスできる任意の他のメディア、を含む。通信メディアは一般に、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波又は別の移送メカニズムのような変調データ信号を具現化したものであり、任意の情報伝達メディアを含んでいる。当業者は変調データ信号に精通しており、変調データ信号は１つ以上の特徴の組を有するか又は信号中の情報を符号化する方法で変更されている。有線ネットワーク又は直接有線接続のようなワイヤードメディア並びに音響、無線（ＲＦ）、赤外線及び他の無線メディアのようなワイヤレスメディアは、通信メディアの例である。前述の任意の組み合わせもまた、コンピュータ可読メディアの範囲内に含まれる。
【００３７】
システムメモリ（１３４）は、取り外し可能及び／又は取り外し不可能、揮発性及び／又は不揮発性メモリの形でコンピュータストレージメディアを含む。図示された実施形態において、システムメモリ（１３４）は、読み出し専用メモリ（ＲＯＭ）（１３８）及びランダムアクセスメモリ（ＲＡＭ）（１４０）を含む。基本的な入力／出力システム（１４２）（ＢＩＯＳ）は、起動中などにコンピュータ（１３０）の内部の要素間で情報を転送するのを支援する基本ルーチンを含んでいて、通常ＲＯＭ（１３８）内にストアされる。ＲＡＭ（１４０）は通常、データ及び／又はプログラムモジュールを含み、それは即座にアクセス可能及び／又は処理装置（１３２）によってその上で現在作動中である。制限ではなく、例として図５は、オペレーティングシステム（１４４）、アプリケーションプログラム（１４６）、他のプログラムモジュール（１４８）及びプログラムデータ（１５０）を示す。
【００３８】
コンピュータ（１３０）はまた、他の取り外し可能／取り外し不可能、揮発性／不揮発性のコンピュータストレージメディアを含み得る。例えば、図５は取り外し不可能、不揮発性の磁気メディアから読み出すか又はそれに書き込むハードディスクドライブ（１５４）を示す。図５はまた、取り外し可能、不揮発性磁気ディスク（１５８）に対して読出す又は書込む磁気ディスクドライブ（１５６）と、及びＣＤ−ＲＯＭ又は別の光メディアのような取り外し可能、不揮発性光ディスク（１６２）に対して読出す又は書込む光ディスクドライブ（１６０）を示す。例示的な動作環境内で使用可能な別の取り外し可能／取り外し不可能、揮発性／不揮発性コンピュータストレージメディアは、限定しないが磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等を含む。ハードディスクドライブ（１５４）及び磁気ディスクドライブ（１５６）及び光ディスクドライブ（１６０）は一般に、インタフェース（１６６）などの取り外し可能メモリインタフェースによって、システムバス（１３６）と接続される。
【００３９】
前述及び図５中に示しているドライブ又は他の大記憶装置及びそれらに関連するコンピュータストレージメディアが、コンピュータ（１３０）に対するコンピュータ可読命令、データ構造、プログラムモジュール及び他のデータのストレージを提供する。例えば図５中、ハードディスクドライブ（１５４）は、オペレーティングシステム（１７０）、アプリケーションプログラム（１７２）、他のプログラムモジュール（１７４）及びプログラムデータ（１７６）をストアするものとして示されている。ここでこれらのコンポーネントは、オペレーティングシステム（１４４）、アプリケーションプログラム（１４５）、他のプログラムモジュール（１４８）、及びプログラムデータ（１５０）と同じか又は異なるかのいずれかであり得ることに留意すべきである。オペレーティングシステム（１７０）、アプリケーションプログラム（１７２）、他のプログラムモジュール（１７４）及びプログラムデータ（１７６）は、最小限それらが異なる複製であることを示すように異なる番号が与えられている。
【００４０】
ユーザは、キーボード（１８０）及びポインティングデバイス（１８２）（例えば、マウス、トラックボール、ペン又はタッチパッド）などの入力装置又はユーザインタフェース選択装置を通してコマンド及び情報をコンピュータ（１３０）に入力できる。（図示しない）別の入力装置は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ又はその他を含むことができる。これらと他の入力装置は、システムバス（１３６）に接続されたユーザ入力インタフェース（１８４）を介して処理ユニット（１３２）と接続されているが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（ＵＳＢ）のような別のインタフェース及びバス構造によって接続され得る。モニタ（１８８）又は別のタイプの表示装置もまた、映像インタフェース（１９０）のようなインタフェースを介しシステムバス（１３６）に接続される。モニタ（１８８）に加えてコンピュータはまた、多くの場合、（図示しない）プリンタ及びスピーカのような他の周辺出力装置を含むことができ、（図示しない）出力周辺インタフェースを通して接続され得る。
【００４１】
コンピュータ（１３０）は、リモートコンピュータ（１９４）などの１台以上のリモートコンピュータと論理的な接続を使用し、ネットワークに接続された環境で動作できる。
リモート・コンピュータ（１９４）は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置又は他の一般的なネットワークのノードがあり得て、コンピュータ（１３０）に対して通常、前述の要素の多くか又はすべてを含む。図５に示された論理的な接続は、ローカルエリアネットワーク（ＬＡＮ）（１９６）及び広域ネットワーク（ＷＡＮ）（１９８）を含んでいるが、また他のネットワークも含み得る。ＬＡＮ（１３６）及び／又はＷＡＮ（１３８）は、有線ネットワーク、ワイヤレスネットワーク、それらの組み合わせなどがあり得る。前記ネットワーク環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット及びグローバルなコンピュータネットワーク（例えば、インターネット）において一般的である。
【００４２】
ローカルエリアネットワーク環境において使用されるとき、コンピュータ（１３０）は、ネットワークインターフェース又はアダプタ（１８６）を通し、ＬＡＮ（１９６）と接続される。ＷＡＮネットワーク環境において使用されるとき、コンピュータ（１３０）は通常、インターネットのようなＷＡＮ（１９８）の上で通信を確立するためのモデム（１７８）又は他の手段を含む。内部か又は外部であり得るモデム（１７８）は、ユーザ入力インタフェース（１８４）、又は他の適切な手段を介し、システムバス（１３６）と接続し得る。ネットワークと接続された環境においては、コンピュータ（１３０）か又はその部分に対して表示されたプログラムモジュールは、リモートメモリストレージ装置にストアすることができる。制限ではなく例として、図５は、メモリ機器に常駐するリモートアプリケーションプログラム（１９２）を示す。示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを設立する別の手段を使用できる。
【００４３】
一般に、コンピュータ（１３０）のデータプロセッサは、様々なコンピュータ可読ストレージメディアにおいて、異なる時間にストアされるコンピュータ命令によってプログラムされる。プログラム及びオペレーティングシステムは通常、例えば、フロッピー（登録商標）ディスク又はＣＤ−ＲＯＭおいて配布される。それらは、そこからコンピュータの補助記憶装置にインストールされるか又はロードされる。実行時、それらは少なくとも一部が、コンピュータの主電子メモリにロードされる。マイクロプロセッサ又は他のデータ処理装置に関連し、後述するステップを実施するための命令又はプログラムをそのようなメディアが含むとき、本明細書に記載された発明は、これら及び他の様々なタイプのコンピュータ可読記憶メディアを含む。本明細書に記載された方法及び技法にしたがったプログラムがされるとき、本発明はまた、コンピュータ自体も含む。
【００４４】
図示する目的のために、プログラム及びオペレーティングシステムなどの他の実行可能プログラムの部品を個々のブロックとして本明細書に例示する。しかし、そのようなプログラム及びコンポーネントは、様々な時にコンピュータの異なるストレージコンポーネントに存在し、コンピュータのデータ処理装置（単数又は複数）によって実行されることが認められる。
【００４５】
コンピュータ（１３０）を含む例示的な計算機システム環境に関連し説明したが、本発明は、他の多くの汎用目的又は特定目的の計算機システム環境又は構成を伴って動作できる。本発明の使用の範囲又は機能に関し、計算器システム環境がいかなる制限も示すことを意図しない。さらに、例示的な操作環境において例示されたコンポーネントの任意の１つ又は組み合わせに関連していかなる依存性又は要件を有するとして、計算機システム環境を解釈するべきでない。本発明を用いて使用に適し得る周知の計算器システム、環境及び／又は構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家電、携帯電話、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、前述のシステム又は装置のうち、いずれかを含む分散計算器環境その他を含むが、これらに限定されない。
【００４６】
１つ以上のコンピュータ又は他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令に関する一般的なコンテキストで本発明を説明できる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント及び特定のタスクを実行するか又は特定の抽象データ型を実装するデータ構造を含むが、これらに限定されない。また、通信ネットワークを通しリンクされるリモート処理装置によって、タスクを実行する分散計算器環境において本発明は実施できる。分散計算器環境においては、メモリストレージ装置を含むローカル及びリモートのコンピュータストレージメディア双方にプログラムモジュールを割り当てることができる。
【００４７】
ソフトウェアアーキテクチャのコンテキストにおけるインタフェースは、ソフトウェアモジュール、コンポーネント、コード部又はコンピュータ実行可能命令の他のシーケンスを含む。本インタフェースは、例えば、第１のモジュールを代表する計算タスクを実行するための第２のモジュールにアクセスする第１のモジュールを含む。第１及び第２のモジュールは、一例において、オペレーティングシステムによって提供されるようなコンポーネントオブジェクトモデル（ＣＯＭ）インタフェース、（例えば、ピアツーピアアプリケーション通信）及び（例えば、ウェブサービス間の通信向けの）エクステンシブルマークアップランゲージメタデータ交換形式（ＸＭＩ）インタフェースアプリケーションプログラミングインターフェース（ＡＰＩ）を含む。
【００４８】
本インタフェースは、Ｊａｖａ（登録商標）２プラットホームエンタープライズ版（Ｊ２ＥＥ）のような密結合の同期実装、ＣＯＭ又は分散ＣＯＭ（ＤＣＯＭ）の例であり得る。代替又は追加として、本インタフェースは、（例えば、シンプルオブジェクトアクセスプロトコルを使用する）Ｗｅｂサービスのような疎結合の非同期実装であり得る。一般に、本インタフェースは、以下、密結合、疎結合、同期及び非同期の特性の任意の組み合わせを含む。
さらに、本インタフェースは、標準のプロトコル、固有のプロトコル又は標準及び固有のプロトコルの任意の組み合わせに従うことができる。
【００４９】
インタフェースはすべて、単一のインタフェースの一部か、又は本明細書に記載された別々のインタフェース又はその任意の組み合わせとしても実施できる。本インタフェースは、機能を提供するためにローカル又リモートで実行できる。さらに、本インタフェースは、例示された又は本明細書に記載されたものに追加されるか又はより少ない機能を含むことができる。
【実施例】
【００５０】
以下の例はさらに、本発明の特徴を例示する。
例−メモリ管理
この例は、前述したようなカスタムビデオメモリマネージャによるビデオメモリのバッファへの映像フレーム割り当ての使用を例示する。この例において、ビデオカードは、Ａ〜Ｊにラベル付けられたメモリの十（１０）個の映像バッファを含む。例示的な映像編集は、２つの映像タイムライン及びその２つの映像の間に挿入される１つの遷移を伴う。映像編集処理の間、映像それぞれは２個の作業バッファを必要とし、遷移は、編集処理において映像フレーム及び遷移の操作において使用される１個の作業バッファを必要とする。
【００５１】
図６は映像タイムラインの描写であって、映像タイムラインにおいて、映像１は映像２へ遷移する。タイムライン下で識別されるワーキングセットは、映像フレームを操作して遷移するために必要な作業バッファの数を示す。タイムラインの最初に、映像１の映像フレームを処理し表示するために、２個の作業バッファ（バッファＡ及びＢ）が必要である。
したがって、映像１の映像フレームをレンダリング済待ち行列にストアするために、８個のバッファを使用できる。
【００５２】
映像１及び映像２の間の遷移の間、合計５個の作業バッファが必要であって、２個の作業バッファは、映像１を処理し表示するために、１個の作業バッファは遷移を処理するために、２個の作業バッファは、映像２を処理し表示するために必要である。この時点において、映像フレームをレンダリング済待ち行列にストアするためにバッファ５個だけを使用できる。
【００５３】
一旦、映像２だけが処理され、表示されている時点に続いてタイムラインは、２個の作業バッファだけが必要となる。このように従来と同様、映像２の映像フレームをレンダリング済待ち行列にストアするために８個のバッファを使用できる。
【００５４】
図７Ａは、映像１のフレーム１が表示される前であって、映像１のフレーム８がレンダリングされ、レンダリング済待ち行列に待機させた後のレンダリング済待ち行列の図である。バッファＡ及びＢは、映像１のためのバッファを扱っていて、バッファＣ〜Ｊは、映像フレーム１〜８をストアしているので、バッファすべてが割り当てられ、１個のフレームがレンダリング済待ち行列から移動され、映像フレームをストアするために使用できるまでバッファにいかなる追加の割り当てもできない。文字は、映像フレームをストア中のバッファを示し、数字は、レンダリング済待ち行列においてストアされている映像フレーム番号である。
【００５５】
図７Ｂは、映像１のフレーム１が表示され、待ち行列から移動された後の、別の映像フレームをストアするためにバッファＣを解放しているレンダリング済待ち行列の図である。
【００５６】
図７Ｃは、映像１の映像フレーム９が復号され、レンダリングされ、バッファＣへ割り当てた後のレンダリング済待ち行列の図である。
【００５７】
図７Ｄは、映像１のフレーム２が表示され、待ち行列から移動された後の、別の映像フレームの割り当てのためにバッファＤを解放しているレンダリング済待ち行列の図である
映像１は１００個の映像フレームを含む。図７Ｅは、映像１の映像フレーム（１００）を復号し、レンダリングし、バッファＪに割り当てられた後のレンダリング済待ち行列の図である。前述のように、遷移は１個の作業バッファを必要とし、映像２は２個の作業バッファを必要とする。このように、映像１のフレーム（１００）が、レンダリング済待ち行列において待機させられた後、遷移及び映像２が処理され得る前に、合計５個の作業バッファが必要である。
【００５８】
図７Ｆは、映像１のフレーム（９６）が表示され、待ち行列から移動された後のレンダリング済待ち行列の図である。バッファＣ、Ｄ、Ｅ及びＦは、遷移及び映像２を処理するための作業バッファとして使用するために解放される。
【００５９】
図７Ｇは、映像フレーム（１０１）が丁度復号され、レンダリングされ、バッファＦへ割り当てたときのレンダリング済待ち行列の図である。バッファＡ及びＢは、依然として映像１（フレーム９７〜１００）のための作業バッファであり、バッファＣは、遷移のための作業バッファであり、バッファＤ及びＥは、映像２（フレーム１０１）のための作業バッファである。映像２のフレーム（１０１）がレンダリング済待ち行列へ待機させられた後、バッファＡ、Ｂ、及びＣが、映像１と遷移のために作業バッファとしてもはや必要とされないとき、それらがシステムに返される。２個の作業バッファだけがその後、映像２を処理するために必要であり、その結果、合計８個のバッファ（例えば、バッファＡ、Ｂ、Ｃ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ）が、映像２映像フレームを待機させるためにレンダリング済待ち行列によって利用できるようにする。
【００６０】
図７Ｈは、映像１のフレーム（９７）が表示される前、映像２のフレーム（１０４）がレンダリングされ、レンダリング済待ち行列に待機させた後のレンダリング済待ち行列の図である。このように８個のバッファが、映像２の処理の間、映像フレームをストアするのに使用される。
【００６１】
別の方法が指定されない場合、本明細書に例示され記載された実行の順序又は方法の性能は、本質的ではない。すなわち、特に記載していない限り、本方法の原理を順不同で実行でき、本明細書に開示されたものより多少の原理を含むことができる。例えば本発明の範囲の中で、特定の原理を、別の原理の前に、同時に又は後に、実施又は実行することが想定される。
【００６２】
本発明の原理又はその実施形態（単数又は複数）を導入するとき、冠詞「１つの」、「一」、「その」及び「前記」は、１つ以上の原理があることを意味する意図がある。「からなる」、「含む」及び「有する」という用語は包括的であり、記載された原理以外の追加の原理があってもよいことを意味する意図がある。
【００６３】
上記を考慮すると、本発明のいくつかの目的が達成され、他の有益な結果に達したのがわかるであろう。
【００６４】
本発明の範囲から逸脱せずに、前記システム及び方法において様々な変更を行うことができるように、前記説明に含まれ、添付の図面に示されたすべての件が、制限された意味として解釈されるのではなく、例示的に解釈されることを意図する。
【図面の簡単な説明】
【００６５】
【図１】本発明を実施可能にする映像を表示する方法の例示的な流れ図である。
【図２】本発明を実施可能にする映像を表示し、音声を出力する方法の例示的な流れ図である。
【図３】ＣＰＵリソースを必要とする一般的な処理が、レンダリング済待ち行列のフレーム数に与える相対的な影響の例示である。
【図４】逆のタイムライン方向へのフレーム再生処理の図である。
【図５】本発明を実施可能にする適切な計算機システム環境のうち一例を例示するブロック図である。
【図６】映像タイムラインの描写であって、映像１は、映像タイムライン上の映像２に遷移する。
【図７Ａ】映像１のフレーム１が表示される前であって、映像１のフレーム８がレンダリングされ、レンダリング済待ち行列へ待機させられた後のレンダリング済待ち行列の図である。
【図７Ｂ】映像１のフレーム１が表示され、待ち行列から移動され、その結果、別の映像フレームの割り当てのためにバッファＣを解放した後のレンダリング済待ち行列の図である。
【図７Ｃ】映像１の映像フレーム９が復号され、レンダリングされ、バッファＣへ割り当てた後のレンダリング済待ち行列の図である。
【図７Ｄ】映像１のフレーム２が表示され、待ち行列から移動された後、その結果、別の映像フレームの割り当てのために、バッファＤを解放したレンダリング済待ち行列の図である。
【図７Ｆ】映像１のフレーム（９６）が表示され、待ち行列から移動された後のレンダリング済待ち行列の図である。
【図７Ｇ】映像フレーム（１０１）がちょうど復号され、レンダリングされ、バッファＦへ割り当てられたときのレンダリング済待ち行列の図である。
【図７Ｈ】映像１のフレーム（９７）が表示される前であって、映像２のフレーム（１０４）がレンダリングされレンダリング済待ち行列へ待機させられた後のレンダリング済待ち行列の図である。
【図１】
2009502050.tif 000003
【図２】
2009502050.tif 000004
【図３】
2009502050.tif 000005
【図４】
2009502050.tif 000006
【図５】
2009502050.tif 000007
【図６】
2009502050.tif 000008
【図７Ａ】
2009502050.tif 000009
【図７Ｂ】
2009502050.tif 000010
【図７Ｃ】
2009502050.tif 000011
【図７Ｄ】
2009502050.tif 000012
【図７Ｅ】
2009502050.tif 000013
【図７Ｆ】
2009502050.tif 000014
【図７Ｇ】
2009502050.tif 000015
【図７Ｈ】
2009502050.tif 000016