From: Michael Niedermayer <michael@niedermayer.cc>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: [FFmpeg-devel] [PATCH 4/6] avradio/sdrdemux: Skiping detection of AM stations at DC point
Date: Mon, 24 Jul 2023 20:35:33 +0200
Message-ID: <20230724183535.2677937-4-michael@niedermayer.cc> (raw)
In-Reply-To: <20230724183535.2677937-1-michael@niedermayer.cc>
Also use this to detect a DC offset instead of the driver
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
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".
next prev parent reply other threads:[~2023-07-24 18:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-24 18:35 [FFmpeg-devel] [PATCH 1/6] avradio/sdrinradio: Check tuner before applying rtlsdr frequency correction Michael Niedermayer
2023-07-24 18:35 ` [FFmpeg-devel] [PATCH 2/6] avradio/sdr: Factor bug workaround detection code out Michael Niedermayer
2023-07-24 18:35 ` [FFmpeg-devel] [PATCH 3/6] avradio/sdrdemux: Call ff_sdr_autodetect_workarounds() from common init Michael Niedermayer
2023-07-24 18:35 ` Michael Niedermayer [this message]
2023-07-24 18:35 ` [FFmpeg-devel] [PATCH 5/6] avradio/sdrinradio: apply R820T correction only for non direct mode Michael Niedermayer
2023-07-24 18:35 ` [FFmpeg-devel] [PATCH 6/6] avradio/sdr: Add am_multiple parameter to allow restricting detected AM stations Michael Niedermayer
2023-07-27 20:18 ` [FFmpeg-devel] [PATCH 1/6] avradio/sdrinradio: Check tuner before applying rtlsdr frequency correction Michael Niedermayer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230724183535.2677937-4-michael@niedermayer.cc \
--to=michael@niedermayer.cc \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git