Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Windows XP Service Pack 1 hat Microsoft drei Kernelstreaming-Eigenschaftensätze und eine Enumeration in ksmedia.h definiert, um nur Video-Encodergeräte zu unterstützen. Jeder Eigenschaftensatz enthält eine einzelne Eigenschaft. Anders ausgedrückt, erhält jede Eigenschaft einen eigenen Eigenschaftensatz. Wenn Ihr Treiber Get-Property- oder Set-Property-Aufrufe vornimmt, geben Sie die GUID des Eigenschaftensatzes (wie in ksmedia.h definiert) im Set-Element der KSPROPERTY-Struktur und null im ID-Element an, wenn Sie den Aufruf einrichten:
| Eigenschaftensatz | BESCHREIBUNG |
|---|---|
| ENCAPIPARAM_BITRATE | Implementieren Sie diese Eigenschaft, um die vom Encodergerät unterstützten Codierungsbitraten anzugeben. Weitere Informationen finden Sie unter Encoder-Codebeispiele . |
| ENCAPIPARAM_BITRATE_MODE | Implementieren Sie diesen Eigenschaftensatz, um die vom Gerät unterstützten Codierungsmodi anzugeben. Dieser Eigenschaftensatz verwendet die VIDEOENCODER_BITRATE_MODE Enumeration, um die unterstützten Modi anzugeben. Weitere Informationen finden Sie unter Encoder-Codebeispiele . |
| ENCAPIPARAM_PEAK_BITRATE | Implementieren Sie diese Eigenschaft, um die maximale Codierungsbitrate des Geräts anzugeben. |
Clients greifen auf diese Eigenschaften zu, indem sie die IVideoEncoder COM-Schnittstelle von der IEncoderAPI COM-Schnittstelle ableiten (in der Dokumentation zum Windows Software Development Kit (SDK) beschrieben).
Ein Minidriver muss Standardwerte für jede der ENCAPIPARAM_Xxx-Eigenschaften angeben. Das Thema Encoder-Codebeispiele veranschaulicht, wie Standardeigenschaftenwerte angegeben werden. Während der Entwicklung und des Debuggens eines Encoderfilters kann die aktuelle Eigenschaftenseite von einem Minidriver ausgelöst werden, der den ENCAPIPARAM_BITRATE Eigenschaftensatz unterstützt.
In DirectX 9.0 wurden sechs zusätzliche Eigenschaftensätze und ein Ereignissatz in ksmedia.h definiert, um eine größere Vielfalt von Encodern, einschließlich ausschließlich Audio-Encoder, zu unterstützen. Wie bei ENCAPIPARAM_Xxx-Eigenschaften erhält jede Eigenschaft einen eigenen Eigenschaftensatz:
| Eigenschaftensatz | BESCHREIBUNG |
|---|---|
| CODECAPI_VIDEO_ENCODER | Wenn Ihr Gerät das Codieren von Videostreams (einschließlich Hilfsaudio wie TV-Audio) unterstützt, implementieren Sie die Unterstützung für diesen Eigenschaftensatz. |
| CODECAPI_AUDIO_ENCODER | Wenn Es sich bei Ihrem Gerät um einen reinen Audio-Encoder handelt, implementieren Sie anstelle von CODECAPI_VIDEO_ENCODER Unterstützung für diesen Eigenschaftensatz. |
| CODECAPI_SETALLDEFAULTS | Implementieren Sie diese Eigenschaft, um alle internen Einstellungen des Encodergeräts zurückzusetzen, z. B. Codierungsbitrate und Codierungsmodus auf ihre Standardwerte. |
| CODECAPI_ALLSETTINGS | Implementieren Sie diese Eigenschaft, um die aktuellen Einstellungen des Encodergeräts zu kommunizieren. Dieser Eigenschaftensatz wird für die Kommunikation mit und von Clients verwendet. |
| CODECAPI_SUPPORTSEVENTS | Wenn Ihr Gerät Ereignisse aus dem Benutzermodus unterstützt , z. B. um den Codierungsmodus, die Bitrate oder andere Einstellungen zu ändern, implementieren Sie diesen Eigenschaftensatz. Wenn Sie diesen Eigenschaftensatz implementieren, müssen Sie auch Unterstützung für das CODECAPI_CHANGELISTS-Ereignis implementieren. |
| CODECAPI_CURRENTCHANGELIST | Implementieren Sie diesen Eigenschaftensatz, um zu bestimmen, welche Encoderparameter in einem vorherigen Aufruf geändert wurden, um eine oder mehrere Encodereigenschaften festzulegen. |
| Ereignissatz | BESCHREIBUNG |
|---|---|
Wenn das Gerät das Reagieren auf Benutzermodusereignisse über den CODECAPI_SUPPORTSEVENTS-Eigenschaftensatz unterstützt, implementieren Sie dieses Ereignissatzes, um eine Liste der Encodereinstellungen zurückzugeben, die als Ergebnis eines früheren Set-Eigenschaftsaufrufs eines Clients an CODECAPI_SETALLDEFAULTS oder CODECAPI_ALLSETTINGS geändert wurden. |
Clients greifen über die ICodecAPI COM-Schnittstelle (in der Windows SDK-Dokumentation beschrieben) auf diese Eigenschaften zu. Weitere Informationen zu den COM-Schnittstellen finden Sie unter Encoder-Installation und -Registrierung , einschließlich der Angabe, welche Schnittstelle KsProxy verfügbar machen soll.
Ein Minidriver sollte Unterstützung für grundlegende Get-Property-Abfragen implementieren. Das Thema Encoder-Codebeispiele veranschaulicht, wie Get-Property-Abfragen unterstützt werden.
Wenn Sie einen Encoderfilter entwickeln, verschieben Sie die Codierungsfunktionen in einen separaten Filter von einem Videoaufnahmefilter. Definieren Sie Ihre eigenen privaten Medien, damit Graph-Generatoren Encoder- und Aufnahmefilter ordnungsgemäß verbinden können. Wenn Ihre Hardware in der Lage ist, Bus-Mastering von nicht codierten Inhalten durchzuführen, können Sie auch öffentliche Medien freigeben. Wenn Sie sowohl öffentliche als auch private Medien implementieren, sollten Sie zuerst die privaten Medien auflisten, da dies die Grafikaufbauzeit reduziert und es erleichtert, beim Erstellen eines Filterdiagramms den richtigen Filter zu finden.
Weitere Informationen zur Verwendung von Medien und mehreren Instanzen eines Filters (in separaten Filterdiagrammen) finden Sie unter "Mittel" und "Kategorien".