mpegts: sorted some mistakes in mux tuning and also service enumeration
Added automatic mpegts_input instance numbering as required for service enumeration.
This commit is contained in:
parent
2222362f66
commit
9ba1b55db4
3 changed files with 20 additions and 9 deletions
|
@ -294,6 +294,7 @@ mpegts_input_table_thread ( void *aux )
|
|||
* Creation/Config
|
||||
* *************************************************************************/
|
||||
|
||||
static int mpegts_input_idx = 0;
|
||||
mpegts_input_list_t mpegts_input_all;
|
||||
|
||||
mpegts_input_t*
|
||||
|
@ -317,6 +318,9 @@ mpegts_input_create0
|
|||
mi->mi_network_class = mpegts_input_network_class;
|
||||
mi->mi_network_create = mpegts_input_network_create;
|
||||
|
||||
/* Index */
|
||||
mi->mi_instance = ++mpegts_input_idx;
|
||||
|
||||
/* Init mutex */
|
||||
pthread_mutex_init(&mi->mi_delivery_mutex, NULL);
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ mpegts_mux_instance_start ( mpegts_mux_instance_t **mmiptr )
|
|||
mmi->mmi_input->mi_display_name(mmi->mmi_input, buf2, sizeof(buf2));
|
||||
tvhinfo("mpegts", "%s - tuning on %s", buf, buf2);
|
||||
r = mmi->mmi_input->mi_start_mux(mmi->mmi_input, mmi);
|
||||
if (!r) return r;
|
||||
if (r) return r;
|
||||
|
||||
/* Start */
|
||||
tvhdebug("mpegts", "%s - started", buf);
|
||||
|
@ -192,6 +192,7 @@ mpegts_mux_start ( mpegts_mux_t *mm, const char *reason, int weight )
|
|||
pass = 0;
|
||||
mmi = NULL;
|
||||
while (pass < 2) {
|
||||
tune = NULL;
|
||||
if (!mmi) mmi = LIST_FIRST(&mm->mm_instances);
|
||||
|
||||
/* First pass - free only */
|
||||
|
|
|
@ -80,19 +80,19 @@ mpegts_service_enlist(service_t *t, struct service_instance_list *sil)
|
|||
{
|
||||
mpegts_service_t *s = (mpegts_service_t*)t;
|
||||
mpegts_mux_t *m = s->s_dvb_mux;
|
||||
mpegts_mux_instance_t *mi;
|
||||
mpegts_mux_instance_t *mmi;
|
||||
|
||||
assert(s->s_source_type == S_MPEG_TS);
|
||||
|
||||
LIST_FOREACH(mi, &m->mm_instances, mmi_mux_link) {
|
||||
if (mi->mmi_tune_failed)
|
||||
LIST_FOREACH(mmi, &m->mm_instances, mmi_mux_link) {
|
||||
if (mmi->mmi_tune_failed)
|
||||
continue;
|
||||
// TODO: check the instance is enabled
|
||||
|
||||
service_instance_add(sil, t, mi->mmi_input->mi_instance,
|
||||
//TODO: fix below,
|
||||
100, 0);
|
||||
//mpegts_mux_instance_weight(mi));
|
||||
if (!mmi->mmi_input->mi_is_enabled(mmi->mmi_input)) continue;
|
||||
|
||||
service_instance_add(sil, t, mmi->mmi_input->mi_instance,
|
||||
mmi->mmi_input->mi_current_weight(mmi->mmi_input),
|
||||
0/*TODO: priority */);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,6 +206,12 @@ mpegts_service_setsourceinfo(service_t *t, source_info_t *si)
|
|||
m->mm_display_name(m, buf, sizeof(buf));
|
||||
si->si_mux = strdup(buf);
|
||||
|
||||
if(s->s_dvb_active_input) {
|
||||
mpegts_input_t *mi = s->s_dvb_active_input;
|
||||
mi->mi_display_name(mi, buf, sizeof(buf));
|
||||
si->si_adapter = strdup(buf);
|
||||
}
|
||||
|
||||
if(s->s_dvb_provider != NULL)
|
||||
si->si_provider = strdup(s->s_dvb_provider);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue