<?xml version="1.0" encoding="iso-8859-1"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Base-Art / Articles</title>
<link rel="alternate" type="text/html" href="http://base-art.net" />
<updated>April 01, 2013 10:29 AM</updated>
<author>
  <name>Philippe Normand</name>
</author>
<id>urn:md5:11329</id>
<generator uri="http://pythonfr.org/">Alinea</generator>




<entry>
<title>GStreamer hackfest in Milan</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/123/"/>
<id>http://base-art.net/Articles/123/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>April 01, 2013 10:29 AM</updated>
<content type="html">






&lt;p&gt;I spent Easter in Milan, attending the &lt;a class="reference external" href="http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2013"&gt;second official GStreamer
hackfest&lt;/a&gt;. It has been a productive event and, as always, a pleasure to
hang out with some members of the GStreamer core dev team fame :)&lt;/p&gt;
&lt;p&gt;I focused on a few GStreamer bugs that were blocking some other WebKit
bugs related to the media player and the WebAudio backend. I also had
in mind to port the osxaudio sink to 1.0, a task started one week
before the hackfest, but didn't have time to come back to it.&lt;/p&gt;
&lt;p&gt;The first task I worked on was about cleaning up some code in
uridecodebin related to URI protocols and on-disk buffering. In WebKit
we use a custom HTTP(S) source element used by playbin when loading
remote media files. The issue is that that element is also &lt;a class="reference external" href="https://bugs.webkit.org/show_bug.cgi?id=108088"&gt;exposed to
applications using WebKit itself&lt;/a&gt; so we made it handle a custom
protocol, webkit+http://. But that exposed a &lt;a class="reference external" href="https://bugzilla.gnome.org/show_bug.cgi?id=693484"&gt;bug in urideocdebin&lt;/a&gt; where
some protocols, including http, are hardcoded in a white list used to
enable on-disk buffering. Unfortunately the aforementioned bug is not
solved yet even though some good progress was made!&lt;/p&gt;
&lt;p&gt;The second task I worked on was first reported by Wim, the WebKit
media player wasn't pausing when receiving buffering messages. The
&lt;a class="reference external" href="http://trac.webkit.org/changeset/147206"&gt;fix&lt;/a&gt; was quite simple. After that I finally added some basic &lt;a class="reference external" href="http://trac.webkit.org/changeset/147279"&gt;codec
installer support in WebKit&lt;/a&gt;. The GStreamer codec installer API is
quite simple :)&lt;/p&gt;
&lt;p&gt;Lastly I started working again on the &lt;a class="reference external" href="https://bugs.webkit.org/show_bug.cgi?id=78883"&gt;WebAudio
createMediaSourceElement&lt;/a&gt; support for the GStreamer/WebKit
backend. The patch has been sleeping in Bugzilla since last
Christmas. That feature is interesting for WebAudio applications that
need to use audio data coming from media elements to eg, do stuff like
&lt;a class="reference external" href="http://html5-demos.appspot.com/static/webaudio/createMediaSourceElement.html"&gt;equalizers&lt;/a&gt;. The current patch in bugzilla gathers the audio buffers
in lists and copy them to the AudioBus when needed. Those memcpys
could probably be avoided by pre-allocating the memory for the
AudioBus and telling GStreamer to write directly there. So, with the help
of my friend &lt;a class="reference external" href="http://twitter.com/alessandrod"&gt;Alessandro Decina&lt;/a&gt; (who was doing some similar stuff on
his Firefox branch) I started working on a simple
GstAllocator that would be configured in the pipeline by intercepting
allocation queries toward the appsinks used to gather the audio
buffers. Well, this exposed some bugs on the GStreamer side! The
deinterleave element always uses the default allocator when pushing
data to its source pads. So I started a patch that performs allocation
queries downstream and use the allocator returned, if
any. Unfortunately my custom allocator doesn't work yet but I'll cary
on work on this, the GstAllocator API is quite an interesting thing to
play with :)&lt;/p&gt;
&lt;p&gt;All in all it was a great and productive event. Christian wrote a nice
&lt;a class="reference external" href="http://blogs.gnome.org/uraeus/2013/03/31/gstreamer-hackfest-in-milan"&gt;report about the hackfest&lt;/a&gt; too. I also wanted to thank &lt;a class="reference external" href="http://collabora.com"&gt;Collabora&lt;/a&gt;
and &lt;a class="reference external" href="http://fluendo.com"&gt;Fluendo&lt;/a&gt; for sponsoring dinners. A special thank you as well for
&lt;a class="reference external" href="http://igalia.com"&gt;Igalia&lt;/a&gt; which covered my travel expenses and attendance to the
hackfest.&lt;/p&gt;


</content>
</entry>

<entry>
<title>WebKitGTK+ Hackfest, 2012 edition</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/122/"/>
<id>http://base-art.net/Articles/122/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>December 15, 2012 02:12 PM</updated>
<content type="html">






&lt;p&gt;There has been some media coverage of the hackfest already so
I'll just focus on one area, Multimedia!&lt;/p&gt;
&lt;p&gt;I think this fourth edition of the event was the first with so
many hackers focusing on Multimedia:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://blogs.igalia.com/xrcalvar/"&gt;Xabier&lt;/a&gt; and &lt;a class="reference external" href="http://falcosigh.wordpress.com/"&gt;Zan&lt;/a&gt; worked on the &lt;a class="reference external" href="https://twitter.com/calvaris/status/278936552892157952/photo/1"&gt;media controls&lt;/a&gt; and finally landed the GStreamer 1.0 build support in our JHBuild moduleset so the buildbots now run the tests with a modern GStreamer setup&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://blogs.gnome.org/jjongsma/"&gt;Jonathon&lt;/a&gt; focused on the Mediastream/WebRTC backend&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://blogs.igalia.com/vjaquez"&gt;Victor&lt;/a&gt; has been working on &lt;a class="reference external" href="https://bugs.webkit.org/show_bug.cgi?id=31155"&gt;audio pitch preservation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;yours truly dedicated most of his time on porting the WebAudio backend to GStreamer 1.0 and hunting two small bugs in the deinterleave and interleave elements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also had a small session about the current status of
Multimedia in WebKitGTK+ with a summary of what's been done
recently, the work in progress and plans for the future. It's
interesting because there is always a new W3C specification to
implement and bugs to fix :)&lt;/p&gt;
&lt;p&gt;A warm thank you to all the sponsors and organizers that made the
event possible, it was really nice to meet new (and old) friends,
hack on interesting tasks and keep pushing for a vibrant
project such as WebKitGTK+ :)&lt;/p&gt;
&lt;img alt="https://live.gnome.org/Hackfests/WebKitGTK2012?action=AttachFile&amp;amp;do=get&amp;amp;target=igalia-logo.png" src="https://live.gnome.org/Hackfests/WebKitGTK2012?action=AttachFile&amp;amp;do=get&amp;amp;target=igalia-logo.png" /&gt;
&lt;img alt="https://live.gnome.org/Hackfests/WebKitGTK2012?action=AttachFile&amp;amp;do=get&amp;amp;target=collabora-logo.png" src="https://live.gnome.org/Hackfests/WebKitGTK2012?action=AttachFile&amp;amp;do=get&amp;amp;target=collabora-logo.png" /&gt;
&lt;img alt="http://blogs.igalia.com/alex/files/2010/12/badge.png" src="http://blogs.igalia.com/alex/files/2010/12/badge.png" /&gt;


</content>
</entry>

<entry>
<title>WebAudio support in WebKitGTK+: the demo</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/121/"/>
<id>http://base-art.net/Articles/121/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>October 19, 2012 08:30 AM</updated>
<content type="html">






&lt;p&gt;In a previous post I was explaining how the &lt;a class="reference external" href="http://base-art.net/Articles/120/"&gt;WebAudio GStreamer backend&lt;/a&gt; is implemented in WebKit. What was missing was a nice
screencast demonstrating the feature in Epiphany. Thankfully the
valiant &lt;a class="reference external" href="http://mariospr.org/"&gt;Mario Sanchez&lt;/a&gt; took up the challenge and the result is
quite nice:&lt;/p&gt;
&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/cFoEYkztAfY" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;If the youtube embed code doesn't show up you can still see the video &lt;a class="reference external" href="https://www.youtube.com/watch?v=cFoEYkztAfY"&gt;there&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I wrote the previous post the Qt and EFL WebKit ports
adopted the WebAudio GStreamer backend as well. It is still
experimental, we've been fixing some annoying bugs recently, the
fixes will be shipped in the upcoming WebKitGTK+ 1.10.2 version.&lt;/p&gt;
&lt;p&gt;I'm really happy to have worked on this feature as part of my
daily work at &lt;a class="reference external" href="http://igalia.com"&gt;Igalia&lt;/a&gt;. There's more to come, our WebKit team
keeps expanding :)&lt;/p&gt;


</content>
</entry>

<entry>
<title>Implementing WebAudio in WebKit with GStreamer</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/120/"/>
<id>http://base-art.net/Articles/120/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>May 28, 2012 11:47 PM</updated>
<content type="html">






&lt;p&gt;&lt;a class="reference external" href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html"&gt;WebAudio&lt;/a&gt; is a JavaScript API for processing and synthesizing audio in web applications. It has been implemented first in Google Chrome and later on in Safari. The intention behind this blog post is to explain
how other WebKit ports can support the &lt;a class="reference external" href="https://bugs.webkit.org/show_bug.cgi?id=61355"&gt;WebAudio APIs using
GStreamer&lt;/a&gt;. The &lt;a class="reference external" href="http://webkitgtk.org"&gt;WebKit GTK+&lt;/a&gt; port is already up to speed and the
&lt;a class="reference external" href="http://trac.webkit.org/wiki/EFLWebKit"&gt;EFL&lt;/a&gt; and &lt;a class="reference external" href="http://trac.webkit.org/wiki/QtWebKit"&gt;Qt&lt;/a&gt; ports are within reach as well.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="http://chromium.googlecode.com/svn/trunk/samples/audio/index.html"&gt;Chromium WebAudio demos&lt;/a&gt; don't work yet in &lt;a class="reference external" href="http://projects.gnome.org/epiphany/"&gt;Epiphany&lt;/a&gt; because
WebKitGTK+ doesn't yet ship with WebAudio support enabled by default
and the WebView used by Epiphany doesn't yet enable the
&lt;a class="reference external" href="http://webkitgtk.org/reference/webkitgtk/stable/WebKitWebSettings.html#WebKitWebSettings--enable-webaudio"&gt;enable-web-audio WebKitWebSetting&lt;/a&gt;. However, for the brave people
willing to &lt;a class="reference external" href="http://trac.webkit.org/wiki/BuildingGtk"&gt;build WebKitGTK+&lt;/a&gt;, here are the steps to follow:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ Tools/Scripts/build-webkit --gtk --web-audio
$ Tools/Scripts/run-launcher --gtk --enable-web-audio=TRUE http://chromium.googlecode.com/svn/trunk/samples/audio/shiny-drum-machine.html
&lt;/pre&gt;
&lt;p&gt;I especially like the drum machine demo, pretty impressing stuff!  So,
back to the topic. Fortunately the WebAudio AudioContext was designed
to allow multiple platform backends in WebCore, I'm going to talk
about the GStreamer backend. It was first prototyped by &lt;a class="reference external" href="http://falcosigh.wordpress.com/"&gt;Zan
Dobersek&lt;/a&gt; and he kindly passed me on the task which I continued and
upstreamed in WebKit trunk.&lt;/p&gt;
&lt;p&gt;The two biggest features of the backend are:&lt;/p&gt;
&lt;p&gt;1. Decoding audio data from a media file or from a memory pointer and
pulling it into the WebAudio machinery of WebKit where it's going to
be processed by the WebAudio pipeline.&lt;/p&gt;
&lt;p&gt;2. Getting back audio data as WAV from the WebAudio pipeline and play
it back :)&lt;/p&gt;
&lt;p&gt;For the first step we use &lt;a class="reference external" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-decodebin2.html"&gt;decodebin2&lt;/a&gt; with data coming from either
filesrc or giostreamsrc. The decoded data is split in mono channels
using the &lt;a class="reference external" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-deinterleave.html"&gt;deinterleave&lt;/a&gt; element, passed to appsinks and converted to
AudioChannels which internally store the data in FloatArrays. Every
AudioChannel is stored in an AudioBus instance which we pass onto
WebCore for further internal processing. The implementation can be
found in the &lt;a class="reference external" href="http://trac.webkit.org/browser/trunk/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp"&gt;AudioFileReaderGStreamer.cpp&lt;/a&gt; file.&lt;/p&gt;
&lt;p&gt;Internally the WebAudio stack also relies on our &lt;a class="reference external" href="http://trac.webkit.org/browser/trunk/Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp"&gt;GStreamer FFTFrame&lt;/a&gt;
implementation which uses the gst-fft library to perform Fast Fourier
Transforms.&lt;/p&gt;
&lt;p&gt;Then let's talk about playback! Once the WebAudio stack has finished
processing data and if the web developer created an
&lt;a class="reference external" href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioDestinationNode"&gt;AudioDestinationNode&lt;/a&gt; as part of his WebAudio pipeline, the user needs
to hear something playing :) As the mighty reader might guess the
magic is done in an &lt;a class="reference external" href="http://trac.webkit.org/browser/trunk/Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp"&gt;AudioDestinationGStreamer.cpp&lt;/a&gt; file! I decided to
implement most of the logic about reading data from the AudioBus as a
GStreamer source element, called WebKitWebAudioSourceGStreamer. This
element takes every AudioChannel of the AudioBus, convert the
FloatArray data to GStreamer buffers, &lt;a class="reference external" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-interleave.html"&gt;interleave&lt;/a&gt; the channels and
encode the whole as WAV data using the &lt;a class="reference external" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-wavenc.html"&gt;wavenc&lt;/a&gt; element. In the
AudioDestination GStreamer pipeline we then use this shiny source
element, parse the WAV data and pass it on the audio sink!&lt;/p&gt;
&lt;p&gt;What's next in our roadmap?&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;I'm not sure this source element was the correct approach
in the end, I think that at some point I'll just refactor it into
the AudioDestination implementation.&lt;/li&gt;
&lt;li&gt;Port to GStreamer 0.11 APIs! This work is on-going already for the MediaPlayer.&lt;/li&gt;
&lt;li&gt;There are still some bugs to fix, before I really feel confident
about enabling this feature by default. We should also add support
for reading data from the HTML5 Media elements.&lt;/li&gt;
&lt;li&gt;The WebKit webaudio layout tests are almost passing on the build
bots, this work is &lt;a class="reference external" href="https://bugs.webkit.org/show_bug.cgi?id=67187"&gt;on-going&lt;/a&gt; as well.&lt;/li&gt;
&lt;li&gt;Enable WebAudio by default in WebKitGTK's build and Epiphany,
targetting GNOME 3.6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I would like to thank &lt;a class="reference external" href="http://igalia.com"&gt;Igalia&lt;/a&gt; for allowing me to dedicate work time on this project :)&lt;/p&gt;


