]> git.sesse.net Git - vlc/commitdiff
Fix FLAC 7.1 support
authorJean-Baptiste Kempf <jb@videolan.org>
Fri, 26 Feb 2010 12:24:05 +0000 (13:24 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 26 Feb 2010 20:03:04 +0000 (21:03 +0100)
Close #3348

modules/codec/flac.c
modules/packetizer/flac.c

index f35a1dbed0323ae6d95e182e7f499a8d6d07296d..837b75f7ad6622d42cfd02dcfb10074680caed88 100644 (file)
@@ -64,7 +64,7 @@ struct decoder_sys_t
     bool b_stream_info;
 };
 
-static const int pi_channels_maps[7] =
+static const int pi_channels_maps[9] =
 {
     0,
     AOUT_CHAN_CENTER,
@@ -75,7 +75,13 @@ static const int pi_channels_maps[7] =
     AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
      | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT,
     AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
-     | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE
+     | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE,
+    AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
+     | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT | AOUT_CHAN_MIDDLELEFT
+     | AOUT_CHAN_MIDDLERIGHT,
+    AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT
+     | AOUT_CHAN_REARRIGHT | AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT
+     | AOUT_CHAN_LFE
 };
 
 /*****************************************************************************
@@ -334,8 +340,8 @@ DecoderWriteCallback( const FLAC__StreamDecoder *decoder,
         { 0, 1, 3, 4, 2 },
         { 0, 1, 4, 5, 2, 3 },
 
-        { 0, 1, 6, 2, 3, 4, 5 },    /* 7.0 Unspecified by flac */
-        { 0, 1, 6, 7, 2, 3, 4, 5 }, /* 7.1 Unspecified by flac */
+        { 0, 1, 6, 4, 5, 2, 3 },    /* 7.0 Unspecified by flac, but following SMPTE */
+        { 0, 1, 6, 7, 4, 5, 2, 3 }, /* 7.1 Unspecified by flac, but following SMPTE */
     };
 
     VLC_UNUSED(decoder);
index a1a3c3b2ad526219054864eb1717e765c8ffba57..e7c2c7e20e0974da2d385348842ba7dcb2233942 100644 (file)
@@ -206,7 +206,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block )
     if( !p_sys->b_stream_info )
         ProcessHeader( p_dec );
 
-    if( p_sys->stream_info.channels > 6 )
+    if( p_sys->stream_info.channels > 8 )
     {
         msg_Err( p_dec, "This stream uses too many audio channels" );
         return NULL;