Opened 12 years ago
Closed 10 years ago
#2768 closed defect (fixed)
ALAC encoder is not lossless with 24-bit samples
Reported by: | Leigh Dyer | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avcodec |
Version: | git-master | Keywords: | alac |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Hi,
When converting 24-bit audio to ALAC using ffmpeg git, the output is not lossless. Examining the decoded ALAC alongside the source file in Audacity shows that the ALAC is phase inverted; mixing the ALAC and the source together reveals some smaller errors, too.
I've tried with a few 24-bit files, and had the same happen in each case. As an example, this file (a 24-bit FLAC of audio from the Musopen project, in the public domain) exhibits the problem:
http://wootangent.net/~lsd/blah/figaro.flac
Encoder command line, output, and CRC comparisons with the source are as follows:
lsd@cletus:~/projects/alac/ffmpeg$ ./ffmpeg -i figaro.flac -acodec alac -f ipod figaro.m4a ffmpeg version N-54600-g09f59d6 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 10 2013 10:15:49 with gcc 4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1) configuration: libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 Input #0, flac, from 'figaro.flac': Metadata: MAJOR_BRAND : M4A MINOR_VERSION : 0 COMPATIBLE_BRANDS: M4A mp42isom CREATION_TIME : 1904-01-22 23:03:39 COMPOSER : Wolfgang Amadeus Mozart GENRE : Classical ARTIST : Czech National Symphony Orchestra album_artist : Czech National Symphony Orchestra ALBUM : Musopen Kickstarter Project ENCODER : Lavf54.20.0 Duration: 00:04:01.00, bitrate: 1462 kb/s Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 Output #0, ipod, to 'figaro.m4a': Metadata: MAJOR_BRAND : M4A MINOR_VERSION : 0 COMPATIBLE_BRANDS: M4A mp42isom ALBUM : Musopen Kickstarter Project COMPOSER : Wolfgang Amadeus Mozart GENRE : Classical ARTIST : Czech National Symphony Orchestra album_artist : Czech National Symphony Orchestra encoder : Lavf55.12.100 Stream #0:0: Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s32p, 128 kb/s Stream mapping: Stream #0:0 -> #0:0 (flac -> alac) Press [q] to stop, [?] for help size= 44225kB time=00:04:01.06 bitrate=1502.9kbits/s video:0kB audio:44213kB subtitle:0 global headers:0kB muxing overhead 0.028529% lsd@cletus:~/projects/alac/ffmpeg$ ./ffmpeg -i figaro.flac -f crc - 2>/dev/null CRC=0xe162a58b lsd@cletus:~/projects/alac/ffmpeg$ ./ffmpeg -i figaro.m4a -f crc - 2>/dev/null CRC=0x40b1090b
Change History (2)
comment:1 by , 12 years ago
Reproduced by developer: | set |
---|---|
Status: | new → open |
comment:2 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Fixed by Christophe Gisquet in 96d21783
Workaround is to use
-compression_level 0
tiny_psnr reports a MAXDIFF of 1 for s16 and 1020 for f32.