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
+ *