[Flac-dev] FLAC subset
Josh Coalson
xflac at yahoo.com
Tue Aug 20 14:59:02 PDT 2002
All,
This mail is a survey to get some feedback about changes to the
FLAC Subset (see http://flac.sourceforge.net/format.html#subset).
FLAC hardware support is growing. The PhatBox was the first but
now there's the Rio Receiver, and FLAC is being worked into the
Audio ReQuest box, among others. Based on feedback from this
development I am contemplating restricting the subset a little
more.
The downside is that it's possible that people have generated
FLAC files according to the current subset definition that would
not be in the new subset definition. The upside is that this is
extremely unlikely (see below) and that the new subset would place
less demands on decoders that implement only the subset.
The changes I am thinking about are the following, and I note
the conditions under which an existing FLAC stream will 'break',
i.e. it was in the old subset and not new and so might not play
back on a newer subset decoder:
1. Limit the max Rice partition order in subset streams to 8.
The current limit is 15. This significantly reduces the
worst-case memory requirements on the decoder.
For this to 'break' an existing FLAC stream it must have
been encoded (via flac) with a -r value of > 8. None of
the -0 .. -8
options have ever exceeded -r 6 since flac 1.0,
so unless
you manually specify -r > 8 then the FLAC stream
will not
'break'.
2. Limit the max block size to 8192 or 16384 samples (I'm
leaning toward 16384 samples as tapers are starting to
use 96kHz). The current subset limit is 32768 samples.
For this to 'break' an existing FLAC stream it must have
been encoded (via flac) with a -b value of > 16384. None
of the -0 .. -8 options have ever exceeded -b 4608 since
flac 1.0.
3. Possibly limit the quantized linear predictor coefficient
precicion in a way that guarantees the inverse filter
requires only 32-bit math. This is currently the case for
16 bps but for 24 bps I would have to put an extra
restriction in place.
For this to 'break' an existing FLAC stream it must a
sample resolution >= 24 bits and have been encoded (via
flac) with -p or -q greater than 6 or so.
The bottom line is that if you use -0 .. -8 the streams would
still be in the new definition of the subset. I don't know
of any cases where people have strayed from -0 .. -8 but I
want to get more feedback before deciding on this. Has anyone
been using -r/-p/-q/-b this way? Would it be too disruptive to
restrict the subset now?
I should note that all hardware players currently use a
straight libFLAC which does the full format, but I don't
think they have tested their hardware against the memory
or processing demands of the full format (16bit 44.1kHz
stereo is the norm and pretty safe). My idea is to have
a subset so that up to 24bps/96kHz is feasible, finalize
it, and do a separate subset-only decoder, maybe under a
BSD license, that does no malloc and is more suitable to
hardware.
Josh
__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com
More information about the Flac-dev
mailing list