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


Метод IAMStreamControl::StopAt (strmif.h)

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

Метод StopAt сообщает контакту, когда следует прекратить доставку данных.

Синтаксис

HRESULT StopAt(
  [in] const REFERENCE_TIME *ptStop,
  [in] BOOL                 bSendExtra,
  [in] DWORD                dwCookie
);

Параметры

[in] ptStop

Указатель на значение REFERENCE_TIME , указывающее, когда закрепление должно прекратить доставку данных. Если значение — MAXLONGLONG (0x7FFFFFFFFFFFFFFF), метод отменяет все предыдущие запросы на остановку. Если psStop имеет значение NULL, закрепление немедленно останавливается.

Для закрепления предварительного просмотра допустимы только значения NULL и MAXLONGLONG , так как контакты предварительного просмотра не помечают время доставляемых ими образцов.

[in] bSendExtra

Задает логическое значение, указывающее, следует ли отправлять дополнительный образец после запланированного времени остановки. Если задано значение TRUE, закрепление отправляет один дополнительный пример.

[in] dwCookie

Указывает значение для отправки вместе с уведомлением о начале. См. заметки.

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

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

Комментарии

Если параметр dwCookie не равен нулю, закрепление отправляет событие EC_STREAM_CONTROL_STOPPED , когда прекращает доставку данных. Первый параметр события является указателем на интерфейс IPin контакта, а второй — значение dwCookie. Если ptStop имеет значение NULL или MAXLONGLONG, событие не отправляется, а значение dwCookie игнорируется.

При захвате видео этот метод обычно вызывается для выходного контакта фильтра захвата и входного контакта мультиплексера. Приложение должно ожидать события остановки от мультиплексера. Это гарантирует, что фильтр записи отправляет нужное количество кадров, гарантируя, что все кадры достигают мультиплексера. Кроме того, задайте для параметра bSendExtraзначение TRUE для контакта захвата, а для контакта мультиплексера — FALSE . Это приводит к тому, что фильтр захвата отправляет один дополнительный кадр. Мультиплексор зависит от меток времени из контакта захвата, поэтому, если дополнительный кадр не отправляется, мультиплексор будет ждать неограниченное время остановки. Когда мультиплексор получает дополнительный кадр, он удаляет его.

Этот метод обрабатывает следующие условия границ:

  • Если время остановки находится между временем запуска и остановки образца, закрепление доставляет этот образец.
  • Если время начала равно времени остановки, закрепление доставляет один образец.
MAXLONGLONG — это максимально возможное значение REFERENCE_TIME . В библиотеке базовых классов он также определяется как константный MAX_TIME.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

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

Коды ошибок и успешного выполнения

Интерфейс IAMStreamControl