mpegts: fix linked inputs (abort), fixes #2791
This commit is contained in:
parent
706beee703
commit
3e56c175e3
4 changed files with 10 additions and 2 deletions
|
@ -582,6 +582,8 @@ mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags,
|
|||
}
|
||||
} else if (flags & SUBSCRIPTION_TABLES) {
|
||||
mi->mi_open_pid(mi, s->s_dvb_mux, MPEGTS_TABLES_PID, MPS_RAW | MPS_TABLES, s);
|
||||
} else if (flags & SUBSCRIPTION_MINIMAL) {
|
||||
mi->mi_open_pid(mi, s->s_dvb_mux, DVB_PAT_PID, MPS_RAW, s);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -134,7 +134,8 @@ mpegts_mux_subscribe_keep
|
|||
|
||||
s = mi->mi_linked;
|
||||
mi->mi_linked = NULL;
|
||||
r = mpegts_mux_subscribe(mm, mi, "keep", SUBSCRIPTION_PRIO_KEEP, SUBSCRIPTION_NONE);
|
||||
r = mpegts_mux_subscribe(mm, mi, "keep", SUBSCRIPTION_PRIO_KEEP,
|
||||
SUBSCRIPTION_RESTART | SUBSCRIPTION_MINIMAL);
|
||||
mi->mi_linked = s;
|
||||
return r;
|
||||
}
|
||||
|
@ -203,6 +204,7 @@ mpegts_mux_unsubscribe_linked
|
|||
mpegts_mux_instance_t *mmi;
|
||||
|
||||
if (mi) {
|
||||
tvhtrace("mpegts", "unsubscribing linked from '%s'", mi->mi_name);
|
||||
LIST_FOREACH(mmi, &mi->mi_mux_active, mmi_active_link)
|
||||
mpegts_mux_unsubscribe_by_name(mmi->mmi_mux, "keep");
|
||||
}
|
||||
|
@ -721,6 +723,9 @@ mpegts_mux_stop ( mpegts_mux_t *mm, int force, int reason )
|
|||
}
|
||||
}
|
||||
|
||||
if (mm->mm_active != mmi)
|
||||
return;
|
||||
|
||||
mi->mi_stopping_mux(mi, mmi);
|
||||
mi->mi_stop_mux(mi, mmi);
|
||||
mi->mi_stopped_mux(mi, mmi);
|
||||
|
|
|
@ -213,7 +213,7 @@ mpegts_mux_sched_timer ( void *p )
|
|||
mms->mms_sub
|
||||
= subscription_create_from_mux(mms->mms_prch, NULL, mms->mms_weight,
|
||||
mms->mms_creator ?: "",
|
||||
SUBSCRIPTION_NONE,
|
||||
SUBSCRIPTION_MINIMAL,
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
/* Failed (try-again soon) */
|
||||
|
|
|
@ -37,6 +37,7 @@ extern struct th_subscription_list subscriptions;
|
|||
#define SUBSCRIPTION_IDLESCAN 0x200 ///< for mux subscriptions
|
||||
#define SUBSCRIPTION_USERSCAN 0x400 ///< for mux subscriptions
|
||||
#define SUBSCRIPTION_EPG 0x800 ///< for mux subscriptions
|
||||
#define SUBSCRIPTION_MINIMAL 0x1000
|
||||
|
||||
/* Some internal priorities */
|
||||
#define SUBSCRIPTION_PRIO_KEEP 1 ///< Keep input rolling
|
||||
|
|
Loading…
Add table
Reference in a new issue