(57)【要約】【解決手段】リソースが制限されたポータブルデバイスにおけるカメラリソースを制御するシステム。方法は、アプリケーションが、ポータブルデバイスにおけるカメラリソースを制御できるようにするカメラシステムを操作するために提供される。この方法は、カメラシステムを起動することであって、このカメラシステムは、カメラリソースを制御するように動作可能であることと、アプリケーションからの命令を受け取るためにアプリケーションプログラムインタフェース（ＡＰＩ）を準備することと、ＡＰＩを経由してアプリケーションから命令を受け取ることであって、この命令は、実行されるカメラ機能を識別することと、この命令によって識別されるカメラ機能を実行することとを含む。
2006524973.tif 000002
【特許請求の範囲】
【請求項１】
ポータブルデバイス内のカメラリソースをアプリケーションが制御できるようにするためにカメラシステムを操作する方法であって、
前記カメラシステムを起動することであって、前記カメラシステムは前記カメラリソースを制御するように動作可能であることと、
前記アプリケーションから命令を受け取るためにアプリケーションプログラムインタフェースを準備することと、
前記アプリケーションプログラムインタフェースを経由して前記アプリケーションから命令を受け取ることであって、前記命令は、実行されるカメラ機能を識別することと、
前記命令によって識別されたカメラ機能を実行することとを備えた方法。
【請求項２】
請求項１に記載の方法において、
前記起動するステップは、前記カメラリソースとインタフェースする一つ又は複数のネイティブモジュールに前記カメラシステムをインタフェースさせることを含む方法。
【請求項３】
請求項１に記載の方法において、
前記カメラリソースから取得されたデータを格納するためにメディアデータ構造を生成することを更に備えた方法。
【請求項４】
請求項１に記載の方法において、
前記カメラ機能を実行するステップは、
前記カメラリソースに関連付けられた機能を識別する状態計算機を準備することと、
前記カメラ機能を実行するために、前記命令に基づいて前記状態計算機をナビゲートすることとを備えた方法。
【請求項５】
請求項１に記載の方法において、前記ポータブルデバイスは第二のカメラリソースを備えており、前記方法は、
第二のカメラシステムを起動することであって、前記第二のカメラシステムは、前記第二のカメラリソースを制御するように動作可能であることと、
前記アプリケーションから命令を受け取るために第二のアプリケーションプログラムインタフェースを準備することと、
前記第二のアプリケーションプログラムインタフェースを経由して前記アプリケーションから第二の命令を受け取ることであって、前記第二の命令は、前記第二のカメラリソースによって実行されるカメラ機能を識別することと、
前記第二の命令によって識別された前記カメラ機能を実行することとを備えた方法。
【請求項６】
請求項１に記載の方法において、前記ポータブルデバイスは無線デバイスである方法。
【請求項７】
ポータブルデバイス内のカメラリソースをアプリケーションが制御できるようにするためにカメラシステムを操作する装置であって、
前記カメラシステムを起動する手段であって、前記カメラシステムは前記カメラリソースを制御するように動作可能である手段と、
前記アプリケーションから命令を受け取るためにアプリケーションプログラムインタフェースを準備する手段と、
前記アプリケーションプログラムインタフェースを経由して前記アプリケーションから命令を受け取る手段であって、前記命令は、実行されるカメラ機能を識別する手段と、
前記命令によって識別されたカメラ機能を実行する手段とを備えた装置。
【請求項８】
請求項７に記載の装置において、
前記起動する手段は、前記カメラリソースとインタフェースする一つ又は複数のネイティブモジュールに前記カメラシステムをインタフェースさせる手段を備えた装置。
【請求項９】
請求項７に記載の装置において、
前記カメラリソースから取得されたデータを格納するためにメディアデータ構造を生成する手段を更に備えた装置。
【請求項１０】
請求項７に記載の装置において、
前記カメラ機能を実行する手段は、
前記カメラリソースに関連付けられた機能を識別する状態計算機を準備する手段と、
前記カメラ機能を実行するために、前記命令に基づいて前記状態計算機をナビゲートする手段とを備えた装置。
【請求項１１】
請求項７に記載の装置において、前記ポータブルデバイスは第二のカメラリソースを備えており、前記装置は、
第二のカメラシステムを起動する手段であって、前記第二のカメラシステムは、前記第二のカメラリソースを制御するように動作可能である手段と、
前記アプリケーションから命令を受け取るために第二のアプリケーションプログラムインタフェースを準備する手段と、
前記第二のアプリケーションプログラムインタフェースを経由して前記アプリケーションから第二の命令を受け取る手段であって、前記第二の命令は、前記第二のカメラリソースによって実行されるカメラ機能を識別する手段と、
前記第二の命令によって識別された前記カメラ機能を実行する手段とを備えた装置。
【請求項１２】
請求項７に記載の装置において、前記ポータブルデバイスは無線デバイスである装置。
【請求項１３】
ポータブルデバイス内のプロセッサによって実行された時、前記ポータブルデバイス内のカメラリソースをアプリケーションが制御できるようにするカメラシステムを準備するように動作可能な命令を備えたコンピュータ読取可能媒体であって、
前記カメラシステムを起動する命令であって、前記カメラシステムは前記カメラリソースを制御するように動作可能である命令と、
前記アプリケーションからアプリメーションプログラムインタフェース命令を受け取るためにアプリケーションプログラムインタフェースを準備する命令と、
前記アプリケーションプログラムインタフェースを経由して前記アプリケーションからアプリケーションプログラムインタフェース命令を受け取る命令であって、前記アプリケーションプログラムインタフェース命令は、実行されるカメラ機能を識別する命令と、
前記アプリメーションプログラムインタフェース命令によって識別されたカメラ機能を実行する命令とを備えたコンピュータ読取可能媒体。
【請求項１４】
請求項１３に記載のコンピュータ読取可能媒体において、
前記起動する命令は、前記カメラリソースとインタフェースする一つ又は複数のネイティブモジュールに前記カメラシステムをインタフェースさせる命令を備えたコンピュータ読取可能媒体。
【請求項１５】
請求項１３に記載のコンピュータ読取可能媒体において、
前記カメラリソースから取得されたデータを格納するためにメディアデータ構造を生成する命令を更に備えたコンピュータ読取可能媒体。
【請求項１６】
請求項１３に記載にコンピュータ読取可能媒体において、
前記実行する命令は、
前記カメラリソースに関連付けられた機能を識別する状態計算機を準備する命令と、
前記カメラ機能を実行するために、前記アプリケーションプログラムインタフェース命令に基づいて前記状態計算機をナビゲートする命令とを備えたコンピュータ読取可能媒体。
【請求項１７】
請求項１３に記載のコンピュータ読取可能媒体において、前記ポータブルデバイスは第二のカメラリソースを備えており、前記コンピュータ読取可能媒体は、
第二のカメラシステムを起動する命令であって、前記第二のカメラシステムは、前記第二のカメラリソースを制御するように動作可能である命令と、
前記アプリケーションからアプリケーションプログラムインタフェース命令を受け取るために第二のアプリケーションプログラムインタフェースを準備する命令と、
前記第二のアプリケーションプログラムインタフェースを経由して前記アプリケーションから第二のアプリケーションプログラムインタフェース命令を受け取る命令であって、前記第二のアプリケーションプログラムインタフェース命令は、前記第二のカメラリソースによって実行されるカメラ機能を識別する命令と、
前記第二のアプリケーションプログラムインタフェース命令によって識別された前記カメラ機能を実行する命令とを備えたコンピュータ読取可能媒体。
【請求項１８】
請求項１３に記載のコンピュータ読取可能媒体において、前記ポータブルデバイスは無線デバイスであるコンピュータ読取可能媒体。
【請求項１９】
ポータブルデバイス内のカメラリソースをアプリケーションが制御できるようにするためにカメラシステムを操作する装置であって、
前記カメラシステムを起動するロジックであって、前記カメラシステムは前記カメラリソースを制御するように動作可能であるロジックと、
前記アプリケーションから命令を受け取るためにアプリケーションプログラムインタフェースを準備するロジックと、
前記アプリケーションプログラムインタフェースを経由して前記アプリケーションから命令を受け取るロジックであって、前記命令は、実行されるカメラ機能を識別するロジックと、
前記命令によって識別されたカメラ機能を実行するロジックとを備えた装置。
【請求項２０】
請求項１９に記載の装置において、
前記起動するロジックは、前記カメラリソースとインタフェースする一つ又は複数のネイティブモジュールに前記カメラシステムをインタフェースさせるロジックを含む装置。
【請求項２１】
請求項１９に記載の装置において、
前記カメラリソースから取得されたデータを格納するためにメディアデータ構造を生成するロジックを更に備えた装置。
【請求項２２】
請求項１９に記載の装置において、
前記カメラ機能を実行するロジックは、
前記カメラリソースに関連付けられた機能を識別する状態計算機を準備するロジックと、
前記カメラ機能を実行するために、前記命令に基づいて前記状態計算機をナビゲートするロジックとを備えた装置。
【請求項２３】
請求項１９に記載の装置において、前記ポータブルデバイスは第二のカメラリソースを備えており、前記装置は、
第二のカメラシステムを起動するロジックであって、前記第二のカメラシステムは、前記第二のカメラリソースを制御するように動作可能であるロジックと、
前記アプリケーションから命令を受け取るために第二のアプリケーションプログラムインタフェースを準備するロジックと、
前記第二のアプリケーションプログラムインタフェースを経由して前記アプリケーションから第二の命令を受け取るロジックであって、前記第二の命令は、前記第二のカメラリソースによって実行されるカメラ機能を識別するロジックと、
前記第二の命令によって識別された前記カメラ機能を実行するロジックとを備えた装置。
【請求項２４】
請求項１９に記載の装置において、前記ポータブルデバイスは無線デバイスである装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ポータブルデバイスにおける画像捕捉及び処理に関し、特に、組込式コントローラを持つポータブルデバイスにおけるカメラリソースを制御するためのシステムに関する。
【背景技術】
【０００２】
技術の進歩により、より小型でより強力なパーソナル計算デバイスが生まれた。例えば、現在、多くの種類のポータブル無線電話、パーソナルデジタルアシスタント（ＰＤＡ）、及びページングデバイスが存在している。これらは小型で、軽量であり、ユーザによって容易に持ち運ばれる。一般に、これらのデバイスは、制限されたメモリリソースを持つ組込式のコントローラを含んでいる。例えば、利用可能なメモリ及び処理能力の量は、デバイスの小さなサイズによって制限されるかもしれない。
【０００３】
より多くの量のデータを処理し、より洗練されたプログラムを実行するために、パーソナル計算デバイスに対するニーズが増大している。例えば、ユーザは、広範な画像処理を提供するアプリケーションを求めている。この分野では、ユーザは、処理及び／又は送信するためのビデオクリップや静止画像を捕捉するように制御することができるカメラリソースを含むポータブルデバイスを持ちたいと思うであろう。
【０００４】
ポータブルデバイス上で画像を捕捉するために、これらデバイスのカメラリソースを制御する必要がある。例えば、一つのタイプのポータブルデバイスは、静止画像のみを捕捉するように設計された低解像度のカメラリソースを含み、別のタイプのポータブルデバイスは、フルモーションビデオを捕捉するために設計されたズーム機能付の大型かつ高解像度のカメラリソースを含むかもしれない。従って、ポータブルデバイスの各々のタイプは、画像コンテンツを捕捉するための異なるカメラリソースを持ちうる。従って、アプリケーション開発者は、異なる設定及びカメラリソースを持つバラエティに富んだポータブルデバイスで使用されるアプリケーションを開発するときには、互換性問題を克服せねばならない。
【０００５】
互換性問題を克服するために使用される一つの技術は、アプリケーションが、特定のカメラリソースを持つポータブルデバイス上で動作するように特別に作成されることを必要とする。例えば、もしもアプリケーション開発者が、ビデオ画像を取得するためにポータブルデバイス上で動作するアプリケーションを開発すると、この開発者は、特定のデバイス上で利用可能なカメラリソースと正確に互換性を持つようにこのアプリケーションを調整しなければならない。
【０００６】
あいにく、各デバイス上で見られる特定のカメラリソースのために調整され、バラエティに富んだポータブルデバイス上で使用するためのアプリケーションを生産することは高価であり非効率的である。例えば、アプリケーション開発者は、利用可能なカメラリソースに基づいて、異なるポータブルデバイス上で使用するためにアプリケーションを修正する必要があるであろう。これによって、生産される同じアプリケーションの複数バージョンが必要となる。また、アプリケーション開発者は、新たなカメラリソースが利用可能になると、そのアプリケーションをコンスタントに更新しなくてはならないであろう。
【０００７】
ポータブルデバイス上におけるカメラリソースを制御するために提案される別の技術は、一般に大規模なコンピュータシステムにおいて利用可能なマルチメディアプラットフォームの利用を含んでいる。例えば、デスクトップ、サーバ、または他の相対的に大規模な計算デバイス上での使用のために開発された大規模かつ複雑なマルチメディアプラットフォームが存在する。しかしながら、これらのタイプのプラットフォームは、もしも制限されたリソースを持つポータブルデバイス上で使用されるのであれば非常に非効率的になるであろう。なぜなら、これらのシステムは一般に、デバイスにロードされたアプリケーション及びプログラムモジュールの間に生成される極めて多くの数のソフトウェアインタフェースを必要とするからである。従って、非常に複雑になることに加えて、これらシステムは、メモリ及び処理が大量となる。これは、一般的なポータブルデバイス上で利用可能な制限された処理容量と両立しない。
【０００８】
従って、必要なものは、静止画像及びビデオを捕捉し、エンコードし、操作し、表示するために、アプリケーションが、種々のポータブルデバイス上のカメラリソースに効率的及び容易にアクセスし、かつ制御することを可能にするシステムである。このシステムは、コンパクトで、一般的なポータブルデバイス上で利用可能な制限されたリソースを用いて動作するように設計されるべきである。例えば、このシステムは、大規模で、非効率的で、リソースが制限された小型のデバイス上で使用するのには現実的ではないプログラムモジュール間で高価なソフトウェアインタフェースを必要とすべきではない。このシステムは、全てのタイプのカメラリソースが制御されるようになり、利用可能になった新たなカメラリソースの制御を考慮した拡張性のあるアーキテクチャを提供するように動作すべきである。
【発明の開示】
【０００９】
本出願は、２００３年４月２５日に出願された米国仮出願６０／４６５，５３３の優先権の利益を主張する。本出願はまた、２００３年６月２日に出願された米国特許出願１０／４５３，０９１の優先権の利益を主張する。これら文書の内容は、本願に参照により含まれている。
【００１０】
一つ又は複数の実施例では、方法及び装置を含むカメラシステムが、ポータブルデバイス上のカメラデバイスを制御するために提供される。例えば、一つのポータブルデバイスは、組込式のコントローラと、カメラデバイスを含む制限されたメモリリソースとを備えた無線電話かもしれない。一つ又は複数の実施例では、このカメラシステムは、ポータブルデバイス上で実行するアプリケーションが、簡単なインタフェースを用いてカメラリソースを制御することを可能にするポータブルデバイス上で動作する小さく効率的なプログラムを含んでいる。従って、このカメラシステムは、制限されたメモリリソースを備えた組込式コントローラを持ったポータブルデバイス内での使用に特に良く適している。
【００１１】
一つの実施例では、カメラシステムが、ポータブルデバイス上のカメラデバイスにアクセスして制御するための簡単で、効率的で、強力な手法を提供し、静的及び動的なアプリケーションが、（１）スナップショット及びビデオ画像を捕捉すること、（２）カメラ調整及びコンフィギュレーションパラメータを設定すること、（３）捕捉した画像及びビデオフレームを操作すること、（４）位置情報のような付加的情報を画像及びビデオフレームに加えること、（５）捕捉した画像及びビデオフレームをエンコードすること、（６）捕捉した画像及びビデオフレームを表示すること、及び（７）カメライベントを非同期的に受け取ることを可能にする。
【００１２】
一つ又は複数の実施例では、カメラシステムは、実行しているアプリケーションによって作成される小さなプログラムモジュールを含む。このアプリケーションは、プログラムモジュールによって提供される簡単なアプリケーションプログラムインタフェース（ＡＰＩ）を用いて全てのカメラ操作を実行する。カメラからのイベントは、登録されたコールバック機能を経由してアプリケーションに送られる。プログラムモジュールは、最小のメモリしか消費せず、全てのカメラ操作を実行するために、デバイスレベルドライバソフトウェアに直接アクセスすることによって効率的な実行を提供する。
【００１３】
一つの実施例では、ポータブルデバイス内のカメラリソースをアプリケーションが制御できるようにするためにカメラシステムを操作するために方法が提供される。この方法は、カメラリソースを制御するように動作可能なカメラシステムを起動することと、アプリケーションから命令を受け取るためにアプリケーションプログラムインタフェース（ＡＰＩ）を準備することと、ＡＰＩを経由してアプリケーションから命令を受け取ることであって、この命令は、実行されるカメラ機能を識別することと、この命令によって識別されるカメラ機能を実行することとを備える。
【００１４】
別の実施例では、アプリケーションが、ポータブルデバイス内のカメラリソースを制御することを可能にするためにカメラシステムを操作するために装置が提供される。この装置は、カメラリソースを制御するように動作可能なカメラシステムを起動する手段を備える。この装置は、アプリケーションからの命令を受け取るためにアプリケーションプログラムインタフェース（ＡＰＩ）を準備する手段も備えている。この装置は、ＡＰＩを経由してアプリケーションから命令を受け取る手段も備えている。この命令は、実行されるカメラ機能を識別する。この装置は、この命令によって識別されるカメラ機能を実行する手段も備えている。
【００１５】
別の実施例では、ポータブルデバイス内のプロセッサによって実行される時に、アプリケーションが、ポータブルデバイス内のカメラリソースを制御することを可能にするカメラシステムを提供するように動作可能な命令を備えたコンピュータ読取可能媒体が提供される。このコンピュータ読取可能媒体は、カメラリソースを制御するように動作可能なカメラシステムを起動する命令と、アプリケーションからアプリケーションプログラムインタフェース（ＡＰＩ）命令を受け取るためにＡＰＩを準備する命令と、ＡＰＩを経由してアプリケーションからＡＰＩ命令を受け取る命令であって、前記ＡＰＩ命令は、実行されるカメラ機能を識別する命令と、ＡＰＩ命令によって識別されるカメラ機能を実行する命令とを備える。
【００１６】
別の実施例では、カメラシステムを操作し、アプリケーションが、ポータブルデバイス内のカメラリソースを制御することを可能にするために装置が提供される。この装置は、カメラリソースを制御するよう動作可能なカメラシステムを起動するロジックを備え、更に、アプリケーションから命令を受け取るためにアプリケーションプログラムインタフェース（ＡＰＩ）を準備するロジックを備える。この装置は、実行されるカメラ機能を識別する命令を、ＡＰＩを経由してアプリケーションから受け取るロジックを備え、更に、この命令によって識別されるカメラ機能を実行するロジックを備える。
【００１７】
本発明のその他の局面、利点、及び特徴は、後述する図面の簡単な説明、発明を実施するための最良の形態、及び特許請求の範囲を検討した後に明らかになるであろう。
【発明を実施するための最良の形態】
【００１８】
ここに記載した実施例の上述した局面及び付随する利点は、添付図面と照らしあわせた時に以下に示す詳細記載を参照することにより、より容易に明らかになるであろう。
【００１９】
以下に示す詳細記載は、ポータブルデバイス内のカメラリソースを制御するための、方法及び装置を含むカメラシステムを記載している。一つ又は複数の実施例では、ポータブルデバイスが組込式コントローラと、制限されたリソース（すなわち、制限されたメモリ容量）とを持っている。そしてカメラシステムは、単一のインタフェースを用いてアプリケーションプログラムがカメラリソースを制御することを可能にするように動作する。
【００２０】
一つ又は複数の実施例では、このカメラシステムは、例えばデバイス特有のリソースのための一般的なコールを提供することによって、デバイスの動作を簡素化するために使用されている、デバイス上で実行するランタイム環境と相互作用する。一つのそのようなランタイム環境は、カリフォルニア州サンディエゴのＱＵＡＬＣＯＭＭ社によって開発されたBinary Runtime Environment for Wireless（登録商標）（ＢＲＥＷ（登録商標））ソフトウェアプラットフォームである。以下の記述において、カメラシステムは、例えばＢＲＥＷソフトウェアプラットフォームのようなランタイム環境を実行するポータブルデバイス上で実施されることが仮定されるであろう。しかしながら、カメラシステムの一つ又は複数の実施例は、ポータブルデバイス上のカメラリソースを制御するために、他のタイプのランタイム環境と使用するのに適している。
【００２１】
図１は、１０４に示す“Ｉカメラ”システムと称されるカメラシステムの一つの実施例を実施するのに適した組込式コントローラを備えたポータブル無線デバイス１０２を含むデータネットワーク１００を示す。Ｉカメラシステム１０４は、デバイス１０２上で動作するアプリケーションが、デバイス１０２上に配置されたカメラリソース１２４を制御可能とするように動作する。一つの実施例では、Ｉカメラシステム１０４は、デバイス上で動作するランタイム環境１０６と相互作用する。例えば、一つの実施例では、ランタイム環境１１６は、ＢＲＥＷソフトウェアプラットフォームである。
【００２２】
一つ又は複数の実施例では、Ｉカメラシステム１０４は、広範なポータブルデバイスとともに使用するために適している。例えば、その他の適切なポータブルデバイスは、限定される訳ではないが、ＰＤＡ、電子メールデバイス、ページャ、タブレットコンピュータ、移動電話、又はカメラリソースを含むその他の事実上任意のタイプのポータブルデバイスを含む。
【００２３】
無線デバイス１０２は、無線通信チャネル１１０を用いて、データネットワーク１０８を介してネットワークサーバ１０６と通信するように動作可能である。一つの実施例では、デバイス１０２は、ネットワーク１０８を介して音声及び／又はその他の情報を送受信する無線電話を備える。またデバイス１０２は、ネットワーク１０８を介してアプリケーションを受け取るように動作する。例えば、アプリケーション１１２，１１４は、ネットワークサーバ１０６からデバイス１０２へダウンロードされるかもしれない。これらのアプリケーションは、デバイス１０２で実行し、デバイスカメラ１２４を使って、追加の特徴及び／又は機能をデバイスユーザへ提供する。例えば、これらアプリケーションは、デバイスカメラ１２４から静止画像又はビデオ情報を取得して、処理する。また、ネットワーク１０８に接続されたその他任意のネットワークエンティティからデバイス１０２へとアプリケーションをダウンロードすることも可能である。
【００２４】
一つの実施例では、デバイス１０２は、直接リンク１２０を経由して、例えばローカルワークステーション１１８のようなローカルシステムにも直接接続している。デバイス１０２は、直接リンク１２０を用いて、ローカルワークステーション１１８からアプリケーションをダウンロードするように動作可能である。例えば、アプリケーション１２２は、このリンク１２０を用いてワークステーション１１８からデバイス１０２へダウンロードされる。
【００２５】
Ｉカメラシステム１０４は、サーバ１０６からデバイス１０２へダウンロードされ、アプリケーションがカメラ１２４を制御することを可能とするためにデバイス１０２上で動作する。別の実施例では、Ｉカメラシステム１０４は、リンク１２０を経由してワークステーション１１８からデバイス１０２へダウンロードされるか、又は製造中にデバイス１０２にインストールされる。
【００２６】
一つの実施例では、Ｉカメラシステム１０４は、例えばフロッピー（登録商標）ディスクのようなコンピュータ読取可能媒体に格納された命令として提供され、デバイス１０２への送信のためにシステム１１８にロードされる。別の実施例では、Ｉカメラシステム１０４は、例えばメモリカード（図示せず）のようなコンピュータ読取可能媒体上に格納されうる。そして、Ｉカメラシステム１０４がデバイス１０２上で実行できるようにデバイス１０２に直接プラグされる。従って、デバイス１０２は、無線送信、有線送信、又はメモリデバイスから直接取り出すことによってＩカメラシステム１０４を取得する。
【００２７】
図２は、アプリケーションがカメラリソースを効率的に制御可能とするように動作するＩカメラシステム１０４の一つの実施例を含むデバイス１０２の一つの実施例を例示するブロック図を示す。デバイス１０２は、内部データバス２０４及びスタックメモリ２１６に接続された処理ロジック２０２を含んでいる。また、この内部データバス２０４には、命令メモリ２０６、アプリケーションメモリ２０８、ヒープメモリ２１０、ユーザインタフェース２１２、カメラロジック２１６、オーディオロジック２１８、及び入力／出力（Ｉ／Ｏ）インタフェース２１４が接続されている。
【００２８】
デバイス１０２の動作中、処理ロジック２０２は、命令メモリ２０６に格納されたプログラム命令を実行し、ランタイム環境１１６を起動する。ランタイム環境１１６は、ＢＲＥＷ環境、又はその他の適切なランタイム環境かもしれない。命令実行を支援するために、処理ロジック２０２は、スタックメモリ２１６を用いて、プログラムデータ又は命令を一時的なベースで格納する。例えば、処理ロジック２０２は、定数、変数、プログラムアドレス、ポインタ、命令、又はその他の情報項目をスタックメモリ２１６に格納する。別の実施例では、処理ロジック２０２が、ヒープメモリ２１０内に一時的なベースで情報を格納する。ヒープメモリは、処理ロジック２０２によって情報の格納及び検索のために適した事実上あらゆるタイプのメモリを含んでいる。
【００２９】
一つ又は複数の実施例では、この処理ロジック２０２は、ＣＰＵ、ゲートアレイ、ソフトウェア、又はハードウェアとソフトウェアとのあらゆる組み合わせを含むロジックを含む。従って、処理ロジック２０２は、一般に、計算機読取可能な命令を実行するためにロジックを含む。
【００３０】
命令メモリ２０６は、ＲＡＭ、ＲＯＭ、ＦＬＡＳＨ、ＥＥＰＲＯＭ、その他のあらゆる適切なタイプのメモリ、又はこれらの組み合わせを含む。一つの実施例では、命令メモリ２０６はデバイス１０２に対して内部に配置されている。別の実施例では、命令メモリ２０６は、リムーバブルメモリカード、又はデバイス１０２に選択的に結合されたメモリデバイス、すなわち内部バス２０４に接続されたメモリデバイスを含んでいる。従って、命令メモリ２０６は、処理ロジック２０２によって実行される命令を格納することができる事実上いかなるタイプのメモリも含む。
【００３１】
ユーザインタフェース２１２は、ユーザがデバイス１０２と対話することを可能にするための例えばキーパッド、ポインティングデバイス、タッチパッド、又はその他の入力メカニズムからユーザ入力を受け取る。オーディオロジック２１８は、オーディオ情報をデバイススピーカ、遠隔スピーカ、オーディオシステム、又はその他のタイプの音リソースへ出力するためにロジックを含む。例えば、一対の遠隔スピーカが、オーディオロジック２１８の出力を受け取り、オーディオ情報をデバイスユーザへレンダする。
【００３２】
カメラロジック２１６は、デバイスにインストールされたカメラリソース１２４へインタフェースするハードウェア及び／又はソフトウェアロジックを含んでいる。例えば、このデバイスは、ＣＣＤカメラ、又はその他のあらゆるタイプのカメラリソースを含むかもしれない。カメラロジック２１６は、静止画像及びビデオ画像がカメラリソースから取得されることを可能にするためにカメラリソースにインタフェースする。従って、カメラロジック２１６及びオーディオロジック２１８は、デバイス１０２がビジュアル及びオーディオ情報をキャプチャ又は取得できるようにするために、あらゆる組み合わせのハードウェア及び／又はソフトウェアを含みうる。
【００３３】
Ｉ／Ｏインタフェース２１４は、デバイス１０２と、外部デバイス、システム、及び／又はネットワークとの間で情報を送受信するように動作する。例えば、一つの実施例では、Ｉ／Ｏインタフェース２１４は、例えば通信リンク１１０を用いて無線データネットワークを介して情報を送受信するように動作する無線トランシーバ回路（図示せず）を含んでいる。例えば、このトランシーバは、処理ロジック２０２から受け取った情報を変調し、この変調された情報を、無線送信に適した高周波数信号に変換するする回路を含んでいる。同様に、このトランシーバは、受け取った高周波数通信信号を、復調及び処理ロジック２０２による後の処理に適した信号に変換する回路も含んでいる。
【００３４】
別の実施例では、Ｉ／Ｏインタフェース２１４は、例えば電話線のようなハードワイヤ通信リンクを介して情報を送受信し、例えばインターネットのような公衆データネットワーク上の遠隔システムと通信するように動作するトランシーバを含んでいる。
【００３５】
更に別の実施例では、Ｉ／Ｏインタフェース２１４は、リンク１２０を用いて例えばローカルワークステーション１１６のようなローカルデバイスと通信するように動作する回路を含んでいる。このＩ／Ｏインタフェース２１４はまた、プリンタ、又はその他のローカルコンピュータ、又は例えばフロッピー（登録商標）ディスク又はメモリカードのようなデバイスと通信するための回路（例えばシリアルポートロジック又はパラレルポートロジック）を含んでいる。従って、Ｉ／Ｏインタフェース２１４は、デバイス１０２が、ローカル又は遠隔に配置されたその他のデバイス又はシステムと通信することを可能にするあらゆる種類のハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの任意の組み合わせを含むロジックを含む。
【００３６】
デバイス１０２の動作中、処理ロジック２０２によるプログラム命令の実行によって、Ｉカメラシステム１０４が起動される。例えば、命令メモリ等のようなコンピュータ読取可能媒体にはＩカメラ命令が格納されており、これら命令を実行することによって、Ｉカメラシステムを起動する。デバイス上に配置されたカメラリソース１２４をアプリケーションが効率的に制御できるようにするために、Ｉカメラシステム１０４は、ランタイム環境１１６と対話する。例えば、アプリケーション２２０は、無線ネットワーク１０８を経由してデバイス１０２へダウンロードされ、メモリ２０８に格納される。一つの実施例では、アプリケーション２２０が起動され、カメラロジック２１６を制御することによって、カメラリソース１２４の動作を制御するためにＩカメラシステム１０４と対話する。例えば、アプリケーション２２０は、カメラリソースから静止画像又はビデオを取り出すか、又はカメラリソースがどのように動作するかを制御する選択パラメータを設定するように動作する。これを達成するために、アプリケーション２２０は、Ｉカメラシステム１０４によって提供される単一のプログラムインタフェースと対話して、カメラリソースに関連する全ての操作を実行する。デバイス１０２の設定は、ポータブルデバイス上のカメラリソースをアプリケーションが効率的に制御できるようにするために、Ｉカメラシステム１０４の一つの実施例を実施するために適切な単なる一つの設定であることが言及されるべきである。また、本発明の範囲内でその他のデバイス又はデバイス設定を用いてＩカメラシステム１０４を実施することも可能である。
【００３７】
図３は、デバイス１０２上に実装されたＩカメラシステム１０４の一つの実施例の詳細機能図を示す。デバイス１０２は、例えばカメラ１２４のようなカメラリソースを含むネイティブなハードウェア３０２を含む。デバイス１０２は、オーディオ及びビデオプログラムモジュールを含むネイティブなマルチメディアソフトウェア３０４も含む。これらモジュールは、例えばＭＰＥＧ４及びＪＰＥＧエンコードモジュールのような特定のエンコードモジュールを含みうる。これらモジュールは、ネイティブなハードウェア３０２と直接的に通信するために用いられる低レベルソフトウェアモジュールを表す。例えば、このモジュール３０４は、カメラリソース３０２とインタフェースする。一つの実施例が示されているが、これよりも少ない又は多いマルチメディアソフトウエラモジュール３０４を持つことも可能であり、これらモジュールは、全てのタイプのネイティブなハードウェア３０２とインタフェースするかもしれない。従って、その他のネイティブなハードウェア３０２及びネイティブなソフトウェア３０４の構成が、本発明の範囲内で可能である。
【００３８】
動作中、デバイス１０２は、一つの実施例ではＢＲＥＷ環境であるラインタイム環境１１６を起動するためにプログラム命令を実行する。デバイス１０２の動作中、次にアプリケーション２２０が起動される。例えば、このデバイスのユーザは、（すなわち、インタフェース２１４を用いて）データネットワークからアプリケーション２２０をダウンロードし、ユーザＩ／Ｆ２１２を経由してアプリケーション２２０を起動する。アプリケーション２２０は、デバイスのカメラリソースを制御するために設計され、ここで記述したようなＩカメラ構成物を用いて生成される。アプリケーション２２０は、Ｉカメラシステム１０４を作成する。これによってアプリケーション２２０が、カメラリソースに関連する全ての動作を実行するために、Ｉカメラシステム１０４によって提供される簡単なアプリケーションプログラムインタフェース（ＡＰＩ）３０６を使用することが可能となる。メディアデータ構造３０８は、オプションで、ビデオ情報の格納及び検索のためにＩカメラシステム１０４によって生成される。
【００３９】
Ｉカメラシステム１０４は、ランタイム環境１１６を経由してネイティブなモジュール３０４とインタフェースし、通信する。例えば、このランタイム環境１１６は、デバイス特有のリソースにアクセスするために一般化されたコールを与えるＢＲＥＷプラットフォームかもしれない。しかしながら、あらゆる適切なインタフェース技術が、Ｉカメラシステム１０４とモジュール３０４との間の通信を可能にするために用いられうる。従って、選択されたカメラ機能を実行するために、Ｉカメラシステム１０４が、モジュール３０４のうちの何れかに直接的に命令することが可能である。例えば、Ｉカメラシステム１０４は、Ｍｐｅｇ４モジュールに対して、カメラリソースからビデオデータを取得し、それをＭｐｅｇ４フォーマットにエンコードするように命令する。Ｉカメラシステム１０４によってモジュール３０４から取得されたデータは、データ構造３０８内に格納される。これによって「記録」機能を実行する。そして、デバイスディスプレイ上に取り出されて表示される。これによって、「再生」機能を実行する。
【００４０】
（メディアデータ構造） 
メディアデータ構造３０８は、Ｉカメラシステム１０４によってネイティブなソフトウェア３０４から受け取ったカメラデータをカプセル化するように動作する。一つの実施例では、以下に示す構造が、ソース／シンクタイプ、及びメディアデータタイプに関連付けられた状況に応じたデータを定義するメディアデータ構造を定義する。
【表１】
2006524973.tif 000003
【００４１】
ここで、メンバーは以下のように定義される。
【表２】
2006524973.tif 000004
【００４２】
そして、以下の表は、予め定義されたメディアデータタイプのための状況に応じたデータの詳細を与える。ここでは、“Ｒｅａｄ／Ｗｒｉｔｅ”が、デバイスのカメラリソースに関する“再生／記録”を意味する。
【表３】
2006524973.tif 000005
【００４３】
再生の場合、ｃｌｓＤａｔａを、対応するインタフェースポインタに設定されたｐＤＡＴＡを備えたあらゆるＩＳｏｕｒｃｅｂａｓｅクラスのＣＬＳＩＤに設定することができることが言及されるべきである。
【００４４】
一つの実施例では、Ｉカメラシステム１０４は、アプリケーションが、デバイス上のカメラリソースを制御することを可能にする単一のインタフェース３０６を提供する。インタフェース３０６は、種々のカメラ関連機能を実行するために、アプリケーションが実行することができるＩカメラＡＰＩ命令のセットを含んでいる。Ｉカメラシステムによって与えられるＡＰＩ命令のサンプルは以下の通りである。
【表４】
2006524973.tif 000006
【００４５】
例えば、ＩＣＡＭＥＲＡ＿ＳｅｔＰａｒｍ（）命令は、アプリケーションによって、Ｉカメラシステム１０４にデバイスのカメラリソースに関連付けられた変数、設定、又は具体的なパラメータを設定するよう命令するために実行されうる。他の実施例では、アプリケーションは、カメラリソースのあらゆる機能を実質的に制御するために、Ｉカメラシステム１０４に含まれる一つ又は複数のその他のＩカメラＡＰＩ命令（上に図示していない）を実行してよい。
【００４６】
一つの実施例では、Ｉカメラシステム１０４は、アプリケーションが、以下に示すステップを実行することによって、スナップショットを撮影し、それを保存するためにカメラリソースを制御することを可能にするために動作する。
【００４７】
１．  アプリケーションプログラムが、“ＩＳＨＥＬＬ＿ＣｒｅａｔｅＩｎｓｔａｎｃｅ（）”命令を用いてＩカメラシステム／インタフェースを作成し、非同期イベントを受け取るためにコールバック機能を登録する。
【００４８】
２．  “ＩＣＡＭＥＲＡ＿Ｐｒｅｖｉｅｗ（）”命令が、カメラをプレビューモードで起動し、イメージフレームが、登録されたコールバック機能を用いて、アプリケーションによって取得され表示されるようにする。
【００４９】
３．  “ＩＣＡＭＥＲＡ＿ＳｅｔＭｅｄｉａＤａｔａ（）”命令が、データが記録される必要があるファイル名／バッファを設定する。
【００５０】
４．  “ＩＣＡＭＥＲＡ＿ＳｅｔＶｉｄｅｏＥｎｃｏｄｅ（）”命令及び“ＩＣＡＭＥＲＡ＿ＳｅｔＡｕｄｉｏＥｎｃｏｄｅ（）”命令が、カメラリソース及びオーディオからの画像データをエンコードするために使用されるエンコードフォーマットを特定する。例えば、このエンコードフォーマットは、ＪＰＥＧ又はＭＰＥＧ４エンコードかもしれない。例えば、カメラリソースは、オーディオ記録のために関連付けられたマイクロフォンを持っているかもしれない。
【００５１】
５．  “ＩＣＡＭＥＲＡ＿ＲｅｃｏｒｄＳｎａｐｓｈｏｔ（）”命令は、画像を記録して、特定された宛先へエンコードする。
【００５２】
別の実施例では、Ｉカメラシステム１０４は、アプリケーションが、カメラリソースを制御して、例えばカメラズームパラメータ、又は輝度及びコントラストレベルのようなカメラ動作パラメータを、以下に示すＡＰＩ命令を実行することによって設定することを可能とするように動作する。
【００５３】
１．  ズームレベルを設定する“ＩＣＡＭＥＲＡ＿Ｓｅｔｚｏｏｍ（）”命令が実行される。
【００５４】
２．  輝度レベルを設定する“ＩＣＡＭＥＲＡ＿ＳｅｔＢｒｉｇｈｔｎｅｓｓ（）”命令が実行される。
【００５５】
３．  コントラストレベルを設定する“ＩＣＡＭＥＲＡ＿ＳｅｔＣｏｎｔｒａｓｔ（）”命令が実行される。
【００５６】
図４は、ポータブルデバイス上のカメラリソースをアプリケーションが制御することを可能にするＩカメラシステムの一つの実施例によって提供される状態計算機４００の一つの実施例を示す。アプリケーションが、Ｉカメラシステムを作成した後に、この状態計算機４００は、レディ状態４０２にある。その後、このアプリケーションは、状態計算機４００の別の状態へ導くためにＩカメラＡＰＩ命令を発行する。これによって、カメラリソースの動作を制御する。例えば、Ｐｒｅｖｉｅｗ（）命令は、プレビュー状態４０４を起動する。Ｒｅｃｏｒｄ＿ｓｎａｐｓｈｏｔ（）命令は、画像スナップショットがカメラリソースから取得されるスナップショット状態４０６を起動する。Ｒｅｃｏｒｄ＿ｍｏｖｉｅ（）命令は、カメラリソースからビデオストリームが取得されるムービー状態４０８を起動する。状態計算機４００はまた、追加命令が、各状態の動作を制御できるようにする。例えば、Ｐａｕｓｅ（）命令及びＲｅｓｕｍｅ（）命令は、プレビュー状態４０４の動作を制御するために使用することができる。
【００５７】
従って、Ｉカメラシステムによって提供される状態計算機４００を用いることによって、アプリケーションは、静止画像及びビデオクリップを取得するためにデバイスのカメラリソースを制御することが可能である。また、状態を追加、削除、変更、又は再アレンジするために状態計算機４００を修正したり、及び／又は本実施例の範囲から逸脱することなく状態をナビゲートするためにＡＰＩ命令の動作を修正することも可能である。従って、アプリケーションが、デバイスのカメラリソースを制御することを可能にするために、事実上どのようなタイプの状態計算機もＩカメラシステムによって提供される。
【００５８】
図５は、アプリケーションがデバイス上のカメラリソースを制御できるようにするために、デバイス上のＩカメラシステムを操作するための方法５００の一つの実施例を示す。デバイスはＢＲＥＷランタイム環境を実行しており、以下に示すようなＩカメラシステムの一つの実施例を含んでいることが仮定されるであろう。
【００５９】
ブロック５０２では、Ｉカメラ構造物を用いてアプリケーションが生成される。これによって、Ｉカメラシステムによって与えられる簡単なＡＰＩインタフェースを用いて、デバイス上のカメラリソースを制御できる。例えば、アプリケーション開発者は、ポータブルデバイス上で実行し、様々なカメラ機能を実行するアプリケーションを生成する。アプリケーションは、Ｉカメラシステムとインタフェースし、もって、状態計算機（すなわち、図４に示す状態計算機４００）に従ってデバイスのカメラの動作を制御するためのＩカメラＡＰＩ命令を含む。
【００６０】
ブロック５０４では、ＩカメラＡＰＩ命令とともにアプリケーションが、実行のためにポータブルデバイスへダウンロードされる。例えば、このアプリケーションは、無線データネットワーク１０８を経由してデバイスへダウンロードされる。このアプリケーションは直ちに実行するか、またはメモリに格納され、後に実行される。
【００６１】
ブロック５０６では、アプリケーションが実行し、Ｉカメラシステムを生成する。例えば、このアプリケーションは、デバイス上で動作するランタイム環境の下で実行する。実行中、アプリケーションは、デバイスのカメラリソースをできるようにＩカメラシステムを作成する。
【００６２】
ブロック５０８では、アプリケーションは、Ｉカメラシステムから非同期イベントを受け取ることが望ましいのであれば、通知機能を登録する。例えば、選択されたカメライベントは、アプリケーションへ通知をトリガすることができる。
【００６３】
ブロック５１０では、メディアデータ構造が生成され、カメラリソース及び／又は望ましいメディアエンコード特性に基づいて初期化される。例えば、一つの実施例では、メディアデータタイプは、ファイル拡張、ファイル内容、又はファイルエンコードに基づいて導出される。
【００６４】
ブロック５１２では、アプリケーションが、ＩカメラシステムにＩカメラＡＰＩ命令を発行する。これは、ポータブルデバイス上のカメラリソースを順に制御するように動作する。例えば、このアプリケーションは、状態計算機４００に記載された機能のうちの何れかを実行するために命令を発行し、カメラリソースの動作を制御する。従って、このアプリケーションは、デバイス上で利用可能なカメラリソースのタイプに関わらず、スナップショット、ビデオ、又はコントロールカメラパラメータを取得する。結果として、カメラシステムは、デバイスのカメラリソースとアプリケーションとの間のあらゆる潜在的な互換性問題を取り除くために動作する。
【００６５】
ブロック５１４では、アプリケーションがカメラ機能を実行し終えた後、Ｉカメラシステムはもはや必要ではなく、リリースされる。
【００６６】
この方法５００は、単なる一つの実施例であり、記述した実施例の範囲から逸脱することなく方法ステップの変更、追加、削除、及び／又は再構成を行うことが可能であることが言及されるべきである。
【００６７】
（実装例） 
以下は、一つの実施例において、Ｉカメラシステムがどのように作成され、カメラリソースが、ポータブルデバイスにダウンロードされたアプリケーションによってどのように制御されるのかを示すための実装例である。この例は、図５の方法５００における対応するブロックへの参照を含み、ポータブルデバイスによって使用されるランタイム環境はＢＲＥＷ環境であると仮定される。この例では、“ＣＡｐｐ”は、ＢＲＥＷアップレットグローバル構造のインスタンスである。
【表５】
2006524973.tif 000007
【００６８】
（複数のカメラリソース） 
一つの実施例では、Ｉカメラシステムは、アプリケーションが、単一のデバイス上の複数のカメラリソースを制御できるようにするために動作する。例えば、デバイスは、静止画像を取得するための低解像度のカメラと、ビデオクリップを取得するための高解像度のカメラとを含むかもしれない。この実施例では、アプリケーションが、二つのカメラリソースを制御できるようにするために、二つのバージョンのＩカメラシステムが作成される。例えば、低解像度のカメラを制御するために一つのＩカメラＡＰＩがアプリケーションによって使用され、高解像度のカメラを制御するために第二のＩカメラＡＰＩがアプリケーションによって使用される。例えば、一つのカメラを、ビデオテレフォニーのために使用し、別のカメラをＤＳＣ／カムコーダとして使用することができる。
【００６９】
記載を明確にするために、デバイス上の二つ又はそれ以上のＩカメラシステムの動作を示す図は与えられていない。しかしながら、各Ｉカメラシステムはここで記載したように動作するので、そのような図面は冗長であり不要である。動作中、アプリケーションは、Ｉカメラシステムの第一及び第二のバージョンを作成する。これによって、第一及び第二のＩカメラＡＰＩを起動する。アプリケーションは、その後、何れかのＡＰＩに関連付けられた命令を実行し、対応するカメラリソースを制御する。従って、Ｉカメラシステムの実施例は、アプリケーションが、デバイス上の事実上いかなる数のカメラリソースも制御できるようにするために使用される。
【００７０】
一つ又は複数の実施例において、組込式コントローラを有し、リソースが制限されたポータブルデバイスにおける一つ又は複数のカメラリソースを、アプリケーションが制御できるようにするために動作する、方法及び装置を含むカメラシステムが記載された。従って、この方法及び装置の一つ又は複数の実施例がここで例示され記載された一方、それは、それらの精神又は本質的な特性から逸脱することなく様々な変更がなされうることが理解されよう。従って、ここでの開示及び記載は、特許請求の範囲に記述されている本発明の範囲の例示であり、限定するものではないことが意図されている。
【図面の簡単な説明】
【００７１】
【図１】図１は、カメラシステムの一つの実施例を実施するのに適した組込式コントローラを備えたポータブル無線デバイスを含むデータネットワークを示す。
【図２】図２は、デバイス上のカメラリソースをアプリケーションが制御することを可能にするように動作可能なＩカメラシステムの一つの実施例を含む図１のポータブルデバイスの一つの実施例を例示するブロック図を示す。
【図３】図３は、図２のＩカメラシステムの一つの実施例の詳細なブロック図を示す。
【図４】図４は、ポータブルデバイス上のカメラリソースをアプリケーションが制御することを可能にするＩカメラシステムの一つの実施例によって提供される状態計算機の一つの実施例を示す。
【図５】図５は、ポータブルデバイス内のカメラリソースをアプリケーションが制御することを可能にするＩカメラシステムを操作する方法の一つの実施例を示す。
【図１】
2006524973.tif 000008
【図２】
2006524973.tif 000009
【図３】
2006524973.tif 000010
【図４】
2006524973.tif 000011
【図５】
2006524973.tif 000012