summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-02-27 01:07:46 +0100
committerwm4 <wm4@nowhere>2014-02-27 01:07:46 +0100
commit14607f27ef01c81e4544d0eaa7ed182001c15305 (patch)
tree73c18acabeef92272543af8be450c7bf9738e02a
parentb4fb71634cf746cfd9ba19c1260dbc0aee38700e (diff)
downloadmpv-14607f27ef01c81e4544d0eaa7ed182001c15305.tar.bz2
mpv-14607f27ef01c81e4544d0eaa7ed182001c15305.tar.xz
command: use the step size for "add volume" commands
The step argument for "add volume <step>" was ignored until now. Fix it. There is one problem: by defualt, "add volume" should use the value set with --volstep. This value is 3 by default. Since the default volue for the step argument is always 1 (and we don't really want to make the generic code more complicated by introducing custom step sizes), we simply multiply the step argument with --volstep to keep it compatible. The --volstep option should probably be just removed in the future.
-rw-r--r--audio/mixer.c14
-rw-r--r--audio/mixer.h3
-rw-r--r--player/command.c5
3 files changed, 4 insertions, 18 deletions
diff --git a/audio/mixer.c b/audio/mixer.c
index 162d9d5a0a..a9759976a2 100644
--- a/audio/mixer.c
+++ b/audio/mixer.c
@@ -172,21 +172,11 @@ bool mixer_getmute(struct mixer *mixer)
return mixer->muted;
}
-static void addvolume(struct mixer *mixer, float d)
+void mixer_addvolume(struct mixer *mixer, float step)
{
float vol_l, vol_r;
mixer_getvolume(mixer, &vol_l, &vol_r);
- mixer_setvolume(mixer, vol_l + d, vol_r + d);
-}
-
-void mixer_incvolume(struct mixer *mixer)
-{
- addvolume(mixer, mixer->opts->volstep);
-}
-
-void mixer_decvolume(struct mixer *mixer)
-{
- addvolume(mixer, -mixer->opts->volstep);
+ mixer_setvolume(mixer, vol_l + step, vol_r + step);
}
void mixer_getbalance(struct mixer *mixer, float *val)
diff --git a/audio/mixer.h b/audio/mixer.h
index 7a14e0b23e..d5ec07e9ba 100644
--- a/audio/mixer.h
+++ b/audio/mixer.h
@@ -39,8 +39,7 @@ void mixer_uninit_audio(struct mixer *mixer);
bool mixer_audio_initialized(struct mixer *mixer);
void mixer_getvolume(struct mixer *mixer, float *l, float *r);
void mixer_setvolume(struct mixer *mixer, float l, float r);
-void mixer_incvolume(struct mixer *mixer);
-void mixer_decvolume(struct mixer *mixer);
+void mixer_addvolume(struct mixer *mixer, float step);
void mixer_getbothvolume(struct mixer *mixer, float *b);
void mixer_setmute(struct mixer *mixer, bool mute);
bool mixer_getmute(struct mixer *mixer);
diff --git a/player/command.c b/player/command.c
index 7712a6e550..4997056be4 100644
--- a/player/command.c
+++ b/player/command.c
@@ -931,10 +931,7 @@ static int mp_property_volume(m_option_t *prop, int action, void *arg,
if (!mixer_audio_initialized(mpctx->mixer))
return M_PROPERTY_ERROR;
struct m_property_switch_arg *sarg = arg;
- if (sarg->inc <= 0)
- mixer_decvolume(mpctx->mixer);
- else
- mixer_incvolume(mpctx->mixer);
+ mixer_addvolume(mpctx->mixer, mpctx->opts->volstep * sarg->inc);
return M_PROPERTY_OK;
}
}