Метод ISampleGrabber::SetMediaType

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Примечание

[Не рекомендуется. Этот API можно удалить из будущих выпусков Windows.]

 

Метод SetMediaType задает тип носителя для подключения на входном контакте Sample Grabber.

Синтаксис

HRESULT SetMediaType(
   const AM_MEDIA_TYPE *pType
);

Параметры

pType

Указатель на структуру AM_MEDIA_TYPE указывает требуемый тип носителя. Нет необходимости задавать все члены структуры; Дополнительные сведения см. в разделе Примечания.

Возвращаемое значение

Возвращает S_OK.

Комментарии

По умолчанию у sample Grabber нет предпочтительного типа мультимедиа. Чтобы убедиться, что sample Grabber подключается к правильному фильтру, вызовите этот метод перед построением графа фильтра.

Этот метод ограничивает диапазон типов мультимедиа, которые будет принимать фильтр. При подключении фильтр пытается сопоставить тип мультимедиа, заданный в pType. Для этого сравниваются идентификаторы GUID основного типа, подтипа и типа формата в указанном порядке. Если для каждого из этих идентификаторов GUID pType имеет значение GUID_NULL, sample Grabber принимает тип носителя без дальнейших проверок. Если pType имеет другое значение, sample Grabber сравнивает его с ИДЕНТИФИКАТОРом GUID в типе подключения. Если два идентификатора GUID не совпадают точно, sample Grabber отклоняет подключение.

Для типов видеоданных пример Grabber игнорирует блок форматирования. Таким образом, он принимает любой размер видео и частоту кадров. При вызове SetMediaTypeзадайте для блока формата (pbFormat) значение NULL , а для размера (cbFormat) — нулевое значение. Для типов звуковых носителей пример Grabber проверит структуру WAVEFORMATEX и потребует от другого фильтра подключения к такому формату, если только блок формата в pType не имеет значение NULL или тег формата WAVE_FORMAT_PCM а остальные элементы структуры не равны нулю.

Пример 1:

  • Основной тип: MEDIATYPE_Video
  • Подтип: GUID_NULL
  • Тип формата: GUID_NULL

Sample Grabber принимает любой тип видео, где основной тип равен MEDIATYPE_Video. Он не будет проверка подтипа.

Пример 2.

  • Основной тип: MEDIATYPE_Video
  • Подтип: MEDIASUBTYPE_RGB24
  • Тип формата: GUID_NULL

Теперь sample Grabber будет проверка подтипа и принимать только видео RGB 24.

Ограничения: Независимо от того, какой тип вы задали, фильтр Sample Grabber отклоняет любые типы видео с ориентацией сверху вниз ( отрицательное значение biHeight) или с типом формата FORMAT_VideoInfo2. В этом случае, несмотря на успешное SetMediaType выполнение метода, фильтр не подключается.

Примечание

Файл заголовка Qedit.h несовместим с заголовками Direct3D более поздней версии 7.

 

Примечание

Чтобы получить Qedit.h, скачайте обновление Microsoft Windows SDK для Windows Vista и платформа .NET Framework 3.0. Qedit.h недоступен в Microsoft Windows SDK для Windows 7 и платформа .NET Framework 3.5 с пакетом обновления 1 (SP1).

 

Требования

Требование Значение
Заголовок
Qedit.h
Библиотека
Strmiids.lib

См. также раздел

Использование примера Grabber

Интерфейс ISampleGrabber