JP2009502050A - レンダリング済待ち行列を伴うgpuタイムライン - Google Patents

レンダリング済待ち行列を伴うgpuタイムライン Download PDF

Info

Publication number
JP2009502050A
JP2009502050A JP2008520237A JP2008520237A JP2009502050A JP 2009502050 A JP2009502050 A JP 2009502050A JP 2008520237 A JP2008520237 A JP 2008520237A JP 2008520237 A JP2008520237 A JP 2008520237A JP 2009502050 A JP2009502050 A JP 2009502050A
Authority
JP
Japan
Prior art keywords
rendered
video
queue
frames
video frames
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008520237A
Other languages
English (en)
Inventor
ウォーカー,ブライアン・ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009502050A publication Critical patent/JP2009502050A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/87Regeneration of colour television signals
    • H04N9/877Regeneration of colour television signals by assembling picture element blocks in an intermediate memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/92Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/775Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/781Television signal recording using magnetic recording on disks or drums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/782Television signal recording using magnetic recording on tape
    • H04N5/783Adaptations for reproducing at a rate different from the recording rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/907Television signal recording using static stores, e.g. storage tubes or semiconductor memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction

Abstract

【解決手段】
レンダリングされた映像フレームをストアするためのレンダリング済待ち行列を利用し、映像編集及び映像再生する。レンダリング済待ち行列は、映像フレームが、映像ファイルのタイムライン速度より低い速度でレンダリングされるときに生ずる映像グリッチを回避し、正順及び逆順のタイムライン方向の滑らかな映像再生を容易にする。本発明の実施形態はまた、レンダリング済待ち行列にも関連し、さらに映像の滑らかな再生を確実にするためのグラフィックス処理ユニットの使用も含む。
【選択図】 図1

Description