</content>
</entry>

<entry>
<title>Gajim in your GNOME3 Shell</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/118/"/>
<id>http://base-art.net/Articles/118/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>April 08, 2011 07:57 AM</updated>
<content type="html">
&lt;p&gt;The IM integration in the &lt;a class="reference" href="http://gnome3.org"&gt;GNOME3&lt;/a&gt; is interesting, but only for
the people using Empathy :) Because my personal preference goes
to another client called &lt;a class="reference" href="http://gajim.org"&gt;Gajim&lt;/a&gt; I wanted it to fit more in the
Shell. To reach this goal I worked on 2 small projects partly
during my &lt;a class="reference" href="http://igalia.com"&gt;Igalia&lt;/a&gt; hackfest hours and partly during my free time.&lt;/p&gt;
&lt;p&gt;The first bit is a &lt;a class="reference" href="http://trac-plugins.gajim.org/wiki/GnomeSessionManager"&gt;Gajim plugin&lt;/a&gt; integrating with the GNOME
Session-Manager and synchronizing your status in GNOME with your
Gajim status.&lt;/p&gt;
&lt;p&gt;The second part is a &lt;a class="reference" href="http://git.gnome.org/browse/gnome-shell-extensions/tree/extensions/gajim"&gt;Shell extension&lt;/a&gt; hooking to Gajim via
D-Bus to monitor chat notifications and allow chatting in the
Shell without directly using the Gajim window. This behaves
exactly as the Empathy integration.&lt;/p&gt;
&lt;p&gt;There's still some work to do, like inhibiting notifications
coming from Gajim because currently when a incoming chat appears
the user gets a notification from the builtin Shell IM and a
notification from Gajim itself. A workaround is to disable some
notifications in the Gajim preferences.&lt;/p&gt;
&lt;p&gt;As I needed some &lt;a class="reference" href="http://trac.gajim.org/ticket/6787"&gt;new D-Bus API in Gajim&lt;/a&gt; the Shell extension
requires Gajim-nightly &amp;gt;= 20110326.&lt;/p&gt;
&lt;p&gt;Congrats to the GNOME Team for this awesome GNOME3 release and
happy chating :)&lt;/p&gt;

