Pavucontrol won’t change output on some apps

audiopulseaudio

I have a pair of Bluetooth headphones paired to the computer. Some apps are capable of playing through them if selected in pavucontrol. Others, though, won't let me select them. In fact, I can't change the output on those apps at all. I can click the button and see a list (as seen in screenshot), but if I select a different option it just goes straight back to HD-Audio Generic. Other apps (such as Spotify, as seen in the screenshot) allow me to switch from one device to another without issue. What's going on?

This menu shows up but doesn't actually change when you click an option

I've also tried to change the sink via the command line using pactl but for some reason it returns "Invalid Argument." A pretty much identical situation is described in this thread, but unfortunately it was never answered.

Here's the sink-input data from pactl:

Sink Input #8
        Driver: protocol-native.c
        Owner Module: 11
        Client: 24
        Sink: 0
        Sample Specification: float32le 2ch 44100Hz
        Channel Map: front-left,front-right
        Format: pcm, format.sample_format = "\"float32le\""  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
        Corked: no
        Mute: no
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
                balance 0.00
        Buffer Latency: 54807 usec
        Sink Latency: 23177 usec
        Resample method: copy
        Properties:
                media.role = hex:
                phonon.streamid = hex:
                media.name = "Playback Stream"
                application.name = "bioshock.i386"
                native-protocol.peer = "UNIX socket client"
                native-protocol.version = "26"
                application.process.id = "10390"
                application.process.user = "john"
                application.process.host = "strangelove"
                application.process.binary = "bioshock.i386"
                application.language = "C"
                window.x11.display = ":0"
                application.process.machine_id = [redacted]
                application.process.session_id = "2"
                module-stream-restore.id = "sink-input-by-application-name:bioshock.i386"

I'm running Linux Mint 18.3 "Sylvia", KDE Plasma 5.8.9, KDE framework 5.36.0, and pulseaudio 8.3. The stubborn app that won't switch devices is BioShock Infinite, from Steam. I also tested The Talos Principle (also from Steam), 64-bit version, and it wouldn't allow me to change the output either.

Best Answer

I finally found the solution: https://steamcommunity.com/app/93200/discussions/0/864959809826195633/

It seems that some apps use something called OpenALsoft to control audio, and it has a configuration option that inhibits sink changes. To disable the option, you can create a config file.

~/.alsoftrc

[pulse]
allow-moves=yes
Related Question