Phil's blog

Apr 2014
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Bay Area, California!

Writting this post from San Francisco where I am spending some volcanic, work and little sightseeing time :)


I initially came here for the first WebKit Contributor Meeting with my Igalia coworkers Alex, Juanjo and Xan. We used the time here to also meet a customer we have in Bay Area and some of us attended ELC and Linux Collab 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 :/

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!

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+ ;)

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:

  • create a bin which will serve as video-sink for playbin2
  • link a ghost pad of the bin to a tee
  • in one branch of tee I added a queue and our internal webkit videosink
  • when the user requests fullscreen I create a new branch with a ffmpegcolorspace, queue and autovideosink
  • overlay is handed of to a window created by the fullscreen controller
  • when user exits from fullscreen I remove the branch from the tee.

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

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:

  • I moved the cairo calls from the paint method to new ImageGstreamer abstractions
  • The libsoup calls in the webkitsrc element have been ifdef'd. The message pausing/resuming needs to be abstracted away.
  • If the underlying application doesn't run on a gmainloop the gstreamer messages need to be processed with a synchronous handler.
  • ports implementing fullscreen need adaptations as well (use overlay when possible, see above).

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.


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

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.

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.

Dude this is the longest post I ever wrote. Thanks for reading (or skipping :)

by Philippe Normand on Thu Apr 22 06:13:18 2010 (Viewed: 7037 / 4 comments )
  |   RSS  |   RSS2  |   Atom  |   Source  |   Edit

#.   Edward Hervey on Thu Apr 22 08:46:47 2010

Nice improvements on the webkit front.

Regarding the source, why don't you create a GStreamer source element that wraps the webkit protocol handling ?

A couple of benefits you'd get from that is: * Not having to worry about the underlying protocol implementation (i.e. platform agnostic) * Have authentication/encryption/cookie-passing handled for you

Regarding the video output, using a custom sink might become a problem if you're using Hardware decoders since you'll have to bring back the video back from GPU memory to main-memory... to then push it back to GPU. Maybe Company's cairo elements would help in that regard to avoid back-and-forth between main memory and GPU.

#.   phil on Thu Apr 22 08:52:32 2010

slomo wrote a webkitsrc element already, it handles cookies, referer (not sure about auth) :) But there are some libsoup calls inside that need to be abstracted. :)

For video yes you are right, time will come for Company's nice work

#.   Marius Gedminas on Thu Apr 22 12:33:32 2010

Please consider that people with dual-head systems may want to watch fullscreen video on one head and read the transcript (browse, in other words) on the other head.

#.   phil on Thu Apr 22 18:15:46 2010

For the gst messages handling see also

I first tried doing polling but people didn't like it, for good reasons I think ;) So the sync handler seems to be a better solution as long as it is executed from the main thread using a g_timeout fired once only.. Thanks slomo for reminding me that :)

Comments not allowed anymore on this post