天天看點

制作mpeg2ts流時PCR_base和PCR_ext的計算方法

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

繼續閱讀