From patchwork Sat Jul 8 21:25:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 42536 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6d25:b0:130:f365:34ad with SMTP id fv37csp663119pzb; Sat, 8 Jul 2023 14:26:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlHkZ9VBAjVlCUxm4Xhj3DVNZNeKN/KCDQVZcLxeBGi6oP+KBhRuswBpLRumOcNxen1nTjKO X-Received: by 2002:a17:907:2ce1:b0:98d:4b97:acc8 with SMTP id hz1-20020a1709072ce100b0098d4b97acc8mr13201668ejc.25.1688851565814; Sat, 08 Jul 2023 14:26:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688851565; cv=none; d=google.com; s=arc-20160816; b=JbJ5TnhsfOF/iEJ0RsRtBfQ694DSEGIADFVMX2K1O5K3H23yhZqmunP1xk+pWmZdp8 DvgYz5N0sws3Uh9jRyrl9dEuGc/v6me8Tka3ssT59bJ20WEM8q15vGQzl81wb60Oo4By NCEhvoZxtb4BDUt4+FP1yXspDFQFtHGwz9u9Us5WtD7O4YY/ZB9ppiYdD2nH+wW1FPT0 I2agBWeBl6yn3NTTxXrKDXq3ZzbaFS/M0Zro0Z+Qz840BgGx/gzJoiUx/cUJ35iXMfC1 GVqpFJKO5ajXZxUltoN8yxqNMpRXo70Kp9Vw++3KFBrSc2EI+TfBBfILzOiMxRhfnKNj QnxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to; bh=xhLd5dnlpAcW7rF0njmT8Ifnl7ads/cuh8uk6giHHQE=; fh=YYwLYmpaV0Fpw/rxmSKNRLS2XzDkAlGbHATiKOPtZrY=; b=Q6rjosnKhlMTsyAudl0u42KLviDde/yQRw404BQeiWKGuymAgERi3PaYkSCHu5SO9X JzOaKtS48ZNLjkYUIYluOwjnhHXrf3oFDrONcOylWtlzWRuOXI9QW+Z1B8ChawzqL/RU qlwsvrmXxRtbgBvhnuNCkCKgAzaWyW+9Rq/eZUQ42ekgwXbcijakYvmjS3rni/RAbFP5 mebeyc5FNInt0uituINHyVHrCAFn+c4084hCBRiF330qEq6jG9eRk0thIIQIplPWYIxZ EaMhrwGNN9qeBSJNjmafAxovdADPA2YPM52XNIDQ5U9zGxqMcRpXDRSgASckriuZwB9I QRzw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u21-20020a170906c41500b00992bf74c314si3910657ejz.983.2023.07.08.14.26.05; Sat, 08 Jul 2023 14:26:05 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BEC9168C54F; Sun, 9 Jul 2023 00:25:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A3C5F68C541 for ; Sun, 9 Jul 2023 00:25:34 +0300 (EEST) X-GND-Sasl: michael@niedermayer.cc Received: by mail.gandi.net (Postfix) with ESMTPSA id DC41D40002 for ; Sat, 8 Jul 2023 21:25:33 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sat, 8 Jul 2023 23:25:15 +0200 Message-Id: <20230708212530.109692-3-michael@niedermayer.cc> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230708212530.109692-1-michael@niedermayer.cc> References: <20230708212530.109692-1-michael@niedermayer.cc> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/18] avradio/sdr: Add fm multiple parameter X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: F/nwXdEUdd9h Signed-off-by: Michael Niedermayer --- doc/demuxers.texi | 7 +++++++ libavradio/sdr.h | 1 + libavradio/sdrdemux.c | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/doc/demuxers.texi b/doc/demuxers.texi index 81c46ce08f..86f031b9ed 100644 --- a/doc/demuxers.texi +++ b/doc/demuxers.texi @@ -965,6 +965,13 @@ it can also result in the detection of SDR artifacts such as reflections of stro as weak stations. Future versions may be better able to separate weak stations from artifacts looking like weak stations. +@item fm_multiple +Multiple of frequency in hz at which to search for stations. +you can set this to 100000 to probe stations at 0.1MHz increments +Most SDR artifacts are not at exact multiplies, this is thus an effective +way to eliminate these artifacts. +disabled by default. + @item am_mode AM Demodulation method. Several different methods are supported. @table @samp diff --git a/libavradio/sdr.h b/libavradio/sdr.h index 1053e45efe..ff4bfcaa1f 100644 --- a/libavradio/sdr.h +++ b/libavradio/sdr.h @@ -159,6 +159,7 @@ typedef struct SDRContext { float am_threshold; float fm_threshold; + float fm_multiple; pthread_t hw_thread; int thread_started; diff --git a/libavradio/sdrdemux.c b/libavradio/sdrdemux.c index 1f2d778978..13cec10505 100644 --- a/libavradio/sdrdemux.c +++ b/libavradio/sdrdemux.c @@ -915,6 +915,14 @@ static int probe_fm(SDRContext *sdr) if (fabs(f2 - f) > 1000) continue; + + if (sdr->fm_multiple) { + double f3 = lrint(f2 / sdr->fm_multiple) * sdr->fm_multiple; + if (fabs(f2 - f3) > FM_FREQ_TOLERANCE) + continue; + f2 = f3; + } + create_candidate_station(sdr, FM, f2, bandwidth_f, bandwidth_p2, score); } } @@ -2169,6 +2177,7 @@ const AVOption avpriv_sdr_options[] = { { "am_threshold" , "AM detection threshold", OFFSET(am_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 20}, 0, FLT_MAX, DEC}, { "fm_threshold" , "FM detection threshold", OFFSET(fm_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 50}, 0, FLT_MAX, DEC}, + { "fm_multiple" , "FM frequency mutiple", OFFSET(fm_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC}, { NULL }, };