数字电视表数据的过滤

 数字电视的核心就是解析TS流中的各种表数据,局方通过来组织和配置这些表的信息,
而厂商主要是来完成这些表数据的解析,然后根据解析的结果来完成各种业务逻辑,通常
有节目搜索,节目播放,节目更新,电视指南以及局方的各种私有描述。

下面主要讲述一下,怎么样设置过滤器来获取这些数据?

过滤器在驱动层也称作filter,而驱动在设置了filter之后就可以请求各section也即各个字表数据。

一个filter通常包含几个方面:匹配字段,关注字段,取反字段,以及表的PID

#define CSUDISECTION_FILTER_LEN 16 

typedef struct  
{
    unsigned char match[CSUDISECTION_FILTER_LEN];         ///< 匹配字段
    unsigned char mask[CSUDISECTION_FILTER_LEN];         ///< 关注字段   16*8 = 128 位,    mask[0] = 表的ID,如PAT table = 0x00, PMT 表则为0x02 , mask[1,2] 
    unsigned char negate[CSUDISECTION_FILTER_LEN];         ///< 取反字段  通常为0x00
}FILTER_S;

加入定义了一个filter以及一个nPid
例如请求PAT表:
nPid = 0x00;

filter.match[0] = 0xff;
filter.mask[0] = 0x00;   // pat表的table id
filter.negate[0] = 0x00;

例如PMT表的请求:



PMT 表的语法格式如下:


你可能感兴趣的:(数字电视,PMT,表解析)