Ищут

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

Фильтры поддерживают поиск через интерфейс IMediaSeeking . Приложение запрашивает диспетчер фильтров графов для IMediaSeeking и использует его для выдачи команд поиска. Диспетчер фильтров графа распределяет каждую команду seek по всем фильтрам отрисовщика в графе. Каждый отрисовщик передает команду вышестоящий через выходные контакты фильтров вышестоящий, пока не достигнет фильтра, который может выполнить поиск. Обычно фильтр источника или фильтр средства синтаксического анализа, например разделитель AVI, выполняет операцию поиска.

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

На следующей схеме показана последовательность событий.

последовательность событий

Если фильтр синтаксического анализа содержит несколько выходных контактов, он обычно назначает одну из них для принятия команд поиска. Другие контакты отклоняют или игнорируют любые получаемые ими команды поиска. Таким образом, средство синхронизированного анализа синхронизирует все свои потоки. Однако все выходные контакты должны реализовывать IMediaSeeking::GetCapabilities и IMediaSeeking::CheckCapabilities для возврата возможностей поиска фильтра. Это гарантирует, что диспетчер фильтров графов вернет приложению правильное значение.

Интерфейс IMediaPosition не рекомендуется использовать для фильтров. Клиенты службы автоматизации по-прежнему должны использовать этот интерфейс в диспетчере фильтров графов, так как IMediaSeeking не совместим с автоматизацией, но диспетчер фильтров графов преобразует все вызовы IMediaPosition в вызовы IMediaSeeking .

Промывки

Время и часы в DirectShow