录其PCR值,因而可以利用具有该PID的相邻PCR包的PCR值计算 二者之间的27MHz时钟周期个数L;为提高工作效率,平均读包间隔G以更高频率的时钟CLK1 作为工作时钟,求得CLK1与27MHz的倍数R,则可以求得所述相邻的两个PCR包之间的工作时 钟周期个数1/ =R*L。
[0154] 每当接收到所述通道的一个TS数据包,进行计数,并记录下来。将上次记录的计数 值加1得到当前包的计数值。如果是所述通道具有选定PID的PCR包,则单独记录PCR包的计 数值,进而可以得到所述相应通道相邻PCR包之间相应通道的TS包数N。
[0155] 将1/与N进行除法运算,得到的商即为所述通道的平均读包间隔G,将平均读包间 隔和对应的余数REM,输出至一级存储器A。
[0156] 所述一级存储器A,用于将来自接收模块10的TS数据包和平均读包间隔G等信息, 缓存到各通道各自的存储空间,并在接收到一级缓存读请求模块20的读请求后读取相应通 道的TS数据包并输出,如果是PCR数据包,则该PCR数据包伴随平均读包间隔G等信息,则输 出平均读包间隔G等信息;同时维护各通道缓存的TS数据包数目,并输出至一级缓存读请求 模块20。
[0157] 参看图8,是本发明提供的一级存储器的一种实现方式的结构示意图。
[0158] 在一种可实现的方式中,所述一级存储器A包括:读写控制逻辑单元A1,缓存包计 数单元A2,和存储器A3。
[0159] 所述读写控制逻辑单元A1,接收来自接收模块10的数据包,并缓存到存储器A3各 通道各自的存储空间,如果是PCR数据包还需要同时将相应平均读包间隔和余数写入上述 PCR包的存储单元。当接收到来自一级缓存读请求模块20的读请求后,读取对应通道的数据 包、平均读包间隔和余数。
[0160] 所述缓存包计数单元A2,用于维护各通道缓存在存储器A3中的TS包数目,当读写 控制逻辑单元A1读或写时,对缓存包数进行更新。
[0161 ]所述存储器A3,用于缓存各通道的TS数据包和其他相关信息。
[0162] 各通道缓存的容量和带宽取决于接收传输流的最大码率,最差抖动指标,可以但 不限于,输入流中所有通道共用唯一的存储器,或用多个独立的存储器且每个存储器缓存 其中一部分通道的数据包。
[0163] 所述一级缓存读请求模块20,利用来自一级存储器A的各通道缓存的TS包数目、来 自二级存储器B的信息等,产生一种机制,用于发起读取一级存储器A中数据包的请求。所述 来自二级存储器B的信息包括:每个通道可以缓存最大包数,某个通道输出完一个包的标志 信号。
[0164] 其中,发起对一级存储器A的各通道缓存的TS数据包的读请求的机制是:当满足下 述三中条件之一,则将对一级存储器A同一端口的读取请求加入读请求公共队列,每次执行 队列中最早加入的通道的读请求:
[0165] (1)当所述一级存储器A中一个或多个通道缓存的TS数据包数目首次到达相应通 道预设值时;
[0166] (2)当所述一级存储器A中一个或多个通道的读取次数为非零值,且小于所述二级 存储器B中对应通道可缓存的最大包数时;
[0167] (3)当所述二级存储器B中一个或多个通道有TS数据包输出时。
[0168] 其中,所述相应通道的缓存包数预设值不大于该通各通道的缓存容量的一半。
[0169] 具体实施时,所述一级缓存读请求模块20,包括:第一读请求产生模块,用于根据 上述三个条件中的任意一条件,产生对所述一级存储器A中的相应通道的数据读请求;第一 读请求执行模块,用于将所述一级存储器A同一端口的数据读请求加入一个公共队列,逐一 执行所述数据读请求。
[0170]在本实施例中,二级存储器B,用于将来自一级存储器A的TS数据包,缓存到各通道 各自的存储空间,并在接收到二级缓存读请求模块30的读请求后读取相应通道的TS数据 包,伴随来自二级缓存读请求模块30的时间戳,并输出至输出模块40;同时维护各通道缓存 的TS包数目,并输出至二级缓存读请求模块30。其中,二级存储器B各通道缓存容量和带宽 要保证相应通道一旦有包存入便不能读空,二级存储器B的内部结构与图8提供的一级存储 器A的结构相似,在此不再赘述。
[0171]其中,发起对二级存储器B的各通道缓存的TS数据包的读请求的机制是:,当满足 下述两中条件之一,则将对存储器同一端口的读取请求加入读请求公共队列,每次执行队 列中最早加入的通道的读请求:
[0172] (1)二级存储器B某个通道的缓存首次存满(所述二级存储器B中一个或多个通道 的缓存的TS数据包数目首次达到最大可存包数);
[0173] (2)二级存储器B某个通道曾经读出过数据包且当前时间距离本通道上次读包请 求时间已满足当前读包间隔(所述二级存储器B中一个或多个通道已读出过数据包且当前 时间距离本通道上次读包请求时间的时间间隔大于或等于当前读包间隔);所述当前时间 和上次读包请求时间是由所述工作时钟CLK1产生的计数器求得。
[0174] 具体实施时,所述二级缓存读请求模块30,包括:第二读请求产生模块,用于在满 足以上二级存储器B的读取机制中任一个条件时,产生对所述二级存储器B中的相应通道的 数据读请求,并以当前系统时间作为所述数据包的时间戳;以及,第二读请求执行模块,用 于将所述二级存储器B同一端口的数据读请求加入一个公共队列,逐一执行所述数据读请 求。
[0175] 其中,各个TS数据包的当前读包间隔61是利用所述平均读包间隔G和计算平均读 包间隔产生的余数REM得到的,计算公式为:
[0177] 其中,参数REM_DECi表示每个包的读包间隔得到后,以余数REM为初值的减法器的 输出值,计算公式为:
[0178]
[0179] 参数示每个包的读包间隔得到后,以0为初值的累加器的输出值,计算公 式为:
[0180]
[0181]参数NC0为所述累加器的增量,计算公式为:
[0183] 上述各方程式中的参数G为所述平均读包间隔;N为TS数据包数目;Μ为N的二进制 数据位宽。
[0184] 其中,当前读包间隔61的计算过程与基本工作原理与实施例一对应相同,在此不 再赘述。
[0185] 参看图9,是本发明提供的传输流抖动去除装置中的输出模块的一种实现方式的 结构示意图。
[0186] 具体地,所述输出模块40,包括:
[0187] 码率模式检测模块41,用于根据各通道码率检测出各个通道TS数据包的码率模 式;
[0188]数据输出模块42,用于当所述码率模式为CBR模式时,读取TS数据包,并在所述三 级缓存器读空时输出空包;当所述码率模式为VBR模式时,在所述三级缓存器有包时读取TS 数据包后输出;
[0189] PCR校正模块43,用于利用所述系统时间的当前数值与PCR包的时间戳的差值,对 PCR值做相应的增加。
[0190]在本实施例中,输出模块40将来自二级存储器Β的TS数据包进一步缓存到三级存 储器Q中各个通道独立的存储器,目的是为了解决因在二级存储器Β中多通道可能共用一 个存储器,而在读判断或仲裁时产生的实际包间隔与时间戳不匹配的问题。在TS数据包写 入缓存前统计各通道码率,如果通道码率是CBR模式,则以较大的码率读取TS数据包,缓存 读空时输出空包;如果是VBR模式,缓存有包时读取后输出。同时,将系统时间减去PCR包的 时间戳,利用两者的差值对PCR值做相应的增加。其中,所述系统时间是由二级缓存读请求 模块30中的计数器得到的,该系统时间优选为频率为27MHz的时钟信号CLK2。
[0191] 由上可见,本发明实施例实现了基于IP的多通道、大带宽传输流的抖动去除功能, 且能同时支持CBR和VBR模式的输入传输流,通过多级缓存和多通道仲裁,可以大量节省硬 件资源的前提下实现多通道、大带宽传输流的抖动去除,降低成本和提高系统运行能力。
[0192] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员 来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为 本发明的保护范围。
【主权项】
1. 一种基于IP的传输流抖动去除方法,其特征在于,包括: 接收包含多通道传输流的输入流,形成TS数据包; 计算出各通道的平均读包间隔;