参考《数字电视业务信息及其编码》一文中提到的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
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;
}