エンコーダー フィルターを持つドライバーの 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
どの COM インターフェイス KsProxy を公開する必要がありますか
ドライバーの INF ファイルの AddReg セクションで、KsProxy プラグイン (encapi.dll) がクライアントに公開する必要がある COM インターフェイスを示す次の 3 つの GUID のいずれかを指定します。 COM インターフェイスは、エンコーダー フィルターで実装したプロパティのサポートによって決まります。
| インターフェイス GUID | 名前 | 説明 |
|---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
KsProxy が IVideoEncoder COM インターフェイスを公開するようにこの GUID を指定します (Microsoft が提供する古い世代のエンコーダー サポートとの下位互換性のため)。 クライアントは 、IEncoderAPI COM インターフェイスからこのインターフェイスを派生させる必要があります。 |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
KsProxy で ICodecAPI COM インターフェイスが公開されるようにするには、この GUID を指定します (オーディオ専用エンコーダーなどのビデオ以外のエンコード デバイスの場合)。 |
{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 インターフェイスについては、DirectX 9 および Windows XP 用 Windows SDK SP1 以降の 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 では、エンコーダー フィルターやマルチプレクサー (多重化) フィルターなど、一般的なカテゴリの GUID を定義しています。
フィルターは、ミニドライバーの INF ファイルのフィルターのセクションの AddInterface ディレクティブで次の GUID の 1 つ以上を指定することによって、それぞれのカテゴリを示します。
| カーネル ストリーミング カテゴリ GUID | 名前 | 説明 |
|---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
エンコーダー フィルターにこの GUID を指定します。 |
{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
多重化フィルターの場合は、この GUID を指定します。 |
エンコーダー フィルターを登録するには、ドライバーの DDInstall でKSCATEGORY_ENCODER GUID を指定します。インターフェイス INF ファイル セクション。 例えば次が挙げられます。
[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 メンバーと一致する必要があります。