Ts流解复用方法

文档序号:9712004阅读:865来源:国知局
Ts流解复用方法
【技术领域】
[0001]本发明涉及数字电视接收机,特别涉及数字电视接收机中的TS解复用方法。
【背景技术】
[0002]在数字电视接收机中,从接收机接收各种数据包括频道音视频,字幕,节目信息,节目预告等数据都是复用在TS(Transport Stream传输流)流当中,数据都分割成固定长度的数据包并加上包头放置到传输流中,每个分块叫TS包,DVB( Digital VideoBroadcasting数字视频广播)规范中TS包大小为188字节,固定的包头中有个PID(packetidentifier)标识,该标识用来区分不同类别的数据。一般不同类别的数据PID不同,相同类别数据PID相同,比如一个频道节目的音频和视频各使用一个PID传输。在使用的时候需要根据需要把不同类别的数据过滤出来使用,这种从复用多种数据流的TS中过滤出指定条件的数据,就叫解复用。
[0003]传统TS解复用模块的实现方法有两种:
[0004]第一种方式,建立一定数量的过滤通道(通常的通道个数是32,48,64,96)o每个通道就是一个过滤器,这些过滤器是以数组形式管理,见附图1。当应用请求过滤某个PID的TS数据时,就占用一个过滤通道,即占用一个过滤器数组元素。每个PID会分配一个数据缓冲区,这种方式的问题是缓冲区不依据过滤通道建立,而依据PID建立,当有两个数据处理模块同时请求一个PID的过滤,则会产生冲突,因为一个PID只有一个缓冲区,当两个相同PID的过滤器同时从缓冲读取数据时就有问题,缓冲区中数据被一个过滤器读走后会清空,另外一个过滤就读不到原始数据了。
[0005]第二种方式,数据缓冲区建立在过滤通道上,而不是依存于PID。这种方式下,两个相同PID占用两个通道,有两个缓冲,不存在PID冲突的问题。但是当收到TS数据包后,根据过滤器条件,需要轮询所有过滤器,才能把数据包放置到需要的过滤器通道缓冲区中。这种方式过滤效率比较低。见附图2。

【发明内容】

[0006]本发明所要解决的技术问题,就是提供一种TS流解复用方法以解决传统数字电视接收机上,数字电视接收机软件实现中,解复用模块提供的接口存在调用限制的问题。
[0007]本发明解决所述技术问题,采用的技术方案是,TS流解复用方法,包括以下步骤:
[0008]步骤1、系统接收过滤请求信息,根据过滤请求信息生成过滤器;
[0009]步骤2、系统建立过滤器的索引表入口,索引表入口中的每个入口都分别对应一个结点;
[0010]步骤3、系统创建每个结点与过滤器地址的映射关系;
[0011]步骤4、系统根据过滤请求信息及映射关系调用过滤器完成信息过滤。
[0012]具体的,所述步骤1中,过滤器至少包括要过滤数据的PID、过滤缓冲区及过滤缓冲区的大小。
[0013]具体的,所述步骤2中,索引表中包括8192个过滤入口,每个过滤入口对应一个PID值。
[0014]具体的,所述步骤2中,索引表入口中的每个入口都分别对应一个结点可以通过一个索引表入口对应一个结点链表的形式完成。
[0015]进一步的,所述结点链表由多个不同节点组成。
[0016]进一步的,所述结点链表由多个相同节点组成。
[0017]具体的,所述步骤3中,不同结点可以对应同一个过滤器地址。
[0018]本发明的有益效果是:本发明通过在一个索引表入口放入一个结点链表,达到多个相同PID的过滤器共用一个入口的目的;同时可以多个不同PID的结点指向一个过滤器,来满足一个过滤请求中可以同时过滤多个PID数据的目的;这样,不同PID的数据可以根据不同的入口结点找到相同的过滤器,从而达到自由过滤各种不同PID包和相同PID包中不同的数据;尤其在不同软件模块同时过滤相同PID包数据的,而不用担心冲突。并且效率高、速度快。
【附图说明】
[0019]图1为本发明TS流解复用方法【背景技术】中方式一的工作示意图;
[0020]图2为本发明TS流解复用方法【背景技术】中方式二的工作示意图;
[0021]图3为本发明TS流解复用方法实施例中方法示意图。
[0022]以下结合实施例的【具体实施方式】,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
【具体实施方式】
[0023]下面结合附图及实施例详细描述本发明的技术方案:
[0024]本发明针对现有技术中解复用模块提供的接口存在调用限制的问题,提供一种TS流解复用方法,首先,系统接收过滤请求信息,根据过滤请求信息生成过滤器;其次,系统建立过滤器的索引表入口,索引表入口中的每个入口都分别对应一个结点;然后,系统创建每个结点与过滤器地址的映射关系;最后,系统根据过滤请求信息及映射关系调用过滤器完成信息过滤。本发明通过在一个索引表入口放入一个结点链表,达到多个相同PID的过滤器共用一个入口的目的;同时可以多个不同PID的结点指向一个过滤器,来满足一个过滤请求中可以同时过滤多个PID数据的目的;这样,不同PID的数据可以根据不同的入口结点找到相同的过滤器,从而达到自由过滤各种不同PID包和相同PID包中不同的数据;尤其在不同软件模块同时过滤相同PID包数据的,而不用担心冲突。并且效率高、速度快。
[0025]实施例
[0026]现有技术中的一种过滤方式如图1所示,图示中请求的过滤器存储在64个数组元素中,这种方式的过滤器,是以PID为过滤通道建立的,每个PID只能占用一个通道,当某个PID已经请求时,再来一个同样PID的请求就会失败.途中PID为0的过滤器已经在请求1中占用了,当请求2再次请求过滤PID为0的数据时,则失败。这种方式中,当TS包来时,需要顺序遍历数组,找到TS包对应的过滤器,找到后就停止。图示中PID为0的TS包到来,比较数组下标为0的过滤器不需要,在比较下标为1的过滤器匹配成功,之后不在比较。
[0027]另一种过滤方式如图2所示,图示中请求的过滤器存储在64个数组元素中,这种方式的过滤器,这种方式过滤通道不是基于PID的,是基于过滤器的;所以相同PID的过滤请求,不会冲突,但会占用多个过滤通道.图示中两个PID为0的请求都是成功的。但这种方式中,任何一个TS包到达时,都会数组从头找到尾,看是否有过滤器需要这个数据包,由于相同PID过滤器可能有多个,所以即使已经找到某个过滤器需要该数据包,还是会一致查询完所有过滤看是否还有其他过滤器需要该数据,所以这种方式效率比较低。图示中PID为0的TS包到来,比较数组下标为0的过滤器不需要,在比较下标为1和下标为2的过滤器匹配成功,之后继续比较完其他
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1