en
Mar 2010
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 31

Last Played

» Bandes Originales de Films – Guilty
» Bandes Originales de Films – L'autre valse d'Amelie
» Bandes Originales de Films – La noyee
» Bandes Originales de Films – Comptine d'un autre ete [L'apres midi]
» Bandes Originales de Films – La valse d'Amelie
» Bandes Originales de Films – Les jours tristes (instrumental)
» Bandes Originales de Films – J'y suis jamais allé
» Ane Brun – Song No. 6 (feat. Ron Sexsmith)
» Ane Brun – Common Bird (Feat. Wendy Mcneil)
» Ane Brun – Love and Misery (Feat. Tobias Fröberg)

Mirabeau on Maemo

At FOSDEM Frank and I showed the work we did on Mirabeau, 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 :)

(Video here in ogg/theora/vorbis if your browser fails to play it).

This is still work in progress, we have some issues with Telepathy 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.

Oh and we also won a N900 at the XMPP developer contest thanks to this application! Thanks a lot to the XSF and Nokia :)

1092 hits / 3 comments Thu Feb 11 16:20:39 2010 -- By: Philippe Normand

Guess what

http://base-art.net/static/fosdem-2010.png

Arriving friday morning and leaving monday evening! I will do a quick presentation about WebKitGTK+ and a talk with my friend Frank about Mirabeau and personal media networks in the XMPP room.

We will be a whole Igalia gang hanging out there at Fosdem, looking forward socializing around beers :) Oh and don't miss Joaquim and Victor's talks!

1112 hits / 1 comments Fri Jan 29 12:59:03 2010 -- By: Philippe Normand

GStreamer and on-disk videos buffering

A really nice feature every video player using GStreamer and playbin2 should have is media on-disk buffering. Even though it is supported only for Quicktime and Flash videos currently it remains one good improvement of the user experience if you are an avid consumer of Apple trailers and flv :)

Under the hood the magic is in queue2 and uridecodebin but you mostly interface with playbin2. Here is the action plan:

  1. Add the "download" flag to the playbin2 flags property
  2. Upon reception of GST_MESSAGE_BUFFERING messages on the bus, add an idle source to the main loop (for instance)
  3. In that source create a gst_query_new_buffering() query with GST_PERCENT_FORMAT format perform the query to playbin2
  4. Use gst_query_parse_buffering_range() to get the stop value and compute the fill_status value
  5. Notify your UI of the fill level

Additionally you can allow the user to save the buffered media for later off-line consumption :) The media is buffered by queue2 in the tmp folder, the exact file location, temp-location queue2 property, can be retrieved by connecting to the "deep-notify::temp-location" signal of playbin2. You also need to make sure that the temporary file is removed when the user exits from your application, GStreamer doesn't automatically take care of that, as far as I could see.

This is what Totem does, as far as I could understand its code. This is also how I implemented (yet to merge) it in WebKitGTK+:

/static/iron2_buffering-thumb.png

And to provide a simple example I added this feature to the gst-python play.py example, available in a gist after the break!

1411 hits / 4 comments Fri Jan 22 09:51:42 2010 -- By: Philippe Normand

WebKitGTK+ Hackfest!

This was a nice week in A Coruña, Spain. The WebKitGTK+ Hackfest went well I think :) The Igalia 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:

  • Dan started a rewrite of some parts of libsoup with gio and worked on the soup URI loader
  • Xan and Gustavo worked on form authentication saving in WebKitGTK+/Epiphany
  • Xan did some good progress on DOM bindings
  • User-Agent support in Epiphany
  • Page cache control support in WebKitGTK+ was merged by Alex
  • Alex did some work on a11y support for WebKitGTK+
  • Bedhad and Evan worked on Harfbuzz integration (instead of Pango)
  • Reinout built a list of Epiphany regressions to fix
  • Evan and Benjamin worked on improving the build process (size and time)
  • Martin and Cody worked on ARGB windows support for WebKitGTK+
  • Benjamin went on war against crashers
  • and I worked on merging HTML5 video controls and the media tests
  • probably a lot more I didn't catch during all the discussions ;)

Still some work to do though, like for HTML5 audio/video support:

  • on-disk buffering
  • fullscreen view
  • closed captions (this seems very specific to SMIL)
  • pitch control (when scrubbing)
  • enhanced controls UI
  • and still some media tests to fix :)

So thank you to Igalia, Collabora and the GNOME foundation for sponsoring this event!

1574 hits / 0 comments Sun Dec 20 23:35:14 2009 -- By: Philippe Normand

Goodbye Fluendo, hello Igalia!

After more than 3 years at Fluendo it was time for me to change and work on new projects/technologies. Elisa, now known as Moovida, has gone a long way since 2006 and I'm sure the project will continue to evolve nicely :)

