Commit f3968d65 authored by Damien Fouilleul's avatar Damien Fouilleul

libvlc/control: make sure aout is active before attempting to use channels

parent a5e5d59b
...@@ -217,11 +217,15 @@ int libvlc_audio_get_channel( libvlc_instance_t *p_instance, ...@@ -217,11 +217,15 @@ int libvlc_audio_get_channel( libvlc_instance_t *p_instance,
libvlc_exception_t *p_e ) libvlc_exception_t *p_e )
{ {
aout_instance_t *p_aout = GetAOut( p_instance, p_e ); aout_instance_t *p_aout = GetAOut( p_instance, p_e );
vlc_value_t val; if( p_aout )
{
vlc_value_t val;
var_Get( p_aout, "audio-channels", &val ); var_Get( p_aout, "audio-channels", &val );
vlc_object_release( p_aout ); vlc_object_release( p_aout );
return val.i_int; return val.i_int;
}
return -1;
} }
/***************************************************************************** /*****************************************************************************
...@@ -231,29 +235,32 @@ void libvlc_audio_set_channel( libvlc_instance_t *p_instance, int i_channel, ...@@ -231,29 +235,32 @@ void libvlc_audio_set_channel( libvlc_instance_t *p_instance, int i_channel,
libvlc_exception_t *p_e ) libvlc_exception_t *p_e )
{ {
aout_instance_t *p_aout = GetAOut( p_instance, p_e ); aout_instance_t *p_aout = GetAOut( p_instance, p_e );
vlc_value_t val; if( p_aout )
int i_ret = -1;
val.i_int = i_channel;
switch( i_channel )
{ {
case AOUT_VAR_CHAN_RSTEREO: vlc_value_t val;
case AOUT_VAR_CHAN_STEREO: int i_ret = -1;
case AOUT_VAR_CHAN_LEFT:
case AOUT_VAR_CHAN_RIGHT: val.i_int = i_channel;
case AOUT_VAR_CHAN_DOLBYS: switch( i_channel )
i_ret = var_Set( p_aout, "audio-channels", val ); {
if( i_ret < 0 ) case AOUT_VAR_CHAN_RSTEREO:
{ case AOUT_VAR_CHAN_STEREO:
libvlc_exception_raise( p_e, "Failed setting audio channel" ); case AOUT_VAR_CHAN_LEFT:
case AOUT_VAR_CHAN_RIGHT:
case AOUT_VAR_CHAN_DOLBYS:
i_ret = var_Set( p_aout, "audio-channels", val );
if( i_ret < 0 )
{
libvlc_exception_raise( p_e, "Failed setting audio channel" );
vlc_object_release( p_aout );
return;
}
vlc_object_release( p_aout ); vlc_object_release( p_aout );
return; return; /* Found */
} default:
vlc_object_release( p_aout ); libvlc_exception_raise( p_e, "Audio channel out of range" );
return; /* Found */ break;
default: }
libvlc_exception_raise( p_e, "Audio channel out of range" ); vlc_object_release( p_aout );
break;
} }
vlc_object_release( p_aout );
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment