Да, это так.
В стандартах MPEG-2 и DVB механизм синхронизации звука, видео и данных для программы на приёмной стороне основан на использовании полей PTS и DTS. Алгоритм работы декодера примерно таков. Восстанавливается системная частота 27 МГц по меткам PCR. От неё запускается счётчик системной частоты с начальным значением из метки PCR. Далее декодер разбирает транспортный поток до уровня PES пакетов, находит поле PTS запоминает его и начинает записывать payload PES пакета в буфер. Когда счётчик системной частоты досчитает до запомненного значения PTS, разрешается чтение из буфера с payload-ом PES пакетов. И так со всеми потоками программы. При этом, если значение PTS слишком велико, по сравнению с проходящими в ТП значениями PCR, то ждать придётся долго и буфер переполнится. А если разница между PTS и PCR недостаточна, то данные начнут читаться слишком рано и декодеру элементарного потока их не хватит для декодирования кадра видео или пакета звука и он будет сбоить.
|