]> git.sesse.net Git - vlc/commitdiff
Add Hotkey to cycle through audio devices
authorDylan <dyudaken@gmail.com>
Mon, 24 Mar 2008 12:26:50 +0000 (14:26 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 27 Mar 2008 06:20:32 +0000 (23:20 -0700)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc_keys.h
modules/control/hotkeys.c
src/libvlc-module.c

index cce28fcc5df89443e0d0dd30596cc90c8c9d253f..bbc3c1a1da76f910f99dacbe4e4b56fd86c9209a 100644 (file)
@@ -334,5 +334,6 @@ static inline int StringToKey( char *psz_key )
 #define ACTIONID_ZOOM_HALF             93
 #define ACTIONID_ZOOM_ORIGINAL         94
 #define ACTIONID_ZOOM_DOUBLE           95
-
+/* Cycle Through Audio Devices */
+#define ACTIONID_AUDIODEVICE_CYCLE     96
 #endif
index 23242a4228581c836a32366f24c44d3e567f062a..eb0f0ae0eb6f9df3d9534b6c0dcf7499c3bdb595 100644 (file)
@@ -504,6 +504,54 @@ static void Run( intf_thread_t *p_intf )
                                  _("Audio track: %s"),
                                  list2.p_list->p_values[i].psz_string );
             }
+            else if( i_action == ACTIONID_AUDIODEVICE_CYCLE && p_vout)
+            {
+                vlc_value_t val, list, list2;
+                int i_count, i;
+                aout_instance_t *p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE );
+                var_Get( p_aout, "audio-device", &val );
+                var_Change( p_aout, "audio-device", VLC_VAR_GETCHOICES,&list, &list2 );
+                i_count = list.p_list->i_count;
+                if( i_count <= 1 )
+                {
+                    continue;
+                }
+                for( i = 1; i < i_count; i )
+                {
+                    if( val.i_int == list.p_list->p_values[i].i_int )
+                    {
+                        break;
+                    }
+                }
+                if( i == i_count )
+                {
+                    msg_Warn( p_aout,
+                              "invalid current audio device, selecting 0" );
+                    var_Set( p_aout, "audio-device",
+                             list.p_list->p_values[1] );
+                    i = 1;
+           
+                }
+                else if( i == i_count -1 )
+                {
+                    var_Set( p_aout, "audio-device",
+                             list.p_list->p_values[0] );
+                    i = 0;
+           
+                }
+                else
+                {
+                    var_Set( p_aout, "audio-device",
+                             list.p_list->p_values[i1] );
+                    i;
+        
+                }
+                vout_OSDMessage( VLC_OBJECT(p_input), 
+                                 DEFAULT_CHAN,
+                                 _("Audio Device: %s"),
+                                 list2.p_list->p_values[i].psz_string );
+       
+            }
             else if( i_action == ACTIONID_SUBTITLE_TRACK )
             {
                 vlc_value_t val, list, list2;
index 90e668bb5e47cda2321d8d044522c6027257f0f1..efb8c13566a7997cfff525fb0d3a68d8fd4c1508 100644 (file)
@@ -1356,6 +1356,8 @@ static const char *ppsz_pltree_descriptions[] = { N_("Default"), N_("Always"), N
 #define MENU_SELECT_KEY_LONGTEXT N_( \
         "Selecting current widget performs the associated action.")
 
+#define AUDI_DEVICE_CYCLE_KEY_TEXT N_("Cycle through audio devices")
+#define AUDI_DEVICE_CYCLE_KEY_LONGTEXT N_("Cycle through available audio devices")
 const char vlc_usage[] = N_(
     "Usage: %s [options] [stream] ..."
     "\nYou can specify multiple streams on the commandline. They will be enqueued in the playlist."
@@ -2192,6 +2194,7 @@ vlc_module_begin();
 #   define KEY_MENU_UP            KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_UP
 #   define KEY_MENU_DOWN          KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_DOWN
 #   define KEY_MENU_SELECT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_ENTER
+#   define KEY_AUDIODEVICE_CYCLE  KEY_MODIFIER_ALT|'a'
 #endif
 
     add_key( "key-toggle-fullscreen", KEY_TOGGLE_FULLSCREEN, NULL, TOGGLE_FULLSCREEN_KEY_TEXT,
@@ -2272,6 +2275,8 @@ vlc_module_begin();
              AUDIODELAY_DOWN_KEY_TEXT, AUDIODELAY_DOWN_KEY_LONGTEXT, VLC_TRUE );
     add_key( "key-audio-track", KEY_AUDIO_TRACK, NULL, AUDIO_TRACK_KEY_TEXT,
              AUDIO_TRACK_KEY_LONGTEXT, VLC_FALSE );
+    add_key( "key-audiodevice-cycle", KEY_STOP, NULL, AUDI_DEVICE_CYCLE_KEY_TEXT,
+             AUDI_DEVICE_CYCLE_KEY_LONGTEXT, VLC_FALSE );
     add_key( "key-subtitle-track", KEY_SUBTITLE_TRACK, NULL,
              SUBTITLE_TRACK_KEY_TEXT, SUBTITLE_TRACK_KEY_LONGTEXT, VLC_FALSE );
     add_key( "key-aspect-ratio", KEY_ASPECT_RATIO, NULL,
@@ -2605,6 +2610,7 @@ const struct hotkey libvlc_hotkeys[] =
     { "key-menu-up", ACTIONID_MENU_UP, 0, 0, 0, 0 },
     { "key-menu-down", ACTIONID_MENU_DOWN, 0, 0, 0, 0 },
     { "key-menu-select", ACTIONID_MENU_SELECT, 0, 0, 0, 0 },
+    { "key-audiodevice-cycle", ACTIONID_AUDIODEVICE_CYCLE, 0, 0, 0, 0 },
     { NULL, 0, 0, 0, 0, 0 }
 };