(57)【要約】【解決手段】  ここに開示される本発明の実施形態は、上述した従来方法の問題に対する解決法を提供する。以下の説明においては、種々の例が例示のために与えられるが、限定することは意図されていない。実施形態は、多重中央処理ユニット（ＣＰＵ）コア及び／又は１つ以上のグラフィカル処理ユニット（ＧＰＵ）の使用を通してのビデオトランスコーディングの作業負荷を共有するトランスコーディングシステムを対象としており、ＧＰＵ内の２つのコンポーネント、即ちデコードステップのための専用のハードコードされた又はプログラム可能なビデオデコーダとスケーリング及びエンコーディングのための計算シェーダの使用を含む。システムは、ＧＰＵを用いてビデオデコードを加速するための業界標準であるマイクロソフトＤＸＶＡの使用を、ＧＰＵエンコーディングスキーム及びビデオをスケーリングする中間ステップと組み合わせる。【選択図】図３
2012508485.tif 000002
【特許請求の範囲】
【請求項１】
ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードするための装置であって、
前記第１のデジタルフォーマットでエンコードされたビデオストリームを受信し且つデコードされたビデオストリームを生成するデコーダであって、グラフィックス処理ユニット（ＧＰＵ）回路を利用し且つ前記ＧＰＵ回路とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及び中央処理ユニット（ＣＰＵ）ソフトウエアデコーダの少なくとも１つとの組み合わせを通して実装されるデコーダと、
前記デコードされたビデオストリームの画像サイズを変更してスケーリングされデコードされたビデオストリームを生成するスケーラであって、ＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装されるスケーラと、
前記スケーリングされデコードされたビデオストリームを受信し且つ前記第２のデジタルフォーマットでエンコードされた出力ストリームを生成するエンコーダとを備えた装置。
【請求項２】
前記ビデオストリームは、少なくとも１つのＧＰＵ及び１つのＣＰＵを含むプロセッサプラットフォームを備えているトランスコーディングパイプラインシステムにおいて受信される、請求項１の装置。
【請求項３】
前記ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つ前記デコード動作の第２の部分が前記ＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えている、請求項２の装置。
【請求項４】
前記ＧＰＵプログラム可能デコーダは、前記ＣＰＵによって実行される所定の動作の負荷を前記ＧＰＵにより実行されるように解放することによって前記デコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む、請求項２の装置。
【請求項５】
前記第１のデジタルフォーマットの前記ビデオストリームは複数のビデオビットストリームからなり、
当該デコーダコンポーネントは複数のデコーダコンポーネントからなり、
前記複数のビデオビットストリームの各々は対応するデコーダコンポーネントへ入力される、請求項１の装置。
【請求項６】
前記複数のビデオビットストリームを、規定されたブレンディング効果に従ってブレンドされた出力ストリームに組み合わせるビデオブレンディングコンポーネントを更に備えた、請求項５の装置。
【請求項７】
前記複数のビデオビットストリームはＭＰＥＧビデオデータからなり、
前記装置はＭＰＥＧフレームのデコード順序をディスプレイ順序へ再順序付けする複数のフレームプールを更に備えている、請求項６の装置。
【請求項８】
前記出力ストリームはディスプレイデバイスへ伝送される請求項７の装置。
【請求項９】
前記ブレンドされた出力ストリームのフレームレートを前記ディスプレイデバイスのリフレッシュレートに整合させるフレームレート論理コンポーネントを更に備えた、請求項８の装置。
【請求項１０】
前記スケーリングされデコードされたビデオストリームは、前記ＣＰＵに結合されたメモリデバイスへ伝送される、請求項１の装置。
【請求項１１】
前記スケーリングされデコードされたビデオストリームの第１の複写は前記ＣＰＵに対して利用可能であり、
前記スケーリングされデコードされたビデオストリームの第２の複写は前記ＧＰＵに対して利用可能である、請求項１の装置。
【請求項１２】
前記ビデオストリームはオーディオチャネルを含み、前記装置は、
前記ビデオストリームを備えているビデオフレームから前記オーディオチャネルを前記デコードされたビデオストリームの生成に先立ち分離するデマルチプレクサと、
前記オーディオチャネルを前記第２のデジタルフォーマットでエンコードされた前記出力ストリームへ加え戻すと共に前記エンコーダにおいてエンコードするマルチプレクサとを更に備えている、請求項１の装置。
【請求項１３】
前記オーディオチャネルは、前記出力ストリームへ加え戻される前に第１のオーディオフォーマットから第２のオーディオフォーマットへトランスコードされる、請求項１２の装置。
【請求項１４】
ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードする方法であって、
前記第１のデジタルフォーマットでエンコードされたビデオストリームをデータストアから受信することと、
前記受信したビデオストリームをデコードしてデコードされたビデオストリームを生成することと、
前記デコードされたビデオストリームの画像サイズをスケーリングしてスケーリングされデコードされたビデオストリームを生成することと、
前記スケーリングされデコードされたビデオストリームをエンコードして前記第２のデジタルフォーマットでエンコードされた出力ストリームを生成することとを備え、
当該デコーディング方法はグラフィックス処理ユニット（ＧＰＵ）資源及び中央処理ユニット（ＣＰＵ）資源の組み合わせを通して実施され、
前記デコーディング方法は前記ＧＰＵ資源とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及びＣＰＵソフトウエアデコーダの少なくとも１つとの組み合わせを利用し、
当該スケーラはＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装される、方法。
【請求項１５】
前記ＧＰＵハードウエアデコーダ、前記ＧＰＵプログラム可能デコーダ、又は前記ＣＰＵソフトウエアデコーダの１つを用いる適切なデコーディング方法を選択することを更に備えた、請求項１４の方法。
【請求項１６】
前記選択するステップはユーザ選択、自動的なプロセス、又は前記第１のデジタルフォーマットによる決定の１つによって実行される、請求項１５の方法。
【請求項１７】
前記スケーリングされデコードされたビデオストリームの第１の複写がＣＰＵに対して利用可能であり且つ前記スケーリングされデコードされたビデオストリームの第２の複写がＧＰＵに対して利用可能であるように、前記ＣＰＵ及び前記ＧＰＵを含む処理プラットフォーム上の前記ＣＰＵに結合されるメモリデバイスへ前記スケーリングされデコードされたビデオストリームを送信することを更に備えた、請求項１４の方法。
【請求項１８】
前記ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つ前記デコード動作の第２の部分が前記ＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えており、
前記ＧＰＵプログラム可能デコーダは、前記ＣＰＵによって実行される所定の動作の負荷を前記ＧＰＵにより実行されるように解放することによって前記デコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む、請求項１４の方法。
【請求項１９】
前記第１のデジタルフォーマットの前記ビデオストリームは複数のビデオビットストリームからなり、
当該デコーダコンポーネントは複数のデコーダコンポーネントからなり、
前記複数のビデオビットストリームの各々は対応するデコーダコンポーネントへ入力され、
前記方法は、前記複数のビデオビットストリームを、規定されたブレンディング効果に従ってブレンドされた出力ストリームにブレンドすることを更に備えている、請求項１４の方法。
【請求項２０】
前記複数のビデオビットストリームはＭＰＥＧビデオデータからなり、前記方法は、
ＭＰＥＧフレームのデコード順序をディスプレイ順序へ再順序付けするフレームプールへプールすることと、
前記出力ストリームをディスプレイデバイスへ伝送することとを更に備えている、請求項１９の方法。
【請求項２１】
前記ブレンドされた出力ストリームのフレームレートを前記ディスプレイデバイスのリフレッシュレートに整合させることを更に備えた、請求項２０の方法。
【請求項２２】
中央処理ユニット（ＣＰＵ）と、
前記ＣＰＵに結合されるグラフィックス処理ユニット（ＧＰＵ）と、
ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードするビデオトランスコーダパイプラインとを備えたビデオ処理システムであって、
前記トランスコーダパイプラインは、
前記第１のデジタルフォーマットでエンコードされたビデオストリームを受信し且つデコードされたビデオストリームを生成するデコーダであって、グラフィックス処理ユニット（ＧＰＵ）回路を利用し且つ前記ＧＰＵ回路とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及び中央処理ユニット（ＣＰＵ）ソフトウエアデコーダの少なくとも１つとの組み合わせを通して実装されるデコーダと、
前記デコードされたビデオストリームの画像サイズを変更してスケーリングされデコードされたビデオストリームを生成するスケーラであって、ＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装されるスケーラと、
前記スケーリングされデコードされたビデオストリームを受信し且つ前記第２のデジタルフォーマットでエンコードされた出力ストリームを生成するエンコーダとを備えている、ビデオ処理システム。
【請求項２３】
前記ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つ前記デコード動作の第２の部分が前記ＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えている、請求項２２のシステム。
【請求項２４】
前記ＧＰＵプログラム可能デコーダは、前記ＣＰＵによって実行される所定の動作の負荷を前記ＧＰＵにより実行されるように解放することによって前記デコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む、請求項２２のシステム。
【請求項２５】
前記ＧＰＵハードウエアデコーダ、前記ＧＰＵプログラム可能デコーダ、又は前記ＣＰＵハードウエアデコーダの１つを用いる適切なデコーディング方法が、ユーザ選択、自動的なプロセス、又は前記第１のデジタルフォーマットによる決定の１つを通して選択される、請求項２２のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年８月８日出願で現在係属中の特許出願番号１２／１８９，０６０、「ＧＰＵ加速を伴うソフトウエアビデオエンコーダ」の部分継続出願であり、その出願は、２００７年１２月１９日出願の米国特許出願番号１１／９６０，６４０の部分継続出願であり、その出願は、２００７年５月１１日出願の米国仮出願番号６０／９２８，７９９の利益を主張すると共に、２００７年１２月５日出願の米国特許出願番号１１／９５１，２２２に関連しており、これらの出願はその全てを参照としてここに組み込まれる。
【０００２】
開示される実施形態は、概してビデオディスプレイ技術に関し、更に特定的にはデジタルビデオデータをトランスコードすること(transcoding)に関する。
【背景技術】
【０００３】
トランスコーディング(transcoding)は、１つのデジタル的にエンコードされた(encoded)フォーマットの他のフォーマットへの直接的なデジタル―デジタル変換である。トランスコーディングは、コンテンツ適合の多くの分野において見出すことができ、そして互換性のない又は旧式のデータをより適切なフォーマットへ変換するためにしばしば用いられる。トランスコーディングはまた、例えば歌曲をＣＤフォーマットからコンピュータ及びＭＰ３プレーヤでの再生のためのＭＰ３フォーマットへ変換する場合のように、異なる再生デバイスにおける使用のための異なる種類のデジタルメディア上でコンテンツをアーカイブし又は分配するためにも用いられる。トランスコーディングは更に、携帯電話コンテンツ適合の分野においても標準的に用いられる。この場合、携帯デバイス及びそれらの能力の多様性(diversity)に起因してトランスコーディングが必要である。この多様性は、ソースコンテンツが目標デバイス上で適切に再生することを確実にするために、コンテンツ適合の中間状態を必要とする。
【０００４】
トランスコーディングが用いられる１つの一般的な分野はマルチメディアメッセージングサービス（ＭＭＳ）であり、ＭＭＳは、携帯電話同士でメディアによるメッセージ（画像、音声、テキスト及びビデオ）を送受信するために用いられる技術である。例えば、カメラ付き携帯電話がデジタル画像を撮影するために用いられる場合、通常は少なくとも６４０×４８０解像度の高品質画像が生成される。画像を他の携帯電話へ送信することは、この高解像度画像が、目標デバイスの画面サイズ及びディスプレイ制限に良好に合わせるために、より少ない色を伴うより低解像度の画像へトランスコードされることを必要とするであろう。トランスコーディングはまた、ホームシアターソフトウエアによって、例えばビデオファイルによるディスクスペースの使用を低減するためにも用いられる。このアプリケーションにおいて最も一般的な動作は、ＭＰＥＧ−２ファイルのＭＰＥＧ−４フォーマットへのトランスコーディングである。大量のオンラインマルチメディアコンテンツ及び多数の利用可能な異なるデバイスに起因して、任意の携帯デバイスにおける任意のマルチメディアコンテンツに対する正確な検索能力を提供するために、任意の入力フォーマットから任意の出力フォーマットへのリアルタイムのトランスコーディングが必要になってきている。
【０００５】
現在のトランスコーディングスキームは、処理システムのＣＰＵ資源のみを典型的には利用している。ビデオデータのサイズのために、システムに対してかなりな処理オーバーヘッドを提起する一方で、ＧＰＵ帯域のような追加的に利用可能な資源はそのような動作においてしばしば十分には活用されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、トランスコードパイプラインにおいて実行されるタスクに対してＧＰＵ及びＣＰＵの両方の資源を利用するトランスコーディングプロセスが要望されている。
【図面の簡単な説明】
【０００７】
実施形態は例示を目的として示されており、そして添付の図面の形態に限定されるものではなく、図面において同様の参照符号は同様の要素を示す。
【０００８】
【図１】図１は実施形態に従いビデオトランスコーディングの方法を実施するビデオトランスコーディングパイプラインのブロック図である。
【図２】図２は実施形態に従いビデオトランスコーダパイプラインを実装している処理システムのブロック図である。
【図３】図３は実施形態に従い更なる処理コンポーネントを伴うビデオトランスコーディングパイプラインを示す図である。
【図４】図４は実施形態に従いビデオデコードプロセスを実施するビデオ編集パイプラインを示す図である。
【図５】図５は実施形態に従いビデオデータデコーディングのためのフレームプーリング(frame pooling)を含むビデオ編集パイプラインを示す図である。
【図６】図６は実施形態に従いビデオコンテンツ及びオーディオコンテンツの両方を含むコンテンツのための完全なトランスコーディングパイプラインを示す図である。
【図７】図７は実施形態に従い多重デコードプロセスを用いてデジタルビデオデータをトランスコーディングする全体的な方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
ここに説明される本発明の実施形態は、上述した従来方法の問題に対する解決策を提供する。以下の説明において、例示を目的として種々の例が与えられるが、そのどれもが限定することを意図されてはいない。実施形態は、多重中央処理ユニット（ＣＰＵ）コア及び／又は１つ以上のグラフィカル処理ユニット（ＧＰＵ）の使用によるビデオトランスコーディングの作業負荷を共有するトランスコーディングシステムを対象としており、これらはＧＰＵ内の２つのコンポーネントの使用、即ちデコードステップのための専用のハードコードされた又はプログラム可能なビデオデコーダ並びにスケーリング及びエンコーディングのための計算シェーダ(compute shaders)の使用を含む。そのシステムは、ＧＰＵを用いてビデオデコードを加速するための業界標準であるマイクロソフトＤＸＶＡ方法の使用を、ビデオをスケーリングする中間ステップと共に、ＧＰＵエンコーディングスキームと結合する。
【００１０】
トランスコーディングは、一般的には、第１のフォーマットから第２のフォーマットへのビデオデータの変換のプロセスを参照する。トランスコーディングは、エンコードされたビデオから開始してそれをデコードプロセスの後に再びエンドーディングすることを含む。例えば、１つのフォーマットでエンコードされ且つデジタル的に記憶されているソースビデオがデコードされ、そして次いで他のフォーマットへエンコードされるか、あるいは同じフォーマットへ再エンコードされる。スケーリング、他のビデオとのブレンディング、その他第２のビデオフォーマットへのエンコーディングに先立つような中間処理もまた、トランスコードされたビデオに対して実行されてよい。図１は実施形態に従いビデオトランスコーディングの方法を実施するビデオトランスコーディングパイプラインのブロック図である。図１に示されるように、システム１００は、第１のデータフォーマットでエンコードされているビデオビットストリーム１０２を含む。ビットストリームはビデオデコードプロセス１０４でデコードされる。デコードされたデータは次いでビデオスケーラ１０６を用いてスケーリングされる。スケーリングされたビデオデータは次いでビデオエンコーダ１０８でエンコードされ、第２のビデオフォーマットでフォーマットされたビットストリーム１１０を生成する。
【００１１】
１つの実施形態においては、図１のビデオトランスコーディングパイプラインは、少なくとも１つの中央処理ユニット（ＣＰＵ）と少なくとも１つのグラフィックス処理ユニット（ＧＰＵ）とを含む処理プラットフォームを備えた処理システム内に実装される。図２は実施形態に従いビデオトランスコーダパイプラインを実装している処理システムのブロック図である。図２のシステムに対して、第１のフォーマットにあるビデオデータは、データストア２１０内に記憶されており、そして第１のビデオフォーマット２１１に従ってプロセッサプラットフォーム２０２へ送信される。プロセッサプラットフォーム２０２は、ＣＰＵ２０４、ＧＰＵ２０６、及びメモリ２０８を含む。ＧＰＵ２０６は、ＣＰＵとは別のグラフィックス処理ユニットであってよいが、プロセッサプラットフォーム２０２の同一のマザーボード又はカード上に設けられている。ＧＰＵはまた、バス又は同様の相互接続を介してＣＰＵと結合される別個のユニットとして設けられてよい。代替的には、ＧＰＵ２０６は、グラフィカル処理回路を代表してよく又は強固に結合される若しくはＣＰＵ２０４内の機能として設けられる機能を代表してよい。トランスコーディングプロセスは、第２のフォーマット２１３でビデオデータを生成するために１つ以上のＣＰＵ２０４及びＧＰＵ２０６によってもたらされる機能の組み合わせを通して実装され、生成されたビデオデータは、データストア２１４へ転送され且つ／若しくはディスプレイデバイス２１２によって表示されてよく、又はインタフェースリンク若しくはネットワーク、例えばインターネットを介して他のデバイスへ送信されてよい。
【００１２】
図３は実施形態に従い図１のビデオトランスコーディングを更に詳細に示している。図３の実施形態に対して、ビデオビットストリームはエントロピーコーディングを用いてエンコードされている。エントロピーコーディングは、同等の周波数をまとめてグループ化するランレングスエンコーディング（ＲＬＥ）アルゴリズムを採用して画像成分を「ジグザグ」順序で配列することと、ゼロをコーディングするレングスを挿入することと、次いで残っている部分にハフマン(Huffman)コーディングを用いることとを伴うロスレス(lossless)データ圧縮の特別な形態である。ハフマンコーディングは、一般的には、ソースシンボル（例えばファイル内の文字）をエンコーディングするための可変長コードテーブルの使用を参照し、この場合、可変長コードテーブルは、ソースシンボルの各見込まれる値に対して推定された発生確率に基いて特定の方法で導き出されているものである。
【００１３】
システム３００において、エンコードされているビットストリーム３０２は、エントロピーデコーダ３０４を用いてデコードされる。デコーディングプロセスは、逆ＤＣＴ（ｉＤＣＴ）３０６、逆量子化、出力の再正規化３１０、等を含む多数の可変長デコーディングステップを伴う。１つの実施形態では、再構築ステップ３１０によって生成される参照フレームに対してモーション補償（又は推定）プロセス３０８が実行される。デコードされたビデオフレーム３１４は、次いでビデオスケーラプロセス３１６においてスケーリングされる。スケーリングされたビデオフレーム３１８は、次いでブロック３２０乃至３２４で示されるエンコーディングプロセスによって第２のフォーマットへとエンコードされる。ビデオフレームは先ず３２０で前処理されて、次いでモーション推定エンジン３２２へ入力される。次いでＭＢコーディングプロセス３２４が、第２のフォーマットのビットストリーム３２８と、モーション推定エンジン３２２へフィードバックされる参照フレーム３２６とを生成する。１つの実施形態では、ブロック３２０乃至３２４によって表される図３の１つ以上のエンコーディングプロセスは、米国特許出願番号１２／１８９，０６０に記載されているエンコーダプロセスを用いて実装され、その全体が参照として組み込まれる。
【００１４】
図３に示されるように、トランスコーディングパイプラインにおける第１のステップは、特定のデジタルフォーマットで既にエンコードされているビデオビットストリーム１０２をデコーディングすることである。実施形態に従い、処理スループットを最適化する他に、ＣＰＵ資源を用いるであろうスケーリング又はブレンディングのような他のステップの実行についても最適化するために、デコーディングプロセスは、ＧＰＵ２０６及びＣＰＵ２０４によって提供される資源を利用する。
【００１５】
実施形態に従い、ＣＰＵプロセッサ及びＧＰＵプロセッサの両方を有する処理プラットフォーム２０２を用いてビデオビットストリーム１０２をデコードするためには、３つの異なる方法がある。元のビットストリーム１０２のエンコーディングフォーマット及び関連する他のトランスコードプロセスに応じて、特定の入力ビットストリームに対して３つのデコード方法のうちの１つが選択される。
【００１６】
第１の方法では、デコード機能１０４に関する全てのステップを実行するためにＣＰＵ２０４が単独で用いられる。これは一般的にはソフトウエア単独実装であり、この場合、ＧＰＵ２０６は次いでスケーリング１０６及びエンコーディングの機能を実行するために用いられる。ＣＰＵデコーダ方法はソフトウエアデコーダと称されることもある。
【００１７】
第２の方法では、デコーディングプロセスの一部分がＣＰＵ上で実行され、そして残りはＧＰＵ上で実行される。これはＧＰＵプログラム可能デコーダシステムを備えたソフトウエアプラスグラフィックスチップソリューションである。この方法では、ＣＰＵ上で実行されるデコーディングは、エントロピーデコードステップ３０４までのデコーディングステップを含む。エントロピーデコーディングステップ及び随意的なスケーリングステップ３１６はＧＰＵ上で実行される。
【００１８】
第３の方法では、ＧＰＵ内にある専用のハードウエアデコーダ（ＧＰＵハードウエアデコーダ）がデコーディングのために採用される。エントロピーデコードステップ３０４を通してビットストリームをデコードするために、ハードウエア／プログラム可能ビデオプロセッサを用いてデコーディングが実行される。ＧＰＵハードウエアデコーダは、特定の命令を伴う専用のハードウエアを有するプログラム可能処理チップ内に実装されていてよく、そして１つ以上のコーデック(codecs)の所定の仕様を実装するように設計されている。１つの実施形態では、ＧＰＵハードウエアデコーダは、ＧＰＵハードウエアのＵＶＤ（統合化ビデオデコーダ(Unified Video Decoder)）部分として実装され、そしてＨ．２６４及びＶＣ−１のビデオコーデック標準、又は他のコーデックを支援するように構成される。一般的に、ＵＶＤは、Ｈ．２６４／ＡＶＣ及びＶＣ−１のビデオコーデックのデコーディングをほぼ全部ハードウエア内で処理する。ＵＶＤは、最小のホスト（ＣＰＵ）アテンションを要求しながらＶＣ−１及びＨ．２６４に対する殆ど全てのビデオデコーダプロセスの負荷を解放する。ＶＬＣ／ＣＡＶＬＣ／ＣＡＢＡＣ、周波数変換、画素予測、及びインループ非ブロック化機能(inloop deblocking functions)を処理することに加えて、ＵＶＤはまた、進歩したビデオ後処理ブロックを含んでいる。ＵＶＤが提供する種々の後処理動作は、ノイズ除去(denoising)、デインターレーシング(de-interlacing)、スケーリング／リサイジング(scaling/resizing)、及び類似の動作を含んでいてよい。ハードウエア／プログラム可能ビデオプロセッサ（例えばＵＶＤ）は、デコーディング動作の残りの部分を行うために、逆エントロピー（可変長デコード）使用のプログラム可能ＧＰＵシェーダを実行する処理回路の任意の適切な組み合わせを通して実装されてよい。
【００１９】
この説明の目的のために、「Ｈ．２６４」は、ＭＰＥＧ−４＿Ｐａｒｔ１０、又はＭＰＥＧ−４＿ＡＶＣ（進歩したビデオコーディング(Advanced Video Coding)）としても知られるビデオ圧縮のための標準を参照する。Ｈ．２６４は、ＩＴＵ−Ｔビデオコーディング専門家グループ(Video Coding Experts Group)（ＶＣＥＧ）及びＩＳＯ／ＩＥＣ動画像専門家グループ(Moving Picture Experts Group)（ＭＰＥＧ）によって作成されたブロック指向のモーション推定ベースのコーデックの１つである。
【００２０】
１つの実施形態においては、ＵＶＤのデコード段階３０４〜３１４は、ＧＰＵ２０６から出力されＣＰＵ２０４へ入力されるデコードされたビットストリームの複写を可能にするように構成される。これにより、ＣＰＵがＣＰＵ内でエンコーディングステップ３１８〜３２４を実行することが可能になる。この実施形態のために、ビデオスケーラ３１６からの出力はＣＰＵメモリ２０８へ出力される。これにより、データの複写がＧＰＵ及びＣＰＵの両方に対して必ず利用可能に作成されるので、システムはＧＰＵ及びＣＰＵの間で処理負荷を共有することが可能になる。ＵＶＤハードウエアを用いるエンコーディング処理は、ＣＰＵによる使用のために複写を高速で作成することを可能にする。これにより、ＧＰＵ及びＣＰＵの両方によって画像の複写を別個に維持することが可能になる。従って、ＧＰＵ及びＣＰＵの両方によってなされる任意の共有に係る処理は、２つのユニットの間での全部の画像の伝送よりもむしろ特定の情報の共有を含む。このことは、入力ビデオビットストリームに対して共有されたＣＰＵ／ＧＰＵ動作のために必要な帯域オーバーヘッドを大幅に低減する。
【００２１】
図３のスケーラ３１６は、入力画像を取り込みそれを規定の率でリサイズする任意の適切なスケーラプロセス又は回路において具現化される。概して、画像スケーリングは、ビデオの画像サイズを変化させることを備えており、そしてサイズ変更(transsizing)としても知られている。スケーリングステップは随意的であり、そして出力解像度がメディア解像度と異なる場合に用いることができる。スケーラは、異なる種類のデバイスの間での再生に対して画像を調節するために用いることができる。例えば、高精細度(High Definition)（ＨＤ）テレビジョン伝送は、典型的には、１２８０×７２０画素から１９２０×１０８０画素までのサイズである。しかし、デジタル映画（映画館での投影）及びデジタル中間ファイル（ハリウッドプロダクションスタジオで内部的に用いられるフォーマット）の精細度は、概ね３０００×４０００画素にまで高くなり得る。スケーラプロセスはＣＰＵスケーラ又はＧＰＵスケーラとして実装することができ、これらはハードウエアスケーラ又はプログラム可能画素シェーダであってよい。
【００２２】
デコーディングの第２の方法が実施される実施形態に対して、即ち、ＣＰＵ及びＧＰＵの両方においてデコーディングが実行されるソフトウエアプラスグラフィックスチップソリューションに対して、マイクロソフト社によって規定されるダイレクトＸビデオアクセラレーション(DirectX Video Acceleration)（ＤＸＶＡ）インタフェースの使用を通して実施され得る２つの可能なバリエーションがある。ＤＸＶＡは、ビデオデコーディングがハードウエア加速されることを可能にし且つデコーダがどのようにＧＰＵ上にある部分部分にアクセスするかを指定するＡＰＩ（アプリケーションプログラムインタフェース）仕様である。それにより、デコーダは幾つかの（例えば最後の２つ又は３つの）デコードパイプライン段階の負荷を解除してこれらをＧＰＵに課すことが可能になり、その後、データはＧＰＵ上に存在するのですぐに表示することができる。パイプラインは、ｉＤＣＴ、モーション補償、デインターレーシング及び色補正のような特定のＣＰＵ集約的な動作の負荷を解除してこれらをＧＰＵに課すことが可能である。
【００２３】
ＤＸＶＡはシステムのビデオカードによって用いられるビデオレンダリング(rendering)モデルと連動して動作する。ＤＸＶＡは、コーデックのハードウエア加速されたデコーディング及びレンダリングのための特定コーデック向けパイプライン(codec-specific pipeline)を定義するためにソフトウエアビデオデコーダによって用いられる。パイプラインは、メディアストリームを構文解析すること(parsing)及びＤＸＶＡ互換構造への変換のために用いられるＣＰＵで起動する。ＤＸＶＡは、ハードウエア加速され得る一連の動作と、グラフィックドライバが動作を加速するために実装し得るデバイスドライバインタフェース（ＤＤＩ）とを指定する。コーデックが任意の支援された動作を必要とする場合には、コーデックは、それらの動作のハードウエア加速された実装にアクセスするためにそれらのインタフェースを用いることができる。デコードされたビデオはハードウエアビデオレンダラー(hardware video renderer)に渡され、そこではデバイスにレンダリングされる前に更なる後処理が適用されてよい。ＤＸＶＡはモーション補償３０８ＤＤＩを指定し、当該ＤＤＩは、ｉＤＣＴ動作３０６、ハフマンコーディング、色補正、モーション補償、アルファブレンディング、逆量子化色空間変換、及びフレームレート変換、その他の動作のためのインタフェースを指定する。
【００２４】
一般的に、ＤＸＶＡ＿ＡＰＩはマイクロソフトウインドウズ互換処理プラットフォームのために用いられる。他のオペレーティングシステムを用いる処理プラットフォームに対しては、ＤＸＶＡ同等インタフェースが用いられてよい。そのようなインタフェースは、特定のデコードパイプライン段階の負荷を解放してそれをＧＰＵに課す任意のＡＰＩであってよい。リナックス(Linux)互換処理プラットフォームに対しては、ＡＰＩは例えばＸビデオモーション補償(X-Video Motion Compensation)（ＸｖＭＣ）ＡＰＩを通して実装されてよい。ＸｖＭＣはＸウインドウシステム(X Window System)のためのＸビデオ拡張（Ｘｖ）の拡張であり、ビデオプログラムがビデオデコーディングプロセスの部分部分の負荷を解放してそれらをＧＰＵに課すことを可能にする。
【００２５】
ＣＰＵがエントロピーデコーディングプロセス３０４を実行し、ＧＰＵがｉＤＣＴ３０６ステップ及びモーション補償３０８ステップ以降を実行する実施形態に対して、ＤＸＶＡ＿ＡＰＩは、デコーダ３０４からｉＤＣＴ３０６及びモーション補償３０８プロセスの各々へ伝送される情報を決定する。ＤＸＶＡ＿１．０及び２．０のようなＤＸＶＡの種々の異なるバージョンが利用可能であってよい。ＵＶＤがエントロピーデコードプロセス３０４以降のステップを実行する実施形態においては、ＤＸＶＡ＿２．０＿ＡＰＩ仕様が用いられてよい。
【００２６】
デコーディングパイプラインの実施形態は、２つ以上のビットストリームが処理される場合におけるビデオトランスコード及び編集アプリケーションに適用することができる。デコードプロセスに対しては、異なる選択、即ちＣＰＵのみ、ＣＰＵプラスＧＰＵ、ＵＶＤが利用可能であり、あるいはＤＸＶＡ＿１．０又は２．０＿ＡＰＩの使用は、例えば各々が異なる場面を表し得る多重ビットストリームを用いることのあるビデオ編集アプリケーションを容易にする。
【００２７】
図４は実施形態に従いビデオデコードプロセスを実施するビデオ編集パイプラインを表している。システム４００に対しては、２つのビットストリーム４０２及び４０８がそれぞれのビデオデコードプロセス４０４及び４１２へ入力される。各デコードされたストリームは、次いでそれぞれのビデオスケーラプロセス４０６及び４１４においてスケーリングされる。ビットストリーム４０２及び４０８が、ブレンドされるべき画像又は場面を表している場合には、デコードされ且つスケーリングされたデータは、次いでビデオブレンド及び効果プロセス４１６へ入力される。ブレンドされた画像データは次いで、ディスプレイ４２２へ送られ、あるいはビデオエンコーダプロセス４１８を用いて異なるフォーマットへエンコードされてビットストリーム４２０における第２のフォーマットのデータを生成する。随意的なディスプレイは、エンコーディングに先立つ出力ビットストリーム４２０のプレビュー(previewing)を可能にする。２つの入力ビットストリーム４０２及び４０８は、背景及び最前面の画像のような互いにブレンドされるべき２つのビデオ場面を表してよく、あるいはそれらは、１つの場面（ビットストリーム＃１）の他の場面（ビットストリーム＃２）への推移の間における重複の例を表すことができる。
【００２８】
図４のビデオ編集パイプラインにおいては、ビデオデコードプロセス４０４及び４１２の各々は、上述のビデオデコード方法の１つを実施する。これらのビデオデコードプロセスは、両方とも同じデコード方法を実施して（例えばであるが、ＵＶＤを使用して）よく、あるいはそれらは異なるデコード方法を実施してよい。例えば、一方のデコードプロセス（例えばビデオデコード４０４）はＵＶＤベースのデコードプロセスを利用してよい一方で、他方のデコードプロセスは、ＣＰＵのみをベースとする又はＣＰＵ及びＧＰＵをベースとするデコードプロセスを利用する。これにより、ＵＶＤ又は他のデコードプロセスが、同時には多すぎる入力ビットストリームによって過負荷にならないことを確実にすることができる。
【００２９】
図４には２つのビットストリームが図示されているが、システムの要求及び制約に応じて任意の数のビットストリームが可能であることは特記しておくべきであろう。一般的に、入力ビデオビットストリームのフォーマットは、その入力ビットストリームに対するデコードプロセスのためにエンコーディングプロセス４０４又は４１６のどちらの種類が用いられるのかを指示しているであろう。全体的なビデオ編集アプリケーションにおいては、単一のビットストリームが２つ以上のフォーマットでエンコードされることがある場合であっても、ビデオエディタは、入力ビットストリームの単一又は複数のフォーマットに基いてパイプライン４００を再構築してよい。
【００３０】
ブレンディングプロセス４１６は、ＧＰＵ上で利用可能な任意の組み込み(built-in)ブレンディング能力を利用してよい。例えば、ＧＰＵは、常駐のプロセスを用いるテクスチャ(textures)のブレンディングを可能にするテクスチャ処理能力を含んでいてよい。ビデオブレンド及び効果プロセス４１６内で提供されるビデオ効果は、既知のビデオエディタによって提供される特定の商業的に利用可能な効果、例えば左から右へのブレンディング、上から下へのブレンディング、又は他の遷移効果を含んでいてよい。
【００３１】
ビデオデコード方法の実施形態は、標準的な予測ＭＰＥＧスキームに適用することができる。ビデオストリームを処理する場合、ＭＰＥＧエンコーダは３種類のコード化されたフレームを生成する。第１の種類のフレームは「Ｉ」フレーム又はイントラコード化フレーム(intra-coded frame)と称される。これは最も単純な種類のフレームであり、そして静止画像のコード化された表現である。一般的にＩフレームに対しては処理は実行されず、それらの目的は、次の一連のフレームをデコーディングするための開始点をデコーダに提供することである。第２の種類のフレームは「Ｐ」フレーム又は予測されたフレームと称される。デコーディングに際して、Ｐフレームは、複数の先行するＰフレーム又はＩフレームに含まれる情報から生成される。第３の種類のフレームは「Ｂ」フレーム又は双方向性フレームであり、最もありふれた種類のものである。Ｂフレームは前方及び後方の両方へ予測されるものであり、そして最後の及び次のＰ又はＩフレームから構成される。Ｐフレーム及びＢフレームは両方ともインターコード化フレーム(inter-coded frames)である。コーデックエンコーダは、ストリームをＩＰＢＢ…等のようにエンコードすることができる。デジタルビデオ伝送においては、Ｂフレームはしばしば用いられない。この場合、シーケンスは、Ｉフレームとこれらに続く幾つかのＰフレームとのみから構成される。この実施形態に対しては、最初のＩフレームはロスレスとしてエンコードされ、そして全ての後続のＰフレームの何割かはロスレス圧縮でエンコードされ、また何割かは変更なしでエンコードされる。
【００３２】
ＭＰＥＧ及び類似のシステムにおいては、デコーディングはデコード順序で生成順フレームをフレーム化し、デコード順序はそれらが表示されることになる順序とは異なる。この場合、図４のビデオエディタパイプラインは、デコードプロセスの後のフレームの適切な順序付けを容易にするために、１つ以上のフレームプール(frame pools)を含んでいてよい。図５は実施形態に従いビデオデータデコーディングのためにフレームプールすることを含むビデオ編集パイプラインを示している。システム５００内に示されるように、ビデオスケーラ５０２及び５０６からの出力はそれぞれのフレームプール５０４及び５０８へ入力される。これらのフレームプールはフレームをプールアップし、そして適切なディスプレイ順序で出力ストリームを生成する。従って、図５に示されるように、フレームはフレームプール５０４及び５０８内へデコード順序で入力され、そして任意の更なるブレンディング及び効果処理５１０のために適切なディスプレイ順序で出力される。代替的には、両方のストリームがデコード順序でブレンドされてよいが、両方のストリームが正確に同一なデコード順序を有しており且つ適切に同期化されている場合に限っては、しばしば異なる。このように、フレームをプールすることの後にブレンドすることは、多くの場合により有利である。
【００３３】
出力ストリームは次いでエンコードされてよく、あるいはフレームレート論理プロセス５１２を介して随意的なディスプレイ５１４へ送られてよい。フレームレート論理プロセス５１２は、システムの処理機能及びディスプレイ機能を最適化するために、フレーム処理能力をディスプレイレート能力、即ちディスプレイのリフレッシュレートに適合させる。
【００３４】
図６は実施形態に従いビデオ及びオーディオの両方のコンテンツを含むコンテンツのための完全トランスコーディングパイプラインを示している。図６の実施形態は単一のパイプラインを示しているが、いくつのビットストリーム及びデコーダプロセスが利用可能かに応じて多重チャネルも可能である。システム６００においては、入力オーディオ／ビデオビットストリーム６０２はデマルチプレクサ回路６０４へ入力され、デマルチプレクサ回路６０４はオーディオコンテンツをビデオコンテンツから分離する。ビデオコンテンツはビデオデコードプロセス６０６へ送られ、次いでビデオスケーラ６０８においてスケーリングされる。スケーリングされエンコードされたビデオデータは、次いでビデオエンコーダ６１０によって第２のフォーマットでエンコードされる。エンコードされたビデオデータは次いでオーディオデータとマルチプレクシング６１２され、出力ビットストリーム６１４を生成する。デマルチプレクサ６０４によって元のビットストリーム６０２から分離されたオーディオデータ６１６は、ビデオデータと同様にそれ自身をトランスコードされてよく、あるいは何も変化させずに、トランスコードされたビデオデータと再結合するために通過させられてよい。デジタルオーディオトランスコーディングは、データのサンプリングを減少させるため、エンコーディングスキーム（例えばドルビー(Dolby)フォーマット）を変更するため、効果的な記憶又は伝送に対して品質を下げるため、及び他の効果のために用いられてよい。ビデオデータをトランスコードするビデオデコード機能６０６に対しては、上述した任意のデコード方法を用いることができる。
【００３５】
トランスコーディングプロセスの実施形態は、ハードウエア構造及びソフトウエア構造の幾つかの組み合わせを用いてデコーディングの選択を可能にする。図７は実施形態に従い多重デコードプロセスを用いてデジタルビデオデータをトランスコーディングする全体的な方法を示すフローチャートである。図７の方法は、入力ビットストリームを受信するトランスコーダパイプラインと共にブロック７０２で始まり、入力ビットストリームは第１のエンコーディングスキームに従って既にフォーマットされている。単一チャネルのトランスコーダパイプラインに対しては、単一のビットストリームが受信されてそしてトランスコードされるが、多重ビットストリームをトランスコードするために、任意の実用的なチャネル数が提供されてよい。入力ビットストリームは、複数の可能なデコーディングスキームの１つに従ってブロック７０４でデコードされる。第１のデコーディングスキームは、ブロック７０６ａでＵＶＤ＿ＧＰＵハードウエアシステムを利用し、第２のデコーディングスキームは、ブロック７０６ｂで、ＡＰＩ（例えばＤＸＶＡ、ＸｖＭＣ、又は類似のＡＰＩ）を用いるＧＰＵプログラム可能デコーダを介してＧＰＵ資源及びＣＰＵ資源の両方を利用し、そして第３のデコーディングスキームは、ブロック７０６ｃで、いかなるＧＰＵ支援もなしに１つ以上のＣＰＵを排他的に用いる。スケーリングされデコードされたビットストリームは、次いでブロック７１０で第２のフォーマットへエンコードされる。エンコーディングプロセスは、ステップ７１２ａで多重ＧＰＵコアを用いて実行することができ、あるいはステップ７１２ｂで多重ＣＰＵコアを用いて実行することができる。
【００３６】
１つの実施形態においては、デコーディングスキーム７０６ａ〜ｃの選択肢は、ユーザによって明示的に選択されてよいし、あるいは処理システムにおいて実行されるプロセスによって自動的に選択されてよい。自動的なプロセスは、利用可能な資源に応じてデコーディングプロセスを選択してよい。例えば、ＵＶＤが利用可能であれば、自動的なプロセスは、ＵＶＤが排他的にデコーディングに対して用いられることを指示してよい。また、定義されたデフォルト及び１つ以上のバックアップ方法があってよく、例えばＵＶＤが利用可能ではない場合を除いてデフォルトによってＵＶＤを用いるデコード等であり、上記の場合デコードはＣＰＵのみを用いる。スケーラプロセスもまた、デコードスキームに応じて自動的なプロセスに基いて選択されてよい。例えば、ＵＶＤがデコーディングのために用いられる場合には、ＵＶＤはスケーリングに対しても用いられるべきであるし、またＣＰＵがデコーディングのために用いられる場合には、ＣＰＵはスケーリングに対しても用いられるべきである。
【００３７】
トランスコードシステム及び方法の実施形態は、エンコーディングのためのＧＰＵの使用をデコーディング及びスケーリングのためのＧＰＵの使用と組み合わせる。システムはＧＰＵハードウエアのＵＶＤ部分の使用を可能にし、ハードウエアベースのｉＤＣＴ及びＭＰＥＧ−２に対するモーション補償機能と共に、Ｈ．２６４又はＶＣ−１エンコードされたビデオデータをデコードする。システムはまた、デコード動作を容易にするための既存の標準的なマイクロソフトＡＰＩ（ＤＸＶＡ＿１．０及び２．０）の使用を可能にする。ビデオをスケーリングする中間的な及び随意的なステップ（例えば１つの解像度から他へのリサイジング）もまた、ＧＰＵ機能を採用する。トランスコードパイプラインはまた、多重ストリームをデコーディングし且つブレンディング又は例えばビデオ編集のための特別な効果の動作を実行する能力を追加する。これらの動作はＧＰＵ資源を用いることもできる。
【００３８】
トランスコードパイプラインを具現化している図２の処理プラットフォームは、デジタルビデオデータについて生成し、再生し、又は他の処理をすることが可能な任意の種類のコンピュータデバイス内に実装され得る。そのようなコンピュータデバイスは、コンピュータ又は携帯型のコンピュータデバイス若しくは通信デバイス、例えばノート型コンピュータ、パーソナルデジタルアシスタンス（ＰＤＡ）、携帯電話、ゲーム機、又は十分な処理、通信、及び制御の能力若しくはＡＶ（オーディオビジュアル）再生能力を伴う任意の同様のクラスの携帯型コンピュータデバイスであってよい。コンピュータデバイスは、他のコンピュータデバイス、資源、又はデータ記憶装置と直接的に又はインターネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、若しくはそれらの任意の組み合わせからなるであろう１つ以上のネットワークを介して間接的に結合されていてよい。
【００３９】
実施形態は、入力フォーマットが未加工の画素にデコードされ、次いで、異なる又は同一のコーデックに、異なる解像度又は同一の解像度で、そして異なるビットレート若しくは同一のビットレートで又は種々の品質設定で再エンコードされる全てのトランスコーディングに適用可能である。トランスコーディング動作は圧縮されたドメイントランスコーディングであってよく、圧縮されたドメイントランスコーディングは、ＤＶＤビデオを例えばＤＶＤバックアッププログラムのために圧縮するプログラムによって用いられる方法である。
【００４０】
ここに説明される実施形態はトランスコーディングアプリケーションを対象にしてきたが、そのような実施形態はまた、トランスレーティング(transrating)のような他のアプリケーションにも適用可能であることを特記しておく。例えば、低ビットレートトランスレーティングは、ビデオフォーマットを変更することなしにファイルが低ビットレートに符号化されるトランスコーディングと類似するプロセスであり、サンプルレート変換を含むことができるが、高い圧縮を除いて同一のサンプリングレートを用いてもよい。トランスレーティングは、所与のメディアをより小さな記憶スペースに収めるために用いることができ、例えばＤＶＤコンテンツをビデオＣＤに納め、あるいはより狭帯域なチャネルを介してコンテンツを伝送するために用いることができる。
【００４１】
処理システムに対して専用の又は集積化されたグラフィックスレンダリングデバイスであるＧＰＵデバイス又はビジュアル処理ユニット（ＶＰＵ）を備えたグラフィックスシステムを参照して実施形態が説明されてきたが、そのような実施形態は、並列で用いられる他の多くの種類のビデオ生成エンジンに対しても用いることができることは特記しておくべきである。そのようなビデオ生成エンジンは、デジタルプロジェクタのようなディスクリートビデオジェネレータの形態で実装されてよく、あるいは個別のＩＣ（集積回路）デバイスの形態で提供される電子回路又はビデオベースのコンピュータシステムのためのアドオン(add-on)カードとして提供される電子回路であってよい。
【００４２】
１つの実施形態においては、ＧＰＵ／ＣＰＵ処理プラットフォームを含むシステムは、パーソナルコンピュータ、ワークステーション、ハンドヘルドコンピュータデバイス、デジタルテレビジョン、メディア再生デバイス、スマート通信デバイス、及びゲーム機、又は任意の他の類似の処理デバイスからなるグループから選択されるコンピュータデバイスを備えている。
【００４３】
ここに開示される実施形態は、ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードするための装置を備えており、装置は、第１のデジタルフォーマットでエンコードされたビデオストリームを受信し且つデコードされたビデオストリームを生成するデコーダであって、グラフィックス処理ユニット（ＧＰＵ）回路を利用し且つＧＰＵ回路とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及び中央処理ユニット（ＣＰＵ）ソフトウエアデコーダの少なくとも１つとの組み合わせを通して実装されるデコーダと、デコードされたビデオストリームの画像サイズを変更してスケーリングされデコードされたビデオストリームを生成するスケーラであって、ＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装されるスケーラと、スケーリングされデコードされたビデオストリームを受信し且つ第２のデジタルフォーマットでエンコードされた出力ストリームを生成するエンコーダとを備えている。
【００４４】
実施形態においては、ビデオストリームは、少なくとも１つのＧＰＵ及び１つのＣＰＵを含むプロセッサプラットフォームを備えているトランスコーディングパイプラインシステムにおいて受信される。
【００４５】
実施形態においては、ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つデコード動作の第２の部分がＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えている。
【００４６】
実施形態においては、ＧＰＵプログラム可能デコーダは、ＣＰＵによって実行される所定の動作の負荷をＧＰＵにより実行されるように解放することによってデコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む。
【００４７】
実施形態においては、第１のデジタルフォーマットの前記ビデオストリームは複数のビデオビットストリームからなり、当該デコーダコンポーネントは複数のデコーダコンポーネントからなり、複数のビデオビットストリームの各々は対応するデコーダコンポーネントへ入力される。
【００４８】
実施形態は、複数のビデオビットストリームを、規定されたブレンディング効果に従ってブレンドされた出力ストリームに組み合わせるビデオブレンディングコンポーネントを更に備えている。
【００４９】
実施形態においては、複数のビデオビットストリームはＭＰＥＧビデオデータからなり、装置はＭＰＥＧフレームのデコード順序をディスプレイ順序へ再順序付けする複数のフレームプールを更に備えている。
【００５０】
実施形態においては、出力ストリームはディスプレイデバイスへ伝送される。
【００５１】
実施形態は、ブレンドされた出力ストリームのフレームレートをディスプレイデバイスのリフレッシュレートに整合させるフレームレート論理コンポーネントを更に備えている。
【００５２】
実施形態においては、スケーリングされデコードされたビデオストリームはＣＰＵに結合されたメモリデバイスへ伝送される。
【００５３】
実施形態においては、スケーリングされデコードされたビデオストリームの第１の複写はＣＰＵに対して利用可能であり、スケーリングされデコードされたビデオストリームの第２の複写はＧＰＵに対して利用可能である。
【００５４】
実施形態においては、ビデオストリームはオーディオチャネルを含み、装置は、ビデオストリームを備えているビデオフレームからオーディオチャネルをデコードされたビデオストリームの生成に先立ち分離するデマルチプレクサと、オーディオチャネルを第２のデジタルフォーマットでエンコードされた出力ストリームへ加え戻すと共にエンコーダにおいてエンコードするマルチプレクサとを更に備えている。
【００５５】
実施形態においては、オーディオチャネルは出力ストリームへ加え戻される前に第１のオーディオフォーマットから第２のオーディオフォーマットへトランスコードされる。
【００５６】
ここに説明される実施形態は、ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードする方法を更に含み、方法は、第１のデジタルフォーマットでエンコードされたビデオストリームをデータストアから受信することと、受信したビデオストリームをデコードしてデコードされたビデオストリームを生成することと、デコードされたビデオストリームの画像サイズをスケーリングしてスケーリングされデコードされたビデオストリームを生成することと、スケーリングされデコードされたビデオストリームをエンコードして第２のデジタルフォーマットでエンコードされた出力ストリームを生成することとを備えており、当該デコーディング方法はグラフィックス処理ユニット（ＧＰＵ）資源及び中央処理ユニット（ＣＰＵ）資源の組み合わせを通して実施され、デコーディング方法はＧＰＵ資源とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及びＣＰＵソフトウエアデコーダの少なくとも１つとの組み合わせを利用し、当該スケーラはＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装される。
【００５７】
実施形態は、ＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、又はＣＰＵソフトウエアデコーダの１つを用いる適切なデコーディング方法を選択することを更に備えている。
【００５８】
実施形態においては、選択するステップは、ユーザ選択、自動的なプロセス、又は第１のデジタルフォーマットによる決定の１つによって実行される。
【００５９】
実施形態は、スケーリングされデコードされたビデオストリームの第１の複写がＣＰＵに対して利用可能であり且つスケーリングされデコードされたビデオストリームの第２の複写がＧＰＵに対して利用可能であるように、ＣＰＵ及びＧＰＵを含む処理プラットフォーム上のＣＰＵに結合されるメモリデバイスへスケーリングされデコードされたビデオストリームを送信することを更に備えている。
【００６０】
実施形態においては、ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つ前コード動作の第２の部分がＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えており、ＧＰＵプログラム可能デコーダはＣＰＵによって実行される所定の動作の負荷をＧＰＵにより実行されるように解放することによってデコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む。
【００６１】
実施形態においては、第１のデジタルフォーマットのビデオストリームは複数のビデオビットストリームからなり、当該デコーダコンポーネントは複数のデコーダコンポーネントからなり、複数のビデオビットストリームの各々は対応するデコーダコンポーネントへ入力され、方法は、複数のビデオビットストリームを、規定されたブレンディング効果に従ってブレンドされた出力ストリームにブレンドすることを更に備えている。
【００６２】
実施形態においては、複数のビデオビットストリームはＭＰＥＧビデオデータからなり、方法は、ＭＰＥＧフレームのデコード順序をディスプレイ順序へ再順序付けするフレームプールへプールすることと、出力ストリームをディスプレイデバイスへ伝送することとを更に備えている。
【００６３】
実施形態は、ブレンドされた出力ストリームのフレームレートをディスプレイデバイスのリフレッシュレートに整合させることを更に備えている。
【００６４】
ここに説明される実施形態はビデオ処理システムを更に含み、ビデオ処理システムは、中央処理ユニット（ＣＰＵ）と、ＣＰＵに結合されるグラフィックス処理ユニット（ＧＰＵ）と、ビデオストリームを第１のデジタルフォーマットから第２のデジタルフォーマットへトランスコードするビデオトランスコーダパイプラインとを備えており、トランスコーダパイプラインは、第１のデジタルフォーマットでエンコードされたビデオストリームを受信し且つデコードされたビデオストリームを生成するデコーダであって、グラフィックス処理ユニット（ＧＰＵ）回路を利用し且つＧＰＵ回路とＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、及び中央処理ユニット（ＣＰＵ）ソフトウエアデコーダの少なくとも１つとの組み合わせを通して実装されるデコーダと、デコードされたビデオストリームの画像サイズを変更してスケーリングされデコードされたビデオストリームを生成するスケーラであって、ＣＰＵスケーラ又はＧＰＵスケーラの一方を通して実装されるスケーラと、スケーリングされデコードされたビデオストリームを受信し且つ第２のデジタルフォーマットでエンコードされた出力ストリームを生成するエンコーダとを備えている。
【００６５】
実施形態においては、ＧＰＵハードウエアデコーダは、デコード動作の第１の部分がＧＰＵハードウエアによって実行され且つデコード動作の第２の部分がＧＰＵ内のプログラム可能ＧＰＵシェーダによって実行されるハードウエア／プログラム可能ビデオプロセッサを備えている。
【００６６】
実施形態においては、ＧＰＵプログラム可能デコーダは、ＣＰＵによって実行される所定の動作の負荷をＧＰＵにより実行されるように解放することによってデコーダがハードウエア加速されることを可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含む。
【００６７】
実施形態においては、ＧＰＵハードウエアデコーダ、ＧＰＵプログラム可能デコーダ、又はＣＰＵソフトウエアデコーダの１つを用いる適切なデコーディング方法が、ユーザ選択、自動的なプロセス、又は第１のデジタルフォーマットによる決定の１つを通して選択される。
【００６８】
ここに説明されるシステムの種々の側面は、任意の種類の回路内にプログラムされる機能性として実装されてよく、そのような回路は、プログラム可能論理デバイス（ＰＬＤ）、例えばフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、プログラム可能アレイ論理（ＰＡＬ）デバイス、電気的にプログラム可能な論理デバイス及びメモリデバイス、並びに標準的なセルベースのデバイスの他に、特定用途向け集積回路を含む。種々の側面を実装するための幾つかの他の可能性は、メモリデバイス、メモリ（例えばＥＥＰＲＯＭ）を伴うマイクロコントローラ、組み込み型マイクロプロセッサ、ファームウエア、ソフトウエア、等を含む。また、ビデオトランスコーディングシステムの種々の側面は、ソフトウエアベースの回路エミュレーション、個別論理（シーケンシャル及び組み合わせの）、特別注文デバイス、ファジー（ニューラル）論理、量子デバイス、及び上述のデバイス種類の任意の混成を有するマイクロプロセッサ内で具現化され得る。基本となるデバイス技術は、種々のコンポーネント種類、例えば相補型金属酸化物半導体（ＣＭＯＳ）のような金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）、エミッタ結合論理（ＥＣＬ）のようなバイポーラ技術、ポリマー技術（例えば、シリコン共役ポリマー（silicon-conjugated polymer）及び金属共役ポリマー金属（metal-conjugated polymer-metal）の構造）、アナログ及びデジタル混合、等において提供され得る。
【００６９】
ここに開示される種々の機能は、ハードウエア、ファームウエアの任意の数の組み合わせを用いて、且つ／又は種々の機械可読媒体又はコンピュータ可読媒体において具現化されるデータ及び／又は命令として、それらの挙動、レジスタ転送、論理コンポーネント、及び／又は他の特性に関して説明され得ることもまた特記しておくべきであろう。そのようにフォーマットされたデータ及び／又は命令が具現化されるコンピュータ可読媒体は、限定はされないが、種々の形態にある不揮発性記憶媒体（例えば、光学的な、磁気的な、又は半導体の記憶媒体）、及びワイヤレスな、光学的な、若しくは有線の信号媒体又はそれらの組み合わせを介してそのようにフォーマットされたデータ及び／又は命令を転送するために用いられ得る搬送波を含む。そのようにフォーマットされたデータ及び／又は命令の搬送波による転送の例は、限定はされないが、１つ以上のデータ転送プロトコル（例えば、ＨＴＴＰ、ＦＴＰ、ＳＭＰＴ、等）によるインターネット及び／又は他のコンピュータネットワークを介した転送（アップロード、ダウンロード、ｅメール、等）を含む。
【００７０】
明細書及び特許請求の範囲を通して、「備える(comprise)」、「備えている(comprising)」等の語は、文脈が明らかに別のものを必要としていない限り、排他的又は網羅的な意味とは対照的な包括的な意味、即ち、「限定されないが、〜を含んでいる(including, but not limited to)」の意味で解釈されるべきである。単数又は複数を使用する語はまた、複数又は単数をそれぞれ含む。また、「ここに」、「以下に」、「上記の、上述の」、「以下の」という語及び類似の意味の語は、この出願のいずれか特定の部分ではなくこの出願を全体として参照している。「又は、若しくは、あるいは(or)」の語が、２つ又はそれより多い項目のリストを参照して用いられている場合、当該語は、当該語の以下の解釈、即ちリスト内の任意の項目、リスト内の全ての項目、及びリスト内の項目の任意の組み合わせの全てを網羅する。
【００７１】
ビデオトランスコーディングシステムの例示された実施形態の上記説明は、網羅的であることを意図されておらず、あるいは開示される厳密な形態又は指示に本発明を限定することを意図されていない。グラフィック処理ユニット又はＡＳＩＣの具体的な実施形態、及びそのための例が例示を目的としてここに説明されるが、関連分野を含む当業者が認識するであろうように、種々の均等な修正が、開示される方法及び構造の範囲内で可能である。
【００７２】
上述の種々の実施形態の要素及び作用は、更なる実施形態を提供するために組み合わされ得る。これらの及び他の変更は、上述の詳細な説明を考慮して、開示されるシステムに対してなされ得る。
【００７３】
一般に、以下の特許請求の範囲では、使用される用語は、開示される方法を明細書及び特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではない一方で、特許請求の範囲の下で動作する全ての動作及びプロセスを含むように解釈されるべきである。従って、開示される構造及び方法は開示によって限定されるものではなく、その代わり、記載されている方法の範囲はもっぱら特許請求の範囲によって決定されることになる。
【００７４】
開示される実施形態の特定の側面が特定の請求項の形態で以下に提供されるが、発明者は、方法論の種々の側面を任意の数の請求項の形態で検討している。例えば、１つの側面のみが機械可読媒体において具現化されるものとして記載されているかもしれないが、他の側面も同様に機械可読媒体において具現化され得る。従って、発明者は、本出願の出願後に追加的な請求項を加えて他の側面に対するそのような追加的な請求項の形態を追求する権利を留保する。
【図１】
2012508485.tif 000003
【図２】
2012508485.tif 000004
【図３】
2012508485.tif 000005
【図４】
2012508485.tif 000006
【図５】
2012508485.tif 000007
【図６】
2012508485.tif 000008
【図７】
2012508485.tif 000009
【国際調査報告】
2012508485.tif 000010
2012508485.tif 000011
2012508485.tif 000012