| >Do note that dmix runs in user-space like any other sound server. Dmix is explicitly not a sound server, it is a plugin implemented in the alsa library that does "cooperative" mixing of the sound in an shm region. Adding all those other features and turning it into a daemon is a rather roundabout way to re-implement pulseaudio. >No, I specifically mean the use of large buffers and rewind usage compared to smaller buffers Right, but an application can still submit a large buffer that then needs to get muxed down. Pipewire has to account for this possibly by emulating that rewind inside the daemon. >Lennart himself said that most programs should not target the PA API I think you have missed this emphasized part: >For now, the PulseAudio API should be used only for applications that want to expose sound-server-specific functionality (such as mixers) or when a PCM output abstraction layer is already available in your application and it thus makes sense to add an additional backend to it for PulseAudio to keep the stack of audio layers minimal So that would be why gstreamer targeted the PA API, anyway. >The "proof" that I mention is that most programs ended up targeting the PA API _anyway_ , despite the recommendations of the author That article was written in 2008, things changed since then. Wim is currently saying the same type of things about the pipewire API (because it is unstable and unwieldy) but I suspect eventually it will become stabilized, gain some convenience features and then become used by applications just like the PA API... |
I don't understand the purpose of this semantics discussion. I was just trying to say that dmix was very alive and growing, and for a time it even was going to be the replacement of the mostly-useless DE-specific sound servers, which are the reason many were abandoned. Whether you want to call it a sound server or not is irrelevant since it fulfilled the same role and had the same features as other sound servers of the era.
> Right, but an application can still submit a large buffer that then needs to get muxed down. Pipewire has to account for this possibly by emulating that rewind inside the daemon.
The point was that Pipewire didn't follow this Pulseaudio-specific design which actually was one of the primary technical improvements in Pulseaudio and at the same time the major cause of incompatibilities.
> I think you have missed this emphasized part
No, I have not missed this emphasized part. The point was that Lennart himself said that most programs should not target the PA API. Unless you are going to claim that gstreamer itself is "most programs" , my point still stands: Lennart himself said that most programs should not target the PA API.
> That article was written in 2008, things changed since then.
Actually, not much has changed since then in either ALSA or PA APIs. Everyone (including Lennart) _still_ recommends you target the ALSA API directly.
But, anyway, the point was to show that even despite the recommendation of the author of one of the APIs not to use it at the time, everyone used it anyway, further complicating the mess, and resulting in PW having to implement the PA API for a smooth transition.
If only stuff like gst had used the PA API, PW could have just shipped a gst module and called it a day. There would have been absolutely no reason to implement the PA API at all. Well, other than the gnome mixer program.