]> git.sesse.net Git - vlc/blobdiff - modules/control/hotkeys.c
Add Hotkey to cycle through audio devices
[vlc] / modules / control / hotkeys.c
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;