Informazioni sui tipi di supporti (Microsoft Media Foundation)
Un tipo di supporto descrive il formato di un flusso multimediale. In Microsoft Media Foundation i tipi di supporti sono rappresentati dall'interfaccia IMFMediaType . Questa interfaccia eredita l'interfaccia IMFAttributes . I dettagli di un tipo di supporto vengono specificati come attributi.
Per creare un nuovo tipo di supporto, chiamare la funzione MFCreateMediaType . Questa funzione restituisce un puntatore all'interfaccia IMFMediaType . Il tipo di supporto inizialmente non ha attributi. Per impostare i dettagli del formato, impostare gli attributi pertinenti.
Per un elenco degli attributi del tipo di supporto, vedere Attributi del tipo di supporto.
Tipi principali e sottotipi
Due informazioni importanti per qualsiasi tipo di supporto sono il tipo principale e il sottotipo.
- Il tipo principale è un GUID che definisce la categoria complessiva dei dati in un flusso multimediale. I tipi principali includono video e audio. Per specificare il tipo principale, impostare l'attributo MF_MT_MAJOR_TYPE . Il metodo IMFMediaType::GetMajorType restituisce il valore di questo attributo.
- Il sottotipo definisce ulteriormente il formato. Ad esempio, all'interno del tipo principale del video, sono disponibili sottotipi per RGB-24, RGB-32, YUY2 e così via. All'interno dell'audio sono disponibili audio PCM, audio a virgola mobile IEEE e altri. Il sottotipo fornisce più informazioni rispetto al tipo principale, ma non definisce tutti gli elementi relativi al formato. Ad esempio, i sottotipi video non definiscono le dimensioni dell'immagine o la frequenza dei fotogrammi. Per specificare il sottotipo, impostare l'attributo MF_MT_SUBTYPE .
Tutti i tipi di supporti devono avere un GUID di tipo principale e un GUID di sottotipo. Per un elenco dei GUID di tipo principale e sottotipo, vedere GUID di tipo multimediale.
Perché gli attributi?
Gli attributi presentano diversi vantaggi rispetto alle strutture di formato usate nelle tecnologie precedenti, ad esempio DirectShow e Windows Media Format SDK.
È più semplice rappresentare i valori "don't know" o "don't care". Ad esempio, se stai scrivendo una trasformazione video, potresti sapere in anticipo quali formati RGB e YUV supporta la trasformazione, ma non le dimensioni del fotogramma video, fino a quando non li ottieni dall'origine video. Analogamente, potresti non preoccuparti di alcuni dettagli, ad esempio i primari video. Con una struttura di formato, ogni membro deve essere riempito con un valore. Di conseguenza, è diventato comune usare zero per indicare un valore sconosciuto o predefinito. Questa procedura può causare errori se un altro componente considera zero come valore legittimo. Con gli attributi, è sufficiente omettere gli attributi sconosciuti o non rilevanti per il componente.
Man mano che i requisiti sono cambiati nel tempo, le strutture di formato sono state estese aggiungendo dati aggiuntivi alla fine della struttura. Ad esempio, WAVEFORMATEXTENSIBLE estende la struttura WAVEFORMATEX . Questa procedura è soggetta a errori, perché i componenti devono eseguire il cast dei puntatori di struttura ad altri tipi di struttura. Gli attributi possono essere estesi in modo sicuro.
Sono state definite strutture di formato non compatibili a vicenda. Ad esempio, DirectShow definisce le strutture VIDEOINFOHEADER e VIDEOINFOHEADER2 . Gli attributi vengono impostati indipendentemente l'uno dall'altro, quindi questo problema non si verifica.
Argomenti correlati