Encoder-API

Die Encoder-API bietet eine einheitliche Schnittstelle zum Konfigurieren von Software- und Hardwareencodern. Anwendungen können die Encoder-API verwenden, um einen Encoder zu konfigurieren und die Konfigurationseinstellungen zu speichern. Encoderhersteller können die Encoder-API verwenden, um die Funktionen eines Encoders verfügbar zu machen. Obwohl die Encoder-API hauptsächlich für Encoder konzipiert ist, ist sie allgemein genug, dass decoder sie auch unterstützen können.

Die Encoder-API wird für Anwendungen über die ICodecAPI-Schnittstelle verfügbar gemacht, die vom Encoderfilter verfügbar gemacht wird. Der Encoderfilter kann ein nativer DirectShow-Filter, ein Hardwareencoder oder ein DirectX Media Object (DMO.

  • Softwarefilter: Ein Encoder, der als nativer DirectShow-Filter implementiert ist, sollte die ICodecAPI direkt verfügbar machen.
  • Hardwareencoder: Das Codierungsgerät wird über einen oder mehrere AVStream-Minitreiber verfügbar gemacht, die im Benutzermodus von KSProxy dargestellt werden. KSProxy übersetzt ICodecAPI-Methodenaufrufe in KS-Eigenschaftensätze. Weitere Informationen finden Sie in der DDK-Dokumentation.
  • DMOs: Die DMO sollte die ICodecAPI-Schnittstelle verfügbar machen. DirectShow-Anwendungen können den DMO Wrapperfilter abfragen, der die Schnittstelle verfügbar macht, indem sie die DMO. Anwendungen, die nicht auf DirectShow basieren, können die DMO abfragen.

Encoder Capabilties

Ein Encoder kann eine Liste von Funktionen auf hoher Ebene registrieren, indem er sie in der Systemregistrierung speichert. Jede Funktion wird durch eine GUID identifiziert. Gehen Sie wie folgt vor, um die Funktionen eines bestimmten Encoders aufzählen zu können:

  1. Erstellen Sie den Moniker, der den Encoderfilter darstellt. (Siehe Verwenden des Systemgeräte-Enumerators.)
  2. Fragen Sie den Filtermoniker für die IGetCapabilitiesKey-Schnittstelle ab.
  3. Rufen Sie IGetCapabilitiesKey::GetCapabilitiesKey auf. Die -Methode gibt ein Handle für den Registrierungsschlüssel zurück, der die Liste der Funktionen des Filters enthält.
  4. Rufen Sie die RegEnumValue-Funktion auf, um die Werte für den zurückgegebenen Schlüssel aufzählen.

Wenn Sie einen Encoder entwickeln, erstellen Sie die Registrierungseinträge für die Funktionen, wenn der Filter registriert wird. Erstellen Sie für Softwarefilter einen Schlüssel namens Capabilities, der an die Schlüssel FilterData und FriendlyName angrenzend ist. In der Regel fügen Sie diese Informationen nach dem Aufruf von AMovieDllRegisterServer2 hinzu, um die Standardfilterdaten zu registrieren. Weitere Informationen finden Sie unter Registrieren von DirectShow-Filtern. Alternativ können Sie einen CapabilitiesLocation-Schlüssel erstellen, der eine Zeichenfolge enthält, die den Speicherort des Schlüssels Capabilities in der Registrierung angibt. Die Zeichenfolge sollte mit \ "HKLM", "HKCR" \ oder "HKCU" beginnen, um \ die Registrierungsunterstruktur anzugeben. For Plug and Play devices, the driver's setup files should create a Capabilities key adjacent to the filter's FriendlyName key, or it can use a CapabilitiesLocation key as described for software filters.

Nachdem Sie den Schlüssel Funktionen erstellt haben, erstellen Sie einen Wert für jede Funktions-GUID. Der Name des Werts sollte die Zeichenfolgenform der GUID in der Form {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} sein. Jeder Werttyp sollte einer der folgenden sein:

  • Einzelner numerischer Wert. Verwenden Sie einen DWORD-Wert.
  • GUID. Verwenden Sie die Zeichenfolgenform der GUID.
  • Numerische Paare. Verwenden Sie eine Zeichenfolge im Formular "a,b", um Wertepaare wie Breite und Höhe oder Zähler und Nenner für Brüche zu darstellen.
  • Arrays von Werten. Verwenden Sie mehrere Zeichenfolgen (REG _ SZ _ MULTI), um mehr als einen Wert zu darstellen.

Das folgende Beispiel zeigt das Registrierungslayout für einen Softwarefilter:

\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
    
Values: 
    
    guid1: 1234 (REG_DWORD)   
    
    guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
    
    guid3: "2","4","6" (REG_SZ_MULTI)
    
    guid4: "720,480" (REG_SZ) 

Encoderprofile

Ein Encoderprofil ist eine feste Liste von Konfigurationseinstellungen, die zur Laufzeit auf einen Encoder angewendet werden können. Profile sind unabhängig vom Encoder. Eine Anwendung kann einen Encoder auswählen, dann ein Profil auswählen und die Profileinstellungen auf den Encoder anwenden. Profile werden durch GUID identifiziert und sollten an folgendem Speicherort in der Registrierung gespeichert werden:

\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\

where Profile GUID

ist die Zeichenfolgenform der GUID, die das Profil identifiziert. Erstellen Sie Werte für jede Einstellung. Erstellen Sie außerdem einen Zeichenfolgenwert namens "FriendlyName", dessen Daten das Profil identifizieren (z. B. "LowBandwidthVideo").

Encoder- und Decoderentwicklung