</content>
</entry>

<entry>
<title>WebKitGTK+ Hackfest!</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/112/"/>
<id>http://base-art.net/Articles/112/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>August 20, 2010 10:58 AM</updated>
<content type="html">
&lt;p&gt;This was a nice week in A CoruÃ±a, Spain. The WebKitGTK+ &lt;a class="reference" href="http://live.gnome.org/WebKitGtk/Hackfest2009"&gt;Hackfest&lt;/a&gt;
went well I think :) The &lt;a class="reference" href="http://www.igalia.com"&gt;Igalia&lt;/a&gt; office is great for such an
event, the organization/infrastructure was well done, the hotel
near the office was awesome, what else? We managed to get things
done code-wise! Even though the list is big some items were
proudly erased from the TODO like:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Dan started a rewrite of some parts of libsoup with gio and worked on the soup URI loader&lt;/li&gt;
&lt;li&gt;Xan and Gustavo worked on form authentication saving in WebKitGTK+/Epiphany&lt;/li&gt;
&lt;li&gt;Xan did some good progress on DOM bindings&lt;/li&gt;
&lt;li&gt;User-Agent support in Epiphany&lt;/li&gt;
&lt;li&gt;Page cache control support in WebKitGTK+ was merged by Alex&lt;/li&gt;
&lt;li&gt;Alex did some work on a11y support for WebKitGTK+&lt;/li&gt;
&lt;li&gt;Bedhad and Evan worked on Harfbuzz integration (instead of Pango)&lt;/li&gt;
&lt;li&gt;Reinout built a list of Epiphany regressions to fix&lt;/li&gt;
&lt;li&gt;Evan and Benjamin worked on improving the build process (size and time)&lt;/li&gt;
&lt;li&gt;Martin and Cody worked on ARGB windows support for WebKitGTK+&lt;/li&gt;
&lt;li&gt;Benjamin went on war against crashers&lt;/li&gt;
&lt;li&gt;and I worked on merging HTML5 video controls and the media tests&lt;/li&gt;
&lt;li&gt;probably a lot more I didn't catch during all the discussions ;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still some work to do though, like for HTML5 audio/video support:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;on-disk buffering&lt;/li&gt;
&lt;li&gt;fullscreen view&lt;/li&gt;
&lt;li&gt;closed captions (this seems very specific to SMIL)&lt;/li&gt;
&lt;li&gt;pitch control (when scrubbing)&lt;/li&gt;
&lt;li&gt;enhanced controls UI&lt;/li&gt;
&lt;li&gt;and still some media tests to fix :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So thank you to Igalia, &lt;a class="reference" href="http://collabora.co.uk"&gt;Collabora&lt;/a&gt; and the &lt;a class="reference" href="http://gnome.org"&gt;GNOME&lt;/a&gt; foundation for
sponsoring this event!&lt;/p&gt;

</content>
</entry>

<entry>
<title>WebKitGTK+ and HTML5 fullscreen video</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/117/"/>
<id>http://base-art.net/Articles/117/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>August 20, 2010 10:47 AM</updated>
<content type="html">
&lt;p&gt;&lt;a class="reference" href="http://www.w3.org/TR/html5/video.html#video"&gt;HTML5 video&lt;/a&gt; is really nice and all but one annoying thing is the
lack of fullscreen video specification, it is currently up to the
User-Agent to allow fullscreen video display.&lt;/p&gt;
&lt;p&gt;WebKit allows a fullscreen button in the media controls and
Safari can, on user-demand only, switch a video to fullscreen and
display nice controls over the video. There's also a
webkit-specific DOM API that allow custom media controls to also
make use of that feature, as long as it is initiated by a user
gesture. Vimeo's HTML5 player uses that feature for instance.&lt;/p&gt;
&lt;p&gt;Thanks to the efforts made by &lt;a class="reference" href="http://igalia.com"&gt;Igalia&lt;/a&gt; to improve the WebKit GTK+ port and its GStreamer media-player, I have been able to implement support for this fullscreen video display feature. So &lt;a class="reference" href="http://trac.webkit.org/wiki/ApplicationsGtk"&gt;any application&lt;/a&gt; using WebKitGTK+ can now make use of it :)&lt;/p&gt;
&lt;p&gt;The way it is done with this first implementation is that a new
fullscreen gtk+ window is created and our GStreamer media-player
inserts an autovideosink in the pipeline and overlays the video
in the window. Some simple controls are supported, the UI is
actually similar to Totem's. One improvement we could do in the
future would be to allow application to override or customize
that simple controls UI.&lt;/p&gt;
&lt;p&gt;The nice thing about this is that we of course use the
&lt;a class="reference" href="http://www.gstreamer.net/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstxoverlay.html"&gt;GstXOverlay&lt;/a&gt; interface and that it's implemented by the linux,
windows and mac os video sinks :) So when other WebKit ports
start to use our GStreamer player implementation it will be
fairly easy to port the feature and allow more platforms to
support fullscreen video display :)&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://blogs.gnome.org/otte/2009/10/05/cairo-is-slow/"&gt;Benjamin&lt;/a&gt; also suggested that we could reuse the cairo surface of
our WebKit videosink and paint it in a fullscreen GdkWindow. But
this should be done only when his Cairo/Pixman patches to enable
hardware acceleration land.&lt;/p&gt;
&lt;p&gt;So there is room for improvement but I believe this is a first
nice step for fullscreen HTML5 video consumption from &lt;a class="reference" href="http://live.gnome.org/Epiphany"&gt;Epiphany&lt;/a&gt;
and other WebKitGTK+-based browsers :) Thanks a lot to &lt;a class="reference" href="http://blog.kov.eti.br/"&gt;Gustavo&lt;/a&gt;,
Sebastian DrÃ¶ge and &lt;a class="reference" href="http://abandonedwig.info/blog/"&gt;Martin&lt;/a&gt; for the code-reviews.&lt;/p&gt;

</content>
</entry>

