X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Faudio.c;h=89ee0a76bc77d1aa1ae319562f491f51e89e3d67;hb=86997e006e2e08c1aaaf4b68408f7dbe5a4a21ed;hp=fb96b70b087a06a4b99f65a462b32b1989439586;hpb=ad77d955a5dc051976d94d6e08ee0f717ec3a938;p=vlc diff --git a/src/control/audio.c b/src/control/audio.c index fb96b70b08..89ee0a76bc 100644 --- a/src/control/audio.c +++ b/src/control/audio.c @@ -52,7 +52,8 @@ static aout_instance_t *GetAOut( libvlc_instance_t *p_instance, p_aout = vlc_object_find( p_instance->p_libvlc_int, VLC_OBJECT_AOUT, FIND_CHILD ); if( !p_aout ) { - libvlc_exception_raise( p_exception, "No active audio output" ); + libvlc_exception_raise( p_exception ); + libvlc_printerr( "No active audio output" ); return NULL; } @@ -62,7 +63,7 @@ static aout_instance_t *GetAOut( libvlc_instance_t *p_instance, /***************************************** * Get the list of available audio outputs *****************************************/ -VLC_PUBLIC_API libvlc_audio_output_t * +libvlc_audio_output_t * libvlc_audio_output_list_get( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) { @@ -84,7 +85,8 @@ VLC_PUBLIC_API libvlc_audio_output_t * malloc( sizeof( libvlc_audio_output_t ) ); if( p_actual == NULL ) { - libvlc_exception_raise( p_e, "Not enough memory" ); + libvlc_exception_raise( p_e ); + libvlc_printerr( "Not enough memory" ); libvlc_audio_output_list_release( p_list ); module_list_free( module_list ); return NULL; @@ -113,7 +115,7 @@ VLC_PUBLIC_API libvlc_audio_output_t * /******************************************** * Free the list of available audio outputs ***********************************************/ -VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t *p_list ) +void libvlc_audio_output_list_release( libvlc_audio_output_t *p_list ) { libvlc_audio_output_t *p_actual, *p_before; p_actual = p_list; @@ -132,7 +134,7 @@ VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t *p_l /*********************** * Set the audio output. ***********************/ -VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *p_instance, +int libvlc_audio_output_set( libvlc_instance_t *p_instance, const char *psz_name ) { if( module_exists( psz_name ) ) @@ -150,7 +152,7 @@ VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *p_instance, int libvlc_audio_output_device_count( libvlc_instance_t *p_instance, const char *psz_audio_output ) { - char *psz_config_name = NULL; + char *psz_config_name; if( !psz_audio_output ) return 0; if( asprintf( &psz_config_name, "%s-audio-device", psz_audio_output ) == -1 ) @@ -171,10 +173,8 @@ int libvlc_audio_output_device_count( libvlc_instance_t *p_instance, return p_module_config->i_list; } - else - free( psz_config_name ); - + free( psz_config_name ); return 0; } @@ -185,7 +185,7 @@ char * libvlc_audio_output_device_longname( libvlc_instance_t *p_instance, const char *psz_audio_output, int i_device ) { - char *psz_config_name = NULL; + char *psz_config_name; if( !psz_audio_output ) return NULL; if( asprintf( &psz_config_name, "%s-audio-device", psz_audio_output ) == -1 ) @@ -216,9 +216,8 @@ char * libvlc_audio_output_device_longname( libvlc_instance_t *p_instance, return strdup( p_module_config->ppsz_list[i_device] ); } } - else - free( psz_config_name ); + free( psz_config_name ); return NULL; } @@ -229,7 +228,7 @@ char * libvlc_audio_output_device_id( libvlc_instance_t *p_instance, const char *psz_audio_output, int i_device ) { - char *psz_config_name = NULL; + char *psz_config_name; if( !psz_audio_output ) return NULL; if( asprintf( &psz_config_name, "%s-audio-device", psz_audio_output ) == -1) @@ -256,16 +255,15 @@ char * libvlc_audio_output_device_id( libvlc_instance_t *p_instance, return strdup( p_module_config->ppsz_list[i_device] ); } - else - free( psz_config_name ); + free( psz_config_name ); return NULL; } /***************************** * Set device for using *****************************/ -VLC_PUBLIC_API void libvlc_audio_output_device_set( libvlc_instance_t *p_instance, +void libvlc_audio_output_device_set( libvlc_instance_t *p_instance, const char *psz_audio_output, const char *psz_device_id ) { @@ -287,13 +285,10 @@ int libvlc_audio_output_get_device_type( libvlc_instance_t *p_instance, aout_instance_t *p_aout = GetAOut( p_instance, p_e ); if( p_aout ) { - vlc_value_t val; - - var_Get( p_aout, "audio-device", &val ); + int i_device_type = var_GetInteger( p_aout, "audio-device" ); vlc_object_release( p_aout ); - return val.i_int; + return i_device_type; } - libvlc_exception_raise( p_e, "Unable to get audio output" ); return libvlc_AudioOutputDevice_Error; } @@ -305,12 +300,14 @@ void libvlc_audio_output_set_device_type( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) { aout_instance_t *p_aout = GetAOut( p_instance, p_e ); - if( p_aout ) + if( !p_aout ) + return; + if( var_SetInteger( p_aout, "audio-device", device_type ) < 0 ) { - if( var_SetInteger( p_aout, "audio-device", device_type ) < 0 ) - libvlc_exception_raise( p_e, "Failed setting audio device" ); - vlc_object_release( p_aout ); + libvlc_exception_raise( p_e ); + libvlc_printerr( "Error setting audio device" ); } + vlc_object_release( p_aout ); } /***************************************************************************** @@ -321,7 +318,7 @@ void libvlc_audio_toggle_mute( libvlc_instance_t *p_instance, { VLC_UNUSED(p_e); - aout_VolumeMute( p_instance->p_libvlc_int, NULL ); + aout_ToggleMute( p_instance->p_libvlc_int, NULL ); } int libvlc_audio_get_mute( libvlc_instance_t *p_instance, @@ -335,7 +332,7 @@ void libvlc_audio_set_mute( libvlc_instance_t *p_instance, int mute, { if ( mute ^ libvlc_audio_get_mute( p_instance, p_e ) ) { - aout_VolumeMute( p_instance->p_libvlc_int, NULL ); + aout_ToggleMute( p_instance->p_libvlc_int, NULL ); } } @@ -369,7 +366,8 @@ void libvlc_audio_set_volume( libvlc_instance_t *p_instance, int i_volume, } else { - libvlc_exception_raise( p_e, "Volume out of range" ); + libvlc_exception_raise( p_e ); + libvlc_printerr( "Volume out of range" ); } } @@ -420,8 +418,9 @@ int libvlc_audio_get_track( libvlc_media_player_t *p_mi, i_ret = var_Get( p_input_thread, "audio-es", &val ); if( i_ret < 0 ) { - libvlc_exception_raise( p_e, "Getting Audio track information failed" ); vlc_object_release( p_input_thread ); + libvlc_exception_raise( p_e ); + libvlc_printerr( "Audio track information not found" ); return i_ret; } @@ -454,16 +453,20 @@ void libvlc_audio_set_track( libvlc_media_player_t *p_mi, int i_track, return; var_Change( p_input_thread, "audio-es", VLC_VAR_GETCHOICES, &val_list, NULL ); - if( (i_track < 0) && (i_track > val_list.p_list->i_count) ) + if( (i_track < 0) || (i_track > val_list.p_list->i_count) ) { - libvlc_exception_raise( p_e, "Audio track out of range" ); + libvlc_exception_raise( p_e ); + libvlc_printerr( "Audio track out of range" ); goto end; } newval = val_list.p_list->p_values[i_track]; i_ret = var_Set( p_input_thread, "audio-es", newval ); if( i_ret < 0 ) - libvlc_exception_raise( p_e, "Setting audio track failed" ); + { + libvlc_exception_raise( p_e ); + libvlc_printerr( "Audio track out of range" ); /* Race... */ + } end: var_FreeList( &val_list, NULL ); @@ -477,16 +480,12 @@ int libvlc_audio_get_channel( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) { aout_instance_t *p_aout = GetAOut( p_instance, p_e ); - if( p_aout ) - { - vlc_value_t val; + if( !p_aout ) + return 0; - var_Get( p_aout, "audio-channels", &val ); - vlc_object_release( p_aout ); - return val.i_int; - } - libvlc_exception_raise( p_e, "Unable to get audio output" ); - return libvlc_AudioChannel_Error; + int val = var_GetInteger( p_aout, "audio-channels" ); + vlc_object_release( p_aout ); + return val; } /***************************************************************************** @@ -497,17 +496,13 @@ void libvlc_audio_set_channel( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) { aout_instance_t *p_aout = GetAOut( p_instance, p_e ); - if( p_aout ) - { - vlc_value_t val; - int i_ret = -1; - - val.i_int = channel; - i_ret = var_Set( p_aout, "audio-channels", val ); - if( i_ret < 0 ) - libvlc_exception_raise( p_e, "Failed setting audio channel" ); + if( !p_aout ) + return; - vlc_object_release( p_aout ); + if( var_SetInteger( p_aout, "audio-channels", channel ) < 0 ) + { + libvlc_exception_raise( p_e ); + libvlc_printerr( "Audio channel out of range" ); } - + vlc_object_release( p_aout ); }