@@ -1135,7 +1135,9 @@ static int demodulate_fm(SDRContext *sdr, Station *station, AVStream *st, AVPack
if (!newbuf)
return AVERROR(ENOMEM);
- scale = 5 / (M_PI * 2*sdr->fm_block_size);
+ //ATAN gives us +-PI the following 2 transforms scale by the given values, we reverse this here
+ scale = 1.0 / (M_PI * sqrt(2*sdr->fm_block_size * 2*sdr->fm_block_size_p2));
+
for(i = 0; i<sdr->fm_block_size_p2; i++) {
float m, q;
@@ -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, 0xdd0d10be
-2, 8196, 8196, 4096, 8192, 0x98c4f547
-1, 12292, 12292, 4096, 8192, 0xaf58fbdc
-2, 12292, 12292, 4096, 8192, 0x6d53f60a
+1, 8196, 8196, 4096, 8192, 0x12b50769
+2, 8196, 8196, 4096, 8192, 0xeb93fbff
+1, 12292, 12292, 4096, 8192, 0xba21feb7
+2, 12292, 12292, 4096, 8192, 0x3ef2fc7b
0, 3, 3, 1, 320000, 0xf8b7b144
-1, 16388, 16388, 4096, 8192, 0x03640b38
-2, 16388, 16388, 4096, 8192, 0x1216e352
+1, 16388, 16388, 4096, 8192, 0xdea20516
+2, 16388, 16388, 4096, 8192, 0x7538f52b
0, 4, 4, 1, 320000, 0xf3a3bf66
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavformat/sdrdemux.c | 4 +++- tests/ref/fate/sdr-fm | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-)