<entry>
<title>Bay Area, California!</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/116/"/>
<id>http://base-art.net/Articles/116/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>April 22, 2010 04:13 AM</updated>
<content type="html">
&lt;p&gt;Writting this post from San Francisco where I am spending some
volcanic, work and little sightseeing time :)&lt;/p&gt;
&lt;div class="section"&gt;
&lt;h1&gt;&lt;a id="work-hacking" name="work-hacking"&gt;Work/Hacking&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I initially came here for the first &lt;a class="reference" href="http://trac.webkit.org/wiki/April%202010%20Meeting"&gt;WebKit Contributor Meeting&lt;/a&gt; with
my &lt;a class="reference" href="http://igalia.com"&gt;Igalia&lt;/a&gt; coworkers &lt;a class="reference" href="http://blogs.igalia.com/alex"&gt;Alex&lt;/a&gt;, &lt;a class="reference" href="http://blogs.igalia.com/juanjo"&gt;Juanjo&lt;/a&gt; and &lt;a class="reference" href="http://blogs.gnome.org/xan"&gt;Xan&lt;/a&gt;. We used the time here to
also meet a customer we have in Bay Area and some of us attended &lt;a class="reference" href="http://www.embeddedlinuxconference.com/elc_2010"&gt;ELC&lt;/a&gt;
and &lt;a class="reference" href="http://events.linuxfoundation.org/events/collaboration-summit"&gt;Linux Collab&lt;/a&gt; Summit too. I was meant to attend the last day of ELC
but we were a bit late asking for it so it was dropped from the long
queue of people wanting to attend as well :/&lt;/p&gt;
&lt;p&gt;People attending ELC and/or Linux Collab got a free Google Nexus. I
was kinda sad to not get one because of that registration issue and
Juanjo kindly gave me the one he got. So I will try it for a while,
write a little N900 vs NexusOne blog post and probably give the phone
back to some Igalian ;). Thanks Juanjo!&lt;/p&gt;
&lt;p&gt;The WebKit meeting was interesting. Although I didn't make much
talking I attended the session about moving to git, the one about how
to deal with experimental features, the WebKit2 one and finally the
one about the Media Elements. The last one was interesting for me
especially because I work on the MediaPlayer stuff in WebKitGTK+ ;)&lt;/p&gt;
&lt;p&gt;This last session motivated me again to work on video fullscreen for
WebKitGTK+. I have now a working patch and hope to share some
FullscreenController code with the windows port (and mac maybe). The
way I did it is the following:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;create a bin which will serve as video-sink for playbin2&lt;/li&gt;
&lt;li&gt;link a ghost pad of the bin to a tee&lt;/li&gt;
&lt;li&gt;in one branch of tee I added a queue and our internal webkit
videosink&lt;/li&gt;
&lt;li&gt;when the user requests fullscreen I create a new branch with a
ffmpegcolorspace, queue and autovideosink&lt;/li&gt;
&lt;li&gt;overlay is handed of to a window created by the fullscreen
controller&lt;/li&gt;
&lt;li&gt;when user exits from fullscreen I remove the branch from the tee.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I can now enter fullscreen by clicking on the fullscreen button of the
media controls and leave fullscreen by pressing escape of f. So the
next step is to draw some media controls over the video and handle the
actions. Not sure what to do with the browser window when fullscreen is
activated... hide? pause? Suggestions welcome :) Safari for instance
animates the video box so it nicely takes all the screen estate, not
sure I can do that with GTK...&lt;/p&gt;
&lt;p&gt;Lately I've also been working on astracting some things away from the
MediaPlayer backend so it can eventually be reused by other ports. I
even started experimenting on mac! More to come on this. So what I
needed to fix/abstract:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;I moved the cairo calls from the paint method to new ImageGstreamer
abstractions&lt;/li&gt;
&lt;li&gt;The libsoup calls in the webkitsrc element have been ifdef'd. The
message pausing/resuming needs to be abstracted away.&lt;/li&gt;
&lt;li&gt;If the underlying application doesn't run on a gmainloop the
gstreamer messages need to be processed with a synchronous handler.&lt;/li&gt;
&lt;li&gt;ports implementing fullscreen need adaptations as well (use overlay
when possible, see above).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm not yet really proud of all these patches so this seems to appear
as teasing-only, sorry for that ;) I will blog about this again when the
patches land in trunk.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section"&gt;
&lt;h1&gt;&lt;a id="tourism" name="tourism"&gt;Tourism&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I was supposed to leave SF on the 15th of april but a volcano with a
name a french guy like me can't pronounce decided otherwise! Alex,
Juanjo and Xan managed to fly back because Madrid airport wasn't
closed. So &lt;a class="reference" href="http://netzflocken.de/"&gt;Frank&lt;/a&gt; and I went on a little road trip towards Muir Woods
and Reyes point. This is an amazing landscape, we even saw a reserve
of elephant seals :) In SF we also went to the Golden Gate park and
the Japanese park inside, very nice. All the week was the occasion of
eating japanese food, burritos, cable-car(ing) and walking endless
miles on the hills of SF. Last saturday was Mike's birthday party and
I was supposed to leave on sunday. The flight was cancelled for the
second time. Mike kindly accepted to let me sleep in the guest room
and I worked from a cafe in Oak street.&lt;/p&gt;
&lt;p&gt;This time in SF was also a good occation to see other people stranded
like Christian, Robert, Philippe (all 3 from Collabora), Marc (fellow
fluendo coworker) and some locals like Brandon Lewis, David Shleef.&lt;/p&gt;
&lt;p&gt;My next attempt (hopefully the last!) to reach Spain is scheduled for
this friday, the Ashing seems somehow to let planes fly (or is it the
airlines lobbying over politics?) so I have good hopes this time.&lt;/p&gt;
&lt;p&gt;Dude this is the longest post I ever wrote. Thanks for reading (or
skipping :)&lt;/p&gt;
&lt;/div&gt;

