5 #ifndef __MPEG2_TS_EIT_H__
6 #define __MPEG2_TS_EIT_H__
8 #include "mpeg2/ts/Table.h"
16 #define MAXSECLEN 4096
18 typedef struct _EIThead {
20 int section_syntax_indicator;
21 int reserved_future_use;
27 int current_next_indicator;
29 int last_section_number;
30 int transport_stream_id;
31 int original_network_id;
32 int segment_last_section_number;
36 typedef struct _EITbody {
42 int descriptors_loop_length;
56 typedef struct _SEVTdesc {
58 int descriptor_length;
59 char ISO_639_language_code[3];
60 int event_name_length;
61 char event_name[MAXSECLEN];
66 typedef struct _EEVTDhead {
68 int descriptor_length;
69 int descriptor_number;
70 int last_descriptor_number;
71 char ISO_639_language_code[3];
75 typedef struct _EEVTDitem {
76 int item_description_length;
77 char item_description[MAXSECLEN];
82 int descriptor_number;
85 typedef struct _EEVTDtail {
90 typedef struct _ContentDesc {
92 int descriptor_length;
93 char content[MAXSECLEN];
96 typedef struct _SeriesDesc {
98 int descriptor_length;
102 int expire_date_valid_flag;
105 int last_episode_number;
106 char series_name_char[MAXSECLEN];
109 class EIT : public Table
112 bool decode_section();
115 uint8_t _table_id; // 8
116 uint8_t _section_syntax_indicator; // 1
119 uint16_t _section_length; // 12
120 uint16_t _service_id; // 16
122 uint8_t _version_number; // 5
123 uint8_t _current_next_indicator; // 1
124 uint8_t _section_number; // 8
125 uint8_t _last_section_number; // 8
126 uint16_t _transport_stream_id; // 16
127 uint16_t _original_network_id; // 16
128 uint8_t _segment_last_section_number; // 8
129 uint8_t _last_table_id; // 8
134 uint16_t _event_id; // 16
146 uint8_t _running_status; // 3
147 uint8_t _free_CA_mode; // 1
148 uint16_t _descriptors_loop_length; // 12
150 uint8_t * _descriptor_ptr;
151 uint16_t _descriptor_offset;
152 Descriptor _descriptor;
155 Descriptor *nextDescriptor();
159 uint16_t _next_event_offset;
167 EIT::Event *nextEvent();