Skip DVB tables where current_next_indicator == next
This commit is contained in:
parent
4fe065a6d6
commit
f2538a4c46
2 changed files with 33 additions and 7 deletions
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue