看了些文档,都写的比较绕,自己整理了下
1、PCR=PCR(base)+PCR(ext)
2、PCR(base)的精度为300/27MHz=11.11us,
3、PCR(ext)的精度为1/27MHz=37ns
4、PCR(ext)值为0-299,满300进以为到PCR(Base)
5、PCR的打法:取当前系统时间(ns级精度),进行换算,然后生成PCR
PCR_base(i) = ((system_clock_frequency * t(i)) / 300) % 2^33
PCR_ext(i) = ((system_clock_frequency * t(i)) / 1 ) % 300
t(i): 字节i的编码时间.
例如:
时间"03:02:29.012"的PCR计算如下:
03:02:29.012 = ((3 * 60) + 2) * 60 + 29.012 = 10949.012s
PCR_base = ((27 000 000 * 10949.012) / 300) % 2^33 = 98 541 080
PCR_ext = ((27 000 000 * 10949.012) / 1 ) % 300 = 0
PCR = 98 541 080 * 300 + 0 = 295 623 324 000
例子中的系统时间精度只取到了毫秒,实际使用时,要取到ns