[FFmpeg-devel] [PATCH 14/18] avradio/sdrdemux: fm_probe: dont allow bandwidh=sample rate

Michael Niedermayer michael at niedermayer.cc
Sun Jul 9 00:25:26 EEST 2023


if bandwidth is set incorrectly the noise floor can be very wrong, which
causes issues as the threshold is based on the noise floor

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 libavradio/sdrdemux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavradio/sdrdemux.c b/libavradio/sdrdemux.c
index 5300311c3a..b51fa4296a 100644
--- a/libavradio/sdrdemux.c
+++ b/libavradio/sdrdemux.c
@@ -843,7 +843,7 @@ static int probe_fm(SDRContext *sdr)
     int bandwidth_p2 =  38*1000; //phase 2 bandwidth
     int half_bw_i = bandwidth_f * (int64_t)sdr->block_size / sdr->sdr_sample_rate;
     float last_score[3] = {FLT_MAX, FLT_MAX, FLT_MAX};
-    int border_i = (sdr->sdr_sample_rate - sdr->bandwidth) * sdr->block_size / sdr->sdr_sample_rate;
+    int border_i = (sdr->sdr_sample_rate - FFMIN(sdr->bandwidth, sdr->sdr_sample_rate*7/8)) * sdr->block_size / sdr->sdr_sample_rate;
     double noise_floor = FLT_MAX;
 
     if (2*half_bw_i > 2*sdr->block_size)
-- 
2.31.1



More information about the ffmpeg-devel mailing list