本発明の実施形態は、映像レンダリングと映像及び音声ファイルの再生に関連する。
具体的に言うと、本発明の実施形態は、映像タイムラインのフレーム速度で、映像と音声ファイルを滑らかにレンダリングし表示するために、グラフィックス待ち行列を利用するシステム及び方法に関連する。
映像ファイルの滑らかな再生のための一般的な形式規格は、映像タイムラインにおいて毎秒30個の映像フレームを表示することを含む。映像ファイルを画面に表示し、音声シーケンスをスピーカに出力する前に映像ファイル及び個々の映像フレーム及び音声シーケンスについて発生する処理のため、映像編集処理の間、多くの場合、映像及び音声ファイルを構成する映像フレーム及び音声シーケンスの滑らかな再生が得られるわけではない。
中央処理ユニット(CPU)のリソースを必要とする映像編集及び再生において、いくつかの処理が発生する。これらの処理の多くは、ファイルをシークし、第1の映像ファイルをオープンし、復号し、エフェクト(見え方)をファイルの映像フレームにレンダリングし、フレームを画面に表示し、第1の映像ファイルをクローズし、第2の映像ファイルをオープンし、復号することなどを含む「プリロール処理」の一部である。同様に、映像フレームとの同期と同じように、音声ファイルの音声シーケンスの処理もまた、CPU処理能力を必要とする。映像及び音声ファイルを滑らかに再生するための1つの映像フレームを表示するのにかかる時間(例えば1秒の1/30)内に、CPUは通常、プリロール処理すべての処理を実行できない。その結果、CPUが必要なプリロール処理の処理を映像タイムラインより低い速度で実行するとき、映像及び音声再生は、途切れがちか又はたどたどしく(すなわちグリッチのように)見える。
映像の逆再生もまた、多くのCPUリソースを必要とする。映像ファイルの順方向再生におけるグリッチに加え、最も圧縮された映像ファイル形式(例えば、WMV)の逆再生はリアルタイム(実時間)で実行できない。I−Frame(I−フレーム)を基本とする映像ファイルは、一般的な形式の実時間映像フォーマットであり、前のフレームとの差異として映像フレームをストアする。そこで、映像フレームXを再生するために、まずフレームXとそれの直前に先行する映像タイムラインのフレーム(例えば、フレームX−1)との間における相違を決定しなければならない。したがって、映像の逆再生は、映像ファイルにおいて、前のフレームすべてを先行するキーフレームに復号するためにCPUが必要な処理をするため、CPUに対する非常に高価な動作となり得る。一旦、復号されると、CPUにより映像エフェクトをレンダリングしければならず、処理リソースを一層消費する。この処理ために、CPUが、復号し、レンダリングし、映像フレームを音声シーケンスと同期させ、実時間で映像ファイルを再生することは困難となる。
プリロール処理を処理することに加え、メール受信などのバックグラウンドで発生するスケジュールされているか又はランダムな処理によって、CPU処理リソースが消費され得、プリロール処理の処理を実行するのに提供され得るCPUリソースはさらに制限され得る。このように、スケジュールされるか又はランダムな処理がCPU処理時間をさらに必要とするので、映像再生においてより多くのグリッチが発生し得る。
したがって、これら及び他の不具合のうち、1つ以上の問題を解決するために、正及び逆のタイムライン方向の映像の滑らかな再生のためのシステム及び方法が望まれている。
正及び逆双方のタイムライン方向の滑らかな映像の再生を提供することによって公知技術の欠陥を克服する。映像ファイルが復号され、その結果の映像タイムラインが、ビデオメモリに直接保存される。本発明の実施形態は、レンダリング処理の間に、映像フレームエフェクトを処理するグラフィックス処理ユニット(GPU)のリソースを利用する。レンダリングされた映像フレームは、ビデオメモリ内のレンダ―アヘッド(render-ahead:レンダリング済)待ち行列にストアされる。その後、フレームをレンダリング済待ち行列から移動され、画面に表示される。
別の特徴において本発明の実施形態は、逆のタイムライン順に映像を滑らかに再生するためのレンダリング済待ち行列及び第2の待ち行列を利用する。映像フレームを、メモリ内に正のタイムライン順に復号し、それらにエフェクトがレンダリングされる。レンダリングされたフレームは、第2の待ち行列にストアされる。第2の待ち行列のフレームはその後、第2の待ち行列から逆順に移動され、レンダリング済待ち行列に割り当てられる。その後、フレームをレンダリング済待ち行列から移動し、逆順のタイムラインで画面に表示する。
あるいはまた本発明は、他の様々な方法と装置を含み得る。
他の特徴を本明細書の以下に一部明らかにし、かつ指摘する。
「発明を実施するための最良の形態」において、さらに後述されるいくつかの概念を紹介するために簡易化された形式でこの概要を提供する。この概要が、請求項記載対象の重要な特色又は本質的な特徴を特定することを意図せず、また援助として請求項記載対象の範囲を決定するときに使用されることも意図しない。
対応する参照文字は、図面を通し、対応する部分を示す。
最初に図1を参照し、本発明を実施できる、映像を表示する方法について例示的な流れ図を提供する。(102)において、映像ファイルが中央処理ユニット(CPU)によってアクセスされ、(104)において、映像フレームのタイムラインシーケンスに復号されるとき、本方法が開始される。一旦復号されると、(106)において、CPUは、ビデオメモリ映像フレームのタイムラインを直接ストアする。一旦、ビデオメモリにおいてグラフィックス処理ユニット(GPU)は、映像フレームにアクセスし、(108)において、必要とされる任意のエフェクトを処理し、その後、(110)において、処理された映像フレームをレンダリング済待ち行列に待機させる。(112)において、その後GPUは、映像タイムラインのフレーム速度でレンダリング済待ち行列から処理映像フレームを移動し、(114)において、映像フレームを画面に表示する。
別の実施形態においては、CPUは、レンダリング済待ち行列から処理映像フレームを移動し、それらを画面上に表示する。
別の実施形態においては、本発明は、映像編集の間、映像及び音声ファイル双方を再生するシステム及び方法を提供する。図2を参照し、本発明を実施できる映像表示及び音声出力の方法に関する例示的な流れ図を提供する。(202)において、映像ファイルが中央処理ユニット(CPU)によってアクセスされ、(204)において、映像フレームのタイムラインシーケンスに復号されるとき、本方法は開始される。一旦復号されると、(206)において、CPUは、映像フレームに関するタイムラインをビデオメモリに直接ストアする。一旦、ビデオメモリにおいて、グラフィックス処理ユニット(GPU)が、映像フレームにアクセスし、(208)において、必要とされる任意のエフェクトを処理し、その後、(210)において、処理された映像フレームをレンダリング済待ち行列へ待機させる。
本方法はまた、映像ファイルに関連した音声ファイルの処理、待機、同期も提供する。
(214)において、音声ファイルは、中央処理ユニット(CPU)によってアクセスされ、(216)において、一連の音声シーケンスに復号される。一旦、復号されると、(218)において、CPUは音声シーケンスをメモリ直接ストアする。(220)において、一旦、メモリ内で音声シーケンスは、音声待ち行列に待機される。
(212)において、CPUは、映像タイムラインのフレーム速度で処理映像フレームをレンダリング済待ち行列から移動するようにGPUに命令する。GPUが負荷の大きい画素処理をする間、CPUは本処理を開始する。(222)において、CPUは、音声シーケンスを音声待ち行列から移動する。(224)において、映像フレームは音声シーケンスと同期し、(226)において、映像フレームが画面に表示され、音声シーケンスがスピーカへ出力される。
別の実施形態においては、CPUは、レンダリング済待ち行列から処理映像フレームを移動し、音声待ち行列から音声シーケンスを移動し、映像フレームを音声シーケンスと同期させ、映像フレームを画面に表示し、音声シーケンスをスピーカに出力する。
レンダリング済待ち行列
本発明は、レンダリング済待ち行列を利用することによって、映像ファイル再生の間、グリッチをもたらす公知技術の欠陥を克服する。レンダリング済待ち行列は、ビデオメモリにおいて作成され、既にレンダリング済の映像エフェクトを有する映像フレームを含む。映像フレームをレンダリング済待ち行列から取得し、映像タイムラインのフレーム速度で画面に表示する。映像フレームは、映像タイムラインの再生速度を超える速度でレンダリング済待ち行列に追加される。また、映像タイムラインが一時停止(ポーズ)された状態にあっても、待ち行列に生成される映像数が許容される限り、映像フレームを待ち行列に追加できる。一時停止された状態において映像再生を開始するので、待ち行列は、常に再生開始時の映像フレームを含む。
待ち行列にフレームを加える平均速度が、映像タイムラインの速度を上回るので、待ち行列は、前述のCPUのランダムなバックグラウンド処理(例えば、ファイルの切り換えなどの内部イベント、ディスク又はCPUリソースを使用する別の処理などの外部イベント)のような他のどんな入力もできず、満杯のままである。したがって、映像の再生の間、レンダリングされた映像フレームは、レンダリング済待ち行列から絶え間なくアクセスされ、タイムラインのフレーム速度で表示し、滑らかな映像の再生を提供する。
CPU処理リソースを消費する処理が発生する場合、待ち行列に待機させられたフレームすべてが表示されるまで、レンダリング済待ち行列によって滑らかな映像の再生ができる。レンダリング済待ち行列すべての映像フレームを表示する前にCPU処理リソースを必要とする処理が停止した場合、CPUは、映像タイムラインを上回る速度で映像フレームをレンダリング済待ち行列に補充するために、映像処理を再開でき、連続した滑らかな映像再生が可能となる。
CPUリソースが映像編集処理の時に消費されるときもまた、レンダリング済待ち行列によって映像の滑らかな再生ができる。例えば、映像フレームを表示するのに必要な期間、一時的にメディアを圧縮したフォーマットのファイルをシークすることは、通常実行できない。このようにシーク処理が完了するまで、レンダリング済待ち行列に保持された映像フレームを表示することにより、レンダリング済待ち行列によって、映像編集処理は、映像のシーク及び画面への再生を同時にできるようになる。一旦、シーク処理が終了すると、映像フレームが再度、レンダリング済待ち行列に追加される。
図3は、CPUリソースを必要とする一般的な処理が、レンダリング済待ち行列のフレーム数に与える相対的な影響の例示である。シーク処理のように、多くのCPUリソースを必要とする処理が生ずるとき、シークによってCPUは、フレームをレンダリング済待ち行列に追加することが妨げられるため、CPUリソースの使用に従って、レンダリング済待ち行列おけるフレーム数が減少し始める。一旦、シーク処理が止まると、CPUは再びフレームを処理可能となり、それらをレンダリング済待ち行列に追加することができ、ある期間に渡って緩やかな上向き方向の線で表される。着信する電子メールのような軽微な処理を処理するためにCPUリソースが短時間要求される時のようにランダムな処理が、CPUの「一次的中断」をもたらす時に、レンダリング済待ち行列のサンプルの数は、短時間減少する。一旦、ランダムな処理を終了すると、CPUは、再びフレームをレンダリング済待ち行列に追加し始め、時間の経過に従って再び上向きの線によって表される。レンダリング済待ち行列おけるフレームすべてが表示される前に、シーク処理、ランダムな処理又はCPUリソースを必要とする他の処理が停止する限り、映像の再生は滑らかである。
しかし、レンダリング済待ち行列におけるフレーム数を再生する時間を上回る期間に渡ってCPUリソースが必要である場合、レンダリング済待ち行列は消費され、映像再生が途切れて見えるようになり、映像グリッチが発生する。
レンダリング済待ち行列のサイズは、映像を編集及び再生するために使用される計算機器のハードウェアの能力に依存する。一実施形態において、レンダリング済待ち行列は、最大30個の映像フレームを含み、最大1秒の映像タイムラインである。別の実施形態においては、レンダリング済待ち行列は、最大60個の映像フレームか又は最大2秒の映像タイムラインを含む。別の実施形態においては、レンダリング済待ち行列は、少なくとも3個の映像フレームを含む。別の実施形態においては、レンダリング済待ち行列は、少なくとも5個の映像フレームを含む。
レンダリング済待ち行列におけるフレーム数が、指定された数(例えば、3個のフレーム)を下回る場合、映像の滑らかな再生を続けることを試みるためにバッファサイズを減少(例えば、バッファサイズを640×480から320×280に減少)できる。依然として再生が滑らかに表示されない場合、より遅いけれども滑らかな正常な状態でフレームを表示する低速再生のために、タイムライン速度を落とすことができる。
音声待ち行列
レンダリング済待ち行列に加え、本システム及び方法はさらに、音声待ち行列を含むことができる。映像フレーム待ち行列バッファを作成するために利用されるレンダリング済待ち行列と大体同じように、音声待ち行列は、音声ファイルから復号されメモリに割り当てられる音声シーケンスを含む。音声待ち行列を維持することにより、別の処理においてCPUリソースが消費されるとき、音声シーケンスを止める結果とならないような映像ファイルタイムライン速度で、映像フレームと同期するために音声シーケンスを利用できる。
また音声は、同じ位置においてそのソースファイルが読み出されるように、前もって映像と共にレンダリングされる必要がある。音声及び映像が、ファイルにおいて別の場所から読まれる場合、結果として、反応しないか(すなわちハング)又は不十分なディスク性能を引き起こすプログラムになり得る。
グラフィックス処理ユニット
一実施形態においては、CPUによって実行される多くの前処理を実行するために、GPUが利用される。この構成においては、コンピュータ装置は、マルチプロセッサとして作用でき、復号された映像と音声ファイルを提供するCPUと、さらに映像フレームへの映像エフェクトを処理し、フレームを待機させ、映像フレームを画面に表示するGPUとの間にパイプライン効果を存続させる。
GPUを利用することによって、CPUは、映像フレームと音声シーケンスとを同期させ、音声シーケンスをスピーカに出力するような、他の映像編集処理における処理にリソースを費やすことができる。追加すると、映像のレンダリング、待機及びエフェクト処理の途絶をもたらさずに、CPUのリソースは、バックグラウンド処理、ファイルの復号及びメール受信処理のようなランダムな処理を実行できる。
このようにGPUによってさらに、映像レンダリング済待ち行列及び音声待ち行列が、映像及び音声ファイルの滑らかな再生のための映像フレーム及び音声シーケンスを確実に含むようにできる。
GPUによって計算機器はさらに、滑らかな処理が可能となり、さもなければ多くのCPUリソースを消費するI−フレームを基本とする映像ファイルの逆再生のような複雑な再生処理が表示可能になる。
逆再生
本発明は、映像フレームを操作するために、レンダリング済待ち行列及び第2の待ち行列を利用し、映像ファイルの逆順の滑らかな再生を可能とする。逆再生は、最初に短期間、第2の待ち行列に映像ファイルを正順に再生し、次に、第2の待ち行列からそれらを逆順に移動し、フレームを画面に逆順に表示する前に、レンダリング済待ち行列にそれらを割り当てることによって達成できる。レンダリング済待ち行列によって、計算機器が、さらなるフレームを取得し、それらの順序を逆にし、逆再生用にそれらをレンダリング済待ち行列に割り当てるといった非常に長い処理を実行する間、フレームをレンダリング済待ち行列から逆順に滑らかに表示することができる。逆再生が停止されるか又は映像ファイルの始まりに達するまで、本処理は繰り返される。
映像ファイルのほとんどは、単純には逆再生できず、むしろ最初に逆再生が発生し得る前に、隣接フレームに対する映像フレームそれぞれを処理することが要求される。前述のように、I−フレームを基本とする映像ファイルは、実時間の映像フォーマットの一般的な形式であって、一連の基本フレームの映像フレームか又は基本フレームと中間にあるフレームとの間の相違(差分)としてストアされる、中間フレーム間のキーフレームをストアする。このように、映像フレームXを再生するためには、フレームXと映像タイムラインにおけるフレームXと直接先行するフレーム(例えばフレームX−1)との相違点を最初に決定しなければならない。したがって、キーフレームが例えば、時間10及び時間20において割り当てられていて、時間15における映像フレームが所望される場合、計算機器は、時間10におけるキーフレームまで戻り、時間11におけるフレームと時間10におけるキーフレームとの間の相違を処理することによって、時間11におけるフレームを描画しなければならない。時間12におけるフレームは、時間11におけるフレームからの相違を追加することによって描画され、時間15におけるフレームが、時間14におけるフレームからの相違から取得されるまでその他が続く。
フレームXの後を表示するため、逆のタイムライン順の映像フレームを取得するために、映像タイムラインにおいて映像フレームXに先行する映像フレームが割り当てられ、ビデオメモリにロードされる。その後、エフェクトがフレームにレンダリングされ、レンダリングされたフレームは、第2の待ち行列に正のタイムライン方向に追加される。その後、フレームが第2の待ち行列から逆順に移動され、逆のタイムライン方向のレンダリング済待ち行列のフレームXの直後に追加される。待ち行列にロードされるフレーム数は、使用できるビデオメモリ及びX個のフレームを画面に表示するために要求される時間に依存する。この処理は、フレームを画面に逆のタイムライン方向に表示する期間全体にわたって、繰り返される。
図4は、逆のタイムライン方向におけるフレームの再生処理の例示である。フレームが表示されるにしたがって、レンダリング済待ち行列におけるフレーム数は間断なく減少する。フレーム数が減少すると、レンダリング済待ち行列のフレームに直接先行するさらなるフレームが割り当てられ、ビデオメモリにロードされる。その後、エフェクトがフレームにレンダリングされ、フレームが第2の待ち行列に追加される。一旦、特定の数のフレームが第2の待ち行列に追加されると、サンプルが逆のタイムライン順に移動され、レンダリング済待ち行列に追加され、図4がその点における上向きのスパイク線を例示する。その後、本処理は、映像の逆再生が停止されるまで繰り返される。
逆フレームステップ
前述したほとんどの映像ファイルはI−フレーム形式のため、逆のタイムライン方向へのフレームステップは、通常、フレームが、逆のタイムライン方向の開始フレームに達するまで正順のタイムライン方向への映像フレームすべての復号を必要とする。また前述したように、シークし、逆のタイムライン方向に映像の次のセグメントを処理し、逆再生のためレンダリング済待ち行列にそれを割り当てる一方で、レンダリング済待ち行列によって、前に表示されたレンダリング済待ち行列のフレームを表示することにより逆のタイムライン方向に滑らかなフレームステップができる。
一実施形態においては、指定された数の映像フレームを画面に表示した後、レンダリング済待ち行列においてそれらを維持する。その後、逆のタイムラインフレームステップにおいて、映像のセグメントが所望されるとき、映像ファイルからフレームをシークすることも復号することも必要としないで、特定のフレーム数が、既にレンダリング済待ち行列に存在し表示に使用できる。例えば、Y個のフレームを表示後、レンダリング済待ち行列においてレンダリング済待ち行列の(Yより少ない数の)Z個のフレームが逆のタイムライン方向に表示された後に維持される場合、本発明の方法は、タイムラインにおけるY個のフレームに直接先行する映像フレームをシークし、逆のタイムライン方向に最後のY個のフレームを表示した後、それらを表示するためにフレームが、レンダリング済待ち行列に逆順に追加される。この実施形態においては、レンダリング済待ち行列は、逆のタイムライン方向で表示するために使用できる待ち行列において、常にY〜Y−Z個のフレームを有する。この例においては、Y及びZは、特定の数の映像フレームを表す変数であり、使用可能なビデオメモリ量及びタイムラインの現在のセクションをレンダリングするのに必要とされるビデオメモリ量に基づく。
メモリマネージャ
レンダリング済待ち行列及び本発明に使用される他の任意の待ち行列を作成し、統合化するためにビデオメモリマネージャを記述する必要がある。640×480の映像フレームサイズにおいては、映像フレームそれぞれが1.2メガバイト(Mb)のメモリを必要とする。32メガバイトのような小さなメモリカードにおいては、バックバッファ、スワップチェーン及びその他のためのメモリ要求などのメモリに対するシステム要求を考慮に入れて、映像フレームをストアするために使用可能な約20個のバッファがある。256メガバイトのカードにおいては、映像フレームをストアするために使用できる約200個を超える大きなバッファがある。別の処理又はドライバ実装によって必要とされるメモリ容量については計算できないので、それらを使い果たすまで、映像及び音声の再生のために使用可能なバッファ量は決定できない。
ビデオメモリのエラー発生を回避するために、本発明の映像再生処理に必要であるバッファすべてを生成するカスタムメモリマネージャを記述する。バッファ割り当てが失敗する(例えば、ビデオメモリを使い果たすことによってレンダリング済待ち行列にレンダリングされた映像フレームを追加することができない)とき、「メモリ不足」エラーを発生させる代わりに、レンダリング済待ち行列において現在のフレームが移動されるまで、カスタムビデオメモリマネージャは、レンダリングされた映像フレームの割り当てを遅らせる。
フレームが移動されるとき、待ち行列のストレージのために必要であるメモリを再割り当てのためにシステムに返す。その後、カスタムビデオメモリマネージャは、レンダリングされた映像フレームを再割り当てのためにシステムに返されたバッファにストアする。
この自己修正アルゴリズムを利用することによって、レンダリング済待ち行列は、動作するために異なるメモリ量を要求するタイムラインの切換セグメントを扱うことができる。
より少ないビデオメモリを使用するセグメントから切り替わるとき、新しいセグメントを扱うための待ち行列の最大サイズは増加する。代わりに、より多くのビデオメモリを使用するセグメントから切り替わるとき、新しいセグメントを扱うための待ち行列の最大サイズは減少する。例えば、5個のビデオメモリユニットがシステム上にあって、現在の映像セグメントが4個のユニットを必要とする場合、残っている1つのユニットが、待ち行列において使用できる。現在のセグメントが、1個のメモリユニットを必要とする場合、待ち行列は4個のメモリユニットを有する。
カスタムメモリマネージャの一実施形態を以下の例において、さらに詳細に説明する。
図5は、コンピュータ(130)形式の汎用計算機器の一例を示す。本発明の一実施形態においては、コンピュータ(130)などのコンピュータが、本明細書に例示され記載された他の図において使用するのに適している。コンピュータ(130)は、1つ以上のプロセッサ又は処理ユニット(132)及びシステムメモリ(134)を有する。図示した実施形態において、システムバス(136)は、システムメモリ(134)を含む様々なシステムコンポーネントとプロセッサ(132)とを接続する。バス(136)は、メモリバス又はメモリコントローラ、周辺機器用バス、アクセラレートグラフィックスポート及びプロセッサ又は任意の様々なバス構成を使用するローカルバスを含む1つ以上の任意のタイプのバス構成を表す。制限ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ機器に関する標準化団体(VESA)ローカルバス及びメザニンバスとして知られる周辺機器相互接続(PCI)バスを含む。
コンピュータ(130)は、通常、少なくともいくつかの形式のコンピュータ可読メディアを有する。コンピュータ可読メディアは、揮発性及び不揮発性双方のメディア、取り外し可能及び取り外し不可能双方のメディアを含み、コンピュータ(130)によってアクセスされる任意の使用可能なメディアであり得る。制限ではなく例として、コンピュータ可読メディアは、コンピュータストレージメディア及び通信メディアを含む。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報ストレージに関する任意の方法又は技術で実装された揮発性及び不揮発性の取り外し可能及び取り外し不可能なメディアを含む。例えば、コンピュータストレージメディアは、RAM、ROM、EEPROM、フラッシュメモリ、他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)又は他の光ディスクストレージ、磁気カセット、磁気テープ、ディスクストレージ装置又は他の磁気ストレージ装置、又は所望の情報をストアするため使用されるコンピュータ(130)によってアクセスできる任意の他のメディア、を含む。通信メディアは一般に、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波又は別の移送メカニズムのような変調データ信号を具現化したものであり、任意の情報伝達メディアを含んでいる。当業者は変調データ信号に精通しており、変調データ信号は1つ以上の特徴の組を有するか又は信号中の情報を符号化する方法で変更されている。有線ネットワーク又は直接有線接続のようなワイヤードメディア並びに音響、無線(RF)、赤外線及び他の無線メディアのようなワイヤレスメディアは、通信メディアの例である。前述の任意の組み合わせもまた、コンピュータ可読メディアの範囲内に含まれる。
システムメモリ(134)は、取り外し可能及び/又は取り外し不可能、揮発性及び/又は不揮発性メモリの形でコンピュータストレージメディアを含む。図示された実施形態において、システムメモリ(134)は、読み出し専用メモリ(ROM)(138)及びランダムアクセスメモリ(RAM)(140)を含む。基本的な入力/出力システム(142)(BIOS)は、起動中などにコンピュータ(130)の内部の要素間で情報を転送するのを支援する基本ルーチンを含んでいて、通常ROM(138)内にストアされる。RAM(140)は通常、データ及び/又はプログラムモジュールを含み、それは即座にアクセス可能及び/又は処理装置(132)によってその上で現在作動中である。制限ではなく、例として図5は、オペレーティングシステム(144)、アプリケーションプログラム(146)、他のプログラムモジュール(148)及びプログラムデータ(150)を示す。
コンピュータ(130)はまた、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータストレージメディアを含み得る。例えば、図5は取り外し不可能、不揮発性の磁気メディアから読み出すか又はそれに書き込むハードディスクドライブ(154)を示す。図5はまた、取り外し可能、不揮発性磁気ディスク(158)に対して読出す又は書込む磁気ディスクドライブ(156)と、及びCD−ROM又は別の光メディアのような取り外し可能、不揮発性光ディスク(162)に対して読出す又は書込む光ディスクドライブ(160)を示す。例示的な動作環境内で使用可能な別の取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータストレージメディアは、限定しないが磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROM等を含む。ハードディスクドライブ(154)及び磁気ディスクドライブ(156)及び光ディスクドライブ(160)は一般に、インタフェース(166)などの取り外し可能メモリインタフェースによって、システムバス(136)と接続される。
前述及び図5中に示しているドライブ又は他の大記憶装置及びそれらに関連するコンピュータストレージメディアが、コンピュータ(130)に対するコンピュータ可読命令、データ構造、プログラムモジュール及び他のデータのストレージを提供する。例えば図5中、ハードディスクドライブ(154)は、オペレーティングシステム(170)、アプリケーションプログラム(172)、他のプログラムモジュール(174)及びプログラムデータ(176)をストアするものとして示されている。ここでこれらのコンポーネントは、オペレーティングシステム(144)、アプリケーションプログラム(145)、他のプログラムモジュール(148)、及びプログラムデータ(150)と同じか又は異なるかのいずれかであり得ることに留意すべきである。オペレーティングシステム(170)、アプリケーションプログラム(172)、他のプログラムモジュール(174)及びプログラムデータ(176)は、最小限それらが異なる複製であることを示すように異なる番号が与えられている。
ユーザは、キーボード(180)及びポインティングデバイス(182)(例えば、マウス、トラックボール、ペン又はタッチパッド)などの入力装置又はユーザインタフェース選択装置を通してコマンド及び情報をコンピュータ(130)に入力できる。(図示しない)別の入力装置は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ又はその他を含むことができる。これらと他の入力装置は、システムバス(136)に接続されたユーザ入力インタフェース(184)を介して処理ユニット(132)と接続されているが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB)のような別のインタフェース及びバス構造によって接続され得る。モニタ(188)又は別のタイプの表示装置もまた、映像インタフェース(190)のようなインタフェースを介しシステムバス(136)に接続される。モニタ(188)に加えてコンピュータはまた、多くの場合、(図示しない)プリンタ及びスピーカのような他の周辺出力装置を含むことができ、(図示しない)出力周辺インタフェースを通して接続され得る。
コンピュータ(130)は、リモートコンピュータ(194)などの1台以上のリモートコンピュータと論理的な接続を使用し、ネットワークに接続された環境で動作できる。
リモート・コンピュータ(194)は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置又は他の一般的なネットワークのノードがあり得て、コンピュータ(130)に対して通常、前述の要素の多くか又はすべてを含む。図5に示された論理的な接続は、ローカルエリアネットワーク(LAN)(196)及び広域ネットワーク(WAN)(198)を含んでいるが、また他のネットワークも含み得る。LAN(136)及び/又はWAN(138)は、有線ネットワーク、ワイヤレスネットワーク、それらの組み合わせなどがあり得る。前記ネットワーク環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット及びグローバルなコンピュータネットワーク(例えば、インターネット)において一般的である。
ローカルエリアネットワーク環境において使用されるとき、コンピュータ(130)は、ネットワークインターフェース又はアダプタ(186)を通し、LAN(196)と接続される。WANネットワーク環境において使用されるとき、コンピュータ(130)は通常、インターネットのようなWAN(198)の上で通信を確立するためのモデム(178)又は他の手段を含む。内部か又は外部であり得るモデム(178)は、ユーザ入力インタフェース(184)、又は他の適切な手段を介し、システムバス(136)と接続し得る。ネットワークと接続された環境においては、コンピュータ(130)か又はその部分に対して表示されたプログラムモジュールは、リモートメモリストレージ装置にストアすることができる。制限ではなく例として、図5は、メモリ機器に常駐するリモートアプリケーションプログラム(192)を示す。示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを設立する別の手段を使用できる。
一般に、コンピュータ(130)のデータプロセッサは、様々なコンピュータ可読ストレージメディアにおいて、異なる時間にストアされるコンピュータ命令によってプログラムされる。プログラム及びオペレーティングシステムは通常、例えば、フロッピー(登録商標)ディスク又はCD−ROMおいて配布される。それらは、そこからコンピュータの補助記憶装置にインストールされるか又はロードされる。実行時、それらは少なくとも一部が、コンピュータの主電子メモリにロードされる。マイクロプロセッサ又は他のデータ処理装置に関連し、後述するステップを実施するための命令又はプログラムをそのようなメディアが含むとき、本明細書に記載された発明は、これら及び他の様々なタイプのコンピュータ可読記憶メディアを含む。本明細書に記載された方法及び技法にしたがったプログラムがされるとき、本発明はまた、コンピュータ自体も含む。
図示する目的のために、プログラム及びオペレーティングシステムなどの他の実行可能プログラムの部品を個々のブロックとして本明細書に例示する。しかし、そのようなプログラム及びコンポーネントは、様々な時にコンピュータの異なるストレージコンポーネントに存在し、コンピュータのデータ処理装置(単数又は複数)によって実行されることが認められる。
コンピュータ(130)を含む例示的な計算機システム環境に関連し説明したが、本発明は、他の多くの汎用目的又は特定目的の計算機システム環境又は構成を伴って動作できる。本発明の使用の範囲又は機能に関し、計算器システム環境がいかなる制限も示すことを意図しない。さらに、例示的な操作環境において例示されたコンポーネントの任意の1つ又は組み合わせに関連していかなる依存性又は要件を有するとして、計算機システム環境を解釈するべきでない。本発明を用いて使用に適し得る周知の計算器システム、環境及び/又は構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家電、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、前述のシステム又は装置のうち、いずれかを含む分散計算器環境その他を含むが、これらに限定されない。
1つ以上のコンピュータ又は他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令に関する一般的なコンテキストで本発明を説明できる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント及び特定のタスクを実行するか又は特定の抽象データ型を実装するデータ構造を含むが、これらに限定されない。また、通信ネットワークを通しリンクされるリモート処理装置によって、タスクを実行する分散計算器環境において本発明は実施できる。分散計算器環境においては、メモリストレージ装置を含むローカル及びリモートのコンピュータストレージメディア双方にプログラムモジュールを割り当てることができる。
ソフトウェアアーキテクチャのコンテキストにおけるインタフェースは、ソフトウェアモジュール、コンポーネント、コード部又はコンピュータ実行可能命令の他のシーケンスを含む。本インタフェースは、例えば、第1のモジュールを代表する計算タスクを実行するための第2のモジュールにアクセスする第1のモジュールを含む。第1及び第2のモジュールは、一例において、オペレーティングシステムによって提供されるようなコンポーネントオブジェクトモデル(COM)インタフェース、(例えば、ピアツーピアアプリケーション通信)及び(例えば、ウェブサービス間の通信向けの)エクステンシブルマークアップランゲージメタデータ交換形式(XMI)インタフェースアプリケーションプログラミングインターフェース(API)を含む。
本インタフェースは、Java(登録商標)2プラットホームエンタープライズ版(J2EE)のような密結合の同期実装、COM又は分散COM(DCOM)の例であり得る。代替又は追加として、本インタフェースは、(例えば、シンプルオブジェクトアクセスプロトコルを使用する)Webサービスのような疎結合の非同期実装であり得る。一般に、本インタフェースは、以下、密結合、疎結合、同期及び非同期の特性の任意の組み合わせを含む。
さらに、本インタフェースは、標準のプロトコル、固有のプロトコル又は標準及び固有のプロトコルの任意の組み合わせに従うことができる。
インタフェースはすべて、単一のインタフェースの一部か、又は本明細書に記載された別々のインタフェース又はその任意の組み合わせとしても実施できる。本インタフェースは、機能を提供するためにローカル又リモートで実行できる。さらに、本インタフェースは、例示された又は本明細書に記載されたものに追加されるか又はより少ない機能を含むことができる。
以下の例はさらに、本発明の特徴を例示する。
例−メモリ管理
この例は、前述したようなカスタムビデオメモリマネージャによるビデオメモリのバッファへの映像フレーム割り当ての使用を例示する。この例において、ビデオカードは、A〜Jにラベル付けられたメモリの十(10)個の映像バッファを含む。例示的な映像編集は、2つの映像タイムライン及びその2つの映像の間に挿入される1つの遷移を伴う。映像編集処理の間、映像それぞれは2個の作業バッファを必要とし、遷移は、編集処理において映像フレーム及び遷移の操作において使用される1個の作業バッファを必要とする。
図6は映像タイムラインの描写であって、映像タイムラインにおいて、映像1は映像2へ遷移する。タイムライン下で識別されるワーキングセットは、映像フレームを操作して遷移するために必要な作業バッファの数を示す。タイムラインの最初に、映像1の映像フレームを処理し表示するために、2個の作業バッファ(バッファA及びB)が必要である。
したがって、映像1の映像フレームをレンダリング済待ち行列にストアするために、8個のバッファを使用できる。
映像1及び映像2の間の遷移の間、合計5個の作業バッファが必要であって、2個の作業バッファは、映像1を処理し表示するために、1個の作業バッファは遷移を処理するために、2個の作業バッファは、映像2を処理し表示するために必要である。この時点において、映像フレームをレンダリング済待ち行列にストアするためにバッファ5個だけを使用できる。
一旦、映像2だけが処理され、表示されている時点に続いてタイムラインは、2個の作業バッファだけが必要となる。このように従来と同様、映像2の映像フレームをレンダリング済待ち行列にストアするために8個のバッファを使用できる。
図7Aは、映像1のフレーム1が表示される前であって、映像1のフレーム8がレンダリングされ、レンダリング済待ち行列に待機させた後のレンダリング済待ち行列の図である。バッファA及びBは、映像1のためのバッファを扱っていて、バッファC〜Jは、映像フレーム1〜8をストアしているので、バッファすべてが割り当てられ、1個のフレームがレンダリング済待ち行列から移動され、映像フレームをストアするために使用できるまでバッファにいかなる追加の割り当てもできない。文字は、映像フレームをストア中のバッファを示し、数字は、レンダリング済待ち行列においてストアされている映像フレーム番号である。
図7Bは、映像1のフレーム1が表示され、待ち行列から移動された後の、別の映像フレームをストアするためにバッファCを解放しているレンダリング済待ち行列の図である。
図7Cは、映像1の映像フレーム9が復号され、レンダリングされ、バッファCへ割り当てた後のレンダリング済待ち行列の図である。
図7Dは、映像1のフレーム2が表示され、待ち行列から移動された後の、別の映像フレームの割り当てのためにバッファDを解放しているレンダリング済待ち行列の図である
映像1は100個の映像フレームを含む。図7Eは、映像1の映像フレーム(100)を復号し、レンダリングし、バッファJに割り当てられた後のレンダリング済待ち行列の図である。前述のように、遷移は1個の作業バッファを必要とし、映像2は2個の作業バッファを必要とする。このように、映像1のフレーム(100)が、レンダリング済待ち行列において待機させられた後、遷移及び映像2が処理され得る前に、合計5個の作業バッファが必要である。
図7Fは、映像1のフレーム(96)が表示され、待ち行列から移動された後のレンダリング済待ち行列の図である。バッファC、D、E及びFは、遷移及び映像2を処理するための作業バッファとして使用するために解放される。
図7Gは、映像フレーム(101)が丁度復号され、レンダリングされ、バッファFへ割り当てたときのレンダリング済待ち行列の図である。バッファA及びBは、依然として映像1(フレーム97〜100)のための作業バッファであり、バッファCは、遷移のための作業バッファであり、バッファD及びEは、映像2(フレーム101)のための作業バッファである。映像2のフレーム(101)がレンダリング済待ち行列へ待機させられた後、バッファA、B、及びCが、映像1と遷移のために作業バッファとしてもはや必要とされないとき、それらがシステムに返される。2個の作業バッファだけがその後、映像2を処理するために必要であり、その結果、合計8個のバッファ(例えば、バッファA、B、C、F、G、H、I、J)が、映像2映像フレームを待機させるためにレンダリング済待ち行列によって利用できるようにする。
図7Hは、映像1のフレーム(97)が表示される前、映像2のフレーム(104)がレンダリングされ、レンダリング済待ち行列に待機させた後のレンダリング済待ち行列の図である。このように8個のバッファが、映像2の処理の間、映像フレームをストアするのに使用される。
別の方法が指定されない場合、本明細書に例示され記載された実行の順序又は方法の性能は、本質的ではない。すなわち、特に記載していない限り、本方法の原理を順不同で実行でき、本明細書に開示されたものより多少の原理を含むことができる。例えば本発明の範囲の中で、特定の原理を、別の原理の前に、同時に又は後に、実施又は実行することが想定される。
本発明の原理又はその実施形態(単数又は複数)を導入するとき、冠詞「1つの」、「一」、「その」及び「前記」は、1つ以上の原理があることを意味する意図がある。「からなる」、「含む」及び「有する」という用語は包括的であり、記載された原理以外の追加の原理があってもよいことを意味する意図がある。
上記を考慮すると、本発明のいくつかの目的が達成され、他の有益な結果に達したのがわかるであろう。
本発明の範囲から逸脱せずに、前記システム及び方法において様々な変更を行うことができるように、前記説明に含まれ、添付の図面に示されたすべての件が、制限された意味として解釈されるのではなく、例示的に解釈されることを意図する。
本発明を実施可能にする映像を表示する方法の例示的な流れ図である。 本発明を実施可能にする映像を表示し、音声を出力する方法の例示的な流れ図である。 CPUリソースを必要とする一般的な処理が、レンダリング済待ち行列のフレーム数に与える相対的な影響の例示である。 逆のタイムライン方向へのフレーム再生処理の図である。 本発明を実施可能にする適切な計算機システム環境のうち一例を例示するブロック図である。 映像タイムラインの描写であって、映像1は、映像タイムライン上の映像2に遷移する。 映像1のフレーム1が表示される前であって、映像1のフレーム8がレンダリングされ、レンダリング済待ち行列へ待機させられた後のレンダリング済待ち行列の図である。 映像1のフレーム1が表示され、待ち行列から移動され、その結果、別の映像フレームの割り当てのためにバッファCを解放した後のレンダリング済待ち行列の図である。 映像1の映像フレーム9が復号され、レンダリングされ、バッファCへ割り当てた後のレンダリング済待ち行列の図である。 映像1のフレーム2が表示され、待ち行列から移動された後、その結果、別の映像フレームの割り当てのために、バッファDを解放したレンダリング済待ち行列の図である。 映像1のフレーム(96)が表示され、待ち行列から移動された後のレンダリング済待ち行列の図である。 映像フレーム(101)がちょうど復号され、レンダリングされ、バッファFへ割り当てられたときのレンダリング済待ち行列の図である。 映像1のフレーム(97)が表示される前であって、映像2のフレーム(104)がレンダリングされレンダリング済待ち行列へ待機させられた後のレンダリング済待ち行列の図である。

