Метод IMediaControl::Run (control.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод Run
выполняет все фильтры в графе фильтров. Во время работы графа данные перемещаются по графу и отрисовывается.
Синтаксис
HRESULT Run();
Возвращаемое значение
Возвращает значение HRESULT . Ниже приведены возможные значения.
Код возврата | Описание |
---|---|
|
Граф готовится к выполнению, но некоторые фильтры не завершили переход в состояние выполнения. |
|
Все фильтры в графе завершили переход в состояние выполнения. |
Комментарии
Если граф фильтра остановлен, этот метод приостанавливает граф перед выполнением. Если граф уже запущен, метод возвращает S_OK, но не оказывает никакого влияния.
Граф выполняется до тех пор, пока приложение не вызовет метод IMediaControl::P ause или IMediaControl::Stop . Когда воспроизведение достигает конца потока, граф продолжает выполняться, но фильтры больше не передают данные. На этом этапе приложение может приостановить или остановить граф. Сведения о событии завершения потока см. в разделе IMediaControl::P ause and EC_COMPLETE.
Этот метод не стремится к началу потока. Таким образом, если вы запускаете граф, приостанавливаете его, а затем снова запускаете, воспроизведение возобновляется из приостановленной позиции. При запуске графа после достижения конца потока ничего не отображается. Для поиска графа используйте интерфейс IMediaSeeking .
Если метод возвращает S_FALSE, это означает, что метод вернулся до того, как все фильтры переключились в состояние выполнения. Фильтры завершат переход после возврата метода. При необходимости можно дождаться завершения перехода, вызвав метод IMediaControl::GetState со значением времени ожидания. Однако это не является обязательным.
Если метод Run возвращает код ошибки, это означает, что не удалось выполнить один или несколько фильтров. Однако некоторые фильтры могут находиться в состоянии выполнения. В многопотоковом графе могут успешно воспроизводиться целые потоки. Обычно приложение разрывает граф и сообщает об ошибке в этом случае.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | control.h (включая Dshow.h) |
Библиотека | Strmiids.lib |