[FFmpeg-cvslog] [ffmpeg-radio] 10/13: avradio/avformat/sdrdemux: fix off by 2 FM bandwidth error

Michael Niedermayer ffmpeg-git at ffmpeg.org
Sat Sep 16 21:38:26 EEST 2023


This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository libavradio.

commit 8c02929e998bf6ee2cca84cd75e331ad2a20a0fb
Author:     Michael Niedermayer <michael at niedermayer.cc>
AuthorDate: Sat Jul 29 21:07:07 2023 +0200
Commit:     Michael Niedermayer <michael at niedermayer.cc>
CommitDate: Sun Jul 30 23:11:56 2023 +0200

    avradio/avformat/sdrdemux: fix off by 2 FM bandwidth error
    
    Also adjust related parameters
    
    Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 libavformat/sdrdemux.c |  8 ++++----
 tests/ref/fate/sdr-am  | 25 ++++++++++++-------------
 tests/ref/fate/sdr-fm  | 14 +++++++-------
 3 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/libavformat/sdrdemux.c b/libavformat/sdrdemux.c
index 0e327f4860..a40346ff31 100644
--- a/libavformat/sdrdemux.c
+++ b/libavformat/sdrdemux.c
@@ -704,7 +704,7 @@ static int demodulate_am(SDRContext *sdr, Station *station, AVStream *st, AVPack
     double freq    = station->frequency;
     int64_t bandwidth = station->bandwidth;
     int index = lrint(F2INDEX(freq));
-    int len   = (bandwidth * 2ll * sdr->block_size + sdr->sdr_sample_rate/2) / sdr->sdr_sample_rate;
+    int len   = (bandwidth * 1ll * sdr->block_size + sdr->sdr_sample_rate/2) / sdr->sdr_sample_rate;
     float *newbuf;
     float scale;
     int sample_rate = sdr->sdr_sample_rate * (int64_t)sdr->am_block_size / sdr->block_size;
@@ -1030,7 +1030,7 @@ static int demodulate_fm(SDRContext *sdr, Station *station, AVStream *st, AVPack
     double freq    = station->frequency;
     int64_t bandwidth = station->bandwidth;
     int index = lrint(F2INDEX(freq));
-    int len   = (bandwidth * 2ll * sdr->block_size + sdr->sdr_sample_rate/2) / sdr->sdr_sample_rate;
+    int len   = (bandwidth * 1ll * sdr->block_size + sdr->sdr_sample_rate/2) / sdr->sdr_sample_rate;
     float *newbuf;
     float scale;
     int sample_rate    = sdr->sdr_sample_rate * (int64_t)sdr->fm_block_size    / sdr->block_size;
@@ -1687,11 +1687,11 @@ int avpriv_sdr_common_init(AVFormatContext *s)
     av_log(s, AV_LOG_INFO, "Block size %d\n", sdr->block_size);
 
     sdr->block_time = sdr->block_size / (double)sdr->sdr_sample_rate;
-    sdr->am_bandwidth    =   6   * 1000;
+    sdr->am_bandwidth    =  12   * 1000;
     sdr->fm_bandwidth    = 180   * 1000;
     sdr->fm_bandwidth_p2 =  16.5 * 1000; // Officially Stereo Broadcast FM has 15khz audio bandwidth
 
-    sdr->am_block_size    = find_block_size(sdr, sdr->am_bandwidth);
+    sdr->am_block_size    = find_block_size(sdr, sdr->am_bandwidth / 2);
     sdr->fm_block_size    = find_block_size(sdr, sdr->fm_bandwidth);
     sdr->fm_block_size_p2 = find_block_size(sdr, sdr->fm_bandwidth_p2);
 
diff --git a/tests/ref/fate/sdr-am b/tests/ref/fate/sdr-am
index e2ae353902..992ec1936d 100644
--- a/tests/ref/fate/sdr-am
+++ b/tests/ref/fate/sdr-am
@@ -30,18 +30,17 @@
 #channel_layout_name 5: stereo
 0,          0,          0,        1,   320000, 0x816a0964
 0,          1,          1,        1,   320000, 0x140ce2da
-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
+1,       2048,       2048,     1024,     2048, 0x3cd002ad
+2,       2048,       2048,     1024,     2048, 0x8bdd034d
+3,       2048,       2048,     1024,     2048, 0xc6430169
+1,       3072,       3072,     1024,     2048, 0x3f6d01d4
+2,       3072,       3072,     1024,     2048, 0x2de9fde9
+3,       3072,       3072,     1024,     2048, 0xad7efe6f
+4,       3072,       3072,     1024,     2048, 0x2c18fef7
 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
+1,       4096,       4096,     1024,     2048, 0x6561fc7b
+2,       4096,       4096,     1024,     2048, 0xdcd6ff8d
+3,       4096,       4096,     1024,     2048, 0xedac0493
+4,       4096,       4096,     1024,     2048, 0x7e7cfe03
 5,       4096,       4096,     1024,     2048, 0x970a0066
-0,          3,          3,        1,   320000, 0x6ea8fa49
+0,          3,          3,        1,   320000, 0x76d901a2
diff --git a/tests/ref/fate/sdr-fm b/tests/ref/fate/sdr-fm
index 3ae5adc2c0..97a2320a2a 100644
--- a/tests/ref/fate/sdr-fm
+++ b/tests/ref/fate/sdr-fm
@@ -15,11 +15,11 @@
 #channel_layout_name 2: stereo
 0,          0,          0,        1,   320000, 0xf553af75
 0,          1,          1,        1,   320000, 0xeabc15b3
-1,       8196,       8196,     4096,     8192, 0x585d090e
-2,       8196,       8196,     4096,     8192, 0xb966fb19
-1,      12292,      12292,     4096,     8192, 0x6d8ffe6e
-2,      12292,      12292,     4096,     8192, 0x51d1fb50
+1,       8196,       8196,     4096,     8192, 0x4af5090c
+2,       8196,       8196,     4096,     8192, 0x8e43fafd
+1,      12292,      12292,     4096,     8192, 0x39fbfe6a
+2,      12292,      12292,     4096,     8192, 0x7febfb59
 0,          3,          3,        1,   320000, 0xf8b7b144
-1,      16388,      16388,     4096,     8192, 0x8c000600
-2,      16388,      16388,     4096,     8192, 0x335ff20c
-0,          4,          4,        1,   320000, 0xab42bbc7
+1,      16388,      16388,     4096,     8192, 0x886a05fe
+2,      16388,      16388,     4096,     8192, 0x0b2cf20d
+0,          4,          4,        1,   320000, 0xf3a3bf66



More information about the ffmpeg-cvslog mailing list