SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
WebKit, HTML5 media
and GStreamer on
multiple platforms
Spreading GStreamer
awesome in WebKit
Philippe Normand
Talk outline
About WebKit
HTML5 Media playback in WebKit with
GStreamer
WebKit/GStreamer: opening the door to more
platforms
End goal: spread the usage of GStreamer
on more and more WebKit-based
applications!
About WebKit
A content rendering/editing engine
Not a browser!
Highly standards-compliant
WebKit Ecosystem
Apple, Nokia, Google, RIM, Adobe, Sony-
Ericcson
Samsung, Palm, Motorola, Electronic Arts, ...
=> lots of devices using WebKit in the market
=> wide range of applications using the
various WebKit ports
High level WebKit
Architecture
JavaScriptCore: Javascript engine and
platform-specific bits
WebCore: platform-independant blocks and
their counter part platform implementations
for:
parsing, layouting
network, painting
media playback
...
WebKit: platform-specific APIs => used by
application developers
Ports: GTK+, Qt, EFL, Chromium, Mac,
WinCairo, Apple Windows, ...
HTML5 Media
playback in WebKit
3 layers: DOM/HTML level
(HTMLMediaElement), WebCore/graphics
(MediaPlayer), platform-dependant
implementation (MediaPlayerPrivate)
Some MediaPlayerPrivate implementations:
GStreamer: GTK+ and EFL ports
Qt/Phonon: Qt port
Quicktime: Apple Mac/Win ports
GStreamer media
player
playbin2 of course!
Custom video sink and source elements
Basic trick-modes support
On-disk buffering
Fullscreen video display
The GStreamer player
in other WebKit ports?
GStreamer cross-platform already :)
the MediaPlayer layer allows multiple Private
instances
choice based on media mime-type and
codecs:
<video src=test.ogv type="video/ogg; codecs=&quot;theora,vorbis&
Targets: Mac and WinCairo ports
Porting check-list
GStreamer platform packages
GLib main context integration
webkit src element
webkit video sink
Fullscreen support
WebKit build :)
GStreamer platform
packages
on Windows: OSSBuild
on Mac OSX: OSSBuild too! soon!
For now on Mac: scripts developed based on
gtk-osx-build
GStreamer build on
Mac
jhbuild to the rescue
add -headerpad_max_install_names to
LDFLAGS
use install_name_tool to change the
shared library paths in the various .dylib files
absolute paths -> relative paths to
@loader_path
GLib main context
integration
GstBus signal watch used in the player =>
need periodic calls of
g_main_context_iteration()
on Mac: NSRunLoop observer triggering the
glib main context iterations
on Windows: integration in the message loop
WebKit src element
Based on appsrc, work by Sebastian Dröge!
using WebCore Resource loader (=> HTTP
session data: cookies, referer)
Contains some platform-specific code to
pause/resume data download
For now: #ifdefs :( Better approach: use
WebCore resource defersLoading API.
Video painting
video sink exports buffers to the player
("repaint-requested" signal)
ImageGStreamer: GstBuffer ->
WebCore::Image
actual painting deferred to the
ImageGStreamer implementations:
ImageGStreamerCairo: used by GTK+ and
WinCairo ports
ImageGStreamerCG: CoreGraphics
implementation for the Mac port
Fullscreen support
(Overview)
webkitEnterFullscreen() Video
Element DOM API
=> WebKit WebView private API
=> => FullscreenVideoController
enterFullscreen() hooks into
MediaPlayer::platformMedia()
MediaPlayerPrivate-specifics: to create a
widget where the video is painted
Controller gets the widget, adds controls,
goes fullscreen
Fullscreen support
(GStreamer side)
Our playbin2 video-sink is a bin!
fullscreen off:
tee name=t t. ! queue ! webkitvideosink
fullscreen on:
tee name=t t. ! queue ! webkitvideosink t. ! queue !
ffmpegcolorspace ! videoscale ! autovideosink
Fullscreen support
(Video overlay)
GstXOverlay
PlatformVideoWindow : window on which
autovideosink overlays the video
PlatformVideoWindowGtk
PlatformVideoWindowEFL
PlatformVideoWindowCocoa
...
WebKit build
modifications
(note: WTF here means Web Template
Framework, obviously!)
add JavaScriptCore/wtf/gobject/ in
your build
add
WebCore/platform/graphics/gstreamer/
in your build
enable WTF_USE_GSTREAMER and
ENABLE_GLIB_SUPPORT defines
port-specific FullscreenVideoController
adaptations
Implementation
status : Mac OSX
Most of the patches merged upstream
already, excepted:
XCode config additions
gst webkit src patch
PlatformVideoWindowCocoa
implementation
FullscreenVideoController patch
Packaging: WebKit-nightly DMG including
GStreamer and its dependencies.
Implementation
status : WinCairo
HTML5 media implemented from scratch for
WinCairo:
WinCairo still using Visual Studio 5 => big
blocker :(
Patches in a separate public git repository
Basic media controls
Fullscreen video
Recap!
1. GStreamer build
2. Periodic calls to
g_main_context_iteration()
3. Patching gst webkit src element and/or your
ResourceHandle implementation
4. ImageGStreamerMyPort implementation
5. PlatformVideoWindowMyPort
implementation
6. Patching your WebKit
FullscreenVideoController
7. Build WebKit!
Some bit of advice
Use playbin2 :-)
Facade design-pattern for your app platform-
specific bits
Single build-system == less maintenance
burden (gyp, cmake, ...)
Continuous integration on multiple platforms:
BuildBot
Demo
WebM playback, in Safari! With GStreamer! :-)
Future plans
Finish upstream merge of the patches
WebKit/GStreamer build slaves
Fullscreen video improvements
WebKitGTK+ API to allow fine-grained control
on the player like:
per-webview volume control
codec installer
Luke, may the source
be with you
gst-mac and win-gst WebKit branches:
http://git.igalia.com/cgi-bin/gitweb.cgi?
p=webkit.git
http://trac.webkit.org/wiki/GStreamerOnMac
That would be all,
folks
Work sponsored by:
Igalia
R&D funds from Galicia government
a private Igalia client
Contact:
http://igalia.com
pnormand@igalia.com
IRC: philn-tp on #gstreamer, #webkit and
#webkit-gtk
Questions?

Mais conteúdo relacionado

Mais procurados

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
 
Chromium Ozone
Chromium OzoneChromium Ozone
Chromium OzoneIgalia
 
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
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ ProjectJoone Hur
 
Hw accelerated webkitgtk+ on raspberry pi
Hw accelerated webkitgtk+ on raspberry piHw accelerated webkitgtk+ on raspberry pi
Hw accelerated webkitgtk+ on raspberry pignomekr
 
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 WPEWebkitIgalia
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)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 WAMIgalia
 
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
 
Driving and virtualizing control systems: the Open Source approach used in Wh...
Driving and virtualizing control systems: the Open Source approach used in Wh...Driving and virtualizing control systems: the Open Source approach used in Wh...
Driving and virtualizing control systems: the Open Source approach used in Wh...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
 
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)Igalia
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Igalia
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...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 Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...Igalia
 

Mais procurados (18)

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)
 
Chromium Ozone
Chromium OzoneChromium Ozone
Chromium Ozone
 
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)
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
Hw accelerated webkitgtk+ on raspberry pi
Hw accelerated webkitgtk+ on raspberry piHw accelerated webkitgtk+ on raspberry pi
Hw accelerated webkitgtk+ on raspberry pi
 
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
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
 
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
 
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 ...
 
Driving and virtualizing control systems: the Open Source approach used in Wh...
Driving and virtualizing control systems: the Open Source approach used in Wh...Driving and virtualizing control systems: the Open Source approach used in Wh...
Driving and virtualizing control systems: the Open Source approach used in Wh...
 
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 pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
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 Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 

Semelhante a WebKit, HTML5 media and GStreamer on multiple platforms

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
 
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 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
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
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
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0Amir Zmora
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depthChris Simmonds
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)Igalia
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинGDG Saint Petersburg
 
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
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
Html5 Game Development with Canvas
Html5 Game Development with CanvasHtml5 Game Development with Canvas
Html5 Game Development with CanvasPham Huy Tung
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...Igalia
 
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalRaj Lal
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia
 
WebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challengesWebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challengesIgalia
 

Semelhante a WebKit, HTML5 media and GStreamer on multiple platforms (20)

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
 
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 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)
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
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
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0
WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
 
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...
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
Html5 Game Development with Canvas
Html5 Game Development with CanvasHtml5 Game Development with Canvas
Html5 Game Development with Canvas
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
 
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLal
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plans
 
WebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challengesWebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challenges
 

Último

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

WebKit, HTML5 media and GStreamer on multiple platforms

  • 1. WebKit, HTML5 media and GStreamer on multiple platforms Spreading GStreamer awesome in WebKit Philippe Normand
  • 2. Talk outline About WebKit HTML5 Media playback in WebKit with GStreamer WebKit/GStreamer: opening the door to more platforms End goal: spread the usage of GStreamer on more and more WebKit-based applications!
  • 3. About WebKit A content rendering/editing engine Not a browser! Highly standards-compliant
  • 4. WebKit Ecosystem Apple, Nokia, Google, RIM, Adobe, Sony- Ericcson Samsung, Palm, Motorola, Electronic Arts, ... => lots of devices using WebKit in the market => wide range of applications using the various WebKit ports
  • 5. High level WebKit Architecture JavaScriptCore: Javascript engine and platform-specific bits WebCore: platform-independant blocks and their counter part platform implementations for: parsing, layouting network, painting media playback ... WebKit: platform-specific APIs => used by application developers Ports: GTK+, Qt, EFL, Chromium, Mac, WinCairo, Apple Windows, ...
  • 6. HTML5 Media playback in WebKit 3 layers: DOM/HTML level (HTMLMediaElement), WebCore/graphics (MediaPlayer), platform-dependant implementation (MediaPlayerPrivate) Some MediaPlayerPrivate implementations: GStreamer: GTK+ and EFL ports Qt/Phonon: Qt port Quicktime: Apple Mac/Win ports
  • 7. GStreamer media player playbin2 of course! Custom video sink and source elements Basic trick-modes support On-disk buffering Fullscreen video display
  • 8. The GStreamer player in other WebKit ports? GStreamer cross-platform already :) the MediaPlayer layer allows multiple Private instances choice based on media mime-type and codecs: <video src=test.ogv type="video/ogg; codecs=&quot;theora,vorbis& Targets: Mac and WinCairo ports
  • 9. Porting check-list GStreamer platform packages GLib main context integration webkit src element webkit video sink Fullscreen support WebKit build :)
  • 10. GStreamer platform packages on Windows: OSSBuild on Mac OSX: OSSBuild too! soon! For now on Mac: scripts developed based on gtk-osx-build
  • 11. GStreamer build on Mac jhbuild to the rescue add -headerpad_max_install_names to LDFLAGS use install_name_tool to change the shared library paths in the various .dylib files absolute paths -> relative paths to @loader_path
  • 12. GLib main context integration GstBus signal watch used in the player => need periodic calls of g_main_context_iteration() on Mac: NSRunLoop observer triggering the glib main context iterations on Windows: integration in the message loop
  • 13. WebKit src element Based on appsrc, work by Sebastian Dröge! using WebCore Resource loader (=> HTTP session data: cookies, referer) Contains some platform-specific code to pause/resume data download For now: #ifdefs :( Better approach: use WebCore resource defersLoading API.
  • 14. Video painting video sink exports buffers to the player ("repaint-requested" signal) ImageGStreamer: GstBuffer -> WebCore::Image actual painting deferred to the ImageGStreamer implementations: ImageGStreamerCairo: used by GTK+ and WinCairo ports ImageGStreamerCG: CoreGraphics implementation for the Mac port
  • 15. Fullscreen support (Overview) webkitEnterFullscreen() Video Element DOM API => WebKit WebView private API => => FullscreenVideoController enterFullscreen() hooks into MediaPlayer::platformMedia() MediaPlayerPrivate-specifics: to create a widget where the video is painted Controller gets the widget, adds controls, goes fullscreen
  • 16. Fullscreen support (GStreamer side) Our playbin2 video-sink is a bin! fullscreen off: tee name=t t. ! queue ! webkitvideosink fullscreen on: tee name=t t. ! queue ! webkitvideosink t. ! queue ! ffmpegcolorspace ! videoscale ! autovideosink
  • 17. Fullscreen support (Video overlay) GstXOverlay PlatformVideoWindow : window on which autovideosink overlays the video PlatformVideoWindowGtk PlatformVideoWindowEFL PlatformVideoWindowCocoa ...
  • 18. WebKit build modifications (note: WTF here means Web Template Framework, obviously!) add JavaScriptCore/wtf/gobject/ in your build add WebCore/platform/graphics/gstreamer/ in your build enable WTF_USE_GSTREAMER and ENABLE_GLIB_SUPPORT defines port-specific FullscreenVideoController adaptations
  • 19. Implementation status : Mac OSX Most of the patches merged upstream already, excepted: XCode config additions gst webkit src patch PlatformVideoWindowCocoa implementation FullscreenVideoController patch Packaging: WebKit-nightly DMG including GStreamer and its dependencies.
  • 20. Implementation status : WinCairo HTML5 media implemented from scratch for WinCairo: WinCairo still using Visual Studio 5 => big blocker :( Patches in a separate public git repository Basic media controls Fullscreen video
  • 21. Recap! 1. GStreamer build 2. Periodic calls to g_main_context_iteration() 3. Patching gst webkit src element and/or your ResourceHandle implementation 4. ImageGStreamerMyPort implementation 5. PlatformVideoWindowMyPort implementation 6. Patching your WebKit FullscreenVideoController 7. Build WebKit!
  • 22. Some bit of advice Use playbin2 :-) Facade design-pattern for your app platform- specific bits Single build-system == less maintenance burden (gyp, cmake, ...) Continuous integration on multiple platforms: BuildBot
  • 23. Demo WebM playback, in Safari! With GStreamer! :-)
  • 24. Future plans Finish upstream merge of the patches WebKit/GStreamer build slaves Fullscreen video improvements WebKitGTK+ API to allow fine-grained control on the player like: per-webview volume control codec installer
  • 25. Luke, may the source be with you gst-mac and win-gst WebKit branches: http://git.igalia.com/cgi-bin/gitweb.cgi? p=webkit.git http://trac.webkit.org/wiki/GStreamerOnMac
  • 26. That would be all, folks Work sponsored by: Igalia R&D funds from Galicia government a private Igalia client Contact: http://igalia.com pnormand@igalia.com IRC: philn-tp on #gstreamer, #webkit and #webkit-gtk Questions?