[flac-dev] Tag flac as flac 1.2.1_git
Brian Willoughby
brianw at sounds.wa.com
Sat Jan 12 15:46:27 PST 2013
On Jan 12, 2013, at 14:28, Martijn van Beurden wrote:
> On 12-01-13 22:46, Brian Willoughby wrote:
>> I would suggest that everyone keep in mind the vast installed base of
>> hardware FLAC recorders and players, and not senselessly make them
>> obsolete without extremely compelling reasons.
>
> This can be done for the same reason the change from 1.1 to 1.2
> added a
> new form of residue coding: I don't believe there are many 7 or 8
> channel FLAC-players out there (just like there were not much 24-bit
> FLAC decoding devices out there when 1.2 came out). We still are at a
> point we can still make those changes.
The problem with your example is two-fold. First, residue coding
affects the actual compressed audio data, but channel mapping does
not. Second, there are 8-channel FLAC recorders out there, so it
would be incredibly destructive to break compatibility for no reason
at all.
> Josh made a decision at some point to map audio channels instead of
> storing the order in metadata. I think it was a sound decision because
> the channel order is known without the need for that piece of
> metadata,
> for example in case of streaming. It would be silly to keep this
> behaviour on currently defined channels and do something else on 7
> and 8
> channel audio.
It seems that you are imagining a decision on Josh's part without any
reason to believe so. The existing format has channel count and
channel combination attributes, not channel order variations. The
information that exists in the headers is not optional, so I don't
see how you've proven that Josh made any sort of decision here. The
headers simply must include this information in order to extract the
uncompressed audio channels.
In the METADATA_BLOCK_STREAMINFO, 7 bits are allocated for the
channel count. This limits the format to 8 channels in a single
stream. Nothing is implied about order or channel labels, and there
is no room to go beyond 8 channels without breaking compatibility.
In the FRAME_HEADER, 8 bits are allocated for the channel
interpretation. The first 8, codes 0 through 7, refer to independent
channels, where none of the channels affect any of the other
channels. Codes 8, 9, and 10 are variations of stereo where at least
one of the coded channels is a combination of multiple uncompressed
channels (side), if not both (10: mid/side). Codes 11 through 15 are
reserved. Although these channel formats include labels, none of them
is redundant in terms of coding the same format with different
channel names.
In other words, the FLAC format describes purely how to extract the
individual channels as audio data streams, without any possibility of
channel names or labels altering the format. It's merely a convention
that the multi-channel options mention a default channel order. There
is no reason to change the format just to change the labels for each
channel. There is no example yet of two FLAC files with the same
number of channels and the same data coding for those channels, but
which only differs in the labeling and output assignment of those
unaltered channels. If there were, then I'd say you have a case.
> We might try to find out how current 7.1 hardware decoders behave with
> regard to channel mapping.
Yes, that would be a great project.
DVD includes uncompressed PCM, Dolby Digital surround, and DTS
surround. It would be interesting to summarize the channel orders for
each of those. PCM is limited to stereo, though. I have DTS encoding
software, but have never paid attention to the channel order because
there is no option. They have altered DTS over the years to add
channels, but always in a backwards compatible manner so that new
media with additional channels can still be played by old hardware
that only understands fewer channels.
BluRay discs have even more audio formats, and it would be
interesting to see a report on channel orders for all of those
variations.
We have a different situation. If someone were suggesting that FLAC
be modified to support more than 8 channels, then I would understand
a format change and requisite version number change. But all we are
really talking about is keeping the channel counts the same, and the
raw compressed data, but with additional information on channel
labels that would facilitate patching the correct audio data to the
correct physical output wire for analog audio (or maybe digital).
Let me put this another way: Can you make a stronger case for why we
should NOT create a standard meta data chunk for channel labels?
The existing changes that have been proposed do nothing to change the
bit stream itself. The only difference is a change from 7 or 8
unspecified channels of audio to 7 or 8, respective, channels of
audio with specific labels. That is a change in human interpretation,
not a change in how the bits are decoded. The same 7 or 8 channels of
audio data are still created exactly the same. There is no reason to
even revise the version number for this, beyond simply revving to
1.2.2 as would happen anyway.
A more useful addition would be a standard meta data chunk that could
expand beyond the existing channel count variations. For example, 4-
channel FLAC could be marked to distinguish L/R/BL/BR (default) from
L/R/C/S (another very common arrangement). 5.1 FLAC could be marked
to distinguish alternate orders, assuming we find prevalent formats
in the field that have an order different from L/R/C/LFE/SL/SR. And
the 7 and 8-channel FLACs could be marked to define the channel order.
In the professional world of surround, there are standards for
shipping around 8-track digital tapes of 5.1+stereo or 7.1 masters,
and there is simply a convention for the channel order that is
written down and documented. This is nothing more than meta data.
It's appropriate to formalize a way of storing this meta data in the
FLAC using the existing extension chunks that have been part of the
standard since the beginning.
Brian Willoughby
Sound Consulting
p.s. Note that the addition of meta data chunks to support non-audio
WAVE and AIFF chunks in a FLAC archive using the application block
types of 'riff' and 'aiff' respectively. As far as I recall, the FLAC
format revision was not bumped when this support was added, even
though it was a massive feature.
More information about the flac-dev
mailing list