]> git.sesse.net Git - vlc/blobdiff - lib/audio.c
decoder: cosmetic changes
[vlc] / lib / audio.c
index 8b93b553b23fd07853dcff8211f56ec172b740b2..0165d16214de009e7fbc154ce7e2470203cb3553 100644 (file)
@@ -146,10 +146,11 @@ libvlc_audio_output_device_enum( libvlc_media_player_t *mp )
     if( aout == NULL )
         return NULL;
 
-    libvlc_audio_output_device_t *list = NULL, **pp = &list;
+    libvlc_audio_output_device_t *list, **pp = &list;
     char **values, **texts;
 
     int n = aout_DevicesList( aout, &values, &texts );
+    vlc_object_release( aout );
     if( n < 0 )
         goto err;
 
@@ -172,6 +173,7 @@ libvlc_audio_output_device_enum( libvlc_media_player_t *mp )
     free( texts );
     free( values );
 err:
+    *pp = NULL;
     return list;
 }
 
@@ -268,13 +270,26 @@ void libvlc_audio_output_device_set( libvlc_media_player_t *mp,
     }
 
     audio_output_t *aout = GetAOut( mp );
-    if( aout != NULL )
+    if( aout == NULL )
         return;
 
     aout_DeviceSet( aout, devid );
     vlc_object_release( aout );
 }
 
+char *libvlc_audio_output_device_get( libvlc_media_player_t *mp )
+{
+    audio_output_t *aout = GetAOut( mp );
+    if( aout == NULL )
+        return NULL;
+
+    char *devid = aout_DeviceGet( aout );
+
+    vlc_object_release( aout );
+
+    return devid;
+}
+
 int libvlc_audio_output_get_device_type( libvlc_media_player_t *mp )
 {
     (void) mp;
@@ -334,7 +349,7 @@ int libvlc_audio_get_volume( libvlc_media_player_t *mp )
 int libvlc_audio_set_volume( libvlc_media_player_t *mp, int volume )
 {
     float vol = volume / 100.f;
-    if (vol < 0.f)
+    if (!isgreaterequal(vol, 0.f))
     {
         libvlc_printerr( "Volume out of range" );
         return -1;
@@ -578,10 +593,12 @@ void libvlc_audio_equalizer_release( libvlc_equalizer_t *p_equalizer )
  *****************************************************************************/
 int libvlc_audio_equalizer_set_preamp( libvlc_equalizer_t *p_equalizer, float f_preamp )
 {
-    if ( f_preamp < -20.0f )
-        f_preamp = -20.0f;
-    else if ( f_preamp > 20.0f )
-        f_preamp = 20.0f;
+    if( isnan(f_preamp) )
+        return -1;
+    if( f_preamp < -20.f )
+        f_preamp = -20.f;
+    else if( f_preamp > 20.f )
+        f_preamp = 20.f;
 
     p_equalizer->f_preamp = f_preamp;
     return 0;
@@ -600,13 +617,14 @@ float libvlc_audio_equalizer_get_preamp( libvlc_equalizer_t *p_equalizer )
  *****************************************************************************/
 int libvlc_audio_equalizer_set_amp_at_index( libvlc_equalizer_t *p_equalizer, float f_amp, unsigned u_band )
 {
-    if ( u_band >= EQZ_BANDS_MAX )
+    if( u_band >= EQZ_BANDS_MAX || isnan(f_amp) )
         return -1;
 
-    if ( f_amp < -20.0f )
-        f_amp = -20.0f;
-    else if ( f_amp > 20.0f )
-        f_amp = 20.0f;
+
+    if( f_amp < -20.f )
+        f_amp = -20.f;
+    else if( f_amp > 20.f )
+        f_amp = 20.f;
 
     p_equalizer->f_amp[ u_band ] = f_amp;
     return 0;
@@ -618,7 +636,7 @@ int libvlc_audio_equalizer_set_amp_at_index( libvlc_equalizer_t *p_equalizer, fl
 float libvlc_audio_equalizer_get_amp_at_index( libvlc_equalizer_t *p_equalizer, unsigned u_band )
 {
     if ( u_band >= EQZ_BANDS_MAX )
-        return 0.f;
+        return nanf("");
 
     return p_equalizer->f_amp[ u_band ];
 }