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


Метод IMediaFilter::SetSyncSource (strmif.h)

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

Метод SetSyncSource задает ссылочные часы.

Синтаксис

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

Параметры

[in] pClock

Указатель на интерфейс IReferenceClock часов или NULL. Если этот параметр имеет значение NULL, граф фильтров не использует ссылочные часы, и все фильтры выполняются как можно быстрее.

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

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

Комментарии

Все фильтры в графе фильтров используют одни и те же эталонные часы, чтобы оставаться синхронизированными. Время потока вычисляется на основе ссылочных часов. Фильтры отрисовщика используют ссылочные часы для планирования отображения примеров. Если ссылочные часы отсутствуют, фильтр отрисовщика отрисовывает каждый образец сразу после его поступления.

Этот метод реализуется всеми фильтрами DirectShow, а также диспетчером фильтров Graph.

Реализация фильтра

При выполнении графа диспетчер фильтра графа вызывает этот метод для каждого фильтра в графе, чтобы уведомить их о эталонных часах графа. Используйте этот метод для хранения указателя IReferenceClock . Увеличение количества ссылок для сохраненного указателя. Перед удалением фильтра из графа диспетчер графа фильтров снова вызывает SetSyncSource со значением NULL. Отпустите хранимый указатель и присвойте ему значение NULL.

Класс CBaseFilter реализует этот метод; см . раздел CBaseFilter::SetSyncSource.

Обратите внимание, что фильтры не могут использовать этот метод для выбора часов графа. В фильтрах единственной функцией этого метода является информирование фильтра о часах, которые использует граф. Фильтр может предоставить эталонные часы, предоставляя интерфейс IReferenceClock . Дополнительные сведения см. в разделе Время и часы в DirectShow.

Использование приложения

Приложение может переопределить часы по умолчанию, вызвав SetSyncSource в диспетчере фильтров Graph. Не делайте этого, если у вас нет определенной причины, чтобы предпочесть другие часы. Вы также можете задать для графа не использовать ссылочные часы, вызвав SetSyncSource со значением NULL. Это можно сделать, чтобы как можно быстрее обработать примеры. Дополнительные сведения см. в разделе Настройка часов graph.

Приложения никогда не должны вызывать этот метод для фильтров.

Требования

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

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

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

IFilterGraph::SetDefaultSyncSource

Интерфейс IMediaFilter