[vlc-devel] commit: Untested attempt to DirectAudio support for 7.1 system ( Kaarlo Raiha )

git version control git at videolan.org
Tue May 20 17:22:40 CEST 2008


vlc | branch: master | Kaarlo Raiha <kaarlo.raiha at tut.fi> | Tue Mar 25 23:07:14 2008 +0200| [2113d41e90575c54097871f53f2f5b28a4e90726]

Untested attempt to DirectAudio support for 7.1 system

(See also http://forum.videolan.org/viewtopic.php?f=7&t=42590).

Signed-off-by: Rémi Denis-Courmont <rem at videolan.org>

Squashed VLC_TRUE fix

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2113d41e90575c54097871f53f2f5b28a4e90726
---

 modules/audio_output/directx.c |   42 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/modules/audio_output/directx.c b/modules/audio_output/directx.c
index 86dd911..2dd86f9 100644
--- a/modules/audio_output/directx.c
+++ b/modules/audio_output/directx.c
@@ -85,6 +85,9 @@
 #   define SPEAKER_RESERVED               0x80000000
 #endif
 
+#ifndef DSSPEAKER_DSSPEAKER_DIRECTOUT
+#   define DSSPEAKER_DSSPEAKER_DIRECTOUT         0x00000000
+#endif
 #ifndef DSSPEAKER_HEADPHONE
 #   define DSSPEAKER_HEADPHONE         0x00000001
 #endif
@@ -103,6 +106,15 @@
 #ifndef DSSPEAKER_5POINT1
 #   define DSSPEAKER_5POINT1           0x00000006
 #endif
+#ifndef DSSPEAKER_7POINT1
+#   define DSSPEAKER_7POINT1           0x00000007
+#endif
+#ifndef DSSPEAKER_7POINT1_SURROUND
+#   define DSSPEAKER_7POINT1_SURROUND           0x00000008
+#endif
+#ifndef DSSPEAKER_7POINT1_WIDE
+#   define DSSPEAKER_7POINT1_WIDE           DSSPEAKER_7POINT1
+#endif
 
 #ifndef _WAVEFORMATEXTENSIBLE_
 typedef struct {
@@ -318,6 +330,14 @@ static int OpenAudio( vlc_object_t *p_this )
                    | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT
                    | AOUT_CHAN_LFE;
         }
+        else if( val.i_int == AOUT_VAR_7_1 )
+        {
+                    p_aout->output.output.i_physical_channels
+                        = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
+                           | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT
+                           | AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT
+                           | AOUT_CHAN_LFE;
+        }
         else if( val.i_int == AOUT_VAR_3F2R )
         {
             p_aout->output.output.i_physical_channels
@@ -421,6 +441,25 @@ static void Probe( aout_instance_t * p_aout )
         }
     }
 
+    /* Test for 7.1 support */
+    i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT |
+                             AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT |
+                             AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT |
+                             AOUT_CHAN_REARRIGHT | AOUT_CHAN_LFE;
+       if( p_aout->output.output.i_physical_channels == i_physical_channels )
+       {
+           if( CreateDSBufferPCM( p_aout, &i_format, i_physical_channels, 8,
+                                  p_aout->output.output.i_rate, true )
+               == VLC_SUCCESS )
+           {
+               val.i_int = AOUT_VAR_7_1;
+               text.psz_string = "7.1";
+               var_Change( p_aout, "audio-device",
+                           VLC_VAR_ADDCHOICE, &val, &text );
+               msg_Dbg( p_aout, "device supports 7.1 channels" );
+           }
+       }
+
     /* Test for 3 Front 2 Rear support */
     i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT |
                           AOUT_CHAN_CENTER | AOUT_CHAN_REARLEFT |
@@ -491,6 +530,9 @@ static void Probe( aout_instance_t * p_aout )
     }
     switch( DSSPEAKER_CONFIG(ui_speaker_config) )
     {
+    case DSSPEAKER_7POINT1:
+        val.i_int = AOUT_VAR_7_1;
+        break;
     case DSSPEAKER_5POINT1:
         val.i_int = AOUT_VAR_5_1;
         break;




More information about the vlc-devel mailing list