]> git.sesse.net Git - vlc/commitdiff
lib: reset the audio output when selecting amem or custom plugin
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 10 Mar 2014 17:18:43 +0000 (19:18 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 10 Mar 2014 17:19:04 +0000 (19:19 +0200)
lib/audio.c
lib/media_player.c

index 1b834d7b3e1850c11e2287dcab40b8ab49db81e4..51d3ff315c70addab6c4d8d817550ea2e4370d1a 100644 (file)
@@ -127,6 +127,15 @@ int libvlc_audio_output_set( libvlc_media_player_t *mp, const char *psz_name )
         return -1;
     var_SetString( mp, "aout", value );
     free( value );
+
+    /* Forget the existing audio output */
+    input_resource_ResetAout(mp->input.p_resource);
+
+    /* Create a new audio output */
+    audio_output_t *aout = input_resource_GetAout(mp->input.p_resource);
+    if( aout != NULL )
+        input_resource_PutAout(mp->input.p_resource, aout);
+
     return 0;
 }
 
index 868aefe627d816ba7e376f85c2cf78f287a22539..7df46f43423ba796d4797fc5c5f84158932e8c89 100644 (file)
@@ -988,12 +988,16 @@ void libvlc_audio_set_callbacks( libvlc_media_player_t *mp,
     var_SetAddress( mp, "amem-drain", drain_cb );
     var_SetAddress( mp, "amem-data", opaque );
     var_SetString( mp, "aout", "amem,none" );
+
+    input_resource_ResetAout(mp->input.p_resource);
 }
 
 void libvlc_audio_set_volume_callback( libvlc_media_player_t *mp,
                                        libvlc_audio_set_volume_cb cb )
 {
     var_SetAddress( mp, "amem-set-volume", cb );
+
+    input_resource_ResetAout(mp->input.p_resource);
 }
 
 void libvlc_audio_set_format_callbacks( libvlc_media_player_t *mp,
@@ -1002,6 +1006,8 @@ void libvlc_audio_set_format_callbacks( libvlc_media_player_t *mp,
 {
     var_SetAddress( mp, "amem-setup", setup );
     var_SetAddress( mp, "amem-cleanup", cleanup );
+
+    input_resource_ResetAout(mp->input.p_resource);
 }
 
 void libvlc_audio_set_format( libvlc_media_player_t *mp, const char *format,
@@ -1010,6 +1016,8 @@ void libvlc_audio_set_format( libvlc_media_player_t *mp, const char *format,
     var_SetString( mp, "amem-format", format );
     var_SetInteger( mp, "amem-rate", rate );
     var_SetInteger( mp, "amem-channels", channels );
+
+    input_resource_ResetAout(mp->input.p_resource);
 }