[Flac] Re: Welcome to the "Flac" mailing list
Brian Willoughby
brianw at sounds.wa.com
Thu Nov 1 16:39:37 PDT 2007
There is no such thing as "harmless extra bytes" in a .wav file.
RIFF/WAVE is defined as a series of chunks, and there is no header at
the beginning which indicates how many chunks to expect. A program
reading a .wav will see these 2 extra bytes as a "Chunk Type" and
that's why the confusion results. The program has no way of knowing
that it should stop before the "extra" data.
What people generally refer to in the literature as a .wav "header"
is really not a header at all. It is just another chunk, one which
can legally occur at more than one place in a WAV file, and it does
not even have a count of chunks. There are a great number of
programmers out there - even at prominent audio companies - who do
not understand the finer points of file format design, and the
situation is not helped by the poor availability of documentation on
RIFF/WAVE. As a result, there are too many programs out there which
create bad WAV files. The solution is to fix the bad programs and
not bloat the good programs.
If you really want to dig down deep into the details of RIFF/WAVE,
there is actually a meta-chunk at the very beginning of the file
which marks it as a RIFF file of subtype "WAVE" and this chunk length
usually includes the rest of the file chunks. All remaining chunks
are "inside" this meta-chunk. However, whether the extra two bytes
are within this first meta-chunk, or beyond the end of the meta-
chunk, it is still perfectly legal in each case for a chunk to
follow. In other words, the meta-chunk must be precisely filled with
whole chunks, not partials, and the meta-chunk must be followed by
whole chunks until the end of the file.
As Josh points out, adding extra code to FLAC to recover gracefully
when a chunk starts with bad data would just add needlessly to the
complexity of the code, and there would probably be a never-ending
list of ways in which bad WAV files could go wrong. It's quite
enough that FLAC supports the entire legal range of RIFF/WAVE files,
there's no need to take on the larger task of also support illegal
files. If you get a bad WAV file, use another program to fix it
first, then FLAC will be ready to support it. Actually, FLAC does
recover gracefully from these errors, it simply does not accept the
WAV as valid, because that would be a very dangerous assumption to
make in the face of an illegally-formatted file.
Brian Willoughby
Sound Consulting
On Nov 1, 2007, at 15:38, Martin Leese wrote:
"Alex Brims" <alex.brims at gmail.com> wrote:
> Ok, we actually worked this out - there were 2 extra bytes doing
> nothing at
> the end of the files. Opening the file in SoundForge and saving it
> (without
> changing it) took off the extra bytes and allowed the file to
> convert to
> FLAC.
>
> Thanks to everyone who emailed me suggestions.
>
> Is there a decent program for linux that could automatically take
> these
> bytes off, without running the risk of removing good data? Or is
> there a
> way to get the flac converter to ignore this error and create the
> file? I'm
> running flac 1.2.1 on Red Hat Enterprise Linux ES release 4.
I am butting in here, but if these extra bytes
are harmless then shouldn't this be a warning,
not an error?
I had a similar problem years ago with acoustic
data. The data files were mounted from a
computer running VMS using NFS. When
viewed on a UNIX machine, the files had extra
data after the (UNIX) logical end-of-file.
More information about the Flac
mailing list