AM_MEDIA_TYPE (Compact 2013)
3/26/2014
This structure describes a media sample type.
Syntax
typedef struct _MediaType{
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown* pUnk;
ULONG cbFormat;
/* [size_is] */ BYTE __RPC_FAR* pbFormat;
} AM_MEDIA_TYPE;
Members
- majortype
Major type of the media sample.
- subtype
Subtype of the media sample.
- bFixedSizeSamples
If TRUE, samples are of a fixed size.
- bTemporalCompression
If TRUE, samples are compressed.
- lSampleSize
Size of the sample in bytes.
- formattype
Registered (GUID) format type.
- pUnk
Pointer to the IUnknown interface.
- cbFormat
Size of the format section of the media type.
pbFormat
Pointer to the format section of the media type. The layout of this is determined by the format type GUID.Format types include the following.
Format type
Structure pointed to
FORMAT_MPEGVideo
FORMAT_VideoInfo
FORMAT_WaveFormatEx
FORMAT_MPEG2Video
FORMAT_VideoInfo2
Remarks
Media Types
In any function that receives an AM_MEDIA_TYPE parameter, always validate the values of cbFormat and formattype before dereferencing the pbFormat member.
The following code is incorrect:
if (pmt->formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pVIH = (VIDEOINFOHEADER*)pmt->pbFormat;
// **** Wrong! ****
}
The following code is correct:
if ((pmt->formattype == FORMAT_VideoInfo) &&
(pmt->cbFormat > sizeof(VIDEOINFOHEADER) &&
(pbFormat != NULL))
{
VIDEOINFOHEADER *pVIH = (VIDEOINFOHEADER*)pmt->pbFormat;
// Now you can use pVIH.
}
Requirements
Header |
dshow.h |
Library |
Strmiids.lib |