Open Bug 1902436 Opened 5 months ago Updated 5 months ago

Microphone list shows monitor devices of each microphone

Categories

(Core :: Audio/Video: Playback, defect, P2)

Firefox 129
defect

Tracking

()

UNCONFIRMED

People

(Reporter: pmenzel+bugzilla.mozilla.org, Unassigned)

References

Details

Attachments

(1 file)

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.

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.

Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core

jib, what's our current reasonning here? Should they show up by default or not?

Severity: -- → S3
Flags: needinfo?(jib)
Priority: -- → P2

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.

Flags: needinfo?(jib) → needinfo?(karlt)

Ok, let's put it behind a pref. I assume people who want to use them know how to flip a pref.

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.

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".

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)

Yeah, we know how to do it, it's a matter of what users expect, that's about it.

(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.

Flags: needinfo?(karlt)
See Also: → 1899771

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
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: