Anzeige

WPE, a New WebKit Port Optimised for Embedded (IBC 2017)

Igalia
Igalia
23. Oct 2017
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Similar a WPE, a New WebKit Port Optimised for Embedded (IBC 2017)(20)

Anzeige
Anzeige

WPE, a New WebKit Port Optimised for Embedded (IBC 2017)

  1. static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, WPE: a WebKit port optimized for embedded
  2. What is WPE? ● Web Platform for Embedded: a complete platform to run several services (plugins) on embedded devices (https://github.com/WebPlatformForEmbedded) ● Buildroot clone and yocto recipes ● WPE Framework: plugin/service launcher – WPE Compositor: Wayland based window compositor – WPE WebKit: web browser – And several more: TVControl, Netflix, etc ● WPE UI Framework: app development framework ● WPE Test Framework
  3. What is WPE? ● WPE is also the name of the official WebKit port for Embedded ● Stored in the official WebKit repository (upstream) ● By default targeted for desktop environments using Wayland ● Inside Web Platform for Embedded, it’s cloned as WPE Webkit ● Downstream repository with embedded specific patches
  4. History ● Born as an alternative to QtWebKit ● Not an official WebKit port anymore ● Current versions not updated since years ago ● QtWebEngine license issues (LGPLv3) ● Goal: up to date browser that can run on different hardware with small adaptations ● Fast ● Minimal dependencies ● Fullscreen single tab content
  5. Full Featured Browser ● Most of the common HTML5 features ● WebGL ● Accelerated canvas ● Hardware accelerated CSS 3D transformations ● Hardware accelerated video playback ● And keeps growing
  6. Small Set of Dependencies ● Commonly used GNU Linux libraries ● HarfBuzz, GnuTLS?, pixman, cairo, etc ● GStreamer for media playback ● GLES 2.0 for hardware accelerated rendering ● A functional Raspberry Pi image is about 40MB
  7. Multiprocess and Multithreaded ● Currently using 4 processes (may grow) ● UI Process ● Web Process ● Network Process ● Storage Process ● Intensive threading used inside the processes ● Composition ● Image decoding ● Media playback ● etc
  8. Targeting Low Performance HW ● Low memory footprint ● It’s possible to define limits to the memory consumption ● Able to play youtube.tv on an Raspberry Pi 0/1 ● Using textured video ● Raspberry Pi 0/1 is ~1000 DMIPS
  9. Adaptable to Different Hardware ● Requires appropriate GStreamer plugins ● Graphics backend abstraction: a backend defines a way to create/share/display graphics buffers ● Raspberry Pi 0/1/2/3 ● Broadcom Nexus ● Wayland
  10. Multimedia ● Hardware accelerated decoding where Gstreamer plugins are available (Raspberry Pi and Broadcom Nexus) ● Hardware accelerated video rendering using GLES (allows CSS 3D transformations on the video) ● External rendering (hole punch) when required
  11. Multimedia: MSE ● Latest version of the spec supported ● Mp4 support implemented, webm under development ● Youtube leanback conformance ● 2016 supported ● 2018 under development
  12. Multimedia: EME ● V1: supported with ClearKey and PlayReady ● V3: under development ● ClearKey ● PlayReady (using OpenCDM) ● Widevine (using OpenCDM)
  13. WebRTC ● Prototype implemented using OpenWebRTC (finally dropped) ● Currently libwebrtc support is being added (working on it together with Apple)
  14. Releasing ● From upstream: source tarballs every 6 weeks ● Periodical merges from upstream repository into Web Platform for Embedded one ● Currently defining a release policy that include stable branches and releases
  15. Questions? Igalia www.igalia.com Hall 14 stand N17 Metrological www.metrological.com Hall 14 stand E20 Come to visit us!!
Anzeige