(57)【要約】【課題】複数のカメラ使用アプリケーションがカメラを同時に共用することができる仮想カメラコンポーネントを提供する。【解決手段】例えば、第１アプリケーションは第１セットのデータのためカメラへのアクセスをリクエストすることができ、かつ、第２アプリケーションも第２セットのデータのためカメラへのアクセスをリクエストすることができる。仮想カメラコンポーネントは、第１及び第２アプリケーションとカメラとの間に接続され、かつ、第１及び第２アプリケーションの各要求に従ってデータをキャッシュ及び処理する。【選択図】図２
2010213256.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
マルチメディアデータをキャプチャするカメラと、
前記カメラに接続されたメモリと
を備え、前記メモリは、
第１セットのデータのため、前記カメラへの第１アクセスをリクエストする第１アプリケーションと、
第２セットのデータのため、前記カメラへの第２アクセスをリクエストする第２アプリケーションと、
前記第１及び第２アプリケーションと、前記カメラとの間に接続された仮想カメラコンポーネントと
を備えたコンピュータ実行可能コンポーネントをその中に格納し、
前記第１及び第２アクセスは時間が重複し、
前記仮想カメラコンポーネントは、前記第１及び第２アプリケーションの各要求に従って、前記マルチメディアデータをキャッシュし、次いで、処理することを特徴とするコンピュータシステム。
【請求項２】
前記仮想カメラコンポーネントは、前記カメラに接続されているキャプチャフィルタに接続されたビデオキャプチャソースフィルタを備え、
前記ビデオキャプチャソースフィルタは、前記処理を実行し、かつ、前記第１及び第２アプリケーションに処理された前記マルチメディアデータをレンダリングすることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記仮想カメラコンポーネントは、前記ビデオキャプチャソースフィルタを制御するために、及び、前記カメラから、前記キャプチャフィルタを介して前記ビデオキャプチャソースフィルタに、前記マルチメディアデータを転送するために、前記ビデオキャプチャソースフィルタに接続された仮想カメラセンタサービスをさらに備えることを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記仮想カメラコンポーネントは、前記第１及び第２アプリケーションに関連付けられた要求を識別するために、及び、前記要求のうちの最も制限された要求に従って、前記カメラを設定してマルチメディアデータをキャプチャするために、仮想カメラ設定ツールをさらに備えることを特徴とする請求項２に記載のコンピュータシステム。
【請求項５】
前記キャプチャフィルタは、Windows（登録商標）ドライバモジュール（ＷＤＭ）キャプチャフィルタを含むことを特徴とする請求項２に記載のコンピュータシステム。
【請求項６】
前記第１アプリケーションは、インスタントメッセージアプリケーションであり、かつ、
前記第２アプリケーションは、顔認識アプリケーションであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記第１及び第２アプリケーションは、異なるフォーマット及び異なる解像度の前記マルチメディアデータをリクエストすることを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
前記仮想カメラコンポーネントは、前記カメラによってキャプチャされた前記マルチメディアデータを、前記異なるフォーマット及び前記異なる解像度に適合させることを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
複数のアプリケーションが物理カメラを同時に使用できるようにするためのコンピュータ実行可能な仮想カメラコンポーネントを具備するコンピュータ読み取り可能な媒体であって、
前記仮想カメラコンポーネントは、
前記物理カメラに接続されているキャプチャフィルタに接続されたビデオキャプチャソースフィルタと、
前記ビデオキャプチャソースフィルタを制御するために、及び、前記物理カメラから、前記キャプチャフィルタを介して前記ビデオキャプチャソースフィルタに、前記ビデオデータを転送するために、前記ビデオキャプチャソースフィルタに接続された仮想カメラセンタサービスと、
を具備し、
前記ビデオキャプチャソースフィルタは、前記物理カメラによってキャプチャされたビデオデータを処理し、かつ、前記複数のアプリケーションに処理された前記ビデオデータをレンダリングし、
前記物理カメラによってキャプチャされた前記ビデオデータは、前記処理ステップ及び前記レンダリングステップに先立って、キャッシュ内に格納されることを特徴とするコンピュータ読み取り可能な媒体。
【請求項１０】
前記仮想カメラコンポーネントは、前記複数のアプリケーションに関連付けられた要求を識別するために、及び、前記要求のうちの最も制限された要求に従って、前記物理カメラを設定してビデオデータをキャプチャするために、前記仮想カメラセンタサービスに接続された仮想カメラ設定ツールをさらに備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１１】
前記ビデオキャプチャソースフィルタは、前記アプリケーションのそれぞれについてのフィルタインスタンスを含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１２】
前記キャプチャフィルタは、前記物理カメラを駆動するために、Windows（登録商標）ドライバモジュール（ＷＤＭ）キャプチャフィルタを含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１３】
前記ビデオキャプチャソースフィルタは、前記複数のアプリケーションを前記仮想カメラコンポーネントに接続するために、及び、前記処理されたビデオデータを前記複数のアプリケーションに転送するために、フィルタ基準インターフェースを含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１４】
前記複数のアプリケーションは、異なるフォーマット及び異なる解像度の前記ビデオデータをリクエストすることを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１５】
前記ビデオキャプチャソースフィルタは、前記物理カメラによってキャプチャされた前記ビデオデータを、前記異なるフォーマット及び前記異なる解像度に適合させることを特徴とする請求項１４に記載のコンピュータ読み取り可能な媒体。
【請求項１６】
前記複数のアプリケーションは、インスタントメッセージアプリケーション、及び、顔認識アプリケーションを含むことを特徴とする請求項９に記載のコンピュータ読み取り可能な媒体。
【請求項１７】
複数のアプリケーションが単一の物理カメラを同時に使用できるようにする方法であって、
前記複数のアプリケーションは、第１アプリケーション及び第２アプリケーションを有し、
前記方法は、
第１セットのデータについての前記第１アプリケーションからのリクエストに応じて、前記第１アプリケーションによる第１呼出しコマンドに応じて、第１ビデオキャプチャソースフィルタインスタンスを作成するステップと、
第２セットのデータについての前記第２アプリケーションからのリクエストに応じて、前記第２アプリケーションによる第２呼出しコマンドに応じて、第２ビデオキャプチャソースフィルタインスタンスを作成するステップと、
前記第１ビデオキャプチャソースフィルタインスタンスに従って、前記第１アプリケーションに前記第１セットのデータを提供するステップと、
前記第２ビデオキャプチャソースフィルタインスタンスに従って、前記第２アプリケーションに前記第２セットのデータを提供するステップと、
を具備し、
前記第１セットのデータに対する前記リクエストは、前記第２セットのデータに対する前記リクエストと同時であり、
前記第１セットのデータは、前記物理カメラによってキャプチャされたビデオデータから生成され、かつ、前記第１アプリケーションに関連付けられた第１要求を満足するように構成され、
前記第２セットのデータは、前記物理カメラによってキャプチャされた同じ前記ビデオデータから生成され、かつ、前記第２アプリケーションに関連付けられた第２要求を満足するように構成され、
前記第２要求は前記第１要求とは異なることを特徴とする方法。
【請求項１８】
前記物理カメラによってキャプチャされた生データをキャッシュするステップと、
前記第１要求に従って、前記生データを前記第１セットのデータに処理するステップと、
前記第２要求に従って、前記生データを前記第２セットのデータに処理するステップと
をさらに具備することを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第１及び第２アプリケーションに関連付けられた要求を識別するステップと、
前記第１及び第２要求のうちの最も制限された要求に従って、前記物理カメラを操作して、データをキャプチャするステップと
をさらに具備することを特徴とする請求項１７に記載の方法。
【請求項２０】
前記生データは、前記第１及び第２要求に従って指定された、最も高い解像度のデータに対応することを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、複数のアプリケーションが同時に単一のカメラを使用することを可能にする。
【背景技術】
【０００２】
ビデオカメラは多数のクライアントアプリケーションにおいて広く使用されている（例えば、ウェブカムレコーディングプログラム、ビデオ会議ツール、及び、インスタントメッセンジャー（ＩＭ）ツール）。
【０００３】
図１の従来技術を参照すれば、システム100は、カメラ使用アプリケーションブロック102と、Windows（登録商標）ドライバモデル（ＷＤＭ）キャプチャフィルタ104と、物理ビデオカメラ110とを備えている。ブロック102は、複数のカメラ使用アプリケーションを含む（例えば、ＭＳＮメッセンジャー108Ａ、Ｙａｈｏｏメッセンジャー108Ｂ、ＳＫＹＰＥ108Ｃ、及び「360 Degree Web FACE（360°ウェブフェース）」（ＦＡＣＥ）アプリケーション114）。特に、ブロック102のＦＡＣＥアプリケーション114は、オーツーマイクロ社によって開発されたインテリジェントログオン及びロック／アンロックアプリケーションである。
【０００４】
ＷＤＭキャプチャフィルタ104は、標準的なMicrosoft（登録商標）DirectXコンポーネント（カメラ110のデバイスドライバ（図示せず）と相互作用する）である。カメラ110のデバイスドライバは、拡張子（例えば、「.dll」）を有するドライバとして構成される。いったんＷＤＭキャプチャフィルタ104がカメラ110のデバイスドライバを１つのアプリケーションにリンクさせると、カメラ110のデバイスドライバを、他のアプリケーションに利用することができない。換言すれば、ＷＤＭキャプチャフィルタ104は、１つのアプリケーションが所定の時間にカメラ110によってキャプチャされたデータを使用することだけを可能にする。
【０００５】
例えば、いったんＦＡＣＥアプリケーション114がビデオカメラ110へのアクセスをリクエストすれば、次いで、ＷＤＭキャプチャフィルタ104は呼び出され、かつ、カメラ110のデバイスドライバはロードされる。設定の後、カメラ110は動作を開始し、かつ、ＦＡＣＥアプリケーション114は顔認識のために正常に動作することができる。他のアプリケーション（例えば、ＭＳＮアプリケーション108A）がカメラ110を使用しようとするとき（ＦＡＣＥアプリケーション114がカメラを使用している間に）、カメラのデバイスドライバは、ＭＳＮアプリケーション108Aによってアクセスされるのに利用することができない。カメラ110を共用するのに競合があり、かつ、後で呼び出されるアプリケーションのＭＳＮアプリケーション108Aは、カメラ110を使用することができない。
【発明の概要】
【課題を解決するための手段】
【０００６】
１態様では、仮想カメラコンポーネントは、複数のカメラ使用アプリケーションが同じカメラを同時に使用することを可能にする。１つのそのような態様では、前記仮想カメラコンポーネントは、ビデオキャプチャソースフィルタと、仮想カメラセンタサービスと、仮想カメラ設定ツールとを備える。前記ビデオキャプチャソースフィルタ及び前記仮想カメラ設定ツールは、前記仮想カメラセンタサービスに共に接続されている。前記ビデオキャプチャソースフィルタは、前記カメラからのビデオデータを処理し、かつ、前記データを前記複数のカメラ使用アプリケーションに転送する。前記仮想カメラセンタサービスは、前記ビデオキャプチャソースフィルタを制御し、かつ、前記ビデオデータを、前記カメラから前記ビデオキャプチャソースフィルタに転送する。前記仮想カメラ設定ツールは、適した動作パラメータを用いて、前記仮想カメラセンタサービスを設定する。
【発明の効果】
【０００７】
仮想カメラコンポーネントを使用することによって、複数のカメラ使用アプリケーション間の競合が解決され、かつ、複数のアプリケーションが同時に単一のカメラを共用することができる。
【図面の簡単な説明】
【０００８】
【図１】複数のカメラ使用アプリケーションがインストールされた従来技術システムを示すブロック図である。
【図２】複数のカメラ使用アプリケーションが単一のカメラを同時に共用することができるシステムの１実施例を示すブロック図である。
【図３】本発明の１実施例のビデオキャプチャソースフィルタのブロック図である。
【図４】本発明の１実施例の複数のカメラ使用アプリケーションによって単一のカメラを共用するシステムのコンポーネントを示すブロック図である。
【図５】本発明の１実施例の複数のカメラ使用アプリケーションによって単一のカメラを共用する方法を示すフローチャートである。
【図６】本発明の１実施例の単一のカメラを使用する複数のアプリケーションを示すフロー図である。
【発明を実施するための形態】
【０００９】
本願発明の実施例の特徴及び利点は、以下の詳細な説明が進み、かつ、添付図面を参照することによって明らかになる。類似の番号は類似の部分を示す。
【００１０】
これから本発明の実施例を詳細に説明する。本発明は実施例に関連して説明されるが、本発明をこれらの実施例に限定することを意図しないと理解しなければならない。逆に、本発明は、添付の特許請求の範囲に定義された本発明の真の趣旨及び範囲に含まれる代替例、変形例、及び均等物を包含することを意図する。
【００１１】
さらに、以下の本発明の詳細な説明には、本発明の完全な理解のために、多数の特定の詳細が記載されている。しかし、本発明がこれらの特定の詳細なしに実施されることを当業者なら理解する。他の実例では、本発明の態様を不必要に分かりにくくするのを避けるために、周知の方法、手順、コンポーネント、及び回路は説明されていない。
【００１２】
以下の詳細な説明の一部の部分は、手順、論理ブロック、処理、及び、コンピュータメモリ内のデータビット上のオペレーションの他の象徴に関して示される。これらの記載及び表示は、データ処理分野の当業者によって使用される手段であり、その動作の実質を他の当業者に最も効果的に伝える。本出願では、手順、論理ブロック、プロセスなどは、ステップのセルフコンシステントシーケンス、又は、所望の結果を導く命令であると想起される。ステップは、物理量の物理的な操作を必要とするステップである。一般に、必ずしも必要ではないが、これらの量は、格納、転送、組合せ、比較、及び、コンピュータシステムにおいて別な方法で操作されることが可能な電気又は磁気信号の形態をとる。
【００１３】
しかし、これらの全て及び類似の用語は、適した物理量に関連付けられ、かつ、これらの量に適用された単に都合の良いラベルであることに留意しなければならない。以下の論考から明らかなように、別な方法で特に記載されない限り、本出願を通して、論考（例えば、「作成」、「提供」、「キャプチャ」、「処理」、「計算」、「選択」などの用語を利用する）は、コンピュータシステム（又は、類似の電子計算デバイス）のアクション及び処理を称し、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されたデータを、同じように、物理量（コンピュータシステムメモリ又はレジスタ又は他の情報ストレージ、転送又は表示デバイス内の）として表された他のデータに操作及び変形させる。
【００１４】
本明細書に記載される実施例は、１又は複数のコンピュータ又は他のデバイスによって実行される、一部の形態のコンピュータ使用可能な媒体（例えば、プログラムモジュール）上に存在するコンピュータ実行可能命令との一般的な関連で論じられる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造など（特定のタスクを実行するか、又は、特定のアブストラクトデータタイプを実施する）を含む。プログラムモジュールの機能は、組み合わせるか、又は、要望に応じて多様な実施例に分配してもよい。
【００１５】
一例として、コンピュータ使用可能な媒体は、コンピュータストレージ媒体、及び、通信媒体を含んでいるが、これに限定されない。コンピュータストレージ媒体は、情報（例えば、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は、他のデータ）のストレージのための方法又は技術において実施された揮発性及び不揮発性、取り外し可能及び固定媒体を含む。コンピュータストレージ媒体は、ランダムアクセスムモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去書込み可能なＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、又は、他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル・ビデオ・ディスク（ＤＶＤ）、又は、他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又は、他の磁気ストレージデバイス、又は、所望の情報を格納するのに使用することができる他の媒体を含んでいるが、これに限定されない。
【００１６】
通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は、変調されたデータ信号における他のデータ（例えば、搬送波、又は、他の転送メカニズム）を具体化することができ、かつ、情報配信媒体を含む。用語「変調されたデータ信号」は、信号において情報をエンコードするような方法で設定又は変更された特徴のうちの１又は複数を有する信号を意味する。一例として、通信媒体は、有線媒体（例えば、有線ネットワーク、又は、直接有線接続）、及び、無線媒体（例えば、アコースティック、無線周波（ＲＦ）、赤外、及び、他の無線媒体）を含んでいるが、これに限定されない。また、上記の組合せは、コンピュータ読み取り可能な媒体の範囲に含まれなければならない。
【００１７】
図面及びその説明では、単一のブロックが機能（複数可）を実行するように説明してもよいが、実際の実行では、機能（複数可）は、ブロックが単一のコンポーネント、又は、複数のコンポーネントにわたって実行されること、及び／又は、ハードウェアを使用して、ソフトウェアを使用して、又は、ハードウェアとソフトウェアの組合せを使用して実行されることによって実行される。
【００１８】
図２は、仮想カメラコンポーネント（複数のカメラ使用アプリケーションが同時に単一のカメラを共用することができる）を備えたシステム200の１実施例を図示している。システム200は、多様なオペレーティングシステム（例えば、Windows（登録商標）オペレーティングシステムを含んでいるが、これに限定されない）を実行する多様な計算プラットフォーム上で実施することができる。例えば、システム200の計算プラットフォームは、パーソナルコンピュータ、ポケットＰＣ（ＰＰＣ）、パーソナルデジタルアシスタント（ＰＤＡ）、又は、スマートフォンである。１実施例では、システム200のコンポーネント及び特徴はソフトウェアで実施される。
【００１９】
図２の例では、システム200は、カメラ使用アプリケーションブロック202と、仮想カメラコンポーネント206と、ＷＤＭキャプチャフィルタ204と、物理カメラ210（例えば、ビデオカメラ）とを備えている。カメラ使用アプリケーションブロック202は、複数のクライアントアプリケーションを有する。１実施例では、クライアントアプリケーションは、リアルタイムビデオチャットをサポートするインスタントメッセンジャー（ＩＭ）プログラムを含む（例えば、ＭＳＮメッセンジャー208Ａ、Ｙａｈｏｏメッセンジャー208Ｂ、ＳＫＰＥ208Ｃ、アメリカオンラインインスタントメッセンジャー（ＡＩＭ）（図示せず）、ＩＣＱ（図示せず）、グーグルトーク（図示せず）、ＰＡＬＴＡＬＫ（図示せず）など）。他の実施例では、ブロック202のクライアントアプリケーションは、再生／レコーディングアプリケーションアプリケーション（例えば、Windows（登録商標）メディアプレーヤ（図示せず））と、ビデオ会議アプリケーション（例えば、ＮＥＴＭＥＥＴＩＮＧ(図示せず））と、ビデオ編集アプリケーションと、他のマルチメディアアプリケーションとを含んでもよい。１実施例では、カメラ使用アプリケーションブロック202は、「360°ウェブフェース（ＦＡＣＥ）」アプリケーション214を含む（オーツーマイクロ社によって開発されたインテリジェントログオン及びロック／アンロックアプリケーションである）。顔認識技術を通じて、ＦＡＣＥアプリケーション214は、Windows（登録商標）オペレーティングシステムの便利でセキュアなログオン及びロック／アンロックを実行することができる。ユーザは、ユーザ名及びパスワードを入力することなく、カメラ210を通じて、その顔を確認する必要があるだけである。
【００２０】
ブロック202の全てのアプリケーションは、カメラ210を利用して、マルチメディアデータを提供してもよい。本実施例では、１つのカメラ210だけが示されている。しかし、他の実施例では、１つ以上のカメラを、対応するカメラデバイスドライバを有するホスト計算プラットフォームに接続してもよい。その実施例では、ユーザは、カメラリストから１つのカメラを選択することができる。
【００２１】
カメラ210は、アプリケーションの呼出しに応答して、オープンし、かつ、オープンしたままである。カメラ210は、種々の写真（例えば、*.jpeg, *gif, *.bmpなど）及びビデオ（例えば、*.wmv, *avi, *.asf, *.mpeg, *rm, *rmvbなど）メディアをサポートすることができる。
【００２２】
図２の実施例では、カメラ使用アプリケーションブロック202は、仮想カメラコンポーネント206に接続されている。１実施例では、仮想カメラコンポーネント206は、Microsoft（登録商標）ソフトウェア開発キット（ＳＤＫ）コンポーネント（DirectShowと称される）を使用して、具体化される。ＳＤＫは、アプリケーションプログラムインターフェース（ＡＰＩ）と、プログラミングツールと、ヘッダと、ライブラリと、サンプルコードと、文書とを有するプログラミングパッケージである。DirectShow SDKを用いて、プログラマは、異なる高レベルプログラミング言語において、仮想カメラコンポーネント206のサブプログラムを構築することができる。
【００２３】
仮想カメラコンポーネント206は、コンポーネントオブジェクトモデル（ＣＯＭ）対応の実行可能なプログラム又はプロセスとして構成することができる。ＣＯＭは、Microsoft（登録商標）によって導入されたソフトウェアコンポーネントインターフェース規格である。ＣＯＭ技術をサポートする多様なプログラミング言語（例えば、C++及びJava（登録商標））を使用して、仮想カメラコンポーネント206の動的オブジェクトを作成することができる。したがって、オブジェクト（その内部実行の知識のない）の再使用が可能になり、かつ、仮想カメラコンポーネント206についての十分に定義されたインターフェースだけを提供することができる。
【００２４】
Windows（登録商標）オペレーティングシステムはＣＯＭ  ＡＰＩを提供する。ＣＯＭ  ＡＰＩは、ＣＯＭ実行可能プログラム（例えば、仮想カメラコンポーネント206）のローディングをハンドルし、かつ、ブロック202のカメラ使用アプリケーションから仮想カメラコンポーネント206への接続を確立する。次いで、仮想カメラコンポーネント206を、ブロック202のアプリケーションに接続することができる。仮想カメラコンポーネント206によって実行されるオペレーションは、物理カメラ210のオペレーションと同じである。上記したように、複数のビデオキャプチャソースフィルタインスタンスは、ブロック202の複数のカメラ使用アプリケーションをサポートするために確立することができる。
【００２５】
Windows（登録商標）オペレーティングシステムは、仮想ビデオのためのカーネルモデルWindows（登録商標）ドライバモデル（ＷＤＭ）キャプチャフィルタ204を備えている。ＷＤＭキャプチャフィルタ204は、仮想カメラコンポーネント206に接続され、かつ、カメラデバイスドライバファイル又はダイナミックリンクライブラリ（ＤＬＬ又は*.dll）ファイルにもリンクされている。ＤＬＬファイルへのリンクを作成することによって、ＷＤＭキャプチャフィルタ204は、カメラ210にアクセスして、キャプチャされたビデオデータフローを取得することができる。本実施例では、ＷＤＭキャプチャフィルタ204は、Microsoft（登録商標）DirectShow SDKによって提供され、かつ、KsProxy（Ksproxy.ax）と称される。また、ビデオストリームの所望のフレームレート及び解像度モードを、ＷＤＭキャプチャフィルタ204によって設定することができる。
【００２６】
図３は、仮想カメラコンポーネント206の１実施例を図示している（仮想カメラコンポーネント206は、ビデオキャプチャソースフィルタ306と、仮想カメラセンタサービス302と、仮想カメラ設定ツール304とを備えている）。
【００２７】
１実施例では、ビデオキャプチャソースフィルタ306は、標準化されたDirectShowモジュラーコンポーネントであり、かつ、ソースフィルタと、変換フィルタと、レンダラ（renderer）フィルタ（図示せず）とを備えている。ビデオキャプチャソースフィルタ306は、カメラ210によってキャプチャされたビデオストリームデータを読み出し、書き込み、かつ、処理し、次いで、カメラ使用アプリケーションブロック202の複数のアプリケーションにデータをレンダリングする。１実施例では、ビデオキャプチャソースフィルタ306は、カメラ210によってキャプチャされたビデオ又は画像データを格納するために、キャッシュ350（図４）にアクセスする。カメラ210を直接使用することに限定する代わりに、複数のカメラ使用アプリケーションＭＳＮ208Ａ、Ｙａｈｏｏメッセンジャー208Ｂ、ＦＡＣＥ214などは、キャッシュ350から、写真又はビデオストリームデータを同時に読み出すことができる。ビデオキャプチャソースフィルタ306及び他のフィルタは、フィルタグラフ構成で配置されている。各フィルタは、機能モジュールとして形成してもよい。
【００２８】
図３の実施例では、ビデオキャプチャソースフィルタ306は、フィルタ標準インターフェース310と、サービスアクセスモジュール312とを有する。フィルタ標準インターフェース310は、ビデオキャプチャソースフィルタ306の標準インターフェースである。ビデオキャプチャソースフィルタ306は、フィルタ標準インターフェース310を介して、ブロック202のカメラ使用アプリケーションと通信する。サービスアクセスモジュール312は、仮想カメラセンタサービス302に接続されて、仮想カメラセンタサービス302を介して、カメラ210からビデオデータを読み出す。
【００２９】
仮想カメラセンタサービス302は、フィルタグラフマネージャとなる。それは、ビデオキャプチャソースフィルタ306のフィルタグラフを組み立てるだけでなく、制御フロー及びデータフローも取り扱う。仮想カメラセンタサービス302は、呼出しコマンドをカメラ210に転送し、かつ、カメラキャプチャデータもビデオキャプチャソースフィルタ306に提供する。仮想カメラセンタサービス302は、動作の前に、仮想カメラ設定ツール304によって設定される。仮想カメラ設定ツール304は、以下で図５に関連してさらに説明するように、仮想カメラセンタサービス302のパラメータを設定する。
【００３０】
図４は、システム400の１実施例のブロック図である（仮想カメラコンポーネント206がブロック202の複数のカメラ使用アプリケーションによって使用されて、単一のカメラ210を共用する）。図４では、要素間の双方向矢印は要素間の論理関係を表している。これらの要素は、制御フロー及びデータフローを通じて相互にリンクされている。
【００３１】
図４の実施例では、２つのアプリケーションがカメラ210を共用している（ＦＡＣＥアプリケーション214及びブロック410の１つのアプリケーション（例えば、ＭＳＮアプリケーション208A）は、共に実行中（同時に）でカメラ210を呼出ししているとき、仮想カメラコンポーネント206にインターフェースされる。）。
【００３２】
本実施例では、ＦＡＣＥアプリケーション214及びＭＳＮアプリケーション208Aは、ビデオキャプチャソースフィルタ306のフィルタ標準インターフェース310に接続され、かつ、フィルタ標準インターフェース310は、サービスアクセスモジュール312に接続される。ビデオキャプチャソースフィルタ306は、仮想カメラセンタサービス302に接続され、かつ、それによって制御される。次いで、ＷＤＭキャプチャフィルタ204に接続された仮想カメラセンタサービス302を用いて、仮想カメラコンポーネント206は、ＷＤＭキャプチャフィルタ204を通じて、カメラ210に接続される。
【００３３】
ＦＡＣＥアプリケーション214及びＭＳＮアプリケーション208Ａがカメラ210を呼び出すとき、２つの対応するビデオキャプチャソースフィルタインスタンスが作成される。２つのビデオキャプチャソースフィルタインスタンスは、同じビデオデータフォーマット（例えば、解像度、フレームレートなど）か、又は、２つの異なるビデオデータフォーマットをリクエストしてもよい。ＦＡＣＥアプリケーション214に対する第１ビデオキャプチャソースフィルタインスタンスは、顔認識コマンドを開始し、一方では、ＭＳＮアプリケーション208Ａに対する他のビデオキャプチャソースフィルタインスタンスは単にビデオストリームをリクエストしてもよい。２つのビデオキャプチャソースフィルタインスタンスが作成されると直ちに、次いで、仮想カメラコンポーネント206が動作するように設定される。
【００３４】
そのシナリオでは、まず、仮想カメラ設定ツール304が仮想カメラセンタサービス302に対して適したパラメータ（例えば、解像度）を設定する。仮想カメラセンタサービス302は、カメラ210を検索し、かつ、仮想カメラコンポーネント206をカメラ210に接続してもよい。２つのビデオキャプチャソースフィルタインスタンスからの２つの呼出しコマンドを分析及び処理した後、仮想カメラセンタサービス302は、ＷＤＭキャプチャフィルタ204を通じて２つのコマンドをカメラ210に転送する。それに応じて、カメラ210はＷＤＭキャプチャフィルタ204によって駆動され、かつ、ビデオストリーム又は画像データをキャプチャするのを開始する。例えば、２つのアプリケーションが異なる画像解像度に依存した場合、次いで、カメラ210は、より高い解像度でビデオ又は画像データキャプチャしてもよい。この例では、キャプチャされたデータは、顔認識計算も通過するが、第１ビデオキャプチャソースフィルタインスタンス（ＦＡＣＥアプリケーション214に対応する）に対してだけである。
【００３５】
キャプチャされたビデオストリーム又は画像データは、ＷＤＭキャプチャフィルタ204を通じて仮想カメラコンポーネント206に転送され、かつ、キャッシュ350内にキャッシュされる。データを受信すると、仮想カメラコンポーネント206は、データを、２つのビデオキャプチャソースフィルタインスタンスによってリクエストされたフォーマットに処理する（２つの異なるフォーマットがリクエストされた場合、次いで、データはリクエストされたフォーマットに処理される。）。特に、ビデオストリーム又は画像データを受信するのは仮想カメラセンタサービス302であり、かつ、データを処理するのはビデオキャプチャソースフィルタ306である。次いで、２つの対応するビデオキャプチャソースフィルタインスタンスに続いて、処理されたデータは、フィルタ標準インターフェース310を介して、ＦＡＣＥアプリケーション214及びＭＳＮアプリケーション208Ａにそれぞれレンダリングされる。
【００３６】
図５は、本発明の１実施例による複数のカメラ使用アプリケーションによって単一のカメラを同時に共用するための方法500のフローチャートである。１実施例では、方法500は、コンピュータ読み取り可能な媒体に格納されたコンピュータ実行可能命令として実施される。１実施例では、仮想カメラコンポーネントは、Microsoft（登録商標）DirectShow SDKのプラットフォーム上で開発され、かつ、ＣＯＭ対応の実行可能プロセスとして構成される。仮想カメラコンポーネントは、物理カメラに接続される（複数の物理カメラが存在した場合、次いで、ユーザはリストから１つの物理カメラを選択することができ、かつ、仮想カメラコンポーネントは選択された物理カメラに接続される。）。１実施例では、仮想カメラコンポーネントは、仮想カメラセンタサービスと、ビデオキャプチャソースフィルタ（前記仮想カメラセンタサービスに接続された）と、仮想カメラ設定ツール（前記仮想カメラセンタサービスにまた接続された）とを備えている。ビデオキャプチャソースフィルタは、物理カメラからのキャプチャされたビデオデータを処理し、かつ、それを複数のカメラ使用アプリケーションに転送する。仮想カメラセンタサービスは、ビデオキャプチャソースフィルタを制御し、かつ、ビデオデータをビデオキャプチャソースフィルタに転送する。仮想カメラ設定ツールは、適した動作パラメータを用いて、仮想カメラセンタサービスを設定する。
【００３７】
仮想カメラコンポーネントは、複数のカメラ使用アプリケーション（同時アクセスを物理カメラにリクエストしている）に利用可能である。本実施例では、明確性及び簡潔性のため、図５は、ちょうど２つのカメラ使用アプリケーションのための仮想カメラコンポーネントの接続を確立する動作プロセスを図示している。例えば、顔認識（例えば、図２のＦＡＣＥアプリケーション）に基づくインテリジェントログオン及びロック／アンロックアプリケーション、及び、インターネットベースインスタントメッセンジャーアプリケーション（例えば、図２のＭＳＮアプリケーション）を、同時に物理カメラにアクセスするために呼び出してもよい。本論は、２つ以上のカメラ使用アプリケーションに容易に拡張することができる。
【００３８】
ステップ502Ａでは、カメラへの第１接続は、ＦＡＣＥアプリケーションによってリクエストされる。ＦＡＣＥアプリケーションは、顔認識のために、カメラにアクセスするように呼び出してもよい。ステップ502Ｂでは、第１接続と同時に、カメラへの第２接続がＭＳＮアプリケーションによってリクエストされる。ＭＳＮアプリケーションは、ビデオストリームデータ転送のために、カメラにアクセスするように呼び出してもよい。ＦＡＣＥアプリケーションもＭＳＮアプリケーションも、初めて物理カメラにアクセスするように呼び出すとき、仮想カメラコンポーネントの存在を知る必要はない（カメラ使用アプリケーションから見れば、仮想カメラコンポーネントへの接続はトラスペアレントであり、したがって、アプリケーションが物理カメラと直接通信しているように見える。）。ＦＡＣＥ及びＭＳＮアプリケーションは、連続して又は同時に２つの接続リクエストを送信してもよい。２つの接続コマンドがホストコンピュータによって同時に受信されたとき、仮想カメラコンポーネントは呼出し及びロードされる。
【００３９】
ステップ504Ａ及び504Ｂでは、ＦＡＣＥアプリケーションに対する第１ビデオキャプチャソースフィルタインスタンス、及び、ＭＳＮアプリケーションに対する第２ビデオキャプチャソースフィルタインスタンスがそれぞれ作成される。仮想カメラコンポーネントは、２つのアプリケーションのリクエストに応じてトリガすることができる。仮想カメラコンポーネントを使用するとき、ビデオキャプチャソースフィルタインスタンスは、２つの呼出しアプリケーションのＦＡＣＥ及びＭＳＮをサポートするために、作成される。インスタンスは、実際の使用、及び、メモリ内にロードされたエンティティのコピーの結果として生じる仮想作成の両方である。ビデオキャプチャソースフィルタインスタンスは、仮想カメラコンポーネントに対するＣＯＭ  ＡＰＩのコピーである。仮想カメラコンポーネントに対するＣＯＭ  ＡＰＩの適したインターフェースパラメータを設定することができる。第１ビデオキャプチャソースフィルタインスタンスを作成することによって、顔認識のための仮想カメラコンポーネントへの第１接続が確立される。同様に、第２ビデオキャプチャソースフィルタインスタンスを作成することによって、ＭＳＮアプリケーションのための仮想カメラコンポーネントへの第２接続が確立される。１実施例では、仮想カメラコンポーネントについてのフィルタ名は、ステップ504Ａ及び504Ｂで得ることができる。フィルタ名は、仮想カメラコンポーネントＣＯＭ  ＡＰＩプログラマによって指定される。
【００４０】
ステップ506で、ＦＡＣＥ及びＭＳＮアプリケーションが異なるフォーマット又は異なる解像度のビデオデータをリクエストしたとき、最も高い要求が物理カメラに転送される（物理カメラは、同時リクエストの最も重要か又は最も制限された要求に従って動作する。）。例えば、より複雑なフォーマットのビデオデータについてのリクエスト、又は、より高い解像度のビデオデータについてのリクエストが、最も高い要求として取り扱われる。例えば、ＦＡＣＥアプリケーションに対する第１ビデオキャプチャソースフィルタインスタンスは、顔認識コマンドを送信し、かつ、一連の画像（640×480ピクセルの解像度を有する）をリクエストし、一方では、ＭＳＮアプリケーションに対する第２インスタンスは、320×240ピクセルの解像度を有するビデオストリームをリクエストする場合がある。２つのリクエストを分析及び処理した後、次いで、仮想カメラデバイスの仮想カメラセンタサービスは、コマンドを送信して、最も高く要求された解像度（640×480ピクセル）でビデオデータをキャプチャする。コマンドは、ＷＤＭキャプチャフィルタを通じて物理カメラに送信される。
【００４１】
ステップ508では、カメラが駆動されて、最も高い要求に従ってビデオデータをキャプチャする。上記した例では、受信した最も高い要求に応じて、ＷＤＭキャプチャフィルタは呼出し及びロードされ、かつ、カメラはＷＤＭキャプチャフィルタによって駆動されて、ビデオデータ（640×480ピクセルの解像度を有する）をキャプチャする。
【００４２】
ステップ510では、キャプチャされたビデオデータは、仮想カメラコンポーネントに転送され、かつ、キャッシュされる。ＷＤＭキャプチャフィルタは、キャプチャされたデータを読み出し、かつ、データを仮想カメラコンポーネントに転送する。仮想カメラコンポーネントの仮想カメラセンタサービスは、キャプチャされたデータをまず受信する。
【００４３】
ステップ512Ａでは、ビデオデータ（最も高い要求のビデオデータにまだ対応する）は、第１ビデオキャプチャソースフィルタインスタンス（ＦＡＣＥアプリケーションに対する）によってリクエストされたフォーマット及び解像度に従ったデータに処理される。また、ステップ512Ｂでは、同じビデオデータは、第２ビデオキャプチャソースフィルタインスタンス（ＭＳＮアプリケーションに対する）によってリクエストされたフォーマット及び解像度に従うデータに処理される。上記したように、仮想カメラコンポーネントのビデオキャプチャソースフィルタは、ビデオデータを処理する。上記した例では、受信したビデオデータ（640×480ピクセルの解像度を有する）は、仮想カメラセンタサービスからビデオキャプチャソースフィルタに転送される。ＦＡＣＥについての第１ビデオキャプチャソースフィルタインスタンスに従って、ビデオデータは、一連の画像（640×480ピクセルの同じ解像度を有する）にサンプリングされ、次いで、顔認識アルゴリズムプログラムに通される。同じように、ＭＳＮについての第２ビデオキャプチャソースフィルタインスタンスによれば、ビデオデータ（640×480ピクセルの解像度を有する）は、320×240ピクセルにスケーリング又は切取りされる。
【００４４】
ステップ514Ａでは、データ（第１ビデオキャプチャソースフィルタインスタンスによってリクエストされたフォーマット及び解像度を有する）は、ＦＡＣＥアプリケーションにレンダリングされる。上記した実施例では、一連の画像（640×480ピクセルの解像度を有する）は、顔認識処理のために、ＦＡＣＥアプリケーションにレンダリングされる。ステップ514Ｂでは、第２ビデオキャプチャソースフィルタインスタンスによってリクエストされたデータが、ＭＳＮアプリケーションにレンダリングされる。上記した実施例では、ビデオストリームデータ（320×240ピクセルの解像度を有する）が、インターネットを通じた瞬時転送のために、ＭＳＮアプリケーションにレンダリングされる。このように、ＦＡＣＥ及びＭＳＮアプリケーションの両方は、カメラによってキャプチャされたビデオデータを使用することができ、かつ、適切に動作することができる。
【００４５】
図６は、本発明の１実施例による単一の物理カメラを使用した複数のアプリケーションを示すワークフロー図600である。ワークフロー図600は、一連の制御フロー及びビデオデータフローに関して図示されている。実線は制御フローを表し、一方では、破線はビデオデータフローを表している。１実施例では、仮想カメラコンポーネントは、ＣＯＭ対応の実行可能なプロセス又はプログラムとして構成される。
【００４６】
多数のユーザ及び多数のタスクをサポートするオペレーティングシステム（例えば、Windows（登録商標））では、ユーザ602は、同時に多くのアプリケーションをオープンし、かつ、オープンされたアプリケーションの一部は、物理カメラを使用する必要があってもよい。１態様では、例として、第１インスタントメッセンジャーアプリケーションＭＳＮ208Ａと、第２インスタントメッセンジャーアプリケーションＹａｈｏｏメッセンジャー208Ｂと、インテリジェントログオン及びロック／アンロックアプリケーション（顔認識ＦＡＣＥ214に基づく）とが全て動作中であり、かつ、カメラへのアクセスをリクエストしている。この例のために、コンピュータシステムに接続された単一の物理カメラだけが存在すると仮定する。図６は図４に関連して説明される。
【００４７】
いったんＭＳＮアプリケーション208Ａがカメラにアクセスするように呼び出すと、第１ビデオキャプチャソースフィルタインスタンス610Ａが作成される。いったんＹａｈｏｏメッセンジャーアプリケーション208Ｂがカメラにアクセスするように呼び出すと、第２ビデオキャプチャソースフィルタインスタンス610Ｂが作成される。同様に、Ｎビデオキャプチャソースフィルタインスタンスが、カメラにアクセスするための各呼出しに応じて作成される。ＦＡＣＥアプリケーション214がカメラにアクセスするように呼び出したとき、Ｎ番目のビデオキャプチャソースフィルタインスタンス610Ｃが作成される。ビデオキャプチャソースフィルタインスタンス610Ａ、610Ｂ及び610Ｃは、物理カメラへの仮想インターフェースであり、かつ、ビデオキャプチャソースフィルタ306のインスタンスである。
【００４８】
次いで、仮想カメラセンタサービス302は、Ｎビデオキャプチャソースフィルタインスタンス610Ａ、610Ｂ及び610Ｃを分析及び管理し、かつ、ＷＤＭキャプチャフィルタ204を通じて物理カメラにコマンドを転送する。仮想カメラセンタサービス302は、ビデオキャプチャソースフィルタインスタンスの最も高い要求（例えば、最も高くリクエストされた解像度）をカメラに送信してもよい。また、仮想カメラセンタサービス302は、Ｎインスタンスからのリクエストを優先させ、かつ、競合するリクエストを多重化する。
【００４９】
コマンドに応じて、カメラは最も高い要求でビデオデータをキャプチャする。カメラはカメラデバイスドライバ614によって駆動される（ＷＤＭキャプチャフィルタ204によって制御される）。ＷＤＭキャプチャフィルタ204は、キャプチャされたデータを読み出し、かつ、データを仮想カメラコンポーネントに転送する。仮想カメラコンポーネントの仮想カメラセンタサービス302は、データをまず受信及びキャッシュする。
【００５０】
次いで、仮想カメラセンタサービス302は、キャッシュ350内にビデオデータをキャッシュする（ビデオキャプチャソースフィルタ306によってアクセスすることができる）。Ｎビデオキャプチャソースフィルタインスタンス610Ａ、610Ｂ及び610Ｃを満足させるために、ビデオキャプチャソースフィルタは、ビデオキャプチャソースフィルタ306に、最も高い要求のビデオデータを、データ（Ｎインスタンス610Ａ、610Ｂ及び610Ｃによってリクエストされた各フォーマット及び解像度を有する）に処理するように依頼する。Ｎビデオキャプチャソースフィルタインスタンス610Ａ、610Ｂ及び610Ｃは、同じフォーマット及び／又は解像度か、又は、異なるフォーマット／解像度のデータをリクエストしてもよい。
【００５１】
最後に、ワークフロー600に示すように、データは、Ｎカメラ使用アプリケーションにディスパッチされる（Ｎビデオキャプチャソースフィルタインスタンス610Ａ、610Ｂ及び610Ｃに続く）。
【００５２】
要約すれば、複数のカメラ使用アプリケーションによってカメラを共用することが達成され、かつ、そのアプリケーション間の競合が回避される。カメラ使用アプリケーションは、物理カメラ又は仮想カメラコンポーネントのどちらと通信しているかを見分けることができない（仮想カメラコンポーネントの使用はカメラ使用アプリケーションに対してトランスペアレントであり、かつ、物理カメラと直接インターフェースしているように動作する。）。同様に、ユーザ602は、物理カメラと相互作用するように、仮想カメラコンポーネントと相互作用する。カメラ使用の観点及びユーザの観点の両方から、全てのアプリケーションが物理カメラを使用しているようである。
【００５３】
上記した説明及び図面は本発明の実施例を表すが、添付の特許請求の範囲に定義された本発明の原理の真の趣旨及び範囲から逸脱することなく、多様な追加、変更及び置換えがそれになされることを理解しなければならない。本発明が形態、構造、配置、比率、材料、要素、及びコンポーネントの多くの変形例で使用され、かつ、別な方法で、本発明の実施（本発明の原理から逸脱することなく、特定の環境及び動作上の要求に特に適合された）に使用されることを当業者なら理解する。したがって、ここで開示された実施例は、あらゆる点で説明的であり、限定するものではなく、本発明の範囲は添付の特許請求の範囲及びその法的均等物によって示され、かつ、上記した説明に限定されないものとして取り扱わなければならない。
【符号の説明】
【００５４】
202  カメラ使用アプリケーション
204  ＷＤＭキャプチャフィルタ
206  仮想カメラコンポーネント
210  カメラ
208Ａ  ＭＳＮ
208Ｂ  Ｙａｈｏｏメッセンジャー
208Ｃ  ＳＫＹＰＥ
214  ＦＡＣＥ
302  仮想カメラセンタサービス
304  仮想カメラ設定ツール
306  ビデオキャプチャソースフィルタ
310  フィルタ標準インターフェース
312  サービスアクセスモジュール
350  キャッシュ
602  ユーザ
610Ａ,Ｂ,Ｃ  ビデオキャプチャソースフィルタインスタンス１，２，Ｎ
614  カメラデバイスドライバ
【図１】
2010213256.tif 000003
【図２】
2010213256.tif 000004
【図３】
2010213256.tif 000005
【図４】
2010213256.tif 000006
【図５】
2010213256.tif 000007
【図６】
2010213256.tif 000008