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;