Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement: Support external volume control #256

Open
mill1000 opened this issue Oct 15, 2022 · 0 comments
Open

Enhancement: Support external volume control #256

mill1000 opened this issue Oct 15, 2022 · 0 comments

Comments

@mill1000
Copy link
Contributor

I've been contemplating an enhancement to support external volume control. I have multiple renderers, and other sources, which I want to have a single point of volume control.

Currently the volume is passed to the output module here. The default (and only) module, gstreamer, implements a software volume control (via playbin). It doesn't appear possible to pass this control on to the underlying sink (ALSA, PulseAudio, etc).

int output_set_volume(float value) {
if (output_module && output_module->set_volume) {
return output_module->set_volume(value);
}
return -1;
}

I experimented with a build that clears the soft-volume GstPlayFlags but it does not fallback to the sink's volume. It simply disabled volume control

This idea was also discussed in #208, and an ALSA-only implementation was made in a fork here, here and here.

For obvious reasons, directly controlling an ALSA mixer is the wrong approach. Instead, I think we should either externally signal the change (D-Bus?) or call a hook. That way another utility could handle the volume control. (ALSA mixer, IR command, etc)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant