説明

ソフトウェアの動的な追加方法

【課題】メディアアプリケーション、取込ソフトウェアおよびデバイスドライバといったシステム処理であってメディアに関連する機能を拡張するためのメディア処理フィルタを自動的にインストールおよび起動するために提供される。
【解決手段】アドインフィルタは、フィルタ管理サービスを利用して、アドインフィルタ自体をシステムにインストールするように要求し、それ自体の機能に関連する情報をアドインマネージャに提供する。アドインマネージャは、提供された情報を用いて確認できるようにアドインフィルタをシステムにインストールする。アドインフィルタはシステム処理のいずれかによって起動される。アドインマネージャは、システム処理からの要求に応答して、システム上で使用可能なアドインフィルタを列挙する。システム処理は、列挙されたアドインフィルタを選択し、メディア処理の能力を拡張することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムのアーキテクチャに関し、より詳細には、ソフトウェアの構成要素(software components)をシステム処理(system process)に自動的に追加するオペレーティングシステムのアーキテクチャに関する。
【背景技術】
【0002】
従来、DAT(digital audio tapes)、DVD(digital video discs)、デジタルビデオカメラ(digital video cameras)やデジタルカメラ(digital still cameras)といったデジタルメディア機器(digital media devices)の普及により、コンピュータ利用者は、デジタルメディアファイルを処理および利用することができるハードウェアおよびソフトウェアの配列を増加することを望むようになってきている。多くのIHVs(independent hardware vendors:独立系ハードウェアベンダ)やISVs(Independent Software Vendor:独立系ソフトウェアベンダ)が市場に参入して、メディア機能(media functionality)の増加に対するこの要求を満足させている。そのような多くのIHVsおよびISVsの市場参入は、メディア機能とともに、多くのオペレーティングシステムやアプリケーションの開発者に難問を進呈した。例えば、IHVsおよびISVsは、コーデックや他のフィルタのための互換性の無いフォーマットを数多く作り出してきた。現在、オペレーティングシステムおよびアプリケーションは、広く用いられていない多様なフォーマットを扱う能力は限られている。
【0003】
フィルタは、ソフトウェアの構成要素であり、メディアファイル(例えば、オーディオ、ビデオ、静止画である)と共に用いられ、コーデック(coder or decorders)として動作し、効果(例えば、色彩の調整や輝度設定の調整である)を追加し、およびファイルの内容を解析(例えば、与えられた画像ファイル中の人物の数といったメタデータを抽出するためのものである)するものである。現在は、いくつかのコーデックの標準(例えば、JPEGやTIFFである)が、デスクトップパブリッシングにおいて、画像ファイルのフォーマットとして広く用いられている。殆どのオペレーティングシステム、アプリケーションおよび取込ソフトウェア(acquisition software)は、そのような広く用いられている標準フォーマットをサポートしている。例えば、マイクロソフト社のMicrosoft(登録商標) Windows(登録商標) Me およびMicrosoft(登録商標) Windows(登録商標) XPに含まれているScanner and Camera Wizardという名称の取込ソフトウェアは、スキャナおよびデジタルカメラ機器と協働し、スキャナおよびデジタルカメラ機器によって生成されるTIFFファイルをデコードおよび処理する能力を備えている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、デジタルカメラおよびスキャナといったハードウェア製造業者は、自社のハードウェア構成要素と協働するように特別に設計されたコーデックを利用することを好む。例えば、ニコン(登録商標)社は、デジタル画像をコーディングおよびデコーディングするのにTIFFの特別のバージョンとして知られるTIFF/EPフォーマットを好んで使用する。しかしながら、TIFF/EPフォーマットは、広く使用されておらずまたはオペレーティングステムもしくは画像処理アプリケーションによってサポートされていない。例えば、マイクロソフト(登録商標)社のWindows(登録商標)XPオペレーティングシステムは、画像にTIFF/EPフォーマットをサポートしていない。したがって、Windows(登録商標)XPデスクトップユーザは、別の表示アプリケーション(viewer application)をインストールしなければ、ニコン(登録商標)社のカメラから得たTIFF/EP画像ファイルをデコードして表示することができない。また、マイクロソフト(登録商標)社のImage Viewerのような画像処理アプリケーションのいくつかは、TIFF/EP標準を提供するように拡張することができない。なぜならば、これらは、TIFFファイルタイプがアプリケーションに提示されたときはいつでも標準的なTIFFデコーダを使用するように設計されているからである。現在は、これらのWindows(登録商標)XPデスクトップユーザは、TIFF/EP画像を表示させて拡張するために、彼らのWindows(登録商標)XPにTIFF/EPコーデック構成要素を追加して、TIFF/EP画像と協働するように特別に設計されたアプリケーションを使用しなければならないだろう。その結果として、オペレーティングシステムの高い柔軟性が、益々要求されてきている。IHVsおよびISVsは、彼ら独自の私有のフィルタを既存のシステム処理にアドインとして提供することによって、デバイスドライバ、取込ソフトウェアおよび他のアプリケーションといった既存のシステム処理の能力を拡張できる。IHVsおよびISVsが既存のアプリケーションまたは取込ソフトウェアの能力を拡張することを許容することは、特別のフィルタと協働する専用のアプリケーションを生成する必要を除去し、その代わりにIHVsおよびISVsがアドインとしての最高のフィルタを提供することに専念できるようにする。
【0005】
ソフトウェア開発者は、外部のエンティティによって開発されたフィルタがアドインとして使用されることにしばしば慎重である。なぜならば、アドンのフィルタ中のエラーが、彼ら自身のソフトウェア構成要素の実行に潜在的に影響を与えるからである。したがって、アドインフィルタを使用するシステムおよびアプリケーションの安全性を十分に保障するシステムおよび方法が必要である。
【0006】
典型的には、あるシステムにインストールされたフィルタ構成要素は、あるアプリケーションにバンドルされていたものか、特定の選択されたアプリケーションと協働するためにインストールされたもののどちらかである。通常、システム上のその他のアプリケーションの多くは、インストールされたフィルタの機能にアクセスできない。したがって、アドインフィルタが不特定のアプリケーションおよびデバイスドライバによっても使用されることが可能となるように、システム上の全てのプロセスがアドインフィルタを発見し(discover)使用することができるようなオープンで柔軟なアーキテクチャが必要である。
【0007】
その上、増加したメディア機能に対する要求により、複数のメディア機能を備えた多種多様なフィルタが、システムにインストールされ使用されている。したがって、システムにインストールされ使用可能なアドインフィルタを効率的に検索し列挙して、アプリケーションおよび(アプリケーションを介して)ユーザが、必要なときに適切なアドインを選択することができるシステムアーキテクチャが必要である。
【0008】
また、システムにインストールされた複数のフィルタの各々は、複数のメディア機能を持ち、いくつかのフィルタは重複した機能を有しているかもしれない。ある場合には、一または複数のフィルタは、ある種のメディアの処理に特に適しているかもしれない。ユーザまたはシステム処理は、適切なフィルタを選択する前に、フィルタの機能を発見する必要があるだろう。これを上手く成し遂げる一つの方法として、フィルタをメモリにロードしその能力を確認することが考えられる。しかしながら、これはシステムの資源を逼迫させ、フィルタのアドイン処理を長たらしく遅いものとする可能性がある。したがって、フィルタをその特徴によって分類するシステムおよび方法と、フィルタをメモリにロードすることなくその分類によってフィルタを検索、発見および列挙するシステムおよび方法がさらに必要とされている。
【課題を解決するための手段】
【0009】
本明細書中に述べるように、システムアーキテクチャおよび方法は、メディアアプリケーション、取込ソフトウェアおよびデバイスドライバといったシステム処理であってメディアに関連する機能を拡張するためのメディア処理フィルタを自動的にインストールおよび起動するために提供される。
【0010】
一側面として、本システムアーキテクチャは、あるエンティティによって提供されたアドインフィルタを、その他のエンティティによって提供された既存の処理の能力を拡張するために使用できる、オープンで柔軟なアーキテクチャである。本システムは、アドインフィルタがアドインマネージャシステムサービス(add-in manager system service)と称されるフィルタ管理サービス(filter management service)を利用して、アドインフィルタ自体をシステムにインストールするように要求することができるようにする。フィルタは、それ自体の機能に関連する情報をアドインマネージャに提供する。アドインマネージャは、提供された情報を用いて確認できるようにアドインフィルタをシステムにインストールする。アドインフィルタはシステム処理のいずれかによって起動される。
【0011】
他の側面では、アドインマネージャは、システム処理からの要求に応答して、システム上で使用可能なアドインフィルタを列挙する。そして、システム処理は、列挙されたアドインフィルタを選択し、メディア処理の能力を拡張することができる。フィルタは機能および特長による分類が可能であり、そのような分類にしたがって列挙することが可能である。一実施形態として、アドインマネージャは、システムにインストールされたいずれかの処理によってそれぞれのメディア処理の能力を拡張するために使用されるサービスである。
【0012】
さらに他の側面では、インストールの要求がされているアドインフィルタは、デジタル署名のようなセキュリティ機構と共に提供され、アドインマネージャは、そのフィルタをシステムにインストールする前に、そのデジタル署名を検証する。さらに、アドインフィルタを起動する処理は、選択されたデジタル署名が付されたフィルタのみを列挙するようにアドインマネージャに要求することができる。さらには、アドインフィルタの列挙を要求している処理とは別の処理において、選択されたアドインフィルタを使うようにアドインマネージャに要求して、エラーや欠陥のあるアドインフィルタがアドインフィルタの列挙を要求している処理の実行に影響を与えないようにすることができる。
【0013】
付加的な側面では、アドインマネージャは、複数の分類の複数のフィルタを列挙することができ、処理は、一つのチェーンの中で結合された複数のフィルタを使用して、メディアデータの連続的に処理することができる。
【0014】
本明細書中に述べられているシステムおよび方法の付加的な特徴および長所は、対応する図面を参照しながら以下に詳細に説明することによって明らかにする。
【図面の簡単な説明】
【0015】
【図1】アドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するための静的な方法を示すブロック図である。
【図2】アドインフィルタを自動的にインストールして使用することによって、システム処理におけるメディア機能を拡張するための動的な方法を示すブロック図である。
【図3】動的にかつ自動的にアドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するための方法を示すフローチャートである。
【図4】動的にかつ自動的にアドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するためのアドインマネージャサービスを含むシステムアーキテクチャを示すブロック図である。
【図5】システムにおいてアドインフィルタをインストール、発見および列挙する方法を備えたアドインマネージャのインタフェースのプログラム例である。
【図6】システムにおいて、アドインフィルタが自動的にインストールされ、後にシステム処理によって起動される方法を説明するフローチャートである。
【図7】システムにおいて、アドインマネージャサービスがアドインフィルタの列挙の要求を処理する方法を説明するフローチャートである。
【図8】システムにおいて、アドインマネージャサービスが与えられた基準に従ってアドインフィルタの列挙の要求を処理する方法を説明するフローチャートである。
【図9】システム処理がアドインマネージャによって列挙されたアドインフィルタの1または複数を選択して、選択したフィルタを使用してメディアを処理する能力を拡張する方法を説明するフローチャートである。
【図10】メディアを処理する能力を拡張システム処理によって選択されたアドインフィルタが、システム処理からの起動に応答する方法を説明するフローチャートである。
【図11】アドインフィルタによって提供されるユーザインタフェースであって、処理のための1または複数のパラメータをユーザから取得するユーザインタフェースである。
【図12】フィルタオブジェクトを起動する処理から不信なフィルタを分離することによって、アドインフィルタを起動する処理のセキュリティを確保する方法を示すブロック図である。
【図13】信頼できるフィルタオブジェクトがシステム処理の中で起動される方法を示すブロック図である。
【図14】メディアデータを連続的に処理するために一つのチェーンの中で結合されたアドインフィルタを示す図である。
【図15】メディアデータの選択された部分を受け取り、受け取った部分を処理し、処理した部分を出力し、他方でメディアデータの複数の部分を受け取り続けるアドインフィルタを示す図である。
【図16】複数の機能を備えた複数のアドインフィルタが、メディアファイルの一部を連続して処理することを説明する図である。
【発明を実施するための形態】
【0016】
(概略)
フィルタは、メディア(例えば、オーディオ、ビデオおよび画像)の処理に使用されるソフトウェア構成要素である。フィルタは、コーデック(coder or decoder)、解析フィルタ(analysis filters)または機能強化フィルタ(enhancement filters)である場合がある。コーデックの例には、ビデオのためのMPEG、デジタル静止画のためのJPEGまたはTIFF、およびオーディオファイルのためのWAVまたはAVIが含まれる。コーデックは、主としてネットワークにおける転送の効率化を目的としてメディアファイルを圧縮するために使用されている。機能強化フィルタは、エフェクト(effects)とも称され、主としてデータを改良して画像の一部を変化させることによりメディアファイルに強調効果(enhancement effects)を加えるため、または別の目的のためにデータを変化させるために(例えば、ある画像フィルの輝度設定の機能を強化や、オーディオファイルのノイズの低減である)使用される。解析フィルタは画像ファイルからデータ(例えば、ある画像ファイルにおける背景色といったメタデータ)を抽出する。多くのフィルタがオペレーティングシステムソフトウェア(例えば、マイクロソフト(登録商標)社のWindows(登録商標)XP)またはメディア処理アプリケーション(例えば、Adobe(登録商標)社のPhotoshop(登録商標))に標準添付されて提供されている。しかしながら、典型的なオペレーティングシステムのプラットフォームまたはアプリケーションによって提供されていない特殊な用途を提供する無数のフィルタが存在する。とりわけ、以下に述べられているシステムアーキテクチャおよび方法は、アドインとして追加されたフィルタが既存のシステム処理の能力を拡張する、オープンで柔軟なアーキテクチャを提供する。
【0017】
図1は、特定のタスクを達成するためのアドインを提供することによって、システムの能力を拡張するための静的な方法を図示する。このようなシステムにおいては、処理110(例えば、デバイスドライバ、アプリケーションまたは取込ソフトウェア)は、システムレジストリ120に登録されている使用可能なアドインフィルタ125を知っている必要がある。そして、処理110は、特定のアドインフィルタオブジェクト125を選択することができ、エディタ130(例えば、マイクロソフト(登録商標)社のFilter Graph Editorである)を使用して組込のフィルタ140のような他の部品とともにフィルタ125を追加してメディアファイルを処理し、それを出力対象150(例えば、ディスプレイ、スピーカ、またはファイル)に提供することができる。このような方法は、アプリケーション自体がアドインフィルタ125の存在を知得しているということに依存し、既存のフィルタ125の有効性を発見するためにレジストリ120を照会する多数のコードをアプリケーション自体の内部に持つこととなる。このことは、アプリケーション開発者に多大な負担を背負わせることになる。アプリケーション開発者は、アドインフィルタのデータの照会および処理を担うコードをアプリケーションに付加することを要求されるからである。
【0018】
(アドインフィルタの動的インストール及び起動のためのシステムおよび方法の典型的全体像)
図2は、アドインフィルタ245を用いてシステム処理210の能力を拡張するためのより動的で柔軟なシステム200を図示する。このようなシステムにおいては、システムサービスは、ここではアドインマネージャ220と称され、構成要素オブジェクト(component object)(例えば、マイクロソフト(登録商標)Windows(登録商標)プラットフォームにおけるComponent Object Modelオブジェクトである)として提供されて、処理210とアドインフィルタ245の間のノードとして提供されて、全システムにアクセスできる。したがって、一方では、アドインフィルタ245は、アドインマネージャ220を使用してそれ自体をシステムの240部分にインストールし、処理210に対して有効とすることができる。他方では、アドインマネージャ220は、フィルタ245のようなアドインフィルタを発見し(discover)、列挙(enumerate)、およびインタフェースを提供するために処理210によって使用される。処理210は、アドインフィルタ245をメディアファイルの処理をする組込フィルタ260とともに追加して、その結果を出力対象270に提供するためにエディタ250を使用することができる。アドインフィルタのインストールと提供のための別々のシステムサービスを提供することは、処理210が集中的なタスクのコードを扱う負荷を軽減するだけではなく、アドインマネージャ220を呼び出すことが可能なシステム上の全ての処理に対してそのようなサービスを有効にする。
【0019】
さらに、アドインマネージャ220を含むシステム200全体は、エラーを起こしやすい、不信なまたは不真正なフィルタがシステムを破壊すること、もしくはアドインフィルタ245を使用する処理210内でエラーを起こせないことを保障する信頼性のあるセキュリティモデルを提供する。例えば、アドインマネージャ220は、225においてシステムにインストールまたはする前に、アドインフィルタ245を検証するために使用されることができる。また、アドインマネージャ220は、アドインフィルタ245に含まれるエラーが処理210に影響を与えないように、処理210を215においてアドインフィルタ245から分離するために使用されることもできる。システム200におけるこれらおよび他の側面については以下の詳細の中で補足して述べる。
【0020】
図示されたシステムアーキテクチャの全体200およびアドインマネージャ220は、システム処理210の能力を拡張するアドインフィルタを動的にインストールおよび起動する方法を実施するために使用されることができる。図3は、その処理の一つを図示する。310において、アドインマネージャは、システムに関連する1または複数の処理によって起動されるアドインフィルタをシステムにインストールするために使用されることができる。その後に320において、アドインマネージャ220は、システム処理によって使用されるアドインフィルタを動的に起動するために使用されることができる。例えば、アドインマネージャ220は、要求を生成すること、および特別の問合せの基準(query criteria)に合ったフィルタのリストとともにアプリケーションを提供することに使用されることができる。アプリケーションは、フィルタのリストから選択することができ、選択されたフィルタが特別のタスクを達成するためにアプリケーションに提供されることができる。
【0021】
(システム上の処理が、アドインフィルタをインストールし起動することができるシステムサービスを有する典型的なシステムアーキテクチャ)
図4は、アドインフィルタをインストールし起動するシステムサービスを備えたシステムアーキテクチャを図示する。詳細には、図4は、システムの全ての処理がアドインフィルタを発見(discover)し使用することを可能にするシステムサービスを備えたシステムアーキテクチャを図示する。処理は、デバイスドライバ430(例えば、特定のスキャナのデバイスドライバ)、ハードドライブ490に格納する前にデバイスからのデータを処理するために用いることができる取込ソフトウェア、取込ユーザインタフェース425および一般的なアプリケーション410を含むことができる。アドインマネージャ440は、システムに開かれたサービスであって、これらの全ての処理(例えば、430,420,410および425)からアクセスされることができる。また、アドインフィルタは、IHVs、ISVsまたはサードパーティベンダから提供されることがきる。したがって、サードパーティベンダにから提供された信頼できるフィルタは、IHVから提供されるドライバまたはISVから提供されるアプリケーションを拡張するために使用されることができる。この柔軟性は、ユーザがデスクトップをカスタマイズしてシステムにおけるメディア機能を増やすことを許容する。
【0022】
デバイスドライバ430の能力は、アドインマネージャ440を使用して、システム内で有効なアドインフィルタ455を列挙し、列挙されたフィルタの内から特定のタスクに使用可能な1または複数のフィルタを選択することによって拡張される。ドライバ側470のアドインフィルタは、何らアドインについてのユーザの知識を必要とすることなく、メディアデータの処理に使用されることができる。例えば、スキャナメーカは、特定のモデルが色付紙を暗い影を帯びてスキャンすることに気づいたとき、ユーザの知識や介在を必要とすることなくそのような欠陥を自動的に修正するドライバサイド470のアドインフィルタ455を提供することができる。
【0023】
さらに、典型的なデバイスドライバ430は、メディアデータをデバイス(図示しない)からアプリケーションまたはオペレーティングシステムに転送することおよび転送されたデータを処理することに関連したタスクを実行する。データをデバイスとシステムの間で転送することだけに関連するドライバ430の構成要素は、典型的には、異なるモデルのデバイス間で同じである。しかしながら、異なる効果または機能強化のフィルタが、異なるモデルのデバイスドライバの中で使用されることができる。メディアデータを処理することに関連するドライバ430の構成要素は、アドインフィルタ455として実装されることができて、アドインマネージャ440を使用して、必要なときだけドライバから起動される。したがって、柔軟なシステムアーキテクチャ400は、IHVまたはドライバの開発者が多様なデバイス間で共有する特別のフィルタなしで標準的なドライバを提供すること可能とし、そして特定のモデルに依存した部品を標準的なドライバを拡張するためのアドインとして提供することを可能とする。また、改良または拡張された機能は、全く新しいバージョンのデバイスドライバを提供する代わりに、アドインとして提供することができる。これによってドライバの修繕のためのコストが大幅に削減される。
【0024】
さらには、IHVは、アドインマネージャ440を組込またはシステム標準のフィルタに類似する機能を置換するために使用することができる。例えば、マイクロソフト(登録商標)社のWindows(登録商標)XPプラットフォームのスキャナ取込ソフトウェアは、スキャナの文書送りローラを読取イメージの部分として認識する。現在、ユーザは、読取ったイメージからローラが含まれない範囲を指定することで、手動でこれを修正しなければならない。しかしながら、IHVは、組込フィルタを置換して自動的にローラを読取イメージから除去するためのアドインフィルタを提供するためにアドインマネージャを使うことができる。
【0025】
取込ソフトウェア420(例えば、マイクロソフト(登録商標)社のScanner and Camera Wizard)は、典型的には、デバイスからシステムまたはその逆に転送するときに、メディアデータを処理するために使用される。取込ソフトウェア420は、上述のデバイスドライバ430と同様の方法で、アドインマネージャ440を使用してそれ自体の機能を拡張することができる。現在、IHVは、オペレーティングシステムに組み込まれた標準的な取込ソフトウェアによって通常サポートされない特別のフィルタと協働する独自の取込ソフトウェアを提供しなければならない。しかし、システムのアーキテクチャ400では、オペレーティングシステムの組み込まれた取込ソフトウェア(例えば、マイクロソフト(登録商標)社のScanner and Camera Wizard)は、アドインである特別のフィルタを使用することで拡張されることができる。したがって、IHVは、既存の取込ソフトウェアの機能を置換するというよりもむしろ追加することができる。
【0026】
同様に、アプリケーションもまた、アドインマネージャ440を使用して、機能を拡張するためにシステムで有効なアドインフィルタ465を発見(discover)、列挙(enumerate)、選択および使用することができる。したがって、アドインマネージャ440がシステムサービスとして実装されているときは、メディア処理のさまざまなレベル(例えば、ドライバ側470、取込側475、アプリケーション側480)で、さまざまな処理(例えば、アプリケーション410、取込ソフトウェア420、およびデバイスドライバ430)の機能を増やすことができる。
【0027】
図4における、システムのメディアデータの典型的な処理のレベル(例えば、ドライバ側470、取込側475、アプリケーション側480)の区分は、アドインマネージャ440が種々のソフトウェアの構成要素を拡張するために使用されることができるシステムサービスの概念を単に図示するに過ぎない。同様に、アドインフィルタ455および465をアプリケーションのアドイン460および取込のアドイン450に分離しているのは単なる図解のためであり、システムの本来の機能としての本質的部分ではない。
【0028】
(アドインフィルタをインストールし起動するための典型的なシステムサービス)
図5乃至8を参照して、アドインマネージャ440について詳しく述べる。アドインマネージャ440は、オブジェクト(例えば、オブジェクトモデルの構成要素)として実装されていて、デバイスドライバ420またはアプリケーション410のようなシステム処理によって具体化される。一般的に、アドインマネージャ440は、システムで有効なアドインフィルタ455および465をインストールすることおよび列挙することについて責任を負う。図5は、アドインマネージャ440の典型的な実施例を示すものであり、処理が機能を拡張することができるメソッド、およびフィルタ開発者が自己のフィルタをインストールするために使用することができる様々なメソッド)を示している。
【0029】
アドインフィルタ455および465のようなアドインフィルタは、その機能によって分類でき、アドインマネージャは、その分類によってフィルタを検索することができる。以下は、フィルタの機能に基づく標準的な分類として可能なリストであり、芸術的(Artistic)、芸術的効果(Artistic Effects)、ぼかし(Blur)、ぼかし効果(Blur Effects)、色彩(Color)、色彩効果(Color Effects)、強調(Sharpen)、強調効果(Sharpen Effects)、ノイズ(Noise)、ノイズ効果(Noise Effects)がある。システムは、このような標準的な分類の下に登録された沢山のフィルタを有することができ、1以上のフィルタが何れかの分類に属し、一つのフィルタは1以上の分類に属することができる。しかしながら、ときどき、標準的な分類の一つに類別することができないフィルタがある。このような場合には、メソッド510が使用され、分類IDと称される固有の識別子(例えば、GUID(Global Unique Identifier))、フィルタの名称および機能の詳細を与えることによって個別の分類が追加される。一度フィルタが分類されて登録されると、メソッド520は、システムで有効なフィルタの少なくとも一つを有する全ての分類を列挙するために使用されることができる。また、メソッド520を修正して、システムに認識されている全ての分類を簡単に列挙するように、またはシステムが定義した分類だけを列挙するようにすることもできる。さらに、アドインマネージャ440は、分類を削除する方法も提供する。例えば、メソッド530は、分類と結びついている固有の識別子の入力に基づいて分類を削除する。メソッド530を使用して分類を削除することは、単に分類を削除するのみではなく、削除した分類と結びついたフィルタの全てを削除することも可能である。したがって、アドインマネージャ440は、フィルタが属する分類に基づき、フィルタの追加、列挙および削除を管理する能力を持ち、このことは、フィルタ単位で管理するのと比べてより早くより効率的である場合がある。
【0030】
アドインマネージャ440を使用すると、分類の代わりに個々のフィルタを検索して列挙することによって提供された細目の付加的レベルとすることが可能である。メソッド540は、システム処理が特定の分類に属する全てのフィルタを列挙するために、使用されることができる。メソッド540の呼び出しは、固有のIDを用いて分類を指定する必要がある。また、フィルタ開発者は、メソッド550を使用して、分類のID、フィルタID、名称およびフィルタの機能の説明を与えて新しいフィルタをインストールすることができる。さらに、メソッド560は、メソッド560の呼び出しが特定したフィルタIDに対応するフィルタを削除するために使用されることができる。さらに、メソッド570は、システム処理が特定のフィルタおよびデバイスに関する情報を取得し、処理能力を拡張するために使用できるか否かを決定するために使用されることができる。
【0031】
システムのセキュリティを確認するために、分類を削除するメソッド(530)またはフィルタを削除するメソッド(560)を呼び出す処理は、適切なセキュリティ上のトークン(token)とともにアドインマネージャ440を提供する必要があるかもしれない。フィルタ(例えば、ドライバに関連するフィルタであって特定のデバイスと協働するように設計されているフィルタ)の開発者は、特定のデバイスまたはアプリケーション用の特定の独自の分類または固有のフィルタを使用することを制限するために、つまり他のアプリケーションまたは他のデバイスによるフィルタの使用を防止するためにアドインマネージャ440を使用することもできる。
【0032】
(アドインフィルタをインストールしてシステム処理によって動的に起動される典型的な処理)
上述した図5に関連する説明は、システムにフィルタをインストールするメソッド550について論じたものである。図6は、フィルタと他の付加的な詳細を伴ってインストールする処理を図示したものである。フロー610において、システムは、システムにインストールするアドインを受け取る。アドインフィルタは、ソフトウェアの構成要素のオブジェクトの場合があり、デバイスドライバに関連してまたは新しいアプリケーション等のインストールに伴って提供されることができる。また、ネットワークに接続されているサーバにアドインフィルタを送信可能な状態に置くことができて、ユーザは、都合のよいようにサーバにアクセスしてアドインフィルタをダウンロードできる。アドインフィルタを受け取る方法は何であっても、フィルタの開発者は、上述したとおり自己のフィルタをシステムにインストールするためにアドインマネージャインタフェース(例えば、図5)に慣れていなければならない。したがって、フロー620では、アドインフィルタは、アドインマネージャインタフェースを使用して、フィルタのインストールを開始するアドインマネージャからの呼び出しに応答する。フィルタは、アドインマネージャに分類ID、フィルタID、名称および説明を与える。そしてフロー630では、アドインマネージャは、追加されようとしているフィルタが真正なフィルタであることを検証する。追加されようとしているフィルタは、アドインマネージャが信頼できるかどうかを認識するためのデジタル署名と共に提供される。フロー640において、署名が適切なものでなければ、フロー650で、アドインマネージャは、そのフィルタを追加することを拒絶する。しかし、フロー640で署名が適切なものであれば、追加されようとしているフィルタは信頼できるということを検証される。そしてフロー660において、アドインマネージャは、アドインフィルによって提供されたパラメータを使用して、システムにフィルタをインストールする。もし、追加されようとしているアドインフィルタが標準的なフィルタの分類または既にシステムに知られた分類に属さない場合には、アドインマネージャに対する呼び出しは、インストールする前にそのフィルタと結びついた何かを登録するための分類を追加(メソッド510)する必要がある。
【0033】
(システム上のアドインフィルタを列挙するための検索の典型的な処理)
図6を参照して上述したように、一度フィルタがインストールされると、それらのフィルタは、列挙されてシステム処理の能力を拡張するために提供されることができる。図7および8は、そのような処理の全てを説明する。フロー710において、アドインマネージャは、システム処理からシステムで有効なアドインフィルタであって、呼び出し処理によって提供される基準に合致するフィルタのリストの列挙の要求を受けとる。一度、アドインマネージャが列挙の要求を受け取ると、フロー720において、アドインマネージャは、アドインフィルタのリストを列挙することによって要求に応答して、アドインフィルタのリストが呼び出し処理に提供される。
【0034】
列挙されるフィルタの選択の基準は、1または複数のフィルタの分類に属するフィルタのリスト(例えば、メソッド540)と同じく単純であってもよい。またその基準は、特定の信頼できる要素と結合したデジタル署名が付されたフィルタの列挙を要求するようなより精巧であってもよい。図8は、典型的な基準の組み合わせに基づいてシステムで有効なアドインフィルタを列挙する処理を図示している。フロー810において、アドインマネージャは、処理からのアドインフィルタの列挙の要求受け取る。フロー820において、アドインマネージャは、処理からの要求において特定された分類に属する全てのフィルタを識別する。その後、フロー830において、アドインマネージャは、選択したフィルタが要求をしている処理によって特定された1または複数のデジタル署名を有するか確認する。例えば、マイクロソフト(登録商標)社のアプリケーションは、マイクロソフト(登録商標)社が検証して許可したデジタル署名を有するアドインフィルタのみを使用することを望むことができる。詳細には、フロー840において、アドインマネージャは、選択されたフィルタがそのフィルタに付けられた有効期限を超過していないことを確認する。システムにロードされたフィルタがトライアル版であってユーザがまだそのフィルタの正規のライセンスを購入していない場合に、これは便利である。このようにして、フロー850において、プロセスによって特定された全ての基準(例えば、分類ID、適切なデジタル署名、有効期限)に適合したフィルタだけが列挙される。より精巧な基準は、インストールされたフィルタの名称または説明に依存することもできる。しかし、列挙の処理は、フィルタを敷衍すればするほど非効果的となる。また、1または複数の基準は、アドインマネージャ、アドインフィルタおよびオペレーティングシステムによって組み合わされることがある。
【0035】
(システム上で有効なアドインフィルタを選択して使用する典型的な処理)
一度、アドインマネージャが、処理からの要求に対する応答の中でフィルタのリストを列挙すると、処理は、その処理自体の能力を拡張するためにアドインフィルタを使用できる。図9に示すように、フロー910において、アドインフィルタの列挙の要求をしている処理は、アドインフィルタを列挙したリストまたはテーブルを受け取るまたはアドインフィルタを列挙したリストまたはテーブルにアクセスする。そして、フロー920において、列挙の要求をしている処理は、有効なアドインフィルタの1または複数を選択する。そして、フロー930において、列挙の要求をしている処理は、選択したアドインフィルタのオブジェクトへのインタフェースポインタを受け取る。そして、フロー940において、その処理は、フィルタを起動するためにアドインフィルタへのインタフェースおよびそれに関連した方法であって選択したメディアデータを処理する方法を使用する。処理が直接フィルタを起動する変わりに、アドインマネージャにフィルタの起動の要求または指示をすることは、有利な場合がある。このことは、処理が、そのフィルタ処理と分離してアドインフィルタを使用することを要求することを認め、これにより、フィルタ内部のエラーに対して脆弱になる傾向を小さくする。
【0036】
フィルタを列挙したリストは、アプリケーションまたは取込ソフトウェアのユーザインタフェースを介してユーザに表示されることができ、アプリケーションまたは取込ソフトウェアのユーザインタフェースは、ユーザがリストからフィルタを選択することができるようにする。しかし、リストをユーザに提供することは、いつも必要または有用というわけではない。このような場合、アプリケーションまたは他の処理は、アドインフィルタを列挙したリストから自動的に選択することもできる。
【0037】
一度、処理がメディアデータを処理するために選択したアドインフィルタを起動すると、処理またはアドインマネージャ(場合によって)は、フィルタ自体に処理の制御を引き渡すことができる。図10に図示するように、フロー1010において、アドインフィルタは、ユーザがメディアデータの処理のパラメータを入力するためのユーザインタフェースを提供することができる。図11は、拡散(diffuser)効果のフィルタのためにユーザが定義したパラメータを入力することに関連したユーザインタフェースの一例を図示する。他には、フィルタの機能が、ユーザの入力を何も要求しないまたは処理のパラメータ(例えば、ある解析フィルタは、メディアデータのみを入力として要求し、1または複数のメディアデータを出力として提供する)さえ何も要求しない場合がある。フロー1020において、アドインフィルタは、メディアデータを処理するために特定されたパラメータを使用する。フロー1030において、アドインフィルタは、アドインフィルタを起動している処理またはその他のフィルタへ処理したデータを提供し、メディアデータの処理が継続される。処理されたデータは、ディスプレイやスピーカのような出力対象へ提供される。
【0038】
(アドインフィルタをインストールおよび起動するための典型的なセキュリティモデル)
図4に示すシステムのアーキテクチャは、オープンかつ柔軟であって、アドインフィルタを使用してシステム処理が能力を拡張することができるシステムアーキテクチャである。これは、ユーザがカスタマイズしたメディアの処理の構成要素をデスクトップに追加することをオープンかつ柔軟なアーキテクチャが許容するという範囲において有利である。しかし、これはまた、ISV、IHVまたはサードパーティによって提供されたアドインフィルタに内在するかも知れないエラーまたはバグに対してシステムを脆弱にする。オペレーティングシステムソフトウェアまたはアプリケーションのメーカーは、ユーザが第三者によって提供された部品を使って処理を拡張することを許容して、セキュリティ上のリスクが増加することに対して常に注意深くいなければならない。しかしながら、上述したように、これらの脅威のいくつかは、セキュリティ上の規則を遵守しているか(security compliance)を検証することができるデジタル署名と共にアドインフィルタを提供するように要求することによって解決できる。例えば、アドインマネージャは、全てのアドインフィルタに1または複数の許可されたデジタル署名の提供を要求するように設定することができる(例えば、フロー630を参照)。また、アドインフィルタがシステムにインストールされることを認められた後であっても、アドインフィルタを要求している処理は、付加的なセキュリティの基準を特定して、アドインマネージャに対してその基準に適合するフィルタのみを選択肢として列挙するようにすることができる(例えば、フロー830を参照)。
【0039】
さらには、図12および13は、機能を拡張するために使用されるアドインフィルタ内部のエラーおよびバグから処理を保護するための他のセキュリティ機構を図示する。図12を参照すると、処理1210は、利用可能なアドインフィルタ1230のリストの列挙をアドインマネージャ1220に要求することができる。また処理は、個々のアドインフィルタに結び付けられているデジタル署名の確認をアドインマネージャ1220に要求することもできる。1または複数の正式に認められたデジタル署名を提供できないフィルタは、選択されたフィルタ1250、1251および1252が処理1210の外で使われるようにするためにサンドボックス(sandbox)1240へ置かれる。したがって、処理1210は、選択されたフィルタ1250、1251および1252から孤立されることができ、これらのフィルタ内部のエラーおよびバグが、処理1210の実行中の失敗を引き起こすことができなくなる。しかしながら、処理1210は、フィルタ1250、1251および1253の出力を受け取ることができる。
【0040】
図12に示したサンドボックスのアプローチは、メディアファイルを処理するスピードを著しく低下させる結果を生む。したがって、一定の環境下では、フィルタが処理1210自体の中で使用されることが有益であるかもしれない。図13は、プロセス1310の中で起動され使用される選択されたアドインのオブジェクト1320を図示する。典型的にこれは、より高速の処理に結びつくが、アドインフィルタ1320中のエラーの結果として処理1310が失敗する危険をももたらす。したがって、アドインマネージャ1340は、認められたデジタル署名を提示するフィルタ1320のみが処理1310中で起動され使用されるように、アドインフィルタのデジタル署名を確認するために使用されることができる。そうでなければ、アドインフィルタは、図12に示すように処理1310の外に配置されるかもしれない。例えば、アプリケーションがアドインマネー1340からフィルタの信頼性の検証結果を受け取った場合には、アプリケーション処理1310は、アプリケーション自体のユーザインタフェースを介して起動されるフィルタをロードすることができる。このような取り決めは、他者の開発したアプリケーションの中で使用されるときに、フィルタの開発者が自己のブランドを広告することを許容するだろう。
【0041】
(システム処理の能力を拡張するために動的に使用されるアドインフィルタの典型的な特徴)
処理の能力を拡張(図4に示すシステムアーキテクチャによって可能となる)するためにアドインマネージャによって使用されるアドインフィルタは、アドインマネージャおよびシステム処理と効果的に協働するために一定の標準的な機能を有する必要があるかもしれない。例えば、アドインフィルタは、複数の入力の型(type of input)を受入れ、複数の出力の型(type of output)を提供することができる。そのようなフィルタのひとつは、複数の画像を得てひとつの出力画像を生成することができるステッチ(stitching)フィルタがある。また、文書読み取り(document scanning)フィルタは、ひとつのイメージを得て画像およびテキストといった複数の型の出力を生成することができる。画像以外の出力データを提供するフィルタの例は、注釈生成(annotation generator)フィルタおよび画像測量(image measurement)フィルタを含む。注釈生成フィルタは、画像中の日付印から日付データといったデータまたは画像中に人物がいるかいないかといったデータを抽出することができるだろう。画像測量フィルタは、ヒストグラムを生成することまたは読取画像のプレビューの方向を測定し読み取りのためのパラメータを設定することができる。
【0042】
さらに、アドインフィルタは、他のフィルタオブジェクトから入力を得る能力およびその他のフィルタオブジェクトへ出力を提供する能力も備えているべきであろう。図14に示すように、アドインフィルタ1410、1420および1430はひとつのチェーンの中で結合されることができ、メディアデータ1440が複数のフィルタ1410、1420および1430によって一度によって処理されることができる。そうしなければ、それぞれのアドインフィルタ1410、1420および1430は、それぞれ個別に処理されて出力され、再びその他のフィルタによって処理されなければならない。これは時間を消耗するだろう。チェーンの中で結合されることができるフィルタの能力によって、アドインマネージャは、いくつかのフィルタを列挙することができ、そして、アプリケーションは、能力を拡張するために一度に多様な効果のフィルタを選択することができる。
【0043】
アドインフィルタのもっと他の特徴は図15に示されている。一般的にフィルタは、入力されたメディアデータの全体の一部のみを処理する能力である。例えば、画像処理を考慮すると、アドインフィルタ1510のようなフィルタは、画像の全体の一部(例えば、座標によって特定されている)を得て、選択された部分を処理し、そして出力対象1530にそれを出力する能力である。この方法では、画像の一部がフィルタを介してアプリケーションによって操作されたとき、画像の一部が効果によって変更されていても、元の画像のビュー(view)は保持できる。これは、アプリケーションがアドインの効果の瞬間的なビューをユーザに提供することを許容する。例えば、もし効果が希望したものでなかった場合、アドインの選択を取り下げられることもできる。図15はこのフィルタの特徴を図解するために画像のフィルタの例を使用したけれども、他のメディア(オーディオまたはビデオ)は、それぞれのフィルタの型を用いて同じ方法で処理されることができる。
【0044】
図16に図示するように、ひとつのチェーンの中で結合しているフィルタの機能(図14参照)およびメディアファイルの一部を処理する機能は、組合わされてひとつのチェーンの中で複数のフィルタと結合することができ、入力されたファイルが処理されている間にアドインフィルタの効果を見たり聞いたりすることができる。例えば、1610における画像全体の一部は、1620において範囲指定(scale)され、そして1650において画像を出力する前に、1630において選択された部分がネガテ(negate)され、赤目(red-eye)を取り除かれる。
【0045】
(代替の実施形態)
方法およびシステムは、システムサービスであるアドインマネージャ、アドインフィルタおよびシステム処理といったいくつかのシステムの構成要素の機能を述べる。これらのいずれかに帰する機能および上述した他の構成要素に帰する機能は、これら以外の関連するいずれかの構成要素によっても、そのようにプログラムすれば、実施することができると理解されるべきである。
【0046】
また、例示は、特定の型のメディア(例えば、ビデオ、オーディオ、画像等)の処理について論じているが、しかし、その例の根底にある概念は、メディアデータの全てのフォーマットも同等に適用できる。多くの実施可能な形態を考慮するに際しては、図示された実施例が単なる例であると認識されて、そして発明の範囲を限定するものと捉えられるべきではない。むしろ、発明は特許請求の範囲によって定められている。したがって、我々は、特許請求の範囲に含まれるすべの実施形態を本発明として主張する。
【符号の説明】
【0047】
110 処理
120 システムレジストリ
125 選択されたアドインフィルタ
130 エディタ
140 組込みフィルタであるコーデック
150 出力対象

