From patchwork Mon Jul 24 18:35:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 42950 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:be1d:b0:130:ccc6:6c4b with SMTP id ge29csp2111840pzb; Mon, 24 Jul 2023 11:36:32 -0700 (PDT) X-Google-Smtp-Source: APBJJlEw0ri29MYeq/Z80zlArOl6Z063wcicSpkIH4tQUOo0sbhe0XiY4PYMNrWGttg+eNHkDioe X-Received: by 2002:a17:906:76cd:b0:991:bf04:2047 with SMTP id q13-20020a17090676cd00b00991bf042047mr11212394ejn.14.1690223792143; Mon, 24 Jul 2023 11:36:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690223792; cv=none; d=google.com; s=arc-20160816; b=CMm90FinndxMD2nNmX+Zs2MVnCYsULnmGct/p1d+yvghL6SEh9bc96jsXMnk5bhL9C bJ3acsfDQoog9+kvYw8kbqX3svhOQiXcYP8w6CCtP8gOhC3oVsys1KA00ASHmi0G1zb/ rx8UYyX05vPjpiT9PqC9/yvtAEesogOXlP/Asnt2YFn5aDUovJKx1LZ1a0WCNXJIoVqV MIbHpFazyTxcS16D4xsJapL+Qaosrk+SpHyvX5Z8PgUffkmACmHcLe282y3GhQK1k+Tp MPFrK4qpL1/RyGrPLvTPiDXdX8x+JzBOK/pNqDzTCGV0OcDjqKSNKfHQi9qQFRtcfVa/ VsJQ== 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=Z9To4vzJT4y0w1hDrAA5NlbSFs0xBTrHZzC2ubr0IuA=; fh=YYwLYmpaV0Fpw/rxmSKNRLS2XzDkAlGbHATiKOPtZrY=; b=RrnHQTHy4Yn6y7TtHCPasrp8LtPTkqW1BYfMQIg1KeBSS2i+UiJptB6MP/9wAzPCsG 0GKyWuRfqxkUhm9+zwE9uG6jneWTVpvKHcOyHKkECL9MvHzKDSraEq1Zxtn28B2O5+8V 7dqdJnLxkicSJLeY0ppi6wcc6yatF9w+8DFyw2QRiemL+xJ28ilSgms9dQjkjYv1ZVdJ UP3sXsfUHJ2tMI8GXVMnm8ws9JXou9FpCLt90AnIijkAGfbnym7NfzpItjLZTeBgyEty 24OvXc4meQ9IFJDtS9EiIoGVwxoUa5SnCxkVgPONW7HC0QerNmSGlKM7cQgf7wAt+I52 UogQ== 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 g21-20020a1709067c5500b00992f1a3b9d9si6580701ejp.415.2023.07.24.11.36.31; Mon, 24 Jul 2023 11:36:32 -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 E333968C79D; Mon, 24 Jul 2023 21:35:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0925668C7AA for ; Mon, 24 Jul 2023 21:35:43 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 37CD7E0002 for ; Mon, 24 Jul 2023 18:35:42 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Mon, 24 Jul 2023 20:35:35 +0200 Message-Id: <20230724183535.2677937-6-michael@niedermayer.cc> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230724183535.2677937-1-michael@niedermayer.cc> References: <20230724183535.2677937-1-michael@niedermayer.cc> MIME-Version: 1.0 X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 6/6] avradio/sdr: Add am_multiple parameter to allow restricting detected AM stations 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: TheGY8f6TZMG Signed-off-by: Michael Niedermayer --- libavradio/sdr.h | 2 ++ libavradio/sdrdemux.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libavradio/sdr.h b/libavradio/sdr.h index a5a291ee37..6d11ef794f 100644 --- a/libavradio/sdr.h +++ b/libavradio/sdr.h @@ -212,7 +212,9 @@ typedef struct SDRContext { float am_threshold; float fm_threshold; + float am_multiple; float fm_multiple; + float am_multiple_tolerance; pthread_t hw_thread; int thread_started; diff --git a/libavradio/sdrdemux.c b/libavradio/sdrdemux.c index 25f0012777..3b24cfedef 100644 --- a/libavradio/sdrdemux.c +++ b/libavradio/sdrdemux.c @@ -589,6 +589,7 @@ static int probe_am(SDRContext *sdr) if (max_in_range(sdr, i-half_bw_i, i-4) < mid*AM_MAX4 && max_in_range(sdr, i+4, i+half_bw_i) < mid*AM_MAX4) { double peak_i = find_peak_macleod(sdr, sdr->block, i, 2*sdr->block_size, NULL); + double f = INDEX2F(peak_i); if (peak_i < 0) continue; if (fabs(peak_i-i) > 1.0) { @@ -604,7 +605,13 @@ static int probe_am(SDRContext *sdr) } } - create_candidate_station(sdr, AM, INDEX2F(peak_i), bandwidth_f, score); + if (sdr->am_multiple) { + double f2 = lrint(f / sdr->am_multiple) * sdr->am_multiple; + if (fabs(f2 - f) > sdr->am_multiple_tolerance) + continue; + } + + create_candidate_station(sdr, AM, f, bandwidth_f, score); } } } @@ -2319,7 +2326,9 @@ const AVOption ff_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}, + { "am_multiple" , "AM frequency mutiple", OFFSET(am_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC}, { "fm_multiple" , "FM frequency mutiple", OFFSET(fm_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC}, + { "am_multiple_tolerance", "AM frequency mutiple tolerance", OFFSET(am_multiple_tolerance), AV_OPT_TYPE_FLOAT, {.dbl = 60}, 0, FLT_MAX, DEC}, { NULL }, };