SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Reaching the Multimedia Web
Reaching the Multimedia Web
from Embedded Platforms with
from Embedded Platforms with
WPEWebKit
WPEWebKit
Philippe Normand
Philippe Normand
Embedded Linux Conference 2021
Embedded Linux Conference 2021
1
Talk outline
Talk outline
Intro
WPE architecture overview
Supported W3C specifications
Cog
WPE on Embedded platforms with Yocto
Using WPE in GStreamer Multimedia applications
2
Who am I
Who am I
WebKit committer and reviewer
GStreamer committer
Partner at Igalia:
Worker-owned coop, currently around 110 happy Igalians around the
world
Provides consulting services for various Free Software projects
3
WPE architecture
WPE architecture
overview
overview
4
What is WebKit
What is WebKit
WebEngine aimed for embedding HTML/CSS/JS in native applications
Forked from KHTML by Apple in 2004
Powers Safari, but also dozens of applications on various platforms
APIs provided by WebKit ports
5
Multi-process!
Multi-process!
6
WPE, a decoupled WebKit port
WPE, a decoupled WebKit port
Upstream in webkit.org
6 months release cycle, security updates
Not tied to any widget toolkit
Rendering and input events handling via loadable backends
7
Rendering backends
Rendering backends
Various implementations, most notably:
FDO backend
RDK backend (various devices supported under the RDK/Comcast
umbrella)
8
WPEBackend-FDO
WPEBackend-FDO
Depends on EGL, usually provided by Mesa or binary drivers
High level API provided for applications (browsers, but also other apps!)
Recommended by upstream WPE community
9
GStreamer
GStreamer
10
W3C Specs
W3C Specs
11
Specs, specs everywhere
Specs, specs everywhere
https://webkit.org/status/
12
MediaSource Extensions
MediaSource Extensions
Adaptive streaming for the Web
Widely used by most major video streaming platforms (Youtube, etc)
Can ingest DASH (with DASH.js)
WPE: enabled by default at build and runtime
Spec: https://w3c.github.io/media-source/
13
MSE in WPE
MSE in WPE
Chunks queued from JavaScript world to a SourceBuffer
One GStreamer WebKit Append pipeline per SourceBuffer
Demuxing and parsing of samples
Samples stored at WebCore’s MSE layer
Playback pipeline using a dedicated MediaPlayerPrivate implementation
Playbin3-based
Custom source element
14
Encrypted Media Extensions
Encrypted Media Extensions
Protected media content playback
Used by most video streaming platforms (Netflix, etc)
WPE: disabled by default due to runtime requirements (Content-
Decryption-Module)
CDMs integrated on per-product basis in WPE
Spec: https://www.w3.org/TR/encrypted-media/
15
EME in WPE
EME in WPE
Protected content signaled from demuxers to WPE through GStreamer
Protection events
WPE probes for supported platform CDMs through the OpenCDM API
Two CDM runtimes supported:
RDK Thunder
Sparkle-CDM
Content decryption in WPE through custom GStreamer decryptors
16
MediaCapabilities
MediaCapabilities
Media engine decoding/encoding capabilities probing
WPE: enabled by default at build time, disabled at runtime
Spec: https://w3c.github.io/media-capabilities/
17
MediaCapabilities in WPE
MediaCapabilities in WPE
Probing implemented through a GStreamer registry scanner
Runtime identification of encoders, decoders, (de)muxers
WebKit mimetype <-> GStreamer caps
18
WebAudio
WebAudio
Low-latency audio pipelines
Examples of use: games, music creations apps, any app requiring audio
feedback for user interations
WPE: enabled by default at build and runtime
Spec: https://www.w3.org/TR/webaudio/
19
WebAudio in WPE
WebAudio in WPE
Decoding pipeline relying on GStreamer decodebin
Playback pipeline sourcing WebKit audio samples from custom GStreamer
source
element
20
Media Capture & Streams
Media Capture & Streams
Access to Webcam/microphone/screencasting
Used by WebRTC apps mostly (Jitsi, etc)
WPE: enabled only in developer builds, plans for enabling by default in WPE
2.36
Spec: https://www.w3.org/TR/mediacapture-streams/
21
Media Capture & Streams in WPE
Media Capture & Streams in WPE
Capture device management with GstDeviceMonitor
One capture pipeline per device, feeding one-to-many appsinks for
consumption by WebKit
Rendering by MediaPlayer through custom mediastream GStreamer source
element
Screencasting through PipeWire
22
WebRTC
WebRTC
Real-Time P2P communication for browsers
Used for audio/video chatting, low-latency one-to-many broadcasting, ...
WPE:
LibWebRTC enabled only in developer builds
Unusable in releases (LibWebRTC is not bundled in tarballs + licensing
issues due to BoringSSL)
Plans for a GStreamer-WebRTC backend in WPE 2.36
Spec: https://www.w3.org/TR/webrtc/
23
MediaStream recording
MediaStream recording
Use-case: mostly WebRTC calls recording
Not enabled in WPE yet. WIP implementation:
Based on the new GstTranscoder GStreamer library (1.20)
Makes use of existing internal WPE WebRTC video encoder GStreamer
element
Spec: https://w3c.github.io/mediacapture-record/
24
Cog, the official WPE-based
Cog, the official WPE-based
browser
browser
Minimalistic design leveraging platform renderer modules:
Wayland, X11 (!), GTK4
DRM, Headless
Auto-probing of platform for renderer selection
Single web view, for now
Can be controlled through DBus
25
Running Cog without Wayland
Running Cog without Wayland
compositor
compositor
App use-cases: Kiosks, Set-Top-Box UIs, ... any fullscreen display
Wayland buffers (or DMABufs) imported as GBM Buffer objects
Rendering through DRM backend
Input events handled with libinput (keyboard, pointer, touch)
26
Headless Cog
Headless Cog
Use-case example: Apple Music audio player
No rendering at all, no GPU needed.
Need for custom DBus bridge for user-interaction:
-> example: Interaction
with JS Apple Music SDK for playback control
27
Deploying WPE/Cog on
Deploying WPE/Cog on
i.MX with Yocto
i.MX with Yocto
28
Yocto layers
Yocto layers
WPEBackends
Cog browser
Poky reference distro (including GStreamer 1.18.x)
(meta-freescale)
https://github.com/Igalia/meta-webkit/
29
Open-source etnaviv driver
Open-source etnaviv driver
Nowadays well supported in the kernel and Mesa, depending on specifics of
the
SoC though
Usable WPEBackends, only working in Weston:
WPEBackend-fdo (recommended)
WPEBackend-RDK/wayland
Upstream v4l2 plugin from gst-plugins-good for hardware decoding support
30
i.MX6 video decoding
i.MX6 video decoding
CODA960 kernel driver
Mature integration with gst-plugins-good v4l2 plugin
On QuadPlus: H.264 1080P@30 handled but sometimes drops frames:
720P recommended:
$ export
WEBKIT_GST_MAX_AVC1_RESOLUTION=720P
31
i.MX8M video decoding
i.MX8M video decoding
Hantro G1 kernel driver and integration with gst-plugins-good
Development by Collabora and Pengutronix
Released in kernel 5.12
Status:
1080P@30 H.264 smooth playback
Should allow for up to 4K@30 with VP8 and H.264 and 4K@60 with VP9
and HEVC
HEVC and VP9 support: Work in progress
32
YUV video rendering in WPE
YUV video rendering in WPE
Internal video sink used to support RGBA only
Since then, additional formats are now supported:
YUV textures through external-oes
I420, Y444, YV12, Y41B, Y42B, NV12, NV21, VUYA, A420
33
Alternative fallback: Proprietary
Alternative fallback: Proprietary
NXP drivers
NXP drivers
Where etnaviv / v4l2 decoders are not usable, fallback to NXP drivers
WPE supports the gstreamer-imx decoders as well
GL sink makes use of imxvideoconvert_g2d for zero-copy rendering
34
Using WPE in GStreamer
Using WPE in GStreamer
applications
applications
35
Use-case #1: Stinger transitions
Use-case #1: Stinger transitions
https://obsproject.com/wiki/Getting-Started-With-Track-Matte-Stinger-Transitions
36
Use-case #2: Lower thirds
Use-case #2: Lower thirds
37
Use-case #3: Score boards
Use-case #3: Score boards
38
Why use WPE/GStreamer for
Why use WPE/GStreamer for
this?
this?
No vendor-lockin in overlay editors
Vast pool of Web designers
Flexibility and broad platform support provided by GStreamer
39
GstWPE
GstWPE
Use-cases: HTML overlays, streaming/cloud browsers
GStreamer source element producing audio/video streams from a WPE
WebView
Two runtime modes:
Zero-copy from WPEBackend-FDO EGLImages to GL GStreamer sink
Software rasterizer with LLVMpipe to non-GL GStreamer sink
40
Simple examples
Simple examples
$ gst-play-1.0 --videosink gtkglsink 

wpe://https://linuxfoundation.org/



# Only with GStreamer git, should work in 1.20:

$ gst-play-1.0 --videosink gtksink 

wpe://https://linuxfoundation.org/
41
Sample pseudo-pipeline for
Sample pseudo-pipeline for
audio/video mixing
audio/video mixing
Don't forget to set wpesrc::draw-background to 0
Configure zorder value on compositor sink pads
wpesrc
asrc0
vsrc
src
filesrc
autovideosink
sink
autoaudiosink
sink
decodebin
asrc0
vsrc
sink
src
compositor
sink0
sink1
src
audiomixer
sink0
sink1
42
Web-augmented one-to-many
Web-augmented one-to-many
broadcasting
broadcasting
Dynamic overlays controlled through a NodeJS app
Mixed video encoded and broadcasted to a remote Janus video room
Video consumption through WebRTC
https://www.youtube.com/watch?v=QNZJYOuVGiE
43
Wrap-up
Wrap-up
WPEWebKit, WPEBackend-FDO, Cog:
GstWPE:
Yocto overlay:
Questions?
https://wpewebkit.org
https://gstreamer.freedesktop.org/documentation/wpe/
https://github.com/Igalia/meta-webkit
44

Weitere ähnliche Inhalte

Was ist angesagt?

Understanding blue store, Ceph's new storage backend - Tim Serong, SUSE
Understanding blue store, Ceph's new storage backend - Tim Serong, SUSEUnderstanding blue store, Ceph's new storage backend - Tim Serong, SUSE
Understanding blue store, Ceph's new storage backend - Tim Serong, SUSEOpenStack
 
Video Compression Techniques
Video Compression TechniquesVideo Compression Techniques
Video Compression Techniquescnssources
 
Wido den Hollander - 10 ways to break your Ceph cluster
Wido den Hollander - 10 ways to break your Ceph clusterWido den Hollander - 10 ways to break your Ceph cluster
Wido den Hollander - 10 ways to break your Ceph clusterShapeBlue
 
multimedia data and file format
multimedia data and file formatmultimedia data and file format
multimedia data and file formatALOK SAHNI
 
Java Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame GraphsJava Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame GraphsBrendan Gregg
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
 
Stackless Python In Eve
Stackless Python In EveStackless Python In Eve
Stackless Python In Evel xf
 
mpeg2ts1_es_pes_ps_ts_psi
mpeg2ts1_es_pes_ps_ts_psimpeg2ts1_es_pes_ps_ts_psi
mpeg2ts1_es_pes_ps_ts_psihexiay
 
Animation in the web
Animation in the webAnimation in the web
Animation in the webVishal Polley
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBrendan Gregg
 
SPU Optimizations-part 1
SPU Optimizations-part 1SPU Optimizations-part 1
SPU Optimizations-part 1Naughty Dog
 
HBase Blockcache 101
HBase Blockcache 101HBase Blockcache 101
HBase Blockcache 101Nick Dimiduk
 
X / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural OverviewX / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural OverviewMoriyoshi Koizumi
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler Systemzionsaint
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리YEONG-CHEON YOU
 

Was ist angesagt? (20)

Understanding blue store, Ceph's new storage backend - Tim Serong, SUSE
Understanding blue store, Ceph's new storage backend - Tim Serong, SUSEUnderstanding blue store, Ceph's new storage backend - Tim Serong, SUSE
Understanding blue store, Ceph's new storage backend - Tim Serong, SUSE
 
Video Compression Techniques
Video Compression TechniquesVideo Compression Techniques
Video Compression Techniques
 
Wido den Hollander - 10 ways to break your Ceph cluster
Wido den Hollander - 10 ways to break your Ceph clusterWido den Hollander - 10 ways to break your Ceph cluster
Wido den Hollander - 10 ways to break your Ceph cluster
 
multimedia data and file format
multimedia data and file formatmultimedia data and file format
multimedia data and file format
 
Unit vi
Unit viUnit vi
Unit vi
 
H.264 vs HEVC
H.264 vs HEVCH.264 vs HEVC
H.264 vs HEVC
 
Java Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame GraphsJava Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame Graphs
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
Stackless Python In Eve
Stackless Python In EveStackless Python In Eve
Stackless Python In Eve
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
 
mpeg2ts1_es_pes_ps_ts_psi
mpeg2ts1_es_pes_ps_ts_psimpeg2ts1_es_pes_ps_ts_psi
mpeg2ts1_es_pes_ps_ts_psi
 
Animation in the web
Animation in the webAnimation in the web
Animation in the web
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 
SPU Optimizations-part 1
SPU Optimizations-part 1SPU Optimizations-part 1
SPU Optimizations-part 1
 
Bluestore
BluestoreBluestore
Bluestore
 
HBase Blockcache 101
HBase Blockcache 101HBase Blockcache 101
HBase Blockcache 101
 
X / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural OverviewX / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural Overview
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler System
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
 

Ähnlich wie Reaching the multimedia web from embedded platforms with WPEWebkit

Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudLiz Warner
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitIgalia
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206Linaro
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futurephiln2
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...Igalia
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms philn2
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamercalvaris
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)Igalia
 
GStreamer support in WebKit. what’s new?
GStreamer support in WebKit. what’s new?GStreamer support in WebKit. what’s new?
GStreamer support in WebKit. what’s new?philn2
 
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)GStreamer support in WebKit. What's new? (GStreamer Conference 2015)
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
DCC Labs Company Presentation
DCC Labs Company PresentationDCC Labs Company Presentation
DCC Labs Company PresentationDCC Labs
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Igalia
 
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...Igalia
 
AccessGrid-to-Go : Providing AccessGrid access on Personal ...
AccessGrid-to-Go : Providing AccessGrid access on Personal ...AccessGrid-to-Go : Providing AccessGrid access on Personal ...
AccessGrid-to-Go : Providing AccessGrid access on Personal ...Videoguy
 
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformPorting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformRyo Jin
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...Igalia
 
Vulkan Video in GStreamer
Vulkan Video in GStreamerVulkan Video in GStreamer
Vulkan Video in GStreamerIgalia
 
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...Amir Zmora
 

Ähnlich wie Reaching the multimedia web from embedded platforms with WPEWebkit (20)

Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206MOVED: RDK/WPE Port on DB410C - SFO17-206
MOVED: RDK/WPE Port on DB410C - SFO17-206
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/future
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)
 
GStreamer support in WebKit. what’s new?
GStreamer support in WebKit. what’s new?GStreamer support in WebKit. what’s new?
GStreamer support in WebKit. what’s new?
 
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)GStreamer support in WebKit. What's new? (GStreamer Conference 2015)
GStreamer support in WebKit. What's new? (GStreamer Conference 2015)
 
Mile High Video 2019
Mile High Video 2019Mile High Video 2019
Mile High Video 2019
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
DCC Labs Company Presentation
DCC Labs Company PresentationDCC Labs Company Presentation
DCC Labs Company Presentation
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)
 
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...
How Igalia Is Driving Innovation In Embedded Systems With Open Source Technol...
 
AccessGrid-to-Go : Providing AccessGrid access on Personal ...
AccessGrid-to-Go : Providing AccessGrid access on Personal ...AccessGrid-to-Go : Providing AccessGrid access on Personal ...
AccessGrid-to-Go : Providing AccessGrid access on Personal ...
 
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformPorting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
 
Vulkan Video in GStreamer
Vulkan Video in GStreamerVulkan Video in GStreamer
Vulkan Video in GStreamer
 
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
 

Mehr von Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 

Mehr von Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 

Kürzlich hochgeladen

"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查ydyuyu
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...kajalverma014
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.krishnachandrapal52
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxgalaxypingy
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrHenryBriggs2
 
Power point inglese - educazione civica di Nuria Iuzzolino
Power point inglese - educazione civica di Nuria IuzzolinoPower point inglese - educazione civica di Nuria Iuzzolino
Power point inglese - educazione civica di Nuria Iuzzolinonuriaiuzzolino1
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptxAsmae Rabhi
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样ayvbos
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...gajnagarg
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfJOHNBEBONYAP1
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdfMatthew Sinclair
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsMonica Sydney
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasDigicorns Technologies
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsMonica Sydney
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoilmeghakumariji156
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge GraphsEleniIlkou
 

Kürzlich hochgeladen (20)

"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 
PowerDirector Explination Process...pptx
PowerDirector Explination Process...pptxPowerDirector Explination Process...pptx
PowerDirector Explination Process...pptx
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
Power point inglese - educazione civica di Nuria Iuzzolino
Power point inglese - educazione civica di Nuria IuzzolinoPower point inglese - educazione civica di Nuria Iuzzolino
Power point inglese - educazione civica di Nuria Iuzzolino
 
75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx75539-Cyber Security Challenges PPT.pptx
75539-Cyber Security Challenges PPT.pptx
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 

Reaching the multimedia web from embedded platforms with WPEWebkit

  • 1. Reaching the Multimedia Web Reaching the Multimedia Web from Embedded Platforms with from Embedded Platforms with WPEWebKit WPEWebKit Philippe Normand Philippe Normand Embedded Linux Conference 2021 Embedded Linux Conference 2021 1
  • 2. Talk outline Talk outline Intro WPE architecture overview Supported W3C specifications Cog WPE on Embedded platforms with Yocto Using WPE in GStreamer Multimedia applications 2
  • 3. Who am I Who am I WebKit committer and reviewer GStreamer committer Partner at Igalia: Worker-owned coop, currently around 110 happy Igalians around the world Provides consulting services for various Free Software projects 3
  • 5. What is WebKit What is WebKit WebEngine aimed for embedding HTML/CSS/JS in native applications Forked from KHTML by Apple in 2004 Powers Safari, but also dozens of applications on various platforms APIs provided by WebKit ports 5
  • 7. WPE, a decoupled WebKit port WPE, a decoupled WebKit port Upstream in webkit.org 6 months release cycle, security updates Not tied to any widget toolkit Rendering and input events handling via loadable backends 7
  • 8. Rendering backends Rendering backends Various implementations, most notably: FDO backend RDK backend (various devices supported under the RDK/Comcast umbrella) 8
  • 9. WPEBackend-FDO WPEBackend-FDO Depends on EGL, usually provided by Mesa or binary drivers High level API provided for applications (browsers, but also other apps!) Recommended by upstream WPE community 9
  • 12. Specs, specs everywhere Specs, specs everywhere https://webkit.org/status/ 12
  • 13. MediaSource Extensions MediaSource Extensions Adaptive streaming for the Web Widely used by most major video streaming platforms (Youtube, etc) Can ingest DASH (with DASH.js) WPE: enabled by default at build and runtime Spec: https://w3c.github.io/media-source/ 13
  • 14. MSE in WPE MSE in WPE Chunks queued from JavaScript world to a SourceBuffer One GStreamer WebKit Append pipeline per SourceBuffer Demuxing and parsing of samples Samples stored at WebCore’s MSE layer Playback pipeline using a dedicated MediaPlayerPrivate implementation Playbin3-based Custom source element 14
  • 15. Encrypted Media Extensions Encrypted Media Extensions Protected media content playback Used by most video streaming platforms (Netflix, etc) WPE: disabled by default due to runtime requirements (Content- Decryption-Module) CDMs integrated on per-product basis in WPE Spec: https://www.w3.org/TR/encrypted-media/ 15
  • 16. EME in WPE EME in WPE Protected content signaled from demuxers to WPE through GStreamer Protection events WPE probes for supported platform CDMs through the OpenCDM API Two CDM runtimes supported: RDK Thunder Sparkle-CDM Content decryption in WPE through custom GStreamer decryptors 16
  • 17. MediaCapabilities MediaCapabilities Media engine decoding/encoding capabilities probing WPE: enabled by default at build time, disabled at runtime Spec: https://w3c.github.io/media-capabilities/ 17
  • 18. MediaCapabilities in WPE MediaCapabilities in WPE Probing implemented through a GStreamer registry scanner Runtime identification of encoders, decoders, (de)muxers WebKit mimetype <-> GStreamer caps 18
  • 19. WebAudio WebAudio Low-latency audio pipelines Examples of use: games, music creations apps, any app requiring audio feedback for user interations WPE: enabled by default at build and runtime Spec: https://www.w3.org/TR/webaudio/ 19
  • 20. WebAudio in WPE WebAudio in WPE Decoding pipeline relying on GStreamer decodebin Playback pipeline sourcing WebKit audio samples from custom GStreamer source element 20
  • 21. Media Capture & Streams Media Capture & Streams Access to Webcam/microphone/screencasting Used by WebRTC apps mostly (Jitsi, etc) WPE: enabled only in developer builds, plans for enabling by default in WPE 2.36 Spec: https://www.w3.org/TR/mediacapture-streams/ 21
  • 22. Media Capture & Streams in WPE Media Capture & Streams in WPE Capture device management with GstDeviceMonitor One capture pipeline per device, feeding one-to-many appsinks for consumption by WebKit Rendering by MediaPlayer through custom mediastream GStreamer source element Screencasting through PipeWire 22
  • 23. WebRTC WebRTC Real-Time P2P communication for browsers Used for audio/video chatting, low-latency one-to-many broadcasting, ... WPE: LibWebRTC enabled only in developer builds Unusable in releases (LibWebRTC is not bundled in tarballs + licensing issues due to BoringSSL) Plans for a GStreamer-WebRTC backend in WPE 2.36 Spec: https://www.w3.org/TR/webrtc/ 23
  • 24. MediaStream recording MediaStream recording Use-case: mostly WebRTC calls recording Not enabled in WPE yet. WIP implementation: Based on the new GstTranscoder GStreamer library (1.20) Makes use of existing internal WPE WebRTC video encoder GStreamer element Spec: https://w3c.github.io/mediacapture-record/ 24
  • 25. Cog, the official WPE-based Cog, the official WPE-based browser browser Minimalistic design leveraging platform renderer modules: Wayland, X11 (!), GTK4 DRM, Headless Auto-probing of platform for renderer selection Single web view, for now Can be controlled through DBus 25
  • 26. Running Cog without Wayland Running Cog without Wayland compositor compositor App use-cases: Kiosks, Set-Top-Box UIs, ... any fullscreen display Wayland buffers (or DMABufs) imported as GBM Buffer objects Rendering through DRM backend Input events handled with libinput (keyboard, pointer, touch) 26
  • 27. Headless Cog Headless Cog Use-case example: Apple Music audio player No rendering at all, no GPU needed. Need for custom DBus bridge for user-interaction: -> example: Interaction with JS Apple Music SDK for playback control 27
  • 28. Deploying WPE/Cog on Deploying WPE/Cog on i.MX with Yocto i.MX with Yocto 28
  • 29. Yocto layers Yocto layers WPEBackends Cog browser Poky reference distro (including GStreamer 1.18.x) (meta-freescale) https://github.com/Igalia/meta-webkit/ 29
  • 30. Open-source etnaviv driver Open-source etnaviv driver Nowadays well supported in the kernel and Mesa, depending on specifics of the SoC though Usable WPEBackends, only working in Weston: WPEBackend-fdo (recommended) WPEBackend-RDK/wayland Upstream v4l2 plugin from gst-plugins-good for hardware decoding support 30
  • 31. i.MX6 video decoding i.MX6 video decoding CODA960 kernel driver Mature integration with gst-plugins-good v4l2 plugin On QuadPlus: H.264 1080P@30 handled but sometimes drops frames: 720P recommended: $ export WEBKIT_GST_MAX_AVC1_RESOLUTION=720P 31
  • 32. i.MX8M video decoding i.MX8M video decoding Hantro G1 kernel driver and integration with gst-plugins-good Development by Collabora and Pengutronix Released in kernel 5.12 Status: 1080P@30 H.264 smooth playback Should allow for up to 4K@30 with VP8 and H.264 and 4K@60 with VP9 and HEVC HEVC and VP9 support: Work in progress 32
  • 33. YUV video rendering in WPE YUV video rendering in WPE Internal video sink used to support RGBA only Since then, additional formats are now supported: YUV textures through external-oes I420, Y444, YV12, Y41B, Y42B, NV12, NV21, VUYA, A420 33
  • 34. Alternative fallback: Proprietary Alternative fallback: Proprietary NXP drivers NXP drivers Where etnaviv / v4l2 decoders are not usable, fallback to NXP drivers WPE supports the gstreamer-imx decoders as well GL sink makes use of imxvideoconvert_g2d for zero-copy rendering 34
  • 35. Using WPE in GStreamer Using WPE in GStreamer applications applications 35
  • 36. Use-case #1: Stinger transitions Use-case #1: Stinger transitions https://obsproject.com/wiki/Getting-Started-With-Track-Matte-Stinger-Transitions 36
  • 37. Use-case #2: Lower thirds Use-case #2: Lower thirds 37
  • 38. Use-case #3: Score boards Use-case #3: Score boards 38
  • 39. Why use WPE/GStreamer for Why use WPE/GStreamer for this? this? No vendor-lockin in overlay editors Vast pool of Web designers Flexibility and broad platform support provided by GStreamer 39
  • 40. GstWPE GstWPE Use-cases: HTML overlays, streaming/cloud browsers GStreamer source element producing audio/video streams from a WPE WebView Two runtime modes: Zero-copy from WPEBackend-FDO EGLImages to GL GStreamer sink Software rasterizer with LLVMpipe to non-GL GStreamer sink 40
  • 41. Simple examples Simple examples $ gst-play-1.0 --videosink gtkglsink wpe://https://linuxfoundation.org/ # Only with GStreamer git, should work in 1.20: $ gst-play-1.0 --videosink gtksink wpe://https://linuxfoundation.org/ 41
  • 42. Sample pseudo-pipeline for Sample pseudo-pipeline for audio/video mixing audio/video mixing Don't forget to set wpesrc::draw-background to 0 Configure zorder value on compositor sink pads wpesrc asrc0 vsrc src filesrc autovideosink sink autoaudiosink sink decodebin asrc0 vsrc sink src compositor sink0 sink1 src audiomixer sink0 sink1 42
  • 43. Web-augmented one-to-many Web-augmented one-to-many broadcasting broadcasting Dynamic overlays controlled through a NodeJS app Mixed video encoded and broadcasted to a remote Janus video room Video consumption through WebRTC https://www.youtube.com/watch?v=QNZJYOuVGiE 43
  • 44. Wrap-up Wrap-up WPEWebKit, WPEBackend-FDO, Cog: GstWPE: Yocto overlay: Questions? https://wpewebkit.org https://gstreamer.freedesktop.org/documentation/wpe/ https://github.com/Igalia/meta-webkit 44