Freigeben über


Verwenden von Dateneinheitserweiterungen (Microsoft Media Foundation)

Die Audio- und Videocodecs von Windows Media sind so konzipiert, dass sie gut mit dem ASF-Container (Advanced Systems Format) funktionieren. ASF ist das strukturierte Format, das für WMA-Dateien (Windows Media Audio) und Windows Media Video (WMV)-Dateien verwendet wird. Es handelt sich um ein erweiterbares Format, das für das Streaming von Daten entwickelt wurde. Eines der ungewöhnlichen Merkmale der ASF-Struktur ist die Möglichkeit, Metadaten an einzelne Beispiele anzufügen und diese Daten mit den Beispielen in den Bitstream einzubetten. Ein Auf diese Weise gespeichertes Metadatenelement wird als Dateneinheitserweiterung oder Beispielerweiterung bezeichnet.

Eine Dateneinheitserweiterung kann Informationen enthalten, die für den Encoder, den Decoder oder die Playeranwendung erforderlich sind. Die meisten Dateneinheitserweiterungstypen, die in den Codecs der Windows Media 9-Serie implementiert sind, enthalten Daten, die für die Anwendung bestimmt sind, die die Medien decodiert und rendert. Beispielsweise können Sie SMPTE-Zeitcodes aus Quelldaten verwalten, indem Sie sie als Dateneinheitenerweiterungen hinzufügen. Für die folgenden Codecfeatures sind jedoch Dateneinheitserweiterungen erforderlich:

  • Erzwungene Keyframeeinfügung
  • Interlaced Video Encoding
  • Die Schwierigkeit bei der Verwendung von Dateneinheitserweiterungen beim direkten Zugriff auf den Codec ist der Mechanismus, über den das Objekt die Erweiterungsdaten empfängt. Dies wird durch die Objekte des Windows Media Format SDK mithilfe von Pufferobjekten erreicht, die zur Unterstützung dieses Features entwickelt wurden. Es wird empfohlen, das Windows Media Format SDK zu verwenden, um die Codecfeatures zu aktivieren, die Dateneinheitserweiterungen erfordern. Sie können jedoch dafür sorgen, dass diese Features mit den eigenständigen Codecobjekten funktionieren.

Übergeben erweiterter Beispiele an die Codec-Objekte

Das Windows Media Format SDK verwendet Pufferobjekte, die INSSBuffer-Schnittstellen verfügbar machen. Die neueste Schnittstelle ist INSSBuffer4. Um Beispiele an ein Codecobjekt mit Dateneinheitenerweiterungen zu übergeben, müssen Sie ein Pufferobjekt verwenden, das die IMediaBuffer - oder IMFMediaBuffer-Schnittstelle und die INSSBuffer-Schnittstelle implementiert. Sie können dazu Pufferobjekte verwenden, die vom Windows Media Format SDK oder Microsoft Media Foundation erstellt wurden, oder Sie können eine eigene Pufferklasse erstellen, die die Anforderungen erfüllt. Um Eine eigene Pufferklasse zu erstellen, müssen Sie die Methodenprototypen für die INSSBuffer-Schnittstellen erfüllen. Diese Schnittstellendefinitionen finden Sie in der Headerdatei wmsbuffer.h, die mit dem Windows Media Format SDK installiert wird.

Windows Media-Codecs