Поделиться через


Пример фильтра Grabber

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

Примечание

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

 

Фильтр Sample Grabber предоставляет способ получения примеров по мере их прохождения через граф фильтра. Это фильтр преобразования с одним входным и одним выходным контактом. Он передает все нижестоящие примеры без изменений, поэтому их можно вставить в граф фильтров без изменения потока данных. Затем приложение может получить отдельные примеры из фильтра, вызвав методы в интерфейсе ISampleGrabber .

Если вы хотите получить примеры без отрисовки данных, подключите фильтр Sample Grabber к фильтру отрисовщика null .

Метка Значение
Интерфейсы фильтрации IBaseFilter, ISampleGrabber
Типы носителей входных контактов Любой тип мультимедиа.
Интерфейсы входных контактов IMemInputPin, IPin, IQualityControl
Выходные типы носителей контактов Любой тип мультимедиа. Соответствует типу входного носителя.
Интерфейсы вывода контактов IMediaPosition, IMediaSeeking, IPin, IQualityControl
Фильтрация CLSID CLSID_SampleGrabber
CLSID страницы свойств Страница свойств отсутствует.
Исполняемый файл Qedit.dll
Заслуга MERIT_DO_NOT_USE
Категория фильтра CLSID_LegacyAmFilterCategory

 

Комментарии

Чтобы использовать этот фильтр, добавьте его в граф фильтра и вызовите метод ISampleGrabber::SetMediaType с нужным типом мультимедиа. Этот метод задает тип носителя для входных и выходных соединений закрепления фильтра. Затем подключите фильтр к другим фильтрам в графе.

При вызове метода ISampleGrabber::SetBufferSamples со значением TRUE фильтр буферизовает каждый полученный образец перед передачей его вниз. Вызовите метод ISampleGrabber::GetCurrentBuffer , чтобы получить текущее содержимое буфера. Кроме того, можно вызвать метод ISampleGrabber::SetCallback , чтобы фильтр вызывал функцию обратного вызова при каждом получении примера.

Фильтр имеет следующие ограничения для форматов видео:

  • Он не поддерживает типы видео с ориентацией сверху вниз ( отрицательное значение biHeight).
  • Он не поддерживает структуру формата VIDEOINFOHEADER2 (тип формата, равный FORMAT_VideoInfo2).
  • Он отклоняет любой тип видео, в котором шаг поверхности не соответствует ширине видео.

В результате пример Grabber не будет подключаться к отрисовщику смешанного видео (VMR) для некоторых типов видео.

Требования

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

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

Прямое шоу редактирования объектов служб

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