So enumerieren Sie Codec-Formate

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Sie wurde durch den Quellleser und den Senkenschreiber ersetzt. Quellleser und Senkenschreiber wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit den Quellleser und senkenden Writer anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Ein Codecformat ist ein Streamkonfigurationsobjekt, das mit Daten aus einem Codec aufgefüllt wird. Jedes Codecformat enthält eine vom Codec unterstützte Medienkonfiguration. Die meisten Audiocodecs unterstützen eine begrenzte Anzahl von Formaten, von denen jedes vom Codec aufgezählt wird und auf die mit den Methoden von IWMCodecInfo zugegriffen werden kann. Videocodecs hingegen bieten nur ein einziges Format. Dies liegt daran, dass Videostreams Variablen wie die Framegröße aufweisen, die flexibler sind als die Einstellungen eines Audiostreams. Bei einem Videostream müssen Sie einige der Datenstromkonfigurationswerte eingeben. Audiostreamkonfigurationen sollten nur bearbeitet werden, um einen Namen, einen Verbindungsnamen und eine Streamnummer zuzuweisen. Weitere Informationen finden Sie unter Gemeinsame Konfiguration für alle Streams.

Die aufgelisteten Codecformate hängen von den aktuellen Codecaufzählungseinstellungen ab, die mit IWMCodecInfo3::SetCodecEnumerationSetting festgelegt werden. Derzeit werden nur zwei Codeceigenschaften unterstützt: g_wszNumPasses, die die Anzahl der vom Codec ausgeführten Codierungsdurchläufe angibt, und g_wszVBREnabled, die angibt, ob der Codec die Codierung mit variabler Bitrate verwendet. Die maximale Anzahl von Codierungsdurchläufen, die von einem der Codecs unterstützt werden, beträgt zwei. Daher gibt es vier verschiedene Konfigurationen, für die Sie Codecs abrufen können, wie in der folgenden Tabelle gezeigt.

  CBR-Stream (Constant Bit Rate) 2-Pass-CBR-Stream Qualitätsbasierter VBR-Stream (Variable Bit Rate) Bitratenbasierter VBR-Stream (eingeschränkt oder nicht eingeschränkt)
g_wszVBREnabled FALSE FALSE TRUE TRUE
g_wszNumPasses 1 2 1 2

 

Um die für einen Codec unterstützten Formate aufzulisten, verwenden Sie IWMCodecInfo::GetCodecFormatCount , um die Anzahl der unterstützten Codecs zu ermitteln. Rufen Sie dann IWMCodecInfo::GetCodecFormat für jedes Format auf. Die Formatindizes reichen von 0 bis 1 weniger als die Gesamtzahl der unterstützten Formate. Sie können eine Beschreibung des Formats abrufen, indem Sie IWMCodecInfo2::GetCodecFormatDesc aufrufen. Wenn Sie GetCodecFormatDesc verwenden, müssen Sie getCodecFormat nicht verwenden, da das Streamkonfigurationsobjekt von beiden Methoden abgerufen wird. Videocodecformate enthalten keine Beschreibung. Jeder Videocodec hat nur ein Format, das für alle Streams dieses Typs verwendet wird.

Wenn Sie ein Codecformat abrufen, erhalten Sie die IWMStreamConfig-Schnittstelle eines Streamkonfigurationsobjekts, das die Formateinstellungen enthält.

Abrufen von Streamkonfigurationsinformationen aus Codecs