{
th_dvb_mux_instance_t *tdmi = t->s_dvb_mux_instance;
th_dvb_adapter_t *tda = tdmi->tdmi_adapter;
- return tda->tda_enabled && tdmi->tdmi_enabled && t->s_enabled;
+ return tda->tda_enabled && tdmi->tdmi_enabled && t->s_enabled && t->s_pmt_pid;
}
LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) {
if(t->s_dvb_service_id == sid)
- return t;
+ break;
}
-
- if(pmt_pid == 0)
- return NULL;
+ /* Existing - updated PMT_PID if required */
+ if (t) {
+ if (pmt_pid && pmt_pid != t->s_pmt_pid) {
+ t->s_pmt_pid = pmt_pid;
+ *save = 1;
+ }
+ return t;
+ }
+
if(identifier == NULL) {
snprintf(tmp, sizeof(tmp), "%s_%04x", tdmi->tdmi_identifier, sid);
identifier = tmp;