• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > DVB系统中多路TS流的软件复用关键技术及实现

DVB系统中多路TS流的软件复用关键技术及实现

录入:edatop.com     点击:

PMT表替换后,每一路流中原有的视音频帧的PID应与其对应替换的PMT表中的视音频PID保持一致,即需要进行PID重映射。   在传输流处理过程中,先分析每一个读入的TS帧,根据PID的不同,选择替换的内容,如果是PAT和PMT表,则整个TS帧替换,如果是视音频帧,则只替换PID,替换之后,应该对连续计数器加一。

需要注意的是,单路传输流的构成并不一样,有的传输流是一路音频一路视频,有的是一路视频两路音频;有的PCR的PID与视频的PID相同,有的则不同。所以,应该为每一种情况都准备一张PMT表,在新素材到来时,根据分析出来的PSI信息的情况,决定选用那一张PMT表。这样作虽然要创建很多静态表,增加了系统内存的占用,但是却能使程序简单化,易于实现,同时不用随时计算32位的CRC,提高了程序的稳定性。在素材文件切换时,如果PMT表需要发生变化,需要修改PMT表的版本号。

每一路流都有PAT,假使复用的路数为n,如果每一路的PAT都去替换,就会使得PAT表发送频率提升为原来的n倍。MPEG-2规定,PSI信息传送的频率每秒不低于25次,协议中只规定了下限,没有规定上限,虽然每一路都替换,并不违背协议,但是很多复用器和解码器在PSI信息过多的时候就会工作不正常,这是因为PSI信息的32位CRC校验很耗时,所以通常只替换其中一路的PAT,其余的都用空包代替。PSI信息合成具体流程如图4所示。

4.TS流的节目时钟参考值修正

在MPEG-2编码器中有一个系统时钟,该系统时钟用来生成一个共同的时序以便音频/视频能够正确地解码与播放,同时可以用来指示在采样瞬间系统时钟的瞬时值[6]。正是由于编码器中有共同的系统时钟,解码器中的时钟可以根据节目时钟参考(PCR)重新恢复,并通过时间标记的正确使用为解码器中操作的正确同步提供基准。

时钟处理和码率有很大的相关性,某个时间段的码率就是这段时间的数据量与时钟差值的比。为了防止在码率出现波动的时PCR时钟差值越界,导致解码器不能正常工作,复用后输出码率应该比所有单路节目的总码率稍大。在实际中,如果真的出现这种情况,为了避免所有节目不能正常播放,本文采取的方法是停掉其中某一路,这样降低输出总码率中的有效码率,保证其他节目正常播放。在这里需要说明的是,MPEG-2中TS流有两种,一种是恒码率流,一种是变码率流,本文研究的复用是针对恒码率流的复用。

根据MPEG-2标准,TS流中的PCR字段长度为48b, PCR也是另外一种时间标记,是编码器27MHz时基的42b采样值,解码器利用它来恢复系统时钟并进行恰当的解码操作,它有两个部分组成:一部分以本地参考时钟的1/300 (90kHz)为单位,称为program_clock_reference_base,为33b字段;另外一部分称为program_clock_reference_extension,是以本地参考时钟(27MHz)为单位的9b字段。

   (1)   

其中sysclkfre为系统时钟27MHZ。PCR的单位是1 /27M秒,分为两部分表示。实际编程中,当得到一个新的PCR值,用式(1)和式 (2) 得到PCR_base ( 33bit) 和PCR_ext ( 9bit)两部分,填入TS帧中。在输出码率恒定的情况下,每一个TS帧传输所用的时间△PCR值可以通过下式计算:

(4)

其中nCoderate为输出的总码率。△PCR就是每一个TS帧的时间刻度。

系统开始运行时,确定一个PCR的初始值,并为每一路申请一个计数器nCounter变量,计数在两个PCR帧之间的TS帧数,根据以下公式计算新的PCR值:

(5)

式中,PCR_old代表上一个PCR的值,PCR_new代表当前新PCR的值。在得到新的PCR值之后,用公式(1)(2)(3) 计算出PCR_base和PCR_ext写入帧中,同时PCR_old = PCR new,nCounter=0。 nCouter是对整个传输流而言的,不管TS帧是不是当前计算的这路TS的内容,或者空帧,nCounter都要累加。

在MPEG2协议中,PCR由PCR_base(33bit)和PCR_ext(9bit)表示,总共42bit,当PCR的值超过42bit所能表达的范围时,需要循环重新开始。由于PCR和PTS以及DTS的关系,在重新开始循环PCR的时候,一定要将PTS和DTS也重新回0,同时要将PCR帧中调整域中的discontinuity_indicator字段置1。

由于市场上的解码器千差万别,有的解码器中并没有为PCR留足42bit,在这种解码器中PCR通常会在解码器端被提前回0,而PTS和DTS并没有随之一起复位,这就会造成解码器的上溢,导致播放不正常。所以在实际中,本文判断PCR是否达到回0的阀值略低于42bit所能表达的最大值,这样会提高对解码设备的适应性,同时不会造成协议上的冲突。PCR时钟处理的具体流程如图5所示

 

作者:沈智鹏,刘剑,王金忠,孙云霞,高颖    来源:DVBCN数字电视中文网

上一篇:高压电容器充电变简单了
下一篇:简化电源测试的SPST双极性功率开关

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图