參考《數字電視業務資訊及其編碼》一文中提到的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;
}