Claims (20)

  1. 複数の映像フレームを表示するためのコンピュータに実装された方法であって、
    前記映像フレームを映像ファイルから復号するステップと、
    前記復号された映像フレームをビデオメモリにストアするステップと、
    前記ストアされた映像フレームをレンダリングするステップと、
    前記レンダリングされた映像フレームをレンダ―アヘッド(レンダリング済)待ち行列に待機させるステップと、及び
    前記レンダリングされた映像フレームをレンダリング済待ち行列から画面に表示するステップと、を含む方法。
  2. グラフィックス処理ユニットが、ビデオメモリにストアされた前記映像フレームにエフェクトをレンダリングし、前記処理された映像フレームを前記レンダリング済待ち行列に待機させることを特徴とする請求項1記載の方法。
  3. 中央処理ユニットが前記映像フレームを復号し、グラフィックス処理ユニットが、前記レンダリングされた映像フレームを前記画面に表示することを特徴とする請求項1記載の方法。
  4. さらに、前記映像フレームが前記画面に表示された後、1つ以上の映像フレームを前記レンダリング済待ち行列に保持するステップを含む請求項1記載の方法。
  5. さらに、前記レンダリング済待ち行列上の少なくとも1つの映像フレームを前記画面に逆順に表示するステップを含む請求項4記載の方法。
  6. さらに、前記ストアされた映像フレームをレンダリングするステップと、
    前記レンダリングされた映像フレームを正順に第2の待ち行列に待機させるステップと、
    前記レンダリングされた映像フレームを前記第2の待ち行列から逆順に移動するステップと、
    前記レンダリングされた映像フレームを逆順に前記レンダリング済待ち行列に待機させるステップと、
    前記レンダリングされた映像フレームを前記レンダリング済待ち行列から前記画面に逆順に表示するステップと、を含む請求項1記載の方法。
  7. 映像フレームをレンダリングし、前記レンダリング済待ち行列に追加する速度が、前記フレームを前記画面に表示する速度を上回ることを特徴とする請求項1記載の方法。
  8. 前記レンダリング済待ち行列が、少なくとも3つの映像フレームを含むことを特徴とする請求項1記載の方法。
  9. 前記待ち行列が前記レンダリングされた映像フレームをストアするメモリバッファを含み、更に、
    使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するステップと、
    レンダリングされた映像フレームが画面に表示された後、前記レンダリング済待ち行列のメモリバッファからそれを削除するステップと、
    映像フレームの割り当てのためにメモリバッファを使用可能にするステップと、
    前記レンダリング済待ち行列の使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するステップを含む請求項1記載の方法。
  10. 1つ以上のコンピュータ可読メディアが、請求項1記載のコンピュータ実行可能な方法を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項1記載の方法。
  11. 映像ファイル、ビデオメモリ、画面、中央処理ユニット及びグラフィックス処理ユニットを有する、映像を表示するためのシステムであって、
    レンダリングされた映像フレームを含むレンダリング済待ち行列と、
    複数の映像フレームを含む映像ファイルを前記ビデオメモリ内に復号するためのコンピュータ実行可能命令を実行するために構成される前記中央処理ユニットと、
    前記ビデオメモリ内の前記映像フレームをレンダリングし、
    前記レンダリングされた映像フレームを前記レンダリング済待ち行列に待機させ、及び
    前記レンダリングされた映像フレームをレンダリング済待ち行列から画面に表示するためのコンピュータ実行可能命令を実行するように構成される前記グラフィックス処理ユニットと、を含むシステム。
  12. 前記グラフィックス処理ユニットがさらに、前記映像フレームが前記画面に表示された後、前記映像フレームを前記レンダリング済待ち行列に保持するためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項11記載のシステム。
  13. 前記グラフィックス処理ユニットがさらに、前記レンダリング済待ち行列上の少なくとも1つの映像フレームを前記画面に逆順に表示するためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項11記載のシステム。
  14. 前記レンダリング済待ち行列が、少なくとも3つの映像フレームを含む請求項11記載のシステム。
  15. 前記グラフィックス処理ユニットがさらに、
    2つ以上の映像フレームをレンダリングするステップと、
    前記レンダリングされた映像フレームを正順に第2の待ち行列に待機させるステップと、
    前記レンダリングされた映像フレームを前記第2の待ち行列から逆順に移動するステップと、
    前記レンダリングされた映像フレームを前記レンダリング済待ち行列に逆順に待機させるステップと、及び
    前記レンダリングされた映像フレームをレンダリング済待ち行列から前記画面に逆順に表示するステップと、
    のためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項11記載のシステム。
  16. 映像フレームをレンダリングし、前記レンダリング済待ち行列に追加する速度が、前記フレームを前記画面に表示する速度を上回ることを特徴とする請求項11記載のシステム。
  17. 前記待ち行列が、前記レンダリングされた映像フレームをストアするメモリバッファを含み、前記グラフィックス処理ユニットがさらに、
    使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するステップと、
    レンダリングされた映像フレームが前記画面に表示された後、前記レンダリング済待ち行列上のメモリバッファからそれを削除するステップと、
    映像フレームの割り当てのために前記メモリバッファを有効にするステップと、及び
    前記レンダリング済待ち行列の前記使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するステップと、
    のためのコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項11記載のシステム。
  18. 映像フレームを画面に表示するためのコンピュータ実行可能命令を有する1つ以上のコンピュータ可読メディアであって、前記命令が、
    複数の映像フレームを映像ファイルから復号し、前記復号された映像フレームをビデオメモリにストアするための命令と、
    前記映像フレームをレンダリングするための命令と、
    前記レンダリングされた映像フレームをレンダリング済待ち行列に待機させるための命令と、及び
    レンダリングされた映像フレームを前記レンダリング済待ち行列から画面に表示するための命令と、を含むことを特徴とするコンピュータ可読メディア。
  19. さらに、2つ以上の映像フレームをレンダリングするための命令と、
    前記レンダリングされた映像フレームを第2の待ち行列に正順に待機させるための命令と、
    前記レンダリングされた映像フレームを前記第2の待ち行列から前記レンダリング済待ち行列に逆順に待機させるための命令と、及び
    レンダリングされた映像フレームをレンダリング済待ち行列から前記画面に逆順に表示するための命令を含む請求項18記載のコンピュータ可読メディア。
  20. 前記待ち行列が前記レンダリングされた映像フレームをストアするメモリバッファを含み、更に、
    使用可能なメモリバッファがすべて満杯のとき、前記レンダリング済待ち行列へのレンダリングされた映像フレームのさらなる割り当てを一時停止するための命令と、
    レンダリングされた映像フレームが前記画面に表示された後、前記レンダリング済待ち行列のメモリバッファからそれを削除するための命令と、
    映像フレームの割り当てのために前記バッファを有効にするための命令と、及び
    前記レンダリング済待ち行列の使用可能なバッファへのレンダリングされた映像フレームのさらなる割り当てを再開するための命令と、を含む請求項18記載のコンピュータ可読メディア。
