专利名称:多路复用中节目时钟基准的校正方法
技术领域:
本发明涉及多媒体通信中媒体同步技术领域,特别是涉及在MPEG-2传输流数据包流(以下又简称传送码流)多路复用过程中,对输入节目的节目时钟基准(以下也简称PCR)在复用输出时进行校正的方法。
多媒体通信中媒体同步技术的重要性不言而喻,特别是同一节目的视频/音频同步处理更是如此。视频/音频同步包括编码/解码同步和音频/视频唇同步两个方面,哪一个方面做的不够好,都会对编解码过程中的视频/音频质量产生很大的损害。具体的同步处理包括编码阶段的同步信息获取和按照MPEG-2同步信息格式编码加入MPEG-2传输流数据包流(以下也简称TS流或TSP流),多路复用时由于延迟的变化必须对节目同步信息做必要的修改,解码阶段恢复码流同步信息并控制视频/音频同步解码、显示。下面逐一介绍同步处理技术。
图1示出了MPEG-2定义的同步模型,为了保证解码器恢复出节目视频/音频信号的质量,MPEG-2协议定义了时间模型,用来同步解码得到的视频和音频信号输出,控制视频和音频信号以编码时的速率再现。
请参照图1所示,在编码端,编码器标记每个视频和音频显示单元的显示时间(PTS)和解码时间(DTS),同时将显示时间标签和解码时间标签按照一定规则编码在传输流中发送。另一方面还必须把系统时钟(STC)编码并加入到码流中同时发送,系统时钟的编码方式为节目时钟基准(PCR)。
在解码端,解码器利用码流中的节目时钟基准(PCR),恢复还原系统时钟(STC),并根据视频/音频解码时间标签(PTS)安排视频/音频访问单元解码顺序,同理根据显示时间标签(PTS)安排显示单元显示顺序,使得同步的音频/视频得以恢复显示。
请参照图1所示,MPEG-2要求在节目的编码、存储、传输和解码的完整过程中,保持端到端的固定延迟。在固定延迟的保证下,解码端才可以利用PCR准确恢复出编码端系统时钟。如果在码流复用过程中引起抖动,必须调整PCR以便解码端可以准确恢复出系统时钟。
编码同步信息就是要为MPEG-2编码输出码流注入正确的PCR、PTS/DTS数据。MPEG-2规定系统时钟(STC)为27MHZ,精度为30PPM。PCR是系统时钟的42bits计数值采样,由33bits的PCR-BASE和9bits的PCR-EXTERN组成,PCR的精度要求为抖动最大范围500ns,PCR的计算公式如下PCR-BASE=STC/300PCR-EXTERN=STC%300其中PCR-BASE是STC的90kHz采样,而PCR-EXTERN是STC的27MHz采样。
PTS/DTS都是STC的90kHz采样。
同步信息编码的难点在于PCR的精度要求特别高,另一个是PTS/DTS要保持和PCR的正确关系。编码的PCR加入精度太低会影响解码阶段对系统时钟的恢复,以至于影响视频/音频的正确解码,同时也会影响参加多路复用的次数。PTS/DTS必须经过处理,否则有可能引起解码器缓冲区动作出现错误,导致缓冲区上溢或者非正常下溢,这些都是不允许的。
解码阶段必须根据码流中提供的同步信息控制恢复出同步的音频/视频信号。MPEG-2解码器恢复同步信息包括恢复系统时钟和根据同步信息安排解码以及显示两方面的技术。
解码器拥有一个本地的27MHZ时钟和一个锁相环(PLL),锁相环的工作原理是,当接收到节目的第一个PCR时,把本地的STC设置成为该PCR值,利用后续接收的PCR的值和当前STC的计数值之间的差值调整本地27MHZ时钟,使其与编码系统时钟同步。
MPEG-2的视频帧结构有I、P、B帧,I帧是无预测的视频帧,P帧是根据前一帧预测得到的编码视频帧,B帧是根据前面I帧(或者P帧)和后面I帧(或者P帧)预测编码得到的视频帧,由于B帧需要根据后面的帧来预测,所以显示次序和编码/解码次序会有所不同,例如显示次序是IBBP的帧序列,其编码/解码次序应该是IPBB,这就要求解码时要有一个帧重排的过程。MPEG-2采用DTS指示解码时间,PTS指示显示时间,解码时根据DTS安排解码次序,根据PTS安排显示次序。对于PTS/DTS不同的情况,解码器要缓存该帧,并作为预测基准帧。这时,PTS/DTS非正常超前或者落后都有可能造成缓冲区动作出错,而产生溢出。
解码软件对码流同步信息进行检测,提取同步信息,并根据同步信息驱动解码器动作,完成音频/视频的同步解码显示控制。同样包括两部分内容,就是提取节目PCR,驱动锁相环,完成系统时钟恢复,另一方面提取PTS/DTS,根据本地STC情况,安排解码和显示。
在多节目复用的情况下,假设每一个传输流数据包TSP在多节目复用时的停留时间都相同,即具有固定延迟,则PCR无须经过任何修改。但是,由于各个TSP在复用过程中的处理时间不尽相同,并且输入/输出FIFO并发情况的存在(总线争用),以及输入/输出码率不同等因素的存在,导致各个TSP在复用板的处理延迟时间(停留时间)有所不同,所以需要调整各路节目的PCR,以使解码端依然能够根据此PCR值恢复出准确的编码系统时钟。
本发明的目的是提供一种在MPEG-2的传送码流多路复用过程中的PCR校正方法,以完成多路互不相关的MPEG-2传送码流能够被复用成为一路的MPEG-2传送码流的功能,同时要达到降低由于PCR校正而引入的PCR抖动的目的。
基于以上目的,本发明的技术方案是一种MPEG-2传输流数据包流在多路复用中,节目时钟基准的校正方法,其中,针对复用系统的每一个输入通道,确定一个传输流数据包经过该通道的固定延迟时间Ts;在复用过程中测量传输流数据包的实际停留时间Ta;以实际停留时间Ta与固定延迟时间Ts的差值Td作为修正值,调整传输流数据包中的节目时钟基准。
较佳的,在复用过程中,仅测量包含有节目时钟基准的传输流数据包的实际停留时间Ta,并对该传输流数据包中的节目时钟基准进行调整,在这种方案中,需要对进入输入通道的每一个传输流数据包进行判断,判断其是否包含节目时间基准。
较佳的,在复用过程中,测量所有传输流数据包的实际停留时间Ta,但在调整过程中,仅调整包含有节目时钟基准的传输流数据包的节目时钟基准。
本发明的方法在计算传送数据包的固定延迟和实际延迟时,都是由传送数据包驱动,传送数据包的输入时刻标签和输出时刻标签,都可以由硬件逻辑电路根据传送数据包实际输入和输出时刻进行精确锁定。这样误差主要来自本地复用系统的27MHZ时钟精度误差,以及本地时钟计数器由输入/输出信号触发锁定时的延迟误差。由于27MHZ时钟的精度可以通过采用高精度的晶振来实现,一般要求50ppm以上就可以。而对于触发锁定时的延迟误差最大为一个时钟周期,所以采用本发明的方法进行PCR的校正,引入的误差非常小。
为使本发明的目的、方案、和优点更加清楚明白,以下举实施例,并结合附图,对本发明进一步详细说明。其中图1示出了一个MPEG-2同步模型;图2示出了本发明第二较佳实施例中一个MPEG-2TS流多路复用的示例图;图3示出了本发明第二较佳实施例中TS流多路复用和PCR校正方法的实现流程图。
本发明中PCR校正的原理可以解释为,假设每个TSP在复用板的应该停留时间已知,并且为常量,设为固定延迟时间Ts。在复用过程中可以测量每个TSP的实际停留时间Ta,求得停留时间的差值Td。根据Td来调整PCR。公式如下Td=Ta-Ts(公式1)
固定延迟时间可以是平均停留时间,也可以是提前或者拖后于平均时间的某个值。根据上述公式1就可计算出每个TSP实际停留时间Ta和固定延迟时间Ts的差值Td,用Td为基础来调整PCR。
较佳的,所述的固定延迟时间Ts是,该输入通道第一个包含有节目时钟基准的传输流数据包的实际延迟时间;并且当输入通道的码率变化时,该输入通道的固定延迟时间Ts应重新计算,当输出通道的码率变化时,所有输入通道的固定延迟时间Ts均应重新计算。
较佳的,复用系统设置了一个27MHZ的系统时钟,并且根据输入和输出端口数N,设置N个系统时钟计数器,每个计数器固定分配给一个输入或者输出端口,用于记录各种输入和输出时刻。
较佳的,在复用过程中,所述测量传输流数据包的实际停留时间Ta,进一步包含以下步骤当传输流数据包进入复用系统时,记录其输入时刻标签;当传输流数据包被输出时,记录其输出时刻标签;利用该输出时刻标签与该输入时刻标签计算此传输流数据包在复用系统中的实际停留时间Ta。
本发明的第一较佳实施例中,在实现MPEG-2传送码流多路复用过程中PCR校正时,有如下一些技术特征系统设置了一个27MHZ的系统时钟,根据输入和输出端口数N,设置N个系统时钟计数器,每个计数器固定分配给一个输入或者输出端口,利用这些计数器来记录各种输入和输出时刻。
每一个传送数据包进入系统时,必须记录其输入时刻标签,并且当此时的传送数据包包含PCR时,此输入时刻标签必须保存到此数据包被输出之后才能丢弃。
当一个传送数据包需要被输出时,需要记录其输出时刻标签,当此时输出的传送数据包包含PCR时,需要利用此输出时刻标签与该传送数据包的输入时刻标签计算此传送数据包在复用系统中的延迟时间。
利用传送数据包的输出时刻标签和输入时刻标签计算得到的延迟时间值,减去一个延迟时间的固定值,就可以得到此传送包中PCR应该调整的调整值,利用此调整值校正PCR值,就可得到校正后的PCR值。
在本实施例中,延迟时间的固定值是这样设置的针对每一个输入通道,都要设置一个固定延迟时间,此固定延迟时间就是该输入通道第一个含有PCR的传送数据包的实际延迟时间。一般的方法是使用一个经验值作为延迟时间固定值,这种做法的缺点是每一个输入通道的码率范围都很大,而传送数据包的延迟时间是决定于输入和输出通道以及当前输入码流通道数目等因素,为每一种情况取得一个经验值并不容易,或者取得的经验值误差太大。本实施例中使用该输入通道第一个含有PCR的传送数据包的实际延迟时间作为延迟时间固定值可以带来以下优点更加接近实际的固定延迟时间,使得校正引起的精度误差降低,同时这样做也更加容易实现。
当输入通道码率变化时,需要重新计算该通道的固定延迟时间,当输出通道码率变化时需要重新计算所有输入通道的固定延迟时间。以保持固定延迟时间尽可能接近时间延迟时间,降低由于校正而引入的PCR精度误差。
总结本实施例的PCR校正计算方法如下对于一个含有PCR的传送数据包来说,标记其通道输入时刻标签为T(in)j,其中j表示该通道输入的第j个含有PCR的传送数据包,经过复用之后输出时刻标签为T(out)j,该通道的复用固定延迟时间为ConstDelta,各个传送数据包的复用实际延迟时间为ActualDelta,原来的PCR值记为OrgPCR,校正后的PCR值记为NewPCR。下面是NewPCR的计算公式(1)固定延迟时间ConstDelta=T(out)1-T(in)1(2)实际延迟时间ActualDeltaj=T(out)j-T(in)j
(3)PCR校正公式NewPCRj=OrgPCRj+(ActualDeltaj-ConstDelta)图2示出了本发明第二较佳实施例中MPEG-2TS流多路复用的示例图。其中IN_FIFO1接收并缓存第1路输入TS流数据,IN_FIFO2接收并缓存第2路输入TS流数据,IN_FIFOn接收并缓存第n路输入TS流数据。多路的输入TS流数据,经过MPU的复用处理,通过总线分时的传送到输出TS的缓冲OUT_FIFO中,由输出时钟驱动形成输出TS流。TS流是由顺序传送的TS数据包构成,每一个TS数据包都是固定的188字节长度,其中TS包头有4个字节,第1个字节必然是同步字节0X47,同步字节作为TS数据包在TS流中的定界标志,通过对同步字节的定界,可以从TS流中得到正确的TS数据包。需要说明的是,MPU对输入TS流的处理是以188字节TS数据包为单位,输出到OUT_FIFO时也是以188字节的TS数据包为单位。对于MPU来说,复用时的处理包括PCR校正、PID重新分配、PSI重新构造等方面。本发明涉及的是PCR校正方面的处理。
图3示出了本发明第二较佳实施例中TS流多路复用和PCR校正方法的实现流程图。以下就各个步骤对本实施例详细说明。
步骤202记录TS数据包到达系统的时刻标签。当TS数据包到达复用系统时,系统根据TS数据包的同步字节,对TS数据包进行定界。定界完成之后,后续的各个输入TS数据包的输入时刻就可以通过同步字节和系统时钟计数器的当前值来获得,也就是当复用系统收到TS数据包的同步字节时,读取系统时钟计数器的当前值,这个值就是TS数据包的输入时刻标签Tinj,j表示从第1个输入到FIFO的TS数据包计起第j个输入的TS数据包。
步骤203TS数据包送入FIFO。对于总线式的时分复用系统,多路输入同时请求总线是可能发生的,系统对多路输入的请求需要有一个调度的过程,所以输入数据需要进行缓存。
步骤204MPU把输入TS数据包读到处理缓冲区。对于多路的输入请求,MPU在任一时刻只能处理其中的一路,MPU根据输入调度策略(如先来先服务等),选择其中一路的输入请求进行处理。MPU处理TS数据包时需要把TS数据包从输入FIFO中读入到MPU的数据缓冲区中。
步骤205MPU对TS数据包进行复用处理。从多路MPEG-2的TS码流复用成为一路MPEG-2的TS码流,需要对输入的TS数据包做相应的处理,以保证复用后的TS码流依然符合MPEG-2标准的规定。这些处理包括PID的重新分配和修改等。
步骤206当输出FIFO请求时,系统根据输出FIFO请求信号和系统时钟计数器的当前值,记录下一个数据包的输出时刻标签,也就是,当输出FIFO产生请求信号时,这时需要送出一个TS数据包,所以当输出FIFO产生请求信号的时刻就是下一个TS数据包送出的时刻,这时的系统时钟计数器的当前值就是下一个TS数据包被输出的时刻标签,记为Toutj,表示从第1个TS数据包被输出开始的第j个数据包的输出时刻标签。
步骤207如果TS数据包中还有PCR,则根据输入时刻标签和输出时刻标签计算PCR的校正值,校正TS数据包中的PCR。计算方法如第5节g中所述。
步骤208TS数据包输出到输出FIFO中。经过MPU复用处理和PCR校正的TS数据包被发送到输出FIFO中,由输出时钟驱动,从输出FIFO产生复用后的MPEG-2TS码流。
本发明的方法在计算传送数据包的固定延迟和实际延迟时,都是由传送数据包驱动,传送数据包的输入时刻标签和输出时刻标签,都可以由硬件逻辑电路根据传送数据包实际输入和输出时刻进行精确锁定。这样误差主要来自本地复用系统的27MHZ时钟精度误差,以及本地时钟计数器由输入/输出信号触发锁定时的延迟误差。由于27MHZ时钟的精度可以通过采用高精度的晶振来实现,一般要求50ppm以上就可以。而对于触发锁定时的延迟误差最大为一个时钟周期,所以采用本发明的方法进行PCR的校正,引入的误差非常小。
本发明实施例中的技术特征可以进一步组合、修改、替换,而并不脱离本发明的精神和范围,在此不在赘述。并且应理解的是,以上所述仅为本发明的较佳实施例而已,并不应用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种MPEG-2传输流数据包流在多路复用中,节目时钟基准的校正方法,其特征在于针对复用系统的每一个输入通道,确定一个传输流数据包经过该通道的固定延迟时间Ts;在复用过程中测量传输流数据包的实际停留时间Ta;以实际停留时间Ta与固定延迟时间Ts的差值Td作为修正值,调整传输流数据包中的节目时钟基准。
2.如权利要求1所述的方法,其特征在于,所述的固定延迟时间Ts是,该输入通道第一个包含有节目时钟基准的传输流数据包的实际延迟时间;并且当输入通道的码率变化时,该输入通道的固定延迟时间Ts应重新计算,当输出通道的码率变化时,所有输入通道的固定延迟时间Ts均应重新计算。
3.如权利要求1所述的方法,其特征在于,复用系统设置了一个27MHZ的系统时钟,并且根据输入和输出端口数N,设置N个系统时钟计数器,每个计数器固定分配给一个输入或者输出端口,用于记录各种输入和输出时刻。
4.如权利要求1所述的方法,其特征在于,在复用过程中,仅测量包含有节目时钟基准的传输流数据包的实际停留时间Ta,并对该传输流数据包中的节目时钟基准进行调整。
5.如权利要求1所述的方法,其特征在于,在复用过程中,测量所有传输流数据包的实际停留时间Ta,但在调整过程中,仅调整包含有节目时钟基准的传输流数据包的节目时钟基准。
6.如权利要求1所述的方法,其特征在于,在复用过程中,所述测量传输流数据包的实际停留时间Ta,进一步包含以下步骤当传输流数据包进入复用系统时,记录其输入时刻标签;当传输流数据包被输出时,记录其输出时刻标签;利用该输出时刻标签与该输入时刻标签计算此传输流数据包在复用系统中的实际停留时间Ta。
7.如权利要求6所述的方法,其特征在于,在传输流数据包包含节目时钟基准的情况下,其输入时刻标签至少保存到此数据包被输出后才能丢弃;并且在传输流数据包包含节目时钟基准的情况下,需要利用该输出时刻标签与该输入时刻标签计算此传输流数据包在复用系统中的实际停留时间Ta。
8.如权利要求1所述的方法,其特征在于进一步包含以下步骤传输流数据包到达复用系统,系统记录该传输流数据包的输入时刻标签;该传输流数据包被送到FIFO中;MPU把该传输流数据包从FIFO中读到缓冲区;MPU对该传输流数据包做复用处理;输出FIFO请求输出,复用系统记录当前输出时刻标签;在该传输流数据包包含节目时钟基准的情况下,根据输入时刻标签和输出时刻标签计算节目时钟基准修正值,并且根据该修正值调整该传输流数据包中的节目时钟基准;将该传输流数据包送到输出FIFO。
9.如权利要求6、7、或8所述的方法,其特征在于,所述的传输流数据包的输入时刻标签是,当复用系统收到该传输流数据包的同步字节时,系统时钟计数器的当前值。
10.如权利要求6、7、或8所述的方法,其特征在于,所述的传输流数据包的输出时刻标签是,当输出FIFO发出请求信号时,系统时钟计数器的当前值。
全文摘要
一种MPEG-2传输流数据包流在多路复用中,节目时钟基准的校正方法,针对复用系统的每一个输入通道,确定一个传输流数据包经过该通道的固定延迟时间Ts;在复用过程中测量传输流数据包的实际停留时间Ta;以实际停留时间Ta与固定延迟时间Ts的差值Td作为修正值,调整传输流数据包中的节目时钟基准。采用本方法,可以完成多路互不相关的MPEG-2传送码流能够被复用成为一路的MPEG-2传送码流的功能,并且引入的误差非常小。
文档编号H04N5/04GK1338862SQ0012357
公开日2002年3月6日 申请日期2000年8月22日 优先权日2000年8月22日
发明者陈悦鹏, 姚峻, 彭鹏, 陈梓德, 鞠德刚, 张绍华, 王展 申请人:华为技术有限公司