Синхронизация потоков

Входные данные потока DVD могут состоять из двух или более потоков. Драйвер класса потоков может прозрачно обрабатывать синхронизацию в интересах мини-драйвера DVD-декодера. Дополнительные сведения см. в разделе Синхронизация минидрайвера. Программисты по-прежнему должны знать о нескольких факторах, влияющих на DVD-потоки, в том числе:

  • Аудиопоток должен предоставлять главные часы и синтезировать часы, если нет данных. При остановке аудиоданных аудиопоток использует системные часы на основе частоты согласования и частоты тактового генератора, возвращаемой KeQueryPerformanceCounter. Все остальные потоки должны подчиняться аудио. То есть они синхронизируют свою производительность с аудиопотоком.

  • Программные аудио декодеры должны поддерживаться в пользовательском режиме. Фильтр DirectShow для пересылки часов перенаправляет часы DirectShow минидрайверу. Это прозрачно для минидрайвера.

  • Декодировщик не должен использовать метки времени в заголовке первичного элементарного потока (PES).

  • Ссылки на системные часы (SCR) не используются при синхронизации. Поле SCR DVD PACK установлено на ноль, поскольку архитектура DVD Microsoft использует парадигму "основные часы" для синхронизации аудио- и видеопотоков.

  • Минидрайвер не видит разрывы метки времени. DVD-навигатор или разделитель делает все метки времени смежными.

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