(57)【要約】【課題】メディアアプリケーション、取込ソフトウェアおよびデバイスドライバといったシステム処理であってメディアに関連する機能を拡張するためのメディア処理フィルタを自動的にインストールおよび起動するために提供される。【解決手段】アドインフィルタは、フィルタ管理サービスを利用して、アドインフィルタ自体をシステムにインストールするように要求し、それ自体の機能に関連する情報をアドインマネージャに提供する。アドインマネージャは、提供された情報を用いて確認できるようにアドインフィルタをシステムにインストールする。アドインフィルタはシステム処理のいずれかによって起動される。アドインマネージャは、システム処理からの要求に応答して、システム上で使用可能なアドインフィルタを列挙する。システム処理は、列挙されたアドインフィルタを選択し、メディア処理の能力を拡張することができる。【選択図】図２
2010055640.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにインストールされたフィルタに関連したメディアを列挙するオペレーティングシステムサービスを有するコンピュータ上で実行可能な、コンピュータシステム処理に関連した拡張可能なメディアをカスタマイズする方法であって、
前記オペレーティングシステムサービスに、前記コンピュータにインストールされたフィルタに関連したメディアを列挙する要求をすること、
フィルタに関連した列挙されたメディアの１または複数を選択すること、
前記フィルタに関連した選択したメディアをデータに関連したメディアの処理に使用すること
を備えることを特徴とする方法。
【請求項２】
前記システム処理が、選択したフィルタに関連したメディアを使用することについて正当な権限を有しているか確認することを更に備えることを特徴とする請求項１に記載の方法。
【請求項３】
請求項１に記載の方法を実行するためのコンピュータ実行可能な命令を記録したコンピュータ読み取り可能媒体。
【請求項４】
請求項１に記載の方法であって、前記システム処理は、
ソフトウェアアプリケーションを処理するメディア、
デバイスドライバ、および
取り込みソフトウェアに関連したメディア
のいずれか１つであることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのアーキテクチャに関し、より詳細には、ソフトウェアの構成要素（software components）をシステム処理（system process）に自動的に追加するオペレーティングシステムのアーキテクチャに関する。
【背景技術】
【０００２】
従来、ＤＡＴ（digital audio tapes）、ＤＶＤ（digital video discs）、デジタルビデオカメラ（digital video cameras）やデジタルカメラ（digital still cameras）といったデジタルメディア機器（digital media devices）の普及により、コンピュータ利用者は、デジタルメディアファイルを処理および利用することができるハードウェアおよびソフトウェアの配列を増加することを望むようになってきている。多くのＩＨＶｓ（independent hardware vendors：独立系ハードウェアベンダ）やＩＳＶｓ（Independent Software Vendor：独立系ソフトウェアベンダ）が市場に参入して、メディア機能（media functionality）の増加に対するこの要求を満足させている。そのような多くのＩＨＶｓおよびＩＳＶｓの市場参入は、メディア機能とともに、多くのオペレーティングシステムやアプリケーションの開発者に難問を進呈した。例えば、ＩＨＶｓおよびＩＳＶｓは、コーデックや他のフィルタのための互換性の無いフォーマットを数多く作り出してきた。現在、オペレーティングシステムおよびアプリケーションは、広く用いられていない多様なフォーマットを扱う能力は限られている。
【０００３】
フィルタは、ソフトウェアの構成要素であり、メディアファイル（例えば、オーディオ、ビデオ、静止画である）と共に用いられ、コーデック（coder or decorders）として動作し、効果（例えば、色彩の調整や輝度設定の調整である）を追加し、およびファイルの内容を解析（例えば、与えられた画像ファイル中の人物の数といったメタデータを抽出するためのものである）するものである。現在は、いくつかのコーデックの標準（例えば、ＪＰＥＧやＴＩＦＦである）が、デスクトップパブリッシングにおいて、画像ファイルのフォーマットとして広く用いられている。殆どのオペレーティングシステム、アプリケーションおよび取込ソフトウェア（acquisition software）は、そのような広く用いられている標準フォーマットをサポートしている。例えば、マイクロソフト社のMicrosoft（登録商標） Windows（登録商標） Me およびMicrosoft（登録商標） Windows（登録商標） XPに含まれているScanner and Camera Wizardという名称の取込ソフトウェアは、スキャナおよびデジタルカメラ機器と協働し、スキャナおよびデジタルカメラ機器によって生成されるＴＩＦＦファイルをデコードおよび処理する能力を備えている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、デジタルカメラおよびスキャナといったハードウェア製造業者は、自社のハードウェア構成要素と協働するように特別に設計されたコーデックを利用することを好む。例えば、ニコン（登録商標）社は、デジタル画像をコーディングおよびデコーディングするのにＴＩＦＦの特別のバージョンとして知られるＴＩＦＦ／ＥＰフォーマットを好んで使用する。しかしながら、ＴＩＦＦ／ＥＰフォーマットは、広く使用されておらずまたはオペレーティングステムもしくは画像処理アプリケーションによってサポートされていない。例えば、マイクロソフト（登録商標）社のWindows（登録商標）XPオペレーティングシステムは、画像にＴＩＦＦ／ＥＰフォーマットをサポートしていない。したがって、Windows（登録商標）XPデスクトップユーザは、別の表示アプリケーション（viewer application）をインストールしなければ、ニコン（登録商標）社のカメラから得たＴＩＦＦ／ＥＰ画像ファイルをデコードして表示することができない。また、マイクロソフト（登録商標）社のImage Viewerのような画像処理アプリケーションのいくつかは、ＴＩＦＦ／ＥＰ標準を提供するように拡張することができない。なぜならば、これらは、ＴＩＦＦファイルタイプがアプリケーションに提示されたときはいつでも標準的なＴＩＦＦデコーダを使用するように設計されているからである。現在は、これらのWindows（登録商標）XPデスクトップユーザは、ＴＩＦＦ／ＥＰ画像を表示させて拡張するために、彼らのWindows（登録商標）XPにＴＩＦＦ／ＥＰコーデック構成要素を追加して、ＴＩＦＦ／ＥＰ画像と協働するように特別に設計されたアプリケーションを使用しなければならないだろう。その結果として、オペレーティングシステムの高い柔軟性が、益々要求されてきている。ＩＨＶｓおよびＩＳＶｓは、彼ら独自の私有のフィルタを既存のシステム処理にアドインとして提供することによって、デバイスドライバ、取込ソフトウェアおよび他のアプリケーションといった既存のシステム処理の能力を拡張できる。ＩＨＶｓおよびＩＳＶｓが既存のアプリケーションまたは取込ソフトウェアの能力を拡張することを許容することは、特別のフィルタと協働する専用のアプリケーションを生成する必要を除去し、その代わりにＩＨＶｓおよびＩＳＶｓがアドインとしての最高のフィルタを提供することに専念できるようにする。
【０００５】
ソフトウェア開発者は、外部のエンティティによって開発されたフィルタがアドインとして使用されることにしばしば慎重である。なぜならば、アドンのフィルタ中のエラーが、彼ら自身のソフトウェア構成要素の実行に潜在的に影響を与えるからである。したがって、アドインフィルタを使用するシステムおよびアプリケーションの安全性を十分に保障するシステムおよび方法が必要である。
【０００６】
典型的には、あるシステムにインストールされたフィルタ構成要素は、あるアプリケーションにバンドルされていたものか、特定の選択されたアプリケーションと協働するためにインストールされたもののどちらかである。通常、システム上のその他のアプリケーションの多くは、インストールされたフィルタの機能にアクセスできない。したがって、アドインフィルタが不特定のアプリケーションおよびデバイスドライバによっても使用されることが可能となるように、システム上の全てのプロセスがアドインフィルタを発見し（discover）使用することができるようなオープンで柔軟なアーキテクチャが必要である。
【０００７】
その上、増加したメディア機能に対する要求により、複数のメディア機能を備えた多種多様なフィルタが、システムにインストールされ使用されている。したがって、システムにインストールされ使用可能なアドインフィルタを効率的に検索し列挙して、アプリケーションおよび（アプリケーションを介して）ユーザが、必要なときに適切なアドインを選択することができるシステムアーキテクチャが必要である。
【０００８】
また、システムにインストールされた複数のフィルタの各々は、複数のメディア機能を持ち、いくつかのフィルタは重複した機能を有しているかもしれない。ある場合には、一または複数のフィルタは、ある種のメディアの処理に特に適しているかもしれない。ユーザまたはシステム処理は、適切なフィルタを選択する前に、フィルタの機能を発見する必要があるだろう。これを上手く成し遂げる一つの方法として、フィルタをメモリにロードしその能力を確認することが考えられる。しかしながら、これはシステムの資源を逼迫させ、フィルタのアドイン処理を長たらしく遅いものとする可能性がある。したがって、フィルタをその特徴によって分類するシステムおよび方法と、フィルタをメモリにロードすることなくその分類によってフィルタを検索、発見および列挙するシステムおよび方法がさらに必要とされている。
【課題を解決するための手段】
【０００９】
本明細書中に述べるように、システムアーキテクチャおよび方法は、メディアアプリケーション、取込ソフトウェアおよびデバイスドライバといったシステム処理であってメディアに関連する機能を拡張するためのメディア処理フィルタを自動的にインストールおよび起動するために提供される。
【００１０】
一側面として、本システムアーキテクチャは、あるエンティティによって提供されたアドインフィルタを、その他のエンティティによって提供された既存の処理の能力を拡張するために使用できる、オープンで柔軟なアーキテクチャである。本システムは、アドインフィルタがアドインマネージャシステムサービス（add-in manager system service）と称されるフィルタ管理サービス（filter management service）を利用して、アドインフィルタ自体をシステムにインストールするように要求することができるようにする。フィルタは、それ自体の機能に関連する情報をアドインマネージャに提供する。アドインマネージャは、提供された情報を用いて確認できるようにアドインフィルタをシステムにインストールする。アドインフィルタはシステム処理のいずれかによって起動される。
【００１１】
他の側面では、アドインマネージャは、システム処理からの要求に応答して、システム上で使用可能なアドインフィルタを列挙する。そして、システム処理は、列挙されたアドインフィルタを選択し、メディア処理の能力を拡張することができる。フィルタは機能および特長による分類が可能であり、そのような分類にしたがって列挙することが可能である。一実施形態として、アドインマネージャは、システムにインストールされたいずれかの処理によってそれぞれのメディア処理の能力を拡張するために使用されるサービスである。
【００１２】
さらに他の側面では、インストールの要求がされているアドインフィルタは、デジタル署名のようなセキュリティ機構と共に提供され、アドインマネージャは、そのフィルタをシステムにインストールする前に、そのデジタル署名を検証する。さらに、アドインフィルタを起動する処理は、選択されたデジタル署名が付されたフィルタのみを列挙するようにアドインマネージャに要求することができる。さらには、アドインフィルタの列挙を要求している処理とは別の処理において、選択されたアドインフィルタを使うようにアドインマネージャに要求して、エラーや欠陥のあるアドインフィルタがアドインフィルタの列挙を要求している処理の実行に影響を与えないようにすることができる。
【００１３】
付加的な側面では、アドインマネージャは、複数の分類の複数のフィルタを列挙することができ、処理は、一つのチェーンの中で結合された複数のフィルタを使用して、メディアデータの連続的に処理することができる。
【００１４】
本明細書中に述べられているシステムおよび方法の付加的な特徴および長所は、対応する図面を参照しながら以下に詳細に説明することによって明らかにする。
【図面の簡単な説明】
【００１５】
【図１】アドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するための静的な方法を示すブロック図である。
【図２】アドインフィルタを自動的にインストールして使用することによって、システム処理におけるメディア機能を拡張するための動的な方法を示すブロック図である。
【図３】動的にかつ自動的にアドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するための方法を示すフローチャートである。
【図４】動的にかつ自動的にアドインフィルタをインストールして使用することによって、システム処理におけるメディア機能を拡張するためのアドインマネージャサービスを含むシステムアーキテクチャを示すブロック図である。
【図５】システムにおいてアドインフィルタをインストール、発見および列挙する方法を備えたアドインマネージャのインタフェースのプログラム例である。
【図６】システムにおいて、アドインフィルタが自動的にインストールされ、後にシステム処理によって起動される方法を説明するフローチャートである。
【図７】システムにおいて、アドインマネージャサービスがアドインフィルタの列挙の要求を処理する方法を説明するフローチャートである。
【図８】システムにおいて、アドインマネージャサービスが与えられた基準に従ってアドインフィルタの列挙の要求を処理する方法を説明するフローチャートである。
【図９】システム処理がアドインマネージャによって列挙されたアドインフィルタの１または複数を選択して、選択したフィルタを使用してメディアを処理する能力を拡張する方法を説明するフローチャートである。
【図１０】メディアを処理する能力を拡張システム処理によって選択されたアドインフィルタが、システム処理からの起動に応答する方法を説明するフローチャートである。
【図１１】アドインフィルタによって提供されるユーザインタフェースであって、処理のための１または複数のパラメータをユーザから取得するユーザインタフェースである。
【図１２】フィルタオブジェクトを起動する処理から不信なフィルタを分離することによって、アドインフィルタを起動する処理のセキュリティを確保する方法を示すブロック図である。
【図１３】信頼できるフィルタオブジェクトがシステム処理の中で起動される方法を示すブロック図である。
【図１４】メディアデータを連続的に処理するために一つのチェーンの中で結合されたアドインフィルタを示す図である。
【図１５】メディアデータの選択された部分を受け取り、受け取った部分を処理し、処理した部分を出力し、他方でメディアデータの複数の部分を受け取り続けるアドインフィルタを示す図である。
【図１６】複数の機能を備えた複数のアドインフィルタが、メディアファイルの一部を連続して処理することを説明する図である。
【発明を実施するための形態】
【００１６】
（概略）
フィルタは、メディア（例えば、オーディオ、ビデオおよび画像）の処理に使用されるソフトウェア構成要素である。フィルタは、コーデック（coder or decoder）、解析フィルタ（analysis filters）または機能強化フィルタ（enhancement filters）である場合がある。コーデックの例には、ビデオのためのＭＰＥＧ、デジタル静止画のためのＪＰＥＧまたはＴＩＦＦ、およびオーディオファイルのためのＷＡＶまたはＡＶＩが含まれる。コーデックは、主としてネットワークにおける転送の効率化を目的としてメディアファイルを圧縮するために使用されている。機能強化フィルタは、エフェクト（effects）とも称され、主としてデータを改良して画像の一部を変化させることによりメディアファイルに強調効果（enhancement effects）を加えるため、または別の目的のためにデータを変化させるために（例えば、ある画像フィルの輝度設定の機能を強化や、オーディオファイルのノイズの低減である）使用される。解析フィルタは画像ファイルからデータ（例えば、ある画像ファイルにおける背景色といったメタデータ）を抽出する。多くのフィルタがオペレーティングシステムソフトウェア（例えば、マイクロソフト（登録商標）社のWindows（登録商標）XP）またはメディア処理アプリケーション（例えば、Adobe（登録商標）社のPhotoshop（登録商標））に標準添付されて提供されている。しかしながら、典型的なオペレーティングシステムのプラットフォームまたはアプリケーションによって提供されていない特殊な用途を提供する無数のフィルタが存在する。とりわけ、以下に述べられているシステムアーキテクチャおよび方法は、アドインとして追加されたフィルタが既存のシステム処理の能力を拡張する、オープンで柔軟なアーキテクチャを提供する。
【００１７】
図１は、特定のタスクを達成するためのアドインを提供することによって、システムの能力を拡張するための静的な方法を図示する。このようなシステムにおいては、処理１１０（例えば、デバイスドライバ、アプリケーションまたは取込ソフトウェア）は、システムレジストリ１２０に登録されている使用可能なアドインフィルタ１２５を知っている必要がある。そして、処理１１０は、特定のアドインフィルタオブジェクト１２５を選択することができ、エディタ１３０（例えば、マイクロソフト（登録商標）社のFilter Graph Editorである）を使用して組込のフィルタ１４０のような他の部品とともにフィルタ１２５を追加してメディアファイルを処理し、それを出力対象１５０（例えば、ディスプレイ、スピーカ、またはファイル）に提供することができる。このような方法は、アプリケーション自体がアドインフィルタ１２５の存在を知得しているということに依存し、既存のフィルタ１２５の有効性を発見するためにレジストリ１２０を照会する多数のコードをアプリケーション自体の内部に持つこととなる。このことは、アプリケーション開発者に多大な負担を背負わせることになる。アプリケーション開発者は、アドインフィルタのデータの照会および処理を担うコードをアプリケーションに付加することを要求されるからである。
【００１８】
（アドインフィルタの動的インストール及び起動のためのシステムおよび方法の典型的全体像）
図２は、アドインフィルタ２４５を用いてシステム処理２１０の能力を拡張するためのより動的で柔軟なシステム２００を図示する。このようなシステムにおいては、システムサービスは、ここではアドインマネージャ２２０と称され、構成要素オブジェクト（component object）（例えば、マイクロソフト（登録商標）Windows（登録商標）プラットフォームにおけるComponent Object Modelオブジェクトである）として提供されて、処理２１０とアドインフィルタ２４５の間のノードとして提供されて、全システムにアクセスできる。したがって、一方では、アドインフィルタ２４５は、アドインマネージャ２２０を使用してそれ自体をシステムの２４０部分にインストールし、処理２１０に対して有効とすることができる。他方では、アドインマネージャ２２０は、フィルタ２４５のようなアドインフィルタを発見し（discover）、列挙（enumerate）、およびインタフェースを提供するために処理２１０によって使用される。処理２１０は、アドインフィルタ２４５をメディアファイルの処理をする組込フィルタ２６０とともに追加して、その結果を出力対象２７０に提供するためにエディタ２５０を使用することができる。アドインフィルタのインストールと提供のための別々のシステムサービスを提供することは、処理２１０が集中的なタスクのコードを扱う負荷を軽減するだけではなく、アドインマネージャ２２０を呼び出すことが可能なシステム上の全ての処理に対してそのようなサービスを有効にする。
【００１９】
さらに、アドインマネージャ２２０を含むシステム２００全体は、エラーを起こしやすい、不信なまたは不真正なフィルタがシステムを破壊すること、もしくはアドインフィルタ２４５を使用する処理２１０内でエラーを起こせないことを保障する信頼性のあるセキュリティモデルを提供する。例えば、アドインマネージャ２２０は、２２５においてシステムにインストールまたはする前に、アドインフィルタ２４５を検証するために使用されることができる。また、アドインマネージャ２２０は、アドインフィルタ２４５に含まれるエラーが処理２１０に影響を与えないように、処理２１０を２１５においてアドインフィルタ２４５から分離するために使用されることもできる。システム２００におけるこれらおよび他の側面については以下の詳細の中で補足して述べる。
【００２０】
図示されたシステムアーキテクチャの全体２００およびアドインマネージャ２２０は、システム処理２１０の能力を拡張するアドインフィルタを動的にインストールおよび起動する方法を実施するために使用されることができる。図３は、その処理の一つを図示する。３１０において、アドインマネージャは、システムに関連する１または複数の処理によって起動されるアドインフィルタをシステムにインストールするために使用されることができる。その後に３２０において、アドインマネージャ２２０は、システム処理によって使用されるアドインフィルタを動的に起動するために使用されることができる。例えば、アドインマネージャ２２０は、要求を生成すること、および特別の問合せの基準（query criteria）に合ったフィルタのリストとともにアプリケーションを提供することに使用されることができる。アプリケーションは、フィルタのリストから選択することができ、選択されたフィルタが特別のタスクを達成するためにアプリケーションに提供されることができる。
【００２１】
（システム上の処理が、アドインフィルタをインストールし起動することができるシステムサービスを有する典型的なシステムアーキテクチャ）
図４は、アドインフィルタをインストールし起動するシステムサービスを備えたシステムアーキテクチャを図示する。詳細には、図４は、システムの全ての処理がアドインフィルタを発見（discover）し使用することを可能にするシステムサービスを備えたシステムアーキテクチャを図示する。処理は、デバイスドライバ４３０（例えば、特定のスキャナのデバイスドライバ）、ハードドライブ４９０に格納する前にデバイスからのデータを処理するために用いることができる取込ソフトウェア、取込ユーザインタフェース４２５および一般的なアプリケーション４１０を含むことができる。アドインマネージャ４４０は、システムに開かれたサービスであって、これらの全ての処理（例えば、４３０，４２０，４１０および４２５）からアクセスされることができる。また、アドインフィルタは、ＩＨＶｓ、ＩＳＶｓまたはサードパーティベンダから提供されることがきる。したがって、サードパーティベンダにから提供された信頼できるフィルタは、ＩＨＶから提供されるドライバまたはＩＳＶから提供されるアプリケーションを拡張するために使用されることができる。この柔軟性は、ユーザがデスクトップをカスタマイズしてシステムにおけるメディア機能を増やすことを許容する。
【００２２】
デバイスドライバ４３０の能力は、アドインマネージャ４４０を使用して、システム内で有効なアドインフィルタ４５５を列挙し、列挙されたフィルタの内から特定のタスクに使用可能な１または複数のフィルタを選択することによって拡張される。ドライバ側４７０のアドインフィルタは、何らアドインについてのユーザの知識を必要とすることなく、メディアデータの処理に使用されることができる。例えば、スキャナメーカは、特定のモデルが色付紙を暗い影を帯びてスキャンすることに気づいたとき、ユーザの知識や介在を必要とすることなくそのような欠陥を自動的に修正するドライバサイド４７０のアドインフィルタ４５５を提供することができる。
【００２３】
さらに、典型的なデバイスドライバ４３０は、メディアデータをデバイス（図示しない）からアプリケーションまたはオペレーティングシステムに転送することおよび転送されたデータを処理することに関連したタスクを実行する。データをデバイスとシステムの間で転送することだけに関連するドライバ４３０の構成要素は、典型的には、異なるモデルのデバイス間で同じである。しかしながら、異なる効果または機能強化のフィルタが、異なるモデルのデバイスドライバの中で使用されることができる。メディアデータを処理することに関連するドライバ４３０の構成要素は、アドインフィルタ４５５として実装されることができて、アドインマネージャ４４０を使用して、必要なときだけドライバから起動される。したがって、柔軟なシステムアーキテクチャ４００は、ＩＨＶまたはドライバの開発者が多様なデバイス間で共有する特別のフィルタなしで標準的なドライバを提供すること可能とし、そして特定のモデルに依存した部品を標準的なドライバを拡張するためのアドインとして提供することを可能とする。また、改良または拡張された機能は、全く新しいバージョンのデバイスドライバを提供する代わりに、アドインとして提供することができる。これによってドライバの修繕のためのコストが大幅に削減される。
【００２４】
さらには、ＩＨＶは、アドインマネージャ４４０を組込またはシステム標準のフィルタに類似する機能を置換するために使用することができる。例えば、マイクロソフト（登録商標）社のWindows（登録商標）XPプラットフォームのスキャナ取込ソフトウェアは、スキャナの文書送りローラを読取イメージの部分として認識する。現在、ユーザは、読取ったイメージからローラが含まれない範囲を指定することで、手動でこれを修正しなければならない。しかしながら、ＩＨＶは、組込フィルタを置換して自動的にローラを読取イメージから除去するためのアドインフィルタを提供するためにアドインマネージャを使うことができる。
【００２５】
取込ソフトウェア４２０（例えば、マイクロソフト（登録商標）社のScanner and Camera Wizard）は、典型的には、デバイスからシステムまたはその逆に転送するときに、メディアデータを処理するために使用される。取込ソフトウェア４２０は、上述のデバイスドライバ４３０と同様の方法で、アドインマネージャ４４０を使用してそれ自体の機能を拡張することができる。現在、ＩＨＶは、オペレーティングシステムに組み込まれた標準的な取込ソフトウェアによって通常サポートされない特別のフィルタと協働する独自の取込ソフトウェアを提供しなければならない。しかし、システムのアーキテクチャ４００では、オペレーティングシステムの組み込まれた取込ソフトウェア（例えば、マイクロソフト（登録商標）社のScanner and Camera Wizard）は、アドインである特別のフィルタを使用することで拡張されることができる。したがって、ＩＨＶは、既存の取込ソフトウェアの機能を置換するというよりもむしろ追加することができる。
【００２６】
同様に、アプリケーションもまた、アドインマネージャ４４０を使用して、機能を拡張するためにシステムで有効なアドインフィルタ４６５を発見（discover）、列挙（enumerate）、選択および使用することができる。したがって、アドインマネージャ４４０がシステムサービスとして実装されているときは、メディア処理のさまざまなレベル（例えば、ドライバ側４７０、取込側４７５、アプリケーション側４８０）で、さまざまな処理（例えば、アプリケーション４１０、取込ソフトウェア４２０、およびデバイスドライバ４３０）の機能を増やすことができる。
【００２７】
図４における、システムのメディアデータの典型的な処理のレベル（例えば、ドライバ側４７０、取込側４７５、アプリケーション側４８０）の区分は、アドインマネージャ４４０が種々のソフトウェアの構成要素を拡張するために使用されることができるシステムサービスの概念を単に図示するに過ぎない。同様に、アドインフィルタ４５５および４６５をアプリケーションのアドイン４６０および取込のアドイン４５０に分離しているのは単なる図解のためであり、システムの本来の機能としての本質的部分ではない。
【００２８】
（アドインフィルタをインストールし起動するための典型的なシステムサービス）
図５乃至８を参照して、アドインマネージャ４４０について詳しく述べる。アドインマネージャ４４０は、オブジェクト（例えば、オブジェクトモデルの構成要素）として実装されていて、デバイスドライバ４２０またはアプリケーション４１０のようなシステム処理によって具体化される。一般的に、アドインマネージャ４４０は、システムで有効なアドインフィルタ４５５および４６５をインストールすることおよび列挙することについて責任を負う。図５は、アドインマネージャ４４０の典型的な実施例を示すものであり、処理が機能を拡張することができるメソッド、およびフィルタ開発者が自己のフィルタをインストールするために使用することができる様々なメソッド）を示している。
【００２９】
アドインフィルタ４５５および４６５のようなアドインフィルタは、その機能によって分類でき、アドインマネージャは、その分類によってフィルタを検索することができる。以下は、フィルタの機能に基づく標準的な分類として可能なリストであり、芸術的（Artistic）、芸術的効果（Artistic Effects）、ぼかし（Blur）、ぼかし効果（Blur Effects）、色彩（Color）、色彩効果（Color Effects）、強調（Sharpen）、強調効果（Sharpen Effects）、ノイズ（Noise）、ノイズ効果（Noise Effects）がある。システムは、このような標準的な分類の下に登録された沢山のフィルタを有することができ、１以上のフィルタが何れかの分類に属し、一つのフィルタは１以上の分類に属することができる。しかしながら、ときどき、標準的な分類の一つに類別することができないフィルタがある。このような場合には、メソッド５１０が使用され、分類ＩＤと称される固有の識別子（例えば、ＧＵＩＤ（Global Unique Identifier））、フィルタの名称および機能の詳細を与えることによって個別の分類が追加される。一度フィルタが分類されて登録されると、メソッド５２０は、システムで有効なフィルタの少なくとも一つを有する全ての分類を列挙するために使用されることができる。また、メソッド５２０を修正して、システムに認識されている全ての分類を簡単に列挙するように、またはシステムが定義した分類だけを列挙するようにすることもできる。さらに、アドインマネージャ４４０は、分類を削除する方法も提供する。例えば、メソッド５３０は、分類と結びついている固有の識別子の入力に基づいて分類を削除する。メソッド５３０を使用して分類を削除することは、単に分類を削除するのみではなく、削除した分類と結びついたフィルタの全てを削除することも可能である。したがって、アドインマネージャ４４０は、フィルタが属する分類に基づき、フィルタの追加、列挙および削除を管理する能力を持ち、このことは、フィルタ単位で管理するのと比べてより早くより効率的である場合がある。
【００３０】
アドインマネージャ４４０を使用すると、分類の代わりに個々のフィルタを検索して列挙することによって提供された細目の付加的レベルとすることが可能である。メソッド５４０は、システム処理が特定の分類に属する全てのフィルタを列挙するために、使用されることができる。メソッド５４０の呼び出しは、固有のＩＤを用いて分類を指定する必要がある。また、フィルタ開発者は、メソッド５５０を使用して、分類のＩＤ、フィルタＩＤ、名称およびフィルタの機能の説明を与えて新しいフィルタをインストールすることができる。さらに、メソッド５６０は、メソッド５６０の呼び出しが特定したフィルタＩＤに対応するフィルタを削除するために使用されることができる。さらに、メソッド５７０は、システム処理が特定のフィルタおよびデバイスに関する情報を取得し、処理能力を拡張するために使用できるか否かを決定するために使用されることができる。
【００３１】
システムのセキュリティを確認するために、分類を削除するメソッド（５３０）またはフィルタを削除するメソッド（５６０）を呼び出す処理は、適切なセキュリティ上のトークン（token）とともにアドインマネージャ４４０を提供する必要があるかもしれない。フィルタ（例えば、ドライバに関連するフィルタであって特定のデバイスと協働するように設計されているフィルタ）の開発者は、特定のデバイスまたはアプリケーション用の特定の独自の分類または固有のフィルタを使用することを制限するために、つまり他のアプリケーションまたは他のデバイスによるフィルタの使用を防止するためにアドインマネージャ４４０を使用することもできる。
【００３２】
（アドインフィルタをインストールしてシステム処理によって動的に起動される典型的な処理）
上述した図５に関連する説明は、システムにフィルタをインストールするメソッド５５０について論じたものである。図６は、フィルタと他の付加的な詳細を伴ってインストールする処理を図示したものである。フロー６１０において、システムは、システムにインストールするアドインを受け取る。アドインフィルタは、ソフトウェアの構成要素のオブジェクトの場合があり、デバイスドライバに関連してまたは新しいアプリケーション等のインストールに伴って提供されることができる。また、ネットワークに接続されているサーバにアドインフィルタを送信可能な状態に置くことができて、ユーザは、都合のよいようにサーバにアクセスしてアドインフィルタをダウンロードできる。アドインフィルタを受け取る方法は何であっても、フィルタの開発者は、上述したとおり自己のフィルタをシステムにインストールするためにアドインマネージャインタフェース（例えば、図５）に慣れていなければならない。したがって、フロー６２０では、アドインフィルタは、アドインマネージャインタフェースを使用して、フィルタのインストールを開始するアドインマネージャからの呼び出しに応答する。フィルタは、アドインマネージャに分類ＩＤ、フィルタＩＤ、名称および説明を与える。そしてフロー６３０では、アドインマネージャは、追加されようとしているフィルタが真正なフィルタであることを検証する。追加されようとしているフィルタは、アドインマネージャが信頼できるかどうかを認識するためのデジタル署名と共に提供される。フロー６４０において、署名が適切なものでなければ、フロー６５０で、アドインマネージャは、そのフィルタを追加することを拒絶する。しかし、フロー６４０で署名が適切なものであれば、追加されようとしているフィルタは信頼できるということを検証される。そしてフロー６６０において、アドインマネージャは、アドインフィルによって提供されたパラメータを使用して、システムにフィルタをインストールする。もし、追加されようとしているアドインフィルタが標準的なフィルタの分類または既にシステムに知られた分類に属さない場合には、アドインマネージャに対する呼び出しは、インストールする前にそのフィルタと結びついた何かを登録するための分類を追加（メソッド５１０）する必要がある。
【００３３】
（システム上のアドインフィルタを列挙するための検索の典型的な処理）
図６を参照して上述したように、一度フィルタがインストールされると、それらのフィルタは、列挙されてシステム処理の能力を拡張するために提供されることができる。図７および８は、そのような処理の全てを説明する。フロー７１０において、アドインマネージャは、システム処理からシステムで有効なアドインフィルタであって、呼び出し処理によって提供される基準に合致するフィルタのリストの列挙の要求を受けとる。一度、アドインマネージャが列挙の要求を受け取ると、フロー７２０において、アドインマネージャは、アドインフィルタのリストを列挙することによって要求に応答して、アドインフィルタのリストが呼び出し処理に提供される。
【００３４】
列挙されるフィルタの選択の基準は、１または複数のフィルタの分類に属するフィルタのリスト（例えば、メソッド５４０）と同じく単純であってもよい。またその基準は、特定の信頼できる要素と結合したデジタル署名が付されたフィルタの列挙を要求するようなより精巧であってもよい。図８は、典型的な基準の組み合わせに基づいてシステムで有効なアドインフィルタを列挙する処理を図示している。フロー８１０において、アドインマネージャは、処理からのアドインフィルタの列挙の要求受け取る。フロー８２０において、アドインマネージャは、処理からの要求において特定された分類に属する全てのフィルタを識別する。その後、フロー８３０において、アドインマネージャは、選択したフィルタが要求をしている処理によって特定された１または複数のデジタル署名を有するか確認する。例えば、マイクロソフト（登録商標）社のアプリケーションは、マイクロソフト（登録商標）社が検証して許可したデジタル署名を有するアドインフィルタのみを使用することを望むことができる。詳細には、フロー８４０において、アドインマネージャは、選択されたフィルタがそのフィルタに付けられた有効期限を超過していないことを確認する。システムにロードされたフィルタがトライアル版であってユーザがまだそのフィルタの正規のライセンスを購入していない場合に、これは便利である。このようにして、フロー８５０において、プロセスによって特定された全ての基準（例えば、分類ＩＤ、適切なデジタル署名、有効期限）に適合したフィルタだけが列挙される。より精巧な基準は、インストールされたフィルタの名称または説明に依存することもできる。しかし、列挙の処理は、フィルタを敷衍すればするほど非効果的となる。また、１または複数の基準は、アドインマネージャ、アドインフィルタおよびオペレーティングシステムによって組み合わされることがある。
【００３５】
（システム上で有効なアドインフィルタを選択して使用する典型的な処理）
一度、アドインマネージャが、処理からの要求に対する応答の中でフィルタのリストを列挙すると、処理は、その処理自体の能力を拡張するためにアドインフィルタを使用できる。図９に示すように、フロー９１０において、アドインフィルタの列挙の要求をしている処理は、アドインフィルタを列挙したリストまたはテーブルを受け取るまたはアドインフィルタを列挙したリストまたはテーブルにアクセスする。そして、フロー９２０において、列挙の要求をしている処理は、有効なアドインフィルタの１または複数を選択する。そして、フロー９３０において、列挙の要求をしている処理は、選択したアドインフィルタのオブジェクトへのインタフェースポインタを受け取る。そして、フロー９４０において、その処理は、フィルタを起動するためにアドインフィルタへのインタフェースおよびそれに関連した方法であって選択したメディアデータを処理する方法を使用する。処理が直接フィルタを起動する変わりに、アドインマネージャにフィルタの起動の要求または指示をすることは、有利な場合がある。このことは、処理が、そのフィルタ処理と分離してアドインフィルタを使用することを要求することを認め、これにより、フィルタ内部のエラーに対して脆弱になる傾向を小さくする。
【００３６】
フィルタを列挙したリストは、アプリケーションまたは取込ソフトウェアのユーザインタフェースを介してユーザに表示されることができ、アプリケーションまたは取込ソフトウェアのユーザインタフェースは、ユーザがリストからフィルタを選択することができるようにする。しかし、リストをユーザに提供することは、いつも必要または有用というわけではない。このような場合、アプリケーションまたは他の処理は、アドインフィルタを列挙したリストから自動的に選択することもできる。
【００３７】
一度、処理がメディアデータを処理するために選択したアドインフィルタを起動すると、処理またはアドインマネージャ（場合によって）は、フィルタ自体に処理の制御を引き渡すことができる。図１０に図示するように、フロー１０１０において、アドインフィルタは、ユーザがメディアデータの処理のパラメータを入力するためのユーザインタフェースを提供することができる。図１１は、拡散（diffuser）効果のフィルタのためにユーザが定義したパラメータを入力することに関連したユーザインタフェースの一例を図示する。他には、フィルタの機能が、ユーザの入力を何も要求しないまたは処理のパラメータ（例えば、ある解析フィルタは、メディアデータのみを入力として要求し、１または複数のメディアデータを出力として提供する）さえ何も要求しない場合がある。フロー１０２０において、アドインフィルタは、メディアデータを処理するために特定されたパラメータを使用する。フロー１０３０において、アドインフィルタは、アドインフィルタを起動している処理またはその他のフィルタへ処理したデータを提供し、メディアデータの処理が継続される。処理されたデータは、ディスプレイやスピーカのような出力対象へ提供される。
【００３８】
（アドインフィルタをインストールおよび起動するための典型的なセキュリティモデル）
図４に示すシステムのアーキテクチャは、オープンかつ柔軟であって、アドインフィルタを使用してシステム処理が能力を拡張することができるシステムアーキテクチャである。これは、ユーザがカスタマイズしたメディアの処理の構成要素をデスクトップに追加することをオープンかつ柔軟なアーキテクチャが許容するという範囲において有利である。しかし、これはまた、ＩＳＶ、ＩＨＶまたはサードパーティによって提供されたアドインフィルタに内在するかも知れないエラーまたはバグに対してシステムを脆弱にする。オペレーティングシステムソフトウェアまたはアプリケーションのメーカーは、ユーザが第三者によって提供された部品を使って処理を拡張することを許容して、セキュリティ上のリスクが増加することに対して常に注意深くいなければならない。しかしながら、上述したように、これらの脅威のいくつかは、セキュリティ上の規則を遵守しているか（security compliance）を検証することができるデジタル署名と共にアドインフィルタを提供するように要求することによって解決できる。例えば、アドインマネージャは、全てのアドインフィルタに１または複数の許可されたデジタル署名の提供を要求するように設定することができる（例えば、フロー６３０を参照）。また、アドインフィルタがシステムにインストールされることを認められた後であっても、アドインフィルタを要求している処理は、付加的なセキュリティの基準を特定して、アドインマネージャに対してその基準に適合するフィルタのみを選択肢として列挙するようにすることができる（例えば、フロー８３０を参照）。
【００３９】
さらには、図１２および１３は、機能を拡張するために使用されるアドインフィルタ内部のエラーおよびバグから処理を保護するための他のセキュリティ機構を図示する。図１２を参照すると、処理１２１０は、利用可能なアドインフィルタ１２３０のリストの列挙をアドインマネージャ１２２０に要求することができる。また処理は、個々のアドインフィルタに結び付けられているデジタル署名の確認をアドインマネージャ１２２０に要求することもできる。１または複数の正式に認められたデジタル署名を提供できないフィルタは、選択されたフィルタ１２５０、１２５１および１２５２が処理１２１０の外で使われるようにするためにサンドボックス（sandbox）１２４０へ置かれる。したがって、処理１２１０は、選択されたフィルタ１２５０、１２５１および１２５２から孤立されることができ、これらのフィルタ内部のエラーおよびバグが、処理１２１０の実行中の失敗を引き起こすことができなくなる。しかしながら、処理１２１０は、フィルタ１２５０、１２５１および１２５３の出力を受け取ることができる。
【００４０】
図１２に示したサンドボックスのアプローチは、メディアファイルを処理するスピードを著しく低下させる結果を生む。したがって、一定の環境下では、フィルタが処理１２１０自体の中で使用されることが有益であるかもしれない。図１３は、プロセス１３１０の中で起動され使用される選択されたアドインのオブジェクト１３２０を図示する。典型的にこれは、より高速の処理に結びつくが、アドインフィルタ１３２０中のエラーの結果として処理１３１０が失敗する危険をももたらす。したがって、アドインマネージャ１３４０は、認められたデジタル署名を提示するフィルタ１３２０のみが処理１３１０中で起動され使用されるように、アドインフィルタのデジタル署名を確認するために使用されることができる。そうでなければ、アドインフィルタは、図１２に示すように処理１３１０の外に配置されるかもしれない。例えば、アプリケーションがアドインマネー１３４０からフィルタの信頼性の検証結果を受け取った場合には、アプリケーション処理１３１０は、アプリケーション自体のユーザインタフェースを介して起動されるフィルタをロードすることができる。このような取り決めは、他者の開発したアプリケーションの中で使用されるときに、フィルタの開発者が自己のブランドを広告することを許容するだろう。
【００４１】
（システム処理の能力を拡張するために動的に使用されるアドインフィルタの典型的な特徴）
処理の能力を拡張（図４に示すシステムアーキテクチャによって可能となる）するためにアドインマネージャによって使用されるアドインフィルタは、アドインマネージャおよびシステム処理と効果的に協働するために一定の標準的な機能を有する必要があるかもしれない。例えば、アドインフィルタは、複数の入力の型（type of input）を受入れ、複数の出力の型（type of output）を提供することができる。そのようなフィルタのひとつは、複数の画像を得てひとつの出力画像を生成することができるステッチ（stitching）フィルタがある。また、文書読み取り（document scanning）フィルタは、ひとつのイメージを得て画像およびテキストといった複数の型の出力を生成することができる。画像以外の出力データを提供するフィルタの例は、注釈生成（annotation generator）フィルタおよび画像測量（image measurement）フィルタを含む。注釈生成フィルタは、画像中の日付印から日付データといったデータまたは画像中に人物がいるかいないかといったデータを抽出することができるだろう。画像測量フィルタは、ヒストグラムを生成することまたは読取画像のプレビューの方向を測定し読み取りのためのパラメータを設定することができる。
【００４２】
さらに、アドインフィルタは、他のフィルタオブジェクトから入力を得る能力およびその他のフィルタオブジェクトへ出力を提供する能力も備えているべきであろう。図１４に示すように、アドインフィルタ１４１０、１４２０および１４３０はひとつのチェーンの中で結合されることができ、メディアデータ１４４０が複数のフィルタ１４１０、１４２０および１４３０によって一度によって処理されることができる。そうしなければ、それぞれのアドインフィルタ１４１０、１４２０および１４３０は、それぞれ個別に処理されて出力され、再びその他のフィルタによって処理されなければならない。これは時間を消耗するだろう。チェーンの中で結合されることができるフィルタの能力によって、アドインマネージャは、いくつかのフィルタを列挙することができ、そして、アプリケーションは、能力を拡張するために一度に多様な効果のフィルタを選択することができる。
【００４３】
アドインフィルタのもっと他の特徴は図１５に示されている。一般的にフィルタは、入力されたメディアデータの全体の一部のみを処理する能力である。例えば、画像処理を考慮すると、アドインフィルタ１５１０のようなフィルタは、画像の全体の一部（例えば、座標によって特定されている）を得て、選択された部分を処理し、そして出力対象１５３０にそれを出力する能力である。この方法では、画像の一部がフィルタを介してアプリケーションによって操作されたとき、画像の一部が効果によって変更されていても、元の画像のビュー（view）は保持できる。これは、アプリケーションがアドインの効果の瞬間的なビューをユーザに提供することを許容する。例えば、もし効果が希望したものでなかった場合、アドインの選択を取り下げられることもできる。図１５はこのフィルタの特徴を図解するために画像のフィルタの例を使用したけれども、他のメディア（オーディオまたはビデオ）は、それぞれのフィルタの型を用いて同じ方法で処理されることができる。
【００４４】
図１６に図示するように、ひとつのチェーンの中で結合しているフィルタの機能（図１４参照）およびメディアファイルの一部を処理する機能は、組合わされてひとつのチェーンの中で複数のフィルタと結合することができ、入力されたファイルが処理されている間にアドインフィルタの効果を見たり聞いたりすることができる。例えば、１６１０における画像全体の一部は、１６２０において範囲指定（scale）され、そして１６５０において画像を出力する前に、１６３０において選択された部分がネガテ（negate）され、赤目（red-eye）を取り除かれる。
【００４５】
（代替の実施形態）
方法およびシステムは、システムサービスであるアドインマネージャ、アドインフィルタおよびシステム処理といったいくつかのシステムの構成要素の機能を述べる。これらのいずれかに帰する機能および上述した他の構成要素に帰する機能は、これら以外の関連するいずれかの構成要素によっても、そのようにプログラムすれば、実施することができると理解されるべきである。
【００４６】
また、例示は、特定の型のメディア（例えば、ビデオ、オーディオ、画像等）の処理について論じているが、しかし、その例の根底にある概念は、メディアデータの全てのフォーマットも同等に適用できる。多くの実施可能な形態を考慮するに際しては、図示された実施例が単なる例であると認識されて、そして発明の範囲を限定するものと捉えられるべきではない。むしろ、発明は特許請求の範囲によって定められている。したがって、我々は、特許請求の範囲に含まれるすべの実施形態を本発明として主張する。
【符号の説明】
【００４７】
１１０  処理
１２０  システムレジストリ
１２５  選択されたアドインフィルタ
１３０  エディタ
１４０  組込みフィルタであるコーデック
１５０  出力対象
【図１】
2010055640.tif 000003
【図２】
2010055640.tif 000004
【図３】
2010055640.tif 000005
【図４】
2010055640.tif 000006
【図５】
2010055640.tif 000007
【図６】
2010055640.tif 000008
【図７】
2010055640.tif 000009
【図８】
2010055640.tif 000010
【図９】
2010055640.tif 000011
【図１０】
2010055640.tif 000012
【図１１】
2010055640.tif 000013
【図１２】
2010055640.tif 000014
【図１３】
2010055640.tif 000015
【図１４】
2010055640.tif 000016
【図１５】
2010055640.tif 000017
【図１６】
2010055640.tif 000018