AM_MEDIA_TYPE struttura (strmif.h)
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
La struttura AM_MEDIA_TYPE descrive il formato di un esempio multimediale.
Sintassi
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Members
majortype
Identificatore univoco globale (GUID) che specifica il tipo principale dell'esempio multimediale. Per un elenco dei possibili tipi principali, vedere Tipi di supporti.
subtype
GUID che specifica il sottotipo dell'esempio multimediale. Per un elenco di sottotipi possibili, vedere Tipi di supporti. Per alcuni formati, il valore potrebbe essere MEDIASUBTYPE_None, il che significa che il formato non richiede un sottotipo.
bFixedSizeSamples
Se TRUE, gli esempi sono di dimensioni fisse. Questo campo è solo informativo. Per l'audio, in genere è impostato su TRUE. Per il video, in genere è TRUE per il video non compresso e FALSE per il video compresso.
bTemporalCompression
Se TRUE, gli esempi vengono compressi usando la compressione temporale (interframe). Un valore true indica che non tutti i fotogrammi sono fotogrammi chiave. Questo campo è solo informativo.
lSampleSize
Dimensioni dell'esempio in byte. Per i dati compressi, il valore può essere zero.
formattype
GUID che specifica la struttura usata per il blocco di formato. Il membro pbFormat punta alla struttura di formato corrispondente. I tipi di formato includono quanto segue:
Tipo di formato | Struttura formato |
---|---|
|
|
|
|
|
|
|
|
|
Nessuno. |
|
|
|
|
|
|
|
Nessuno |
pUnk
Non usato. Impostare su NULL.
cbFormat
Dimensioni del blocco di formato, in byte.
pbFormat
Puntatore al blocco di formato. Il tipo di struttura viene specificato dal membro formattype . La struttura di formato deve essere presente, a meno che il formato non sia GUID_NULL o FORMAT_None.
Il buffer pbFormat deve essere allocato chiamando CoTaskMemAlloc. Per rilasciare il blocco di formato, chiamare FreeMediaType.
Commenti
Quando due pin si connettono, negoziano un tipo di supporto, definito da una struttura AM_MEDIA_TYPE . Il tipo di supporto descrive il formato dei dati che i filtri cambieranno. Se i filtri non accettano un tipo di supporto, non possono connettersi.
Il tipo di flusso viene specificato da due GUIDs, denominato tipo principale e sottotipo. Il tipo principale definisce la categoria generale, ad esempio video, audio o flusso di byte. Il sottotipo definisce una categoria più stretta all'interno del tipo principale. Ad esempio, i sottotipi video includono 8 bit, 16 bit, 24 bit e RGB a 32 bit.
La struttura AM_MEDIA_TYPE è seguita da un blocco a lunghezza variabile di dati che contiene informazioni specifiche del formato. Il membro pbFormat punta a questo blocco, denominato blocco di formato. Il layout del blocco di formato dipende dal tipo di dati nel flusso e viene specificato dal membro formattype . Il blocco di formato potrebbe essere NULL. Controllare il membro cbFormat per determinare le dimensioni. Eseguire il cast del membro pbFormat per accedere al blocco di formato. Ad esempio:
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. */ } } |
Per ottenere informazioni dettagliate su un tipo di supporto specificato per scopi di debug, usare il metodo DisplayType .
Requisiti
Intestazione | strmif.h (include Dshow.h) |