SlideShare a Scribd company logo
Efficient multimedia 
support in QtWebKit 
on Raspberry Pi
Talk outline 
• Raspberry Pi 
• WebKit architecture(s) with 
emphasis on Media playback 
• Platform-level improvements 
for QtWebKit
Raspberry Pi - Model B 
• 700MHz single-core ARMv6 CPU 
• Broadcom BCM2835 VideoCore IV 
• 512 MB RAM (partly allocated for GPU)
GStreamer OpenMax (gst-omx) 
• Hardware decoders for H.264, VP8, 
Theora 
• meta:EGLImage 
• Custom audio sinks: HDMI and analog 
• Very good integration within playbin

Recommended for you

Chromium Ozone
Chromium OzoneChromium Ozone
Chromium Ozone

Ozone is a wrapper that creates a unified platform interface at runtime, allowing Chromium to run on multiple platforms like Wayland and X11 from a single binary. Igalia has been working on Ozone support for Wayland since 2016, facing many challenges due to Wayland's restrictions, while the X11 support added more recently proved easier through refactoring. Overall, Ozone has proven to be a reasonable approach for Linux by providing a common interface while each platform still has specific implementation details.

web engines hackfestchromiumozone
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM

The document discusses embedding Chromium into the Automotive Grade Linux (AGL) demo platform using the Web Application Manager (WAM). Currently, WAM and a modified version of Chromium from the LG WebOS project are used. Considering moving to use the Chromium Embedded Framework (CEF) instead, which could simplify keeping WAM and Chromium in sync with upstream changes. The proposed approach would adapt WAM to connect directly to CEF rather than a customized Chromium version.

chromiumwamagl
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...

By Julie Kim. Julie will be presenting the work that has been done over the last months to develop for the AGL platform a modern Chromium based Web Application Manager (WAM) that enables running HTML5 IVI applications on the system. These different applications can define specific levels of integration and security on the platform, and can be run seamlessly on different hardware architectures. Automotive Grade Linux All Member Meeting Japan 2019 March 5 - 6, 2019 Tokyo, Japan https://events.linuxfoundation.org/events/agl-all-member-meeting-japan/

automotiveaglchromium
Premises of the project 
• Fullscreen browser, no tabs, no WM 
• Focus on media consumption web-apps 
and Youtube TV 
• OpenGL for rendering 
• Qt5 platform, EGLFS QPA
WebKit rendering - from HTML to the screen
WebKit rendering - the forest
WebKit1 rendering (with OpenGL) 
• GraphicsLayers are backed by GL textures 
• The video player has its own GraphicsLayer 
• RenderLayers are traversed and painted 
recursively (to their GraphicsLayers): 
children below -> self -> children above 
• Composition: GraphicsLayers are stacked 
to produce the final result

Recommended for you

WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project

This document discusses WebKitGtk+, an open source web engine used in many applications. It summarizes the history and architecture of WebKit, describes how WebKitGtk+ integrates with GNOME platforms, and outlines how to get involved with the WebKit community through contributing code, testing, or participating in discussions.

webkitgnomewebkitgtk
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)

CEF (Chromium Embedded Framework) is a library based on Chromium that allows embedding the Chromium browser engine in other applications. It provides APIs to access browser features like loading web pages, JavaScript execution, and window management while handling processes and security. CEF can fulfill the customer's requirements like running a fullscreen kiosk browser, disabling file access, and supporting custom URL schemes and error pages. JavaScript execution and extension capabilities are provided to load required customer code. The size and performance is similar to Chromium. CEF remains in sync with Chromium releases while maintaining stable APIs.

chromiumcefweh
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...

By Philippe Normand. WPEWebKit[1] is a WebKit flavor (also known as port) specially crafted for embedded platforms and use-cases. During this talk I would present WPEWebKit's architecture with a special emphasis on its multimedia backend based on GStreamer[2] and implementing support for the MSE[3], EME[4], MediaCapabilities specifications. I would also present a case study on how to successfully integrate WPEWebKit on i.MX6 and i.MX8M platforms with the Cog[5] standalone reference web-app container or within existing Qt5 applications, using the WPEQt QML plugin. [1] https://wpewebkit.org [2] https://gstreamer.freedesktop.org [3] https://www.w3.org/TR/media-source/ [4] https://www.w3.org/TR/encrypted-media/ [5] https://github.com/Igalia/cog Linaro Connect San Diego 2019 September 23-27, 2019 https://connect.linaro.org/resources/san19/

wpewebkitembedded
WebKit2 rendering (OpenGL) - processes 
• Rendering split into 2 processes: UI and Web 
• Web process renders the layers (similar 
to WebKit1 rendering) 
• UI process composites and shows them 
• GraphicsLayers shared using GraphicsSurfaces 
• A GraphicsSurface encapsulates a method to 
share gl textures among processes (EGLImages)
WebKit2 rendering (OpenGL) - Coordinated graphics
The MediaPlayer in WebCore
MediaPlayer - platform level

Recommended for you

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

This document discusses using GStreamer for HTML5 media playback in multiple WebKit ports. It outlines the architecture for HTML5 media playback in WebKit, describes how GStreamer is implemented as the media backend, and details the steps to port GStreamer support to additional WebKit platforms like Mac and Windows. It provides an overview of status and future plans to further integrate GStreamer and improve fullscreen video playback across WebKit applications.

gstreamerigaliagstreamer
Essential parts to implement own Ozone backend
Essential parts to implement own Ozone backendEssential parts to implement own Ozone backend
Essential parts to implement own Ozone backend

This document provides instructions for implementing an Ozone backend using GTK on Chromium. It outlines the key entry points and classes that need to be implemented, including OzonePlatformGtk, GtkOzoneWindow, GtkScreen, and classes for the GPU side like SurfaceFactoryOzone and SurfaceOzoneCanvas. Implementing these classes and interfaces would allow Chromium to draw its content to a GTK window using the new Ozone/GTK backend.

web engines hackfestigaliaozone
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)

The presentation discusses the development of a Vulkan driver named V3DV for the Raspberry Pi 4. It began development in November 2019 and has progressed from initial triangle rendering to supporting many Vulkan CTS tests and demos like Quake games. While the basic Vulkan 1.0 feature set is complete, there are still challenges around the linear display pipeline and optimizing usage of the texture filtering unit. Future plans include improving conformance, merging with Mesa, and exploring performance optimizations and additional features. External contributors are welcomed to help with testing, documentation, and implementing optional Vulkan aspects.

graphicsraspberrypivulkan
Video rendering - the inefficient way 
• Sink negotiates xRGB or ARGB video caps 
• Optional buffer copy in ::render, conversion 
to Cairo's ARGB pre-multiplied alpha 
• Buffer data copy in MediaPlayerPrivate::paint 
to a WebCore::BitmapImage 
• BitmapImage rendered in a QPixmap 
• Another approach: GLTextureUpload meta 
(CPU -> GPU buffer copy)
WebKit2 video rendering (inefficient)
Video sink - improved integration within 
the platform 
• Sink negotiates meta:EGLImage with upstream 
video decoder 
• Buffer pool and EGLImage allocator (like 
in glimagesink) 
• EGLImage encapsulated in a GstBuffer passed 
to MediaPlayerPrivate 
• Efficient rendering in the player, different 
approaches for WebKit1 and WebKit2
Improvements in WebKit2 rendering

Recommended for you

WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)

The document discusses merging the UIProcess and compositor in WebKit to simplify the architecture for using WebKit with Wayland. This removes the intermediate purpose of the UIProcess, reduces complexity, and enables simplifying the compositor. The UIProcess would become a shared library loaded by the compositor, which would show a single surface for the WebProcess. Hardware support, especially for the Wayland EGL platform, is a key requirement.

webkitwayland
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...

By Žan Doberšek. WebKit and its multi-process architecture might not seem suitable for embedded systems at first, but Wayland, the next-gen display system, has already proven itself by running efficiently on TVs, smartphones and single-board computers. This talk will present the techniques that were used to achieve efficient, hardware-accelerated rendering of Web content across the multiple processes of WebKit running under Wayland. Žan Doberšek will also share his experiences of deploying the two technologies on everyone's favorite mini-sized computer, the Raspberry Pi. He will also present and discuss further ideas and possible solutions for creating efficient and optimized Web content presentation systems specifically crafted for embedded systems like Smart TVs and in-vehicle infotainment by using Linux, Wayland and WebKit.

waylandwebkitraspberry
About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)

By Eleni Maria Stea. EXT_external_objects and EXT_external_objects_fd are groups of OpenGL extensions that allow OpenGL and Vulkan interoperability. When enabled, Vulkan allocated resources can be accessed and re-used by OpenGL. This talk is about the implementation of the extensions in various drivers, and some common interoperability use cases and examples that have been added to piglit. (c) X.Org Developers Conference (XDC) 2020 September 16-18 https://xdc2020.x.org https://www.youtube.com/channel/UCXlH5v1PkEhjzLFTUTm_U7g

graphicsvulkanopengl
Improving media resources loading
Using libsoup within QtWebKit 
• The Qt-based resource loader doesn't cope 
well with large media resources 
• The libsoup-based resource loader is more 
memory efficient and better integrated in 
WebCore 
• Pre-allocation of GstBuffers within our 
HTTP source element
WebRTC / getUserMedia
Local devices listing/playback 
• In JS: webkitGetUserMedia({audio: true}, 
successCallback, failureCallback); 
• function successCallback(stream) 
{ video.src = URL.createObjectURL(stream); 
video.play(); } 
• Pipeline should also allow encoding and RTP 
payloading if required by webapp 
(WebRTC PeerConnection)

Recommended for you

Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project

Mario Sánchez Prada explains Igalia's work on several efforts around Chromium and the Web Platform at the 43rd International Conference on Software Engineering (ICSE 2021) Spanish Industry Case Studies Room May 23-29, 2021

open sourceigaliaweb
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript

This document summarizes a talk about writing native Linux desktop applications using JavaScript. It discusses using technologies like GJS, GTK, and Flatpak to build desktop apps with web development skills. It covers topics like build systems, assembling the UI, popular runtime libraries, writing the code, and distributing the finished app via Flathub. The talk uses a sample note-taking app called "Bloatpad" to demonstrate the process.

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

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

webkitembeddedbrowsers
WebRTC - RPiCam integration 
• rpicamsrc: emits H.264 byte stream 
• Leverage H.264 hardware rendering 
• rpicamsrc ! h264parse ! omxh264dec ! sink 
• with a tee downstream rpicamsrc to allow 
encoding/streaming later on
WebAudio
WebAudio - basics 
• JS API for processing and synthesizing audio 
in web applications 
• Pipeline based. Examples of nodes: BufferSource, 
GainNode, BiQuadFilter, Destination... 
• Head-related transfer function: tricking the 
human ear to spatial sound
WebAudio - decoding incoming files 
• First scenario: local file. Leverage decodebin 
and appsink to create an in-memory representation 
of the audio file PCM data (FloatArray). 
• Second scenario: memory buffer. Decodebin again! 
With giostreamsrc 
• No RPi-specific optimisations

Recommended for you

gtkgst video in your widgets!
gtkgst video in your widgets!gtkgst video in your widgets!
gtkgst video in your widgets!

A look into the current ways of displaying GStreamer videos in Gtk+ applications. Presented at GNOME Asia 2015

gnomegtkgstreamer
Video Transcoding with Raspberry Pi
Video Transcoding with Raspberry PiVideo Transcoding with Raspberry Pi
Video Transcoding with Raspberry Pi

EpicLabs.io: We are sharing a reference architecture of how to build a video transcoding solution with a Raspberry Pi. #BeEpic!

raspberryepic labshls
OpenMAX Overview
OpenMAX OverviewOpenMAX Overview
OpenMAX Overview

OpenMAX is a series of interfaces that allow for better integration of media components. It includes three levels of interfaces: OpenMAX IL for connecting media components, OpenMAX AL for controlling media playback, and OpenMAX DL for defining basic media primitives. OpenMAX enables portable and flexible development of media applications across different hardware architectures.

openmax ilkhronosandroid
WebAudio - playback 
• Playback of WebAudio FloatArrays PCM samples 
to soundcard 
• Custom GStreamer source element encoding 
internal WebCore audio buffers to WAV 
• Again, no RPi-specific optimisations
So which part of the backend needed optimisations?
WebAudio - HRTF Database 
• Loaded at AudioContext creation, 
from a separate thread 
• 240 very small (256 frames) WAV files 
=> lots of context switches 
• Improvement: concatenate all samples and 
internally split when building the database 
• => only one file to read, less context switches!
WebAudio - FFT experiments 
• default WebAudio FFTFrame backend using GstFFT 
(itself based on KissFFT) 
• math functions hot on perf profiles 
• GPUFFT library (from rpi-userland): leveraging 
VideoCore for FFT calculations 
• Major drawback: requires allocated RAM, so less 
RAM for the other libraries

Recommended for you

Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il

The document provides an overview of OpenMAX-IL (OpenMAX Integrated Layer), which is a royalty-free, cross-platform API for accelerated multimedia components. It defines OpenMAX-IL entities like components, ports, and the core. Components have input/output ports and support non-tunneled or tunneled communication. The document describes component states, buffer handling, simple usage including tunnel setup, and state transitions for OpenMAX-IL.

openmax-il
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web

An introduction to WebGL for OpenGL developers. Topics include current browser support - as of September 2011 - and JavaScript.

gpuwebglhtml5
NVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityNVIDIA's OpenGL Functionality
NVIDIA's OpenGL Functionality

Presented as a pre-conference tutorial at the GPU Technology Conference in San Jose on September 20, 2010. Learn about NVIDIA's OpenGL 4.1 functionality available now on Fermi-based GPUs.

gtcnvidiaopengl
Next tasks 
• video/canvas and video/webgl integration 
• WebRTC 
• ORC ARMv6 backend?
Demo rendering from youtube at 720p
Demo rendering from youtube at 1080p
Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conference 2014)

Recommended for you

WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)

By Xabier Rodríguez Calvar. WebKit is a well known open source browser engine used by Apple, GNOME, EFL, Blackberry and others and shares quite a big codebase with Blink. It was the result of a fork from KHTML and KJS. As a simplification we can say that it has three main layers, the API, the core and the backend. The different ports implement their API and their backends and the core is shared. WebKit 2 is robust and transparent multiprocess architecture allowing safer interactions with webpages. GStreamer is the multimedia backend of some WebKit ports and in this talk we will see its architecture, status, challenges and future.

gstreamerwebkitmultimedia
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...

By Philippe Normand. This talk is about multimedia support in the WPE and GTK+ WebKit ports. I will give a status update about the HTML5 features currently supported by our GStreamer backend, such as WebRTC, MSE, MediaCapabilities support. The talk would also include a brief case study about using WPE and its Cog browser on IMX6 platforms. (c) GStreamer Conference 2018 CC-BY-SA 3.0 https://gstreamer.freedesktop.org/conference/2018/ https://gstconf.ubicast.tv/videos/multimedia-support-in-webkitgtk-and-wpe-current-status-and-plans/

browsersembeddedmultimedia
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)

This document discusses GStreamer support and integration in WebKit. It covers: 1. The current integration of GStreamer for HTML5 audio and video playback, as well as WebAudio. 2. Plans for next-generation video rendering using GstGL to leverage hardware acceleration. 3. Support for adaptive streaming using Media Source Extensions and Dash playback via GStreamer. 4. Encrypted media playback support via Encrypted Media Extensions for DRM protected content. 5. Progress on WebRTC integration for real-time communication capabilities.

browserswebkitmultimedia
Flickr pictures 
• http://bit.ly/1p8YHJA 
• http://bit.ly/1yz8ctT 
• http://bit.ly/1v8nwLh 
This is the last slide, let's have lunch now!

More Related Content

What's hot

Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkit
Igalia
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
ryuan choi
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
Igalia
 
Chromium Ozone
Chromium OzoneChromium Ozone
Chromium Ozone
Igalia
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
Igalia
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
Igalia
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
Joone Hur
 
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Igalia
 
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
 
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
 
Essential parts to implement own Ozone backend
Essential parts to implement own Ozone backendEssential parts to implement own Ozone backend
Essential parts to implement own Ozone backend
Igalia
 
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Igalia
 
WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)
Igalia
 
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Igalia
 
About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)
Igalia
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
Igalia
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
Igalia
 
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
Igalia
 

What's hot (18)

Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkit
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
 
Chromium Ozone
Chromium OzoneChromium Ozone
Chromium Ozone
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)Kiosk-mode browser using Chromium Embedded Framework (CEF)
Kiosk-mode browser using Chromium Embedded Framework (CEF)
 
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...
 
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
 
Essential parts to implement own Ozone backend
Essential parts to implement own Ozone backendEssential parts to implement own Ozone backend
Essential parts to implement own Ozone backend
 
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
Overview of the open source Vulkan driver for Raspberry Pi 4 (XDC 2020)
 
WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)
 
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
 
About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)About OpenGL and Vulkan interoperability (XDC 2020)
About OpenGL and Vulkan interoperability (XDC 2020)
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
 
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
 

Viewers also liked

gtkgst video in your widgets!
gtkgst video in your widgets!gtkgst video in your widgets!
gtkgst video in your widgets!
ystreet00
 
Video Transcoding with Raspberry Pi
Video Transcoding with Raspberry PiVideo Transcoding with Raspberry Pi
Video Transcoding with Raspberry Pi
Alfonso Peletier
 
OpenMAX Overview
OpenMAX OverviewOpenMAX Overview
OpenMAX Overview
Yoss Cohen
 
Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il
Chethan Pchethan
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
pjcozzi
 
NVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityNVIDIA's OpenGL Functionality
NVIDIA's OpenGL Functionality
Mark Kilgard
 

Viewers also liked (6)

gtkgst video in your widgets!
gtkgst video in your widgets!gtkgst video in your widgets!
gtkgst video in your widgets!
 
Video Transcoding with Raspberry Pi
Video Transcoding with Raspberry PiVideo Transcoding with Raspberry Pi
Video Transcoding with Raspberry Pi
 
OpenMAX Overview
OpenMAX OverviewOpenMAX Overview
OpenMAX Overview
 
Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
 
NVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityNVIDIA's OpenGL Functionality
NVIDIA's OpenGL Functionality
 

Similar to Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conference 2014)

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
 
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Igalia
 
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
 
[1C5]Lessons from developing a web browser for raspberry pi
[1C5]Lessons from developing a web browser for raspberry pi[1C5]Lessons from developing a web browser for raspberry pi
[1C5]Lessons from developing a web browser for raspberry pi
NAVER D2
 
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
Ryo Jin
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
Cyril Concolato
 
Apan media encoding
Apan media encodingApan media encoding
Apan media encoding
Andrew Howard
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)
Igalia
 
Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASH
Cyril Concolato
 
Micro servoces-choose-the-right-tools-programing-language
Micro servoces-choose-the-right-tools-programing-languageMicro servoces-choose-the-right-tools-programing-language
Micro servoces-choose-the-right-tools-programing-language
Youness Lasmak
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
Yoss Cohen
 
Serverless Media Workflow
Serverless Media WorkflowServerless Media Workflow
Serverless Media Workflow
MooYeol Lee
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform Components
RIADVICE
 
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Shuo LI
 
WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022
Igalia
 
qtdd11_qtmultimediakitonmobile
qtdd11_qtmultimediakitonmobileqtdd11_qtmultimediakitonmobile
qtdd11_qtmultimediakitonmobile
gareth_stockwell
 
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Joone Hur
 
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
 
Wireless PC2TV
Wireless PC2TVWireless PC2TV
Wireless PC2TV
Deepak Malani
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
Amir Zmora
 

Similar to Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conference 2014) (20)

WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)
 
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
Multimedia support in WebKitGTK and WPE, current status and plans (GStreamer ...
 
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)
 
[1C5]Lessons from developing a web browser for raspberry pi
[1C5]Lessons from developing a web browser for raspberry pi[1C5]Lessons from developing a web browser for raspberry pi
[1C5]Lessons from developing a web browser for raspberry pi
 
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
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
 
Apan media encoding
Apan media encodingApan media encoding
Apan media encoding
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)
 
Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASH
 
Micro servoces-choose-the-right-tools-programing-language
Micro servoces-choose-the-right-tools-programing-languageMicro servoces-choose-the-right-tools-programing-language
Micro servoces-choose-the-right-tools-programing-language
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
 
Serverless Media Workflow
Serverless Media WorkflowServerless Media Workflow
Serverless Media Workflow
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform Components
 
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
Criteo Labs Infrastructure Tech Talk Meetup Nov. 7
 
WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022
 
qtdd11_qtmultimediakitonmobile
qtdd11_qtmultimediakitonmobileqtdd11_qtmultimediakitonmobile
qtdd11_qtmultimediakitonmobile
 
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
 
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...
 
Wireless PC2TV
Wireless PC2TVWireless PC2TV
Wireless PC2TV
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 

More from Igalia

The journey towards stabilizing Chromium’s Wayland support
The journey towards stabilizing Chromium’s Wayland supportThe journey towards stabilizing Chromium’s Wayland support
The journey towards stabilizing Chromium’s Wayland support
Igalia
 
Sustainable Futures: Funding the Web Ecosystem
Sustainable Futures: Funding the Web EcosystemSustainable Futures: Funding the Web Ecosystem
Sustainable Futures: Funding the Web Ecosystem
Igalia
 
Status of the Layer-Based SVG Engine in WebKit
Status of the Layer-Based SVG Engine in WebKitStatus of the Layer-Based SVG Engine in WebKit
Status of the Layer-Based SVG Engine in WebKit
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
 
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
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 Devices
Igalia
 
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
Igalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
Igalia
 
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
Igalia
 
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 GStreamer
Igalia
 
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
Igalia
 
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
Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
Igalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 

More from Igalia (20)

The journey towards stabilizing Chromium’s Wayland support
The journey towards stabilizing Chromium’s Wayland supportThe journey towards stabilizing Chromium’s Wayland support
The journey towards stabilizing Chromium’s Wayland support
 
Sustainable Futures: Funding the Web Ecosystem
Sustainable Futures: Funding the Web EcosystemSustainable Futures: Funding the Web Ecosystem
Sustainable Futures: Funding the Web Ecosystem
 
Status of the Layer-Based SVG Engine in WebKit
Status of the Layer-Based SVG Engine in WebKitStatus of the Layer-Based SVG Engine in WebKit
Status of the Layer-Based SVG Engine in WebKit
 
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?
 
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
 
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
 

Recently uploaded

CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
bhatinidhi2001
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
avufu
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
Ortus Solutions, Corp
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
Mitchell Marsh
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
Mitchell Marsh
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
VishrutGoyani1
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
TwisterTools
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
Philip Schwarz
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
DNUG e.V.
 
Intro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AIIntro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AI
Ortus Solutions, Corp
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
onemonitarsoftware
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Estuary Flow
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
sheqnetworkmarketing
 
introduction of Ansys software and basic and advance knowledge of modelling s...
introduction of Ansys software and basic and advance knowledge of modelling s...introduction of Ansys software and basic and advance knowledge of modelling s...
introduction of Ansys software and basic and advance knowledge of modelling s...
sachin chaurasia
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Trackobit
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
Semiosis Software Private Limited
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
Task Tracker
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
SSTech System
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 

Recently uploaded (20)

CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
 
Intro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AIIntro to Amazon Web Services (AWS) and Gen AI
Intro to Amazon Web Services (AWS) and Gen AI
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
 
introduction of Ansys software and basic and advance knowledge of modelling s...
introduction of Ansys software and basic and advance knowledge of modelling s...introduction of Ansys software and basic and advance knowledge of modelling s...
introduction of Ansys software and basic and advance knowledge of modelling s...
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 

Efficient multimedia support in QtWebKit on Raspberry Pi (GStreamer Conference 2014)

  • 1. Efficient multimedia support in QtWebKit on Raspberry Pi
  • 2. Talk outline • Raspberry Pi • WebKit architecture(s) with emphasis on Media playback • Platform-level improvements for QtWebKit
  • 3. Raspberry Pi - Model B • 700MHz single-core ARMv6 CPU • Broadcom BCM2835 VideoCore IV • 512 MB RAM (partly allocated for GPU)
  • 4. GStreamer OpenMax (gst-omx) • Hardware decoders for H.264, VP8, Theora • meta:EGLImage • Custom audio sinks: HDMI and analog • Very good integration within playbin
  • 5. Premises of the project • Fullscreen browser, no tabs, no WM • Focus on media consumption web-apps and Youtube TV • OpenGL for rendering • Qt5 platform, EGLFS QPA
  • 6. WebKit rendering - from HTML to the screen
  • 7. WebKit rendering - the forest
  • 8. WebKit1 rendering (with OpenGL) • GraphicsLayers are backed by GL textures • The video player has its own GraphicsLayer • RenderLayers are traversed and painted recursively (to their GraphicsLayers): children below -> self -> children above • Composition: GraphicsLayers are stacked to produce the final result
  • 9. WebKit2 rendering (OpenGL) - processes • Rendering split into 2 processes: UI and Web • Web process renders the layers (similar to WebKit1 rendering) • UI process composites and shows them • GraphicsLayers shared using GraphicsSurfaces • A GraphicsSurface encapsulates a method to share gl textures among processes (EGLImages)
  • 10. WebKit2 rendering (OpenGL) - Coordinated graphics
  • 13. Video rendering - the inefficient way • Sink negotiates xRGB or ARGB video caps • Optional buffer copy in ::render, conversion to Cairo's ARGB pre-multiplied alpha • Buffer data copy in MediaPlayerPrivate::paint to a WebCore::BitmapImage • BitmapImage rendered in a QPixmap • Another approach: GLTextureUpload meta (CPU -> GPU buffer copy)
  • 14. WebKit2 video rendering (inefficient)
  • 15. Video sink - improved integration within the platform • Sink negotiates meta:EGLImage with upstream video decoder • Buffer pool and EGLImage allocator (like in glimagesink) • EGLImage encapsulated in a GstBuffer passed to MediaPlayerPrivate • Efficient rendering in the player, different approaches for WebKit1 and WebKit2
  • 18. Using libsoup within QtWebKit • The Qt-based resource loader doesn't cope well with large media resources • The libsoup-based resource loader is more memory efficient and better integrated in WebCore • Pre-allocation of GstBuffers within our HTTP source element
  • 20. Local devices listing/playback • In JS: webkitGetUserMedia({audio: true}, successCallback, failureCallback); • function successCallback(stream) { video.src = URL.createObjectURL(stream); video.play(); } • Pipeline should also allow encoding and RTP payloading if required by webapp (WebRTC PeerConnection)
  • 21. WebRTC - RPiCam integration • rpicamsrc: emits H.264 byte stream • Leverage H.264 hardware rendering • rpicamsrc ! h264parse ! omxh264dec ! sink • with a tee downstream rpicamsrc to allow encoding/streaming later on
  • 23. WebAudio - basics • JS API for processing and synthesizing audio in web applications • Pipeline based. Examples of nodes: BufferSource, GainNode, BiQuadFilter, Destination... • Head-related transfer function: tricking the human ear to spatial sound
  • 24. WebAudio - decoding incoming files • First scenario: local file. Leverage decodebin and appsink to create an in-memory representation of the audio file PCM data (FloatArray). • Second scenario: memory buffer. Decodebin again! With giostreamsrc • No RPi-specific optimisations
  • 25. WebAudio - playback • Playback of WebAudio FloatArrays PCM samples to soundcard • Custom GStreamer source element encoding internal WebCore audio buffers to WAV • Again, no RPi-specific optimisations
  • 26. So which part of the backend needed optimisations?
  • 27. WebAudio - HRTF Database • Loaded at AudioContext creation, from a separate thread • 240 very small (256 frames) WAV files => lots of context switches • Improvement: concatenate all samples and internally split when building the database • => only one file to read, less context switches!
  • 28. WebAudio - FFT experiments • default WebAudio FFTFrame backend using GstFFT (itself based on KissFFT) • math functions hot on perf profiles • GPUFFT library (from rpi-userland): leveraging VideoCore for FFT calculations • Major drawback: requires allocated RAM, so less RAM for the other libraries
  • 29. Next tasks • video/canvas and video/webgl integration • WebRTC • ORC ARMv6 backend?
  • 30. Demo rendering from youtube at 720p
  • 31. Demo rendering from youtube at 1080p
  • 33. Flickr pictures • http://bit.ly/1p8YHJA • http://bit.ly/1yz8ctT • http://bit.ly/1v8nwLh This is the last slide, let's have lunch now!