【特許請求の範囲】
【請求項1】
コンピュータシステムにインストールされたフィルタに関連したメディアを列挙するオペレーティングシステムサービスを有するコンピュータ上で実行可能な、コンピュータシステム処理に関連した拡張可能なメディアをカスタマイズする方法であって、
前記オペレーティングシステムサービスに、前記コンピュータにインストールされたフィルタに関連したメディアを列挙する要求をすること、
フィルタに関連した列挙されたメディアの1または複数を選択すること、
前記フィルタに関連した選択したメディアをデータに関連したメディアの処理に使用すること
を備えることを特徴とする方法。
【請求項2】
前記システム処理が、選択したフィルタに関連したメディアを使用することについて正当な権限を有しているか確認することを更に備えることを特徴とする請求項1に記載の方法。
【請求項3】
請求項1に記載の方法を実行するためのコンピュータ実行可能な命令を記録したコンピュータ読み取り可能媒体。
【請求項4】
請求項1に記載の方法であって、前記システム処理は、
ソフトウェアアプリケーションを処理するメディア、
デバイスドライバ、および
取り込みソフトウェアに関連したメディア
のいずれか1つであることを特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2010−55640(P2010−55640A)
【公開日】平成22年3月11日(2010.3.11)
【国際特許分類】
【出願番号】特願2009−277870(P2009−277870)
【出願日】平成21年12月7日(2009.12.7)
【分割の表示】特願2003−363740(P2003−363740)の分割
【原出願日】平成15年10月23日(2003.10.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】