From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3CD3A4133D for ; Mon, 24 Jul 2023 18:36:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A909368C7A6; Mon, 24 Jul 2023 21:35:48 +0300 (EEST) 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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 -- 2.31.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".