Index: apps/settings.c =================================================================== --- apps/settings.c (revision 21078) +++ apps/settings.c (working copy) @@ -79,6 +79,7 @@ #if CONFIG_CODEC == SWCODEC #include "dsp.h" +#include "limiter.h" #include "playback.h" #ifdef HAVE_RECORDING #include "enc_config.h" @@ -936,6 +937,7 @@ } dsp_dither_enable(global_settings.dithering_enabled); + set_limiter_level(global_settings.limiter_level); #endif #ifdef HAVE_SPDIF_POWER Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 21078) +++ apps/lang/english.lang (working copy) @@ -12468,3 +12468,20 @@ *: "Prevent Track Skipping" + + id: LANG_LIMITER + desc: in sound settings + user: core + + *: none + swcodec: "Limiter Preamp" + + + *: none + swcodec: "Limiter Preamp" + + + *: none + swcodec: "Limiter Preamp" + + Index: apps/settings.h =================================================================== --- apps/settings.h (revision 21078) +++ apps/settings.h (working copy) @@ -731,6 +731,10 @@ int touch_mode; #endif +#if CONFIG_CODEC == SWCODEC + int limiter_level; +#endif + /* If values are just added to the end, no need to bump plugin API version. */ /* new stuff to be added at the end */ Index: apps/menus/sound_menu.c =================================================================== --- apps/menus/sound_menu.c (revision 21078) +++ apps/menus/sound_menu.c (working copy) @@ -89,6 +89,10 @@ MENUITEM_SETTING(dithering_enabled, &global_settings.dithering_enabled, lowlatency_callback); + + MENUITEM_SETTING(limiter_level, + &global_settings.limiter_level, lowlatency_callback); + #endif #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) @@ -121,6 +125,7 @@ &balance,&channel_config,&stereo_width #if CONFIG_CODEC == SWCODEC ,&crossfeed_menu, &equalizer_menu, &dithering_enabled + ,&limiter_level #endif #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) ,&loudness,&avc,&superbass,&mdb_enable,&mdb_strength Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (revision 21078) +++ apps/settings_list.c (working copy) @@ -33,6 +33,7 @@ #include "settings_list.h" #include "sound.h" #include "dsp.h" +#include "limiter.h" #include "debug.h" #include "mpeg.h" #include "audio.h" @@ -1181,6 +1182,13 @@ /* dithering */ OFFON_SETTING(F_SOUNDSETTING, dithering_enabled, LANG_DITHERING, false, "dithering enabled", dsp_dither_enable), + + /* limiter */ + INT_SETTING_NOWRAP(F_SOUNDSETTING, limiter_level, + LANG_LIMITER, 0, + "limiter level", UNIT_DB, 0, MAX_LIMITER_GAIN, + 5, db_format, get_dec_talkid, set_limiter_level), + #endif #ifdef HAVE_WM8758 SOUND_SETTING(F_NO_WRAP, bass_cutoff, LANG_BASS_CUTOFF, Index: apps/SOURCES =================================================================== --- apps/SOURCES (revision 21078) +++ apps/SOURCES (working copy) @@ -126,6 +126,7 @@ playback.c codecs.c dsp.c +limiter.c #ifdef HAVE_RECORDING enc_config.c #ifndef SIMULATOR Index: apps/limiter.c =================================================================== --- apps/limiter.c (revision 0) +++ apps/limiter.c (revision 0) @@ -0,0 +1,14 @@ +#include +#include "limiter.h" +#include "debug.h" + +static bool limiter_enabled; +static float limiter_gain; + +void set_limiter_level(int limiter_level) +{ + limiter_gain = (float)limiter_level / 10.0; + limiter_enabled = (limiter_level > 0); + + /*DEBUGF("Limiter enable: %s\tLimiter gain: %2.1f\n",limiter_enabled ? "Yes" : "No", limiter_gain);*/ +} Property changes on: apps/limiter.c ___________________________________________________________________ Added: svn:executable + * Index: apps/limiter.h =================================================================== --- apps/limiter.h (revision 0) +++ apps/limiter.h (revision 0) @@ -0,0 +1,9 @@ +#ifndef _LIMITER_H +#define _LIMITER_H + + +#define MAX_LIMITER_GAIN 200 /* 20 dB */ + +void set_limiter_level(int limiter_level); + +#endif Property changes on: apps/limiter.h ___________________________________________________________________ Added: svn:executable + *