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


Поведение часов Demux

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

В режиме принудительной отправки демультиплексер MPEG-2 (demux) предоставляет интерфейс IReferenceClock . Он выступает в качестве активного источника, поэтому он будет выбран в качестве ссылочных часов графа по умолчанию; Дополнительные сведения см. в разделе Динамические источники .

  • Для транспортных потоков demux синхронизирует свои часы с потоком PCR, который соответствует аудио- или видеопотоку, который последний раз сопоставлен приложением. Внутренне demux отслеживает таблицы PAT и PMT. Когда приложение сопоставляет начальный PID потока с выходным контактом, demux ищет поток PCR для этого PID и использует этот поток PCR. (В настоящее время приложение не может напрямую указать PID PCR.)
  • Для программных потоков demux синхронизирует свои часы с потоком SCR.

Синхронизация часов фильтра с потоком PCR или SCR предотвращает переполнение или недополучение данных, что может произойти, если часы графа отличаются от часов потока. Demux также преобразует значения PES PTS в ссылочные значения DirectShow и использует эти значения для отметки времени примеров мультимедиа. Метки времени применяются к следующей границе кадра; нет никакой гарантии, что граница кадра будет соответствовать началу примера мультимедиа.

Demux гарантирует, что метки времени увеличиваются монотонно. Это означает, например, что если транспортный поток включает в себя сегмент, например коммерческий, который был создан с часами, отличными от main программы, demux отрегулирует метки времени презентации, чтобы скрыть разрыв времени от нисходящих фильтров.

Использование демультиплексера MPEG-2