From 2665e13507630c1bc3079c854f0088aa500e879d Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 17 Mar 2015 16:05:30 +0100 Subject: [PATCH] mpegts open service: do not add pid multiple times, handle filtered PIDs correctly --- src/input/mpegts/mpegts_input.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index bb5614317..6a5cce2b8 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -554,13 +554,17 @@ mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, mpegts_pid_add(pids, s->s_pmt_pid); mpegts_pid_add(pids, s->s_pcr_pid); /* Open only filtered components here */ - TAILQ_FOREACH(st, &s->s_filt_components, es_filt_link) { + TAILQ_FOREACH(st, &s->s_filt_components, es_filt_link) if (st->es_type != SCT_CA) { st->es_pid_opened = 1; mi->mi_open_pid(mi, s->s_dvb_mux, st->es_pid, MPS_SERVICE, s); - mpegts_pid_add(pids, st->es_pid); } - } + + /* Ensure that filtered PIDs are not send in ts_recv_raw */ + TAILQ_FOREACH(st, &s->s_filt_components, es_filt_link) + if (st->es_type != SCT_CA) + if (!mpegts_pid_exists(pids, st->es_pid)) + mpegts_pid_add(pids, st->es_pid); LIST_FOREACH(s2, &s->s_masters, s_masters_link) { pthread_mutex_lock(&s2->s_stream_mutex); -- 2.47.3