EIT事件信息表

http://blog.163.com/fusjwaters@126/blog/static/42178807200772191254450/

EIT事件信息表  

2007-08-21 09:12:54|  分类: 默认分类 |  标签: |字号 订阅

主要负责:

             管理电视节目PF信息的,

typedef struct tagEIT
{
 int  iTransport_stream_id;
 int  original_network_id;
 
 int  iEventId;
 time* pstStartTime;
 int  iduration;
 
 
}EIT, PEIT;

 

EIT分类:

actual TS: present/following event information = table_id = 0x4E

other TS:  present/following event information = table_id = 0x4F

actual TS: event schedual information = table_id = 0x50 to 0x4f

other TS: event schedual information : table_id = 0x60 to ox6F

 


所有的EIT sub-table为了绝对Ts流都有一个相同的transport_stream_id 和
original_network_id值。

/*=== EIT的事件分类 ===*/

/*-- PF的事件类型 --*/
#define EVENT_TYPE_PF_ACTUAL 0x4E
#define EVENT_TYPE_PF_OTHER  0x4F

/*-- Schedual的事件类型--*/
#define EVENT_TYPE_SCHEUDAL_ACTUAL 0x50-0x4F
#define EVENT_TYPE_SCHEUDAL_OTHER 0x60-0x6F

也可以用位与的操作来对16进制数据进行分解来得到EIT信息的分类。


EIT信息的存储方式:
分段存储。任何段的信息都由都应该在ts流中的PID为0x0012来表示。

enum _table_id_
{
 program_association_section = 0x00,
 condition_acess_section = 0x01,
 program_map_section = 0x02,
 transport_stream_descripton_section = 0x03,
 reserved = 0x01~0x3F,
 
 network_information_section_actual_network = 0x40,
 network_information_section_other_network = 0x41,
 service_description_section_actual_transport_stream = 0x42,
 reserved = 0x43~0x45,
 
 service_description_section_other_transport_stream = 0x46,
 reserved = 0x47~0x49,
 
 bouquet_association_section = 0x4A,
 reserved = 0x4B~0x4D,
 
 //FP信息
 event_information_section_actual_transport_stream_presentAndfollowing = 0x4E,
 event_information_section_other_transport_stream_presentfollowing = 0x4F,
 //PF的预约信息
 event_inforamtion_section_actual_transport_stream_schedule = 0x50~0x5F,
 event_inforamtion_section_other_transport_stream_schedual
   
 
 
}table_id;


struct tagEIT
{
 int table_id;
 section_length;
 
 
 int network_id;
 int version_number;
 
 
}EIT, *PEIT;

EIT Schedule信息
1)EIT Schedule结构
 遵从如下规则:
 a、EIT/Schedule分配了16个table_id,0x50-0x5F给当前TS,0x60-0x6F给其它TS,这些id按照时间顺序排列;
 b、子表下的256个section被分为32段(segment),每8个section一个段(segment)。Segment#1,从section0到7,
   segment#2,从section8到15,等等;
 c、每段包含三个小时内开始的事件信息;
 d、段内事件信息按照时间排列;
 e、如果一个段(segment)有n节(section),而n<8,这个信息必须放在段中前n个节中,还要显式指明最后一节的位置:S0+n-1(S0是段中第一节),这个值在EIT的segment_last_section_number中。例如,第二段只有两节,那么segment_last_section_number包含值8+2-1=9;
 f、如果段中有节的话,段的segment_last_section_number应当有值s0+7;
 g、完全空的段通过空节(不含任何loop over事件)表示,段的vsegment_last_section_number值为s0+0;
 h、段中事件的安排遵从一个时间t0。
 t0是通用时间坐标(Universal Time Coordinated(UTC))的“last midnight”。
 举个例子:UTC-6的下午5点,就是UTC-0的下午11点,即从“last midnight”算起23小时。因此对于UTC-6,t0就是前一天的下午6点;
 i、table_id 0x50(对其它TS是0x60)的第0段,包含从午夜(UTC时间)到“今天”02:59:59(UTC时间)(三个小时)的事件信息。第1段包含从03:00:00到05:59:59(UTC时间)的事件信息,依此类推。这就意味着,第一个子表包含从“今天”UTC午夜时间算起前4天的信息;
 j、last_section_number用来指明子表的结束位置;
 k、last_table_id用来指明整个EIT/Schedule结构的结束位置;
 l、与过去事件相关的段可以用空段代替,参见g规则;
 m、EIT/Schedule包含的事件定义中的running_status应当设为“为定义”即0x00;
 n、EIT/Schedule表不适用于NVOD涉及的服务,因为这些服务带有未定义开始时间的事件;
2)EIT 加密
EIT Schedule表格可以被加密。为了与条件接入相联系,必须分配一个service_id(=MPEG-2 program_number)来描述加密的EIT Schedule Tables,这个service_id在PSI中。EIT在PMT中定义,service_id看成由一个private stream组成的各种电视节目(The EIT is identified in the Program Map Table (PMT) section for this service_id as a programme
consisting of one private stream),PMT包含一个或多个CA_descriptor来验证相关的CA码流。为达到这个目的,在DVB应用程序中service_id的值0xFFFF被保留

 

你可能感兴趣的:(EIT事件信息表)