Stichprobenerweiterungstypen
Beispielerweiterungen, auch als Dateneinheitserweiterungen (Data Unit Extensions, DUEs) oder Puffereigenschaften bezeichnet, sind Datenelemente, die an die Medienbeispiele im Datenabschnitt der ASF-Datei angefügt werden. Mehrere Arten von Beispielerweiterungen werden im Windows Media Format SDK definiert. Sie können auch eigene Erweiterungstypen erstellen.
Um Beispielerweiterungen zu verwenden, müssen Sie den Erweiterungstyp in den Datenstromkonfigurationsdaten des Profils identifizieren. Rufen Sie die IWMStreamConfig2::AddDataUnitExtension-Methode auf, um einen Stream zum Akzeptieren von Beispielen mit erweiterten Daten zu konfigurieren.
Einzelne Beispielerweiterungen müssen den Eingabebeispielen durch Aufrufen der INSSBuffer3::SetProperty-Methode hinzugefügt werden. Beim Lesen von Beispielen können Sie die INSSBuffer3::GetProperty-Methode aufrufen, um die Erweiterungsdaten abzurufen. Sie können auch die Methoden der INSSBuffer4-Schnittstelle verwenden, um die dateneinheitenerweiterungen aufzuzählen, die an ein Beispiel angefügt sind.
In der folgenden Tabelle sind die vordefinierten Bezeichner der Dateneinheitenerweiterung aufgeführt, und es werden die Daten beschrieben, die den jeweiligen Beispielen angefügt sind.
| Beispielerweiterungs-GUID | BESCHREIBUNG |
|---|---|
| WM_SampleExtensionGUID_OutputCleanPoint | Die Daten geben an, ob das Beispiel ein Cleanpointist. Der Wert 0 (null) gibt an, dass das Beispiel kein Cleanpoint ist. Ein Wert ungleich 0 (null) gibt an, dass es sich um einen Cleanpoint handelt. Dieser DUE-Typ (Sample Data Unit Extension) wird verwendet, um Cleanpoints beim Schreiben von vorkomprimierten Medienstreams nachzuverfolgen, die mit Codecs von Drittanbietern codiert wurden. |
| WM_SampleExtensionGUID_Timecode | Die Daten sind eine WMT_TIMECODE_EXTENSION_DATA Struktur, die dem Beispiel zugeordnete SMPTE-Zeitcodedaten enthält. Die Größe für due ist immer WM_SampleExtension_Timecode_Size, also 14 Bytes. |
| WM_SampleExtensionGUID_FileName | Diese Art von Beispielerweiterung wird für Dateistreams verwendet. Die Daten in einem Dateistreambeispiel sind ein Teil einer Datendatei. Die Daten in der Beispielerweiterung geben den Namen der Datei an, aus der der Inhalt des Beispiels entnommen wurde. Der Dateiname ist eine Zeichenfolge mit Breitzeichen, die den Dateinamen im Format name.extension ohne Pfadinformationen enthält. |
| WM_SampleExtensionGUID_ContentType | Die Daten geben den Inhaltstyp an, der im Beispiel enthalten ist. Diese Art von Beispielerweiterung wird mit Videostreams mit Zeilensprung verwendet. Für alle Interlacinginhalte wird das flag WM_CT_INTERLACED verwendet, das durch ein bitweises OR mit WM_CT_BOTTOM_FIELD_FIRST, WM_CT_TOP_FIELD_FIRST oder WM_CT_REPEAT_FIRST_FIELD kombiniert wird. Die Feldreihenfolge wird nicht im Codierungsprozess verwendet, sondern mit den komprimierten Stichproben beibehalten, sodass sie an die Renderinghardware übergeben werden kann. Durch das Wiedergeben von Inhalten mit der falschen Feldreihenfolge werden Artefakte wie Bewegungs-Jitter im Video eingeführt. Die Größe für diese DUE-Datei ist immer WM_SampleExtension_ContentType_Size. |
| WM_SampleExtensionGUID_PixelAspectRatio | Die Daten geben das Pixel-Seitenverhältnis des Inhalts im Beispiel an. Dies gilt nur für Videos. Dieser Erweiterungstyp wird verwendet, um das Seitenverhältnis von nicht quadratischen Pixeln zu identifizieren. Weitere Informationen finden Sie unter So lesen und schreiben Sie Video Streams mit nicht quadratischen Pixeln. Seitenverhältniswerte werden als Wort gespeichert, dessen unteres Byte der X-Aspekt und dessen hohes Byte der Y-Aspekt ist. Beispielsweise wird 16:9 als 0x0910 gespeichert. Die Größe für due ist immer WM_SampleExtension_PixelAspectRatio_Size, also 2 Byte. |
| WM_SampleExtensionGUID_SampleDuration | Die Daten geben die Dauer des im Pufferobjekt enthaltenen Beispiels in Millisekunden an. Wenn bei der Wiedergabe due festgelegt ist, verwendet das Readerobjekt es, um den vorhandenen Wert für die Samplingdauer zu überschreiben. Diese DUE wird automatisch von den SDK-Laufzeitkomponenten in Videostreams mit Bitraten von 100 KBit/s oder höher festgelegt, wobei der Mehraufwand der DUE-Informationen nicht signifikant ist. Sie ist nicht für Streams mit Bitraten unter 100 KBit/s festgelegt. Anwendungen sollten diesen DUE nicht manuell festlegen, da der Writer (in Datenströmen mit hoher Bitrate) den Wert mit eigenen Daten überschreibt. Die Größe für due ist immer WM_SampleExtension_SampleDuration_Size, also 2 Byte. |
| WM_SampleExtensionGUID_ChromaLocation | Die Daten geben den Typ des subsampling-Typs an, der im I420-Videoformat verwendet wird. Der Wert dieser Erweiterung wird auf einen der folgenden Werte festgelegt:
Die Größe dieses DUE ist immer WM_SampleExtension_ChromaLocation_Size, also 1 Byte. |
| WM_SampleExtensionGUID_ColorSpaceInfo | Die Daten enthalten Informationen zum Farbraum, der für den aktuellen Videoframe verwendet wird. Der Wert dieser Erweiterung ist eine WMT_COLORSPACEINFO_EXTENSION_DATA-Struktur. Diese Dateneinheitenerweiterung ist im Profil nicht konfiguriert. Sie ist in der Ausgabe von Beispielen des Decoders enthalten. Die Größe dieses DUE-Werts ist immer WM_SampleExtension_ColorSpaceInfo_Size, also 3 Byte. |
| WM_SampleExtensionGUID_UserDataInfo | Die Daten sind benutzerdefinierte Benutzerdaten. Die ersten vier Bytes der Daten enthalten die Größe der benutzerdefinierten Daten. Das nächste Byte enthält den Typ der Benutzerdaten, die in der Beispielerweiterung bereitgestellt werden. Die folgenden Typen werden unterstützt:
Diese Dateneinheitenerweiterung ist im Profil nicht konfiguriert. Sie ist in Beispielen enthalten, die vom Decoder ausgegeben werden. |
| WM_SampleExtensionGUID_SampleProtectionSalt | Die Daten werden nach Beispiel verschlüsselt. Dieser Beispielerweiterungstyp wird für Inhalte verwendet, die aus einem Nicht-ASF-Dateiformat und einem anderen Rechteschutzschema als Windows Medien-DRM importiert werden. Beim Importieren geschützter Inhalte muss jedes Beispiel einen eindeutigen Salt enthalten. In der Regel ist dieser Wert ein monoton steigender Indikator. |