(57)【特許請求の範囲】
【請求項１】
マルチメディアデバイスであって、
デバイスパラメータ情報を含むプロファイルを格納しているメモリであって、前記プロファイルは、グラフィカルユーザインタフェースを介して提示されるオプションに対応する前記マルチメディアデバイスの埋め込み設定に対応する、メモリと、
前記プロファイルを参照している記憶済みのコンピュータ可読命令を実行するときに、前記デバイスパラメータ情報を使用するように動作可能な処理回路とを備えるマルチメディアデバイス。
【請求項２】
前記デバイスパラメータ情報は前記デバイスのハードウェア動作に関連している、請求項１に記載のマルチメディアデバイス。
【請求項３】
前記デバイスパラメータ情報はビットレート、コーデック種別およびフレームレートの少なくとも１つに関連している、請求項２に記載のマルチメディアデバイス。
【請求項４】
前記処理回路は少なくとも１つのプロファイルに含まれるデバイスパラメータ情報を含む合成プロファイルを作成するように動作可能である、請求項１に記載のマルチメディアデバイス。
【請求項５】
前記合成プロファイルは少なくともビデオハードウェアおよび音声ハードウェア用のデバイスパラメータ情報を含む、請求項４に記載のマルチメディアデバイス。
【請求項６】
前記メモリはデバイス共通機能用のプロファイルの組を格納している、請求項１に記載のマルチメディアデバイス。
【請求項７】
ハンドヘルドデバイスであって、
記憶済みのコンピュータ可読命令を実行するように動作可能な処理回路と、
デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含むプロファイルであって、前記ハンドヘルドデバイスの埋め込み設定に対応するプロファイルに対応する少なくとも１つのプロファイル参照への参照を含む、記憶済みのコンピュータ可読命令を含むメモリと、
実行されると、前記処理回路に、前記少なくとも１つのプロファイル参照を使用して前記デバイスパラメータ情報を取得させ、該デバイスパラメータ情報を使用してデバイスのハードウェア動作を制御させるために、ミドルウェアとして動作可能な記憶済みのコンピュータ可読命令を含むメモリと、
前記プロファイル参照によってインデックス付けされた前記デバイスパラメータ情報を格納しているメモリとを備える、ハンドヘルドデバイス。
【請求項８】
前記デバイスパラメータ情報はビットレート、コーデック種別およびフレームレートの少なくとも１つに関連している、請求項７に記載のハンドヘルドデバイス。
【請求項９】
少なくとも１つのプロファイルに含まれるデバイスパラメータ情報を含む合成プロファイルを作成するように動作可能なプロファイルコンバイナモジュールを更に備える、請求項７に記載のハンドヘルドデバイス。
【請求項１０】
前記合成プロファイルは少なくともビデオハードウェアおよび音声ハードウェア用のデバイスパラメータ情報を含む、請求項９に記載のハンドヘルドデバイス。
【請求項１１】
ハンドへルドデバイス上のハードウェアを制御するための方法であって、
デバイスパラメータ情報を含むプロファイルであって、デバイスグラフィカルユーザインタフェースオプションに対応し、前記ハンドヘルドデバイスの埋め込み設定に対応するプロファイルを参照している少なくとも１つのプロファイル参照を含むアプリケーションを活性化するステップと、
前記少なくとも１つのプロファイル参照に関連する少なくとも１つのプロファイルに含まれるデバイスパラメータ情報を使用してハードウェア動作を実行するステップとを含む、方法。
【請求項１２】
プロファイルコンバイナモジュールを呼び出すステップと、
デバイスグラフィカルユーザインタフェース動作に対応する合成プロファイルを作成するために、複数のプロファイルに含まれるデバイスパラメータ情報を合成するステップとを更に含む、請求項１１に記載の方法。
【請求項１３】
前記合成プロファイルに新しいプロファイル参照を割り当てるステップを更に含む、請求項１２に記載の方法。
【請求項１４】
デバイスパラメータ情報を含む前記プロファイルを参照している前記プロファイル参照に対応する前記デバイスグラフィカルユーザインタフェースオプションをユーザに提示するステップと、
ユーザ入力を受け取るステップとを更に含む、請求項１１に記載の方法。
【請求項１５】
追加のユーザ入力を受け取るステップと、
少なくとも１つの追加のハードウェア動作を実行するために、前記追加のユーザ入力に基づいて、少なくとも１つの追加のプロファイル参照をエンコーダに渡すステップとを更に含む、請求項１４に記載の方法。
【請求項１６】
前記ハードウェア動作は音声コーディング、ビデオコーディングおよび画像コーディングの少なくとも１つを含む、請求項１１に記載の方法。
【請求項１７】
デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含むプロファイルを識別しているプロファイル参照を含むソースコードから、アプリケーションを表すデータを生成するアプリケーションジェネレータを含むコンピュータ可読命令を実行するように動作可能な処理回路と、
前記コンピュータ可読命令と、デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含むプロファイルであって、デバイスの埋め込み設定に対応するプロファイルを識別しているプロファイル参照を含む前記アプリケーションとを含むメモリとを備え、
前記アプリケーションジェネレータは、更に、前記ディスプレイで視認可能なアプリケーション生成グラフィカルユーザインタフェースを提供するように動作可能であり、デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含むプロファイルを識別しているプロファイル参照に対応するプロファイル参照挿入オプションを提供するように動作可能である、
ソフトウェア開発システム。
【請求項１８】
前記デバイスパラメータ情報はハードウェア動作に関連している、請求項１７に記載のソフトウェア開発システム。
【請求項１９】
前記デバイスパラメータ情報はビットレート、コーデック種別およびフレームレートの少なくとも１つに関連している、請求項１８に記載のソフトウェア開発システム。
【請求項２０】
前記デバイスパラメータ情報はビデオハードウェアおよび音声ハードウェアの少なくとも１つに関連している、請求項１８に記載のソフトウェア開発システム。
【請求項２１】
１つ以上の処理デバイスによって実行可能な、記憶済みのコンピュータ可読命令を格納している記憶媒体であって、前記コンピュータ可読命令は、前記１つ以上の処理デバイスによって実行されると、前記１つ以上の処理デバイスに、
デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含むプロファイルであって、デバイスの埋め込み設定に対応するプロファイルを識別しているプロファイル参照を含むソースコードからアプリケーションを表すデータを生成させ、
ディスプレイで視認可能であり、デバイスグラフィカルユーザインタフェースオプションに対応するデバイスパラメータ情報を含む前記プロファイルを識別している前記プロファイル参照に対応するプロファイル参照挿入オプションを提供するように動作可能なアプリケーション生成グラフィカルユーザインタフェースを提供させる、
記憶媒体。
【請求項２２】
前記デバイスパラメータ情報はハードウェア動作に関連している、請求項２１に記載の記憶媒体。
【請求項２３】
前記デバイスパラメータ情報はビデオハードウェアおよび音声ハードウェアの少なくとも１つに関連している、請求項２２に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にソフトウェアのプログラミングに関し、より詳細には、一般に、マルチメディアソフトウェアの複雑さなど、ソフトウェアの複雑さを低減させることに関する。
【背景技術】
【０００２】
ソフトウェアアプリケーションのプログラミングは複雑なことが多い。事態を更に複雑にしていることに、ソフトウェアアプリケーションが、多くの場合、マルチメディア動作を実行し、ハードウェアデバイスと連携する場面が増えている。ハードウェア動作としては、例えば、画像のキャプチャとデコード、ビデオのキャプチャと再生、音声のキャプチャと再生、オーバーレイと表示制御などが挙げられる。例えば、カメラまたは他のレコーダによって、画像、ビデオおよび音声等のメディアをキャプチャするのにソフトウェアが使用されるほか、画像およびビデオ等のメディアを、例えばディスプレイに表示するためにもソフトウェアが使用されうる。しかし、マルチメディアアプリケーションは、ソフトウェアとハードウェアデバイス間の連携の一例に過ぎない。ソフトウェアが、前述のマルチメディアデバイスのほか、他の非マルチメディアデバイス（例えば、モデム、ＧＰＳユニット、入力デバイス、ストレージデバイス等）などの各種ハードウェアデバイスを制御することが可能なことが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
市場に投入されるデバイスが増えるのに伴い、ソフトウェアの設計が一層複雑になっている。このことは、一部には、２台のデバイスが、同じハードウェア動作（例えば、ビデオまたは音声のキャプチャ）を実行する場合であっても、この２台のデバイスが、異なるパラメータおよび機能に基づいてその動作を実行することがあるためである。このため、例えば、あるカメラの最高品質のビデオキャプチャ機能が、別のカメラの最高品質のビデオキャプチャ機能と同品質ではないことがある。このため、ソフトウェアが連携しうるあらゆるハードウェアについて、プログラマがすべてのパラメータおよび機能を知っていなければならないため、ソフトウェアの設計が複雑となりうる。これには、何百行ものコードが費やされ、このため、各ハードウェアのすべての構成パラメータを調べるのに時間がかかってしまう。また、すべての構成パラメータをプログラムするのにも膨大な時間がかかってしまう。更に、完成されているソフトウェアアプリケーションは、非常に複雑なことが多い。
【０００４】
このため、ハードウェアと連携するソフトウェアアプリケーションを、より効率的かつ簡潔に作成することが求められている。
【課題を解決するための手段】
【０００５】
概説すると、マルチメディアデバイスなどのデバイスは、パラメータ情報を含むプロファイルを格納しているメモリであって、前記プロファイルは、グラフィカルユーザインタフェースを介して提示されるオプションに対応するデバイスのプログラム可能なオプションに対応するメモリを有する。前記デバイスのプログラム可能なオプションには、ハードウェア設定またはソフトウェア設定など、デバイスの構成設定が含まれうる。前記メモリは、デバイス共通機能用のプロファイルの組を格納していてもよい。また、前記デバイスは、前記プロファイルを参照している記憶済みのコンピュータ可読命令を実行するときに、前記パラメータ情報を使用するように動作可能な処理回路とを有する。前記パラメータ情報は、前記デバイスのハードウェア動作に関連し、例えば、ビットレート、コーデック種別およびフレームレートを定義しうる。ほかのパラメータ情報の例としては、エンコーディングモード、フレームサイズおよびオーバーレイ位置などが挙げられるが、これらに限定されるものではない。
【０００６】
一例では、前記処理回路は、少なくとも１つのプロファイル情報に含まれるパラメータを含む合成プロファイルを作成するように動作可能であってもよい。この合成プロファイルには、ビデオハードウェアおよび音声ハードウェアなどの少なくとも２つのハードウェアデバイス用のパラメータ情報が含まれうる。
【０００７】
また、ハンドへルドデバイス上のハードウェアを制御するための方法が存在し、前記方法は、パラメータ情報を含み、デバイスグラフィカルユーザインタフェースオプションに対応するプロファイルを参照している少なくとも１つのプロファイル参照を含むアプリケーションを活性化するステップを含む。この対応は、一対一の対応でない。１つのわかりやすい例では、パラメータ情報は、グラフィカルユーザインタフェースに対応しているが、（直接的なグラフィカルユーザインタフェースを持たない場合でも）特定の使用用途のための組み込みデバイスの製造業者の仕様にも対応していてもよい。また、前記方法は、前記少なくとも１つのプロファイル参照に関連する少なくとも１つのプロファイルに含まれるパラメータ情報を使用してハードウェア動作を実行するステップも含んでもよい。
【０００８】
別例では、前記方法は、プロファイルコンバイナモジュールを呼び出すステップと、デバイスグラフィカルユーザインタフェースオプションまたは設計上の判断（design decision）に対応する合成プロファイルを作成するために、複数のプロファイルに含まれるパラメータ情報を合成するステップとを含む。また、前記方法は、前記合成プロファイルに新しいプロファイル参照を割り当てるステップを含んでいてもよい。
【０００９】
別例では、前記方法は、パラメータ情報を含む前記プロファイルを参照している前記プロファイル参照に対応する前記デバイスグラフィカルユーザインタフェースオプションをユーザに提示するステップと、ユーザ入力を受け取るステップとを含む。また、前記方法は、追加のユーザ入力を受け取るステップと、少なくとも１つの追加のハードウェア動作を実行するために、前記追加のユーザ入力に基づいて、少なくとも１つの追加のプロファイル参照をエンコーダに渡すステップとを含んでいてもよい。
【００１０】
また、ソフトウェア開発システムは、ディスプレイと、デバイスグラフィカルユーザインタフェースオプションに対応するパラメータ情報を含むプロファイルを識別しているプロファイル参照を含むソースコードから、アプリケーションを表すデータを生成するアプリケーションジェネレータを含むコンピュータ可読命令を実行するように動作可能な処理回路前記コンピュータ可読命令と、前記アプリケーションとを含むメモリとを備える。
【００１１】
別例では、前記アプリケーションジェネレータは、ディスプレイで視認可能であり、デバイスグラフィカルユーザインタフェースオプションに対応するパラメータ情報を含むプロファイルを識別しているプロファイル参照に対応するプロファイル参照挿入オプションを提供するように動作可能なアプリケーション生成グラフィカルユーザインタフェースを提供する。
【００１２】
他の利点のなかでも、本装置および方法により、ソフトウェア開発者が、アプリケーション、特に各種のハードウェアデバイスとインタフェースできることが望ましいアプリケーションを、より容易かつより効率的に開発できるようになる。例えば、ソフトウェア開発者は、（デバイスが同じ機能を実行する場合であっても）デバイスごとに異なりうる、パラメータの長いリストを調べる必要がなくなる。更に、たとえ、ソフトウェア開発者が、アプリケーションと連携させたいすべてのハードウェアデバイスに詳しい場合であっても、ソフトウェア開発者は何百行にものぼるコードをプログラムしなければならず、これには、かなりの時間がかかることがある。本明細書に開示の装置および方法は、異なるハードウェアの複雑な点を調べるのに長時間を費やす作業を不要にし、何百行のコードにものぼることが多いプログラムに要する時間を短縮することができる。上記以外の利点は、通常の知識を有する当業者であれば理解できるであろう。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係るマルチメディアデバイスの一例を示すブロック図。
【図２】本発明の一実施形態に係るディスプレイで視認可能なグラフィカルユーザインタフェースの一例を示す図。
【図３】本発明の一実施形態による、ハンドへルドデバイス上のハードウェアを制御するための方法の一例を示すフローチャート。
【図４】本発明の一実施形態による、ハンドへルドデバイス上のハードウェアを制御するための方法の一例を示すフローチャート。
【図５】本発明の一実施形態に係るソフトウェア開発システムの一例を示すブロック図。
【図６】本発明の一実施形態に係る、アプリケーションを生成するためのディスプレイで視認可能なグラフィカルユーザインタフェースの一例を示す図。
【発明を実施するための形態】
【００１４】
本発明は、添付の図面を参照しつつ以下に記載する説明を読めば、より容易に理解できるであろう。図面において、同じ参照符号は同じ要素を参照している。
【００１５】
図１は、ハンドへルドデバイス、携帯電話、ミュージックプレーヤ、カメラ、ポータブルコンピュータ、デスクトップコンピュータまたは別の類似のデバイスなどのマルチメディアデバイス１００の例を示す。マルチメディアデバイス１００は、パラメータ情報１１６，１１８を含むプロファイル１０４，１０６，１０８，１１０，１１２，１１４を格納しているメモリ１０２（すなわち、記憶媒体）を備える。図１には図示されていないが、プロファイル１０６，１０８，１１２，１１４もパラメータ情報を格納している点に留意されたい。メモリ１０２は、当業界において従来公知のどのような種類のメモリでもよく、これには、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、プログラマブルメモリ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気記憶デバイス（例えば、ハードディスク、フロッピーディスク、磁気テープ）、光ディスクドライブ、あるいは現在公知であるか将来開発される他の任意の適切な不揮発性メモリがある。
【００１６】
また、メモリ１０２は、プロファイル１０４〜１１４のほかに、処理回路１２０が実行しうるコンピュータ可読命令も格納している。処理回路１２０としては、１以上の中央処理装置（ＣＰＵ）、分散処理回路、特定用途向け集積回路（ＡＳＩＣ）、状態機械、ディスクリートロジック、あるいは、当業界で公知の他の任意の適切な処理回路などが挙げられる。マルチメディアデバイス１００において、処理回路１２０は、なかでも、メモリに記憶されている、アプリケーション１２２、ミドルウェアＡＰＩ１２４およびミドルウェアコード１２６などのコンピュータ可読コードを実行する。ミドルウェアコード１２６には、プロファイルコンバイナモジュール１２８と音声／ビデオエンコードモジュール１３０が含まれる。また、処理回路はディスプレイ１３２とも動作可能に接続され、ディスプレイ１３２は、なかでも、グラフィカルユーザインタフェース（ＧＵＩ）１３４を表示しうる。
【００１７】
プロファイル１０４〜１１４は、パラメータ群を表すデータ群である。プロファイルは、１１６，１１８などのパラメータ情報を含む。パラメータ情報１１６，１１８は、ハードウェアデバイスの各種設定に関連しうる任意の情報からなり、これには、解像度、圧縮のオプション、表示位置、ディスプレイデバイスなどがある。ほかのパラメータ情報の例としては、エンコーディングモード、フレームサイズおよびオーバーレイ位置などが挙げられるが、これらに限定されるものではない。例えば、プロファイル１０４には、ビデオをキャプチャしうるハードウェアデバイスに対応するパラメータ情報１１６が含まれる。このため、関連するパラメータ情報には、例えば、コーデック種別、ビットレート（例えば、最大値と最小値を含む）、フレームレート、サンプルレート、チャンネル数、ストリームフォーマット、チャンネルモード、フレームフォーマット、ＤＴＸモード、先進的音響エンコーディング（「ＡＡＣ」）プロファイル、ＡＡＣツール、適応多重レート（「ＡＭＲ」）バンドモードとその他の関連する属性、雑音抑圧情報、ＣＤＭＡレート、ボイス数、ループモード、サンプル当たりのビット、音量情報（例えば、左右など）、解像度、ホワイトバランス、カメラのパラメータ、ディスプレイのパラメータまたは他の任意の適切なパラメータ情報などがある。
【００１８】
一例では、プロファイル１１８は、音声の再生のためのパラメータ情報１１８を含み、このため、なかでも、コーデック種別とビットレートに関するパラメータ情報を有しうる。更に、メモリ１０２は、デバイス共通機能用のプロファイルの組も格納している点にも留意されたい。例えば、プロファイル１０４，１０６，１０８は、ビデオのキャプチャに関連するプロファイルの組を形成している。プロファイル１１０，１１２，１１４は、音声のキャプチャに関連するプロファイルの組を形成している。
【００１９】
一例では、各プロファイルは、デバイスグラフィカルユーザインタフェースオプションに対応している。本明細書にわたり、例えば、各プロファイルは、グラフィカルユーザインタフェースの有り、無しのいずれの場合についても、所定の使用用途のための組み込みデバイスの製造業者の仕様に対応しうる点に留意されたい。図２に示すように、例えば、ユーザ入力を要求するＧＵＩ１３４が表示されうる。処理回路１２０は、ＧＵＩ１３４として表示するために、ＧＵＩ情報１３５をディスプレイ１３２に渡す。また、ディスプレイ１３２は、ユーザ入力などのＧＵＩ情報１３５を、処理回路１２０に返しうる。この例では、ユーザが、ドロップダウンボックスから、異なるグラフィカルユーザインタフェースオプションを選択するように求められている。例えば、ユーザは、ドロップダウンボックス２０２を使用して、ビデオ関連のデバイスグラフィカルユーザインタフェースオプションを選択しうる。この例では、ユーザは、プロファイル１０４に対応する「低品質」、プロファイル１０６に対応する「中品質」、あるいはプロファイル１０８に対応する「高品質」を選択しうる。ユーザは、ドロップダウンボックス２０４を使用して、音声関連のデバイスグラフィカルユーザインタフェースオプションを選択しうる。この例では、ユーザは、プロファイル１１０に対応する「低品質」、プロファイル１１２に対応する「中品質」、あるいはプロファイル１１０に対応する「高品質」を選択しうる。なお、デバイスグラフィカルユーザインタフェースオプションは、図に示すドロップダウンボックス、ラジオボタン、チェックボックス、テキスト入力、あるいは当業界で公知の他の任意の適切な方法などの、どのような適切な方法で提示されてもよい。ユーザがデバイスユーザインタフェースオプションを選択すると、ユーザはＯＫボタン２０６を押下して、この選択内容を、ＧＵＩ情報１３５として処理回路１２０に返しうる。
【００２０】
「低品質」などのラベルは、アプリケーション１２２のコードによって作成されても、プロファイルの一部としてメモリ１０２に記憶されてもよいことを理解すべきである。また、例えば、各プロファイルにプロファイル参照が含まれうることも理解すべきである。プロファイル参照は、例えば、プロファイルＩＤ１３６，１３８、プロファイルのラベル１４０〜１５０、または他の任意の適切なプロファイル参照などである。プロファイルＩＤ１３６，１３８は、例えば、整数などである。プロファイルのラベル１４０〜１５０は、ＧＵＩ１３４内でユーザに提示され、プロファイルに関する何らかの情報を暗黙的に伝えるテキスト文字列などである。例えば、「ビデオ低品質プロファイル」は、このプロファイルがビデオ用のプロファイルであり、「低品質」であることを伝える。「低品質」が特定のハードウェアに相対的なものであり、例えば、特定のハードウェアの「低品質」が、別のハードウェアの「高品質」よりも高品質となることもある点を理解されたい。上で説明したように、この理由は、ハードウェアデバイスによって機能が異なるためである。
【００２１】
処理回路１２０は、プロファイル１０４〜１１４を参照する、記憶済みのコンピュータ可読命令を実行するときに、パラメータ情報１１６，１１８などのパラメータ情報を使用するように動作可能である。例えば、プロファイルデータ１５２，１５４が、メモリ１０２から処理回路１２０に送られる。図１の例に示すように、ミドルウェアコード１２６にはプロファイルコンバイナモジュール１２８が含まれ、プロファイルコンバイナモジュール１２８は、少なくとも１つのプロファイルに含まれるパラメータ情報を含む合成プロファイル１５６を作成するように動作可能である。しかし、好適な実施形態では、合成プロファイル１５６は、複数のプロファイルに含まれるパラメータ情報を含む。図１に示す特定の例では、プロファイルコンバイナモジュール１２８は、プロファイルデータ１５２とプロファイルデータ１５４とを受け取る。プロファイルデータ１５２は、ドロップダウンボックス２０２で行ったユーザの選択に関連し、ビデオハードウェアに関連しており、プロファイルデータ１５４は、ドロップダウンボックス２０４で行ったユーザの選択に関連し、音声ハードウェアに関連している。プロファイルコンバイナモジュール１２８はプロファイルデータ１５２とプロファイルデータ１５４を合成し、合成したプロファイルデータ１５８をメモリ１０２に送り、これが合成プロファイル１５６として記憶される。この例では、ビデオハードウェアデバイスに関連するプロファイルデータと音声ハードウェアデバイスに関連するプロファイルデータとを合成しているが、合成プロファイルが適したものであればどのようなハードウェアデバイスに関連していてもよいと考えられる。更に、合成プロファイルに、１つのハードウェアデバイスのみのパラメータ情報が含まれてもよい。例えば、図１には、コーデック種別、ビットレートおよびフレームレート（ビデオの場合）を含むプロファイルが図示されているが、あるビデオプロファイルがビデオコーデック種別用に使用され、別のプロファイルがビデオビットレート用に使用されてもよい。この２つのプロファイルが合成され、合成プロファイルとしてメモリに記憶されてもよい。また、合成プロファイルには、新しいプロファイルＩＤなどの新しいプロファイル参照が付与される。合成プロファイルについて、以下に詳細に説明する。
【００２２】
次に、図１に示したマルチメディアデバイス１００をより深く理解するために、デバイスにおいてハードウェアを制御するための方法についてここで説明する。図１およびデバイス１００を参照するが、以下の方法を実装するために適切なデバイスであれば、どのようなものも使用することができることが理解されよう。
【００２３】
図３に示すように、本方法はブロック３００から開始する。ブロック３０２に示すように、本方法は、少なくとも１つのプロファイル参照（プロファイルＩＤ１３６または１３８など）を含むアプリケーション１２２を活性化するステップを有する。上記のように、プロファイル参照１３６，１３８は、パラメータ情報１１６，１１８を含むプロファイル（１０４，１１０など）を参照しており、デバイスグラフィカルユーザインタフェースオプション２０２，２０４に対応している。この対応は、一対一の対応でない。１つのわかりやすい例では、パラメータ情報は、グラフィカルユーザインタフェースに対応しているが、（直接的なグラフィカルユーザインタフェースを持たない場合でも）特定の使用用途のための組み込みデバイスの製造業者の仕様にも対応していてもよい。次に、ブロック３０４に示すように、本方法は、上記少なくとも１つのプロファイル参照（プロファイルＩＤ１１６，１１８など）に関連する少なくとも１つのプロファイルに含まれるパラメータ情報を使用して、ハードウェア動作を実行するステップも有しうる。このハードウェア動作は、ハードウェアデバイス１６０に関連しうる。しかし、ディスプレイ１３２が、このハードウェア動作が実行されるハードウェアデバイスであってもよい点に留意されたい。例えば、処理回路１２０は、ハードウェアデバイス１６０との間で、ハードウェアデバイス動作データ１６２を送受信しうる。ハードウェア動作の例については上で既に説明している。次に、本方法がブロック３０６で終了する。
【００２４】
しかし、この方法は、上記のステップの前、後、あるいはステップ間に、他のどのような適切なステップを有してもよい。例えば、図４に示す方法は、ブロック４００から開始し、図３に関して説明したのと同じステップ３０２とステップ３０４を有する。しかし、本方法は、ブロック４０２，４０４，４０６に示すステップも含む。ブロック４０２に示すように、本方法は、デバイスグラフィカルユーザインタフェースオプション２０２，２０４をユーザに提示し、ユーザ入力を受け取るステップを有しうる。
【００２５】
アプリケーション１２２は、ミドルウェアＡＰＩ（アプリケーションプログラミングインタフェース）１２４との間で、アプリケーションデータ１６４をやり取りする。ミドルウェアＡＰＩ１２４は、ミドルウェアコード１２６とアプリケーション１２２間のインタフェースである。ミドルウェアＡＰＩは、アプリケーション１２２が、ミドルウェアコード１２６を利用して、プロファイル（プロファイル１０４〜１１４など）を使用できるようにする少ない数の機能をサポートしている。次に、ミドルウェアＡＰＩデータ１６６が、ミドルウェアＡＰＩ１２４とミドルウェアコード１２６との間でやり取りされる。
【００２６】
ミドルウェアコード１２６は、プロファイルコンバイナモジュール１２８を含み、ブロック４０４に示すように、本方法は、１つ以上のプロファイル（例えば、１０４〜１１４）に含まれるパラメータ情報（例えば，１１６，１１８）を合成するためにプロファイルコンバイナモジュール１２８を呼び出し、この合成プロファイルに新しいプロファイル参照（新しいプロファイルＩＤなど）を割り当てうる。合成プロファイルは、デバイスグラフィカルユーザインタフェースオプションに対応してもよいが、合成プロファイルは、設計上の判断に対応しうることが理解されよう。例えば、設計上の判断は、最初は固定であるが、パラメータがプロファイルに含まれるため、パラメータを容易に変更することができる。製造業者がデバイスのコンテキスト的な使用（contextual use）に応じて、プロファイルを選択してもよいことも理解されたい。一例では、アプリケーション１２２は、ミドルウェアＡＰＩ１２４にプロファイルＩＤ１３６と１３８を渡しうる。しかし、適したプロファイル参照であれば、どのようなものを使用してもよいことが理解されよう。次に、ミドルウェアＡＰＩ１２４は、プロファイルコンバイナモジュール１２８（ミドルウェアコード１２６の一部）に、プロファイルＩＤ１３６と１３８を渡す。次に、プロファイルコンバイナモジュール１２８は、メモリ１０２からパラメータ情報１１６と１１８を取得する。
【００２７】
合成プロファイル１５６を作成する際に、プロファイルコンバイナモジュール１２８は、合成するすべてのプロファイルに含まれるパラメータ情報１１６と１１８を含む新しい合成プロファイルを作成する。例えば、一部のプロファイルが矛盾するパラメータ情報を含んでいることが考えられる。例えば、第１のプロファイルがビデオエンコーディング用のビットレートを設定しており、この第１のプロファイルが、ビデオエンコーディング用に別のビットレートを設定しているパラメータ情報を有する第２のプロファイルと合成されうる。このような場合、任意の適切な競合解決方法が実装されうる。例えば、プロファイルコンバイナモジュール１２８は、パラメータ情報が既に設定されている場合には、別のプロファイルに含まれる矛盾するパラメータ情報を無視してもよい。あるいは、プロファイルコンバイナモジュール１２８は、合成プロファイル１５６中に存在するパラメータ情報を無効にしてもよい。
【００２８】
次に、ブロック４０６に示すように、本方法は、新しいプロファイル参照（新しいプロファイルＩＤ）などを別のモジュールに渡すステップを有しうる。例えば、プロファイルコンバイナモジュール１２８は、音声／ビデオエンコード（またはデコード）モジュール１３０に、合成プロファイル参照データ１６８を渡しうる。次に、音声／ビデオエンコードモジュール１３０は、ブロック３０４に示すように、新しいプロファイル参照を使用して合成プロファイルを使用し、合成プロファイルに含まれるパラメータ情報を使用してハードウェア動作を実行しうる。本方法がブロック４０８で終了する。
【００２９】
例えば、本方法は、パラメータ情報を含むプロファイルを参照しているプロファイル参照に対応するデバイスグラフィカルユーザインタフェースオプション２０２，２０４を、ユーザに提示するステップを更に有する。次に、受け取った入力を使用して、正しいハードウェア動作が実行されうる。更に、本方法は、追加のユーザ入力を受け取り、少なくとも１つの追加のハードウェア動作を実行するために、この追加のユーザ入力に基づいて、少なくとも１つの追加のプロファイル参照をエンコーダに渡すステップを更に有しうる。例えば、ユーザは、例えば、ディスプレイなどのハードウェアデバイス１６０に、マルチメディアコンテンツ（例えば、画像、ビデオなど）を画面の右上部分に表示させるためのパラメータ情報を含むプロファイルに対応するグラフィカルユーザインタフェースオプションを選択しうる。次に、ユーザが、おそらくマウスまたはキー入力やこれらの組合せを使用して、追加のユーザ入力を入力し、これによって、アプリケーション１２２が、少なくとも１つの追加のプロファイル参照をミドルウェアＡＰＩ１２４に渡し、ミドルウェアＡＰＩ１２４が、この追加のプロファイル参照をミドルウェアコード１２６に渡す。次に、音声／ビデオエンコードモジュール１３０が、ディスプレイでの画像またはビデオの配置を変更しうる。例えば、この位置がディスプレイの左下隅に変更されたり、あるいは、マルチメディアが全画面表示されうる。
【００３０】
次に図５を参照すると、ソフトウェア開発システム５００が示されており、このシステムは、例えば、デスクトップコンピュータ、ノートブックコンピュータ、コンピュータシステムのネットワークまたは他の任意の適切な開発システムを備えうる。このシステムは、例えば、当業界で公知のように１つ以上のローカルシステムまたはリモートシステムに分散されうる。ソフトウェア開発システム５００は、例えば、ディスプレイ１３２、処理回路１２０およびメモリ１０２を備えうる。
【００３１】
図に示すように、メモリ１０２には、プロファイル１０４〜１１４などのプロファイルが格納されうるが、これは必須ではない。プロファイル１０４〜１１４は、上記のプロファイルと同様である。一例では、ハードウェアデバイス１６０の製造業者が、これらのプロファイルを作成しうる。ハードウェアデバイス１６０の製造業者は、ハードウェアデバイス１６０の仕様および機能を知る最善の立場にいるため、これが好ましい。しかし、経験豊富なプログラマが、製造業者がプロファイルを作成するのを支援してもよい。しかし、適格なプログラマがプロファイル１０４〜１１４を作成してもよいと理解される。更に、プロファイルがソフトウェア開発システム５００で作成されうるが、他の任意の適切な環境が使用されてもよいことが理解されよう。
【００３２】
メモリ１０２は、処理回路１２０によって実行可能なコンピュータ可読命令を格納しうる。処理回路１２０は、「アプリケーションジェネレータ５０２」と示されるコンピュータ可読命令を実行しうる。アプリケーションジェネレータ５０２は、デバイスグラフィカルユーザインタフェースオプション（２０２，２０４など）に対応するパラメータ情報（１１６，１１８など）を含むプロファイル（プロファイル１０４，１１０など）を識別するプロファイル参照（プロファイルＩＤ１３６または１３８など）を含むアプリケーション５０４を表すデータを生成しうる。アプリケーションジェネレータ５０２は、図に示すように、アプリケーションデータ５０６をメモリに送信し、メモリに記憶させうる。上で説明したように、メモリは分散されていても、ソフトウェア開発システム５００に搭載されていてもよい。一例では、アプリケーションジェネレータ５０２は、ソフトウェア開発システム５００にあるハードディスクドライブに、アプリケーション５０４を記憶しうる。別例では、アプリケーションジェネレータ５０２は、マルチメディアデバイス１００にアプリケーション５０４を記憶してもよい。
【００３３】
また、アプリケーションジェネレータ５０２は、ディスプレイ１３２にＧＵＩ情報１３５を送信することによって、ディスプレイ１３２で視認可能なアプリケーション生成グラフィカルユーザインタフェース（ＧＵＩ）５０８を提供しうる。図６に更に詳細に示すように、アプリケーション生成ＧＵＩ５０８は、デバイスグラフィカルユーザインタフェースオプションに対応するパラメータ情報を含むプロファイルを識別しているプロファイル参照に対応するプロファイル参照挿入オプション６０２，６０４を、サイドバー６０６内に提供しうる。また、アプリケーション生成ＧＵＩ５０８は、プログラマが、プログラムコードを挿入して、アプリケーション５０４をプログラムすることができるプログラムウィンドウ６０８も有する。このため、操作中に、プログラマが、当業界で公知のように、プログラムウィンドウ６０８を使用してコードを記述することもできるが、プロファイル参照挿入オプション６０２，６０４を使用して、アプリケーション５０４にプロファイル参照（例えばプロファイルＩＤ１３６または１３８）を挿入することもできる。
【００３４】
操作の一例では、プログラマが、ハードウェアデバイス１６０からビデオをキャプチャするためのアプリケーション５０４を開発しうる。従来技術の解決策では、プログラマは、特定のハードウェアデバイス１６０ごとに、異なるビデオおよび音声品質を記述するために、何百行もコーディングしなければならなかった。しかし、プログラマは、アプリケーション５０４にプロファイル参照を挿入することにより、本システムを使用しなければ知っていなければならないパラメータ情報を含むプロファイルに対応する必要なプロファイル参照を知っているだけでよい。プログラマは、プログラムウィンドウ６０８に、プロファイル参照（例えばプロファイルＩＤ、プロファイルのラベルなど）を直接タイプすることができる。
【００３５】
別法では、アプリケーション５０４の開発者ではない別のプログラマが、各プロファイルに対して、定数（ラベルなど）を定義する定義ファイルを設定しうる。次に、アプリケーション開発者がアプリケーション５０４の開発時に、プログラムウィンドウ６０８内でこの定数を使用して、所望のプロファイルを参照することができる。
【００３６】
更に別の例では、アプリケーションジェネレータ５０２が、メモリ１０２からプロファイルデータ５１０を受け取り、これを使用してプロファイル参照挿入オプション６０２，６０４を生成して、ディスプレイ１３２にＧＵＩ情報１３５として送信し、アプリケーション生成ＧＵＩ５０８にプロファイル参照挿入オプション６０２，６０４を提供してもよい。グラフィカルユーザインタフェースオプション２０２，２０４と同様に、プロファイル参照挿入オプション６０２，６０４は適切な形式であれば、どのような形式でもよい。例えば、図に示すドロップダウンボックス、チェックボックス、ラジオボタン、または他の任意の適切な提示方式によって表示されてもよい。一例では、ユーザがプロファイル参照挿入オプション６０２または６０４を選択すると、対応するプロファイル参照がプログラムウィンドウ６０８に挿入される。
【００３７】
他の利点のなかでも、ソフトウェア開発者が、ハードウェアデバイスと連携するソフトウェアアプリケーションを、より迅速かつ効率的に開発できるようになる。更に、ソフトウェア開発者が、特定のハードウェアデバイスの特定の機能またはパラメータに対応するために、多量のコードをタイプするのに貴重な時間を費やす必要がなくなる。
【００３８】
上記の本発明の詳細な説明および例は、限定を目的とするものではなく、例示および説明を目的として提示したものである。このため、本発明は、上記に開示し、ここにクレームする基本的な基礎をなす原理の趣旨ならびに範囲に含まれるすべての変更、変形物または均等物をカバーすることが考察される。
【図１】
0005501244.tif 000002
【図２】
0005501244.tif 000003
【図３】
0005501244.tif 000004
【図４】
0005501244.tif 000005
【図５】
0005501244.tif 000006
【図６】
0005501244.tif 000007