From: Jaroslav Kysela Date: Tue, 20 Jun 2017 15:25:38 +0000 (+0200) Subject: satip server: add 'Force signal level', fixes #4444 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6b39b2ad91e36918f184a707a24719e4378ead4f;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 c77bc772a..7148a1360 100644 --- a/src/satip/rtp.c +++ b/src/satip/rtp.c @@ -668,27 +668,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 88f06b4d0..7ec37052e 100644 --- a/src/satip/server.c +++ b/src/satip/server.c @@ -715,7 +715,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 2219b9a16..f34508fd3 100644 --- a/src/satip/server.h +++ b/src/satip/server.h @@ -48,6 +48,7 @@ struct satip_server_conf { int satip_muxcnf; int satip_nom3u; int satip_iptv_sig_level; + int satip_force_sig_level; int satip_dvbs; int satip_dvbs2; int satip_dvbt;