At Tue, 11 Sep 2012 14:24:09 +0200, Takashi Iwai wrote:
At Tue, 11 Sep 2012 14:19:49 +0200, Clemens Ladisch wrote:
Takashi Iwai wrote:
BTW, this reminds me of an open question: is it useful to add SND_CHMAP_MONO, or is it just redundant?
It's nothing but indicating a mono channel without any channel position, so I supposed SND_CHMAP_UNKNOWN being sufficient. OTOH, SND_CHMAP_MONO would give a clear sign of mono streams while SND_CHMAP_UNKNOWN could be used for any other exceptional purposes.
What would it be used for?
Labeling surround channels is necessary for reordering them or for doing up/downmixing. A "mono" channel, however, does not appear to have any semantic difference from a single "unknown" channel.
Right, that's the current status. OTOH, labeling it as "mono" makes clear that it's an unaligned mono stream. i.e. it shows the purpose of the stream by itself.
Looking at PulseAudio and gstreamer codes, they seem to have explicit MONO channel definition.
typedef enum pa_channel_position { PA_CHANNEL_POSITION_INVALID = -1, PA_CHANNEL_POSITION_MONO = 0, ....
typedef enum { GST_AUDIO_CHANNEL_POSITION_INVALID = -1,
/* Main front speakers. Mono and left/right are mututally exclusive! */ GST_AUDIO_CHANNEL_POSITION_FRONT_MONO, ....
So, defining MONO seems rather standard. Now I'm inclined to define SND_CHMAP_MONO...
Takashi