diff options
author | wm4 <wm4@nowhere> | 2017-04-27 00:15:22 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-04-27 00:15:32 +0200 |
commit | 90a1ca02a23608d375d319e5c1208db77427818c (patch) | |
tree | a103e4700c3b50ac774e4ff36afba023ea681229 | |
parent | f1c4d20e6577f32018e20efc4ab9da7d4e1ab4ac (diff) | |
download | mpv-90a1ca02a23608d375d319e5c1208db77427818c.tar.bz2 mpv-90a1ca02a23608d375d319e5c1208db77427818c.tar.xz |
audio: fix replaygain volume scale
The new replaygain code accidentally applied the linear gain as cubic
volume level. Fix this by moving the computation of the volume scale out
of the af_volume filter.
(Still haven't verified whether the replaygain code works correctly.)
-rw-r--r-- | audio/filter/af_volume.c | 2 | ||||
-rw-r--r-- | player/audio.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/audio/filter/af_volume.c b/audio/filter/af_volume.c index fb7a87f9d0..cc97ac8b2c 100644 --- a/audio/filter/af_volume.c +++ b/audio/filter/af_volume.c @@ -106,7 +106,7 @@ static int control(struct af_instance *af, int cmd, void *arg) } case AF_CONTROL_SET_VOLUME: s->vol = *(float *)arg; - s->level = pow(s->vol, 3); + s->level = *(float *)arg; MP_VERBOSE(af, "volume gain: %f\n", s->level); return AF_OK; case AF_CONTROL_GET_VOLUME: diff --git a/player/audio.c b/player/audio.c index dd464614d9..ea013b02e2 100644 --- a/player/audio.c +++ b/player/audio.c @@ -176,6 +176,7 @@ void audio_update_volume(struct MPContext *mpctx) return; float gain = MPMAX(opts->softvol_volume / 100.0, 0); + gain = pow(gain, 3); gain *= compute_replaygain(mpctx); if (opts->softvol_mute == 1) gain = 0.0; |