一种传输流复用的插包控制方法及系统与流程

文档序号:13482176阅读:147来源:国知局
本发明涉及传输流复用
技术领域
:,尤其涉及一种传输流复用的插包控制方法及系统。
背景技术
::国际标准组织为了解决在一个数据流中复用多个节目的视频、音频等数据的问题,设计了传输流(transportstream,ts)格式。在复用阶段,ts复用器会在ts流中插入包含节目参考时钟(programclockreference,pcr)、节目特定信息(programspecificinformation,psi)、业务信息(serviceinformation,si)等数据的ts包,其中psi/si信息包括节目关联表(programassociationtable,pat)、节目映射表(programmaptable,pmt)、业务描述表(servicedescriptiontable,sdt)等信息表。pcr包和psi/si信息表会不断地被插入到ts流中,而且两次连续的插入间有着各自的最大时间间隔限制。现有的ts复用技术在进行插包控制时,通常采用定时插包的方式,即采用独立的计时模块来进行定时插包操作,这种方式不能很好的控制插包时间间隔,容易出现间隔忽大忽小的问题,这是由于ts插包控制器调度不及时导致的,在实际的应用中,当ts插包控制器处理的任务过多时,会出现计时模块访问不及时的问题。例如:需要每隔500ms在ts流中插入pmt表格的ts包,就需要ts插包控制器不断地访问计时模块,检查距离上次pmt表格ts包的插入是否已经到达500ms,当到达500ms时,ts插包控制器就会往ts流中插入pmt表格ts包,并重新开始计时,有可能在500ms后,ts插包控制器才会访问计时模块,插入pmt表格ts包,由于时间不会因为ts插包控制器来不及访问而停止走动,在这种情况下,插包时间间隔会受任务忙碌程度影响而波动,从而出现插包时间间隔忽大忽小的问题。技术实现要素:本发明要解决的技术问题在于,针对相关技术中上述定时插包的方式所带来的插包时间间隔容易出现忽大忽小的问题,提供一种传输流复用的插包控制方法及系统。本发明解决其技术问题所采用的技术方案是:提供一种传输流复用的插包控制方法,所述方法包括以下步骤:s1.将ts流码率及需要进行插包间隔控制的ts包的插包周期写入第一存储器;s2.将需要进行插包间隔控制的ts包的插包周期按公式换算成表示ts流长度的包周期数,写入第二存储器,并将表示距离上次ts插入需要进行插包间隔控制的ts包以来,ts流所经历的长度的包周期计数清零;s3.创建需要进行插包间隔控制的ts包;s4.将不需要进行插包间隔控制的ts包存放在数据缓存区;s5.比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值,若包周期计数大于等于包周期数,则执行步骤s6,若包周期计数小于包周期数,则执行步骤s8;s6.将相应ts包拷贝至ts缓存区,并将相应ts包的包周期计数进行清零;s7.更新需要进行插包间隔控制的ts包的包周期计数,然后执行步骤s5;s8.从数据缓存区中读取一个ts包,并写入到ts缓存区;s9.判断数据缓存区是否为空,若为空,则执行步骤s10,否,则执行步骤s7,继续插包过程;s10.结束插包过程。优选地,在本发明所述的传输流复用的插包控制方法中,所述需要进行插包间隔控制的ts包包括pcr包及各psi/si信息表,所述不需要进行插包间隔控制的ts包包括音、视频及空包的ts包,所述第一存储器是插包控制参数寄存器,所述第二存储器是包周期数寄存器,所述数据缓存区是fifo缓存区。优选地,在本发明所述的传输流复用的插包控制方法中,所述步骤s2中的公式是:其中所述ts流码率恒定,ts包包长度固定为188字节。优选地,在本发明所述的传输流复用的插包控制方法中,所述步骤s2中ts流所经历的长度是ts缓存区增加的ts包总数,包周期计数清零是将包周期计数器清零。优选地,在本发明所述的传输流复用的插包控制方法中,所述步骤s5中比较pcr包及各psi/si信息表的包周期计数与其相应包周期数的值是判断pcr包及各psi/si信息表的包周期计数是否大于等于相应包周期数的值。优选地,在本发明所述的传输流复用的插包控制方法中,所述步骤s7中更新pcr包及各psi/si信息表的包周期计数是更新包周期计数器,根据ts缓存区增加的ts包数目相应增加pcr包及各psi/si信息表的包周期计数。本发明还构造一种传输流复用的插包控制系统,包括:第一存储器,用于存放ts流码率及需要进行插包间隔控制的ts包的插包周期;第二存储器,用于存放按公式将需要进行插包间隔控制的ts包的插包周期换算成表示ts流长度的包周期数;计数器,用于记录表示距离上次ts插入需要进行插包间隔控制的ts包以来,ts流所经历的长度的包周期计数;数据缓存区,用于存放不需要进行插包间隔控制的ts包;ts缓存区,用于接收ts插包控制器的输出,存放复用后的ts流数据;第一ts包模块和第二ts包模块,用于分别存放需要进行插包间隔控制的ts包;ts插包控制器,用于从所述第一存储器中获取需要进行插包间隔控制的ts包的插包周期,按公式换算成表示ts流长度的包周期数并存放到所述第二存储器中;同时,用于比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值,将ts包数据从所述第一ts包模块、所述第二ts包模块和所述数据缓存区存放至所述ts缓存区;所述ts插包控制器分别与所述第一存储器、所述第二存储器、所述数据缓存区、所述ts缓存区、所述计数器、所述第一ts包模块、所述第二ts包模块相连。优选地,在本发明所述的传输流复用的插包控制系统中,所述需要进行插包间隔控制的ts包包括pcr包及各psi/si信息表,所述不需要进行插包间隔控制的ts包包括音、视频及空包的ts包,所述第一存储器是插包控制参数寄存器,所述第二存储器是包周期数寄存器,所述计数器是包周期计数器,所述数据缓存区是fifo缓存区,所述第一ts包模块是pcr包模块,所述第二ts包模块是psi/si信息表模块。优选地,在本发明所述的传输流复用的插包控制系统中,所述公式是:其中所述ts流码率恒定,ts包包长度固定为188字节。优选地,在本发明所述的传输流复用的插包控制系统中,所述比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值是判断pcr包及各psi/si信息表的包周期计数是否大于等于相应包周期数的值。实施本发明传输流复用的插包控制方法,具有以下有益效果:通过将pcr包及各psi/si信息的插包周期按公式换算成表示ts流长度的包周期数,与同样表示ts流长度的包周期计数进行比较,实现ts流复用时插包时间间隔的精确控制,即使本发明ts插包控制器调度不及时,包周期计数也不会像时间一样自动增加,因此插包时间间隔可以得到精确控制,能够减少pcr包及各psi/si信息表的宽带占用。同时本发明的实现过程简单,可灵活应用于多种场景,包括但不限于ts流节目源制作、多节目ts流转换为单节目ts流等。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1是本发明一种传输流复用的插包控制方法的流程图;图2是本发明一种传输流复用的插包控制方法的系统模块框图。具体实施方式为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。图1是本发明一种传输流复用的插包控制方法的流程图。该传输流复用的插包控制方法包括以下步骤:s1.将ts流码率及需要进行插包间隔控制的ts包的插包周期写入第一存储器11;s2.将需要进行插包间隔控制的ts包的插包周期按公式换算成表示ts流长度的包周期数,写入第二存储器13,并将表示距离上次ts插入需要进行插包间隔控制的ts包以来,ts流所经历的长度的包周期计数清零;s3.创建需要进行插包间隔控制的ts包;s4.将不需要进行插包间隔控制的ts包存放在数据缓存区16;s5.比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值,若包周期计数大于等于包周期数,则执行步骤s6,若包周期计数小于包周期数,则执行步骤s8;s6.将相应ts包拷贝至ts缓存区17,并将相应ts包的包周期计数进行清零;s7.更新需要进行插包间隔控制的ts包的包周期计数,然后执行步骤s5;s8.从数据缓存区16中读取一个ts包,并写入到ts缓存区17;s9.判断数据缓存区16是否为空,若为空,则执行步骤s10,否,则执行步骤s7,继续插包过程;s10.结束插包过程。在本发明的传输流复用的插包控制方法中,需要进行插包间隔控制的ts包包括pcr包及各psi/si信息表,不需要进行插包间隔控制的ts包包括音、视频及空包的ts包,第一存储器11是插包控制参数寄存器,第二存储器13是包周期数寄存器,数据缓存区16是fifo缓存区。在本发明的传输流复用的插包控制方法中,步骤s2中的公式是:其中所述ts流码率恒定,ts包包长度固定为188字节。在本发明的传输流复用的插包控制方法中,步骤s2中ts流所经历的长度是ts缓存区17增加的ts包总数。在本发明的传输流复用的插包控制方法中,步骤s2中包周期计数清零是将包周期计数器12清零。在本发明的传输流复用的插包控制方法中,步骤s5中比较pcr包及各psi/si信息表的包周期计数与其相应包周期数的值是判断pcr包及各psi/si信息表的包周期计数是否大于等于相应包周期数的值。在本发明的传输流复用的插包控制方法中,步骤s7中更新pcr包及各psi/si信息表的包周期计数是更新包周期计数器,根据ts缓存区17增加的ts包数目相应增加pcr包及各psi/si信息表的包周期计数。具体地,如图1所示,一种传输流复用的插包控制方法包括以下步骤:s1.将ts流码率、pcr包及各psi/si信息表的插包周期写入插包控制参数寄存器11;s2.计算pcr包及各psi/si信息表的包周期数,写入包周期数寄存器13,并将包周期计数器12清零;s3.创建pcr包14及各psi/si信息表15;s4.将音、视频及空包的ts包写入fifo缓存区16;s5.判断包周期计数是否大于等于包周期数,若包周期计数大于等于包周期数,则执行步骤s6,若包周期计数小于包周期数,则执行步骤s8;s6.将相应ts包拷贝至ts缓存区17,并将相应ts包的包周期计数清零;s7.更新包周期计数器12;s8.从fifo缓存区16中读取一个ts包,并写入到ts缓存区17;s9.判断fifo缓存区16是否为空,若为空,则执行步骤s10,否,则执行步骤s7,继续插包过程;s10.结束插包过程。本发明计算pcr包及各psi/si信息表的包周期数是将pcr包及各psi/si信息表的插包周期按公式换算成表示ts流长度的包周期数,该公式是:是基于iso/iec13818规范的一个推导,其中ts流码率恒定,由ts流中复用数据的码率决定的,ts包包长度固定为188字节,插包周期的单位ms,ts流码率的单位为mbit/s;插包周期×(ts流码率×106)÷103的含义是在插包周期内,ts流传输的比特数;188×8的含义是在一个ts包的比特数,因为一个ts包包长度是188字节,一个字节的大小为8比特,所以计算后是一个ts包的比特数。反之,亦可通过该公式计算出已知包长度的ts包的插包周期,例如:有一段ts流的码率为8mbit/s,包长度为2000个ts包,那么这段ts流所经历的时间长度为:本发明步骤s2中将包周期计数器12清零,该清零的目的:一是在对包周期计数器12进行写操作之前,包周期计数器12中的值是一个随机值,可能会导致系统工作紊乱,写入一个零值可以避免这种情况;二是包周期计数器12需要从零开始计数,否则会导致插包周期过快的问题。本发明步骤s3.创建pcr包14及各psi/si信息表15的意思有两个:(1)根据iso/iec13818-1和etsien300468这两个规范中的定义来创建pcr包和psi/si信息表;(2)将创建好的pcr包和psi/si信息表分别存放到系统模块图中的pcr包模块14和psi/si信息表模块15中。本发明步骤s5的判断中,包周期计数实际上就是距离上次ts插包以来,ts流所经历的长度,而包周期数的本质是将插包周期换算成ts流长度,进行包周期计数和包周期数的比较相对于定时器计时的方式,插包时间间隔可以更精确地得到控制,即使本发明ts插包控制器调度不及时,包周期计数也不会像时间一样自动增加,可通过公式计算出时间,因此插包时间间隔可以得到精确控制。本发明步骤s6中相应ts包的包周期计数进行清零有两个目的:一是使包周期计数小于包周期数,清除步骤s6的执行条件;二是开始下次插包的包周期计数。本发明在实际应用中,fifo缓存区16中的音、视频和空包的ts包是不断地在增加的,之所以选用fifo缓存区16是因为其先进先出的特点,从fifo缓存区16读取数据时,会根据数据的写入顺序来读取。本发明步骤s9判断数据缓存区16是否为空,一个ts流中用于播放的有效数据其实是音、视频数据,当fifo缓存区16为空时,就意味着音、视频数据已经全部读取出来了,这个时候可以判定插包结束。图2是本发明一种传输流复用的插包控制系统模块框图。该传输流复用的插包控制系统,包括:第一存储器11,用于存放ts流码率及需要进行插包间隔控制的ts包的插包周期;第二存储器13,用于存放按公式将需要进行插包间隔控制的ts包的插包周期换算成表示ts流长度的包周期数;计数器12,用于记录表示距离上次ts插入需要进行插包间隔控制的ts包以来,ts流所经历的长度的包周期计数;数据缓存区16,用于存放不需要进行插包间隔控制的ts包;ts缓存区17,用于接收ts插包控制器的输出,存放复用后的ts流数据;第一ts包模块14和第二ts包模块15,用于分别存放需要进行插包间隔控制的ts包;ts插包控制器18,用于从第一存储器11中获取需要进行插包间隔控制的ts包的插包周期,按公式换算成表示ts流长度的包周期数并存放到第二存储器13中;同时,用于比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值,将ts包数据从第一ts包模块14、第二ts包模块15和数据缓存区存16放至ts缓存区17;ts插包控制器18分别与第一存储器11、第二存储器13、数据缓存区16、ts缓存区17、计数器12、第一ts包模块14、第二ts包模块15相连。在本发明的传输流复用的插包控制系统中,需要进行插包间隔控制的ts包包括pcr包及各psi/si信息表,不需要进行插包间隔控制的ts包包括音、视频及空包的ts包,第一存储器11是插包控制参数寄存器,第二存储器13是包周期数寄存器,计数器12是包周期计数器,数据缓存区16是fifo缓存区,第一ts包模块14是pcr包模块,第二ts包模块15是psi/si信息表模块。在本发明的传输流复用的插包控制系统中,公式是:其中ts流码率恒定,ts包包长度固定为188字节。在本发明的传输流复用的插包控制系统中,比较需要进行插包间隔控制的ts包的包周期计数与其相应包周期数的值是判断pcr包及各psi/si信息表的包周期计数是否大于等于相应包周期数的值。具体地,如图2所示,一种传输流复用的插包控制系统,包括:插包控制参数寄存器11,用于存放ts流码率、pcr包及各psi/si信息表的插包周期;包周期数寄存器13,用于存放pcr包及各psi/si信息表的包周期数;包周期计数器12,用于记录pcr包及各psi/si信息表的包周期计数;fifo缓存区16,用于存放音、视频及空包的ts包;ts缓存区17,用于存放复用后的ts流数据;pcr包模块14,用于存放pcr包;psi/si信息表模块15,用于存放psi/si信息表;ts插包控制器18,用于从插包控制参数寄存器11中获取pcr包及各psi/si信息表的插包周期,按公式将插包周期换算成表示ts流长度的包周期数并存放在包周期数寄存器13中,同时用于比较同样表示ts流长度的pcr包及各psi/si信息表的包周期计数与其相应包周期数的值,判断包周期计数是否大于等于包周期数,将音、视频及空包的ts包、pcr包及psi/si信息表分别从fifo缓存区16、pcr包模块以及psi/si信息表模块放至ts缓存区17中;ts插包控制器18分别与插包控制参数寄存器11、包周期数寄存器13、fifo缓存区16、ts缓存区17、包周期计数器12、pcr包模块14、psi/si信息表模块15相连。通过实施本发明,实现ts流复用时插包时间间隔的精确控制,即使本发明ts插包控制器调度不及时,包周期计数也不会像时间一样自动增加,因此插包时间间隔可以得到精确控制,能够减少pcr包及各psi/si信息表的宽带占用。同时本发明的实现过程简单,可灵活应用于多种场景,包括但不限于ts流节目源制作、多节目ts流转换为单节目ts流等。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1