diff --git a/docs/html/config_services.html b/docs/html/config_services.html index d48355cc..6814f757 100644 --- a/docs/html/config_services.html +++ b/docs/html/config_services.html @@ -18,6 +18,12 @@
Enabled
Whether or not this service is available for use +
Automatic Checking +
Check for the service presence. If service is no longer broadcasted, + this field will become as "Missing In PAT/SDT". The + check can be also disabled for given service using this + column. +
Channel
The channel to which the service is mapped diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index b3b8d48a..f3a936ea 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -1052,6 +1052,10 @@ dvb_pat_callback tvhdebug("pat", " sid %04X (%d) on pid %04X (%d)", sid, sid, pid, pid); int save = 0; if ((s = mpegts_service_find(mm, sid, pid, 1, &save))) { + if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) { + tvhinfo("mpegts", "enabling service %s (found in PAT)", s->s_nicename); + s->s_enabled = 1; + } s->s_dvb_check_seen = dispatch_clock; mpegts_table_add(mm, DVB_PMT_BASE, DVB_PMT_MASK, dvb_pmt_callback, NULL, "pmt", MT_CRC | MT_QUICKREQ | MT_SCANSUBS, @@ -1588,8 +1592,13 @@ dvb_sdt_callback s = mpegts_service_find(mm, service_id, 0, 1, &save); charset = dvb_charset_find(mn, mm, s); - if (s) + if (s) { + if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) { + tvhinfo("mpegts", "enabling service %s (found in SDT)", s->s_nicename); + s->s_enabled = 1; + } s->s_dvb_check_seen = dispatch_clock; + } /* Descriptor loop */ DVB_DESC_EACH(lptr, llen, dtag, dlen, dptr) { diff --git a/src/service.c b/src/service.c index 5972d983..06107772 100644 --- a/src/service.c +++ b/src/service.c @@ -181,9 +181,9 @@ static htsmsg_t * service_class_auto_list ( void *o ) { static const struct strtab tab[] = { - { "", 0 }, - { "No Auto (Disabled)", 1 }, - { "Missing In PAT/SDT", 2 } + { "Auto Check Enabled", 0 }, + { "Auto Check Disabled", 1 }, + { "Missing In PAT/SDT", 2 } }; return strtab2htsmsg(tab); }