Udostępnij przez


Instalacja i rejestracja kodera

Plik INF sterownika z filtrem kodera musi zawierać wpisy, które definiują następujące elementy:

  • Dodatkowe składniki przechwytywania przesyłania strumieniowego jądra

  • Który interfejs COM KsProxy powinien uwidocznić

  • Wartości metadanych opisujące możliwości filtru kodera

  • Kategoria strumieniowania jądra systemu filtru

Dodatkowe składniki przechwytywania przesyłania strumieniowego jądra

Plik INF używany do instalowania sterownika dla urządzenia kodera musi odwoływać się do ks.inf i kscaptur.inf w sekcji [DefaultInstall] jako sterowników przechwytywania, ponieważ te pliki dodają niezbędną obsługę składników kodera. Przykład:

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

Który interfejs COM KsProxy powinien uwidocznić

W sekcji AddReg pliku INF sterownika określ jeden z następujących trzech identyfikatorów GUID, aby wskazać interfejs COM, który wtyczka KsProxy (encapi.dll) powinna udostępnić klientom. Interfejs COM jest określany przez obsługę właściwości zaimplementowaną w filtrze kodera:

Identyfikator GUID interfejsu Nazwa Opis

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

CLSID_IVideoEncoderProxy

Określ ten identyfikator GUID, aby umożliwić KsProxy uwidocznienie interfejsu COM IVideoEncoder (w celu zapewnienia zgodności ze starszą generacją obsługi kodera dostarczonego przez firmę Microsoft). Klienci muszą uzyskać ten interfejs z interfejsu IEncoderAPI COM.

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

CLSID_ICodecAPIProxy

Określ ten identyfikator GUID, aby spowodować uwidocznienie interfejsu COM ICodecAPI (dla urządzeń do kodowania, które nie są przeznaczone do wideo, takich jak kodery audio).

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

CLSID_IVideoEncoderCodecAPIProxy

Określ ten identyfikator GUID, aby KsProxy eksponował zarówno interfejsy COM IVideoEncoder, jak i ICodecAPI dla zgodności wstecznej i dalszej.

Przykład:

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

Powodowałoby to, że KsProxy udostępniałby jedynie interfejs COM IVideoEncoder (CLSID_IVideoEncoderProxy).

Te interfejsy COM są udokumentowane w sekcji DirectShow pakietów SDK DirectX 9 i Windows przeznaczonych dla systemu Windows XP z dodatkiem SP1 lub nowszym.

Wartości metadanych, które anonsują możliwości filtru kodera

Wartości metadanych można określić w obszarze Parametry urządzenia\Możliwości rejestru w pliku INF kodera. Aplikacje mogą używać tych wartości metadanych, aby określić, jakie funkcje mają implementować lub uwidaczniać użytkownikowi.

Przykład:

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

Spowoduje to utworzenie elementu metadanych "{12345678-1234-1234-1234-12345678abcd} = guid1" w obszarze Parametry urządzenia\Możliwości ustawień rejestru kodera. Pusty wiersz jest niezbędny do utworzenia klucza rejestru, jeśli jeszcze nie istnieje.

Filtr kodera może określać takie statyczne metadane w pliku INF do użycia przez aplikacje. Na przykład system Windows XP Media Center Edition sprawdza kodery wskazujące, że są one zgodne z wersją Windows XP Media Center Edition.

Kategoria przesyłania strumieniowego jądra filtru

Filtry strumieniowania jądra muszą określać kategorię strumieniowania, do której należą. Firma Microsoft definiuje identyfikatory GUID dla typowych kategorii, w tym filtry kodujące oraz filtry multipleksera (mux).

Filtry wskazują odpowiednie kategorie, określając co najmniej jeden z następujących identyfikatorów GUID w dyrektywie AddInterface sekcji filtru w pliku INF swojego minidrivera:

Identyfikator GUID dla kategorii przesyłania strumieniowego w jądrze Nazwa Opis

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

KSCATEGORY_ENCODER

Określ ten identyfikator GUID dla filtrów kodera.

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

KSCATEGORY_MULTIPLEXER

Określ ten identyfikator GUID dla filtrów mux.

Aby zarejestrować filtr kodera, określ identyfikator GUID KSCATEGORY_ENCODER w sekcji DDInstall.Interfejs pliku INF sterownika. Przykład:

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

Uwaga: Identyfikator GUID określony dla KSNAME_Filter musi być zgodny z członkiem ReferenceGuid który określiliście w strukturze KSFILTER_DESCRIPTOR opisującej filtr.