JP2008520237A 2005-06-30 2006-04-26 レンダリング済待ち行列を伴うgpuタイムライン Pending JP2009502050A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/170,930 US7817900B2 (en) 2005-06-30 2005-06-30 GPU timeline with render-ahead queue
PCT/US2006/015953 WO2007005093A2 (en) 2005-06-30 2006-04-26 Gpu timeline with render-ahead queue

Publications (1)

Publication Number Publication Date
JP2009502050A true JP2009502050A (ja) 2009-01-22

Family

ID=37591290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008520237A Pending JP2009502050A (ja) 2005-06-30 2006-04-26 レンダリング済待ち行列を伴うgpuタイムライン

Country Status (7)

Country Link
US (1) US7817900B2 (ja)
EP (1) EP1899848A2 (ja)
JP (1) JP2009502050A (ja)
KR (1) KR20080021691A (ja)
CN (1) CN101512656A (ja)
RU (1) RU2007149078A (ja)
WO (1) WO2007005093A2 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809252B2 (en) * 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
US8427494B2 (en) * 2004-01-30 2013-04-23 Nvidia Corporation Variable-length coding data transfer interface
US8725504B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Inverse quantization in audio decoding
US8726125B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Reducing interpolation error
US8477852B2 (en) * 2007-06-20 2013-07-02 Nvidia Corporation Uniform video decoding and display
US8849051B2 (en) * 2007-09-17 2014-09-30 Nvidia Corporation Decoding variable length codes in JPEG applications
US8502709B2 (en) * 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications
US8934539B2 (en) 2007-12-03 2015-01-13 Nvidia Corporation Vector processor acceleration for media quantization
US8704834B2 (en) * 2007-12-03 2014-04-22 Nvidia Corporation Synchronization of video input data streams and video output data streams
US8687875B2 (en) * 2007-12-03 2014-04-01 Nvidia Corporation Comparator based acceleration for media quantization
US8502831B2 (en) * 2008-01-15 2013-08-06 Digi International Inc. Video memory quality of service
US9602821B2 (en) * 2008-10-01 2017-03-21 Nvidia Corporation Slice ordering for video encoding
KR101535827B1 (ko) * 2008-12-05 2015-07-27 삼성전자주식회사 무선 통신 네트워크에서 오디오 및 비디오 동기화 장치 및 방법
US9307267B2 (en) 2008-12-11 2016-04-05 Nvidia Corporation Techniques for scalable dynamic data encoding and decoding
KR101667050B1 (ko) * 2009-03-30 2016-10-17 삼성전자주식회사 인코딩된 멀티미디어 콘텐츠의 역방향 재생을 위한 방법 및 장치와 기계로 읽을 수 있는 저장 장치
US20100247066A1 (en) * 2009-03-30 2010-09-30 Samsung Electronics Co., Ltd. Method and apparatus for reverse playback of encoded multimedia content
US8788615B1 (en) * 2009-10-02 2014-07-22 Adobe Systems Incorporated Systems and methods for creating and using electronic content that requires a shared library
US20110225517A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc Pointer tools for a virtual social venue
US20110239136A1 (en) * 2010-03-10 2011-09-29 Oddmobb, Inc. Instantiating widgets into a virtual social venue
US20110225518A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Friends toolbar for a virtual social venue
US20110225516A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Instantiating browser media into a virtual social venue
US20110225498A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Personalized avatars in a virtual social venue
US20110225515A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Sharing emotional reactions to social media
US20110244954A1 (en) * 2010-03-10 2011-10-06 Oddmobb, Inc. Online social media game
US20110225519A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Social media platform for simulating a live experience
US8572177B2 (en) * 2010-03-10 2013-10-29 Xmobb, Inc. 3D social platform for sharing videos and webpages
US20110225039A1 (en) * 2010-03-10 2011-09-15 Oddmobb, Inc. Virtual social venue feeding multiple video streams
US8667402B2 (en) * 2010-03-10 2014-03-04 Onset Vi, L.P. Visualizing communications within a social setting
US8755430B2 (en) * 2010-12-22 2014-06-17 Disney Enterprises, Inc. System and method for audio video pattern sequence diagnostic tool
CN102447965B (zh) * 2011-08-25 2014-04-30 深圳市佳信捷技术股份有限公司 支持视频插件接入的视频快速平滑显示的方法及装置
US8780120B2 (en) 2011-10-02 2014-07-15 Microsoft Corporation GPU self throttling
CN106155640B (zh) * 2015-03-24 2019-08-13 海信集团有限公司 一种音量显示方法及装置
WO2017059450A1 (en) * 2015-10-02 2017-04-06 Twitter, Inc. Gapless video looping
CN106210883A (zh) * 2016-08-11 2016-12-07 浙江大华技术股份有限公司 一种视频渲染的方法、设备
US10679314B2 (en) 2017-03-15 2020-06-09 Microsoft Technology Licensing, Llc Techniques for reducing perceptible delay in rendering graphics
US20200221165A1 (en) * 2019-01-07 2020-07-09 NoviSign Ltd Systems and methods for efficient video content transition effects generation
CN112449239B (zh) * 2019-08-30 2023-05-02 阿里巴巴集团控股有限公司 视频播放方法、装置及电子设备
CN112506581B (zh) * 2020-12-17 2024-03-22 北京百度网讯科技有限公司 渲染小程序的方法、装置、电子设备和可读存储介质
CN113347432B (zh) * 2021-05-27 2023-03-28 深圳万兴软件有限公司 一种视频编解码方法、装置、计算机设备及存储介质
CN113407325A (zh) * 2021-06-30 2021-09-17 深圳市斯博科技有限公司 视频渲染方法、装置、计算机设备及存储介质
CN113556495B (zh) * 2021-07-21 2022-10-28 北京达佳互联信息技术有限公司 视频录制方法、视频处理方法及相应设备
CN114554269A (zh) * 2022-02-25 2022-05-27 深圳Tcl新技术有限公司 数据处理方法、电子设备及计算机可读存储介质
CN115134658A (zh) * 2022-05-27 2022-09-30 阿里巴巴云计算(北京)有限公司 视频处理方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030038830A1 (en) * 2001-08-22 2003-02-27 Bean Heather N. Method and system for simultaneous display of a video sequence in multiple time-offset windows

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0691788A1 (en) * 1992-03-24 1996-01-10 Kabushiki Kaisha Toshiba Variable length code recording/playback apparatus
US5450544A (en) 1992-06-19 1995-09-12 Intel Corporation Method and apparatus for data buffering and queue management of digital motion video signals
US5508940A (en) * 1994-02-14 1996-04-16 Sony Corporation Of Japan And Sony Electronics, Inc. Random access audio/video processor with multiple outputs
JP3250588B2 (ja) * 1994-07-12 2002-01-28 ソニー株式会社 データ再生装置
JP3618386B2 (ja) * 1995-02-21 2005-02-09 三星テクウィン株式会社 スキャンコンバート機能付きビデオエディタおよびそれを用いたビデオシステム
US5708845A (en) 1995-09-29 1998-01-13 Wistendahl; Douglass A. System for mapping hot spots in media content for interactive digital media program
US6222979B1 (en) * 1997-02-18 2001-04-24 Thomson Consumer Electronics Memory control in trick play mode
US6463209B2 (en) * 1997-02-18 2002-10-08 Thomson Licensing Sa Controlled data flow
EP0910086A4 (en) * 1997-04-07 2002-10-28 Sony Corp CUTTING SYSTEM AND METHOD
US5996015A (en) 1997-10-31 1999-11-30 International Business Machines Corporation Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory
US6226038B1 (en) * 1998-04-03 2001-05-01 Avid Technology, Inc. HDTV editing and effects previsualization using SDTV devices
US6353700B1 (en) * 1998-04-07 2002-03-05 Womble Multimedia, Inc. Method and apparatus for playing an MPEG data file backward
US6804449B1 (en) * 2000-01-05 2004-10-12 Genesis Microchip Inc. DVD reverse playback methods and apparatus
US7164844B1 (en) * 2000-03-02 2007-01-16 The Directv Group, Inc. Method and apparatus for facilitating reverse playback
US6763175B1 (en) * 2000-09-01 2004-07-13 Matrox Electronic Systems, Ltd. Flexible video editing architecture with software video effect filter components
US6801710B1 (en) * 2000-11-16 2004-10-05 Genesis Microchip Inc. Methods and apparatus for smooth reverse playback of MPEG encoded media
US7027708B2 (en) 2000-12-29 2006-04-11 Etalk Corporation System and method for reproducing a video session using accelerated frame playback
US7072908B2 (en) 2001-03-26 2006-07-04 Microsoft Corporation Methods and systems for synchronizing visualizations with audio streams
US7496283B2 (en) * 2002-06-28 2009-02-24 Microsoft Corporation Methods and systems for processing digital data rate and directional playback changes
US7466870B2 (en) * 2003-01-16 2008-12-16 Acoustic Technology Llc Apparatus and method for creating effects in video
US7630612B2 (en) * 2003-02-10 2009-12-08 At&T Intellectual Property, I, L.P. Video stream adaptive frame rate scheme
US8832758B2 (en) 2003-03-17 2014-09-09 Qwest Communications International Inc. Methods and systems for providing video on demand
US7409097B2 (en) * 2003-11-14 2008-08-05 Vweb Corporation Video encoding using variable bit rates
US7974523B2 (en) * 2004-07-06 2011-07-05 Magnum Semiconductor, Inc. Optimal buffering and scheduling strategy for smooth reverse in a DVD player or the like
US7769269B2 (en) * 2004-11-03 2010-08-03 Sony Corporation High performance storage device access for non-linear editing systems
US7471875B2 (en) * 2005-07-15 2008-12-30 Streaming Networks (Pvt.) Ltd. Method and system for providing instant reverse play

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030038830A1 (en) * 2001-08-22 2003-02-27 Bean Heather N. Method and system for simultaneous display of a video sequence in multiple time-offset windows

