[FFmpeg-trac] #4426(undetermined:new): RIFF WAVE 24-bit WAVE_FORMAT_PCM files are not properly supported
FFmpeg
trac at avcodec.org
Sat Apr 4 09:28:59 CEST 2015
#4426: RIFF WAVE 24-bit WAVE_FORMAT_PCM files are not properly supported
-------------------------------------+-------------------------------------
Reporter: rsn10100 | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: wav | Blocked By:
WAVEFORMATEX WAVE_FORMAT_PCM | Reproduced by developer: 0
output 24bit |
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
**Summary of the bug:**
When converting 24-bit audio to a wav format it is down converted to
16-bit by default. You can force to output a WAVEFORMATEXTENSIBLE format
with -acodec pcm_s24le but some older software does not support the
extensible format.
I believe this down conversion is being done because of a rumor that the
original spec did not allow for 24-bit files. I have looked through the
August 1991 specification and although it never specifically mentions
24-bit it does state the following:
>Each sample is contained in an integer i. The size of i is the smallest
number of bytes required to contain the specified sample size.
>
It goes on and then gives a few examples, one of which mentions a
WAVE_FORMAT_PCM 20-bit format.
>Example of a PCM WAVE file with 44.1 kHz sampling rate, mono, 20 bits per
sample:
>
>RIFF( 'WAVE' INFO(INAM("O Canada"Z))
>fmt(1, 1, 44100, 132300, 3, 20)
>data( <wave-data> ) )
That is a WAVE_FORMAT_PCM(0x0001), 1 channel, 44.1KHz, 132300 bytes per
second, 3 bytes per sample, 24-bit wave file with 20 valid bits...
This would indicate that 24-bit WAVE_FORMAT_PCM files are supported by the
format and should be valid in conversions. Many applications also encode
and decode this format, which is why I'm filing a bug here.
**Source:** http://www-
mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf
**The expected result:** A 24-bit WAVE_FORMAT_PCM file should be created
by default when the input format is 24-bit and the output format is wav.
**How to reproduce:**
{{{
% ffmpeg -f s24le -ar 44100 -ac 1 -i in.pcm out.wav
ffmpeg version N-71209-gd759844 Copyright (c) 2000-2015 the FFmpeg
developers
built with gcc 4.9.2 (GCC)
configuration: --disable-static --enable-shared --enable-gpl --enable-
version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-
fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass
--enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec
--enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc
--enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex
--enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-
aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxavs --enable-libxvid --enable-lzma --enable-decklink
--enable-zlib}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4426>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list