一种mpegts流pid重映射实现系统及方法

文档序号:8223433阅读:493来源:国知局
一种mpeg ts流pid重映射实现系统及方法
【技术领域】
[0001]本发明涉及一种MPEG TS流PID重映射实现系统及方法,特别是涉及一种适用于DVB系统中MPEG TS流PID的重映射实现系统及方法。
【背景技术】
[0002]目前通用PID重映射方法,把PID输入输出的映射关系存于FPGA内部一块RAM中。当一个TS流包输入FPGA后,FPGA开始提取包中的PID,在存有PID映射关系的RAM中去查询此输入PID对应的输出PID。由于MPEG2中,每个TS流的包长为188,所以当要处理的PID超过188个时,就需要对每个TS包进行寄存,以增加查询所需时间。
[0003]以处理2048个PID为例,就要格外开辟存储空间来寄存每个TS包,这样才能将RAM中2048个PID查询完,以Altera的FPGA Cyclone IV EP4CE40为例,需要多消耗2个M9K的存储器资源,并加大系统的延时,这就给设计带来了时序和资源的浪费。

【发明内容】

[0004]本发明要解决的技术问题是提供一种查询时间短,节省时序和资源的MPEG TS流PID重映射实现系统及方法。
[0005]本发明采用的技术方案如下:一种MPEG TS流PID重映射实现系统,器特征在于,包括
PID提取模块,解析TS流并提取TS流中PID为old PID ;
映射表生成模块,将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表;
PID映射表排序模块,将PID映射表根据old PID的值按照从小到大的顺序进行排序; PID映射表存储模块,存储排序好的PID映射表;
PID查询模块,当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;
PID比较模块,将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对。
[0006]一种MPEG TS流PID重映射实现方法,具体方法步骤为,
步骤一、解析TS流并提取TS流中PID为old PID ;
步骤二、将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表; 步骤三、将PID映射表根据old PID的值按照从小到大的顺序进行排序并存储;
步骤四、当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对,判断是否相等,相等,贝1J退出查询,用new PID替换提取出的PID,否则进入下一步;
步骤五、根据比对大小和映射表地址大小来决定向上或向下查询,并继续查询和比对。
[0007]作为优选,所述步骤四中,将TS流中提取的PID的值与查询的PID映射表中间地址中的old PID的值进行比对。
[0008]作为优选,所述步骤五中,根据比对大小和映射表地址大小来决定向上或向下查询,查询地址为排除查询地址后所剩下查询地址范围的中间地址,并以此类推继续查询和比对。
[0009]与现有技术相比,本发明的有益效果是:对比传统的查询方式,去除了资源浪费,节省了大量的存储器资源开销和减小了系统的延时。
【附图说明】
[0010]图1为本发明其中一实施例的PID映射表存储结构示意图。
[0011]图2为图1所示实施例中的PID查询示意图。
[0012]图3为图1所示实施例的实现方法流程图。
【具体实施方式】
[0013]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0014]本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0015]—种MPEG TS流PID重映射实现系统,包括PID提取模块,解析TS流并提取TS流中PID为old PID ;映射表生成模块,将提取出的old PID和在映射过程中会被替换成的newPID组成PID映射表;PID映射表排序模块,将PID映射表根据old PID的值按照从小到大的顺序进行排序;PID映射表存储模块,存储排序好的PID映射表;PID查询模块,当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;PID比较模块,将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对。
[0016]如图1所示,图中代表一个存储器资源,在本具体实施例中,PID映射表根据oldPID按照从小到大的顺序存在存储器中,排序的过程是CPU进行的排序,排好序后将PID映射表传到FPGA的RAM中。
[0017]一种MPEG TS流PID重映射实现方法,具体方法步骤为,
步骤一、解析TS流并提取TS流中PID为old PID ;
步骤二、将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表; 步骤三、将PID映射表根据old PID的值按照从小到大的顺序进行排序并存储;
步骤四、当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对,判断是否相等,相等,贝lJ退出查询,用new PID替换提取出的PID,否则进入下一步;
步骤五、根据比对大小和映射表地址大小来决定向上或向下查询,并继续查询和比对。
[0018]节省了用于寄存TS包的存储器资源,同时也节省了相应的时序资源。
[0019]在本具体实施例中,所述步骤四中,将TS流中提取的PID的值与查询的PID映射表中间地址中的old PID的值进行比对。
[0020]在本具体实施例中,所述步骤五中,根据比对大小和映射表地址大小来决定向上或向下查询,查询地址为排除查询地址后所剩下查询地址范围的中间地址,并以此类推继续查询和比对。
[0021]以查询2048个PID为例,当开始查询时,如图2所示,第一次取出地址为1024中的数据进行对比,如果不对,继续下一次查询,直到查询到对应的PID后退出,或者没查询到,但遍历完毕退出,具体流程如图3所示,当有TS流输入进来时,我们会提取出TS流包中的PID,这里称它为TS_PID。提取完成后,进入PID查询过程,查询的初始地址为地址长度的中间值,即初始地址为addr=1024。这里还有一个偏移地址,这里称之为flag,flag的初始值为地址长度的1/4,即初始偏移地址flag=512,同时flag也是查询完成的标志。
[0022]将TS_PID与addr=1024中的old_PID进行对比,是否相等,如果相等,完成查询,退出此次查询,如果不相等,比对大小,如果TS_PID>old_PID,则addr加上flag,形成下一个查询的地址,flag与addr完成相加后flag的值要进行右移一位;如果TS_PID〈old_PID,则addr减去flag,形成下一个查询的地址,flag与addr完成相减后flag的值也要进行右移一位。这样重复上面的过程,直至查询到相应的PID,退出查询,或者flag标志等于0,退出查询。每次addr与flag进行运算后flag的值都要进行右移一位,直到flag的值等于0,此时标志着查询过程结束,此时没有查询到相应的PID,退出。如果在查询过程中查询到TS_PID等于old_PID,立刻退出查询,用new_PID替换TS_PID。
[0023]如果比所查询的old PID大,则把查询范围缩小到地址范围1025~2047,如果比所查询的old PID小,则把查询范围缩小到地址范围0~1023,第二次查询依然从中间地址开始查询,比如如果在地址范围1025~2047,则查询地址为1536中的PID ;如果在地址范围0~1023,则查询地址为512中的PID。依此类推,这样不断分割,查询完2048个PID理论上只需要12个时钟周期。在实际应用中从TS包中提取PID,加上从RAM中读取PID并对比,还要花去一部分延时,总的算下来查询完2048个PID至少需要26个时钟周期。对比传统的查询方式,节省了大量的存储器资源开销和减小了系统的延时。
【主权项】
1.一种MPEG TS流PID重映射实现系统,器特征在于,包括 PID提取模块,解析TS流并提取TS流中PID为old PID ; 映射表生成模块,将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表; PID映射表排序模块,将PID映射表根据old PID的值按照从小到大的顺序进行排序; PID映射表存储模块,存储排序好的PID映射表; PID查询模块,当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表; PID比较模块,将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对。
2.—种MPEG TS流PID重映射实现方法,具体方法步骤为, 步骤一、解析TS流并提取TS流中PID为old PID ; 步骤二、将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表; 步骤三、将PID映射表根据old PID的值按照从小到大的顺序进行排序并存储; 步骤四、当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对,判断是否相等,相等,贝1J退出查询,用new PID替换提取出的PID,否则进入下一步; 步骤五、根据比对大小和映射表地址大小来决定向上或向下查询,并继续查询和比对。
3.根据权利要求2所述的MPEGTS流PID重映射实现方法,所述步骤四中,将TS流中提取的PID的值与查询的PID映射表中间地址中的old PID的值进行比对。
4.根据权利要求2或3所述的MPEGTS流PID重映射实现方法,所述步骤五中,根据比对大小和映射表地址大小来决定向上或向下查询,查询地址为排除查询地址后所剩下查询地址范围的中间地址,并以此类推继续查询和比对。
【专利摘要】本发明提供了一种MPEG TS流PID重映射实现系统及方法。解析TS流并提取TS流中PID为old PID;将提取出的old PID和在映射过程中会被替换成的new PID组成PID映射表;将PID映射表根据old PID的值按照从小到大的顺序进行排序并存储;当有TS流包输入时,提取所述TS流包中的PID并查询存储模块中的PID映射表;将TS流中提取的PID的值与查询的PID映射表某一地址中的old PID的值进行比对,相等则退出查询,用new PID替换提取出的PID,否则根据比对大小和映射表地址大小来决定向上或向下查询,并继续查询和比对。对比传统的查询方式,去除了资源浪费,节省了大量的存储器资源开销和减小了系统的延时。
【IPC分类】G06F12-08, G06F17-30
【公开号】CN104536910
【申请号】CN201410760411
【发明人】李俊, 牛伟
【申请人】成都德芯数字科技有限公司
【公开日】2015年4月22日
【申请日】2014年12月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1