dvb: re-instate some of the form scanning code.
Mux TSID and ONID can now be updated from other tables if, and only if, they values are not yet set. Values from the NIT will ALWAYS override existing values, as they're hopefully more reliable.
This commit is contained in:
parent
2e25766a10
commit
dc160b9e48
3 changed files with 26 additions and 12 deletions
|
@ -429,9 +429,9 @@ th_dvb_mux_instance_t *dvb_mux_create(th_dvb_adapter_t *tda,
|
|||
|
||||
void dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *name);
|
||||
|
||||
void dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid);
|
||||
void dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid, int force);
|
||||
|
||||
void dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid);
|
||||
void dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid, int force);
|
||||
|
||||
void dvb_mux_set_enable(th_dvb_mux_instance_t *tdmi, int enabled);
|
||||
|
||||
|
|
|
@ -169,12 +169,14 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc,
|
|||
}
|
||||
|
||||
if(tdmi != NULL) {
|
||||
|
||||
/* Update stuff ... */
|
||||
int save = 0;
|
||||
char buf2[1024];
|
||||
buf2[0] = 0;
|
||||
|
||||
if(tdmi_compare_conf(tda->tda_type, &tdmi->tdmi_conf, dmc)) {
|
||||
if(tdmi->tdmi_adapter->tda_autodiscovery &&
|
||||
tdmi_compare_conf(tda->tda_type, &tdmi->tdmi_conf, dmc)) {
|
||||
#if DVB_API_VERSION >= 5
|
||||
snprintf(buf2, sizeof(buf2), " (");
|
||||
if (tdmi->tdmi_conf.dmc_fe_modulation != dmc->dmc_fe_modulation)
|
||||
|
@ -861,10 +863,14 @@ dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *networkname)
|
|||
*
|
||||
*/
|
||||
void
|
||||
dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid)
|
||||
dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid, int force)
|
||||
{
|
||||
htsmsg_t *m;
|
||||
|
||||
if (!force)
|
||||
if (tdmi->tdmi_transport_stream_id != 0xFFFF || tsid == 0xFFFF)
|
||||
return;
|
||||
|
||||
tdmi->tdmi_transport_stream_id = tsid;
|
||||
|
||||
dvb_mux_save(tdmi);
|
||||
|
@ -879,10 +885,14 @@ dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid)
|
|||
*
|
||||
*/
|
||||
void
|
||||
dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid)
|
||||
dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid, int force)
|
||||
{
|
||||
htsmsg_t *m;
|
||||
|
||||
if (force)
|
||||
if (tdmi->tdmi_network_id != 0 || onid == 0)
|
||||
return;
|
||||
|
||||
tdmi->tdmi_network_id = onid;
|
||||
|
||||
dvb_mux_save(tdmi);
|
||||
|
|
|
@ -342,6 +342,8 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
tsid = ptr[0] << 8 | ptr[1];
|
||||
onid = ptr[5] << 8 | ptr[6];
|
||||
if (tableid == 0x42) {
|
||||
dvb_mux_set_tsid(tdmi, tsid, 0);
|
||||
dvb_mux_set_onid(tdmi, onid, 0);
|
||||
if(tdmi->tdmi_transport_stream_id != tsid || tdmi->tdmi_network_id != onid)
|
||||
return -1;
|
||||
} else {
|
||||
|
@ -504,6 +506,7 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
}
|
||||
|
||||
tsid = (ptr[0] << 8) | ptr[1];
|
||||
dvb_mux_set_tsid(tdmi, tsid, 0);
|
||||
if (tdmi->tdmi_transport_stream_id != tsid)
|
||||
return -1;
|
||||
|
||||
|
@ -844,11 +847,11 @@ dvb_table_local_channel(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
t = dvb_service_find(tdmi, sid, 0, NULL);
|
||||
if(t != NULL) {
|
||||
|
||||
if(t->s_channel_number != chan) {
|
||||
t->s_channel_number = chan;
|
||||
t->s_config_save(t);
|
||||
service_refresh_channel(t);
|
||||
}
|
||||
if(t->s_channel_number != chan) {
|
||||
t->s_channel_number = chan;
|
||||
t->s_config_save(t);
|
||||
service_refresh_channel(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
ptr += 4;
|
||||
|
@ -999,8 +1002,9 @@ atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
|
||||
/* Search all muxes on adapter */
|
||||
LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link)
|
||||
if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid);
|
||||
break;
|
||||
if(tdmi->tdmi_transport_stream_id == tsid &&
|
||||
tdmi->tdmi_network_id == onid);
|
||||
break;
|
||||
|
||||
if(tdmi == NULL)
|
||||
continue;
|
||||
|
|
Loading…
Add table
Reference in a new issue