}
} 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);
}
}
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;
}
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");
}
}
}
+ if (mm->mm_active != mmi)
+ return;
+
mi->mi_stopping_mux(mi, mmi);
mi->mi_stop_mux(mi, mmi);
mi->mi_stopped_mux(mi, mmi);
#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