Encoderinstallation und -registrierung
Die INF-Datei für einen Treiber mit einem Encoderfilter muss Einträge enthalten, die Folgendes definieren:
Zusätzliche Kernelstreamingerfassungskomponenten
Welche COM-Schnittstelle KsProxy verfügbar machen soll
Metadatenwerte, die die Funktionen des Encoderfilters beschreiben
Die Kernelstreamingkategorie des Filters
Zusätzliche Kernelstreamingerfassungskomponenten
Die ZUM Installieren des Treibers für ein Encodergerät verwendete INF-Datei muss im Abschnitt [DefaultInstall] als Erfassungstreiber auf ks.inf und kscaptur.inf verweisen, da diese Dateien die erforderliche Unterstützung für Encoderkomponenten hinzufügen. Beispiel:
[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT
Welche COM-Schnittstelle KsProxy verfügbar machen soll
Geben Sie im Abschnitt AddReg der INF-Datei Ihres Treibers eine der folgenden drei GUIDs an, um die COM-Schnittstelle anzugeben, die das KsProxy-Plug-In (encapi.dll) für Clients verfügbar machen soll. Die COM-Schnittstelle wird durch die Eigenschaftsunterstützung bestimmt, die Sie im Encoderfilter implementiert haben:
Schnittstellen-GUID | Name | BESCHREIBUNG |
---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
Geben Sie diese GUID an, damit KsProxy die IVideoEncoder-COM-Schnittstelle verfügbar macht (aus Gründen der Abwärtskompatibilität mit der älteren Encoderunterstützung, die von Microsoft bereitgestellt wird). Clients müssen diese Schnittstelle von der IEncoderAPI COM-Schnittstelle ableiten. |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
Geben Sie diese GUID an, damit KsProxy die ICodecAPI COM-Schnittstelle verfügbar macht (für Geräte ohne Videocodierung, z. B. reine Audio-Encoder). |
{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C} |
CLSID_IVideoEncoderCodecAPIProxy |
Geben Sie diese GUID an, damit KsProxy sowohl die IVideoEncoder - als auch die ICodecAPI-COM-Schnittstelle verfügbar macht (für die Abwärts- und Vorwärtskompatibilität). |
Beispiel:
[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,
Dies würde dazu führen, dass KsProxy nur die COM-Schnittstelle IVideoEncoder (CLSID_IVideoEncoderProxy) verfügbar macht.
Diese COM-Schnittstellen sind im Abschnitt DirectShow der DirectX 9- und Windows-SDKs für Windows XP mit SP1 und höher dokumentiert.
Metadatenwerte, die die Funktionen des Encoderfilters ankündigen
Sie können Metadatenwerte im Bereich Geräteparameter\Funktionen der Registrierung in der INF-Datei des Encoders angeben. Anwendungen können diese Metadatenwerte verwenden, um zu bestimmen, welche Funktionen dem Benutzer implementiert oder verfügbar gemacht werden sollen.
Beispiel:
[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1
Dadurch würde ein Metadatenelement "{12345678-1234-1234-1234-1234-12345678abcd} = guid1" im Bereich Geräteparameter\Funktionen der Registrierungseinstellungen des Encoders erstellt. Die leere Zeile ist erforderlich, um den Registrierungsschlüssel zu erstellen, wenn er noch nicht vorhanden ist.
Ein Encoderfilter kann solche statischen Metadaten in seiner INF-Datei für die Verwendung durch Anwendungen angeben. Windows XP Media Center Edition sucht beispielsweise nach Encodern, die angeben, dass sie windows XP Media Center Edition-kompatibel sind.
Kernelstreamingkategorie des Filters
Kernelstreamingfilter müssen die Kernelstreamingkategorie angeben, zu der sie gehören. Microsoft definiert GUIDs für allgemeine Kategorien, einschließlich Encoderfiltern und Muxerfiltern .
Filter geben ihre jeweiligen Kategorien an, indem sie eine oder mehrere der folgenden GUIDs in einer AddInterface-Direktive des Abschnitts des Filters der INF-Datei des Minidrivers angeben:
Kernelstreamingkategorie-GUID | Name | BESCHREIBUNG |
---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
Geben Sie diese GUID für Encoderfilter an. |
{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
Geben Sie diese GUID für Muxfilter an. |
Um einen Encoderfilter zu registrieren, geben Sie die KSCATEGORY_ENCODER GUID im DDInstall Ihres Treibers an. Schnittstelle INF-Dateiabschnitt. Beispiel:
[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"
Hinweis: Die für KSNAME_Filter angegebene GUID muss mit dem ReferenceGuid-Member übereinstimmen, das Sie in der KSFILTER_DESCRIPTOR-Struktur angegeben haben, die Ihren Filter beschreibt.