AM_MEDIA_TYPE structure (strmif.h)
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
La structure AM_MEDIA_TYPE décrit le format d’un exemple de média.
Syntaxe
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Membres
majortype
Identificateur global unique (GUID) qui spécifie le type principal de l’exemple de média. Pour obtenir la liste des types principaux possibles, consultez Types de médias.
subtype
GUID qui spécifie le sous-type de l’exemple de média. Pour obtenir la liste des sous-types possibles, consultez Types de médias. Pour certains formats, la valeur peut être MEDIASUBTYPE_None, ce qui signifie que le format ne nécessite pas de sous-type.
bFixedSizeSamples
Si la valeur est TRUE, les échantillons sont de taille fixe. Ce champ est à information uniquement. Pour l’audio, il est généralement défini sur TRUE. Pour la vidéo, elle est généralement TRUE pour la vidéo non compressée et FALSE pour la vidéo compressée.
bTemporalCompression
Si la valeur est TRUE, les exemples sont compressés à l’aide de la compression temporelle (interframe). La valeur TRUE indique que toutes les images ne sont pas des images clés. Ce champ est à information uniquement.
lSampleSize
Taille de l’échantillon en octets. Pour les données compressées, la valeur peut être égale à zéro.
formattype
GUID qui spécifie la structure utilisée pour le bloc de format. Le membre pbFormat pointe vers la structure de format correspondante. Les types de format sont les suivants :
Type de format | Structure de format |
---|---|
|
|
|
|
|
|
|
|
|
Aucun. |
|
|
|
|
|
|
|
Aucun |
pUnk
Non utilisé. Défini sur NULL.
cbFormat
Taille du bloc de format, en octets.
pbFormat
Pointeur vers le bloc de format. Le type de structure est spécifié par le membre formattype . La structure de format doit être présente, sauf si formattype est GUID_NULL ou FORMAT_None.
La mémoire tampon pbFormat doit être allouée en appelant CoTaskMemAlloc. Pour libérer le bloc de format, appelez FreeMediaType.
Notes
Lorsque deux broches se connectent, elles négocient un type de média, qui est défini par une structure AM_MEDIA_TYPE . Le type de média décrit le format des données que les filtres échangeront. Si les filtres ne sont pas d’accord sur un type de média, ils ne peuvent pas se connecter.
Le type de flux est spécifié par deux GUID, appelés le type principal et le sous-type. Le type principal définit la catégorie générale, telle que la vidéo, l’audio ou le flux d’octets. Le sous-type définit une catégorie plus étroite dans le type principal. Par exemple, les sous-types vidéo incluent 8 bits, 16 bits, 24 bits et 32 bits RVB.
La structure AM_MEDIA_TYPE est suivie d’un bloc de données de longueur variable qui contient des informations spécifiques au format. Le membre pbFormat pointe vers ce bloc, appelé bloc de format. La disposition du bloc de format dépend du type de données dans le flux et est spécifiée par le membre formattype . Le bloc de format peut être NULL. Vérifiez le membre cbFormat pour déterminer la taille. Castez le membre pbFormat pour accéder au bloc de format. Par exemple :
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. */ } } |
Pour obtenir des informations détaillées sur un type de média spécifié à des fins de débogage, utilisez la méthode DisplayType .
Configuration requise
En-tête | strmif.h (include Dshow.h) |