Re: ExtAudioFile 4GB file size limitation on WAV files
Re: ExtAudioFile 4GB file size limitation on WAV files
- Subject: Re: ExtAudioFile 4GB file size limitation on WAV files
- From: Richard Dobson <email@hidden>
- Date: Sat, 30 Apr 2011 15:26:47 +0100
On 30/04/2011 13:43, Paul Davis wrote:
Note that even 24bit WAVE is now beyond the original WAVE specification - it
has to be in WAVEFORMATEXTENSIBLE format. Perhaps that is what you meant by
"an extension"? - but it is still limited to 32bit sizes, and hence to the
4GB limit.
actually, there's nothing about the RIFF/WAVE spec that prevents one
from creating 24bit or even 32 bit (integer or float) WAVE files, but
for some reason microsoft decreed that such formats were not
officially conformant,
There were problems; some implementors were storing 24bit data in 32bit
containers, with no consistency on whether they were left or right
aligned; and there were similar but more subtle issues such as how to
play/store 20bit Alesis/ADAT audio. These issues apply equally to
hardware streaming and to file storage. The WAVE format is basically the
same as the streaming format for the MME etc APIs. Unlike AIFF (where
the header data can come after the audio data), WAVE is a full
"streaming" audio format with which to address hardware; the file is
simply the 'serialized' record of the stream format. So the file format
follows and reflects the hardware streaming format.
The primary reason for WAVEFORMATEXTENSIBLE was to eliminate this new
set of emergent ambiguities for "odd" and other non byte-integral word
sizes. They took the opportunity at the same time to define a base level
of multi-channel ordering; without which it would have been difficult,
at the very least, for manufacturers to produce 5.1 (etc) hardware where
all files played on any machine through any card would write to the
correct speakers.
There was quite a long interregnum period, after the introduction of
Windows2000, when both "old" and "new" 24bit files were accepted, but
~eventually~ the door was closed. One exception was indeed the "type-3"
23bit floats format (pioneered by Sonic Foundry and accepted by M$),
which remains accepted to this day. I agree the restriction on 24bit
data is/was inconvenient, but developers are supposed/expected to keep
tabs on such things and update their code accordingly! The spectacle of
programmers in 2011 wishing they could still use a 30-year old file
format for purposes for which it was manifestly not designed, is still
somewhat surprising to me. I think it must be some strange sense of
nostalgia. A bit like wanting people to load programs from a cassette.
And WAVEFORMATEXTENISBLE is not exactly complicated!
Part of the problem is also the huge amount of bad information on the
net about the WAVE format. Hardly any of those authors has thought to
update their pages. It took the AES and EBU a spectacularly long time to
"discover" WAVEFORMATEXTENSIBLE - and then they go and abuse it with
RF64 (which kind of makes the point - if people ~can~ abuse a file
format they will). Rather a lot of developers (especially on Linux, for
some reason!) think WAVE has a fixed-length header! So when many people
talk about "the WAVE format", a lot of the time they have in mind a
random mashup of incorrect and incomplete information.
Richard Dobson
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden