By Miguel Ángel Gómez.
Browsers are the killer applications that many network device manufacturers need to embed in their products. However, there are many challenges that hinder the dream of building performant web browsers for low-cost devices. With the aim of making this dream a reality, at Igalia we have released WPE WebKit, a new WebKit Port optimized for Embedded platforms. WPE WebKit is designed with simplicity and performance in mind: a hardware accelerated fullscreen browser with multimedia support, as small (both in memory usage and disk space) and light as possible, and implementing the most relevant HTML APIs defined.WPE WebKit is now part of RDK and has been accepted upstream at webkit.org as a new official port of WebKit. We expect WPE WebKit to be deployed in millions of STB by the end of Q3.
(c) IBC 2017
https://show.ibc.org/ibc-content-everywhere-hub-programme/wpe-a-new-webkit-port-optimized-for-embedded-
17-Sep-2017
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
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