Skip DVB tables where current_next_indicator == next

This commit is contained in:
Andreas Öman 2009-07-04 07:45:57 +00:00
parent 4fe065a6d6
commit f2538a4c46
2 changed files with 33 additions and 7 deletions

View file

@ -440,7 +440,6 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
uint16_t serviceid;
int version;
int current_next_indicator;
uint8_t section_number;
uint8_t last_section_number;
uint16_t transport_stream_id;
@ -470,7 +469,6 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
serviceid = ptr[0] << 8 | ptr[1];
version = ptr[2] >> 1 & 0x1f;
current_next_indicator = ptr[2] & 1;
section_number = ptr[3];
last_section_number = ptr[4];
transport_stream_id = ptr[5] << 8 | ptr[6];
@ -478,6 +476,11 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
segment_last_section_number = ptr[9];
last_table_id = ptr[10];
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
len -= 11;
ptr += 11;
@ -572,7 +575,6 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
{
th_transport_t *t;
int version;
int current_next_indicator;
uint8_t section_number;
uint8_t last_section_number;
uint16_t service_id;
@ -594,12 +596,16 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
transport_stream_id = ptr[0] << 8 | ptr[1];
version = ptr[2] >> 1 & 0x1f;
current_next_indicator = ptr[2] & 1;
section_number = ptr[3];
last_section_number = ptr[4];
original_network_id = ptr[5] << 8 | ptr[6];
reserved = ptr[7];
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
len -= 8;
ptr += 8;
@ -698,6 +704,11 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
if(len < 5)
return -1;
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
tsid = (ptr[0] << 8) | ptr[1];
if(tdmi->tdmi_transport_stream_id != tsid)
@ -750,6 +761,11 @@ dvb_cat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
uint16_t pid;
ca_stream_t *cs;
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
ptr += 5;
len -= 5;
@ -893,12 +909,17 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
char networkname[256];
uint16_t tsid;
ptr += 5;
len -= 5;
if(tableid != 0x40)
return -1;
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
ptr += 5;
len -= 5;
ntl = ((ptr[0] & 0xf) << 8) | ptr[1];
ptr += 2;
len -= 2;

View file

@ -212,6 +212,11 @@ psi_parse_pmt(th_transport_t *t, uint8_t *ptr, int len, int chksvcid)
sid = ptr[0] << 8 | ptr[1];
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
}
pcr_pid = (ptr[5] & 0x1f) << 8 | ptr[6];
dllen = (ptr[7] & 0xf) << 8 | ptr[8];