制作mpeg2ts流时PCR_base和PCR_ext的计算方法

原文地址:https://www.xuebuyuan.com/1946444.html

参考《数字电视业务信息及其编码》一文中提到的PCR计算方法,

系统时钟频率以Hz为单位并需要满足一下条件

27 000 000 - 540 <= 系统时钟频率 <= 27 000 000 000 + 540

这里我们取系统时钟的理想值27 000 000 Hz

PCR分两部分编码:一个以系统时钟频率的 1/300 为单位,称PCR_base;另一个以系统时钟频率为单位,成为PCR_ext。

具体规定如下:

PCR_base(i) = ((系统时钟频率 x t(i)) div 300) % 2^33

PCR_ext(i) = ((系统时钟频率 x t(i)) div 1) % 300

PCR(i) = PCR_base(i) x 300 + PCR_ext(i)

以后为对应上述公式的C/C++函数接口,有输入时间为微秒(us)和秒(s)两套接口:

uint32_t mp2ts_pcr_base_us(uint64_t ti_us)
{
uint32_t pcr_base = (27 * ti_us) / 300;
return pcr_base;
}

uint32_t mp2ts_pcr_ext_us(uint64_t ti_us)
{
uint32_t pcr_ext = (27 * ti_us) % 300;
return pcr_ext;
}

uint32_t mp2ts_pcr_base_s(uint32_t ti_s)
{
uint32_t pcr_base = (27000000 / 300) * ti_s;
return pcr_base;
}

uint32_t mp2ts_pcr_ext_s(uint32_t ti_s)
{
uint32_t pcr_ext = ti_s % 300;
return pcr_ext;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值