At the beginning of the week I started working for Igalia, in the Desktop/Mobile team. I will be working from home but this week I am in La Coruña to know my new co-workers, the great office there and the city :) I am very lucky it seems: even the weather is great so far! This Friday we celebrate the 8 years of Igalia in a nice place, as I heard, good opportunity to meet most of the Igalians, I think most of us will be here excepted Claudio and Xan, at least. I started working on WebKitGtk+ and GStreamer with Xan and the other hackers of the WebKit fame that I don't know yet ;) This is cool, but quite a big change for me after nearly 5 years of Python! But I will keep on hacking in Python, at least on Coherence :)

1632 hits / 4 comments Wed Sep 23 20:29:12 2009 -- By: Philippe Normand

Python and gobject-introspection

I've recently been playing with pygobject and gobject-introspection. There's currently a GSoC project for this, Simon Van Der Linden is working on this, and I must say, progressing fast!

Simon does the work on a pygobject branch and also wrote some patches for glib.

Here's a little g-i Clutter code sample, just to show how easy it is to use the runtime bindings:

import sys
import pygtk
pygtk.require('2.0')

from gi.repository import  Clutter

Clutter.init(sys.argv)

stage = Clutter.Stage()
stage.set_size(200, 200)
stage.set_color(Clutter.Color(0, 0, 0, 255))
stage.show()

Clutter.main()

Pretty self-explanatory, create an empty stage and show it. That's quite cool, this new pygobject version will potentially allow Python developers to directly use libraries like Gtk, GStreamer, Clutter and the like without the need of specific bindings.

I have some more examples in a gist. The animation example doesn't work yet because gi doesn't know how to marshal python callable arguments, but... it's getting there! Many kudos to Simon, keep up the good work!

2432 hits / 5 comments Sat Aug 15 11:56:34 2009 -- By: Philippe Normand

Coherence team at GCDS

I gave a talk about Coherence and Telepathy at Gran Canaria Desktop Summit with Frank on tuesday. It went well, there were about 50 people. I think most of the people got the concept we tried to explain: UPnP devices and services are not bound to local network anymore, thanks to the combination of Coherence and XMPP through Telepathy. The slides should be online soon, will post an update to this post when I know the url ;)

Part of the Coherence gang including Benjamin, Frank and me is here at Las Palmas, feel free to grab us if you have any question. It was also nice to meet Karl Vollmer, the Ampache lead developer :)

So we are quite excited about Mirabeau, work on it will continue during the summer and a first release should happen in september. I'm writing a little howto explaining how to easily try the current (work-in-progress) version of Mirabeau, it will land in the wiki in the coming days ;)

update: Slides are there

2281 hits / 0 comments Thu Jul 9 12:58:30 2009 -- By: Philippe Normand

Mirabeau: tubing UPnP over the intertubes

UPnP used to be bound to local network. We're working around this with Coherence and Telepathy tubes to bridge 2 (or more) coherence instances over Jabber chatrooms. So the 2 screenshots below are a glimpse of what we will show at GDCS on the 7th of July :)

On Frank's desktop in Germany, 2 UPnP MediaServers showing up in his LAN. One is local (my media) and the other one is mine, in Spain. If you click on the image you'll see that the device UUID contains the tube string and that the media link is my IP in Spain.

/static/mirabeau-dev-thumb.png

Here is my desktop, showing my local MediaServer and Frank's server:

/static/mirabeau-phil-thumb.png

This is a early-stage prototype, there are still things to improve and new features to implement, like sharing a folder directly from Empathy with a single contact of the roster. For playback we can't yet do NAT traversal, so the Coherence IP address and port are currently hardcoded. We will implement ICE support later on. More to say during the talk :)

4423 hits / 6 comments Mon Jun 29 23:05:12 2009 -- By: Philippe Normand

Python, sockets, GStreamer and the Garbage collector

Long time no blog, eh? Anyway I was today hooking up Telepathy Stream Tubes with GStreamer so that I could stream video over local-xmpp, go figure why... :)

Everything was fine:

  • on one side, offer a stream tube in a multi-user room and setup a pipeline like this one:

    videotestsrc ! gdppay ! multifdsink
    
  • on client side, join the room and accept the tube, hooked into the following pipeline with a socket:

    fdsrc ! gdpdepay ! xvimagesink
    
  • when server is notified of new client, add its socket fd in multifdsink and start playback

But it wasn't working, multifdsink was removing the fd by itself from the list and client wasn't receiving data. I spent some time this afternoon trying to figure out why and thought I might share the solution, if it can serve to anyone using multifdsink in Python. Because I wasn't keeping references of the client socket instances in my code, they were garbage-collected by Python, so the fd was becoming invalid, hence the rejection by multifdsink.

Keeping a list of the socket instances and cleaning it up when the sink emits the client-removed signal does the trick and I got my video streaming over local-xmpp working. Those Tubes are so much fun, thanks Collabora & Telepathy folks for this nice stuff!

477520 hits / 2 comments Sat May 23 22:56:20 2009 -- By: Philippe Normand

Going to FOSDEM

http://www.fosdem.org/promo/going-to

I'll be at FOSDEM this year, arriving Friday afternoon and leaving a bit late on sunday night. Available to talk about free software and Elisa, over beers :)

2664 hits / 0 comments Thu Feb 5 18:03:42 2009 -- By: Philippe Normand