Pipewire Slides

Pipewire Slides

PipeWire Wim Taymans Principal Software Engineer FOSDEM 2019 1 PipeWire | Wim Taymans What is it Multimedia sharing and processing engine 6 PipeWire | Wim Taymans The multimedia stack App Browser Skype GStreamer VLC Ardour Pulseaudio JACK wayland V4l2 bluetooth alsa va-api DRM Kernel 7 PipeWire | Wim Taymans PipeWire App Session Manager GStreamer VLC App1 App2 JACK Wayland PipeWire Daemon V4l2 bluetooth alsa va-api DRM Kernel 8 PipeWire | Wim Taymans Features ● Exchange media with devices and other apps ● Zero copy, shared memory, memfd, dmabuf, eventfd ● Security per application ● Visible objects (R), methods (WX), .. ● RT capable, low latency (<1.5ms) ● All media types + generic control streams ● Simple JACK-like scheduler + feedback loops ● Extensible: types, protocol, ... ● External session manager implements policy 21 PipeWire | Wim Taymans Session manager ● Setup of devices ● DSP processing, effects, mixers, .. ● Security of clients ● What they can see, default permissions ● Management of links/nodes in the graph ● What nodes and effects to link to (profiles, roles, ..) ● Suspend of idle devices, volume restore, … ● The things you want to configure 22 PipeWire | Wim Taymans V4l2 capture/sharing Client1 Client2 ... To screen PipeWire-0 V4l2 bluetooth alsa va-api DRM Kernel 23 PipeWire | Wim Taymans Video capture ● Systemd socket activation in Fedora 29 ● Gstreamer pipewiresrc ● Device Monitor ● Autovideosrc → Should work in cheese 24 PipeWire | Wim Taymans 25 PipeWire | Wim Taymans Wayland screen sharing Mutter Screen Recording Remote Desktop Portal PipeWire-0 26 PipeWire | Wim Taymans 28 PipeWire | Wim Taymans Audio Support ● Pro Audio model like JACK is choosen ● 1 format (float32) ● 1 buffer size (but is dynamic in PipeWire) ● Channels are split into mono streams ● All nodes are woken up in each cycle in turn ● Sinks have an audio adapter in front to mix, merge, resample, split and convert the channels ● Sinks are created/destroyed dynamically ● Multiple sinks/sources ● Automatic clock slaving 29 PipeWire | Wim Taymans Audio setup Session Manager PipeWire-0 Hw:0 Hw:0 Hw:1 a2dp V4l2 bluetooth alsa va-api DRM Kernel 30 PipeWire | Wim Taymans Pro audio PipeWire-0 Hw:0 Hw:0 Ardour Scope 31 PipeWire | Wim Taymans Audio stream ● Takes input from client (asynchronously) ● Does conversion ● Resample ● channelmix/volume ● Format conversion ● Channel splitting into DSP ● Decouples server buffer size from client requested latency ● Flush/drain 32 PipeWire | Wim Taymans Audio server Session Media player Alsa app JACK app Manager ... Hw:0 PipeWire-0 33 PipeWire | Wim Taymans API support ● PulseAudio apps ● Replacement libpulse.so, libpulse-mainloop-glib.so ● Built with streams API ● ALSA apps ● PipeWire plugin ● Built with streams API 34 PipeWire | Wim Taymans JACK support ● Integration with device reservation API ● When JACK claims device, replace our device with JACK client and we simply become a jack client. ● For sandboxed apps ● Replacement libjack.so ● Built on top of native PipeWire 35 PipeWire | Wim Taymans 36 PipeWire | Wim Taymans 37 PipeWire | Wim Taymans 38 PipeWire | Wim Taymans Latest changes (work branch) ● Unit tests + benchmarks + api cleanups ● Client permission API ● MIT relicensed ● DLL for resampling and audio timing in devices ● Cursor and bitmap metadata ● Device objects + profiles ● Work on pavucontrol (peaks resampler, profiles, volumes,...) 39 PipeWire | Wim Taymans Future plans ● More Latency/timing handling between nodes ● More session policy (dynamic samplerate, compressed formats, ...) ● Merging devices/clock slaving ● Transport ● Video path/effects… ● JACK handover ● Implement missing pulseaudio features ● See https://github.com/PipeWire/pipewire/wiki/TODO 43 PipeWire | Wim Taymans http://pipewire.org https://github.com/PipeWire/pipewire Questions? 44 PipeWire | Wim Taymans.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us