E Mixer creates many duplicate recording sinks #35

Open
opened 2023-03-06 16:59:50 -08:00 by dankasak · 1 comment

The Mixer module is creating a lot of duplicate recording sinks, as viewed in pavumixer. It is also consuming a considerable amount of CPU ( which is how I noticed ). Steps to reproduce and observe:

  • Have at least 1 application playing audio.

  • Open pavumixer and click on the "Recording" tab. Observe the list of clients currently "recording". I generally have none at this point:

  • Click the Mixer gadget ( mine is embedded in a shelf ). Notice that a single recording sink is created, called __e_mon:

  • Click the Mixer module to close the pop-up window, and the sink disappears.

  • Now click the Mixer module to re-open the pop-up window. This time, change the volume levels of the client playing audio ( in this example, Firefox ), and note the duplicate __e_mon recording sinks:

  • Maximize pavucontrol, and scroll down the list to observe the large number:

As mentioned, this has a serious impact on CPU utilisation, in Enlightenment and X. When I restart E, all the duplicate sinks are removed.

The Mixer module is creating a lot of duplicate recording sinks, as viewed in pavumixer. It is also consuming a considerable amount of CPU ( which is how I noticed ). Steps to reproduce and observe: - Have at least 1 application playing audio. - Open pavumixer and click on the "Recording" tab. Observe the list of clients currently "recording". I generally have none at this point: ![](https://tesla.duckdns.org/img/no_recording_sinks.jpg) - Click the Mixer gadget ( mine is embedded in a shelf ). Notice that a single recording sink is created, called __e_mon: ![](https://tesla.duckdns.org/img/one_recording_sink.png) - Click the Mixer module to close the pop-up window, and the sink disappears. - Now click the Mixer module to re-open the pop-up window. This time, change the volume levels of the client playing audio ( in this example, Firefox ), and note the duplicate __e_mon recording sinks: ![](https://tesla.duckdns.org/img/multiple_recording_sinks.png) - Maximize pavucontrol, and scroll down the list to observe the large number: ![](https://tesla.duckdns.org/img/many_recording_sinks.jpg) As mentioned, this has a serious impact on CPU utilisation, in Enlightenment and X. When I restart E, all the duplicate sinks are removed.
Owner

I don't see duplicates like you - i do see the source outputs. e (and e's mixer tool) use these to monitor playback, output and input streams. pavucontrol also does the same thing. mixer popup appears - i see one of e's monitor outputs then when popup goes away, it disappears (in pavucontrol). e and e's mixer tool (both inherit the same backend code in the mixer module) specifically ignore any outputs named __e_mon as it knows it's one of its own monitor streams. pavucontrol does the same trick. it names them "Peak detect".

So this command to list media:

pactl list | grep media.name
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"

that's with pavucontrol running. now i open e's mixer popup:

	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "__e_mon"

now i hide the popup:

	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"

i run e's mixer tool:

	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "__e_mon"
	        media.name = "__e_mon"
	        media.name = "__e_mon"

Close the emixer tool window:

	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"
	        media.name = "Peak detect"

Now close pavucontrol:

i.e. - nothing. I now pop up e's mixer popup again:

Also nothing. No output playing or anything recording and nothnig to monitor...

So I'm not seeing some leak in monitors here. Regular pulseaudio running. 3 Audio devices (2 USB and a HDMI device).

I guess I should have e ignore "Peak detect" recording streams as they are just pavucontrol's own way of doing what e';s mixer popup does and emixer tool does - monitor input sources to show the current sound levels. e's mixer popup will only show the microphone volume level monitor if it sees something recording at the time (i did this for the case you use e.g. zoom or whatever and you now know what is asking to record - the cases for the 2 mixer tools is one where they are not actually recording but monitoring so filtering is probably a better experience).

I don't see duplicates like you - i do see the source outputs. e (and e's mixer tool) use these to monitor playback, output and input streams. pavucontrol also does the same thing. mixer popup appears - i see one of e's monitor outputs then when popup goes away, it disappears (in pavucontrol). e and e's mixer tool (both inherit the same backend code in the mixer module) specifically ignore any outputs named __e_mon as it knows it's one of its own monitor streams. pavucontrol does the same trick. it names them "Peak detect". So this command to list media: ``` pactl list | grep media.name ``` ``` media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" ``` that's with pavucontrol running. now i open e's mixer popup: ``` media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "__e_mon" ``` now i hide the popup: ``` media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" ``` i run e's mixer tool: ``` media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "__e_mon" media.name = "__e_mon" media.name = "__e_mon" ``` Close the emixer tool window: ``` media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" media.name = "Peak detect" ``` Now close pavucontrol: ``` ``` i.e. - nothing. I now pop up e's mixer popup again: ``` ``` Also nothing. No output playing or anything recording and nothnig to monitor... So I'm not seeing some leak in monitors here. Regular pulseaudio running. 3 Audio devices (2 USB and a HDMI device). I guess I should have e ignore "Peak detect" recording streams as they are just pavucontrol's own way of doing what e';s mixer popup does and emixer tool does - monitor input sources to show the current sound levels. e's mixer popup will only show the microphone volume level monitor if it sees something recording at the time (i did this for the case you use e.g. zoom or whatever and you now know what is asking to record - the cases for the 2 mixer tools is one where they are not actually recording but monitoring so filtering is probably a better experience).
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: enlightenment/enlightenment#35
No description provided.