summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dsp.c14
-rw-r--r--apps/dsp.h8
2 files changed, 14 insertions, 8 deletions
diff --git a/apps/dsp.c b/apps/dsp.c
index ec59417..f9b94e8 100644
--- a/apps/dsp.c
+++ b/apps/dsp.c
@@ -890,6 +890,15 @@ static void set_gain(struct dsp_config *dsp)
(long) (((int64_t) dsp->data.gain * eq_precut) >> 24);
}
+#ifdef HAVE_SW_VOLUME_CONTROL
+ if (global_settings.volume < SW_VOLUME_MAX ||
+ global_settings.volume > SW_VOLUME_MIN)
+ {
+ int vol_gain = get_replaygain_int(global_settings.volume * 100);
+ dsp->data.gain = (long) (((int64_t) dsp->data.gain * vol_gain) >> 24);
+ }
+#endif
+
if (dsp->data.gain == DEFAULT_GAIN)
{
dsp->data.gain = 0;
@@ -1149,6 +1158,11 @@ int dsp_callback(int msg, intptr_t param)
case DSP_CALLBACK_SET_TREBLE:
treble = param;
break;
+#ifdef HAVE_SW_VOLUME_CONTROL
+ case DSP_CALLBACK_SET_SW_VOLUME:
+ set_gain(&AUDIO_DSP);
+ break;
+#endif
#endif
case DSP_CALLBACK_SET_CHANNEL_CONFIG:
dsp_set_channel_config(param);
diff --git a/apps/dsp.h b/apps/dsp.h
index 7d1e2b3..58a5edb 100644
--- a/apps/dsp.h
+++ b/apps/dsp.h
@@ -56,14 +56,6 @@ enum
DSP_CROSSFEED
};
-enum {
- DSP_CALLBACK_SET_PRESCALE = 0,
- DSP_CALLBACK_SET_BASS,
- DSP_CALLBACK_SET_TREBLE,
- DSP_CALLBACK_SET_CHANNEL_CONFIG,
- DSP_CALLBACK_SET_STEREO_WIDTH
-};
-
struct dsp_config;
int dsp_process(struct dsp_config *dsp, char *dest,