gst: Implement new pwaudio{src,sink} elements, based on GstAudioBase{Src,Sink}
These are much more reliable elements to use for audio data.
- GstAudioBaseSink provides a reliable clock implementation based on the number of samples read/written
- on the pipewire side we make sure to dequeue, fill and enqueue a single buffer inside the process() function, which avoids underruns
Both elements share a common ringbuffer that actually implements the pipewire integration.
NOTE: pwaudiosrc did not work properly last time I checked. I am not sure where the problem is, if it originates in the gstreamer code or actually somewhere inside pipewire's ALSA capture path.
@wtay , I am not sure if you think this is a good idea or if you had something else in mind for fixing this. The problem was, at the time I created this (~2 months ago), that I couldn't get audio reliably to the sound card through pipewiresink and after playing with the pipewiresink code a bit, I realized I needed a ringbuffer that could be read in a thread that is driven by pipewire's ALSA sink instead of driven by gstreamer.