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


Метод ISampleGrabber::SetOneShot

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

Примечание

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

 

Метод SetOneShot указывает, останавливается ли фильтр Sample Grabber после получения фильтра образца.

Синтаксис

HRESULT SetOneShot(
   BOOL OneShot
);

Параметры

OneShot

Логическое значение, указывающее, останавливается ли фильтр Sample Grabber после получения образца.

Значение Значение
ИСТИННЫЙ
Выборка граббера останавливается после первого примера.
ЛОЖНЫХ
После первого образца граббер-образец продолжает обрабатывать образцы. Это поведение по умолчанию.

 

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

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Используйте этот метод для получения одного примера из потока, как показано ниже.

  1. Вызовите SetOneShot со значением TRUE.
  2. При необходимости используйте интерфейс IMediaSeeking для поиска позиции в потоке.
  3. Вызовите IMediaControl::Run , чтобы запустить граф фильтра.
  4. Вызовите метод IMediaEvent::WaitForCompletion , чтобы дождаться остановки графа. Кроме того, вызовите IMediaEvent::GetEvent , чтобы получить события графа, пока не получите событие EC_COMPLETE .

После остановки примера Grabber граф фильтра по-прежнему находится в состоянии выполнения. Вы можете найти или приостановить график, чтобы получить другой пример.

Примечание

В более ранней версии документации говорилось, что граф фильтров останавливается после получения примера. Это неверно. Поток заканчивается, но граф остается в состоянии выполнения.

 

Пример Grabber реализует однократный режим, вызывая метод IPin::EndOfStream в нисходящем фильтре и возвращая S_FALSE из метода IMemInputPin::Receive .

Примечание

Файл заголовка 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