From 58ed620c064971535e60778612777750aa5e2f4d Mon Sep 17 00:00:00 2001 From: Leonardo Boss Date: Thu, 22 Feb 2024 14:14:53 -0300 Subject: player: add ao-volume option, to set the system volume at startup closes #12353 --- player/audio.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'player/audio.c') diff --git a/player/audio.c b/player/audio.c index 344fbdb744..c697142012 100644 --- a/player/audio.c +++ b/player/audio.c @@ -182,6 +182,19 @@ void audio_update_volume(struct MPContext *mpctx) ao_set_gain(ao_c->ao, gain); } +// Called when opts->ao_volume were changed. +void audio_update_ao_volume(struct MPContext *mpctx) +{ + struct MPOpts *opts = mpctx->opts; + struct ao *ao = mpctx->ao; + float vol = opts->ao_volume; + if (!ao || vol < 0) + return; + + ao_control(ao, AOCONTROL_SET_VOLUME, &vol); +} + + // Call this if opts->playback_speed or mpctx->speed_factor_* change. void update_playback_speed(struct MPContext *mpctx) { @@ -335,6 +348,7 @@ static void ao_chain_set_ao(struct ao_chain *ao_c, struct ao *ao) // Make sure filtering never stops with frames stuck in access filter. mp_filter_set_high_priority(ao_c->queue_filter, true); audio_update_volume(ao_c->mpctx); + audio_update_ao_volume(ao_c->mpctx); } if (ao_c->filter->ao_needs_update) @@ -593,8 +607,10 @@ void reinit_audio_chain_src(struct MPContext *mpctx, struct track *track) if (recreate_audio_filters(mpctx) < 0) goto init_error; - if (mpctx->ao) + if (mpctx->ao) { audio_update_volume(mpctx); + audio_update_ao_volume(mpctx); + } mp_wakeup_core(mpctx); return; -- cgit v1.2.3