AM_MEDIA_TYPE Struktur (strmif.h)
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Die AM_MEDIA_TYPE-Struktur beschreibt das Format eines Medienbeispiels.
Syntax
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Member
majortype
Globally Unique Identifier (GUID), der den Haupttyp des Medienbeispiels angibt. Eine Liste der möglichen Haupttypen finden Sie unter Medientypen.
subtype
GUID, die den Untertyp des Medienbeispiels angibt. Eine Liste der möglichen Untertypen finden Sie unter Medientypen. Bei einigen Formaten ist der Wert möglicherweise MEDIASUBTYPE_None, was bedeutet, dass für das Format kein Untertyp erforderlich ist.
bFixedSizeSamples
Wenn TRUE, haben Die Beispiele eine feste Größe. Dieses Feld ist nur informal. Für Audio ist es im Allgemeinen auf TRUE festgelegt. Für Video ist es normalerweise TRUE für unkomprimierte Videos und FALSE für komprimierte Videos.
bTemporalCompression
Bei TRUE werden die Beispiele mithilfe der temporalen Komprimierung (Interframe-Komprimierung) komprimiert. Der Wert TRUE gibt an, dass nicht alle Frames Keyframes sind. Dieses Feld ist nur informal.
lSampleSize
Größe des Beispiels in Bytes. Für komprimierte Daten kann der Wert 0 sein.
formattype
GUID, die die für den Formatblock verwendete Struktur angibt. Das pbFormat-Element verweist auf die entsprechende Formatstruktur. Zu den Formattypen gehören:
Formattyp | Struktur formatieren |
---|---|
|
|
|
|
|
|
|
|
|
Keine. |
|
|
|
|
|
|
|
Keine |
pUnk
Wird nicht verwendet. Auf NULL festgelegt.
cbFormat
Größe des Formatblocks in Bytes.
pbFormat
Zeiger auf den Formatblock. Der Strukturtyp wird vom Formattypmember angegeben. Die Formatstruktur muss vorhanden sein, es sei denn, der Formattyp ist GUID_NULL oder FORMAT_None.
Der pbFormat-Puffer muss durch Aufrufen von CoTaskMemAlloc zugewiesen werden. Um den Formatblock freizugeben, rufen Sie FreeMediaType auf.
Bemerkungen
Wenn zwei Pins verbunden sind, verhandeln sie einen Medientyp, der durch eine AM_MEDIA_TYPE-Struktur definiert wird. Der Medientyp beschreibt das Format der Daten, die von den Filtern ausgetauscht werden. Wenn sich die Filter nicht auf einen Medientyp einigen, können sie keine Verbindung herstellen.
Der Streamtyp wird durch zwei GUIDs angegeben, die als Haupttyp und Untertyp bezeichnet werden. Der Haupttyp definiert die allgemeine Kategorie, z. B. Video, Audio oder Bytestream. Der Untertyp definiert eine engere Kategorie innerhalb des Haupttyps. Videountertypen umfassen beispielsweise 8-Bit-, 16-Bit-, 24-Bit- und 32-Bit-RGB.
Auf die AM_MEDIA_TYPE-Struktur folgt ein Datenblock mit variabler Länge, der formatspezifische Informationen enthält. Das pbFormat-Element verweist auf diesen Block, der als Formatblock bezeichnet wird. Das Layout des Formatblocks hängt vom Typ der Daten im Stream ab und wird vom Formattypelement angegeben. Der Formatblock kann NULL sein. Überprüfen Sie den cbFormat-Member , um die Größe zu bestimmen. Wandeln Sie den pbFormat-Member um, um auf den Formatblock zuzugreifen. Zum Beispiel:
C++ |
---|
if (pmt->formattype == FORMAT_VideoInfo) { // Check the buffer size. if (pmt->cbFormat >= sizeof(VIDEOINFOHEADER)) { VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(pmt->pbFormat); /* Access VIDEOINFOHEADER members through pVih. */ } } |
Verwenden Sie die DisplayType-Methode , um detaillierte Informationen zu einem angegebenen Medientyp zu Debugzwecken abzurufen.
Requirements (Anforderungen)
Kopfzeile | strmif.h (include Dshow.h) |