PCR该如何打

看了些文档,都写的比较绕,自己整理了下

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


PCR该如何打_第1张图片

你可能感兴趣的:(PCR该如何打)