pipewire
play

PipeWire Wim Taymans Principal Software Engineer FOSDEM 2019 - PowerPoint PPT Presentation

PipeWire Wim Taymans Principal Software Engineer FOSDEM 2019 PipeWire | Wim Taymans 1 What is it Multimedia sharing and processing engine PipeWire | Wim Taymans 6 The multimedia stack App Browser Skype GStreamer VLC Ardour wayland


  1. PipeWire Wim Taymans Principal Software Engineer FOSDEM 2019 PipeWire | Wim Taymans 1

  2. What is it Multimedia sharing and processing engine PipeWire | Wim Taymans 6

  3. The multimedia stack App Browser Skype GStreamer VLC Ardour wayland Pulseaudio JACK V4l2 bluetooth alsa va-api DRM Kernel PipeWire | Wim Taymans 7

  4. PipeWire Session App Manager GStreamer VLC App1 App2 JACK Wayland PipeWire Daemon V4l2 bluetooth alsa va-api DRM Kernel PipeWire | Wim Taymans 8

  5. 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 PipeWire | Wim Taymans 21

  6. 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 PipeWire | Wim Taymans 22

  7. V4l2 capture/sharing Client1 Client2 ... To screen PipeWire-0 V4l2 bluetooth alsa va-api DRM Kernel PipeWire | Wim Taymans 23

  8. Video capture ● Systemd socket activation in Fedora 29 ● Gstreamer pipewiresrc ● Device Monitor ● Autovideosrc → Should work in cheese PipeWire | Wim Taymans 24

  9. PipeWire | Wim Taymans 25

  10. Wayland screen sharing Mutter Screen Recording Remote Desktop Portal PipeWire-0 PipeWire | Wim Taymans 26

  11. PipeWire | Wim Taymans 28

  12. 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 PipeWire | Wim Taymans 29

  13. Audio setup Session Manager PipeWire-0 Hw:0 Hw:0 Hw:1 a2dp V4l2 bluetooth alsa va-api DRM Kernel PipeWire | Wim Taymans 30

  14. Pro audio PipeWire-0 Hw:0 Hw:0 Ardour Scope PipeWire | Wim Taymans 31

  15. 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 PipeWire | Wim Taymans 32

  16. Audio server Session Media player Alsa app JACK app Manager ... Hw:0 PipeWire-0 PipeWire | Wim Taymans 33

  17. API support ● PulseAudio apps ● Replacement libpulse.so, libpulse-mainloop-glib.so ● Built with streams API ● ALSA apps ● PipeWire plugin ● Built with streams API PipeWire | Wim Taymans 34

  18. 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 PipeWire | Wim Taymans 35

  19. PipeWire | Wim Taymans 36

  20. PipeWire | Wim Taymans 37

  21. PipeWire | Wim Taymans 38

  22. 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,...) PipeWire | Wim Taymans 39

  23. 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 PipeWire | Wim Taymans 43

  24. http://pipewire.org http://pipewire.org https://github.com/PipeWire/pipewire https://github.com/PipeWire/pipewire Questions? Questions? PipeWire | Wim Taymans 44

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend