From b3262f7b55fc377f842bec243702fe9106168553 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 14 Jan 2010 21:24:59 +0100 Subject: vorbis: support the recently defined 6.1 and 7.1 modes of vorbis --- src/read-vorbis.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/read-vorbis.c b/src/read-vorbis.c index 93dcbca..fb2150a 100644 --- a/src/read-vorbis.c +++ b/src/read-vorbis.c @@ -35,7 +35,7 @@ struct ca_vorbis { OggVorbis_File ovf; off_t size; - ca_channel_position_t channel_map[6]; + ca_channel_position_t channel_map[8]; }; static int convert_error(int or) { @@ -136,6 +136,26 @@ const ca_channel_position_t* ca_vorbis_get_channel_map(ca_vorbis *v) { /* See http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9 */ switch (ca_vorbis_get_nchannels(v)) { + case 8: + v->channel_map[0] = CA_CHANNEL_FRONT_LEFT; + v->channel_map[1] = CA_CHANNEL_FRONT_CENTER; + v->channel_map[2] = CA_CHANNEL_FRONT_RIGHT; + v->channel_map[3] = CA_CHANNEL_SIDE_LEFT; + v->channel_map[4] = CA_CHANNEL_SIDE_RIGHT; + v->channel_map[5] = CA_CHANNEL_REAR_LEFT; + v->channel_map[6] = CA_CHANNEL_REAR_RIGHT; + v->channel_map[7] = CA_CHANNEL_LFE; + return v->channel_map; + + case 7: + v->channel_map[0] = CA_CHANNEL_FRONT_LEFT; + v->channel_map[1] = CA_CHANNEL_FRONT_CENTER; + v->channel_map[2] = CA_CHANNEL_FRONT_RIGHT; + v->channel_map[3] = CA_CHANNEL_SIDE_LEFT; + v->channel_map[4] = CA_CHANNEL_SIDE_RIGHT; + v->channel_map[5] = CA_CHANNEL_REAR_CENTER; + v->channel_map[6] = CA_CHANNEL_LFE; + return v->channel_map; case 6: v->channel_map[5] = CA_CHANNEL_LFE; -- cgit