エンコーダーのインストールと登録
エンコーダー フィルターを持つドライバーの INF ファイルには、次を定義するエントリが含まれている必要があります。
追加のカーネル ストリーミング キャプチャ コンポーネント
KsProxy が公開する COM インターフェイス
エンコーダー フィルターの機能を説明するメタデータ値
フィルターのカーネル ストリーミング カテゴリ
追加のカーネル ストリーミング キャプチャ コンポーネント
エンコーダー デバイスのドライバーをインストールするために使用される INF ファイルは、エンコーダー コンポーネントに必要なサポートを追加するため、キャプチャ ドライバーとして [DefaultInstall] セクションで ks.infとkscaptur.inf を参照する必要があります。 次に例を示します。
[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT
KsProxy が公開する COM インターフェイス
ドライバーの INF ファイルの AddReg セクションで、KsProxy プラグイン (encapi.dll) がクライアントに公開する COM インターフェイスを示すために、次の 3 つの GUID のいずれかを指定します。 COM インターフェイスは、エンコーダー フィルターで実装されたプロパティのサポートによって決まります。
インターフェイス GUID | 名前 | 説明 |
---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
この GUID を指定すると、KsProxy が IVideoEncoder COM インターフェイスを公開します (Microsoft が提供する旧世代のエンコーダ サポートとの下位互換性のため)。 クライアントは、IEncoderAPI COM インターフェイスからこのインターフェイスを派生する必要があります。 |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
この GUID を指定すると、KsProxy が ICodecAPI COM インターフェイスを公開します (オーディオ専用エンコーダなどの非ビデオ エンコード デバイスの場合)。 |
{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C} |
CLSID_IVideoEncoderCodecAPIProxy |
この GUID を指定すると、KsProxy が IVideoEncoder インターフェイスと ICodecAPI COM インターフェイスの両方を公開します (下位互換性と上位互換性のため)。 |
次に例を示します。
[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,
これにより、KsProxy は IVideoEncoder (CLSID_IVideoEncoderProxy) COM インターフェイスのみを公開します。
これらの COM インターフェイスは、Windows XP SP1 以降の DirectX 9 および Windows SDK の DirectShow セクションに記載されています。
エンコーダー フィルターの機能を説明するメタデータ値
メタデータ値は、エンコーダーの INF ファイルのレジストリの 「デバイス パラメーター\機能」 エリアで指定できます。 アプリケーションは、これらのメタデータの値を使用して、ユーザーに実装または公開する機能を決定できます。
次に例を示します。
[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1
これにより、エンコーダーのレジストリ設定の「デバイス パラメーター\機能」エリアにメタデータ項目「{12345678-1234-1234-1234-12345678abcd} = guid1」が作成されます。 空の行がまだ存在しない場合は、レジストリキーを作成するために空の行が必要です。
エンコー フィルターは、アプリケーションで使用するために、そのような静的メタデータを INF ファイルに指定できます。 たとえば、Windows XP Media Center Edition は、Windows XP Media Center Editionに準拠していることを示すエンコーダをチェックします。
フィルターのカーネル ストリーミング カテゴリ
カーネル ストリーミング フィルターは、自身が属するカーネルス トリーミング カテゴリを指定する必要があります。 Microsoft は、エンコーダー フィルターやマルチプレクサー (mux) フィルターなど、一般的なカテゴリの GUID を定義します。
フィルターは、ミニドライバーの INF ファイルのフィルターのセクションの AddInterface ディレクティブで次の GUID の 1 つ以上を指定することで、それぞれのカテゴリを示します。
カーネル ストリーミング カテゴリ GUID | 名前 | 説明 |
---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
エンコーダー フィルターにはこの GUID を指定します。 |
{{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
マルチプレクサ フィルターにはこの GUID を指定します。 |
エンコーダー フィルターを登録するには、ドライバー の DDInstall.Interface INF ファイル セクションで KSCATEGORY_ENCODER GUID を指定します。 次に例を示します。
[Your Driver's DDInstall.Interface section]
AddInterface=%KSCATEGORY_ENCODER%,%KSNAME_Filter%,MyEncoderDevice.AddInterface
[MyEncoderDevice.AddInterface]
AddReg=MyEncoderDevice.AddReg
[MyEncoderDevice.AddReg]
HKR,,CLSID,,%KSProxy.CLSID%
HKR,,FriendlyName,,%MyEncoderDeviceFriendlyName%
[Strings]
KSCATEGORY_ENCODER="{19689BF6-C384-48FD-AD51-90E58C79F70B}"
KSNAME_Filter="{9B365890-165F-11D0-A195-0020AFD156E4}"
KSProxy.CLSID="17CCA71B-ECD7-11D0-B908-00A0C9223196"
MyEncoderDeviceFriendlyName="My Encoder Device"
注:KSNAME_Filterに指定される GUID は、フィルターを説明する KSFILTER_DESCRIPTOR 構造体で指定した ReferenceGuid メンバーと一致する必要があります。