Speaker
Description
Matching different clocks is a common problem in real-time audio processing — audio may originate from one device, and may need to be rendered to a different device driven by a different clock, possibly running at a slightly different rate. Managing these clock rate differences is an important factor in avoiding underruns and overruns in real-time audio applications.
This problem is partially addressed in GStreamer via GstClock's synchronisation and GstAudioBaseSink's clock slaving mechanisms. As the new de-facto Linux audio subsystem, PipeWire also implements clock rate matching and adaptive resampling, building on work done in the JACK community over the last decade and more.
In this talk we will lay out the basics of the problem space, and then review the state of the art in both PipeWire and GStreamer. Contrasting the approaches taken should be interesting in itself, and maybe we'll find some new ideas to be inspired by.
While the subject matter is a little bit in the weeds, there will be a gentle introduction for audience members with varying levels of familiarity with the topic.
Speaker bio | Arun is a developer/maintainer of GStreamer, PipeWire and PulseAudio, and the founder of Asymptotic, which provides consulting services around these projects. He enjoys working in the lower layers of the system stack, long walks on the beach, and thinking about the impact of modern type-safe languages on software development. |
---|