Always subscribe to the PMT to be able to catch changes, etc.

This commit is contained in:
Andreas Öman 2009-06-22 21:23:11 +00:00
parent 91ebc7cf40
commit b1b0374589
4 changed files with 9 additions and 19 deletions

View file

@ -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);
/**

View file

@ -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;

View file

@ -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;

View file

@ -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);