热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

PCR该如何打

看了些文档,都写的比较绕,自己整理了下1、PCRPCR(base)PCR(ext)2、PCR(base)的精度为3002

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

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




推荐阅读
author-avatar
非常异族图腾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有