From patchwork Mon Jul 24 18:35:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 42948 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:be1d:b0:130:ccc6:6c4b with SMTP id ge29csp2111707pzb; Mon, 24 Jul 2023 11:36:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlEnaXDSl5wNO295I0bEedFtvJ5r7R7ui4Lh5kyz4zUsi6j3oM5HD3J/9xJYIa3jHLjs0a9m X-Received: by 2002:a17:906:31d8:b0:994:2fa9:7446 with SMTP id f24-20020a17090631d800b009942fa97446mr9505796ejf.46.1690223774935; Mon, 24 Jul 2023 11:36:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690223774; cv=none; d=google.com; s=arc-20160816; b=Z+42klqEl0IXU+8iTERYxaCfNcJFFeSKMEw7eqWa+M6aVYsaqYSrvSA7SFLX76vmbm 8FPsNzzySKXFO7DUolh2pEp3QWYhPI2j/JrS2LFgNVWxJFdv2C88VfHeOIP9IcFm/V3/ /F4xmrl83OT19zCOJdr6vXpmE0Q6rkdFl7eDHMPI8oXYNI+zHCoM5EbNhdBA7ffw+li+ 5Gxxvpd/o/Ayfj70LS/p1ao64Zedq47dUC3tzUB+3MocbzmyS5gLtjn6JN8My59susB7 YIyVWeVM96GgQEjQYO2UJmTJ3w9e6ET3LCAljcvT/b3rqOdYom5ZbfllnMpS4l7+y7/B zwwQ== 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=IaYW1wz1rUXk2g2HVXJKozj8yWHGQRPgcaD30X8H118=; fh=YYwLYmpaV0Fpw/rxmSKNRLS2XzDkAlGbHATiKOPtZrY=; b=P2Ai+iRmz/LQ3v5OemAKmPUGoqMG1Xxsy6NGlDW3wCkYzFSkrgzq9IrNAa8/AHPsL8 x7Ojdwsi8rJssVjjogpC5XdxZoW3Qf05Q+SI9Cs81OSi+9GSt0rdRDuKeIV/gv2vXEQc MNBxH0GCArCgjn+rqus5+SQuPkPFrRwazjlk0wdHTFxntRAqrZJr9vpj8cPBiLQdeYAW xsJwL1WYVzZsW2WJOJzFW4AcZ/Y0AyOqrqoa7+W4u6xGCrbsl7XBIfdCCv7j3MzhIIb5 QEEVUyFImBS2Nc18+bcpqmFzJsgLJiygSox42QZguM+C49psxrOkuoK6lokzhxdhxCBh K1fA== 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 f27-20020a170906085b00b0099351214a94si6908586ejd.648.2023.07.24.11.36.14; Mon, 24 Jul 2023 11:36:14 -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 DB94A68C7A9; Mon, 24 Jul 2023 21:35:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3216D68C741 for ; Mon, 24 Jul 2023 21:35:41 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 84B12FF808 for ; Mon, 24 Jul 2023 18:35:40 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Mon, 24 Jul 2023 20:35:33 +0200 Message-Id: <20230724183535.2677937-4-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 4/6] avradio/sdrdemux: Skiping detection of AM stations at DC point 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: iZtLlZ0wwgLg Also use this to detect a DC offset instead of the driver Signed-off-by: Michael Niedermayer --- libavradio/sdr.h | 1 + libavradio/sdrdemux.c | 11 ++++++++++- tests/ref/fate/sdr-am | 38 +++++++++++++++----------------------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/libavradio/sdr.h b/libavradio/sdr.h index 7d7bfd6806..a5a291ee37 100644 --- a/libavradio/sdr.h +++ b/libavradio/sdr.h @@ -260,6 +260,7 @@ typedef struct SDRContext { int rtlsdr_fixes; int sdrplay_fixes; + int dc_fix; } SDRContext; typedef struct ModulationDescriptor { diff --git a/libavradio/sdrdemux.c b/libavradio/sdrdemux.c index 123a1a9d0f..25f0012777 100644 --- a/libavradio/sdrdemux.c +++ b/libavradio/sdrdemux.c @@ -596,6 +596,14 @@ static int probe_am(SDRContext *sdr) continue; } + if (i == sdr->block_size) { + if (sdr->dc_fix < 0) { + sdr->dc_fix = 1; + av_log(sdr->avfmt, AV_LOG_INFO, "Skiping AM station detection at DC point and enabling DC correction\n"); + continue; + } + } + create_candidate_station(sdr, AM, INDEX2F(peak_i), bandwidth_f, score); } } @@ -1931,7 +1939,7 @@ process_next_block: if (sdr->sample_size == 2) { const int8_t *halfblock0 = fifo_element[0].halfblock; const int8_t *halfblock1 = fifo_element[1].halfblock; - if (sdr->rtlsdr_fixes>0) { + if (sdr->dc_fix>0) { int sum = 0; float offset; for (i = 0; i<2*sdr->block_size; i++) @@ -2274,6 +2282,7 @@ const AVOption ff_sdr_options[] = { { "driver" , "sdr driver name" , OFFSET(driver_name), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC}, { "rtlsdr_fixes" , "workaround rtlsdr issues", OFFSET(rtlsdr_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, { "sdrplay_fixes" , "workaround sdrplay issues", OFFSET(sdrplay_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, + { "dc_fix" , "Apply DC correction", OFFSET(dc_fix), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, { "sdr_sr" , "sdr sample rate" , OFFSET(sdr_sample_rate ), AV_OPT_TYPE_INT , {.i64 = 0}, 0, INT_MAX, DEC}, { "sdr_freq", "sdr frequency" , OFFSET(user_wanted_freq), AV_OPT_TYPE_INT64 , {.i64 = 9000000}, 0, INT64_MAX, DEC}, { "gain" , "sdr overall gain", OFFSET(sdr_gain), AV_OPT_TYPE_INT , {.i64 = GAIN_SDR_AGC}, -3, INT_MAX, DEC, "gain"}, diff --git a/tests/ref/fate/sdr-am b/tests/ref/fate/sdr-am index b8a34ee488..e2ae353902 100644 --- a/tests/ref/fate/sdr-am +++ b/tests/ref/fate/sdr-am @@ -28,28 +28,20 @@ #codec_id 5: pcm_u8 #sample_rate 5: 16000 #channel_layout_name 5: stereo -#tb 6: 1/16000 -#media_type 6: audio -#codec_id 6: pcm_u8 -#sample_rate 6: 16000 -#channel_layout_name 6: stereo 0, 0, 0, 1, 320000, 0x816a0964 0, 1, 1, 1, 320000, 0x140ce2da -1, 2048, 2048, 1024, 2048, 0x2276fdd1 -2, 2048, 2048, 1024, 2048, 0x4d31ff0f -3, 2048, 2048, 1024, 2048, 0x3cd002ad -4, 2048, 2048, 1024, 2048, 0x8bdd034d -5, 2048, 2048, 1024, 2048, 0xc6430169 -1, 3072, 3072, 1024, 2048, 0xa0810031 -2, 3072, 3072, 1024, 2048, 0xb307000d -3, 3072, 3072, 1024, 2048, 0x3f6d01d4 -4, 3072, 3072, 1024, 2048, 0x2de9fde9 -5, 3072, 3072, 1024, 2048, 0xad7efe6f -6, 3072, 3072, 1024, 2048, 0x9c840168 -1, 4096, 4096, 1024, 2048, 0x61a50250 -2, 4096, 4096, 1024, 2048, 0x7e7cfe03 -3, 4096, 4096, 1024, 2048, 0x6561fc7b -4, 4096, 4096, 1024, 2048, 0xdcd6ff8d -5, 4096, 4096, 1024, 2048, 0xedac0493 -6, 4096, 4096, 1024, 2048, 0x970a0066 -0, 3, 3, 1, 320000, 0x9fb0c309 +1, 2048, 2048, 1024, 2048, 0x4d31ff0f +2, 2048, 2048, 1024, 2048, 0x3cd002ad +3, 2048, 2048, 1024, 2048, 0x8bdd034d +4, 2048, 2048, 1024, 2048, 0xc6430169 +1, 3072, 3072, 1024, 2048, 0xb307000d +2, 3072, 3072, 1024, 2048, 0x3f6d01d4 +3, 3072, 3072, 1024, 2048, 0x2de9fde9 +4, 3072, 3072, 1024, 2048, 0xad7efe6f +5, 3072, 3072, 1024, 2048, 0x9c840168 +1, 4096, 4096, 1024, 2048, 0x7e7cfe03 +2, 4096, 4096, 1024, 2048, 0x6561fc7b +3, 4096, 4096, 1024, 2048, 0xdcd6ff8d +4, 4096, 4096, 1024, 2048, 0xedac0493 +5, 4096, 4096, 1024, 2048, 0x970a0066 +0, 3, 3, 1, 320000, 0x6ea8fa49