Also Published As

Publication number Publication date
KR20080021691A (ko) 2008-03-07
CN101512656A (zh) 2009-08-19
US7817900B2 (en) 2010-10-19
WO2007005093A3 (en) 2009-04-23
US20070006060A1 (en) 2007-01-04
WO2007005093A2 (en) 2007-01-11
EP1899848A2 (en) 2008-03-19
RU2007149078A (ru) 2009-07-10

Similar Documents

Publication Publication Date Title
JP2009502050A (ja) レンダリング済待ち行列を伴うgpuタイムライン
US9502074B2 (en) Media foundation media processor
CN102089823B (zh) 多媒体演示系统及方法
US7412704B2 (en) Generating and managing filter strings in a filter graph
CN101689137B (zh) 使用共享存储器池的数字数据管理
KR20100035690A (ko) 디지털 미디어 처리 인터페이스
CN105393544A (zh) 媒体流传送中的动态轨道切换
US7774375B2 (en) Media foundation topology
CN109599133B (zh) 语言音轨的切换方法、装置、计算机设备及存储介质
JP2008108296A (ja) 情報再生装置及び情報再生方法
US9773293B2 (en) Composition data dispatcher
JPWO2005104125A1 (ja) 記録再生装置、同時記録再生制御方法、および同時記録再生制御プログラム
US20140337860A1 (en) Method and architecture for data channel virtualization in an embedded system
KR100811784B1 (ko) 미디어 재생 장치와 그를 이용하는 미디어 재생 방법 및이동통신 단말기
JP2007336068A (ja) 情報処理装置および情報処理方法、プログラム、並びに記録媒体
JP2003100014A (ja) 記録再生管理・制御装置及び記録再生管理・制御方法
JP4293104B2 (ja) 編集装置及び編集方法並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100517