Skip to content

gst: Implement new pwaudio{src,sink} elements, based on GstAudioBase{Src,Sink}

George Kiagiadakis requested to merge github/fork/gkiagia/gstpwaudio into work

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.

Merge request reports