现在的工作的原因,有机会深入了解PCR/PTS/DTS的关系和理论。
PCR/PTS/DTS是MEPG2中为了完成A/V播放同步而采用的设置。这个同步有多个意思:
- AV播放和解码的同步,也就是说传输信道的同步。MEPG2规范中忽略了传输信道的延迟。所以说MPEG2现有的规范难以用在IP TV上。它缺少更进一步的同步机制。解决互联网上传输数据的延迟,抖动,乱序。这些正好是RTP/RTCP的强项。或许这个也是MPEG2即将成为过去式的很多原因之一吧。
- 音视频的播放同步,相对来讲Video的解码速度要比Audio的长,这里ES到达解码器缓冲时并不能立刻解码。MPEG2预留了一定时间来完成A/V同步,这里可以忽视A/V解码器的时延。系统重置了SCR依据TS流中的PCR, 而此时ES中的DTS显然没有到来,所以延迟一定时间知道DTS的时间来了,送入解码器,进行解码。这样才不会发生上下溢出。
- MPEG2各帧的同步,其中ES流失经过压缩的MPEG2视频流,解码后,可能生成IBP各种帧,这些帧会在排序缓冲区里进行排序,这个排序只是简单的根据序号排列。真正送到显示缓冲的时间是由PTS决定的。PTS直到<=SCR的值时,送入显示缓冲进行显示。这样就完成了各帧的解码。