forked from len0rd/rockbox
Replace limiter with dynamic range compressor
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22832 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
b9a17dd0ce
commit
cf19ba5599
21 changed files with 577 additions and 507 deletions
|
@ -356,6 +356,34 @@ static void crossfeed_cross_set(int val)
|
|||
global_settings.crossfeed_hf_cutoff);
|
||||
}
|
||||
|
||||
static void compressor_set(int val)
|
||||
{
|
||||
(void)val;
|
||||
dsp_set_compressor(global_settings.compressor_threshold,
|
||||
global_settings.compressor_ratio,
|
||||
global_settings.compressor_makeup_gain,
|
||||
global_settings.compressor_knee,
|
||||
global_settings.compressor_release_time);
|
||||
}
|
||||
|
||||
static const char* auto_formatter(char *buffer, size_t buffer_size,
|
||||
int val, const char *unit)
|
||||
{
|
||||
if (val == -1)
|
||||
return str(LANG_AUTO);
|
||||
else
|
||||
snprintf(buffer, buffer_size, "%d %s", val, unit);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static int32_t auto_getlang(int value, int unit)
|
||||
{
|
||||
if (value == -1)
|
||||
return LANG_AUTO;
|
||||
else
|
||||
return TALK_ID(value, unit);
|
||||
}
|
||||
|
||||
static const char* db_format(char* buffer, size_t buffer_size, int value,
|
||||
const char* unit)
|
||||
{
|
||||
|
@ -1256,11 +1284,29 @@ const struct settings_list settings[] = {
|
|||
OFFON_SETTING(F_SOUNDSETTING, timestretch_enabled, LANG_TIMESTRETCH, false,
|
||||
"timestretch enabled", dsp_timestretch_enable),
|
||||
|
||||
/* limiter */
|
||||
INT_SETTING_NOWRAP(F_SOUNDSETTING, limiter_level,
|
||||
LANG_COMPRESSOR, 0,
|
||||
"limiter level", UNIT_DB, 0, MAX_LIMITER_GAIN,
|
||||
5, db_format, get_dec_talkid, dsp_set_limiter),
|
||||
/* compressor */
|
||||
INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_threshold,
|
||||
LANG_COMPRESSOR_THRESHOLD, 0,
|
||||
"compressor threshold", UNIT_DB, 0, -24,
|
||||
-3, formatter_unit_0_is_off, getlang_unit_0_is_off, compressor_set),
|
||||
CHOICE_SETTING(F_SOUNDSETTING|F_NO_WRAP, compressor_ratio,
|
||||
LANG_COMPRESSOR_RATIO, 1, "compressor ratio",
|
||||
"2:1,4:1,6:1,10:1,limit", compressor_set, 5,
|
||||
ID2P(LANG_COMPRESSOR_RATIO_2), ID2P(LANG_COMPRESSOR_RATIO_4),
|
||||
ID2P(LANG_COMPRESSOR_RATIO_6), ID2P(LANG_COMPRESSOR_RATIO_10),
|
||||
ID2P(LANG_COMPRESSOR_RATIO_LIMIT)),
|
||||
INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_makeup_gain,
|
||||
LANG_COMPRESSOR_GAIN, -1,
|
||||
"compressor makeup gain", UNIT_DB, -1, 20,
|
||||
1, auto_formatter, auto_getlang, compressor_set),
|
||||
CHOICE_SETTING(F_SOUNDSETTING|F_NO_WRAP, compressor_knee,
|
||||
LANG_COMPRESSOR_KNEE, 1, "compressor knee",
|
||||
"hard knee,soft knee", compressor_set, 2,
|
||||
ID2P(LANG_COMPRESSOR_HARD_KNEE), ID2P(LANG_COMPRESSOR_SOFT_KNEE)),
|
||||
INT_SETTING_NOWRAP(F_SOUNDSETTING, compressor_release_time,
|
||||
LANG_COMPRESSOR_RELEASE, 100,
|
||||
"compressor release time", UNIT_MS, 20, 200,
|
||||
10, NULL, NULL, compressor_set),
|
||||
#endif
|
||||
#ifdef HAVE_WM8758
|
||||
SOUND_SETTING(F_NO_WRAP, bass_cutoff, LANG_BASS_CUTOFF,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue