mpegts: ensure PMT PID is stored and that on update service restarts

This commit is contained in:
Adam Sutton 2013-11-28 10:47:42 +00:00
parent 40fb1d1a6a
commit cee904bf52
2 changed files with 11 additions and 6 deletions

View file

@ -187,7 +187,7 @@ dvb_desc_cable_del
dvb_mux_conf_t dmc;
static const fe_modulation_t qtab [6] = {
QAM_AUTO, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256
QAM_AUTO, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256
};
/* Not enough data */
@ -576,6 +576,7 @@ dvb_pat_callback
uint16_t nit_pid = 0;
mpegts_mux_t *mm = mt->mt_mux;
mpegts_table_state_t *st = NULL;
mpegts_service_t *s;
/* Begin */
if (tableid != 0) return -1;
@ -606,10 +607,13 @@ dvb_pat_callback
} else if (pid) {
tvhdebug("pat", " sid %04X (%d) on pid %04X (%d)", sid, sid, pid, pid);
int save = 0;
if (mpegts_service_find(mm, sid, pid, 1, &save)) {
if ((s = mpegts_service_find(mm, sid, pid, 1, &save))) {
mpegts_table_add(mm, DVB_PMT_BASE, DVB_PMT_MASK, dvb_pmt_callback,
NULL, "pmt", MT_CRC | MT_QUICKREQ | MT_RECORD, pid);
}
if (save)
service_request_save((service_t*)s, 1);
}
}
/* Next */
@ -1428,7 +1432,7 @@ psi_parse_pmt
case DVB_DESC_LANGUAGE:
lang = lang_code_get2((const char*)ptr, 3);
audio_type = ptr[3];
break;
break;
case DVB_DESC_TELETEXT:
if(estype == 0x06)

View file

@ -886,7 +886,6 @@ service_build_stream_start(service_t *t)
if (idnode_is_instance(&t->s_id, &mpegts_service_class)) {
mpegts_service_t *ts = (mpegts_service_t*)t;
ss->ss_service_id = ts->s_dvb_service_id;
fprintf(stderr,"Streaming service %d, PMT PID is %d\n",ss->ss_service_id,ss->ss_pmt_pid);
}
return ss;
}
@ -1281,6 +1280,7 @@ void service_save ( service_t *t, htsmsg_t *m )
idnode_save(&t->s_id, m);
htsmsg_add_u32(m, "pcr", t->s_pcr_pid);
htsmsg_add_u32(m, "pmt", t->s_pmt_pid);
pthread_mutex_lock(&t->s_stream_mutex);
@ -1448,7 +1448,8 @@ void service_load ( service_t *t, htsmsg_t *c )
if(!htsmsg_get_u32(c, "pcr", &u32))
t->s_pcr_pid = u32;
if(!htsmsg_get_u32(c, "pmt", &u32))
t->s_pmt_pid = u32;
pthread_mutex_lock(&t->s_stream_mutex);
m = htsmsg_get_list(c, "stream");