структура AM_MEDIA_TYPE (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Структура AM_MEDIA_TYPE описывает формат примера мультимедиа.
Синтаксис
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Члены
majortype
Глобальный уникальный идентификатор (GUID), указывающий основной тип примера мультимедиа. Список возможных основных типов см. в разделе Типы мультимедиа.
subtype
GUID, указывающий подтип примера носителя. Список возможных подтипов см. в разделе Типы мультимедиа. Для некоторых форматов значение может быть MEDIASUBTYPE_None, что означает, что формат не требует подтипа.
bFixedSizeSamples
Если задано значение TRUE, выборки имеют фиксированный размер. Это поле является только информационным. Для звука обычно устанавливается значение TRUE. Для видео обычно имеет значение TRUE для несжатого видео и FALSE для сжатого видео.
bTemporalCompression
При значении TRUE примеры сжимаются с помощью темпорального (межкадрового) сжатия. Значение TRUE указывает, что не все кадры являются ключевыми. Это поле является только информационным.
lSampleSize
Размер выборки в байтах. Для сжатых данных значение может быть равно нулю.
formattype
GUID, указывающий структуру, используемую для блока форматирования. Элемент pbFormat указывает на соответствующую структуру формата. Ниже перечислены типы форматов.
Тип формата | Структура форматирования |
---|---|
|
|
|
|
|
|
|
|
|
Нет. |
|
|
|
|
|
|
|
Нет |
pUnk
Не используется. Задайте значение NULL.
cbFormat
Размер блока формата в байтах.
pbFormat
Указатель на блок формата. Тип структуры определяется элементом formattype . Структура форматирования должна присутствовать, если только тип форматирования не GUID_NULL или FORMAT_None.
Буфер pbFormat должен быть выделен путем вызова CoTaskMemAlloc. Чтобы освободить блок форматирования, вызовите FreeMediaType.
Комментарии
При подключении двух контактов они согласовывают тип мультимедиа, который определяется AM_MEDIA_TYPE структурой. Тип носителя описывает формат данных, которыми будут обмениваться фильтры. Если фильтры не согласятся с типом носителя, они не смогут подключиться.
Тип потока определяется двумя идентификаторами GUID, которые называются основным типом и подтипом . Основной тип определяет общую категорию, например видео, аудио или поток байтов. Подтип определяет более узкую категорию в основном типе. Например, подтипы видео включают 8-разрядную, 16-разрядную, 24-разрядную и 32-разрядную rgb-версию.
За AM_MEDIA_TYPE структурой следует блок данных переменной длины, содержащий сведения, относящиеся к формату. Элемент pbFormat указывает на этот блок, называемый блоком формата. Макет блока форматирования зависит от типа данных в потоке и определяется элементом formattype . Блок формата может иметь значение NULL. Проверьте элемент cbFormat , чтобы определить размер. Приведите элемент pbFormat для доступа к блоку форматирования. Пример:
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. */ } } |
Чтобы получить подробные сведения об указанном типе мультимедиа для отладки, используйте метод DisplayType .
Требования
Верхняя часть | strmif.h (включая Dshow.h) |