</content>
</entry>

<entry>
<title>Mirabeau on Maemo</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/115/"/>
<id>http://base-art.net/Articles/115/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>February 11, 2010 03:20 PM</updated>
<content type="html">
&lt;p&gt;At FOSDEM Frank and I showed the work we did on &lt;a class="reference" href="http://coherence.beebits.net/wiki/Mirabeau"&gt;Mirabeau&lt;/a&gt;, a
screencast was made few days before FOSDEM and we showed it but I
wanted to add some comments and re-arrange some parts of it, so
here it is now, re-arranged with PiTiVi :)&lt;/p&gt;
&lt;video controls&gt;
 &lt;source type="video/ogg" src="http://base-art.net/static/mirabeau2.ogg" codecs="theora, vorbis"&gt;
 Please install a HTML5 compliant browser. Meanwhile you can download the video from http://base-art.net/static/mirabeau2.ogg
&lt;/video&gt;&lt;p&gt;(&lt;a class="reference" href="http://base-art.net/static/mirabeau2.ogg"&gt;Video here&lt;/a&gt; in ogg/theora/vorbis if your browser fails to play it).&lt;/p&gt;
&lt;p&gt;This is still work in progress, we have some issues with
&lt;a class="reference" href="http://telepathy.freedesktop.org"&gt;Telepathy&lt;/a&gt; MUC Tubes, I promised Sjoerd from Telepathy fame to
create some new bugs in bugzilla. Also the UI itself still needs
work, especially the MediaRenderer UI. I will also at some point
add a chatroom window.&lt;/p&gt;
&lt;p&gt;Oh and we also won a N900 at the XMPP developer contest thanks to
this application! Thanks a lot to the &lt;a class="reference" href="http://www.xmpp.org/xsf/"&gt;XSF&lt;/a&gt; and Nokia :)&lt;/p&gt;

</content>
</entry>

<entry>
<title>Guess what</title>
<link rel="alternate" type="text/html" href="http://base-art.net/Articles/114/"/>
<id>http://base-art.net/Articles/114/</id>

<author>
<name>Philippe Normand</name>
</author>
<updated>January 29, 2010 11:59 AM</updated>
<content type="html">
&lt;a class="reference image-reference" href="http://fosdem.org"&gt;&lt;img alt="http://base-art.net/static/fosdem-2010.png" src="http://base-art.net/static/fosdem-2010.png" /&gt;&lt;/a&gt;
&lt;p&gt;Arriving friday morning and leaving monday evening! I will do a &lt;a class="reference" href="http://live.gnome.org/Brussels2010/Devroom"&gt;quick presentation about WebKitGTK+&lt;/a&gt; and a talk with my friend &lt;a class="reference" href="http://netzflocken.de/"&gt;Frank&lt;/a&gt; about Mirabeau and personal media networks in the &lt;a class="reference" href="http://xmpp.org/summit/summit8.shtml#saturday"&gt;XMPP room&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will be a whole &lt;a class="reference" href="http://igalia.com"&gt;Igalia&lt;/a&gt; gang hanging out there at Fosdem, looking forward socializing around beers :) Oh and don't miss &lt;a class="reference" href="http://www.joaquimrocha.com/2010/01/28/going-to-fosdem-2/"&gt;Joaquim&lt;/a&gt; and &lt;a class="reference" href="http://blogs.igalia.com/vjaquez/2010/01/24/ping-dsp-task-node/"&gt;Victor&lt;/a&gt;'s talks!&lt;/p&gt;

</content>
</entry>



</feed>