From: Jaroslav Kysela Date: Tue, 20 Jun 2017 15:25:38 +0000 (+0200) Subject: satip server: add 'Force signal level', fixes #4444 X-Git-Tag: v4.2.4~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a75456f006139b40550e9623f0a023dbcd9095ed;p=thirdparty%2Ftvheadend.git satip server: add 'Force signal level', fixes #4444 --- diff --git a/src/satip/rtp.c b/src/satip/rtp.c index 68aa5c936..4ef931e0d 100644 --- a/src/satip/rtp.c +++ b/src/satip/rtp.c @@ -655,27 +655,32 @@ satip_status_build(satip_rtp_session_t *rtp, char *buf, int len) int r, level = 0, lock = 0, quality = 0; lock = rtp->sig_lock; - switch (rtp->sig.signal_scale) { - case SIGNAL_STATUS_SCALE_RELATIVE: - level = MINMAX((rtp->sig.signal * 245) / 0xffff, 0, 240); - break; - case SIGNAL_STATUS_SCALE_DECIBEL: - level = MINMAX((rtp->sig.signal + 90000) / 375, 0, 240); - break; - default: - level = lock ? 120 : 0; - break; - } - switch (rtp->sig.snr_scale) { - case SIGNAL_STATUS_SCALE_RELATIVE: - quality = MINMAX((rtp->sig.snr * 16) / 0xffff, 0, 15); - break; - case SIGNAL_STATUS_SCALE_DECIBEL: - quality = MINMAX(rtp->sig.snr / 2000, 0, 15); - break; - default: - quality = lock ? 10 : 0; - break; + if (satip_server_conf.satip_force_sig_level > 0) { + level = MINMAX(satip_server_conf.satip_force_sig_level, 1, 240); + quality = MAX((level + 15) / 15, 15); + } else { + switch (rtp->sig.signal_scale) { + case SIGNAL_STATUS_SCALE_RELATIVE: + level = MINMAX((rtp->sig.signal * 245) / 0xffff, 0, 240); + break; + case SIGNAL_STATUS_SCALE_DECIBEL: + level = MINMAX((rtp->sig.signal + 90000) / 375, 0, 240); + break; + default: + level = lock ? 120 : 0; + break; + } + switch (rtp->sig.snr_scale) { + case SIGNAL_STATUS_SCALE_RELATIVE: + quality = MINMAX((rtp->sig.snr * 16) / 0xffff, 0, 15); + break; + case SIGNAL_STATUS_SCALE_DECIBEL: + quality = MINMAX(rtp->sig.snr / 2000, 0, 15); + break; + default: + quality = lock ? 10 : 0; + break; + } } mpegts_pid_dump(&rtp->pids, pids, sizeof(pids), 0, 0); diff --git a/src/satip/server.c b/src/satip/server.c index 3fd578e9d..c429056ab 100644 --- a/src/satip/server.c +++ b/src/satip/server.c @@ -724,7 +724,16 @@ const idclass_t satip_server_class = { .off = offsetof(struct satip_server_conf, satip_iptv_sig_level), .opts = PO_EXPERT, .group = 1, - .def.i = 220, + .def.u32 = 220, + }, + { + .type = PT_U32, + .id = "force_sig_level", + .name = N_("Force signal level"), + .desc = N_("Force signal level for all streaming (1-240, 0=do not use)."), + .off = offsetof(struct satip_server_conf, satip_force_sig_level), + .opts = PO_EXPERT, + .group = 1, }, { .type = PT_INT, diff --git a/src/satip/server.h b/src/satip/server.h index 3de498d18..4035a11c1 100644 --- a/src/satip/server.h +++ b/src/satip/server.h @@ -49,6 +49,7 @@ struct satip_server_conf { int satip_nom3u; int satip_anonymize; int satip_iptv_sig_level; + int satip_force_sig_level; int satip_dvbs; int satip_dvbs2; int satip_dvbt;