一种多节目pcr校正系统及方法_2

文档序号:9551803阅读:来源:国知局
,本发明的实施例一方面提供一种多节目PCR校正系统,其特征在于: 包括码率调整模块、仲裁模块、PCR校正控制模块、PCR增量计算模块、新PCR计算模块和包 间隔计算模块;
[0051] 码率调整模块,用于根据用户设置的各通道码率值输出恒定码率的TS包,并提取 TS包信息输出给仲裁模块,所述TS包信息包括PID和PCR值;
[0052] 仲裁模块,用于接收多个通道的码率调整模块输出的TS包信息,经仲裁处理后输 出唯一的需当前处理的某个通道的TS包信息给PCR校正控制模块,并向PCR校正控制模块 发起PCR校正起始命令;
[0053] PCR校正控制模块,用于接收仲裁模块发起的PCR校正起始命令和某个通道的TS 包信息,控制协调PCR增量计算模块、新PCR计算模块和包间隔计算模块完成PCR校正处 理,并存储PCR校正中的相关数据值;
[0054] PCR增量计算模块,用于进行各通道TS包计数、对当前校正PCRPID相邻包间隔计 算和PCR增量计算,并根据计算出的PCR增量值产生PCR增量溢出标识;
[0055] 新PCR计算模块,用于计算得到当前处理PCR包的校正后PCR值。
[0056] 包间隔计算模块,用于根据校正后的PCR值和输入TS流中的原始PCR值信息、之 前的校正信息对包间隔值进行修正;
[0057] 所述仲裁模块,还用于将校正后的PCR值根据仲裁信息分配给对应通道的码率调 整模块;
[0058] 所述码率调整模块,还用于将校正后的PCR值替换原PCR值后输出。
[0059] 在本发明的实施例中,所述新PCR计算模块,用于将当前PCRPID的前一个PCR包 校正后的PCR值加上当前PCR包的PCR增量值计算出新PCR值。
[0060] 所述新PCR计算模块,还用于根据计算出的新PCR值和输入PCR值的差异值是否 大于预设门限值判断是否需要对计算出的新PCR值进行微调,并确定微调的方向。
[0061] 所述新PCR计算模块,还用于当PCR增量溢出或者是计算出的PCR值和输入PCR 值的差值溢出时,重置校正后的PCR值为输入PCR值。
[0062] 在本发明的实施例中,所述包间隔计算模块,用于根据同一PCRPID相邻两个PCR 包计算出的PCR值和输入PCR值差异的变化趋势判断是否需要对包间隔值进行微调,并确 定微调的方向。
[0063] 所述包间隔计算模块,还用于使同一PCRPID对应的包间隔在重置或者微调后紧 接的预设个数的PCR包内不做微调处理,只有当前次重置或者微调后已完成预设个数的同 一PCRPID的PCR包校正,且同一PCRPID的相邻三个PCR包所对应的包间隔微调方向一 致时,才做微调处理,每次微调的数值为同一PCRPID相邻两个PCR包之间包个数的倒数。
[0064] 所述包间隔计算模块,还用于当PCR增量溢出或者是计算出的PCR值和输入PCR 值的差值溢出时,重置包间隔值。
[0065] 如图2所示,本发明的实施例另一方面提供一种多节目PCR校正方法,包括:
[0066] 根据用户设置的各通道码率值输出恒定码率的TS包,并提取TS包信息以输出,所 述TS包信息包括PID和PCR值;
[0067] 接收多个通道输出的TS包信息,经仲裁处理后输出唯一的需当前处理的某个通 道的TS包信息,并发起PCR校正起始命令;
[0068] 接收发起的PCR校正起始命令和某个通道的TS包信息,控制协调完成PCR校正处 理,并存储PCR校正中的相关数据值;
[0069]PCR校正处理包括:
[0070] 进行各通道TS包计数、对当前校正PCRPID相邻包间隔计算和PCR增量值计算, 并根据计算出的PCR增量值产生PCR增量溢出标识;
[0071] 计算得到当前处理PCR包的校正后PCR值;
[0072] 根据校正后的PCR值和输入TS流中的原始PCR值信息、之前的校正信息对包间隔 值进行修正;
[0073] 将校正后的PCR值根据仲裁信息分配给对应通道;
[0074] 将校正后的PCR值替换原PCR值后输出。
[0075] 在本发明的实施例中,将当前PCRPID的前一个PCR包校正后的PCR值加上当前 PCR包的PCR增量值计算出新PCR值。
[0076] 在本发明的实施例中,根据计算出的新PCR值和输入PCR值的差异值是否大于预 设门限值判断是否需要对计算出的新PCR值进行微调,并确定微调的方向。
[0077] 在本发明的实施例中,当PCR增量溢出或者是计算出的PCR值和输入PCR值的差 值溢出时,重置校正后的PCR值为输入PCR值。
[0078] 在本发明的实施例中,根据同一PCRPID相邻两个PCR包计算出的PCR值和输入 PCR值差异的变化趋势判断是否需要对包间隔值进行微调,并确定微调的方向。
[0079] 在本发明的实施例中,同一PCRPID对应的包间隔在重置或者微调后紧接的预 设个数的PCR包内不做微调处理,只有当前次重置或者微调后已完成预设个数的同一PCR PID的PCR包校正,且同一PCRPID的相邻三个PCR包所对应的包间隔微调方向一致时,才 做微调处理,每次微调的数值为同一PCRPID相邻两个PCR包之间包个数的倒数。
[0080] 在本发明的实施例中,当PCR增量溢出或者是计算出的PCR值和输入PCR值的差 值溢出时,重置包间隔值。
[0081] 图3为PCR校正计算的示意图。如图3所示,某个PCRPID的第i个PCR的值可 以由其前一个(第i-Ι个)PCR的值、当前TS流的码率以及PCR包在TS流中的位置计算得 到。
[0082] SP:PCRi=PCRi-l+PNum_2PCR*Int_2P(式 1)
[0083] 式1中,PCRi为计算得到的第i个PCR的值,PCRi-1为第i-1个PCR的值, PNum_2PCR为第i个PCR包和第i-Ι个PCR包之间的TS包的个数,Int_2P为相邻两个TS 包之间27M时钟的个数。
[0084] 图3所示为单个PCRPID时PCR值计算的示意图,对于流中有多个PCRPID的情 况,式1依然有效,只需要保证在计算某个PCRPID的PCR值时,使用该PCRPID的前一个 PCR值和该PCRPID相邻两个PCR包对应的包计数值即可。
[0085] 本发明支持对于多个TS流的PCR实时校正,表现在【具体实施方式】上时,如图1所 示,每个输出TS流对应一个码率调整模块。
[0086] 单个码率调整模块的实现方式如图4所示,时序如图5所示,下面分步骤进行说 明:
[0087] 1-1.TS包是否输出根据计数器产生,计数器的模值由用户设置的通道码率值得 到;
[0088] 1-2.输出缓存为可编程逻辑器件的片上存储器,用于存储待输出TS包,输出缓存 中可存储的TS包最大个数可以根据系统实际应用确定;
[0089] 1-3.在TS包输出使能时,如果输出缓存中没有未输出包,则输出空包以保持固定 码率输出;为了和经过PCR校正处理的包保持时延一致,空包在输出前需要经过固定的等 待时间;
[0090] 1-4.在TS包输出使能时,如果缓存中有未输出包,则需要从缓存中读取TS包的特 定字段来识别该包是否是PCR包,如果不是PCR包,则经过固定的等待时间后输出该包;
[0091] 1-5.如果当前待输出包是PCR包,则提取当前PCR包的PID值和PCR值给其他模 块用于完成PCR校正计算,最后经过固定的等待时间,确保其它模块已经完成了对于当前 PCR包的校正后,用校正后的PCR值替换原TS包中的PCR值后输出TS包;
[0092] 1-6.不管是输出空包、非PCR包还是PCR包,每输出一个包,都需要送出一个包同 步指示用于PCR增量计算模块实现通道包计数;
[0093] 1-7.每个通道对应一个PCR校正请求状态,在接收到来自各通道对应的码率调整 模块1输入的PCR包指示后,置该通道对应的PCR校正请求状态位为有效。
[0094] 仲裁模块2的实现方式如下:
[0095] 2-1.每个通道对应一个PCR校正请求状态,在接收到来自各通道对应的码率调整 模块输入的PCR包指示后,置该通道对应的PCR校正请求状态位为有效;
[0096] 2-2.判断当前PCR校正处理是否空闲,如果空闲,且PCR校正请求状态向量非零 值,则处理当前优先级最高请求通道对应的PCR校正请求(产生PCR校正起始命令,置当前 处理通道号,输出当前处理通道的PID、PCR值和TS包间隔值给其它校正模块),同时清零 该通道的PCR校正请求状态;
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1