[ogg-dev] finalizing oggpcm channel maps

Sampo Syreeni decoy at iki.fi
Tue Oct 2 08:11:48 PDT 2007

In November 2005 the discussion on OggPCM2 died down before we got 
around to finalizing the channel map. I thought it would be a good time 
to resurrect the topic. The previous threads are at 
http://lists.xiph.org/pipermail/ogg-dev/2005-November/000097.html and 
http://lists.xiph.org/pipermail/ogg-dev/2005-November/000168.html .

In draft 2 of the spec, there are two types of channel maps: a mapping 
header for the primary semantics of the channels, and a conversion 
header which e.g. allows multichannel files to be mixed down into 
stereo. The mapping header contains a channel type, for example 
"stereo", and physical-logical channel pairs, for instance "1st channel 
is interpreted as the left stereo channel". The logical channel 
names/constants are shared across channel types, which makes the channel 
type largely redundant. The conversion header is similar, except it 
contains a full physical times logical channels mixing matrix in 
addition to the channel type field.

Earlier I suggested it would make sense to rephrase the document, so 
that the two map types would be interpreted simply as a simple and a 
complex version of a single header, and to allow an arbitrary number of 
each kind of header in decreasing preferential order, so that 
compatibility codings (like Dolby MP and Ambisonic UHJ) could be made to 
work. I also think there shouldn't be redundancy in the headers, which 
implies that the physical-logical pairs perhaps should be simplified 
into a list which gives the channel semantics either 1) per physical 
channel or 2) per logical channel. I suggested the latter because IMO it 
leaves the least room for nonsensical mappings, it makes it easy not to 
map a given physical channel, and it also uniquely fixes the sizes of 
the lists/matrices stored in the headers per map type. It doesn't allow 
mixed system operation (like B-format plus a stereo pair), though.

Also, the channel type probably ought to be normalized, either by 
dropping it and keeping with a common list of logical channel types 
(which would include channel types from all of the supported systems, 
like Dolby, Ambisonic, discrete multichannel and so on), or 
alternatively by defining the channel names by channel map type (i.e. 
only ambisonic logical channels would be defined for an ambisonic 
channel map). I suggested the latter, but again the former organization 
also has its merits for mixed system operation in the absence of Ogg 

Finally, one open point about the spec is whether the channel semantics 
ought to be defaulted in the absence of mapping headers. Defaulting 
would allow current, headerless OggPCM2 streams to be interpreted as 
mono, stereo and Ambisonic B-format, depending on the number of channels 
stored. After last time's discussion, I've come to think defaulting 
isn't such a good idea. If/when OggPCM2 is used e.g. inside the Ogg 
framework to carry sound data which doesn't possess an interpretation in 
terms of any of the common transfer formats, it should be possible to 
unambiguously say so. Also, formats like RIFF WAVE allow for generic, 
unmapped channels, so emulating their functionality calls for unmapped 
channels which would conflict with the defaults. So, if defaulting is 
used, I think the channel type list should include an undefined channel 
type for this purpose.

The above are meant as discussion points. If we can develop a consensus 
this time, I'm willing to edit the document, dig up a representative 
list of channel types for the enumerations, put in some context about 
the different choices we've made, and so on.
Sampo Syreeni, aka decoy - mailto:decoy at iki.fi, tel:+358-50-5756111
student/math+cs/helsinki university, http://www.iki.fi/~decoy/front
openpgp: 050985C2/025E D175 ABE5 027C 9494 EEB0 E090 8BA9 0509 85C2

More information about the ogg-dev mailing list