diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 04dd9b6b..4fe616c8 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -316,7 +316,8 @@ mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int init ) pthread_mutex_lock(&s->s_stream_mutex); mi->mi_open_pid(mi, s->s_dvb_mux, s->s_pmt_pid, MPS_STREAM, s); mi->mi_open_pid(mi, s->s_dvb_mux, s->s_pcr_pid, MPS_STREAM, s); - TAILQ_FOREACH(st, &s->s_components, es_link) { + /* Open only filtered components here */ + TAILQ_FOREACH(st, &s->s_filt_components, es_link) { if (st->es_type != SCT_CA) mi->mi_open_pid(mi, s->s_dvb_mux, st->es_pid, MPS_STREAM, s); } @@ -352,6 +353,7 @@ mpegts_input_close_service ( mpegts_input_t *mi, mpegts_service_t *s ) pthread_mutex_lock(&s->s_stream_mutex); mi->mi_close_pid(mi, s->s_dvb_mux, s->s_pmt_pid, MPS_STREAM, s); mi->mi_close_pid(mi, s->s_dvb_mux, s->s_pcr_pid, MPS_STREAM, s); + /* Close all PIDs (the component filter may be changed at runtime) */ TAILQ_FOREACH(st, &s->s_components, es_link) { if (st->es_type != SCT_CA) mi->mi_close_pid(mi, s->s_dvb_mux, st->es_pid, MPS_STREAM, s);