MPEG2音视频同步AVS

来源:互联网 发布:淘宝充话费很久不到账 编辑:程序博客网 时间:2024/06/07 20:08


MPEG2(13818)系统用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次都有描述

  在TS 层, TS头信息包含了节目时钟参考PCR(Program Clock Reference),

               用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)。   


  

  在PES层, 在PES头信息里包含有表示时间戳PTS(Presentation Time Stamp)和

               解码时间戳DTS(Decoding Time Stamp);



  在ES 层, 与同步有关的主要是视频缓冲验证VBV(Video Buffer Verifier),

              用以防止解码器的缓冲器出现上溢或者下溢;


13818标准规定在原始音频和视频流中,
  PTS的间隔不能超过0.7s,
  出现在TS包头的PCR间隔不能超过0.1s。


同步机制
编码器
系统时钟STC:
  编码器中有一个系统时钟(其频率是27MHz),
  此时钟用来产生指示音视频的正确显示和解码的时间戳,
  同时可用来指示在采样过程中系统时钟本身的瞬时值。

PCR(Program Clock Reference):
  指示系统时钟本身的瞬时值的时间标签称为节目参考时钟标签(PCR)。

  PCR的插入必须在PCR字段的最后离开复用器的那一时刻,
  同时把27MHz系统时钟的采样瞬时值作为PCR字段插入到相应的PCR域。
  它是放在TS包头的自适应区中传送.

  27MHz的系统时钟STC经波形整理后分成两路:
    PCR_ext (9bits ),   由27MHz脉冲直接触发计数器生成扩展域.
    PCR_base(33bits), 经300分频器分频成90kHz脉冲送入一个33位计数器生成90kHz基值,
                              用于和PTS/DTS比较,产生解码和显示所需要的同步信号.
  这两部分被置入PCR域,共同组成42位的PCR.

例如:
  时间"03:02:29.012"的PCR计算如下:

  03:02:29.012 = ((3 * 60) + 2) * 60 + 29.012 = 10949.012s


  PCR_base = ((27 000 000 * 10949.012) / 300) % 2^33 = 98 541 080
  PCR_ext   = ((27 000 000 * 10949.012) / 1  ) % 300  = 0 
  PCR = 98 541 080 * 300 + 0 = 295 623 324 000

PCR-base的作用:
  a. 与PTS和DTS作比较, 当二者相同时, 相应的单元被显示或者解码.
  b. 在解码器切换节目时,提供对解码器PCR计数器的初始值,
     以让该PCR值与PTS、DTS最大可能地达到相同的时间起点.
PCR-ext的作用:
  通过解码器端的锁相环路修正解码器的系统时钟, 使其达到和编码器一致的27MHz.

PTS(Presentation Time Stamp):
  指示音视频显示时间的时间戳称为显示时间戳(PTS);

  PTS域为33bits, 是对系统时钟的300分频的时钟的计数值.
  它被编码成为3个独立的字段:
     PTS[32..30][29..15][14..0]
  表示此分组中第一个访问单元在系统目标解码器中的预定显示时间.

PTS值为:
  PTS(k) = ((system_clock_frequency * TPn(k)) / 300) % 2^33
TPn(k): 表示单元Pn(k)的表示时间.

DTS(Decoding Time Stamp):
  指示音视频的解码时间戳称为解码时间戳(DTS),
  
  DTS域为33bits,编码成为3个独立的字段:
     DTS[32..30][29..15][14..0]
  表示此分组中第一个访问单元在系统目标解码器中的预定解码时间.

DTS值为:
  DTS(j) = ((system_clock_frequency * TDn(j)) / 300) % 2^33
TDn(j): 第n个ES流的第j个存取单元An(j)的解码时间.
   
  DTS就视频来说,因为视频编码的时候用到了双向预测,
  一个图像单元被解出,并非马上就被显示,可能在存储器中留一段时间,作为其余图像单元的解码参考,
  在被参考完毕后,才被显示.

音频PTS:
  针对音频和视频的同步显示,MPEG提出了一个音频PTS.
  由于声音没有用到双向预测,它的解码次序就是它的显示次序,故它只有PTS.


 PCR用来同步前端编码器和后端机顶盒的时钟
    
1PCR 仅仅在实时播出流中才有意义(即前端编码器实时编码或视频服务器实时播出,后端机顶盒实时接收的情况),对DVD机这类从文件中取TS流的设备PCR毫无意义。
    
2)前端编码器工作原理:编码器中有一个27M的时钟,编码过程中不断读取硬件时钟放入TSPCR字段,和PESPTSDTS字段。
    (3) 
后端机顶盒工作原理:机顶盒中也有一个27M的时钟,它根据PES中的PTSDTS字段中指示的时间进行解码和显示。那么TS中的PCR还有什么用呢?首先如果前端编码器的时钟与后端机顶盒中时钟"绝对"同步,那么TS中的PCR就没有任何意义了。但是如果"绝对"变对"相对"以后会出先什么情况?它们之间的"微小"误差经过长时间的累积(1-2小时就足以)机顶盒中解码器会因为自己时钟""了而造成buffer中没有数据--停帧,会因为时钟""了而造成buffer中数据溢出--丢帧。所对它需要TS中的PCR字段来不断修正自己时钟与编码器时钟间的"微小"误差。
    (3)TS
流在经过复用器,加扰机这些中间设备时,PCR"必须"进行"非均匀"延迟修正(原因如上)。所以对于没有PCR修正功能的复用器和加扰机,建设大家一定不要买。
    (4)
为什么说TS流中的PCRDVD机毫无意义呢?DVD机是从光盘中读取TS流,读盘速度与TS流传送速率毫无关联,PCR还有指示时间的意义吗?但因为它不是"实时流"传送,所以不会出现buffer溢出的问题,也就不会产生停丢帧现象。

还需要看看 TS 解码过程:

http://blog.csdn.net/godspirits/article/details/5653381


0 0
原创粉丝点击