PCR的工作原理
PCR是节目时钟参考的英文缩写。从其字面上我们可以得晓,该参量应该和解码有关,因为在解码的时候才涉及到节目的概念。在解码以前的传输阶段中,出现的都是离散的数字信号,因此我们在分析PCR的时候,可以建立在一个比较单一、理想的环境中,即编码和解码端的时钟配对问题和定时问题。在这里略去了PCR抖动—即提取到的时钟信号在中心位置上左右变化。这又使我们分析的环境简单化。TS包头自适应区中存在的6B的PCR结构,如图所示。4个红框的全部字节32b加上黑框中的一个字节1b就构成PCR_ Base,计33b;黑框中预留6b;土黄框中的全部字节8b加上黑框中的一个字节1b构成PCR_ex,计9b。在编码器端和解码端:通过计数来达到间接计时的目的。我们可以假使在传输中所有参量的延迟都是一样的。PCR_Base是对编码器的27MHz系统时钟的300分频后的时钟计数值抽样,它的作用是在解码器切换节目时,提供对解码器PCR计数器的初始值,以让该PCR值与后面要介绍到的PTS、DTS最大可能地达到相同的时间起点。PCR_ex是计数器对编码器27MHz系统时钟的计数值,它的作用是通过解码器端的锁相环电路修正解码器的系统时钟,使其达到和编码器一致的27MHz。解码器的系统时钟经300分频后在解码器PCR计数器的初始值的基础上继续计数,这样编码器的PCR计数值就过渡到解码器端来了,而且由断续的抽样变成了连续的计数值,这就总能捕捉到和PTS、DTS数值相同的时刻。(ISO/IEC 13818-1,对PCR编码端,PTS、DTS的间隔规则都是0.1s)。DTS是编码器在编码时定义的,为解码器规定的,在解码器中的预定解码时间。该时间标记出现在PES层,在PES头部时间域中存在。它也是一个33 b的计数值,也是对系统时钟的300分频的时钟的计数值。由于它和PCR有相同的起点,在PCR值连续的情况下,可以起到时间定时的作用,当PCR值和DTS值相等时,表示它们计算了同样的时钟,也即它们经过了相同的时间。对于PCR来说,他们起到了连续计数的功能,忠实地完成了计时任务,DTS则是在等待这个时间,一旦等到这个时间,就表明它的解码次序排好了,因为这个解码次序是在编码的时候规定的,对编码的具体细节我们可以不做了解,我们只要查询到DTS就可以进行下一步的工作。这个也有利于编码器和解码器研发的独立性,少了一些捆绑,多了一些兼容。DTS就视频来说,因为视频编码的时候用到了双向预测,一个图像单元被解出,并非马上就被显示,可能在存储器中留一段时间,作为其余图像单元的解码参考,在被参考完毕后,才被显示。针对视频的显示,MPEG还提出了一个视频PTS。针对音频和视频的同步显示,又提出了一个音频PTS。由于声音没有用到双向预测,它的解码次序就是它的显示次序,故对它只提出PTS的概念。PTS是编码器定义的,为解码器规定某个单元的显示时间。它也是一个33b的计数值,也是对系统时钟的300分频的时钟的计数值。要注意的是,PCR、DTS、PTS应该具有相同的时间起点,选在模拟图像的场同步处开始计时是很好的办法。一个单元解码后被显示,PCR计数器重新计数,开始下一个单元的工作。由此可见,PCR的作用有两个:(1)读取编码端PCR_Base的读数,作为自己的初始值;(2)提取PCR_ex完成编码解码端的系统时钟的调整,达到严格的统一,这个系统时钟的恢复也有利于抽样时钟的提取,亮度抽样是13.5MHz,色度抽样是6.75MHz,都可以从系统时钟获得。系统时钟在300分频后,达到和编码端一样的计数时钟。这两个步骤完成后,则将随后的几个相同性质的TS包(通过PID来提取)的包头统统去掉,构成一个PES(音频或视频),通常一个视频PES包含一帧图像的编码数据和说明其性质的包头,音频PES可能要更短。从PES包头中提取出DTS,PTS,和经过本地PCR (和编码端的PCR已略有区别,该PCR是第一个收到的TS包中的PCR,并经过标准时钟计数)比较来确定各自的排列次序,或解码或显示。在刚切换节目的时候,系统时钟还处于调整阶段,计数时钟不稳,导致计数不正确,也就对待处理单元的解码显示次序指示不正确,因此我们在节目刚刚切换的时候会看到短暂的马赛克或暂时听不见声音。随着系统时钟的调整完毕,图像解码显示次序和声音显示次序都能正常排列,图像和声音都会趋于正常。
转载于:https://www.cnblogs.com/justin/archive/2005/07/08/188368.html