[FFmpeg-devel] [PATCH 03/14] avradio/sdrdemux: Fix seeking to stations at the edge of the range

Michael Niedermayer michael at niedermayer.cc
Wed Jul 19 00:45:31 EEST 2023


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

diff --git a/libavradio/sdrdemux.c b/libavradio/sdrdemux.c
index 6b1553b130..ca0a9c5cf9 100644
--- a/libavradio/sdrdemux.c
+++ b/libavradio/sdrdemux.c
@@ -1322,6 +1322,7 @@ static int snap2station(SDRContext *sdr, int *seek_direction) {
     av_assert0(!best_station || best_station != sst->station);
 
     if (best_station) {
+        int64_t wanted_freq = av_clip64(lrint(best_station->frequency + 213*1000), sdr->min_center_freq, sdr->max_center_freq); // We target a bit off teh exact frequency to avoid artifacts
         int ret = setup_stream(sdr, sdr->single_ch_audio_st_index, best_station);
         if (ret < 0) {
             av_log(avfmt, AV_LOG_DEBUG, "setup_stream failed\n");
@@ -1331,7 +1332,7 @@ static int snap2station(SDRContext *sdr, int *seek_direction) {
         pthread_mutex_lock(&sdr->mutex);
         *seek_direction     =
         sdr->seek_direction = 0;
-        sdr->wanted_freq = lrint(best_station->frequency + 213*1000); // We target a bit off teh exact frequency to avoid artifacts
+        sdr->wanted_freq = wanted_freq;
         //200*1000 had artifacts
 
         av_log(avfmt, AV_LOG_DEBUG, "request f = %"PRId64"\n", sdr->wanted_freq);
-- 
2.31.1



More information about the ffmpeg-devel mailing list