Always subscribe to the PMT to be able to catch changes, etc.
This commit is contained in:
parent
91ebc7cf40
commit
b1b0374589
4 changed files with 9 additions and 19 deletions
|
@ -188,7 +188,7 @@ void dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *name);
|
|||
void dvb_transport_load(th_dvb_mux_instance_t *tdmi);
|
||||
|
||||
th_transport_t *dvb_transport_find(th_dvb_mux_instance_t *tdmi,
|
||||
uint16_t sid, int pmt_pid, int *created);
|
||||
uint16_t sid, int pmt_pid);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -347,8 +347,7 @@ dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src)
|
|||
LIST_FOREACH(t_src, &tdmi_src->tdmi_transports, tht_mux_link) {
|
||||
t_dst = dvb_transport_find(tdmi_dst,
|
||||
t_src->tht_dvb_service_id,
|
||||
t_src->tht_pmt_pid,
|
||||
NULL);
|
||||
t_src->tht_pmt_pid);
|
||||
|
||||
t_dst->tht_pcr_pid = t_src->tht_pcr_pid;
|
||||
t_dst->tht_disabled = t_src->tht_disabled;
|
||||
|
|
|
@ -467,7 +467,7 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
if(tdmi == NULL)
|
||||
return;
|
||||
|
||||
t = dvb_transport_find(tdmi, serviceid, 0, NULL);
|
||||
t = dvb_transport_find(tdmi, serviceid, 0);
|
||||
if(t == NULL)
|
||||
return;
|
||||
|
||||
|
@ -629,7 +629,7 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
snprintf(chname0, sizeof(chname0), "noname-sid-0x%x", service_id);
|
||||
}
|
||||
|
||||
t = dvb_transport_find(tdmi, service_id, 0, NULL);
|
||||
t = dvb_transport_find(tdmi, service_id, 0);
|
||||
if(t == NULL)
|
||||
break;
|
||||
|
||||
|
@ -674,7 +674,7 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
{
|
||||
uint16_t service, pmt, tid;
|
||||
th_transport_t *t;
|
||||
int created;
|
||||
|
||||
if(len < 5)
|
||||
return;
|
||||
|
||||
|
@ -693,10 +693,8 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
pmt = (ptr[2] & 0x1f) << 8 | ptr[3];
|
||||
|
||||
if(service != 0) {
|
||||
t = dvb_transport_find(tdmi, service, pmt, &created);
|
||||
if(created) { /* Add PMT to our table scanner */
|
||||
dvb_table_add_transport(tdmi, t, pmt);
|
||||
}
|
||||
t = dvb_transport_find(tdmi, service, pmt);
|
||||
dvb_table_add_transport(tdmi, t, pmt);
|
||||
}
|
||||
ptr += 4;
|
||||
len -= 4;
|
||||
|
|
|
@ -178,7 +178,7 @@ dvb_transport_load(th_dvb_mux_instance_t *tdmi)
|
|||
if(htsmsg_get_u32(c, "pmt", &pmt))
|
||||
continue;
|
||||
|
||||
t = dvb_transport_find(tdmi, sid, pmt, NULL);
|
||||
t = dvb_transport_find(tdmi, sid, pmt);
|
||||
|
||||
htsmsg_get_u32(c, "stype", &t->tht_servicetype);
|
||||
if(htsmsg_get_u32(c, "scrambled", &u32))
|
||||
|
@ -297,17 +297,13 @@ dvb_transport_networkname(th_transport_t *t)
|
|||
* If it cannot be found we create it if 'pmt_pid' is also set
|
||||
*/
|
||||
th_transport_t *
|
||||
dvb_transport_find(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid,
|
||||
int *created)
|
||||
dvb_transport_find(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid)
|
||||
{
|
||||
th_transport_t *t;
|
||||
char tmp[200];
|
||||
|
||||
lock_assert(&global_lock);
|
||||
|
||||
if(created != NULL)
|
||||
*created = 0;
|
||||
|
||||
LIST_FOREACH(t, &tdmi->tdmi_transports, tht_mux_link) {
|
||||
if(t->tht_dvb_service_id == sid)
|
||||
return t;
|
||||
|
@ -316,9 +312,6 @@ dvb_transport_find(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid,
|
|||
if(pmt_pid == 0)
|
||||
return NULL;
|
||||
|
||||
if(created != NULL)
|
||||
*created = 1;
|
||||
|
||||
snprintf(tmp, sizeof(tmp), "%s_%04x", tdmi->tdmi_identifier, sid);
|
||||
|
||||
t = transport_create(tmp, TRANSPORT_DVB, THT_MPEG_TS);
|
||||
|
|
Loading…
Add table
Reference in a new issue