Dela via


Installation och registrering av kodare

INF-filen för en drivrutin med ett kodarfilter måste innehålla poster som definierar följande:

  • Ytterligare komponenter för strömfångst av kärna

  • Vilket COM-gränssnitt KsProxy ska exponera

  • Metadatavärden som beskriver kodarfiltrets funktioner

  • Filtrets kernelströmningskategori

Ytterligare kernel-strömningsavbildningskomponenter

DEN INF-fil som används för att installera drivrutinen för en kodare måste referera till ks.inf och kscaptur.inf i avsnittet [DefaultInstall] som avbildningsdrivrutiner eftersom dessa filer lägger till nödvändigt stöd för kodarkomponenter. Till exempel:

[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT

Vilket COM-gränssnitt KsProxy ska exponera

I avsnittet AddReg i drivrutinens INF-fil anger du något av följande tre GUID:er för att ange COM-gränssnittet som KsProxy-plugin-programmet (encapi.dll) ska exponeras för klienter. COM-gränssnittet bestäms av det egenskapsstöd som du implementerade i kodarfiltret:

Gränssnitts-GUID Namn Beskrivning

{B43C4EEC-8C32-4791-9102-508ADA5EE8E7}

CLSID_IVideoEncoderProxy

Ange detta GUID så att KsProxy exponerar COM-gränssnittet för IVideoEncoder (för bakåtkompatibilitet med den äldre generationens kodarstöd som tillhandahålls av Microsoft). Klienter måste härleda det här gränssnittet från COM-gränssnittet IEncoderAPI .

{7FF0997A-1999-4286-A73C-622B8814E7EB}

CLSID_ICodecAPIProxy

Ange detta GUID så att KsProxy exponerar ICodecAPI COM-gränssnittet (för icke-videokodningsenheter som ljudkodare).

{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C}

CLSID_IVideoEncoderCodecAPIProxy

Ange detta GUID så att KsProxy exponerar både IVideoEncoder - och ICodecAPI COM-gränssnitten (för bakåt- och framåtkompatibilitet).

Till exempel:

[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,

Detta skulle göra att KsProxy endast exponerar COM-gränssnittet IVideoEncoder (CLSID_IVideoEncoderProxy).

Dessa COM-gränssnitt dokumenteras i avsnittet DirectShow i DirectX 9 och Windows SDK:er för Windows XP med SP1 och senare.

Metadatavärden som annonserar kodarfiltrets funktioner

Du kan ange metadatavärden i området Enhetsparametrar\Funktioner i registret i kodarens INF-fil. Program kan använda dessa metadatavärden för att avgöra vilka funktioner som ska implementeras eller exponeras för användaren.

Till exempel:

[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1

Detta skulle skapa ett metadataobjekt {12345678-1234-1234-1234-12345678abcd} = guid1" i området Enhetsparametrar\Funktioner i kodarens registerinställningar. Den tomma raden är nödvändig för att skapa registernyckeln om den inte redan finns.

Ett kodarfilter kan ange sådana statiska metadata i inf-filen för användning av program. Windows XP Media Center Edition söker till exempel efter kodare som anger att de är Windows XP Media Center Edition-kompatibla.

Filtrets kernelströmningskategori

Kernel-direktuppspelningsfilter måste ange den kernelströmningskategori som de tillhör. Microsoft definierar GUID:er för vanliga kategorier, inklusive kodarfilter och multiplexerfilter (mux).

Filter anger sina respektive kategorier genom att ange en eller flera av följande GUID:er i ett AddInterface-direktiv i filtrets avsnitt i dess minimejsels INF-fil:

GUID för Kernel-strömningskategori Namn Beskrivning

{19689BF6-C384-48FD-AD51-90E58C79F70B}

KSCATEGORY_ENCODER

Ange detta GUID för kodarfilter.

{7A5DE1D3-01A1-452C-B481-4FA2B96271E8}

KSCATEGORY_MULTIPLEXER

Ange detta GUID för mux-filter.

Om du vill registrera ett kodarfilter anger du KSCATEGORY_ENCODER GUID i drivrutinens DDInstall. Gränssnitt INF-filavsnitt. Till exempel:

[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"

Obs: det GUID som anges för KSNAME_Filter måste matcha ReferenceGuid-medlemmen som du angav i strukturen KSFILTER_DESCRIPTOR som beskriver ditt filter.