(57)【要約】      （修正有）【課題】システムメモリ及びＧＰＵメモリの経路上のバス等の構成要素におけるボトルネックを軽減する。【解決手段】グラフィックス処理ユニット（ＧＰＵ）がマルチメディア信号を表すデジタル値を外部ソースから受け取り、そのデジタル値を符号化し、符号化された値をＲＡＭに格納する。ＲＡＭは、ＣＰＵによって実行される命令を格納することもできる。デジタル値がＲＡＭに格納されることなくＧＰＵによって受け取られるので、ボトルネックを軽減することができる。【選択図】図３
2009017535.tif 000002
【特許請求の範囲】
【請求項１】
外部ソースによって提供されるマルチメディア信号を処理するデバイスであって、
前記外部ソースに接続するインタフェースと、
複数の命令を格納するランダムアクセスメモリ（ＲＡＭ）と、
前記複数の命令を実行する中央処理ユニット（ＣＰＵ）と、
前記マルチメディア信号を表す複数のデジタル値を前記外部ソースから受け取り、前記複数のデジタル値を符号化して複数の符号化された値を生成し、前記複数の符号化された値を前記ＲＡＭに格納するグラフィックス処理ユニット（ＧＰＵ）と、
を備え、
前記複数のデジタル値が、前記ＲＡＭに格納されることなく前記ＧＰＵによって受け取られる、
デバイス。
【請求項２】
ＧＰＵメモリを更に備えており、
前記ＧＰＵが、前記符号化を実行する前に、前記複数のデジタル値を前記ＧＰＵメモリに格納する、
請求項１に記載のデバイス。
【請求項３】
前記複数のデジタル値が、前記インタフェースから受け取られる未加工のデータを構成する、請求項１に記載のデバイス。
【請求項４】
前記ＧＰＵが、前記マルチメディア信号のうちの複数の連続する部分の各々に対応する符号化されたデータの格納を完了した時点で、前記ＣＰＵに通知する、請求項１に記載のデバイス。
【請求項５】
外部ソースによって提供されるマルチメディア信号を符号化する方法であって、
前記マルチメディア信号を符号化するためのコマンドをグラフィックス処理ユニット（ＧＰＵ）に送るステップと、
前記マルチメディア信号を表す複数のデジタル値を前記外部ソースから前記ＧＰＵにおいて受け取るステップと、
前記ＧＰＵにおいて前記複数のデジタル値を符号化して複数の符号化された値を生成するステップと、
前記複数の符号化された値を前記ＧＰＵによってシステムメモリに格納するステップと、
を含む方法。
【請求項６】
前記ＧＰＵが、前記複数のデジタル値をＧＰＵメモリに格納する、請求項５に記載の方法。
【請求項７】
前記複数のデジタル値が、前記インタフェースから受け取られる未加工のデータを構成する、請求項５に記載の方法。
【請求項８】
前記ＧＰＵが、前記マルチメディア信号のうちの複数の連続する部分の各々に対応する符号化されたデータの格納を完了した時点で、前記ＣＰＵに通知する、請求項５に記載の方法。
【請求項９】
前記外部ソースのためのデバイスドライバに組み込まれている、請求項５に記載の方法。
【請求項１０】
前記ＧＰＵが、符号化を停止するためのコマンドを前記ＣＰＵから受け取ったか否かを調べる、請求項５に記載の方法。
【請求項１１】
実行時に一以上のプロセッサに外部ソースによって提供されるマルチメディア信号を処理させる複数の命令を含むコンピュータ可読媒体であって、
前記マルチメディア信号を符号化するためのコマンドをグラフィックス処理ユニット（ＧＰＵ）に送るためのコードと、
前記マルチメディア信号を表す複数のデジタル値を前記ＧＰＵにおいて前記外部ソースから受け取るためのコードと、
前記ＧＰＵにおいて前記複数のデジタル値を符号化して複数の符号化された値を生成するためのコードと、
前記複数の符号化された値を前記ＧＰＵによってシステムメモリに格納するためのコードと、
を備えるコンピュータ可読媒体。
【請求項１２】
前記送るためのコードが、前記コマンドを送るドライバソフトウェアを含んでいる、請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記複数のデジタル値が符号化されるときに別のコードによって呼び出されるように設計されたプロシージャであるユーザアプリケーションコードを更に備えており、
前記プロシージャが、前記符号化を実行することなくリターンする、
請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
前記ＧＰＵが、前記マルチメディア信号のうちの複数の連続する部分の各々に対応する符号化されたデータの格納を完了した時点で、前記ＣＰＵに通知するためのコードを更に備える、請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
符号化を停止するためのコマンドを前記ＣＰＵから受け取ったか否かを前記ＧＰＵによって調べるためのコードを更に備える、請求項１１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【発明の分野】
【０００１】
[002]本発明は、広くは、マルチメディア信号（例えば、音声及びビデオ）のデジタル処理に関するものであり、より詳細には、そのようなマルチメディア信号の符号化に関するものである。
【関連技術】
【０００２】
[004]マルチメディア信号とは、一般的には、様々な形式の情報コンテンツ（例えば、音声、ビデオ、テキスト、グラフィックス、アニメーション等）を表す信号を意味する。一つの信号は、関連する技術分野において周知であるように、技術及び規約に応じて、一以上の形式の情報を表すことができる。
【０００３】
[005]マルチメディア信号は、しばしば、様々な手法を使用して符号化される。代表的なシナリオにおいては、マルチメディア信号は、最初に一連のデジタル値として表される。次いで、符号化によって、（一連のデジタル値から）その信号を圧縮形式で表す新たなデジタル値が生成される。
【０００４】
[006]かかる符号化（又は圧縮形式における表現）は、必要な記憶容量を減少させること、送信スループットを向上させることといった恩恵をもたらすことができる。関連する技術分野では、様々な符号化手法が周知となっている。符号化手法の例としては、ビデオ信号を符号化するためのＷＭＶ、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６３、Ｈ．２６４、音声信号を符号化するためのＷＭＡ、ＭＰ３、ＡＥＣ、ＡＥＣ＋、ＡＭＲ−ＮＢ、ＡＭＲ−ＷＢがある。
【０００５】
[007]符号化は、特定の状況に適合するように様々な要件を満たして実施されることが、要求されることが多い。
【詳細な説明】
【０００６】
[008]以下では、例示の実施形態について、添付の図面を参照しながら説明する。
【０００７】
[0014]図面においては、同様の参照数字によって、通常、同一の要素、機能的に類似する要素、及び／又は、構造的に類似する要素を指し示している。また、要素が最初に現れる図面を、対応の参照数字の左端の（一つ以上の）数字によって指し示している。
【０００８】
[0015]１．概要
【０００９】
[0016]本発明の一態様は、システムメモリ及びＧＰＵメモリの経路上のバスといったコンポーネントにおけるボトルネックを軽減する。一実施形態では、グラフィックス処理ユニット（ＧＰＵ）が、マルチメディア信号を表すデジタル値を外部ソースから受け取り、当該デジタル値を符号化し、符号化された値をＲＡＭに格納する。ＲＡＭは、ＣＰＵによって実行される命令を格納することもできる。デジタル値がＲＡＭに格納されることなくＧＰＵによって受け取られるので、ボトルネックを軽減することができる。
【００１０】
[0017]一実施形態においては、ＧＰＵは、符号化演算を実行する前に、デジタル値をＧＰＵメモリに格納する。デジタル値は、マルチメディア信号を生成するソースから受け取られた未加工データ（更なる処理が施されることなく生成されたデジタルサンプル）とすることができる。ＧＰＵは、マルチメディア信号のうちの複数の連続する部分のそれぞれに対応する符号化されたデータの格納を完了した時点で、ＣＰＵに通知することができる。
【００１１】
[0018]以下、本発明の幾つかの態様を、説明用の例を参照して説明する。なお、多数の具体的な細部、関係、及び方法を、本発明を完全に理解することを可能とするために、説明していることを理解されたい。しかしながら、関連する技術分野の当業者には、これら一以上の具体的な細部を使用せずに、即ち、別の方法を使用して本発明を実施することができることが、容易に認識されるであろう。他の例では、周知の構造又は動作については、本発明の特徴が曖昧になることを避けるために、詳細には示していない。
【００１２】
[0019]２．例示の環境
【００１３】
[0020]図１は、本発明の幾つかの特徴を実施し得る例示の環境を示すブロック図である。図示した例示の環境は、説明用の代表的なシステムのみを含んでいる。しかしながら、関連する技術分野の当業者には明らかであるように、実世界の環境は、より多くの、より少数の、又は、異なるシステム或いはコンポーネントを含み得る。そのような環境における実施形態も、本発明の様々な態様の範囲及び概念に含まれるものとみなされる。
【００１４】
[0021]図示したデバイス１００は、ＣＰＵ１１０と、システムメモリ１２０と、グラフィックスプロセッサユニット（ＧＰＵ）１３０と、ＧＰＵメモリ１４０と、周辺機器インタフェース１５０と、リムーバル記憶装置１９５と、を含んでいる。説明を簡潔にして容易に理解できるように、一例の実施形態の動作を理解するうえで関連する構成要素のみを図に示して、説明している。しかしながら、本発明の幾つかの態様によってカバーされる実施形態は、これより多くの、又は少ない構成要素を含み得る。以下では、図１の構成要素のそれぞれについて詳しく説明する。
【００１５】
[0022]ＣＰＵ１１０は、（一つ以上の）中央プロセッサを表しており、かかるプロセッサは、システムメモリ１２０に格納されている命令を実行することによって、（デバイス１００中の）他の様々なブロックの動作（又は動作以外）を少なくとも実質的に制御する。また、ＣＰＵ１１０によって実行される命令の幾つかは、デバイス１００によって提供される様々なユーザアプリケーション（例えば、曲／ビデオの再生、ビデオの録画等）の命令である。
【００１６】
[0023]システムメモリ１２０は、種々のランダムアクセス可能な記憶領域（ｒａｎｄｏｍｌｙ  ａｃｃｅｓｓｉｂｌｅ  ｌｏｃａｔｉｏｎｓ）を含んでおり、ＣＰＵ１１０によって使用される命令及び／又はデータを格納する。上述したように、命令の幾つかは、ユーザアプリケーションの命令であってもよい。別の命令は、（デバイスドライバを含むか、又は、デバイスドライバのインタフェースとして機能する）オペレーティングシステムの命令であってもよい。システムメモリ１２０は、ＳＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＲＡＭ等のうちの一つ以上を使用して実施することができる。具体的には、後に使用され、及び／又は、処理されるべきピクセル値を、ＣＰＵ１１０によって経路１２１を介してシステムメモリ１２０に格納することができる。
【００１７】
[0024]リムーバル記憶装置１９５は、データ（例えば、キャプチャされたビデオ、音声、又は静止画像）を、経路１９６を介して格納することができる。一実施形態においては、リムーバル記憶装置１９５は、フラッシュメモリとして実施されている。或いは、リムーバル記憶装置１９５を着脱可能なプラグインカードとして実施することができ、従って、ユーザは、格納されているデータを別のシステムに移動させて表示又は処理することができ、或いは、別のプラグインカードを使用することができる。
【００１８】
[0025]リムーバル記憶装置１９５は、様々な命令を格納する追加のメモリユニット（例えば、ＲＯＭ、ＥＥＰＲＯＭ等）を含んでいてもよく、これら命令は、ＣＰＵ１１０及びＧＰＵ１３０によって実行されるときに、本明細書に記載した本発明の様々な特徴を提供する。一般的に、このようなメモリユニット（ＲＡＭ、不揮発性メモリ、リムーバルタイプ、又は非リムーバルタイプ）は、そこから（ＣＰＵ又はＧＰＵが）命令を取得して実行することのできるものであり、コンピュータ可読媒体と称されるものである。なお、コンピュータ可読媒体は、様々な別の実施形態に、例えばデバイスの中に配置することができ、当該デバイスは、ビデオ、音声、又は画像をキャプチャするようには意図されていないが、本明細書に記載した幾つかの特徴を提供することを理解されたい。
【００１９】
[0026]周辺機器インタフェース１５０は、任意の必要な物理／電気インタフェース及びプロトコルインタフェースを提供するものであり、これらインタフェースは、様々なプロトコルを用いて動作する様々な周辺機器及び／又はシステムを接続するうえで必要なものである。ここでは、説明のためだけに、周辺機器インタフェース１５０を、複数のインタフェースブロックのインタフェースとして機能する単一のブロックとして示している。しかしながら、関連する技術分野の当業者には明らかであるように、周辺機器インタフェース１５０は、それぞれが特定のインタフェースブロックに対して適合されている複数のユニットを含み得る。
【００２０】
[0027]入力・出力（Ｉ／Ｏ）インタフェース１６０は、マルチメディアデバイスへの入力を提供し出力を受け取るための機能をユーザに提供する。入力インタフェース（例えば、キーボード又はローラーボール（ｒｏｌｌｅｒ  ｂａｌｌ）を備えたインタフェース、或いは、類似する装置（図示せず））は、例えば、符号化を実行するか否かといった機能を選択するための入力をマルチメディアデバイスに提供するための機能をユーザに提供する。出力インタフェースは、出力信号を（例えば表示ユニット（図示せず）に）提供する。入力インタフェース及び出力インタフェースは、全体として、ユーザに好適なユーザインタフェースの基礎部分を形成している。
【００２１】
[0028]シリアル・パラレルインタフェース１７０及びその他のインタフェース１８０（関連する技術分野において公知の様々な周辺機器インタフェース、例えば、ＲＳ２３２、ＵＳＢ、Ｆｉｒｅｗｉｒｅ、赤外線を含んでいる）は、マルチメディアデバイスが様々な周辺機器及びデバイスにそれぞれのプロトコルを使用して接続することを可能とする。
【００２２】
[0029]ＶＩバス及びＩ２Ｓバス１９０は、一例の周辺機器インタフェースであり、当該インタフェースには、マルチメディアソース（例えば、それぞれ、カメラ及びマイク）を接続し得る。これら周辺機器インタフェースは、様々なマルチメディア信号（又は対応のデジタル値）を受け取り、これら信号が、後に説明するように本発明の様々な態様に従って符号化される。しかしながら、マルチメディア信号（本発明の様々な態様に従って符号化する対象の信号）を別のインタフェースから受け取ることも可能であることを理解されたい。
【００２３】
[0030]ＧＰＵメモリ１４０は、ＳＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＲＡＭ等のうちの一つ以上を使用して実施することができるものであり、ＧＰＵ１３０は、そこからデータを取得して処理することができるものである。ＧＰＵメモリ１４０は、ＧＰＵ１３０に統合して一つの集積回路とすることができ、又は、ＧＰＵ１３０の外部に配置することができる。或いは、ＧＰＵメモリ１４０は、複数のユニットを含むことができ、そのうちの幾つかのユニットをＧＰＵ１３０に統合し、幾つかのユニットをＧＰＵの外部に設けることができる。後に説明するように符号化をサポートすることに加えて、ＧＰＵメモリ１４０は、様々なグラフィックス演算をサポートするようデータを格納するために、また、表示ユニットに対して表示信号を発生する基礎となる現在のフレームを格納するために、使用することができる。
【００２４】
[0031]グラフィックスプロセッサユニット（ＧＰＵ）１３０は、後に説明するように、本発明の態様に従ってマルチメディア信号を符号化することに加えて、表示ユニット（図示していない）への表示信号を生成する。ＧＰＵ１３０は、その他の多数の能力（例えば、２Ｄ及び３Ｄグラフィックスのレンダリング等）を有し得るが、本明細書では詳しくは説明しない。典型的には、ＧＰＵ１３０は、画像データと、実行すべき特定の（２Ｄ／３Ｄ）演算とをＣＰＵ１１０から受け取り、画像データを処理して演算を実行し、処理／生成した画像データから表示ユニットへの表示信号を生成する。
【００２５】
[0032]本発明の様々な態様は、少ないリソースを使用してマルチメディア信号を符号化することを可能とする。本発明の特徴は、従来の符号化方法と比較したときに明確になる。従って、従来の方法について最初に説明する。
【００２６】
[0033]３．従来の符号化方法
【００２７】
[0034]図２は、従来の実施形態におけるマルチメディア信号の処理を示すブロック図である。この実施形態は、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ  Ｍｏｂｉｌｅ  ２．０環境において「Ｐｉｃｔｕｒｅｓ  ａｎｄ  Ｖｉｄｅｏｓ  Ａｐｐｌｉｃａｔｉｏｎ」用に実施されている。比較のため及び理解を容易にするためだけに、幾つかのブロックについては、図１に関連して説明する。
【００２８】
[0035]ドライバ２２０は、対応する命令がＣＰＵ（例えば１１０）によって実行されることによって動作するものであり、外部ソース２１０のインタフェースとして機能して未加工のマルチメディアデータ（例えば、音声の場合にはＰＣＭデータ、ビデオの場合にはＲＧＢデータ）を受け取るように設計されている。ドライバ２２０は、データ／信号を交換する相手である外部デバイスのインタフェースとして機能するブロックであり、当該外部デバイス、及び、ドライバ２２０が実装されているデバイスの別のブロックのインタフェース要件を考慮して、実施されている。
【００２９】
[0036]キャプチャフィルタ２３０は、ドライバ２２０からマルチメディアデータを受け取り、受け取ったデータにタイムスタンプを関連付けて、結合したデータを下流のＤＭＯ２４０に送る。また、キャプチャフィルタは、マルチメディア信号に関連する様々なデータ構造も含めた後、それらの情報もＤＭＯ２４０に送ることができる。このようにして送られた未加工のデータ及びその他の情報は、システムメモリ（例えば１２０）に格納される。
【００３０】
[0037]ＤＭＯ（ｄｉｒｅｃｔ  ｍｅｄｉａ  ｏｂｊｅｃｔ）２４０も、対応する命令がＣＰＵによって実行されることによって動作するものであり、システムメモリ１２０に格納されているデータを符号化して、符号化したデータを再びシステムメモリに格納するように設計されている。ＤＭＯは、外部アプリケーションによって呼び出される様々なメソッド（プロシージャ）を含み得る。これらのプロシージャの幾つかは、符号化に関連して呼び出すことができる。符号化は、外部のコンポーネント（例えば、ハードウェア実装の符号化器）によって、或いは、グラフィックス処理ユニット（例えば１３０）の中で、実行することができる。
【００３１】
[0038]ファイルライター２５０は、マルチメディアデータ（例えば、個別のストリームとしてのビデオ及び音声。但し、図２には簡潔性のために、一つのストリームのみを示してある）の複数のストリームを受け取って、それぞれの部分をタイムスタンプに基づいて関連付けて、データのストリームをシステムメモリに格納する。
【００３２】
[0039]このような方法における一つの問題として、データの転送に起因して、システムメモリ及びＧＰＵメモリの経路上にあるバス等のコンポーネントにボトルネックが生じる。例えば、図１の実施形態において図２の方法が実施されているものと想定すると、符号化前のデータは、受け取られた時点で、最初にシステムメモリ１２０に格納され、ＣＰＵ１３０に転送されて符号化され、符号化の後に再びシステムメモリ１２０に転送される。このような複数回の転送のために、システムバス１１５にボトルネックが生じ得る。このボトルネックは、転送するデータが大量であるとき、また、デバイス１００が、カメラや携帯電話といったデバイス（制限されたリソースで実装されていることが多いデバイス）であるときに、特に影響が大きい。
【００３３】
[0040]本発明の幾つかの態様に従って実施される符号化方法は、後に例を通じて説明するように、このような問題の幾つかを克服する。
【００３４】
[0041]４．マルチメディア信号の符号化
【００３５】
[0042]図３は、本発明の実施形態でマルチメディア信号を符号化する方法を示すフローチャートである。このフローチャートは図１に関連して記載してあるが、これは説明のためだけである。しかしながら、様々な特徴を、別の環境及び別のコンポーネントで実施することができる。更には、一連のステップを特定の順序で記載してあるが、これは単に説明のたまだけである。
【００３６】
[0043]更に、関連する技術分野の当業者には明らかであるように、本明細書に提供した開示内容を読むことによって、別の環境における代替の実施形態を、別のコンポーネントと異なる一連のステップとを使用して、本発明の幾つかの態様の範囲及び概念から逸脱することなく実施することができる。流れ図はステップ３０１が始まり、制御は直ちにステップ３０５に渡される。
【００３７】
[0044]ステップ３０５において、ＣＰＵ１１０は、マルチメディアソースからのマルチメディア信号を符号化するために、一つ以上のコマンドをＧＰＵ１３０に送る。このコマンドは、適切な手法（例えば、コンテンツに基づいたパケットであって予め指定されたプロトコルに従ったパケットによる手法、又は特定の信号線をアサートすることによる手法）を使用して、バス１１５を通じて送ることができる。コマンドは、幾つかの公知の方法の何れかによって送ることができる。
【００３８】
[0045]ステップ３１０において、ＧＰＵ１３０は、マルチメディアデバイスから未加工のマルチメディアデータを受け取る。この未加工のマルチメディアデータは、音声ソース（例えば、マイク）からの未加工の音声データと、ビデオソース（例えば、カメラ）からの未加工のビデオデータとを含み得る。音声ソースからのデータ及びビデオソースからのデータは、データが処理されておらず、これらのソースによって提供されたままの形式であることを示すよう、「未加工の」と称する。一実施形態においては、マイクからのデータをＰＣＭ（パルス符号変調）形式とし、カメラからのデータをＲＧＢ形式とすることができるが、この技術分野において公知である別の多数の形式におけるデータをソースから受け取ることができる。
【００３９】
[0046]ステップ３２０において、ＧＰＵ１３０が、経路１３９及び１４１を使用して、受け取った未加工のデータをＧＰＵメモリ１４０に格納する。ＣＰＵ１１０が未加工のデータを最初にシステムメモリ１２０に格納してそれらをＧＰＵメモリ１４０に転送するのではなく、未加工のデータをＧＰＵメモリ１４０に直接格納することによって、システムメモリ及びＧＰＵメモリの経路上のバス等のコンポーネントにおける上述したようなボトルネックを軽減することができる。未加工のデータは、（様々なマルチメディアタイプの）様々なストリームに対応し得るが、以下の説明は、一つのストリーム（例えば、ビデオ又は音声のマルチメディアタイプ）について行う。
【００４０】
[0047]ステップ３３０において、ＧＰＵ１３０は、（未加工のデータをＧＰＵメモリ１４０から取得した後に）未加工のデータを符号化する。このような符号化の出力は、圧縮形式（例えば、前述した周知の形式のうちの一つ）とすることができる。ＧＰＵ１３０は、内部に設けられているハードウェアベースの任意の符号器を使用して、或いは、ソフトウェアベースの命令を使用して、符号化を実行することができる。データは、所定の形式、又はユーザによって選択される形式に符号化することができる。ユーザは、入力・出力インタフェース１６０を用いて、又は関連する技術分野において公知である任意の別の方法を用いて、形式を選択することができる。なお、本説明では、未加工のデータをＧＰＵメモリ１４０に格納した後に符号化することを想定しているが、適切な修正（例えば、レジスタ等の更なるハードウェアを設けること）によって、未加工のデータをＧＰＵメモリ１４０に格納することなく符号化することができることを理解されたい。
【００４１】
[0048]ステップ３３５では、ＧＰＵ１３０は、符号化したデータをシステムメモリ１２０に格納する。ステップ３４０において、ＧＰＵ１３０は、受け取った未加工のマルチメディアデータのうちの少なくとも一部について符号化が完了したことを、ＣＰＵ１１０に通知する。ＣＰＵ１１０は、この通知を使用して、符号化されたデータを下流のプログラム、例えば、符号化されたデータを記憶装置に格納するプログラム、（例えば、マルチメディアコンテンツを編集するアプリケーションにおいて）データを更に処理するプログラム、又は（例えば携帯電話から）データを送信するプログラム、に提供することができる。
【００４２】
[0049]ステップ３４５において、ＧＰＵ１３０は、マルチメディアデータの符号化を停止するためのコマンドをＣＰＵ１１０から受け取っているか否かを調べる。ＣＰＵは、例えば、ユーザがマルチメディア信号の処理を停止させることを望むときに、このようなコマンドを生成することができる。符号化を停止するためのコマンドを受け取っていた場合、制御はステップ３９９に渡され、当該ステップにおいて本フローチャートが終了する。コマンドを受け取っていない場合、制御はステップ３５０に渡される。
【００４３】
[0050]ステップ３５０において、ＧＰＵ１３０は、更なるマルチメディアデータが符号化用に存在しているか否かを判定する。符号化すべき更なるマルチメディアデータが存在していない理由としては、ソースがもはやデータを送信していないこと、ソースがマルチメディアデバイスにもはや接続されていないこと、又は、その他の理由が挙げられる。マルチメディアデータが符号化用に存在していない場合には、制御はステップ３６０に渡される。更なるマルチメディアデータが符号化用に存在している場合には、制御はステップ３１０に渡され、マルチメディアデータのすぐ次の部分が受け取られて符号化される。
【００４４】
[0051]ステップ３６０において、ＧＰＵ１３０は、符号化が完了したことをＣＰＵ１１０に通知する。このような通知には、バス１１５上の適切な信号経路のアサーション又は割り込みといった通信技術を使用することができる。ステップ３９９において、このフローチャートが終了する。
【００４５】
[0052]なお、上述した方法は様々な動作環境において実施することができることを理解されたい。以下では、一例の動作環境における実施形態について、説明を続ける。
【００４６】
[0053]５．一例の実施形態
【００４７】
[0054]図４Ａは、一例の動作環境を示すブロック図であり、図４Ｂは、この動作環境における実施形態の詳細を示しているブロック図である。図４Ａに示した動作環境は、オペレーティングシステム４０１と、ユーザアプリケーション４０３Ａ〜４０３Ｃとを含んでいる。
【００４８】
[0055]オペレーティングシステム４０１は、ユーザアプリケーション４０３Ａ〜４０３Ｃに対して様々なリソースのアクセスを容易にする実行エンティティ（executing  entity）を意味する。一般的には、デバイス１００が初期化されるとき、制御はオペレーティングシステム４０１に渡される。一実施形態においては、オペレーティングシステム４０１は、Ｍｉｃｒｏｓｏｆｔ社によって提供されるオペレーティングシステムＷｉｎｄｏｗｓ  Ｍｏｂｉｌｅ  ５．０である。
【００４９】
[0056]ドライバ４０２（オペレーティングシステム４０１の一部として提供されている）は、ドライバ２２０について上述した機能と類似する機能を提供する。しかしながら、ドライバ４０２は、ステップ３０５において上述したコマンドをＧＰＵ１３０に発行して符号化が実行されるようにするよう設計されている。ドライバ４０２は、オプションとして、マルチメディアソース、ＧＰＵ１３０、及びその他の必要な任意のコンポーネント（例えば、ＣＰＵ１１０におけるレジスタ）における必要な初期化／終了処理（例えば、マルチメディア信号のソースデバイスをパワーアップ／パワーダウンしたり、解像度、フレームレート、ビットレート、サンプリング周波数、格納先メモリといった属性についてソースデバイスを設定する処理）を、ステップ３０５のコマンドの発行前に、又は発行の一部として、実行することができる。
【００５０】
[0057]ユーザアプリケーション４０３Ａ〜４０３Ｃは、本発明の様々な態様に従って符号化されるマルチメディア信号を利用する（例えば、マルチメディア信号のタイプに応じて、記録する、再生する、表示する）ことのできる様々なアプリケーションとすることができる。一実施形態においては、適切な構成設定によってサードパーティの符号化器が統合されるように、ユーザアプリケーションのそれぞれを設計することができる。例えば、オペレーティングシステムＷｉｎｄｏｗｓ  Ｍｏｂｉｌｅ  ５．０においては、要求される符号化を実行するプログラム／プロシージャを指定するよう、レジストリエントリの設定が必要なことがある。
【００５１】
[0058]従来の実施形態においては、このような符号化は、設定されているプログラム／プロシージャの一部として提供される適切なソフトウェア命令を実行することによって、図２について上述したように実行され得る。符号化がＧＰＵによって自動的に実行されてシステムメモリ１２０に格納されるため、ユーザアプリケーション内で符号化する必要性を排除することができる。しかしながら、ユーザアプリケーションは、動作環境との互換性のために、そのようなプログラム／プロシージャを依然としてサポートしていることが必要となりうる。以下では、このような互換性を達成する方法について、一例を通じて説明する。
【００５２】
[0059]図４Ｂは、本発明の一実施形態でマルチメディア信号を符号化する例示の方法を示すブロック図である。このブロック図は、図１〜図３、及び図４Ａに関連して記載してあるが、これは単に説明を目的としている。しかしながら、別の環境及び別のコンポーネントを使用して、様々な特徴を実施することができる。更には、動作は特定の順序で記載してあるが、これは単に説明を目的としている。
【００５３】
[0060]図４Ｂは、二つのマルチメディア信号（又は対応する未加工のデジタルデータ）、すなわち、ビデオ入力４１０におけるカメラからのビデオ信号と、音声入力４２０におけるマイクからの音声信号とを示しており、これら二つの信号が符号化の対象である。以下では、説明を簡潔且つ明確にする目的で、ビデオ信号を符号化するための各ブロックについて、更に説明する。音声信号の符号化は、類似の方法で進行する。
【００５４】
[0061]この実施形態は、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ  Ｍｏｂｉｌｅ  ２．０環境において「Ｐｉｃｔｕｒｅｓ  ａｎｄ  Ｖｉｄｅｏｓ（Ｐ＆Ｖ）  Ａｐｐｌｉｃａｔｉｏｎ」用に実施されている。ビデオキャプチャフィルタ４５０、ＤＭＯラッパー（ＤＭＯ  ｗｒａｐｐｅｒ）４７０、３ＧＰ  ＭＵＸフィルタ４９０、及び、ファイルライター４９５は、Ｐ＆Ｖアプリケーション（上述したユーザアプリケーションの例）に含まれている。
【００５５】
[0062]符号化器付きのカメラドライバ４３０は、対応する命令がＣＰＵ１１０によって実行されることによってデバイスドライバ４０２の一部として動作するものであり、ビデオ入力４１０のインタフェースとして機能し、且つ、上述したステップ３０５のコマンドを提供するように設計されている。ビデオキャプチャフィルタ４５０は、ビデオ信号に関連する様々なデータ構造で適切な値（タイムスタンプなど）を有しており、これらの情報を、更なる処理のために利用可能とする。
【００５６】
[0063]ＤＭＯラッパー４７０は、プロシージャ／メソッドあり、別のソフトウェアコードによって、当該別のソフトウェアコードが符号化されたデータを必要とするときに、呼び出される。ビデオデータはビデオドライバにおいて既に符号化されているので、ＤＭＯにおいてビデオを符号化する必要はない。しかしながら、Ｐ＆Ｖアプリケーションは、ＤＭＯラッパー４７０の中にＤＭＯが存在していることを要求する。従って、ダミーＤＭＯが設けられており、このダミーＤＭＯは、ビデオキャプチャフィルタ４５０によって提供されるデータを受け取り、そのデータに何らの変更又は処理を行うことなく３ＧＰ  ＭＵＸフィルタ４５０に提供する。このＤＭＯは、データを変更或いは処理しないので、ダミーＤＭＯと称されている。
【００５７】
[0064]３ＧＰ  ＭＵＸフィルタ４９０は、マルチメディアデータ（例えば、図示したビデオ及び音声）の複数のストリームを個別のストリームとして受け取り、各部分を関連付けて一つのマルチメディアデータストリームとし、そのデータストリームをファイルに格納するためにファイルライター４６０に送る。
【００５８】
[0065]関連する技術分野の当業者には明らかであるように、本明細書に記載した開示を読むことによって、別の環境における代替実施形態を、別のコンポーネント及び異なる一連のステップを使用して、本発明の幾つかの態様の範囲及び概念から逸脱することなく実施することもできる。
【００５９】
[0066]６．最後に
【００６０】
[0067]以上、本発明の様々な実施形態について説明したが、これら実施形態は単に例を目的として提示したものであり、本発明を制限するものではないことを理解されたい。従って、本発明の範囲は、上に記載した例示的な実施形態の何れによっても制限されるべきではなく、特許請求の範囲及びその均等の範囲に従ってのみ定義されるべきである。
【図面の簡単な説明】
【００６１】
【図１】本発明の幾つかの態様を実施し得る例示の実施形態を示すマルチメディアデバイスのブロック図である。
【図２】従来の実施形態におけるマルチメディア信号の処理を示すブロック図である。
【図３】本発明の実施形態でマルチメディア信号を符号化する方法を示すフローチャートである。
【図４Ａ】本発明の幾つかの態様を実施し得る例示の動作環境の詳細を示すブロック図である。
【図４Ｂ】本発明の一実施形態でマルチメディア信号を符号化する例示の手法を示すブロック図である。
【符号の説明】
【００６２】
１００…デバイス、１１５…システムバス、１２０…システムメモリ、１２１…経路、１３９…経路、１４０…メモリ、１５０…周辺機器インタフェース、１６０…入力・出力インタフェース、１７０…シリアル・パラレルインタフェース、１８０…その他のインタフェース、１９０…ＶＩバス及びＩ２Ｓバス、１９５…リムーバル記憶装置、１９６…経路、４０１…オペレーティングシステム、４０２…デバイスドライバ、４０３Ａ〜４０３Ｃ…ユーザアプリケーション、４１０…ビデオ入力、４２０…音声入力、４３０…カメラドライバ、４５０…ビデオキャプチャフィルタ、４６０…音声キャプチャフィルタ、４７０…ＤＭＯラッパー、４９０…３ＧＰ  ＭＵＸフィルタ、４９５…ファイルライター
【図１】
2009017535.tif 000003
【図２】
2009017535.tif 000004
【図３】
2009017535.tif 000005
【図４Ａ】
2009017535.tif 000006
【図４Ｂ】
2009017535.tif 000007
【手続補正書】
【提出日】平成20年7月9日(2008.7.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部ソースによって提供されるマルチメディア信号を処理するデバイスであって、
前記外部ソースに接続するインタフェースと、
複数の命令を格納するランダムアクセスメモリ（ＲＡＭ）と、
前記複数の命令を実行する中央処理ユニット（ＣＰＵ）と、
前記マルチメディア信号を表す複数のデジタル値を前記外部ソースから受け取り、前記複数のデジタル値を符号化して複数の符号化された値を生成し、前記複数の符号化された値を前記ＲＡＭに格納するグラフィックス処理ユニット（ＧＰＵ）と、
を備え、
前記複数のデジタル値が、前記ＲＡＭに格納されることなく前記ＧＰＵによって受け取られる、
デバイス。
【請求項２】
ＧＰＵメモリを更に備えており、
前記ＧＰＵが、前記符号化を実行する前に、前記複数のデジタル値を前記ＧＰＵメモリに格納する、
請求項１に記載のデバイス。
【請求項３】
前記複数のデジタル値が、前記インタフェースから受け取られる未加工のデータを構成する、請求項１に記載のデバイス。
【請求項４】
前記ＧＰＵが、前記マルチメディア信号のうちの複数の連続する部分の各々に対応する符号化されたデータの格納を完了した時点で、前記ＣＰＵに通知する、請求項１に記載のデバイス。
【請求項５】
外部ソースによって提供されるマルチメディア信号を符号化する方法であって、
前記マルチメディア信号を符号化するためのコマンドをグラフィックス処理ユニット（ＧＰＵ）に送るステップと、
前記マルチメディア信号を表す複数のデジタル値を前記外部ソースから前記ＧＰＵにおいて受け取るステップと、
前記ＧＰＵにおいて前記複数のデジタル値を符号化して複数の符号化された値を生成するステップと、
前記複数の符号化された値を前記ＧＰＵによってシステムメモリに格納するステップと、
を含む方法。
【請求項６】
前記ＧＰＵが、前記複数のデジタル値をＧＰＵメモリに格納する、請求項５に記載の方法。
【請求項７】
前記複数のデジタル値が、前記インタフェースから受け取られる未加工のデータを構成する、請求項５に記載の方法。
【請求項８】
前記ＧＰＵが、前記マルチメディア信号のうちの複数の連続する部分の各々に対応する符号化されたデータの格納を完了した時点で、前記ＣＰＵに通知する、請求項５に記載の方法。
【請求項９】
前記外部ソースのためのデバイスドライバに組み込まれている、請求項５に記載の方法。
【請求項１０】
前記ＧＰＵが、符号化を停止するためのコマンドを前記ＣＰＵから受け取ったか否かを調べる、請求項５に記載の方法。
【外国語明細書】
2009017535000001.pdf