From: Jaroslav Kysela Date: Mon, 22 May 2017 13:59:34 +0000 (+0200) Subject: mpegts service: add verified flag to not bother with inactive streams X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e863cc3eb58c64b15878369facdb295605c8e536;p=thirdparty%2Ftvheadend.git mpegts service: add verified flag to not bother with inactive streams --- diff --git a/src/api/api_mpegts.c b/src/api/api_mpegts.c index 6e3241f50..848f9ff98 100644 --- a/src/api/api_mpegts.c +++ b/src/api/api_mpegts.c @@ -276,6 +276,7 @@ api_mpegts_service_grid LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) { if (hide && !mm->mm_is_enabled(mm)) continue; LIST_FOREACH(ms, &mm->mm_services, s_dvb_mux_link) { + if (hide && !ms->s_verified) continue; if (hide == 2 && !ms->s_is_enabled((service_t*)ms, 0)) continue; idnode_set_add(ins, (idnode_t*)ms, &conf->filter, perm->aa_lang_ui); } diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index 3ea309b3b..5fff47b9c 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -2574,8 +2574,10 @@ psi_parse_pmt } } - if (service_has_audio_or_video((service_t *)t)) + if (service_has_audio_or_video((service_t *)t)) { dvb_service_autoenable(t, "PAT and PMT"); + t->s_verified = 1; + } /* FIXME: Move pending_restart handling to another place? */ if (atomic_set(&t->s_pending_restart, 0) && !ret) diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index 5f8532732..9e09caf0d 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -274,6 +274,7 @@ mpegts_service_is_enabled(service_t *t, int flags) { mpegts_service_t *s = (mpegts_service_t*)t; mpegts_mux_t *mm = s->s_dvb_mux; + if (!s->s_verified) return 0; return mm->mm_is_enabled(mm) ? s->s_enabled : 0; } diff --git a/src/service.c b/src/service.c index b34e2502b..15ad00dff 100644 --- a/src/service.c +++ b/src/service.c @@ -2018,6 +2018,7 @@ void service_save ( service_t *t, htsmsg_t *m ) idnode_save(&t->s_id, m); + htsmsg_add_s32(m, "verified", t->s_verified); htsmsg_add_u32(m, "pcr", t->s_pcr_pid); htsmsg_add_u32(m, "pmt", t->s_pmt_pid); @@ -2210,6 +2211,7 @@ void service_load ( service_t *t, htsmsg_t *c ) { htsmsg_t *m, *hbbtv; htsmsg_field_t *f; + int32_t s32; uint32_t u32, pid; elementary_stream_t *st; streaming_component_type_t type; @@ -2217,6 +2219,10 @@ void service_load ( service_t *t, htsmsg_t *c ) idnode_load(&t->s_id, c); + if(!htsmsg_get_s32(c, "verified", &s32)) + t->s_verified = s32; + else + t->s_verified = 1; if(!htsmsg_get_u32(c, "pcr", &u32)) t->s_pcr_pid = u32; if(!htsmsg_get_u32(c, "pmt", &u32)) diff --git a/src/service.h b/src/service.h index fcbf2e077..0f012c8ae 100644 --- a/src/service.h +++ b/src/service.h @@ -312,6 +312,7 @@ typedef struct service { * subscription scheduling. */ int s_enabled; + int s_verified; // In PMT and valid streams int s_auto; int s_prio; int s_type_user;