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


Интерфейс IAMPushSource (strmif.h)

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

Интерфейс IAMPushSource синхронизирует граф фильтра, который отрисовывает динамический источник. Динамический источник — это источник, который передает данные в режиме реального времени, например устройство захвата или сетевую трансляцию.

Исходные фильтры, выполняющие потоковую передачу динамических данных, должны предоставлять этот интерфейс на выходных контактах. Как правило, приложения не должны вызывать методы в этом интерфейсе; Вместо этого используйте интерфейс IAMGraphStreams .

Наследование

Интерфейс IAMPushSource наследуется от IAMLatency. IAMPushSource также содержит следующие типы элементов:

Методы

Интерфейс IAMPushSource содержит следующие методы.

 
IAMPushSource::GetMaxStreamOffset

Метод GetMaxStreamOffset извлекает максимальное смещение потока, поддерживаемого фильтром.
IAMPushSource::GetPushSourceFlags

Метод GetPushSourceFlags извлекает сочетание флагов, описывающих поведение фильтра.
IAMPushSource::GetStreamOffset

Метод GetStreamOffset извлекает смещение, которое фильтр использует при создании меток времени.
IAMPushSource::SetMaxStreamOffset

Метод SetMaxStreamOffset указывает смещение потока, которое будет разрешено в графе фильтра.
IAMPushSource::SetPushSourceFlags

Метод SetPushSourceFlags задает флаги, определяющие поведение фильтра. В настоящее время приложения не должны вызывать этот метод, так как флаги запросов не поддерживаются и приложение не должно переопределять флаги, заданные фильтром.
IAMPushSource::SetStreamOffset

Метод SetStreamOffset задает смещение для меток времени, созданных этим фильтром.

Комментарии

Диспетчер фильтров графов использует методы этого интерфейса для решения двух проблем, которые обычно возникают при отрисовке динамических источников:

  • Задержка. Если диаграмма фильтра включает несколько динамических источников, источники часто имеют разные задержки, что может привести к их несинхронизированности. Например, если время задержки захвата звука превышает время захвата видео, звук будет отставать от видео, если граф не компенсирует разницу.
  • Сопоставление скорости. Когда фильтр отрисовщика подключен к активному источнику, он должен настроить скорость потребления данных в соответствии с рабочей скоростью исходного фильтра. В противном случае в данных могут быть пробелы (если отрисовщик работает быстрее источника) или данные могут быть удалены (если источник работает быстрее).
Чтобы исправить задержку, граф фильтра вызывает IAMLatency::GetLatency для каждого выходного контакта, который предоставляет IAMPushSource интерфейс, и определяет максимальную задержку в графе. Затем он вызывает IAMPushSource::SetStreamOffset для любых фильтров с максимальной задержкой, чтобы они отрегулировали создаваемые ими метки времени с правильным смещением.

Чтобы выполнить сопоставление скорости, граф фильтра должен определить, может ли фильтр отрисовщика сопоставлять частоту часов с исходным фильтром. Метод IAMPushSource::GetPushSourceFlags возвращает набор флагов, указывающих, является ли отрисовщик безопасным для сопоставления скоростей с источником.

Эти проблемы не влияют на запись в файл. Фильтр записи файлов использует метки времени во входящих примерах для правильной записи файла; затем потоки синхронизируются во время воспроизведения. Что касается сопоставления скорости, данные всегда записываются в файл как можно быстрее.

Требования

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

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

IAMLatency