一种数字电视EPG数据接收和解析方法
技术领域
本发明涉及数字电视应用技术数据信息接收和解析方法,特别涉及一种数字电视EPG数据接收和解析方法。
背景技术
EPG(Electronic Program Guide,电子节目菜单)以“频道-时间”方式提供一段时间内的所有电视节目信息,实现业务和描述信息的浏览功能,是数字电视中必备的基本功能;EPG数据在前端打包,嵌入到SI表格中并在网络(一个传输系统,可以传输一组传输流)中传输,机顶盒终端负责Section(用于将本标准中定义的所有业务信息映射成为GB/T17975.1-2000的传输流包)数据接收和解析。
目前机顶盒终端常用的接收和解析方法有:
方法A.设置和启动EPG数据过滤器,按照SI表格规范,将过滤器收到的嵌有EPG数据的section组成segment,再由segment组成table(表格),再按照从table到segment再到section的顺序进行解析;EPG数据是嵌入到SI EIT(Event Information Table)中,组成结构为8个section组成一个segment,一个表中最多有8个segment;
方法B.设置和启动EPG数据过滤器,按照SI表格规范,将过滤器收到的嵌有EPG数据的每个section存储到临时缓存中,等所有section收齐以后才开始解析每个section;
以上两种方法虽然可行,但是有如下问题点:
方法A.特点是要将section按照规范组成 segment和table,不仅操作流程复杂,而且风险较大,一旦组装环节出现任何问题,整个EPG数据将无法解析。
方法B.和方法A相比,不需要组装过程,只需要将收到的section存储到临时缓存中,等section收齐以后才开始解析,而且临时缓存要尽可能地大些。
上述两种方法均将section是否收齐作为是否解析数据的门槛,如果某个section因为发送、传输或接收环节中的异常而无法正常收到时,数据的解析就会受到很大的影响,尤其是对实时要求较高的当前随后信息。
发明内容
本发明所要解决的技术问题是克服现有技术中存在的EPG数据接收和解析的流程复杂问题,提出一种数字电视EPG数据接收和解析方法,不需要将section组装成segment,再将segment组成表格,所有的数据接收模块和数据解析模块都是基于section单元数据,而且因为通过多任务模块实时处理,能实时地处理section,不需要较大的临时缓存。
本发明采用的技术方案:
一种数字电视EPG数据接收和解析方法,对section进行接收、解析及状态监控,具体步骤包括:
a. 初始化EPG模块,通过过滤器对section进行数据过滤,执行步骤b;
b. 数据接收模块接收嵌有EPG数据的 section,将section存储于临时缓存中,若临时缓存已满,丢掉该section,数据接收模块继续接收下一个section数据;否则存储section数据到临时缓存中,执行步骤c;
c. 数据解析模块一直处于运行状态,如果临时缓存中无数据,数据解析模块作用是实时监控section的解析状态;否则执行步骤d;
d. 如果临时缓存中有未解析的section,数据解析模块作用是解析缓存数据section,并将解析后的数据进行存储;否则执行步骤c;
e. 如果所有section均解析完成,执行步骤c;否则执行步骤d。
所述初始化EPG模块包括创建数据接收模块、数据解析模块、信号量、消息队列。
所述数据解析模块实时监控section的解析状态同时,还实时监控内存使用状态、数据使用状态。
所述数据接收模块接收section时,通过section的版本号和CRC来判断section是否正确。
所述section经过数据解析模块解析后,解析数据存储于Ram或Flash。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
EPG数据的接收和解析都是以section为单位,不需要进行数据组合,数据处理方法简单,而且数据接收模块和数据解析模块处理数据是异步处理(所谓异步指的是数据接收只负责将收到的数据存储在临时缓存中,而解析只负责从缓存中读取数据、解析并且监控数据解析状态、内存使用状态、数据使用状态),通过数据接收任务和数据解析任务实时处理不需要太大的临时缓存,即数据解析环节对数据是否收齐没有依赖要求,既不影响数据接收速度,又大大提升了数据解析的效率,为用户提供及时实时的EPG数据。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
附图1是本发明数字电视EPG接收和解析方法流程图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明解决上述技术问题所采用的技术方案如流程图1所示,首先进行EPG模块初始化,然后再对section进行接收、解析及状态监控,具体步骤包括:
a. 初始化EPG模块,通过过滤器对section进行数据过滤,执行步骤b;
b. 数据接收模块接收嵌有EPG数据的 section,将section存储于临时缓存中,若临时缓存已满,丢掉该section,数据接收模块继续接收下一个section数据;否则存储section数据到临时缓存中,执行步骤c;
c. 数据解析模块一直处于运行状态,如果临时缓存中无数据,数据解析模块作用是实时监控section的解析状态;否则执行步骤d;
d. 如果临时缓存中有未解析的section,数据解析模块作用是解析缓存数据section,并将解析后的数据进行存储;否则执行步骤c;
e. 如果所有section均解析完成,执行步骤c;否则执行步骤d;
f. 如果临时缓存中有未解析的section,解析该section数据,将解析后的数据存储Ram或Flash;如果所有section均解析完成,执行步骤e。
EPG数据处理通过初始化EPG模块,数据过滤、数据接收模块,数据解析模块来实现。
初始化EPG模块包括创建数据接收模块、数据解析模块、信号量、消息队列
数据过滤是通过过滤器实现的。section是同一表段的section,只需要设置一个过滤器,如表格的标识为0x51,0x52…0x5f均属于0x5x表段进行数据过滤。
数据接收任务进行有效section数据的接收,并将section存储于临时缓存,其中数据接收任务进行接收section时,通过section的版本号和CRC来判断section是否正确。
数据解析任务,若临时缓存中有数据,数据解析任务作用为解析缓存数据;若临时缓存中无数据,那么数据解析任务作用为监控状态,即实时监控和执行section数据的解析状态,内存使用状态,数据使用状态,一旦临时缓存中有数据,解析任务切换到解析缓存的数据。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。