]> git.sesse.net Git - vlc/commitdiff
LUA: EQ Preset setter
authorAkash Mehrotra <mehrotra.akash@gmail.com>
Tue, 30 Aug 2011 17:39:41 +0000 (19:39 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 30 Aug 2011 17:39:53 +0000 (19:39 +0200)
modules/lua/libs/equalizer.c
share/lua/http/requests/README.txt
share/lua/intf/modules/httprequests.lua

index 9d7d87f9b146df03bede634876b2a37614b48cd1..f365a8e9fd5585548ccfc2839e2cbf089768ba43 100644 (file)
@@ -176,7 +176,7 @@ static int vlclua_equalizer_get( lua_State *L )
         free(str);
         asprintf( &str , "band_%d", i++ );
         lua_setfield( L , -2 , str );
-        free(str);
+        free( str );
     }
     free( psz_bands_origin );
     if (loc != (locale_t)0)
@@ -239,6 +239,47 @@ static int vlclua_equalizer_set( lua_State *L )
     return 1;
 }
 
+/*****************************************************************************
+* Set the preset specified by preset id
+*****************************************************************************/
+static int vlclua_equalizer_setpreset( lua_State *L )
+{
+    int presetid = luaL_checknumber( L, 1 );
+    if( presetid >= NB_PRESETS || presetid < 0 )
+        return 0;
+    input_thread_t *p_input = vlclua_get_input_internal( L );
+    if( p_input )
+    {
+        audio_output_t *p_aout = input_GetAout( p_input );
+        vlc_object_release( p_input );
+        if ( !p_aout )
+        {
+            return 0;
+        }
+        char *psz_af = var_GetNonEmptyString( p_aout, "audio-filter" );
+        if ( !psz_af || strstr ( psz_af, "equalizer" ) == NULL )
+        {
+            vlc_object_release( p_aout );
+            return 0;
+        }
+        char *newstr;
+        if( asprintf( &newstr , "%6.1f" , eqz_preset_10b[presetid].f_amp[0] ) == -1 )
+            return 0;
+        for ( int i = 1 ; i < 10 ; i++ )
+        {
+            if ( asprintf( &newstr, "%s%6.1f",newstr ,eqz_preset_10b[presetid].f_amp[i]) == -1 )
+                return 0;
+        }
+        var_SetString( p_aout, "equalizer-bands",newstr );
+        var_SetFloat( p_aout, "equalizer-preamp", eqz_preset_10b[presetid].f_preamp );
+        var_SetString( p_aout , "equalizer-preset" , preset_list[presetid] );
+        vlc_object_release( p_aout );
+        free( newstr );
+        return 1;
+    }
+    return 0;
+}
 /****************************************************************************
 * Enable/disable Equalizer
 *****************************************************************************/
@@ -271,7 +312,8 @@ static const luaL_Reg vlclua_equalizer_reg[] = {
     { "equalizerget", vlclua_equalizer_get },
     { "equalizerset", vlclua_equalizer_set },
     { "enable", vlclua_equalizer_enable },
-    {"presets",vlclua_equalizer_get_presets },
+    { "presets",vlclua_equalizer_get_presets },
+    { "setpreset", vlclua_equalizer_setpreset },
     { NULL, NULL }
 };
 
index 9b3794629ccf18c453992ef33c864c97b12da3f2..109d44acaa13a6ca564c2301377489c8a072b011 100644 (file)
@@ -125,6 +125,9 @@ status.xml or status.json
  0 --  disables the equalizer
  1 --  enables the equalizer
 
+>command=setpreset&val=<presetid>
+ set the equalizer preset as per the id specified
+
 <Displays the equalizer band gains.
 Band 0: 60 Hz, 1: 170 Hz, 2: 310 Hz, 3: 600 Hz, 4: 1 kHz,
 5: 3 kHz, 6: 6 kHz, 7: 12 kHz , 8: 14 kHz , 9: 16 kHz
index 3ccc9464ec132c34a91a75263a7512aadf512c34..fcd7a90d2af2a4f6af7959391ba74b64637bc683 100644 (file)
@@ -172,6 +172,8 @@ processcommands = function ()
          vlc.equalizer.equalizerset(band,val)
        elseif command == "enableeq" then
          if val == '0' then vlc.equalizer.enable(false) else vlc.equalizer.enable(true) end
+       elseif command == "setpreset" then 
+         vlc.equalizer.setpreset(val)
        end
 
        local input = nil