(57)【要約】  本開示は、ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行する複数の技術を提供する。コマンドの属性識別が抽出され、撮像デバイス内の画像ソースから複数の属性値を取得すべく、属性識別に基づいて取得プロトコルデータユニット（ＰＤＵ）がホストデバイスから撮像デバイスへと送信される。さらに、コマンドの実行を完了させるべく、応答ＰＤＵが撮像デバイスからホストデバイスへと送信される。
2015535673.tif 000002
【特許請求の範囲】
【請求項１】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行する装置であり、
前記コマンドの属性識別を抽出するロジックと、
撮像デバイス内の画像ソースから複数の属性値を取得すべく、前記属性識別に基づきホストデバイスから前記撮像デバイスへと取得プロトコルデータユニット（取得ＰＤＵ）を送信するロジックと、
前記コマンドの前記実行を完了させるべく、前記撮像デバイスから前記ホストデバイスへと応答ＰＤＵを送信するロジックと、を備える
装置。
【請求項２】
前記撮像デバイスのセンサは、前記取得ＰＤＵが前記ホストデバイスから前記撮像デバイスへと送信される場合に前記コマンドを実行する
請求項１に記載の装置。
【請求項３】
前記撮像デバイスのセンサは、前記取得ＰＤＵがブロッキングなしに前記ホストデバイスから前記撮像デバイスへと送信される場合に前記コマンドを実行する
請求項１または２に記載の装置。
【請求項４】
前記取得ＰＤＵはＣＳＩ−３属性パケット中にカプセル化され、それから前記撮像デバイスに送信される
請求項１から３の何れか一項に記載の装置。
【請求項５】
前記応答ＰＤＵは、前記撮像デバイス内の画像ソースから得られる複数の属性値を含む
請求項１から４の何れか一項に記載の装置。
【請求項６】
前記画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）である
請求項１から５の何れか一項に記載の装置。
【請求項７】
前記撮像デバイスから前記ホストデバイスへと通知ＰＤＵを送信するロジックをさらに備え、前記通知ＰＤＵは、前記コマンドからの前記属性識別に基づく属性値を含まない
請求項１から６の何れか一項に記載の装置。
【請求項８】
前記ホストデバイスから設定ＰＤＵを送信するロジックをさらに備え、前記設定ＰＤＵは、前記コマンドからの前記属性識別に基づき前記撮像デバイスに複数の属性値を書き込む
請求項１から７の何れか一項に記載の装置。
【請求項９】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行するシステムであり、
ホストデバイスと、
前記ホストデバイスに結合された撮像デバイスと、を備え、
取得プロトコルデータユニット（取得ＰＤＵ）は前記ホストデバイスから前記撮像デバイスへと送信され、前記取得ＰＤＵは、前記撮像デバイスの画像ソースからの複数の属性値の要求を含み、前記コマンドの前記実行を完了させるべく、応答ＰＤＵは前記撮像デバイスから前記ホストデバイスへと送信される
システム。
【請求項１０】
前記ホストデバイスのセンサは、前記取得ＰＤＵが前記ホストデバイスから前記撮像デバイスへと送信される場合に前記コマンドを実行する
請求項９に記載のシステム。
【請求項１１】
前記撮像デバイスのセンサは、前記取得ＰＤＵがブロッキングなしに前記ホストデバイスから前記撮像デバイスへと送信される場合に前記コマンドを実行する
請求項９または１０に記載のシステム。
【請求項１２】
画像ソースは、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス中のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサである
請求項９から１１の何れか一項に記載のシステム。
【請求項１３】
通知ＰＤＵは前記撮像デバイスから前記ホストデバイスへと送信され、前記通知ＰＤＵは、前記コマンドからの属性識別に基づく属性値を含まない
請求項９から１２の何れか一項に記載のシステム。
【請求項１４】
設定ＰＤＵは前記撮像デバイスから前記ホストデバイスへと送信され、前記設定ＰＤＵは、前記コマンドからの属性識別に基づき前記撮像デバイスへの複数の属性値の読み出しまたは書き込みを行う
請求項９から１３の何れか一項に記載のシステム。
【請求項１５】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行するためのコンピュータ実行可能な複数の命令を有するプログラムであり、前記複数の命令はコンピュータに、
前記コマンドの属性識別を抽出させ、
撮像デバイス内の画像ソースから複数の属性値を取得すべく、前記属性識別に基づき、ホストデバイスから前記撮像デバイスへと取得プロトコルデータユニット(取得ＰＤＵ)を送信させ、
前記コマンドの前記実行を完了させるべく、前記撮像デバイスから前記ホストデバイスへと応答ＰＤＵを送信させる
プログラム。
【請求項１６】
前記取得ＰＤＵはＣＳＩ−３属性パケット中にカプセル化され、それから前記撮像デバイスに送信される
請求項１５に記載のプログラム。
【請求項１７】
前記応答ＰＤＵは、前記撮像デバイス内の画像ソースから得られる複数の属性値を含む
請求項１５または１６に記載のプログラム。
【請求項１８】
前記画像ソースは、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス中のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサである
請求項１５から１７の何れか一項に記載のプログラム。
【請求項１９】
通知ＰＤＵは前記撮像デバイスから前記ホストデバイスへと送信され、前記通知ＰＤＵは、前記コマンドからの前記属性識別に基づく属性値を含まない
請求項１５から１８の何れか一項に記載のプログラム。
【請求項２０】
設定ＰＤＵは前記撮像デバイスから前記ホストデバイスへと送信され、前記設定ＰＤＵは、前記コマンドからの前記属性識別に基づき前記撮像デバイスに複数の属性値を書き込む
請求項１５から１９の何れか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数の本技術は概してカメラコマンドセットに関する。
【背景技術】
【０００２】
複数の画像デバイスは画像キャプチャ用に構成される複数のセンサおよび複数のモジュールなどの複数の構成要素を含む。各画像デバイス内の複数のセンサおよび複数のモジュールの構成は異なりうる。各画像デバイスは、構成に関わらず、ホストプロセッサとインタフェースで接続するであろう。従って、ホストプロセッサは種々の異なって構成されたカメラとインタフェースで接続しうる。
【図面の簡単な説明】
【０００３】
特定の例示的な複数の実施形態が、以下の詳細な説明において、および複数の図面を参照して説明される。
【図１】複数の実施形態に従い使用されうるホストデバイスのブロック図である。
【図２】複数の実施形態による、カメラのブロック図である。
【図３】複数の実施形態による、複数のカメラコマンドを変換するシステムのブロック図である。
【図４】複数の実施形態による、カメラサブシステムを初期化する方法を示す処理フロー図である。
【図５】複数の実施形態による、複数のカメラコマンドを変換する方法の処理フロー図である。
【図６】複数の実施形態による、トランスポートメカニズムが、ゲットアンドセットアーキテクチャに基づいて複数のＣＣＳコマンドを実行できるようにする方法の処理フロー図である。
【図７】複数の実施形態による、センサおよびモジュールに固有のメタデータの格納および取り出しを可能にするメタデータストレージサブシステムのブロック図である。
【図８】複数の実施形態による、メタデータストレージサブシステムを可能にする方法の処理フロー図である。
【図９】複数の実施形態による、複数のカメラコマンドを変換するためのコードを格納する有形の非一時的コンピュータ可読媒体を示すブロック図である。
【図１０】複数の実施形態による、複数のカメラコマンドを変換する例示的なシステムのブロック図である。
【図１１】複数の実施形態による、図１０のシステムが具現化されうる小型フォームファクタデバイスの概略図である。
【発明を実施するための形態】
【０００４】
本明細書に開示される複数の実施形態は、様々な画像デバイスの構成のサポートおよび検証のための複数の技術を提供する。本技術はカメラを用いて説明されるが、任意の画像デバイスが用いられうる。さらに、本明細書中で用いられるように、画像デバイスは、スチールショットカメラ、ビデオカメラ、立体カメラ、赤外線センサなど、またはそれらの任意の組み合わせでありうる。
【０００５】
複数の実施形態において、カメラコマンドセット（ＣＣＳ）は共通のメカニズムを提供し、限定されるものではないが、複数のカメラセンサおよび複数のモジュールを含む複数のカメラ構成要素を探し出して制御する。複数のコマンドは、ホストプロセッサが任意のカメラ構成とインタフェースで接続し、任意のカメラ構成をサポートし、有効にすることを可能にする。複数のより新しいコマンドセットおよびソフトウェアでの複数のより古いカメラの前方互換性は、変換機能を用いて実装されうる。変換機能は、複雑なＣＣＳコマンドが、カメラが実行できる複数のコマンド、または複数のＣＳＩ−３属性ゲット／セット要求へ変換されることを可能にしうる。ＣＳＩ−３属性は、カメラおよびホストデバイスの動作を制御するために用いられうる極めて小さい情報単位である。トランスポートメカニズムは、複数のＣＳＩ−３属性ゲット／セット要求へ変換された複数のコマンドを実行するために用いられ得て、一方でセンサおよびモジュールのメタデータは格納され得て、メタデータサブシステムから取り出されうる。カメラメタデータは、限定はされないが、複数のカメラセンサ、複数のモジュール、およびカメラを用いてキャプチャされた複数の画像、に関する情報を含む。さらに、メタデータストレージシステムはまた、ＣＳＩ−３用のデータブロックストレージでもありうる。
【０００６】
以下の説明および特許請求において、「結合」および「接続」という用語が、それらの派生語と共に用いられうる。理解するべきことは、それらの用語は互いに同義語としては意図されないということである。むしろ、複数の特定の実施形態において、「接続」は、２またはそれより多い要素が、互いに直接物理的に、または電気的に接触していることを示すために用いられうる。「結合」は２またはそれより多い要素が、直接物理的に、または電気的に接触していることを意味しうる。しかしながら、「結合」はまた、２またはそれより多い要素が互いに直接接触していないが、それでもなお互いに連携または相互作用し合うことも意味しうる。
【０００７】
いくつかの実施形態は、ハードウェア、ファームウェア、およびソフトウェアのうちの１つまたは組み合わせにおいて実装されうる。いくつかの実施形態はまた、本明細書にて説明される複数のオペレーションを実行すべくコンピューティングプラットフォームによって読み出されて実行されうる機械可読媒体に格納された複数の命令として実装されうる。機械可読媒体は、機械、例えば、コンピュータによって読み出し可能な形の情報を格納または送信する任意のメカニズムを含みうる。例えば、機械可読媒体は、とりわけ、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、または、例えば、搬送波、赤外線信号、デジタル信号、または複数の信号を送信および/または受信するインタフェースなどの、電気的、光学的、音響的、または他の形態の複数の伝搬信号を含みうる。
【０００８】
実施形態は、実装または例である。明細書における、「実施形態」、「一実施形態」、「いくつかの実施形態」、「様々な実施形態」または「他の複数の実施形態」への言及は、複数の実施形態に関連して説明される特定の機能、構造、または特性が、複数の本発明の少なくともいくつかの実施形態に含まれ、必ずしも全ての実施形態に含まれるのではないことを意味する。「実施形態」、「一実施形態」、または「いくつかの実施形態」の様々な出現は、必ずしも全てが同一の複数の実施形態を指しているのではない。実施形態からの複数の要素または複数の態様は、別の実施形態の複数の要素または複数の態様と組み合わされ得る。
【０００９】
本明細書において説明され示される全ての構成要素、機能、構造、特性、等が、特定の実施形態または複数の実施形態に含まれる必要はない。明細書が、構成要素、機能、構造、または特性は含まれ「うる（ｍａｙ）」、「うる（ｍｉｇｈｔ）」、「ることが可能（ｃａｎ）」、または「ることが可能（ｃｏｕｌｄ）」と言う場合、例えば、その特定の構成要素、機能、構造、または特性は含まれる必要はない。明細書または特許請求が「１つの（ａ）」「１つの（ａｎ）」要素に言及する場合、それはその要素の１つだけが存在することを意味しない。明細書または特許請求が「追加的な」要素に言及する場合、それはその追加的な要素の２以上が存在することを除外しない。
【００１０】
いくつかの実施形態は複数の特定の実装を参照して説明されてきたが、いくつかの実施形態に従い、ほかの複数の実装が可能であることに注意されたい。さらに、複数の図面において示され、および/または、本明細書にて説明される複数の回路素子または他の機能の配置および/または順序は、示され説明される特定の方法で配置されなくてもよい。いくつかの実施形態に従って、多くの他の配置が可能である。
【００１１】
図に示される各システムにおいて、いくつかの場合の複数の要素は、表される複数の要素が異なるおよび/または同様のものであり得ることを示唆すべく、それぞれ同一の参照番号または異なる参照番号を有しうる。しかしながら、要素は、異なる複数の実装を有するに十分な可撓性があると言ってよく、本明細書に示されまたは記載される複数のシステムのうちのいくつかまたは全てと共に機能しうる。複数の図において示される様々な要素は同一または異なりうる。どちらが第１の要素と称され、どちらが第２の要素と呼ばれるかは任意である。
【００１２】
図１は、複数の実施形態に従い使用されうるホストデバイス１００のブロック図である。ホストデバイス１００は、中でも、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、またはサーバでありうる。さらに、ホストデバイス１００は、本明細書中で説明されるようなホストデバイスでありうる。ホストデバイス１００は、ＣＰＵ１０２によって実行可能な複数の命令を格納するメモリデバイス１０４はもちろん、格納された複数の命令を実行すべく構成される中央処理ユニット（ＣＰＵ）１０２を含みうる。ＣＰＵはバス１０６によってメモリデバイス１０４と結合されうる。さらに、ＣＰＵ１０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または任意の数の他の構成であることが可能である。さらに、ホストデバイス１００は２以上のＣＰＵ１０２を含みうる。
【００１３】
ホストデバイス１００はまた、グラフィックス処理ユニット（ＧＰＵ）１０８を含みうる。示されるように、ＣＰＵ１０２はバス１０６を通してＧＰＵ１０８と結合されうる。ＧＰＵ１０８はホストデバイス１００内で任意の数のグラフィクスオペレーションを実行すべく構成されうる。例えば、ＧＰＵ１０８は、ホストデバイス１００のユーザに表示される、複数のグラフィクス画像、複数のグラフィクスフレーム、複数のビデオなどをレンダリングまたは操作すべく構成されうる。いくつかの実施形態において、ＧＰＵ１０８はいくつかのグラフィクスエンジン（図示せず）を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行、または特定の複数のタイプのワークロードを実行すべく構成される。
【００１４】
メモリデバイス１０４は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、または任意の他の適したメモリシステムを含み得る。例えば、メモリデバイス１０４はダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含みうる。ＣＰＵ１０２は、ホストデバイス１００をディスプレイデバイス１１２に接続すべく構成されるディスプレイインタフェース１１０にバス１０６を通して連接されうる。ディスプレイデバイス１１２は、ホストデバイス１００の組み込まれた構成要素であるディスプレイスクリーンを含みうる。ディスプレイデバイス１１２はまた、ホストデバイス１００に外部接続される、とりわけ、コンピュータモニタ、テレビ、またはプロジェクタも含みうる。
【００１５】
ＣＰＵ１０２はまた、ホストデバイス１００を１または複数のＩ／Ｏデバイス１１６に接続すべく構成される入出力（Ｉ／Ｏ）デバイスインタフェース１１４に、バス１０６を通して接続されうる。複数のＩ／Ｏデバイス１１６は、例えば、キーボードおよびポインティングデバイスを含み得て、ポインティングデバイスは中でもタッチパッドまたはタッチスクリーンを含みうる。複数のＩ／Ｏデバイス１１６はホストデバイス１００の複数の組み込まれた構成要素であり得て、またはホストデバイス１００に外部接続される複数のデバイスでありうる。
【００１６】
ＣＰＵ１０２はさらに、バス１０６を通して画像キャプチャインタフェース１１８に接続されうる。画像デバイスインタフェース１１８はホストデバイス１００を１または複数の画像デバイス１２０に接続すべく構成される。画像デバイス１２０は、スチールショットカメラ、ビデオカメラ、またはスチールショットカメラおよびビデオカメラを組み合わせるカメラ、でありうる。さらに、画像デバイス１２０は、立体カメラ、赤外線センサ、ＳＯＣカメラ、画像信号プロセッサ（ＩＳＰ）、ブリッジデバイス、などでありうる。複数の実施形態においては、画像デバイス１２０はホストデバイス１００の複数の組み込まれた構成要素である。さらに、複数の実施形態において、複数の画像デバイス１２０はホストデバイス１００に外部接続されるデバイスである。
【００１７】
複数の実施形態において、組み込みプロセッサまたはシーケンサが画像キャプチャインタフェース１１８に存在しうる。画像キャプチャインタフェース１１８内の組み込みプロセッサまたはシーケンサは、ホストコマンド変換を提供するために用いられうる。複数の実施形態において、変換はＩＳＰ上、または、画像キャプチャインタフェース１１８内に含まれる、またそうでなければ画像キャプチャインタフェース１１８に関連付けられる、別個のプロセッサ上、で実行されるコードを用いて起こる。
【００１８】
画像デバイス１２０は複数の画像をキャプチャするために用いられ、１または複数のセンサ１２２を含む。複数の例において、センサ１２２は画像テクスチャ情報に関連する奥行き情報をキャプチャするために用いられる奥行きセンサでありうる。センサ１２２はまた、画像テクスチャ情報をキャプチャするために用いられる画像センサでもありうる。さらに、画像センサは、電荷結合デバイス（ＣＣＤ）画像センサ、相補型金属酸化膜半導体（ＣＭＯＳ）画像センサ、システムオンチップ（ＳＯＣ）画像センサ、複数の感光性薄膜トランジスタを有する画像センサ、またはそれらの任意の組み合わせでありうる。画像デバイス１２０はまた、１または複数のモジュール１２４を含む。モジュール１２４は画像デバイスの様々な構成要素を操作するために用いられうる。例えば、カメラはバッファ、レンズ、およびオートフォーカス装置を含み得て、その各々はモジュール１２４によって有効にされうる。
【００１９】
メモリデバイス１０４はデバイスドライバ１２６を含む。デバイスドライバ１２６は、ホストデバイス１００が画像デバイス１２０とインタフェースで接続し、画像デバイス１２０をサポートし、有効にできるように、ＣＰＵ１０２またはＧＰＵ１０８によって実行されうる。デバイスドライバ１２６は、本明細書中で説明されるようなホストソフトウェアでありうる。さらに、デバイスドライバ１２６はカメラメタデータにアクセスしうる。メタデータは、メモリデバイス１０４、画像デバイス１２０、ストレージデバイス１２８、または任意の他のデータストレージ位置に格納されうる。
【００２０】
ストレージデバイス１２８は、ハードドライブ、光学式ドライブ、サムドライブ、一連のドライブ、または、それらの任意の組み合わせなどの物理メモリである。ストレージデバイス１２８はまた、複数のリモートストレージドライブも含みうる。ストレージデバイス１２８は、ホストデバイス１００上で実行されるべく構成される任意の数のアプリケーション１３０を含む。ホストデバイス１００はまた、バス１０６を通してホストデバイス１００をネットワーク１３４に接続すべく構成されるネットワークインタフェースコントローラ（ＮＩＣ）１３２を含みうる。ネットワーク１３４は、とりわけ、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、またはインターネットでありうる。
【００２１】
複数の実施形態において、ＣＰＵ１０２によって実行される複数の命令は、ホストコマンド変換を可能にするために用いられうる。さらに、複数の実施形態においては、ＧＰＵ１０８によって実行される複数の命令は、ホストコマンド変換を可能にするために用いられうる。従って、ＣＰＵ１０２またはＧＰＵ１０８は、画像デバイス１２０とインタフェースで接続し、画像デバイス１２０をサポートし、または有効にするために用いられるホストプロセッサでありうる。さらに、デバイスドライバ１２６またはアプリケーション１３０は本明細書中で説明されるようなホストソフトウェアを含みうる。複数の実施形態において、ＣＰＵ１０２またはＧＰＵ１０８は本明細書中で説明されるようなトランスポートメカニズム内で複数のコマンドを実行するために用いられうる。さらに、複数の実施形態において、ＣＰＵ１０２またはＧＰＵ１０８はメタデータストレージサブシステムを有効にしうる。
【００２２】
図１のブロック図は、ホストデバイス１００が図１に示される複数の構成要素の全てを含むものと示すことは意図されない。さらに、ホストデバイス１００は、特定の実装の詳細に応じて、図１には示されない任意の数の追加的な構成要素を含みうる。
【００２３】
ＣＣＳを用いることによって、様々なカメラ構成のサポートに関連付けられるソフトウェアおよび統合化のコストは、複数のカメラセンサおよび複数のモジュールを探し出して制御する共通のメカニズムを提供することによって減らしうる。しかしながら、複数のセンサまたは複数のモジュールの実装は限定されない。むしろ、任意のセンサおよびカメラ構成を説明する標準化された技術が提供される。ＣＣＳは、複数のセンサ、複数のモジュール、および複数の画像プロセッサに対する必要なコマンドおよび選択的なコマンドの両方を含む。複数のカメラコマンドの変換は、一般的なドライバが様々なカメラ構成へのサポートを提供することを、たとえそれらのカメラがＣＣＳをネイティブにサポートしていなくても、可能にする。一般的なドライバの使用により、複数の異なるカメラ構成に関連付けられる実装コストを減らし得る。トランスポートメカニズムはカメラシリアルインタフェース３（ＣＳＩ−３）属性ゲット／セットアーキテクチャ内で複数のコマンドを実行するために用いられる。幾つかのコマンドは、センサのコストおよび複雑性を減らすべく、センサの外部で実行されうる。さらに、センサの外部での複数のコマンドの実行は、カメラシリアルインタフェース２（ＣＳＩ−２）タイプのセンサなどの複数のレガシ―センサに基づいて、複数のカメラへのサポートを提供する。複数の実施形態において、複数のチューニングパラメータを含むセンサおよびモジュールに固有のメタデータを格納および取り出す技術が提供される。
【００２４】
ＣＳＩ−２およびＣＳＩ−３規格は、ＭＩＰＩ（Ｍｏｂｉｌｅ Ｉｎｄｕｓｔｒｙ Ｐｒｏｃｅｓｓｏｒ Ｉｎｔｅｒｆａｃｅ）アライアンスによって開発された。ＣＳＩ−２およびＣＳＩ−３規格は、複数の画像デバイスなどの複数のカメラサブシステムをアプリケーションプロセッサなどのホストデバイスに取り付ける標準のインタフェースを提供する。本明細書にて説明される複数の技術は、任意のＭＩＰＩカメラシリアルインタフェース（ＣＳＩ）規格に従い開発された複数のカメラサブシステムで実装されうる。さらに、複数の実施形態において、ＭＩＰＩカメラパラレルインタフェース（ＣＰＩ）に従い開発された複数のカメラサブシステムはまた、複数の本技術中でも用いられうる。
【００２５】
図２は、複数の実施形態による、カメラ２００のブロック図である。上述したように、カメラ２００は、画像デバイス１２０（図１）などの画像デバイスでありうる。カメラ２００はＣＳＩ−３のリンク２０２に取り付けられる。ＣＳＩ−３リンク２０２は、カメラ２００の、ＣＰＵ１０２またはＧＰＵ１０８（図１）などのホストプロセッサとの統合用の高速シリアルインタフェースプロトコルを可能にする。複数の実施形態において、ホストプロセッサは携帯端末アプリケーション中のアプリケーションプロセッサでありうる。
【００２６】
カメラ２００は、複数の画像ソース２０６によって表されるような複数のＣＳＩ−３仮想チャネル２０４の「上方」にあるあらゆる処理機能を含みうる。画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）でありうる。従って、カメラは、ホストデバイス上に存在する追加的な複数の処理機能を含みうる。しかしながら、これらの可能性のある処理機能はＣＣＳオペレーションには必要とされない。
【００２７】
ＣＣＳの複数の目的のために、カメラは図３における複数の構成要素と同様の、複数の構成される構成要素であると仮定される。しかしながら、示される全ての構成要素が必要とされるのではない。特に、ＣＣＳはセンサ２０８および１または複数の画像ソース２０６を使用しうる。複数の実施形態において、センサ２０８は存在せず、他の複数の画像ソースが使用されうる。例えば、ＣＣＳは、ＩＳＰが画像ソースであるサブシステムに適合しうる。レンズ２１０、開口２１２、照明２１４、およびメタデータストレージ２１６を含む追加的な複数のサブシステムへのサポートは選択的である。
【００２８】
レンズサブシステム２１０は、複数の光学ズーム機能を任意選択的にサポートしうる、示される視野を有するレンズのグループ化として形成される。開口サブシステム２１２は、最小または最大のＦナンバーへの開口の変更を選択的にサポートして、示されるＦナンバーを有する絞りとして形成される。Ｆナンバーは、レンズシステムの前を通して見られるときの、物理的開口絞りの光画像の直径に対するレンズの焦点距離の割合である。
【００２９】
複数の実施形態において、センササブシステム２０８は理想的なセンサを具現化する。複数の理想的なセンサは、線形、または、測定のあるシンプルな数学関数に対して線形であるように設計される。それにより、特定の値に対しては、理想的なセンサはその値が測定されるたびに同一の出力を生成する。複数のタイミング、複数のゲイン、および他のキャプチャ関連の複数のパラメータを含む、カメラによって生成されるあらゆる画像に影響を与える複数の設定は、センササブシステム２０８の一部である。さらに、ＲＡＷセンサおよびＳｏＣセンサもまた、センササブシステム２０８において用いられうる。さらに、複数の実施形態において、センササブシステム２０８は、ＨＤＲ（高ダイナミックレンジ）、および他の複数の形態のコンピュータ撮像（多焦点面撮像、等）などの複数のセンサ挙動もまた含む。
【００３０】
複数の画像ソース２０６はセンササブシステム２０８の出力を取り込み、ＣＳＩ−３仮想チャネル２０４を介した移送のためにそれをパッケージ化する。データがフォーマットされて伝達されうるＲＡＷセンサの場合のように、このパッケージ化はシンプルであり得て、またはそれは、ＹＵＶまたはＪＰＥＧの出力の生成などの複数の処理機能を含みながら、複雑でありうる。各画像ソース２０６の出力は、ホストへの画像データの移送を提供すべく、ＣＳＩ−３仮想チャネル２０４によって入力として選択されることが可能である。ＣＳＩ−３仮想チャネル２０４は、同一データソースによって生成される複数の属性および複数の画像パケットのシーケンスを表す。複数の実施形態において、ＣＣＳ画像ソース２０６は複数の埋め込まれた属性はもちろん、一タイプのピクセルデータも生成しうる。ＣＳＩ−３仮想チャネル２０４は画像データの移送を表し管理するために用いられ、一方、画像ソース２０６は画像データの生成および処理を表し管理する。複数のＣＳＩ−３仮想チャネル２０４と複数の画像ソース２０６との間には一対一関係がある。
【００３１】
照明サブシステム２１４は、フラッシュ、ビデオランプ、赤目軽減ランプ、および録画表示灯を含む、カメラの複数の照明制御に対する制御を提供する。カメラ２００は任意選択的に照明サブシステム２１４の複数の機能の任意の組み合わせをサポートしうる。さらに、メタデータストレージサブシステムは、カメラサブシステム２００によって格納される不揮発性データを取り出し、およびその不揮発性データに任意選択的に書き込みを行うべく、ソフトウェアに共通のメカニズムを提供する。メタデータストレージは、モジュールによってネイティブにサポートされるものを超えるＣＣＳ機能を可能にする任意のインタープリタ型コードを格納すると共に、モジュール識別および複数の画像調整パラメータを格納しうる。さらに、メタデータストレージシステムはまた、ＣＳＩ−３用のデータブロックストレージでありうる。
【００３２】
コマンドトランスポートメカニズム２１８は、ネイティブにサポートされる複数のＣＣＳコマンドがＣＳＩ−３インタフェースを組み込むカメラサブシステム２００に移送されることを可能にする。ＣＳＩ−２などの他の複数のインタフェースは、コマンドセットに対する代替の複数の移送を定義し実装しうる。コマンドトランスポートメカニズム２１８は、カメラアプリケーションを構成し制御するために用いられる全てのコマンドおよびＣＳＩ−３属性２２２をコマンドトランスポートメカニズム２１８へ伝送できるカメラ用の設定プロトコル（ＣＰＣ）２２０にアクセスしうる。さらに、カメラ制御インタフェース（ＣＣＩ）２２４は、複数のＣＳＩ−２インタコネクトをサポートするＣＳＩ−２データ用のブリッジ機能を提供するために用いられうる。
【００３３】
多くのＣＣＳコマンドは、複数のＣＳＩ−３仮想チャネル２０４と複数のＣＣＳ画像ソース２０６との間の特定のオーバーラップと共に、複数のＣＳＩ−３属性２２２に影響を与える複数の変更をもたらすことができる。例えば、センサ標準構成設定（Ｓｅｔ＿ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（））コマンドは、画像寸法を含むセンサモードの設定をサポートする。ＣＳＩ３＿ＸＳＩＺＥ、ＣＳＩ３＿ＸＬＥＮ、ＣＳＩ３＿ＹＳＩＺＥ、ＣＳＩ３＿ＹＬＥＮ、および他のそのような複数のＣＳＩ−３属性などの複数の仮想チャネル属性は、実装される場合、複数のＣＣＳコマンドによって設定されるような現在のカメラ構成を正確に反映する複数の値を返すべきである。
【００３４】
従って、複数のＣＳＩ−３仮想チャネル属性は、ＣＳＩ−３準拠デバイスからホストへ複数の画像および関連データを伝送するために用いられる複数のパラメータを制御するために用いられる。これらの属性は、各フレームとともに送信される埋め込まれたメタデータはもちろん、画像寸法、データフォーマット、タイミング、およびエラー処理の制御を含む。複数のＣＣＳコマンドはまた、サイズ、フォーマットおよびタイミングなどの複数の同一の画像特性の多くを制御する。センサに発行されたＣＣＳコマンドの効果は、とりわけ、複数のＣＣＳ仮想チャネル属性を変更することを含みうる。例えば、ＣＣＳコマンドは、センサを１９２０×１０８０の解像度の、毎秒３０フレームオペレーションに仮に設定しうる、Ｓｅｔ＿ＳｔａｎｄａｒｄＣｏｎｆｉｇ（１）としうる。ＣＳＩ−３ＧｅｔからＣＳＩ３＿ＹＳＩＺＥ属性は次に１０８０を返しうる。現在の設定（ＹＳＩＺＥが２０００である）は以前に設定されたＣＣＳ状態と一致しないが、Ａｔｔｒｉｂｕｔｅ  ＳｅｔがＣＳＩ３＿ＹＳＩＺＥを２０００へ変更すべく発行されるならば、Ｇｅｔ＿ＳｔａｎｄａｒｄＣｏｎｆｉｇ（）ＣＣＳコマンドは依然として「１」を返すであろう。
【００３５】
センササブシステム２０８および画像ソースサブシステム２０６の複数のサブシステムは任意の数の構成を用いて実装されうる。従って、センササブシステム２０８を適切に構成するのはホストソフトウェアにとってチャレンジングとなりうる。ＣＣＳは、センササブシステム２０８を適切に構成する手助けをすべく複数のセンサモードを用いることができる。センサモードは、ソフトウェアが選ぶことのできるセンサ販売業者によって定義される、１セットの動作構成である。一般的に、カメラがサポートするであろう予想使用量を表わす与えられたカメラに対して提示されるであろう限定セットの構成があるであろう。例えば、カメラは、８メガピクセルＲＡＷ１０スチール最適化モード、１０８０ｐ／３０ビデオ最適化ＭＪＰＥＧモード、およびＱＶＧＡ  ＹＵＶプレビューモードのサポートを示しうる。
【００３６】
ＣＣＳは所望の構成のインデックスを選択することにより、所望の動作モードを設定するために用いられることが可能なセンサ標準構成（ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（））コマンドを含みうる。カメラはそれから適切な複数のタイミングおよび関連付けられる複数の設定に自己構成するであろう。ホストソフトウェアは、センササブシステム２０８によってサポートされる複数のモードを列挙するテーブルを取り出すべく情報センサ標準構成コマンド（Ｉｎｆｏ＿ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（））コマンドを使用できる。センササブシステム２０８は、テーブルに列挙される複数のモードにおいて動作するに限定されない。カメラサブシステム２００の追加的な知識を有するホストソフトウェアは、追加的な複数のセンサ機能をあらわにすべく、複数のタイミングを明示的に設定するセンサタイミング設定（Ｓｅｔ＿ＳｅｎｓｏｒＴｉｍｉｎｇｓ（））コマンドなどの追加的な複数のコマンドを使用しうる。
【００３７】
図３は、複数の実施形態による、複数のカメラコマンドを変換するシステム３００のブロック図である。ＣＣＳは、標準のメカニズムが複数のセンサを制御できるようにすべく用いられる。共通セットのコマンドはＣＣＳ用に定義される。ＣＣＳは、ネイティブコマンド、必要なコマンド、および選択的なコマンドへと分割されうる。複数のコマンドはカメラサブシステム２００などの、定義されたカメラモデルに作用する。
【００３８】
ネイティブコマンドは、ホスト変換サポートを必要としない、センササブシステムによって直に実行されることが可能なコマンドである。ＣＣＳ中の任意のコマンドは、カメラサブシステムがコマンドをネイティブに受け入れ処理できることをそれが示し得るという点で、ネイティブコマンドでありうる。従って、ＣＣＳサポートを必要とするカメラサブシステムは、全てのネイティブな必要コマンドへのネイティブなサポートを提供すべきである。
【００３９】
ＣＣＳサポートを必要とするカメラサブシステムはまた、複数の必要コマンドもサポートするべきであるが、そのサポートは本明細書にて説明されるホストベースの変換機能を用いて提供されうる。カメラサブシステムは全ての選択的コマンドをサポートしうる。一般的に、複数のネイティブな必要コマンドは、複数のＣＣＳ機能を特定するために、および、必要ならば、コマンド変換をサポートするために必要な情報を取り出すために、必要な複数のシンプルなコマンドである。一たび変換機能が立ち上がり作動すると、後続の複数のコマンドはそれからこのメカニズムを通してサポートされ得る。従って、複数のホストにより変換されたコマンドは、複数のＣＣＳコマンドに書き込まれたホストソフトウェアで依然として機能すべく設定された、完全なＣＣＳコマンドをネイティブにサポートしない複数のカメラに能力を提供する。ほとんどのコマンドは変換を通してサポートされ得るが、少数のネイティブな必須コマンドは、変換を立ち上げ作動させるために必要とされるとき、センサによってサポートされなくてはならない。変換機能は、限定はされないが、実行サンドボックスを備える変換エンジン、コードストレージ、およびコードをコンパイルする方法、を含む。複数の実施形態において、サンドボックスにおいて実行されるコードの出力は、次にセンサ上で実行され得る複数のＣＳＩ−３属性ゲット／セットトランザクションである。
【００４０】
複数の実施形態において、トランスポートメカニズムは、センササブシステム２０８（図２）などのセンサ上での複数のコマンドの実行を制御すべく定義される。トランスポートメカニズムは、図２において説明されたようなコマンドトランスポートメカニズム２１８でありうる。トランスポートメカニズムはまた、いくつかの複雑なコマンドが、ホストデバイス上で実行され、センサの複雑性およびコストを減少させるべくよりシンプルなセットのコマンドに変換され得るメカニズムを提供もする。さらに、複数の実施形態において、メタデータは、ソフトウェアおよび製造のニーズを手助けすべく、カメラサブシステムから取り出され得る。
【００４１】
ＣＣＳの複数のカメラコマンドは、コマンドが呼び出される方法を抽象化する疑似コード表現を用いて参照される。複数のコマンドは、ＣＳＩ−３カメラがサポートを提供できる複数の技術を用いて説明されうるが、複数の同一のコマンドが、他の複数のコマンドトランスポートメカニズムまたはソフトウェア変換サポートを用いてではあるが、ＣＳＩ−２などの他の複数のカメラサブシステムに適応され得る。
【００４２】
各コマンドはサポートされうる、またはサポートされ得ない、いくつかのバリアントを有する。「Ｇｅｔ＿」バリアントはパラメータを取らないが、１セットのデータを返す。一方で、「Ｓｅｔ＿」バリアントは１セットのパラメータを取り、ステータスコードを返す。「Ｉｎｆｏ＿」バリアントは、ソフトウェアが複数の特定の能力、複数の範囲、および利用可能な複数のオプションを理解するのを助けうるデータの静的ブロックを返す。
【００４３】
例えば、上述の情報センサ標準構成コマンド（Ｉｎｆｏ＿ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（））コマンドは、ソフトウェアが選ぶことのできる、センサによってサポートされる複数のモードおよび複数の構成を定義するデータのテーブルを返す。次に、ソフトウェアはセンサ標準構成設定コマンド（Ｓｅｔ＿ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（インデックス））コマンドを用いうる。このコマンドは、入力として単一のパラメータインデックスを取り、応答してステータスコードを返して、センサを所望のモードに構成する。現在の動作モードは、センサ標準構成取得コマンド（Ｇｅｔ＿ＳｅｎｓｏｒＳｔａｎｄａｒｄＣｏｎｆｉｇ（））コマンドを用いて読み出されうる。このコマンドは、入力パラメータを取らないが、応答として現在アクティブなインデックスを返す。
【００４４】
Ｇｅｔ＿／Ｓｅｔ＿／Ｉｎｆｏ＿構造は、ＣＳＩ−３属性ゲット／セットアーキテクチャの頂上に当てはまる。さらに、それは、複数のサポートされるコマンドのきめ細やかな指示と共に、例えば、カメラによってネイティブにサポートされる複数のＧｅｔ＿／Ｓｅｔ＿バリアントを有するためのサポートを可能にする。一方で、Ｉｎｆｏ＿バリアントはコマンド変換を通してサポートされるのみである。
【００４５】
ＣＣＳがカメラ用の完全な制御セットを提供することが意図される一方で、他の複数のメカニズムは、複数のベンダ固有コマンドおよび複数の属性ゲット／セットメカニズムなどのＣＣＳによってあらわにされるものを超えた制御を可能にするために用いられうる。複数のベンダ固有コマンドは、定義された複数のＣＣＳコマンドをＣＣＳアーキテクチャ内で拡張する機能を提供するために用いられうる。これらのベンダ固有コマンドはコマンドトランスポートアーキテクチャを使用する。
【００４６】
複数のベンダ固有コマンドに加えて、ソフトウェアは、本明細書内で定義されるコマンドトランスポートアーキテクチャを用いて容易に表現または実装され得ない機能を提供すべく、ＣＳＩ−３仕様によって定義される複数の属性ゲット／セットメカニズムを使用し続けうる。ベンダ固有コマンドまたは直接的な属性ゲット／セットコマンドが用いられる場合、ＣＣＳによって返される複数の値は破損しうる。従って、複数のベンダ固有コマンドまたは複数の属性ゲット／セットメカニズムが実装される場合、ＣＣＳとの可能性のある複数の相互作用が認識されるべきである。例えば、ベンダ固有コマンドが、標準コマンドセットによってサポートされないレンズシェーディング補正メカニズムを指定するために用いられる場合、レンズシェーディング取得（ＧｅｔＬｅｎｓＳｈａｄｉｎｇ（））コマンドは、破損データ、またはＣＣＳによって予想される範囲外のデータを返しうる。
【００４７】
システム３００はホストデバイス３０２を含む。ホストデバイス３０２は、デスクトップ、ラップトップ、タッチパッド、パーソナルコンピュータ、携帯電話デバイス、などでありうる。さらに、上述したようなホストデバイス１００（図１）はホストデバイス３０２でありうる。ホストデバイス３０２はカメラサブシステム３０４に結合されうる。カメラサブシステム３０４は画像デバイス１２０（図１）またはカメラサブシステム２００（図２）でありうる。上述したように、カメラサブシステム３０４は，ＣＳＩ−３リンクを介してホストデバイス３０２に結合されうる。カメラサブシステム３０４はメタデータストレージ３０６をさらに含みうる。メタデータストレージ３０６は、カメラサブシステム３０４によって格納されるデータへの格納および取り出しのための共通のメカニズムを提供しうる。メタデータストレージ３０６は、複数のカメラコマンドを変換するために用いられる変換コード３０８を格納しうる。加えて、メタデータストレージ３０６はまた、識別および複数の画像調整パラメータを格納しうる。カメラサブシステム３０４はさらに複数のＣＳＩ−３属性を含みうる。複数の実施形態において、複数の属性はカメラサブシステムの複数のリソースにアクセスするために用いられうる。さらに、複数の実施形態において、複数の属性は複数のイベントを検出するために用いられうる。複数のＣＳＩ−３属性３１０は変換機能から複数の変換されたコマンドを受信する。変換機能は変換エンジン３１２でありうる。
【００４８】
変換エンジン３１２はカメラサブシステム３０４から外部に配置されうる。例えば、変換エンジン３１２はホストデバイス３０２上に配置されうる。別の例において、変換エンジン３１２はホストデバイス３０２およびカメラサブシステム３０４の両方の外部にありうる。さらに、変換エンジン３１２はカメラサブシステム３０４に結合されうる。
【００４９】
変換エンジン３１２は複数の入ってくるコマンドを、カメラサブシステム３０４の構成に特有である複数の画像コマンドに変換しうる。特に、変換エンジン３１２は複数の入ってくるコマンドを、カメラサブシステム３０４が処理することができる複数のアクセスに変換しうる。例えば、変換エンジン３１２は複雑な複数の入力コマンドを複数のよりシンプルなコマンドに変換しうる。別の例において、変換エンジン３１２は、複数の入力コマンドを複数のＣＳＩ−３属性ゲット−セット要求に変換しうる。
【００５０】
複数のコマンドを変換すべく、変換エンジン３１２は変換コード３０８を使用しうる。変換エンジンは、カメラサブシステム３０４のメタデータストレージ３０６から取り出した高水準変換コード３０８を使用する。変換コード３０８はまた、カメラサブシステム３０４の外部に格納されうる。特に、変換コード３０８はプラットフォームストレージ３１４内に格納されうる。ある例において、プラットフォームストレージ３１４はホストデバイス３０２上に含まれうる。別の例において、プラットフォームストレージ３１４はホストデバイス３０２およびカメラサブシステム３０４の両方の外部にありうる。プラットフォームストレージ３１４はホストデバイス３０２に結合されうる。プラットフォームストレージ３１４は任意のタイプの記憶媒体でありうる。例えば、プラットフォームストレージ３１４はＲＡＭメモリ、ＢＩＯＳ、またはディスクドライブでありうる。変換コード３０８は、変換エンジンが変換コード３０８の位置を見つけ、アクセスしうるように、ホストによく知られた方法で格納されうる。変換コード３０８はまた、他の複数のプラットフォームストレージ位置に、またはそこから格納されうる。変換コードが格納される複数の位置は、変換コード記憶領域として知られる。プラットフォームのニーズに応じて、ホストソフトウェアは適切なコード記憶領域からコードを取り出すべく設計されるであろう。変換エンジン３０８はコードを実行して、提供された複数のＣＣＳコマンドを、複数のＣＳＩ−３属性ゲット／設定ＰＤＵパケットでありうる、カメラサブシステムが実行できる複数のアクセスに変換する。複数のＣＳＩ−３属性ゲット／設定ＰＤＵパケットは、ＣＣＳコマンドによって要求される挙動をもたらすカメラサブシステムに送信されうる。
【００５１】
変換エンジン３１２は複数の変換されたコマンドをカメラサブシステム３０４に送信するように適合されうる。例えば、変換エンジン３１２は複数の変換されたコマンドを複数のＣＳＩ−３属性３１０へ送信しうる。変換エンジン３１２は、カメラサブシステム３０４によってネイティブにサポートされない複数のコマンドのみ変換するように適合されうる。従って、カメラ用の全てのコマンドが変換される必要はない。どの複数のコマンドが変換されるべきかを決定すべく、変換エンジン３０８はまず、カメラサブシステム３０４上でＣＣＳサポート取得（Ｇｅｔ＿ＣＣＳＳｕｐｐｏｒｔ（））コマンドを実行すべきである。複数の実施形態において、有効なＣＣＳサポートテーブルが返される場合、変換エンジン３０８は、ネイティブに処理され得るカメラサブシステム３０４に複数のコマンドを直に渡すべく提供される情報を用いることができる。さらに、複数の実施形態において、ホストによって必要とされる全てのコマンドがネイティブにサポートされることが可能な場合、変換エンジンまたは変換コード記憶領域は必要としない。このように、ホストデバイス３０２は、複数のコマンドの変換を始める前に、カメラサブシステム３０４が複数のコマンドを処理可能かどうか決定すべく、カメラサブシステム３０４にアクセスしうる。カメラサブシステム３０４が複数のコマンドを処理することができる場合、ホストデバイス３０２はカメラサブシステム３０４に直に複数の入力コマンドを送信しうる。ある例において、複数のコマンドは直に変換エンジン３１２に入力されうる。別の例においては、複数のコマンドは、ホストデバイス３０２に入力され得て、それから変換エンジン３１２に伝送されうる。
【００５２】
変換エンジン３１２は、デバイスドライバ１２６（図１）などのデバイスドライバ上に実装される実行時解釈言語サンドボックス内に実装されうる。このように、ホストデバイスのカーネルは、変換エンジン３１２から排出されうる任意のコードから保護される。
【００５３】
複数の実施形態において、ＣＣＳ内のいくつかのコマンドは、複数のＲＡＷセンサ上の複数の画像処理コマンドなどの、特定のカメラサブシステムまたはセンササブシステム構成に対して、選択的か、または適用可能でないか、のいずれかである。ホストソフトウェアに予想可能なセットのサポートされるコマンドを提供すべく、いくつかのプロファイルが様々な使用に対して予め定義され得る。プロファイルを実装すべく、カメラサブシステムは、上述したように、ネイティブまたは変換サポートを通してのいずれかで、複数の指示されたコマンドへのサポートを提供する。カメラはまた、任意の他の選択的な複数のコマンドへのサポートも提供する。例えば、ＲＡＷカメラとして特定するカメラは、ＲＡＷカメラＣＣＳプロファイルを実装しうる。同様に、ＳｏＣカメラとして特定するカメラサブシステムは、ＳｏＣカメラＣＣＳプロファイルを実装しうる。
【００５４】
図４は、複数の実施形態による、カメラサブシステムを初期化する方法４００を示す処理フロー図である。処理フロー図は、ホストデバイス１００（図１）またはホストデバイス３０２（図３）などのホストデバイスによって用いられうる。
【００５５】
ブロック４０２において、画像デバイスが特定される。複数の実施形態において、カメラを特定すべく、ホストソフトウェアは、デバイスクラス、製造業者、型番、シリアルナンバ、および他の情報を特定すべく複数のデバイス属性を読み出しうる。例えば、ホストデバイスおよびカメラが統一プロトコル（ＵｎｉＰｒｏ）に従い相互接続される場合、ホストデバイスは、カメラの複数のＵｎｉＰｒｏ装置記述ブロック（ＤＤＢ）物理層（Ｌ１）属性を読み出しうる。ＵｎｉＰｒｏプロトコルはシステム内で複数のデバイスを相互接続する複数の規格を指定する。ＵｎｉＰｒｏ  ＤＤＢはデバイスを特定するために用いられ得る情報を含む。さらに、画像デバイスの複数のＵｎｉＰｒｏ  ＤＤＢ  Ｌ１属性は、リンクの帯域幅およびパワー能力などの、画像デバイスとホストデバイスとの間のリンクを定義するために用いられうる。複数のＵｎｉＰｒｏ  ＤＤＢ  Ｌ１属性は、デバイスクラス、製造業者識別、製品識別を含む。複数の実施形態において、複数のＣＳＩ−３属性は、デバイスサブクラスなどの画像デバイスについての情報を決定すべく読み出されうる。
【００５６】
複数の実施形態において、カメラは、Ｍｏｂｉｌｅ Ｉｎｄｕｓｔｒｙ Ｐｒｏｃｅｓｓｏｒ Ｉｎｔｅｒｆａｃｅ（ＭＩＰＩ）カメラシリアルインタフェース（ＣＳＩ）アライアンスによる仕様書に従い開発されたインタフェースを用いてホストデバイスのプロセッサとインタフェースで接続する。例えば、カメラシリアルインタフェースはＭＩＰＩ  ＣＳＩ−３インタフェースでありうる。複数の実施形態において、ＣＳＩは、データおよび複数のクロック信号との一方向性の差動シリアルインタフェースであるデータ送信インタフェースを含む。ホストデバイスは複数のＣＳＩ−３属性を用いてカメラのサブクラスを決定しうる。
【００５７】
ブロック４０４において、画像デバイスがＣＣＳをサポートするかどうか決定される。ＣＣＳがサポートされる場合、処理フローはブロック４０６へ続く。ＣＣＳがサポートされない場合、処理フローはブロック４０８へ続く。これを決定すべく、ホストはＣＣＳサポート取得（Ｇｅｔ＿ＣＣＳＳｕｐｐｏｒｔ（））コマンドの実行を試みうる。ＣＣＳサポート取得（Ｇｅｔ＿ＣＣＳＳｕｐｐｏｒｔ（））コマンドは、後述するトランスポートメカニズムを用いるカメラによって実行されうる。カメラから返される値が「０」の場合、ＣＣＳはサポートされない。
【００５８】
複数の実施形態において、ＣＣＳがサポートされる場合、ホストデバイスはカメラがネイティブにＣＣＳをサポートするかどうか決定しうる。例えば、ホストは、情報メタデータディレクトリ（Ｉｎｆｏ＿ＭｅｔａｄａｔａＤｉｒｅｃｔｏｒｙ（））コマンドがサポートされるかどうか決定すべく、複数のＣＳＩ−３属性または複数のＵｎｉＰｒｏ  ＤＤＢ  Ｌ１属性から得られるデータを使用しうる。カメラがネイティブにＣＣＳをサポートする場合、カメラは複数のＣＣＳコマンドを用いて開始しうる。
【００５９】
カメラがＣＣＳをネイティブにサポートしない場合、ホストは変換コードブロブ（ｂｌｏｂ）が利用可能かどうか決定しうる。例えば、ホストは、変換コードブロブがメタデータにおいて利用可能かどうか決定しうる。
【００６０】
ブロック４０６において、メタデータディレクトリが存在するかどうか決定される。メタデータディレクトリが存在する場合、処理フローはブロック４１０に続く。メタデータディレクトリが存在しない場合、処理フローはブロック４１６に続く。
【００６１】
ブロック４０８において、ベンダ固有ソフトウェアはカメラをサポートし有効にするために用いられる。ＣＣＳがサポートされない場合、処理は終了し、複数のベンダ固有フローが用いられなくてはならない。
【００６２】
ブロック４１０において、変換コードがメタデータディレクトリを用いて利用可能かどうかが決定される。変換コードがメタデータディレクトリを用いて利用可能な場合、処理フローはブロック４１４へ続く。変換コードがメタデータディレクトリを用いて利用可能でない場合、処理フローはブロック４１２へ続く。
【００６３】
ブロック４１２において、変換コードがシステム内のどこかにおいて利用可能であるかどうかが決定される。複数の実施形態において、変換コードはプラットフォーム上のどこかにおいて利用可能であるかどうかが決定される。変換コードがシステム内で利用可能でない場合、処理フローはブロック４０８へ戻る。変換コードが、システム内で利用可能な場合、処理フローはブロック４１４へ続く。
【００６４】
ブロック４１４において、変換コードがロードされ実行される。従って、複数の実施形態において、変換コードブロブが利用可能な場合、ホストはブロブをロードして変換エンジンを初期化しうる。変換ブロブがロードされる場合、ブロブは実行時解釈言語サンドボックスにおいて実行されうる。変換エンジンは複数のコマンドを変換し始めうる。変換コードブロブが利用可能でない場合、ホストは、プラットフォーム上のどこか他において利用可能な変換コード記憶領域があるかどうか、プラットフォーム特有の方法で決定しうる。利用可能な変換コード記憶領域がある場合、ホストは変換コード記憶領域をロードし、変換エンジンを初期化しうる。それから変換エンジンは、ＣＣＳからの複数のコマンドをカメラが実行可能な複数のコマンドへ変換し始めうる。複数の実施形態において、結果として生じる変換されたコマンドは、カメラコマンドによって要求される挙動をもたらすべく、カメラに順に送信される複数のＣＳＩ−３属性ゲット／設定ＰＤＵパケットである。ブロック４１６において、複数のＣＣＳコマンドはカメラをサポートし、制御し、有効にするために用いられる。
【００６５】
図５は、複数の実施形態による、複数のカメラコマンドを変換する方法５００の処理フロー図である。上述したように、複数のコマンドは、図４のブロック４１４において変換エンジンが変換コードを実行することによって生成される場合、変換されうる。
【００６６】
ブロック５０２において、変換コードはコード記憶領域から受信されて、変換エンジンを形成する。上述したように、変換コードおよび変換エンジンは、複雑なＣＣＳコマンドが、カメラが実行できる複数のコマンドまたは複数のＣＳＩ−３属性ゲット／セット要求へと変換されることを可能にする変換機能を形成する。変換コードは後述するように、メタデータストレージサブシステムを用いて格納されうる。ブロック５０４において、複数の撮像デバイスコマンドは変換エンジンにおいて受信される。複数の実施形態において、複数の撮像デバイスコマンドはデバイスドライバ１２６（図１）またはアプリケーション１３０（図１）から送信される。
【００６７】
ブロック５０６において、複数の撮像デバイスコマンドは変換エンジンを用いて変換されうる。このように、ホストデバイスは、ＣＣＳコマンドを撮像デバイスが処理可能なフォーマットへとコンバート（ｃｏｎｖｅｒｔ）または変換（ｔｒａｎｓｌａｔｅ）する。
【００６８】
複数の実施形態において、変換エンジンはコマンドを複数のＣＳＩ−３属性ゲット／セット要求へと変換できる。トランスポートメカニズムは、複数のＣＳＩ−３属性ゲット／セット要求へと変換された複数のコマンドを実行するために用いられうる。ブロック５０８おいて、複数の変換された撮像デバイスコマンドは撮像デバイスに伝送されて、変換された撮像デバイスコマンドによって要求される挙動をもたらす。
【００６９】
ＣＣＳはＣＳＩ−３ベースの複数の撮像デバイス上で実装されうる。上述したように、複数の撮像デバイスは複数のカメラおよび複数のセンサを含む。複数の実施形態において、ＣＳＩ−３撮像デバイスはＣＣＳの複数のコマンドをネイティブに実行でき、それにより、ホストデバイスとの統合上の複数の難題を緩和し、また、ソフトウェアおよびサポートのコストも低減させる。さらに、複数の実施形態において、複数のＣＣＳコマンドは、ゲットアンドセットアーキテクチャに基づいてトランスポートメカニズムを用いてネイティブに実行されうる。
【００７０】
従って、ＣＳＩ−３ベースのカメラ上でネイティブに実行される複数のコマンドのためのトランスポートは、ＣＳＩ−３規格によって定義されるようなカメラ用の設定プロトコル（ＣＰＣ）によって定義される、ＣＳＩ−３のＧＥＴ、ＳＥＴ、ＲＥＳＰＯＮＳＥ、およびＮＯＴＩＦＹの複数のトランザクション挙動に基づく。ＣＣＳコマンドのＧｅｔ＿バリアントおよびＳｅｔ＿バリアントはＣＳＩ−３のＧＥＴトランザクションおよびＳＥＴトランザクションに対応する。さらに、コマンドのＩｎｆｏ＿バリアントは、Ｇｅｔ＿バリアントのより長いバージョンとして、一般的に異なるコマンド識別（ＩＤ）を有して、実装される。コマンドのＩｎｆｏ＿バリアントが返す情報は、Ｇｅｔ＿バリアントが一般的に返す動的制御情報と比較して、著しく大きいと言ってよく、一般的に静的情報である。
【００７１】
Ｇｅｔ＿バリアントまたはＳｅｔ＿バリアントのコマンドＩＤは以下のようにＣＳＩ−３属性ＩＤに関連付けられる。
【００７２】
ＣＳＩ−３＿Ａｔｔｒｉｂｕｔｅ＝０ｘ０１００００００＋（ＣＭＤ＿ＩＤ＊０ｘ１０００）
【００７３】
多くのコマンドに対して、疑似コードの抽象化は、本質的にはただの属性ゲット／セット処理であるもののシンラッパーであることに注意されたい。
【００７４】
例えば、０ｘ０１０のＩＤを有するコマンドステータス取得（Ｇｅｔ＿ＣｏｍｍａｎｄＳｔａｔｕｓ（））コマンドは、（０ｘ０１００００００＋（０ｘ０１０＊０ｘ１０００）＝０ｘ０１０１００００）へのトランザクションとして表されるであろう。このアドレスは、パケットデータユニット（ＰＤＵ）の属性ＩＤフィールドであろう。さらに、ＰＤＵは、４バイトの伝送を表わす０のＸＦＳＩＺＥ、および、ＧＥＴを示す２のＰＤＵタイプを有するであろう。このＰＤＵは続いてＣＳＩ−３属性パケット中にカプセル化され、カメラに送信されるであろう。続いて、コマンドを完了させながら、ステータス値は応答ＰＤＵにおいてホストに返信されるであろう。
【００７５】
図６は、複数の実施形態による、ゲットアンドセットアーキテクチャに基づいて、トランスポートメカニズムが、複数のＣＣＳコマンドを実行できるようにする方法６００の処理フロー図である。ブロック６０２において、コマンドの属性識別（ＩＤ）が抽出されうる。
【００７６】
ブロック６０４において、撮像デバイス内の画像ソースから複数の属性値を取得すべく、取得プロトコルデータユニット（ＰＤＵ）は、属性識別に基づいてホストデバイスから撮像デバイスに送信されうる。取得ＰＤＵは、ＣＳＩ−３属性パケット中にカプセル化され得て、それから撮像デバイスに送信されうる。複数の実施形態において、撮像デバイスのセンサは、取得ＰＤＵがホストデバイスから撮像デバイスに送信される場合にコマンドを実行しうる。さらに、複数の実施形態において、撮像デバイスのセンサは、取得ＰＤＵがホストデバイスから撮像デバイスにブロッキングなしに送信される場合にコマンドを実行する。ブロッキングとは、センサがビジーの場合の遅延されたコマンドの実行を指す。例えば、いくつかのコマンドは完了に長い時間がかかり、カメラは、実行時間中に複数のコマンドを処理すべく利用可能でないと言ってよい。しかしながら、カメラモジュールは複数の取得ＰＤＵが受信されたような順序で複数の応答ＰＤＵを返さなくてはならない。カメラは、ホストを停止させ、コマンドバッファのオーバーフローを防ぐべく、ＣＰＣ  Ｃ−Ｐｏｒｔによって提供されるＬ４フロー制御を用いうる。
【００７７】
例えば、複数のコマンドの複数のＳｅｔ＿バリアントは、実行に長い時間がかかり、ブロッキングを引き起こしうる。これらのコマンドは応答を返さない。ゆえに、ホストは、いつ長いコマンドの実行が完了したかを決定すべく、コマンドステータス取得（Ｇｅｔ＿ＣｏｍｍａｎｄＳｔａｔｕｓ（））コマンドを用いうる。コマンドステータス取得（Ｇｅｔ＿ＣｏｍｍａｎｄＳｔａｔｕｓ（））コマンドは、いつコマンド実行が完了してセンサがレディになるかを決定すべく、コマンドへの応答がホストによって用いられ得るように、常に、ブロッキングなしにセンサによって処理されることが推奨される。
【００７８】
ブロック６０６において、コマンドの実行を完了させるべく、応答ＰＤＵが撮像デバイスからホストデバイスへ送信されうる。応答ＰＤＵは、撮像デバイス内の画像ソースから得られる複数の属性値を含みうる。
【００７９】
複数の実施形態において、ＣＳＩ−３通知ＰＤＵが撮像デバイスからホストデバイスに送信されうる。通知ＰＤＵは、コマンドからの属性識別に基づく属性値を含まない。さらに、設定ＰＤＵがホストデバイスから送信される場合、設定ＰＤＵは、コマンドからの属性識別に基づいて、撮像デバイスに複数の属性値を書き込みうる。
【００８０】
カメラサブシステムはまた、ホストのハードウェアおよびソフトウェア処理が、カメラの詳細を特定し、カメラ特有のキャリブレーションおよびチューニング情報を取り出し、ファームウェアまたは他の複数のコード記憶領域を管理できるようにする、メタデータサブシステムも含みうる。従って、メタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせ、のうちの少なくとも１つを含む。多くの実装において、様々なメタデータ要素は、モジュール自身上の不揮発性記憶装置、ホストファームウェア、およびホストＯＳ一次ストレージを含む様々なシステムデータ記憶領域に格納される。複数の実施形態において、データはまた、様々なコード記憶領域に格納されうる。さらに、複数の実施形態において、複数のコード記憶領域および複数のデータ記憶領域は同一である。これらの様々な記憶領域の位置は、システム毎に変化しうる。なぜなら、様々なシステムストレージの制約またはコストのトレードオフは好ましい位置を変えうるからである。メタデータの位置付け、管理における、より高水準のソフトウェアのジョブを簡単にすべく、ＣＣＳは、メタデータの格納および取り出しを管理するために用いられることができる選択的なセットのコマンドを提供する。カメラが、モジュール上の不揮発性記憶装置を管理すべくこれらのコマンドの複数のネイティブバージョンを実装しうる一方で、複数の変換されたコマンドは同様に他のシステムの記憶領域へのアクセスも提供する可能性がありうる。
【００８１】
図７は、複数の実施形態による、センサおよびモジュールに固有のメタデータの格納および取り出しを可能にするメタデータストレージサブシステム７００のブロック図である。  複数の実施形態において、メタデータストレージシステムはＣＳＩ−３用のデータブロックストレージである。カメラメタデータは、その各々が個々に管理可能でありうる複数のブロブによって編成される。ブロブは１まとまりのデータである。複数のブロブの複数の例は、キャリブレーション情報、センサファームウェア、およびＣＣＳをサポートするコードを含む。従って、上述の変換コードはブロブである。これらのブロブは、システム中の様々な場所に格納されることが可能である。ＣＣＳ変換コードが各ブロブへのアクセスを有する限り、それはこれらの様々なメタデータの記憶領域をソフトウェア用の１つの調整されたビューへと抽象化できる。
【００８２】
ホストソフトウェア７０２は、メタデータディレクトリを読み出すことによって利用可能な複数のブロブを特定する。メタデータストレージコマンド７０４はメタデータディレクトリへのアクセスを提供する。ホストソフトウェア７０２は、存在する複数のブロブの複数のタイプ、開始アドレスおよび長さ、および、複数のアクセス属性を決定すべくメタデータディレクトリを読み出す。複数のブロブは、カメラストレージ７０６、プラットフォームファームウェア７０８、またはプラットフォームの一次ストレージ７１０のうちの任意、またはそれらの任意の組み合わせ上に存在しうる。
【００８３】
具体的に、メタデータディレクトリ（ＭｅｔａｄａｔａＤｉｒｅｃｔｏｒｙ（））コマンドはディレクトリへのアクセスを提供する。情報メタデータ（Ｉｎｆｏ＿ＭｅｔａｄａｔａＤｉｒｅｃｔｏｒｙ（））コマンドのバリアントは、ディレクトリのサイズを返し、それは次にメタデータディレクトリ取得（Ｇｅｔ＿ＭｅｔａｄａｔａＤｉｒｅｃｔｏｒｙ（））コマンドのバリアントを用いてフェッチされ得る。
【００８４】
複数の個々のブロブをフェッチすべく、２段階の処理がホストによって用いられる。まず、メタデータ設定（Ｓｅｔ＿Ｍｅｔａｄａｔａ（））コマンドが、伝送の開始アドレスを示すために用いられ、それからメタデータ取得（Ｇｅｔ＿Ｍｅｔａｄａｔａ（））コマンドが、メタデータブロブのセグメントを伝送する。複数の個々のＣＳＩ−３  ＰＤＵは、一度に４０９６バイトまでの伝送に限定されるので、４ＫＢリミットより長いメタデータブロブをフェッチすべく、複数のＳｅｔ＿／Ｇｅｔ＿シーケンスが必要でありうる。
【００８５】
複数のブロブの開始アドレスは、ＣＳＩ−３の属性マッピングに適合させるべく４の倍数である以外に、何ら特定のパターンに従う必要はない。取り付けられたＥＥＰＲＯＭを用いてメタデータストレージコマンドをネイティブに実装するカメラが、ストレージデバイス内のリテラルアドレスを表わすアドレスを用いうる一方で、変換されたメタデータコマンドは、メタデータブロブが取り出されるべきデータ記憶領域を表わす最上位のバイトを用いうる。
【００８６】
図８は、複数の実施形態による、メタデータストレージサブシステムを可能にする方法８００の処理フロー図である。ブロック８０２において、利用可能なメタデータのディレクトリが作成される。そのメタデータは様々なシステムデータ記憶領域に格納される。複数の実施形態において、メタデータはカメラコマンドセット（ＣＣＳ）変換コードブロックであり、ホストデバイスはＣＣＳ変換コードブロックをロードし初期化する。ブロック８０４において、メタデータはホストデバイスによって要求される通りに取り出される。上述したように、メタデータの取り出す段階は、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含みうる。複数の実施形態において、開始アドレスは、ＣＳＩ−３の属性マッピングに対応する。さらに、ホストデバイスは、撮像デバイス上にあるメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、およびメタデータのアクセス属性を決定すべくディレクトリを読み出す。ブロック８０６において、メタデータはホストデバイスに伝送される。ブロック８０８において、メタデータは実行される。
【００８７】
図４―６および８の処理フロー図は、方法４００、５００、６００または８００の複数の段階が任意の特定の順序で実行されるものであり、または、方法４００、５００、６００または８００の複数の段階の全てが全ての場合において含まれるものであることを示している、とは意図されない。さらに、特定の用途に応じて、任意の数の追加的な段階が方法４００、５００、６００または８００、またはそれらの任意の組み合わせ内に含まれうる。
【００８８】
図９は、複数の実施形態による、複数のカメラコマンドを変換するためのコードを格納する有形の非一時的コンピュータ可読媒体９００を示すブロック図である。有形の非一時機械可読媒体は、機械、例えば、コンピュータ、によって読み出し可能な形の情報を格納または送信する任意のメカニズムを含みうる。例えば、機械可読媒体は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、および複数のフラッシュメモリデバイスを含みうる。有形の非一時的コンピュータ可読媒体９００は、コンピュータバス９０４を通してプロセッサ９０２によってアクセスされうる。さらに、有形の非一時的コンピュータ可読媒体９００は、プロセッサ９０２に、本明細書にて説明される複数の方法を実行するように命令すべく構成されるコードを含みうる。
【００８９】
本明細書にて議論される様々なソフトウェア構成要素は、図９において示されるように、有形の非一時的コンピュータ可読媒体９００上に格納されうる。ストレージモジュール９０６は、変換エンジンを形成すべく、コード記憶領域から変換コードを受信すべく構成されうる。さらに、変換モジュール９０８は、変換エンジンを用いて複数の撮像デバイスコマンドを変換すべく構成されうる。伝送モジュール９１０は、変換された撮像デバイスコマンドによって要求される挙動をもたらすべく、複数の変換された撮像デバイスコマンドを撮像デバイスに伝送しうる。
【００９０】
図９のブロック図は、有形の非一時的コンピュータ可読媒体９００が図９に示される複数の構成要素の全てを含むものであると示すことは意図されない。さらに、有形の非一時的コンピュータ可読媒体９００は、特定の実装の詳細に応じて、図９に示されない任意の数の追加的な構成要素を含みうる。
【００９１】
図１０は、複数の実施形態による、複数のカメラコマンドを変換する例示的なシステム１０００のブロック図である。同様の数字が付けられた複数のアイテムは、図１に関して説明された通りである。いくつかの実施形態において、システム１０００はメディアシステムである。加えて、システム１０００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、またはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、などに組み込まれうる。
【００９２】
様々な実施形態において、システム１０００は、ディスプレイ１００４に結合されるプラットフォーム１００２を備える。プラットフォーム１００２は、コンテンツサービスデバイス１００６またはコンテンツ配信デバイス１００８、または他の同様な複数のコンテンツソースなどのコンテンツデバイスからコンテンツを受信しうる。１または複数のナビゲーション機能を含むナビゲーションコントローラ１０１０は、例えば、プラットフォーム１００２、および/またはディスプレイ１００４と情報をやりとりするために用いられうる。これらの構成要素の各々は以下により詳細しく説明される。
【００９３】
プラットフォーム１００２は、チップセット１０１２、中央処理ユニット（ＣＰＵ）１０２、メモリデバイス１０４、ストレージデバイス１２８、グラフィクスサブシステム１０１４、複数のアプリケーション１３０、および無線１０１６の任意の組み合わせを含みうる。チップセット１０１２は、ＣＰＵ１０２、メモリデバイス１０４、ストレージデバイス１２８、グラフィクスサブシステム１０１４、複数のアプリケーション１３０、および無線１０１６間の相互通信を提供しうる。例えば、チップセット１０１２は、ストレージデバイス１２８との相互通信を提供することができる記憶アダプタ（図示せず）を含みうる。
【００９４】
プロセッサ１０２は、複合命令セットコンピュータ（ＣＩＳＣ）または縮小命令セットコンピュータ（ＲＩＳＣ）の複数のプロセッサ、複数のｘ８６命令設定互換プロセッサ、マルチコア、または任意の他のマイクロプロセッサまたは中央処理ユニット（ＣＰＵ）として実装されうる。いくつかの実施形態において、プロセッサ１０２は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ、などを含む。
【００９５】
メモリデバイス１０４は、限定されるものではないが、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、またはスタティックＲＡＭ（ＳＲＡＭ）、などの揮発性メモリデバイスとして実装されうる。ストレージデバイス１２８は、限定されるものではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、取り付けられたストレージデバイス、フラッシュメモリ、バッテリバックアップされたＳＤＲＡＭ（シンクロナスＤＲＡＭ）、および/または、ネットワークアクセス可能ストレージデバイス、などの不揮発性記憶デバイスとして実装されうる。いくつかの実施形態において、ストレージデバイス１２８は、例えば、複数のハードドライブが含まれる場合、有用なデジタルメディアに対する記憶性能が強化された保護を高める技術を含む。
【００９６】
グラフィクスサブシステム１０１４は、表示のために静止画または動画などの複数の画像の処理を実行しうる。グラフィクスサブシステム１０１４は、例えば、ＧＰＵ１０８、またはビジュアルプロセッシングユニット（ＶＰＵ）などのグラフィックス処理ユニット（ＧＰＵ）を含みうる。アナログまたはデジタルのインタフェースは、グラフィクスサブシステム１０１４およびディスプレイ１００４を通信可能に結合するために用いられうる。例えば、インタフェースは、高解像度マルチメディアインタフェース（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）(登録商標)、ディスプレイポート（ＤｉｓｐｌａｙＰｏｒｔ）、無線ＨＤＭＩ（登録商標）、および/または、複数のＨＤ準拠技術のうちの何れかでありうる。グラフィクスサブシステム１０１４はプロセッサまたはチップセット１０１２に統合されうる。代わりに、グラフィクスサブシステム１０１４は、チップセット１０１２に通信可能に結合されるスタンドアロンカードでありうる。
【００９７】
本明細書にて説明されるグラフィクス処理技術および/またはビデオ処理技術は、様々なハードウェアアーキテクチャにおいて実装されうる。例えば、グラフィクス機能および/または動画機能はチップセット１０１２内に統合されうる。代わりに、離れたグラフィクスプロセッサおよび/またはビデオプロセッサが用いられうる。さらに別の実施形態として、グラフィクス機能および/またはビデオ機能は、マルチコアプロセッサを含む汎用プロセッサによって実装されうる。さらなる実施形態において、複数の機能は家電機器において実装されうる。
【００９８】
無線装置１０１６は、様々な適した無線通信技術を用いて複数の信号を送受信することができる１または複数の無線装置を含みうる。複数のそのような技術は、１または複数の無線ネットワークをまたがる複数の通信に関係しうる。複数の例示的な無線ネットワークは、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、ワイヤレス大都市圏ネットワーク（ＷＭＡＮ）、セルラーネットワーク、衛星ネットワーク、などを含む。複数のそのようなネットワークをまたがる通信において、無線１０１６は任意のバージョンの１または複数の適用可能な規格に従い動作しうる。
【００９９】
ディスプレイ１００４は、任意のテレビ型のモニタまたはディスプレイを含みうる。例えば、ディスプレイ１００４は、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビ、などを含みうる。ディスプレイ１００４はデジタルおよび/またはアナログでありうる。いくつかの実施形態において、ディスプレイ１００４はホログラフィックディスプレイである。また、ディスプレイ１００４は、視覚投影を受信しうる透明な面でありうる。複数のそのような投影は、様々な形の情報、画像、オブジェクト、などを伝達しうる。例えば、複数のそのような投影は、モバイル拡張現実（ＭＡＲ）用途用の視覚のオーバーレイでありうる。１または複数のアプリケーション１３０の制御の下、プラットフォーム１００２はディスプレイ１００４上にユーザインタフェース１０１８を表示しうる。
【０１００】
コンテンツサービスデバイス１００６は、任意の国内の、国際の、または独立したサービスによって提供（ｈｏｓｔ）され得て、したがって、例えば、インターネットを介してプラットフォーム１００２にアクセス可能でありうる。コンテンツサービスデバイス１００６は、プラットフォーム１００２および/またはディスプレイ１００４に結合されうる。プラットフォーム１００２および/またはコンテンツサービスデバイス１００６は、ネットワーク１３４へ、およびネットワーク１３４から、メディア情報を通信（例えば、送信および/または受信）すべく、ネットワーク１３４に結合されうる。コンテンツ配信デバイス１００８もまた、プラットフォーム１００２および/またはディスプレイ１００４に結合されうる。
【０１０１】
コンテンツサービスデバイス１００６は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、または、デジタル情報を配信することができるインターネット可能デバイスを含みうる。加えて、コンテンツサービスデバイス１００６は、ネットワーク１３４を介して、または直に、複数のコンテンツプロバイダとプラットフォーム１００２またはディスプレイ１００４との間でコンテンツを一方向または双方向に通信することができる任意の他の同様な複数のデバイスを含みうる。コンテンツはネットワーク１３４を介して、システム１０００中の複数の構成要素およびコンテンツプロバイダの何れか１つへ、またはこれらの何れか１つから、一方向および/または双方向に通信されうることが理解されよう。コンテンツの複数の例は、例えば、ビデオ、音楽、医療、およびゲームの情報などを含む任意のメディア情報を含みうる。
【０１０２】
コンテンツサービスデバイス１００６は、メディア情報、デジタル情報、または他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信しうる。複数のコンテンツプロバイダの複数の例は、とりわけ、任意のケーブルまたは衛星テレビ若しくは無線装置またはインターネットコンテンツプロバイダを含みうる。
【０１０３】
いくつかの実施形態において、プラットフォーム１００２は、１または複数のナビゲーション機能を含むナビゲーションコントローラ１０１０からの複数の制御信号を受信する。ナビゲーションコントローラ１０１０の複数のナビゲーション機能は、例えば、ユーザインタフェース１０１８と情報をやりとりするために用いられうる。ナビゲーションコントローラ１０１０は、ユーザが、コンピュータへ空間（例えば、連続した多次元の）データを入力することができるようにするコンピュータハードウェア構成要素（具体的には、ヒューマンインタフェースデバイス）でありうるポインティングデバイスでありうる。複数のグラフィカルユーザインタフェース(ＧＵＩ)、並びに複数のテレビ及び複数のモニタなどの多くのシステムは、ユーザが、複数の身体的ジェスチャを用いてコンピュータまたはテレビを制御し、これらにデータを提供することを可能にする。複数の身体的ジェスチャは、限定されるものではないが、複数の表情、複数の顔の動き、様々な手足の動き、複数の体の動き、ボディランゲージ、またはそれらの任意の組み合わせを含む。複数のそのような身体的ジェスチャは認識され、複数のコマンドまたは複数の命令に変換され得る。
【０１０４】
ナビゲーションコントローラ１０１０の複数のナビゲーション機能の複数の動きは、ディスプレイ１００４上に表示される、ポインタ、カーソル、フォーカスリング、または他の複数の視覚インジケータの複数の動きによってディスプレイ１００４上で繰り返されうる。例えば、複数のアプリケーション１３０の制御の下、ナビゲーションコントローラ１０１０上に配置された複数のナビゲーション機能は、ユーザインタフェース１０１８上に表示される複数の仮想ナビゲーション機能に関連付けられ得る。いくつかの実施形態において、ナビゲーションコントローラ１０１０は別個の構成要素ではなくてもよいが、むしろ、プラットフォーム１００２および/またはディスプレイ１００４へ統合されうる。
【０１０５】
システム１０００は、例えば、有効にされた場合、初期ブートアップ後、ボタンをタッチすることで、複数のユーザがプラットフォーム１００２のオン・オフを即座にできるようにする技術を含む複数のドライバ（図示せず）を含みうる。プログラムロジックは、プラットフォーム１００２がオフの場合、プラットフォームが、コンテンツを複数のメディアアダプタ、若しくは、他のコンテンツサービスデバイス１００６またはコンテンツ配信デバイス１００８にストリームすることを可能にしうる。加えて、チップセット１０１２は、例えば、１０．１サラウンドサウンドオーディオおよび/または高解像度７．１サラウンドサウンドオーディオへのハードウェアおよび/またはソフトウェアのサポートを含みうる。複数のドライバは、複数の集中画像表示プラットフォーム用のグラフィクスドライバを含みうる。いくつかの実施形態において、グラフィクスドライバはペリフェラル構成要素インターコネクトエクスプレス（ＰＣＩｅ）グラフィクスカードを含む。
【０１０６】
様々な実施形態において、システム１０００中に示される複数の構成要素の何れか１つ又は複数は統合されうる。例えば、プラットフォーム１００２およびコンテンツサービスデバイス１００６は統合され得て、プラットフォーム１００２およびコンテンツ配信デバイス１００８は統合され得て、または、プラットフォーム１００２、コンテンツサービスデバイス１００６、およびコンテンツ配信デバイス１００８は統合されうる。いくつかの実施形態において、プラットフォーム１００２およびディスプレイ１００４は統合されたユニットである。例えば、ディスプレイ１００４およびコンテンツサービスデバイス１００６は統合され得て、または、ディスプレイ１００４およびコンテンツ配信デバイス１００８は統合されうる。
【０１０７】
システム１０００は無線システムまたは有線システムとして実装されうる。無線システムとして実装される場合、システム１０００は、１または複数のアンテナ、複数の送信機、複数の受信機、複数のトランシーバ、複数の増幅器、複数のフィルタ、制御ロジック、などの無線共有媒体を通した通信に適した複数の構成要素および複数のインタフェースを含みうる。無線共有媒体の例は、ＲＦスペクトルなどの無線スペクトルの複数部分を含みうる。有線システムとして実装される場合、システム１０００は、複数の入出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応する有線通信媒体と接続する複数の物理コネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ、などの有線通信媒体を通した通信に適した複数の構成要素および複数のインタフェースを含みうる。有線通信媒体の複数の例は、ワイヤ、ケーブル、金属リード、プリント回路基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバ、などを含みうる。
【０１０８】
プラットフォーム１００２は、情報を通信すべく、１または複数の論理チャネルまたは物理チャネルを確立しうる。情報は、メディア情報および制御情報を含みうる。メディア情報はユーザ向けのコンテンツを表わす任意のデータを指しうる。コンテンツの複数の例は、例えば、音声会話、テレビ会議、ストリーミングビデオ、電子メール（ｅｍａｉｌ）メッセージ、ボイスメールメッセージ、複数の英数字シンボル、グラフィクス、画像、ビデオ、テキスト、等からのデータを含みうる。音声会話からのデータは、例えば、音声情報、複数の沈黙時間、バックグラウンドノイズ、コンフォートノイズ、複数のトーン、等でありうる。制御情報は、自動化システム向けの複数のコマンド、複数の命令、または複数の制御単語を表わす任意のデータを指しうる。例えば、制御情報は、システムを通してメディア情報をルーティングする、または、ノードに、予め決められた方法でメディア情報を処理するよう指示する、ために用いられうる。複数の実施形態は、しかしながら、図１０に示され、または説明される複数の要素または状況に限定されない。
【０１０９】
図１１は、複数の実施形態による、図１０のシステム１０００が具現化されうる小型フォームファクタデバイス１１００の概略図である。同様の数字が付けられた複数のアイテムは、図１０に関して説明された通りである。いくつかの実施形態において、例えば、デバイス１１００は、複数の無線機能を有するモバイルコンピューティングデバイスとして実装される。モバイルコンピューティングデバイスは、処理システム、および、例えば１または複数のバッテリなどのモバイルパワーソースまたはサプライ、を有する任意のデバイスを指しうる。
【０１１０】
上述したように、モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、またはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、等を含みうる。
【０１１１】
モバイルコンピューティングデバイスの例はまた、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シューコンピュータ、クロージングコンピュータ、または、任意の他の適したタイプのウェアラブルコンピュータ、などの、人によって装着されるべく整えられたコンピュータも含みうる。例えば、モバイルコンピューティングデバイスは、複数の音声通信および/または複数のデータ通信はもちろん、複数のコンピュータアプリケーションを実行することができるスマートフォンとして実装されうる。いくつかの実施形態が、例として、スマートフォンとして実装されたモバイルコンピューティングデバイスで説明されうるが、他の複数の実施形態が、他の無線モバイルコンピューティングデバイスを用いて同様に実装されうることは理解され得る。
【０１１２】
図１１に示されるように、デバイス１１００は、ハウジング１１０２、ディスプレイ１１０４、入出力（Ｉ／Ｏ）デバイス１１０６、およびアンテナ１１０８を含みうる。デバイス１１００はまた、ナビゲーション機能１１１０も含みうる。ディスプレイ１１０４は、モバイルコンピューティングデバイスに適した情報を表示する任意の適したディスプレイユニットを含みうる。Ｉ／Ｏデバイス１１０６は、モバイルコンピューティングデバイスに情報を入力する任意の適したＩ／Ｏデバイスを含み得る。例えば、Ｉ／Ｏデバイス１１０６は、英数字キーボード、テンキーパッド、タッチパッド、複数の入力キー、複数のボタン、複数のスイッチ、複数のロッカースイッチ、複数のマイク、複数のスピーカ、音声認識デバイスおよびソフトウェア、などを含みうる。情報はまた、マイクを用いてデバイス１１００に入力されうる。そのような情報は音声認識デバイスによってデジタル化されうる。さらに、デバイス１１００はまた、１または複数のカメラを含みうる。カメラは、Ｍｏｂｉｌｅ Ｉｎｄｕｓｔｒｙ Ｐｒｏｃｅｓｓｏｒ Ｉｎｔｅｒｆａｃｅ（ＭＩＰＩ）アライアンスによって開発された複数の規格に従い、デバイスのプロセッサとインタフェースで接続しうる。
例１
【０１１３】
複数の撮像デバイスコマンドを変換する装置が本明細書において説明される。装置は、変換エンジンを形成すべくコード記憶領域から変換コードを取り出すロジック、および、変換エンジンにおいて複数の撮像デバイスコマンドを受信するロジック、を含む。装置はまた、変換エンジンを用いて複数の撮像デバイスコマンドを変換するロジック、および、変換された撮像デバイスコマンドによって要求される挙動をもたらすべく、複数の変換された撮像デバイスコマンドを撮像デバイスへ伝送するロジック、も含む。
【０１１４】
装置はさらに、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうかを決定するロジックを含みうる。変換コードは複数の撮像デバイスコマンドを変換すべく実行されうる。コード記憶領域は撮像デバイス内に配置され得て、または、コード記憶領域はホストデバイスに結合されるプラットフォームストレージ内に配置されうる。変換エンジンは撮像デバイスから離れて配置されうる。さらに、変換エンジンはインターポーザデバイス上に配置され得て、コード記憶領域は、インターポーザデバイス、ホストデバイス、センサ、またはそれらの任意の組み合わせ、のうちの少なくとも１つ上に配置されうる。変換エンジンは、複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換しうる。さらに、変換エンジンは、複数の撮像デバイスコマンドを複数のＣＳＩ−２レジスタ読出し／書込みコマンドに変換しうる。変換エンジンはまた、撮像デバイスによってネイティブにサポートされない複数のコマンドを変換しうる。
例２
【０１１５】
複数の撮像デバイスコマンドを変換するシステムが本明細書において説明される。システムは、ホストデバイス、ホストデバイスに結合された撮像デバイス、および変換エンジンを含み、変換エンジンはコード記憶領域から得られるコードを用いて作成され、変換エンジンは、複数の撮像デバイスコマンドを複数の撮像デバイス固有コマンドに変換すべく構成される。
【０１１６】
ホストデバイスは、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、またはサーバ、またはそれらの任意の組み合わせでありうる。さらに、撮像デバイス内の組み込みプロセッサまたはシーケンサは、複数の撮像デバイスコマンドを変換するために用いられうる。コード記憶領域はホストデバイス内に配置されうる。さらに、コード記憶領域は撮像デバイス内に配置されうる。コード記憶領域はまた、ホストデバイスに結合されるプラットフォームストレージデバイス内に配置される。変換エンジンは撮像デバイスから離れて配置されうる。変換エンジンはまた、複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換しうる。変換エンジンは、変換された撮像デバイスコマンドによって要求される挙動をもたらすべく、複数の変換されたコマンドを撮像デバイスに送信すべく構成されうる。さらに、変換エンジンは、撮像デバイスによってネイティブにサポートされない複数のコマンドを変換すべく構成されうる。変換コードは、実行時解釈言語サンドボックス内で実行されうる。変換エンジンはまた、ホストデバイス上に配置されうる。
例３
【０１１７】
複数の撮像デバイスコマンドを変換するためのコンピュータ実行可能な複数の命令を有する有形の非一時コンピュータ可読記憶媒体が本明細書において説明される。複数の命令は、変換エンジンを形成すべく、コンピュータにコード記憶領域から変換コードを取り出させ、複数の入力撮像デバイスコマンドを受信させる。複数の命令はまた、コンピュータに、複数の入力撮像デバイスコマンドを複数の撮像デバイス固有コマンドに変換させ、複数の撮像デバイス固有コマンドをコンピュータに結合された撮像デバイスに送信させる。その複数の入力撮像デバイスコマンドは変換手段によって変換される。変換手段は変換エンジンであり得て、変換手段は撮像デバイスから離れて配置されうる。
例４
【０１１８】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行する装置が本明細書において説明される。装置は、コマンドの属性識別を抽出するロジック、および、撮像デバイス内の画像ソースから複数の属性値を取得すべく、属性識別に基づいて取得プロトコルデータユニット（ＰＤＵ）をホストデバイスから撮像デバイスへ送信するロジック、を含む。装置はまた、コマンドの実行を完了させるべく、応答ＰＤＵを撮像デバイスからホストデバイスに送信するロジックも含む。
【０１１９】
撮像デバイスのセンサは、取得ＰＤＵがホストデバイスから撮像デバイスに送信される場合、コマンドを実行しうる。さらに、撮像デバイスのセンサは、取得ＰＤＵがブロッキングなしにホストデバイスから撮像デバイスに送信される場合、コマンドを実行しうる。取得ＰＤＵはＣＳＩ−３属性パケット中にカプセル化され、それから撮像デバイスに送信されうる。さらに、応答ＰＤＵは、撮像デバイス内の画像ソースから得られる複数の属性値を含みうる。画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）でありうる。装置はまた、通知ＰＤＵを撮像デバイスからホストデバイスへ送信するロジックを含みうる。その通知ＰＤＵはコマンドからの属性識別に基づく属性値を含まない。さらに、装置は、ホストデバイスから設定ＰＤＵを送信するロジックを含みうる。設定ＰＤＵは、コマンドからの属性識別に基づいて撮像デバイスに複数の属性値を書き込む。
例５
【０１２０】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行するシステムが本明細書において説明される。システムは、ホストデバイス、およびホストデバイスに結合された撮像デバイスを含み、取得プロトコルデータユニット（ＰＤＵ）はホストデバイスから撮像デバイスに送信され、取得ＰＤＵは撮像デバイスの画像ソースからの複数の属性値の要求を含み、応答ＰＤＵは、コマンドの実行を完了させるべく、撮像デバイスからホストデバイスに送信される。
【０１２１】
ホストデバイスのセンサは、取得ＰＤＵがホストデバイスから撮像デバイスに送信される場合に、コマンドを実行しうる。撮像デバイスのセンサはまた、取得ＰＤＵがブロッキングなしにホストデバイスから撮像デバイスに送信される場合に、コマンドを実行しうる。画像ソースは、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス中のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサでありうる。通知ＰＤＵは撮像デバイスからホストデバイスに送信され得て、通知ＰＤＵはコマンドからの属性識別に基づく属性値を含まない。設定ＰＤＵは撮像デバイスからホストデバイスに送信され得て、設定ＰＤＵは、コマンドからの属性識別に基づいて撮像デバイスへの複数の属性値の読み出しまたは書き込みを行う。
例６
【０１２２】
ゲットアンドセットアーキテクチャに基づきトランスポートメカニズム内でコマンドを実行するためのコンピュータ実行可能な複数の命令を有する有形の非一時コンピュータ可読記憶媒体が本明細書において説明される。複数の命令は、コンピュータに、コマンドの属性識別を抽出させ、撮像デバイス内の画像ソースから複数の属性値を取得すべく、属性識別に基づいて、取得プロトコルデータユニット（ＰＤＵ）をホストデバイスから撮像デバイスに送信させる。複数の命令はまた、コンピュータに、コマンドの実行を完了させるべく、撮像デバイスからホストデバイスに応答ＰＤＵを送信させる。
【０１２３】
取得ＰＤＵはＣＳＩ−３属性パケット中にカプセル化され得て、それから撮像デバイスに送信されうる。応答ＰＤＵは撮像デバイス内の画像ソースから得られる複数の属性値を含みうる。画像ソースは、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス中のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサでありうる。さらに、通知ＰＤＵは撮像デバイスからホストデバイスに送信され得て、通知ＰＤＵは、コマンドからの属性識別に基づく属性値を含まない。さらに、設定ＰＤＵは撮像デバイスからホストデバイスに送信され得て、設定ＰＤＵはコマンドからの属性識別に基づいて複数の属性値を撮像デバイスに書き込む。
例７
【０１２４】
メタデータストレージサブシステムを可能にする装置が本明細書において説明される。装置は、利用可能なメタデータのディレクトリを作成するロジックであり、そのメタデータが様々なシステムデータ記憶領域に格納されるロジック、および、ホストデバイスによって要求される通りにメタデータを取り出すロジック、を含む。装置はまた、ホストデバイスにメタデータを伝送するロジック、および、メタデータを実行するロジック、を含む。
【０１２５】
メタデータを取り出すロジックは、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含む。ホストデバイスは、撮像デバイス上にあるメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、および、メタデータのアクセス属性を決定すべくディレクトリを読み出しうる。メタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせのうちの少なくとも１つを含みうる。さらに、メタデータを取り出すロジックは、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含み得て、その開始アドレスはＣＳＩ−３属性マッピングに対応する。さらに、メタデータはカメラコマンドセット（ＣＣＳ）変換コードブロックであり得て、ホストデバイスはＣＣＳ変換コードブロックをロードし初期化しうる。
例８
【０１２６】
メタデータストレージサブシステムを可能にするシステムが本明細書において説明される。システムは、ホストデバイス、ホストデバイスに結合された撮像デバイス、およびメタデータサブシステムを含む。メタデータサブシステム中の利用可能なメタデータのディレクトリが作成され、メタデータはホストデバイスによって要求される通りに取り出される。メタデータはまた、ホストデバイスを用いて伝送され実行される。
【０１２７】
メタデータを取り出す段階は、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含みうる。ホストデバイスは、撮像デバイス上に格納されたメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、およびメタデータのアクセス属性、を決定すべくディレクトリを読み出しうる。さらに、メタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせのうちの少なくとも１つを含みうる。メタデータを取り出す段階は、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含み、その開始アドレスはＣＳＩ−３属性マッピングに対応する。メタデータはコマンド撮像デバイスセット（ＣＣＳ）変換コードブロックであり得て、ホストデバイスはＣＣＳ変換コードブロックをロードし初期化する。
例９
【０１２８】
メタデータストレージサブシステムを可能にするためのコンピュータ実行可能な複数の命令を有する有形の非一時コンピュータ可読記憶媒体が本明細書において説明される。複数の命令は、コンピュータに利用可能なメタデータのディレクトリを作成させ、メタデータは様々なシステムデータ記憶領域に格納される。複数の命令はまた、コンピュータに、ホストデバイスによって要求される通りにメタデータを取り出させ、ホストデバイスにメタデータを伝送させ、メタデータを実行させる。
【０１２９】
メタデータを取り出す段階は、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含みうる。ホストデバイスは、撮像デバイス上にあるメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、およびメタデータのアクセス属性を決定すべく、ディレクトリを読み出しうる。さらに、メタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせのうちの少なくとも１つを含みうる。メタデータを取り出す段階はまた、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含み得て、開始アドレスはＣＳＩ−３属性マッピングに対応する。さらに、メタデータはコマンド撮像デバイスセット（ＣＣＳ）変換コードブロックであり得て、ホストデバイスはＣＣＳ変換コードブロックをロードおよび初期化する。
例１０
【０１３０】
１または複数の撮像デバイスコマンドを変換するための方法が本明細書において説明される。方法は、変換コードを取り出す段階、および１または複数の撮像デバイスコマンドを受信する段階を含む。方法はまた、１または複数の撮像デバイスコマンドを、撮像デバイスが処理することができる１または複数のアクセスに変換する変換コードを実行する段階、および、１または複数の撮像デバイスコマンドによって要求される挙動をもたらすべく、１または複数のアクセスを撮像デバイスに送信する段階を含む。
【０１３１】
撮像デバイスはカメラを含み得て、１または複数の撮像デバイスコマンドは１または複数のカメラコマンドを含みうる。さらに、その方法はホストデバイスに実装されうる。さらに、その方法はホストソフトウェアに実装されうる。変換コードは高水準変換コードでありうる。変換コードはまた、撮像デバイス中に位置するストレージから取り出されうる。撮像デバイス中に位置するストレージはメタデータストレージでありうる。変換コードは撮像デバイスの外部のストレージから取り出されうる。さらに、撮像デバイスの外部のストレージはプラットフォームストレージでありうる。また、撮像デバイスの外部のストレージはメタデータストレージでありうる。
【０１３２】
撮像デバイスが処理することができる１または複数のアクセスは、複数のＣＳＩ−３属性ゲット／セットパケットを含みうる。さらに、複数のより複雑なコマンドは複数のよりシンプルなコマンドに変換されうる。より複雑なコマンドはまた、複数のＣＳＩ−３属性ゲット／セット要求に変換されうる。その方法はまた、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうか決定する段階を含みうる。変換コードは、インターポーザデバイス、ホストデバイス、センサ、またはそれらの任意の組み合わせのうちの少なくとも１つ上に格納されうる。１または複数の撮像デバイスコマンドは複数のＣＳＩ−３属性ゲット／セットコマンドに変換されうる。さらに、１または複数の撮像デバイスコマンドは複数のＣＳＩ−２レジスタ読出し／書込みコマンドに変換されうる。１または複数の変換された撮像デバイスコマンドはまた、撮像デバイスによってネイティブにサポートされない複数のコマンドでもありうる。
例１１
【０１３３】
１または複数の撮像デバイスコマンドを変換する装置が本明細書において説明される。装置は、変換コードを取り出し、１または複数の撮像デバイスコマンドを受信し、１または複数の撮像デバイスコマンドを、撮像デバイスが処理することができる１または複数のアクセスに変換すべく変換コードを実行し、１または複数の撮像デバイスコマンドによって要求される挙動をもたらすべく、１または複数のアクセスを撮像デバイスに送信する、変換エンジンを含む。
【０１３４】
撮像デバイスはカメラを含み得て、１または複数の撮像デバイスコマンドは１または複数のカメラコマンドを備える。変換エンジンはホストデバイスに含まれうる。さらに、変換エンジンはホストソフトウェアを含みうる。変換コードは高水準変換コードでありうる。さらに、変換エンジンは撮像デバイス中に位置するストレージから変換コードを取り出しうる。撮像デバイス中に位置するストレージはメタデータストレージでありうる。さらに、変換エンジンは撮像デバイスの外部のストレージから変換コードを取り出すものである。撮像デバイスの外部のストレージはプラットフォームストレージである。また、撮像デバイスの外部のストレージはメタデータストレージである。
【０１３５】
撮像デバイスが処理することができる１または複数のアクセスは、複数のＣＳＩ−３属性ゲット／セットパケットを含みうる。さらに、変換エンジンは複数のより複雑なコマンドを複数のよりシンプルなコマンドに変換しうる。変換エンジンはまた、複数のより複雑なコマンドを複数のＣＳＩ−３属性ゲット／セット要求に変換しうる。変換エンジンは、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうか決定しうる。変換コードは、インターポーザデバイス、ホストデバイス、センサ、またはどれらの任意の組み合わせのうちの少なくとも１つ上に格納されうる。変換エンジンは、１または複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換しうる。さらに変換エンジンは、１または複数の撮像デバイスコマンドを複数のＣＳＩ−２レジスタ読出し／書込みコマンドに変換しうる。さらに、１または複数の変換された撮像デバイスコマンドは、撮像デバイスによってネイティブにサポートされない複数のコマンドでありうる。また、変換エンジンはホストに含まれ得て、装置はさらに撮像デバイスを含む。装置はまた、変換コードを格納すべくストレージデバイスを含みうる。
例１２
【０１３６】
装置が本明細書において説明される。装置は、撮像デバイスが処理することができる１または複数のアクセスを受信し、１または複数の撮像デバイスコマンドによって要求される挙動を実行する撮像デバイスを含む。ここで、１または複数のアクセスは１または複数の撮像デバイスコマンドの変換であり、変換コードを用いて実装される変換、に対応する。
【０１３７】
撮像デバイスはカメラを含み得て、１または複数の撮像デバイスコマンドは１または複数のカメラコマンドを備える。変換エンジンは１または複数の撮像デバイスコマンドを１または複数のアクセスに変換しうる。変換エンジンはホストソフトウェアを含みうる。さらに、変換コードは高水準変換コードでありうる。変換エンジンは、撮像デバイス中に位置するストレージから変換コードを取り出しうる。撮像デバイスはさらに、変換コードを格納すべくストレージを含みうる。ストレージはメタデータストレージでありうる。変換エンジンは、撮像デバイスの外部のストレージから変換コードを取り出しうる。さらに、撮像デバイスの外部のストレージはプラットフォームストレージでありうる。さらに、撮像デバイスの外部のストレージはメタデータストレージでありうる。
【０１３８】
撮像デバイスが処理することができる１または複数のアクセスは、複数のＣＳＩ−３属性ゲット／セットパケットを含みうる。変換エンジンは、複数のより複雑なコマンドを複数のよりシンプルなコマンドに変換しうる。さらに、変換エンジンは、複数のより複雑なコマンドを複数のＣＳＩ−３属性ゲット／セット要求に変換しうる。変換エンジンはまた、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうか決定しうる。さらに、変換コードは、インターポーザデバイス、ホストデバイス、センサ、またはそれらの任意の組み合わせのうちの少なくとも１つ上に格納される。変換エンジンは、１または複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換しうる。変換エンジンはまた、１または複数の撮像デバイスコマンドをＣＳＩ−２レジスタ読出し／書込みコマンドに変換しうる。１または複数の変換された撮像デバイスコマンドは、撮像デバイスによってネイティブにサポートされない複数のコマンドでありうる。さらに、装置は変換コードを格納すべくストレージデバイスを含みうる。
例１３
【０１３９】
コンピュータ実行可能な複数の命令を有する有形の非一時コンピュータ可読記憶媒体が本明細書において説明される。複数の命令は、コンピュータに変換コードを取り出させ、１または複数の撮像デバイスコマンドを受信させる。複数の命令はまた、コンピュータに、１または複数の撮像デバイスコマンドを、撮像デバイスが処理することができる１または複数のアクセスに変換すべく変換コードを実行させ、１または複数の撮像デバイスコマンドによって要求される挙動をもたらすべく、１または複数のアクセスを撮像デバイスに送信させる。
【０１４０】
撮像デバイスはカメラを含み得て、１または複数の撮像デバイスコマンドは１または複数のカメラコマンドを備える。さらに、変換コードは高水準変換コードでありうる。撮像デバイスが処理することができる１または複数のアクセスは、複数のＣＳＩ−３属性ゲット／セットパケットを含みうる。さらに、複数のより複雑なコマンドは複数のよりシンプルなコマンドに変換されうる。さらに、複数のより複雑なコマンドは複数のＣＳＩ−３属性ゲット／セット要求に変換されうる。複数の命令はさらにコンピュータに、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうか決定させうる。複数の命令はさらにコンピュータに、１または複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換させうる。加えて、複数の命令はさらにコンピュータに、１または複数の撮像デバイスコマンドを複数のＣＳＩ−２レジスタ読出し／書込みコマンドに変換させうる。
【０１４１】
１または複数の変換された撮像デバイスコマンドは、撮像デバイスによってネイティブにサポートされない複数のコマンドでありうる。複数の命令はコンピュータに、１または複数の撮像デバイスコマンドを、撮像デバイスが処理することができる１または複数のアクセスに変換させうる。撮像デバイスはカメラを含み得て、１または複数の撮像デバイスコマンドは１または複数のカメラコマンドを備える。さらに、撮像デバイスが処理することができる１または複数のアクセスは、複数のＣＳＩ−３属性ゲット／セットパケットを含みうる。複数の命令はさらにコンピュータに、複数のより複雑なコマンドを複数のよりシンプルなコマンドに変換させうる。複数の命令はまたさらにコンピュータに、複数のより複雑なコマンドを複数のＣＳＩ−３属性ゲット／セット要求に変換させうる。その上、複数の命令はさらにコンピュータに、複数の受信されたコマンドが撮像デバイスによってネイティブにサポートされるかどうか決定させうる。また、複数の命令はさらにコンピュータに、１または複数の撮像デバイスコマンドを複数のＣＳＩ−３属性ゲット／セットコマンドに変換させうる。加えて、複数の命令はさらにコンピュータに、１または複数の撮像デバイスコマンドを複数のＣＳＩ−２レジスタ読出し／書込みコマンドに変換させうる。
例１４
【０１４２】
コマンドトランスポートを用いてコマンドを実行する装置が本明細書において説明される。装置は、属性パケット中にカプセル化されたコマンドのプロトコルデータユニットをカプセル化するコントローラを含む。コントローラはまた、カプセル化されたプロトコルデータユニットを撮像デバイスに送信し、コマンドを完了させるべく、撮像デバイスから応答プロトコルデータユニット中のステータス値を受信しうる。
【０１４３】
撮像デバイスはカメラを含み得て、コマンドはカメラコマンドでありうる。加えて、コマンドはＣＳＩ−３属性に対応しうる。さらに、プロトコルデータユニットは取得プロトコルデータユニットでありうる。装置はホストデバイスを含みうる。さらに、コントローラはコマンドの属性識別を抽出し得て、コントローラは属性識別に基づいてプロトコルデータユニットを送信しうる。撮像デバイスのセンサは、プロトコルデータユニットが撮像デバイスに送信される場合、コマンドを実行しうる。さらに、撮像デバイスのセンサは、プロトコルデータユニットがブロッキングなしに撮像デバイスに送信される場合、コマンドを実行しうる。コントローラは、ＣＳＩ−３属性パケット中にプロトコルデータユニットをカプセル化し、次にそれを撮像デバイスに送信しうる。さらに、応答プロトコルデータユニットは、撮像デバイス内の画像ソースから得られる複数の属性値を含みうる。さらに、コントローラは、撮像デバイスの画像ソースから複数の属性値を取得しうる。画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）でありうる。コントローラはさらに、撮像デバイスから通知プロトコルデータユニットを受信しうる。ここで、通知プロトコルデータユニットは、コマンドからの属性識別に基づく属性値を含まない。さらに、コントローラはまた、設定プロトコルデータユニットを撮像デバイスに送信しうる。ここで、設定プロトコルデータユニットは、コマンドからの属性識別に基づいて撮像デバイスに複数の属性値を書き込むものである。
例１５
【０１４４】
コマンドトランスポートを用いてコマンドを実行する撮像デバイスが本明細書において説明される。撮像デバイスは、属性パケット中にカプセル化されたコマンドのプロトコルデータユニットを受信し、コマンドを完了させるべく応答プロトコルデータユニットにおいてステータス値を返す、コントローラを含む。
【０１４５】
プロトコルデータユニットは、ホストデバイスから受信され得て、応答プロトコルデータユニットはホストデバイスに送信されうる。撮像デバイスはカメラを含み得て、コマンドはカメラコマンドでありうる。さらに、コマンドはＣＳＩ−３属性に対応しうる。受信されたプロトコルデータユニットは取得プロトコルデータユニットでありうる。さらに、受信されたプロトコルデータユニットはコマンドから抽出される属性識別に基づきうる。撮像デバイスはまた、プロトコルデータユニットが受信される場合コマンドを実行するセンサを含みうる。さらに、撮像デバイスはまた、プロトコルデータユニットがブロッキングなしに受信される場合コマンドを実行するセンサを含みうる。さらに、受信されたプロトコルデータユニットはＣＳＩ−３属性パケット中にカプセル化されうる。撮像デバイスはまた画像ソースを含み得て、応答プロトコルデータユニットは画像ソースから得られる複数の属性値を含む。画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）でありうる。画像ソースはまた、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス上のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサでありうる。コントローラはさらに通知プロトコルデータユニットを送信し得て、通知プロトコルデータユニットはコマンドからの属性識別に基づく属性値を含まない。加えて、コントローラはさらに、設定プロトコルデータユニットを受信し、コマンドからの属性識別に基づいて複数の属性値を書き込みうる。
例１６
【０１４６】
コマンドトランスポートを用いてコマンドを実行するシステムが本明細書において説明される。システムは、属性パケット中にカプセル化されたコマンドのプロトコルデータユニットをカプセル化し、カプセル化されたプロトコルデータユニットを送信し、コマンドを完了させるべく、撮像デバイスから応答プロトコルデータユニットにおいてステータス値を受信する、コントローラを備えるホストを含む。システムはまた撮像デバイスを含み、撮像デバイスは、ホストからカプセル化されたプロトコルデータユニットを受信し、コマンドを完了させるべく、応答プロトコルデータユニットにおいてホストにステータス値を返す、別のコントローラを含む。
【０１４７】
撮像デバイスはカメラを含み、コマンドはカメラコマンドでありうる。コマンドはＣＳＩ−３属性に対応しうる。プロトコルデータユニットは取得プロトコルデータユニットでありうる。さらに、ホストコントローラはコマンドの属性識別を抽出し得て、属性識別に基づいてプロトコルデータユニットを送信しうる。撮像デバイスはさらに、プロトコルデータユニットが撮像デバイスに送信される場合にコマンドを実行するセンサを含みうる。また、撮像デバイスはさらに、プロトコルデータユニットがブロッキングなしに撮像デバイスに送信される場合にコマンドを実行するセンサを含みうる。ホストコントローラはＣＳＩ−３属性パケット中にプロトコルデータユニットをカプセル化し得て、次にそれを撮像デバイスに送信しうる。撮像デバイスはさらに、画像ソースを含みうる。応答プロトコルデータユニットはその画像ソースから得られる複数の属性値を含む。その上、撮像デバイスはさらに画像ソースを含み得て、ホストコントローラは画像ソースから複数の属性値を取得しうる。画像ソースは、画像センサ、システムオンチップ（ＳＯＣ）撮像デバイス、マルチチップ撮像デバイスモジュール、または画像信号プロセッサ（ＩＳＰ）でありうる。画像ソースはまた、ＲＡＷ撮像デバイスセンサ、チップ撮像デバイス上のシステム、マルチチップ撮像デバイスモジュール、または画像信号プロセッサでありうる。撮像デバイスコントローラはホストに通知プロトコルデータユニットを送信しうる。その通知プロトコルデータユニットは、コマンドからの属性識別に基づく属性値を含まない。さらに、ホストコントローラは撮像デバイスに設定プロトコルデータユニットを送信しうる。その設定プロトコルデータユニットは、コマンドからの属性識別に基づいて撮像デバイスに複数の属性値を書き込むものである。
例１７
【０１４８】
装置が本明細書において説明される。装置は、撮像デバイスメタデータを編成する複数のブロブに含まれる複数の利用可能なブロブを特定し、特定された複数のブロブに応じて、撮像デバイスメタデータを編成する複数のブロブに含まれる個々のブロブをフェッチし、フェッチされた個々のブロブを実行する、ホストコントローラを含む。
【０１４９】
撮像デバイスメタデータはカメラメタデータを含む。ホストコントローラはまた、利用可能なメタデータのディレクトリを作成し得て、メタデータは様々なシステムデータ記憶領域に格納されうる。ホストコントローラはさらに撮像デバイスメタデータを取り出しうる。加えて、ホストコントローラはさらに撮像デバイスメタデータを実行しうる。撮像デバイスメタデータの取り出しは、撮像デバイスメタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含みうる。さらに、ホストコントローラは、撮像デバイス上にあるメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、メタデータのアクセス属性を決定すべくディレクトリを読み出しうる。撮像デバイスメタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせのうちの少なくとも１つを含みうる。さらに、撮像デバイスメタデータの取り出しは、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行する段階を含み得て、開始アドレスはＣＳＩ−３属性マッピングに対応しうる。撮像デバイスメタデータはカメラコマンドセット変換コードブロックを含み得て、ホストコントローラはカメラコマンドセット変換コードブロックをロードし初期化しうる。
例１８
【０１５０】
装置が本明細書において説明される。装置は、撮像デバイスメタデータを特定し、特定された撮像デバイスメタデータをフェッチし、フェッチされた撮像デバイスメタデータを実行するホストコントローラを含む。
【０１５１】
撮像デバイスメタデータはカメラメタデータを含みうる。さらに、ホストコントローラは、利用可能なメタデータのディレクトリを作成しうる。そのメタデータは様々なシステムデータ記憶領域に格納される。ホストコントローラはまた、撮像デバイスメタデータを含むデータ転送の開始アドレスを示すコマンドを実行することによって、撮像デバイスメタデータをフェッチしうる。さらに、ホストコントローラは、撮像デバイス上にあるメタデータの複数のタイプ、メタデータの開始アドレスおよび長さ、メタデータのアクセス属性を決定すべく、ディレクトリを読み出しうる。撮像デバイスメタデータは、変換コード、キャリブレーションデータ、チューニングデータ、撮像デバイスファームウェア、またはそれらの任意の組み合わせのうちの少なくとも１つを含みうる。ホストコントローラは、メタデータを含むデータ転送の開始アドレスを示すコマンドを実行することによって、撮像デバイスメタデータをフェッチしうる。その開始アドレスはＣＳＩ−３属性マッピングに対応する。撮像デバイスメタデータはカメラコマンドセット変換コードブロックを含みうる。ホストコントローラは、そのカメラコマンドセット変換コードブロックをロードし初期化するものである。
【０１５２】
複数の本技術は様々な変更および代替形を生み易いと言ってよいが、上述した例示的な複数の例は例としてのみ示されてきた。理解すべきことは、当該技術が、本明細書において開示される特定の複数の例に限定されることは意図されない、ということである。実際、複数の本技術は、添付の特許請求の真の趣旨および範囲内に含まれる全ての代替例、変更、および均等物を含む。さらに、一例からの複数の要素または複数の機能は、任意の数の他の例との組み合わせにおいて使用されうる。
【０１５３】
理解すべきことは、前述の複数の例における詳細は、１または複数の実施形態のいずれにおいても使用されうるということである。例えば、上述したコンピューティングデバイス、装置、またはシステムの全てのオプションの機能はまた、本明細書において説明された複数の方法またはコンピュータ可読媒体のいずれかに対して実装されうる。さらに、複数のフロー図および/または複数の状態図が複数の実施形態を説明すべく本明細書中で用いられてきたと言ってよいが、複数の本発明は、それらの図、または本明細書における対応する説明に限定されるものではない。例えば、フローは、各示されたボックスまたは状態を通して、または、本明細書において示され説明されたものと正確に同じ順序で、進む必要はない。
【０１５４】
複数の本発明は、本明細書において列挙された特定の詳細に制限されない。実際、この開示の恩恵を有する当業者は、上記の説明および複数の図面からの多くの他の変形形態、複数の本発明の範囲内で成され得ることを理解するであろう。従って、複数の本発明の範囲を定義するものは、いかなる変更をも含む以下の特許請求である。
【図１】
2015535673.tif 000003
【図２】
2015535673.tif 000004
【図３】
2015535673.tif 000005
【図４】
2015535673.tif 000006
【図５】
2015535673.tif 000007
【図６】
2015535673.tif 000008
【図７】
2015535673.tif 000009
【図８】
2015535673.tif 000010
【図９】
2015535673.tif 000011
【図１０】
2015535673.tif 000012
【図１１】
2015535673.tif 000013
【国際調査報告】
2015535673.tif 000014
2015535673.tif 000015
2015535673.tif 000016
2015535673.tif 000017