#9297: Decoded flac file ends up sounding distorted
-------------------------------------+-------------------------------------
Reporter: Mattias | Type: defect
Wadman |
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: flac | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
flac_decode_bug.flac is a flac file with the first flac frame extracted
from a longer file that I unfortunately can't share. Metadata suggest it
was encoded using "reference libFLAC 1.2.1 20070917".
Some debugging findings:
Most diffing samples are reference decoded 0xffff vs ffmpeg 0x7fff
Some residual samples are quite large 65535 and -65535.
If I change "int need32 = s->flac_stream_info.bps > 16" to "int need32 =
s->flac_stream_info.bps >= 16" in flac_set_bps it seems to decode fine.
How to reproduce:
{{{
$ ls -l flac_decode_bug.flac
-rw-r--r-- 1 root root 12329 Jun 21 10:19 flac_decode_bug.flac
$ flac -t flac_decode_bug.flac
flac 1.3.3
Copyright (C) 2000-2009 Josh Coalson, 2011-2016 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are
welcome to redistribute it under certain conditions. Type `flac' for
details.
flac_decode_bug.flac: ok
$ flac -d -o flac_decode_bug.flac.ref.wav flac_decode_bug.flac
flac 1.3.3
Copyright (C) 2000-2009 Josh Coalson, 2011-2016 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are
welcome to redistribute it under certain conditions. Type `flac' for
details.
flac_decode_bug.flac: done
$ ./ffmpeg_g -i flac_decode_bug.flac flac_decode_bug.flac.ffmpeg.wav
ffmpeg version N-102781-g05f9b3a0a5 Copyright (c) 2000-2021 the FFmpeg
developers
built with gcc 10.2.1 (Alpine 10.2.1_pre1) 20201203
configuration: --enable-debug --disable-optimizations
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 1.102 / 59. 1.102
libavformat 59. 3.101 / 59. 3.101
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.102 / 8. 0.102
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
Input #0, flac, from 'flac_decode_bug.flac':
Duration: 00:00:00.09, bitrate: 1061 kb/s
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream mapping:
Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'flac_decode_bug.flac.ffmpeg.wav':
Metadata:
ISFT : Lavf59.3.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo,
s16, 1411 kb/s
Metadata:
encoder : Lavc59.1.102 pcm_s16le
size= 16kB time=00:00:00.09 bitrate=1417.9kbits/s speed=11.8x
video:0kB audio:16kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.476074%
$ ./ffmpeg_with_fix_g -i flac_decode_bug.flac
flac_decode_bug.flac.ffmpeg_with_fix.wav
ffmpeg version N-102781-g05f9b3a0a5 Copyright (c) 2000-2021 the FFmpeg
developers
built with gcc 10.2.1 (Alpine 10.2.1_pre1) 20201203
configuration: --enable-debug --disable-optimizations
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 1.102 / 59. 1.102
libavformat 59. 3.101 / 59. 3.101
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.102 / 8. 0.102
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
Input #0, flac, from 'flac_decode_bug.flac':
Duration: 00:00:00.09, bitrate: 1061 kb/s
Stream #0:0: Audio: flac, 44100 Hz, stereo, s32 (16 bit)
Stream mapping:
Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'flac_decode_bug.flac.ffmpeg_with_fix.wav':
Metadata:
ISFT : Lavf59.3.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo,
s16, 1411 kb/s
Metadata:
encoder : Lavc59.1.102 pcm_s16le
size= 16kB time=00:00:00.09 bitrate=1417.9kbits/s speed=18.3x
video:0kB audio:16kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.476074%
$ ./ffmpeg_g -i flac_decode_bug.flac.ref.wav -f s16le
flac_decode_bug.flac.ref.wav.pcm
$ ./ffmpeg_g -i flac_decode_bug.flac.ffmpeg.wav -f s16le
flac_decode_bug.flac.ffmpeg.wav.pcm
$ ./ffmpeg_g -i flac_decode_bug.flac.ffmpeg_with_fix.wav -f s16le
flac_decode_bug.flac.ffmpeg_with_fix.wav.pcm
$ md5sum *.pcm
d1076c476bcd12c1d6944d0e19c60000 flac_decode_bug.flac.ffmpeg.wav.pcm
e5ca6f718f932e3a95461bd7dc690829
flac_decode_bug.flac.ffmpeg_with_fix.wav.pcm
e5ca6f718f932e3a95461bd7dc690829 flac_decode_bug.flac.ref.wav.pcm
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9297>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".