Итак, я пытался обернуть голову вокруг времени mpeg-ts и PCR (эталонное время программы).Я понимаю, что это используется для синхронизации видео / аудио на декодере.
До сих пор я понимал, что все работает от тактовой частоты 27 МГц (генератора).Эти часы зацикливаются с частотой 27 МГц, считая от 0 до 299, и продолжают повторяться.Каждый раз, когда происходит этот «переход» с 299 на 0, 33-разрядный счетчик ПЦР увеличивается на 1. Таким образом, 33-разрядный счетчик ПЦР сам по себе работает с частотой 90 кГц.Итак, еще один способ сказать, что частота 27 МГц делится на 300, что дает нам частоту 90 кГц.
Эти тактовые частоты 90 кГц затем используются для 33-битного счетчика ПЦР.
Я понимаю, что исторически было выбрано 90 кГц, потому что mpeg-1 использовал 90 кГц.[см. источник здесь]
В любом случае ... Я читал, что 33-битные значения счетчика PCR варьируются от 0x000000000 до 0x1FFFFFFFF.И согласно этому , это показывает, что эти значения означают с точки зрения времени, как мы, люди, понимаем это (часы, минуты, секунды и т. Д.): 00: 00: 00.000 (0x000000000) на 26: 30: 43.717 (0x1FFFFFFFF)
Итак, в конечном счете, мой вопрос касается того, как эти шестнадцатеричные коды переводятся в эти метки времени.Какими были бы уравнения, если бы кто-нибудь дал мне шестнадцатеричный код, и теперь мне нужно воспроизвести отметку времени?
Буду признателен за любую помощь:)
==========
Я сам ближе к ответу.Глядя на диапазон от 0x000000000 до 0x1FFFFFFFF, это в основном от 0 до 8589934591 в двоичном виде.Поскольку частота ПЦР составляет 90 кГц, для получения количества секунд, которое требуется для перехода от 0 до 8589934591, мы можем сделать 8589934591/90000, что дает нам 95443,71768 секунд.