Microphone list shows monitor devices of each microphone
Categories
(Core :: Audio/Video: Playback, defect, P2)
Tracking
()
People
(Reporter: pmenzel+bugzilla.mozilla.org, Unassigned)
References
Details
Attachments
(1 file)
44.46 KB,
video/mp4
|
Details |
Steps to reproduce:
On Debian sid/unstable with pipewire 1.0.7 and join a BigBlueButton conference, and pick a microphone in Firefox after being asked about giving access.
Actual results:
As seen in the screencapture, for each microphone an additional corresponding entry with Monitor of … was shown. These monitor devices do not show up in GNOME’s audio settings, for example.
Expected results:
No devices unknown to me should be shown.
Comment 1•5 months ago
|
||
The Bugbug bot thinks this bug should belong to the 'Core::Audio/Video: Playback' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.
Comment 2•5 months ago
|
||
jib, what's our current reasonning here? Should they show up by default or not?
Comment 3•5 months ago
|
||
I was not behind the original reasoning here. Maybe Karl knows?
I agree they're confusing, and are rarely the right choice for most users. They also generally don't appear on other OSes AFAIK.
I'd be OK with removing them (or put them behind a pref maybe, as no doubt someone will miss them.
Comment 4•5 months ago
|
||
Ok, let's put it behind a pref. I assume people who want to use them know how to flip a pref.
Reporter | ||
Comment 5•5 months ago
|
||
That sounds great.
Maybe also document somewhere, what these monitor devices are or point to some documentation. As written PipeWire or GNOME Shell does not show me such devices, confusing me even more.
Comment 6•5 months ago
|
||
It's not really a Firefox thing, it's a PulseAudio thing that can be enabled/disabled by (I assume) the Linux distro (or the user, but I assume you haven't done so yourself, otherwise you wouldn't be confused).
A monitor device for a particular audio output device is a virtual audio input device (i.e., it can act as a sound source, like a microphone) that forwards what is being played to that particular audio output device. In essence, if you're playing music through device "A", then (if enabled in PulseAudio) there can be an input device called "Monitor of A", and you can record that like you would for a microphone, but you'd record the music played through "A".
Another term, or related concepts that are used for this on other systems are "loopback device", or "virtual audio cable".
Reporter | ||
Comment 7•5 months ago
|
||
If you didn’t know yet, in #pipewire@irc.oftc.net the PipeWire maintainer suggested:
just filter out the monitor streams.. (the monitor_of_sink field in pa_source_info is != invalid)
Comment 8•5 months ago
|
||
Yeah, we know how to do it, it's a matter of what users expect, that's about it.
Comment 9•5 months ago
|
||
(In reply to Jan-Ivar Bruaroey [:jib] (needinfo? me) from comment #3)
I was not behind the original reasoning here. Maybe Karl knows?
I wasn't either, but it's what happens naturally when we get the list of audio input devices from PulseAudio rather than GNOME.
These show up in pactl list sources
. I guess GNOME filters these out.
One effect of removing the monitor devices would be that their corresponding speakers would not necessarily be exposed in enumerateDevices()
when only microphone permission is granted. i.e. triggering the symptoms of bug 1899771 on Linux too.
Monitor devices could be used to play local audio in a web conference or other audio processing. That's not be the most common application, but treating all audio inputs similarly, rather that having different APIs is consistent with Unix's everything-is-a-file philosophy.
Sorting the monitors to the end of the audio input list would be an improvement IMO.
Reporter | ||
Comment 10•5 months ago
|
||
These show up in pactl list sources.
Indeed:
$ pactl list sources
Source #54
State: RUNNING
Name: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
Description: Monitor of Internes Audio Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor of Sink: alsa_output.pci-0000_00_1f.3.analog-stereo
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "0"
alsa.card_name = "HDA Intel PCH"
alsa.class = "generic"
alsa.components = "HDA:10ec0256,1028075b,00100002 HDA:8086280b,80860101,00100000"
alsa.device = "0"
alsa.driver_name = "snd_hda_intel"
alsa.id = "PCH"
alsa.long_card_name = "HDA Intel PCH at 0xdc328000 irq 136"
alsa.mixer_name = "Realtek ALC3246"
alsa.name = "ALC3246 Analog"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
api.alsa.card.longname = "HDA Intel PCH at 0xdc328000 irq 136"
api.alsa.card.name = "HDA Intel PCH"
api.alsa.path = "front:0"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "6"
device.api = "alsa"
device.class = "monitor"
device.id = "50"
device.profile.description = "Analog Stereo"
device.profile.name = "analog-stereo"
device.routes = "2"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "Internes Audio"
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
node.nick = "ALC3246 Analog"
node.pause-on-idle = "false"
object.path = "alsa:pcm:0:front:0:playback"
priority.driver = "1009"
priority.session = "1009"
factory.id = "18"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "54"
object.serial = "54"
node.max-latency = "16384/48000"
api.alsa.period-size = "1024"
api.alsa.period-num = "32"
api.alsa.headroom = "0"
api.acp.auto-port = "false"
api.alsa.card = "0"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio0"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus = "pci"
device.bus_path = "pci-0000:00:1f.3"
device.enum.api = "udev"
device.form_factor = "internal"
device.icon_name = "audio-card-analog-pci"
device.name = "alsa_card.pci-0000_00_1f.3"
device.nick = "HDA Intel PCH"
device.plugged.usec = "90329088"
device.product.id = "0x9d71"
device.product.name = "Sunrise Point-LP HD Audio"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
device.vendor.id = "0x8086"
device.vendor.name = "Intel Corporation"
device.string = "0"
Ports:
analog-output-speaker: Lautsprecher (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
analog-output-headphones: Kopfhörer (type: Headphones, priority: 9900, availability group: Legacy 2, not available)
Active Port: analog-output-speaker
Formats:
pcm
Source #55
State: SUSPENDED
Name: alsa_input.pci-0000_00_1f.3.analog-stereo
Description: Internes Audio Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 10179 / 16% / -48,53 dB, front-right: 10179 / 16% / -48,53 dB
balance 0,00
Base Volume: 6554 / 10% / -60,00 dB
Monitor of Sink: n/a
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "0"
alsa.card_name = "HDA Intel PCH"
alsa.class = "generic"
alsa.components = "HDA:10ec0256,1028075b,00100002 HDA:8086280b,80860101,00100000"
alsa.device = "0"
alsa.driver_name = "snd_hda_intel"
alsa.id = "PCH"
alsa.long_card_name = "HDA Intel PCH at 0xdc328000 irq 136"
alsa.mixer_name = "Realtek ALC3246"
alsa.name = "ALC3246 Analog"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
api.alsa.card.longname = "HDA Intel PCH at 0xdc328000 irq 136"
api.alsa.card.name = "HDA Intel PCH"
api.alsa.path = "front:0"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "capture"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "0"
device.api = "alsa"
device.class = "sound"
device.id = "50"
device.profile.description = "Analog Stereo"
device.profile.name = "analog-stereo"
device.routes = "3"
factory.name = "api.alsa.pcm.source"
media.class = "Audio/Source"
device.description = "Internes Audio"
node.name = "alsa_input.pci-0000_00_1f.3.analog-stereo"
node.nick = "ALC3246 Analog"
node.pause-on-idle = "false"
object.path = "alsa:pcm:0:front:0:capture"
priority.driver = "2009"
priority.session = "2009"
factory.id = "18"
clock.quantum-limit = "8192"
client.id = "46"
node.driver = "true"
factory.mode = "split"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "55"
object.serial = "55"
api.acp.auto-port = "false"
api.alsa.card = "0"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio0"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus = "pci"
device.bus_path = "pci-0000:00:1f.3"
device.enum.api = "udev"
device.form_factor = "internal"
device.icon_name = "audio-card-analog-pci"
device.name = "alsa_card.pci-0000_00_1f.3"
device.nick = "HDA Intel PCH"
device.plugged.usec = "90329088"
device.product.id = "0x9d71"
device.product.name = "Sunrise Point-LP HD Audio"
device.subsystem = "sound"
sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
device.vendor.id = "0x8086"
device.vendor.name = "Intel Corporation"
device.string = "0"
Ports:
analog-input-internal-mic: Internes Mikrofon (type: Mic, priority: 8900, availability group: Legacy 1, availability unknown)
analog-input-headphone-mic: Mikrofon (type: Mic, priority: 8700, availability group: Legacy 2, not available)
analog-input-headset-mic: Mikrofon am Kopfhörer (type: Headset, priority: 8800, availability group: Legacy 2, not available)
Active Port: analog-input-internal-mic
Formats:
pcm
Description
•