<?xml version="1.0" encoding="iso-8859-1"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:content="http://purl.org/rss/1.0/modules/content/">

<channel rdf:about="http://base-art.net/Sections/3/">
<description>Phil's blog</description>
<link>http://base-art.net/Sections/3/</link>
<title>Base-Art / Misc</title>



<items>
<rdf:seq>

<rdf:li rdf:resource="http://base-art.net/Articles/113/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/107/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/97/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/95/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/83/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/76/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/75/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/70/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/69/"/>

<rdf:li rdf:resource="http://base-art.net/Articles/68/"/>

</rdf:seq>
</items>


</channel>





<item rdf:about="http://base-art.net/Articles/113/">
<dc:date>2010-01-22T09:51:42.000004+02:00</dc:date>
<title>GStreamer and on-disk videos buffering</title>
<link>http://base-art.net/Articles/113/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;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 :)&lt;/p&gt;
&lt;p&gt;Under the hood the magic is in queue2 and uridecodebin but you mostly
interface with playbin2. Here is the action plan:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Add the &amp;quot;download&amp;quot; flag to the playbin2 flags property&lt;/li&gt;
&lt;li&gt;Upon reception of GST_MESSAGE_BUFFERING messages on the bus, add an
idle source to the main loop (for instance)&lt;/li&gt;
&lt;li&gt;In that source create a gst_query_new_buffering() query with
GST_PERCENT_FORMAT format perform the query to playbin2&lt;/li&gt;
&lt;li&gt;Use gst_query_parse_buffering_range() to get the stop value and
compute the fill_status value&lt;/li&gt;
&lt;li&gt;Notify your UI of the fill level&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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 &amp;quot;deep-notify::temp-location&amp;quot;
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.&lt;/p&gt;
&lt;p&gt;This is what Totem does, as far as I could understand its code. This
is also how I implemented (&lt;a class="reference" href="https://bugs.webkit.org/show_bug.cgi?id=30004"&gt;yet to merge&lt;/a&gt;) it in WebKitGTK+:&lt;/p&gt;
&lt;a class="reference image-reference" href="/static/iron2_buffering.png"&gt;&lt;img alt="/static/iron2_buffering-thumb.png" src="/static/iron2_buffering-thumb.png" /&gt;&lt;/a&gt;
&lt;p&gt;And to provide a simple example I added this feature to the gst-python play.py example, available in a &lt;a class="reference" href="http://gist.github.com/271334"&gt;gist&lt;/a&gt; after the break!&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/107/">
<dc:date>2009-05-23T22:56:20.000005+02:00</dc:date>
<title>Python, sockets, GStreamer and the Garbage collector</title>
<link>http://base-art.net/Articles/107/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;Long time no blog, eh? Anyway I was today hooking up &lt;a class="reference" href="http://telepathy.freedesktop.org"&gt;Telepathy&lt;/a&gt;
Stream Tubes with &lt;a class="reference" href="http://gstreamer.org"&gt;GStreamer&lt;/a&gt; so that I could stream video over
local-xmpp, go figure why... :)&lt;/p&gt;
&lt;p&gt;Everything was fine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;on one side, offer a stream tube in a multi-user room and setup
a pipeline like this one:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
videotestsrc ! gdppay ! multifdsink
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;on client side, join the room and accept the tube, hooked into
the following pipeline with a socket:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
fdsrc ! gdpdepay ! xvimagesink
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;when server is notified of new client, add its socket fd in
multifdsink and start playback&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &amp;amp; Telepathy folks for this nice stuff!&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/97/">
<dc:date>2008-02-27T22:49:37.000002+02:00</dc:date>
<title>Hi Planet GNOME!</title>
<link>http://base-art.net/Articles/97/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;Just a quick post to say hi to the &lt;a class="reference" href="http://planet.gnome.org"&gt;GNOME community&lt;/a&gt;. Thanks Jeff for adding me!&lt;/p&gt;
&lt;p&gt;So I'm Philippe (philn on IRC), working for Fluendo on the &lt;a class="reference" href="http://elisa.fluendo.com"&gt;Elisa&lt;/a&gt;
MediaCenter, writing Python fluently during work hours for fun and
profit and off work, only for fun :)&lt;/p&gt;
&lt;p&gt;I regularly write news about &lt;a class="reference" href="http://elisa.fluendo.com"&gt;Elisa&lt;/a&gt;, did some posts about &lt;a class="reference" href="https://code.fluendo.com/pigment/trac/timeline"&gt;Pigment&lt;/a&gt;
and &lt;a class="reference" href="http://gstreamer.freedesktop.org"&gt;GStreamer&lt;/a&gt; too and a good bunch of posts related to various
hacks and ramblings about Python.&lt;/p&gt;
&lt;p&gt;So expect new posts about Pigment and Elisa towards better
integration in the GNOME desktop. I'll also try to blog about my
little growing experience in the GStreamer world :)&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/95/">
<dc:date>2008-02-12T22:17:45.000001+02:00</dc:date>
<title>N810: first impressions</title>
<link>http://base-art.net/Articles/95/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;Two weeks ago I bought my N810 with the discount code kindly
offered by Nokia for the Maemo development program. The device is
really nice, the OS2008 provides a totally new user
experience (compared to the version I used on my N770). So here
are few remarks I have after few weeks of usage:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;the padlock slider is too easy to activate.&lt;/li&gt;
&lt;li&gt;the keyboard is coool but I sometimes have difficulties with
the keys of the first row in the keyboard. To me they are
slightly too near from the screen.&lt;/li&gt;
&lt;li&gt;I dislike the kinda &amp;quot;micro&amp;quot; USB plug, it looks like some Nokia
specific plug, a mini-usb plug would have been more handy so
that I could use the same USB wire as for my camera.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So far I used the IM a bit with Frank for a video chat and with
Mom for an audio-only GoogleTalk chat. Sound is good but video
quality was bad, I need to make more tests I guess :)&lt;/p&gt;
&lt;p&gt;Played a bit with MediaStreamer and &lt;a class="reference" href="https://coherence.beebits.net/"&gt;Coherence&lt;/a&gt;, everything works
fine, excepted seeking that's lacking because Coherence HTTP
server doesn't yet support HTTP range requests.&lt;/p&gt;
&lt;p&gt;I also did some media transcoding so that I can watch videos on
the device. Videos need to be encoded in MP4 at some specific
resolutions. Fortunately there's an &lt;a class="reference" href="http://mediautils.garage.maemo.org/tablet-encode.html"&gt;handy script&lt;/a&gt; at maemo.org to
do the whole job for me :)&lt;/p&gt;
&lt;p&gt;Last weekend I gave a try to geottagging using the &lt;a class="reference" href="http://maemo.org/community/wiki/HowToUseGPSFrameworkInOS2007"&gt;documentation on
Maemo wiki&lt;/a&gt;. I ended up with a nice KML file that can be displayed on
Google Earth and &lt;a class="reference" href="http://maps.google.com/maps?f=q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=http:%2F%2Fbase-art.net%2Fstatic%2Ftest.kml&amp;amp;ie=UTF8&amp;amp;z=14&amp;amp;om=0"&gt;Google Maps&lt;/a&gt; (see below too). I'll directly
integrate these features in my gallery soon, geotagging is an
interesting thing, especially for my next holidays... :)&lt;/p&gt;
&lt;iframe width="300" height="300" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;hl=fr&amp;geocode=&amp;q=http:%2F%2Fbase-art.net%2Fstatic%2Ftest.kml&amp;ie=UTF8&amp;om=0&amp;s=AARTsJoKslGlhTBznoJVAptgAtiDnwEaVg&amp;ll=41.390138,2.18844&amp;spn=0.045075,0.072956&amp;z=13&amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;hl=fr&amp;geocode=&amp;q=http:%2F%2Fbase-art.net%2Fstatic%2Ftest.kml&amp;ie=UTF8&amp;om=0&amp;ll=41.390138,2.18844&amp;spn=0.045075,0.072956&amp;z=13&amp;source=embed" style="color:#0000FF;text-align:left"&gt;Agrandir le plan&lt;/a&gt;&lt;/small&gt;&lt;p&gt;In the coming weeks I'll start developing user-interfaces using the
Python EFL libraries. I'll most likely play a bit with the Coherence
MediaRenderer called &lt;a class="reference" href="https://coherence.beebits.net/wiki/CoherenceMediaRenderer"&gt;Compere&lt;/a&gt;, so far implemented using PyGame and try
to rework it with the EFL libs... More to come later :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;edit&lt;/strong&gt;: Frank the Coherence guru reminds me that Coherence de facto supports HTTP range requests but MediaStreamer HTTP client doesn't implement the seek requests correctly... :)&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/83/">
<dc:date>2007-02-26T11:00:41+02:00</dc:date>
<title>Back from FOSDEM</title>
<link>http://base-art.net/Articles/83/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;So I was at &lt;a class="reference" href="http://fosdem.org"&gt;FOSDEM 2007&lt;/a&gt;. Nice conf, many people and interesting talks. I crashed at Thomas'_ place for the week-end, thanks dude :-) Of particular interest:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference" href="http://laptop.org"&gt;OLPC&lt;/a&gt; : laptops for children&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.openmoko.com/"&gt;OpenMoko&lt;/a&gt; : open-source phone&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.mandriva.com/projects/metisse"&gt;Metisse&lt;/a&gt; : not a 3D desktop!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wish I could attend to &lt;a class="reference" href="http://www.process-one.net/en/oneteam/"&gt;OneTeam&lt;/a&gt; and &lt;a class="reference" href="http://telepathy.freedesktop.org/wiki/"&gt;Telepathy&lt;/a&gt; talks. Thomas told me about a nice project presented there as well: &lt;a class="reference" href="http://www.metasploit.com/"&gt;MetaSploit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://fluendo.com/elisa"&gt;Elisa&lt;/a&gt; talk went quite well, I got many interesting questions especially about the PVR we plan to bring in at some point. The &lt;a class="reference" href="http://seamless.sf.net"&gt;Seamless&lt;/a&gt; guy showed up at the end of the talk, Seamless is a DVD player written in Python and using GStreamer. It wasn't updated for a while, still using gst 0.8 as I understood. But soon it'll be ported to 0.10 and maybe at some point an Elisa DVD plugin will be available :)&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://www.advogato.org/person/ensonic/"&gt;Stefan&lt;/a&gt; gave me a N770 so that I can hack on a Elisa client for Maemo platform, thanks again Stefan!&lt;/p&gt;
&lt;!-- ckey="34FE163E" --&gt;
</description>
</item>


<item rdf:about="http://base-art.net/Articles/76/">
<dc:date>2006-09-01T20:51:39.000004+02:00</dc:date>
<title>New home, new country, same job</title>
<link>http://base-art.net/Articles/76/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;After nearly 6 months spent living in Lyon, I headed south once
more, to Barcelona :) I entered a new flat with 2 other frenchie
fellows, we'll be damn fine there!!&lt;/p&gt;
&lt;p&gt;We still have some administrative paper work to do, but it can
wait, we did the essential ones.. The flat is a bit messy right
now, there are stuff to unpack lying around, and pieces to put
back together, but it will get better soon ;)&lt;/p&gt;
&lt;p&gt;It seems there are many things to visit right there. Beach is
nice too, and mountains are not that far... So much to discover!&lt;/p&gt;
&lt;p&gt;So, I will be in the same office as my co-workers at Fluendo,
still working on &lt;a class="reference" href="http://fluendo.com/elisa/"&gt;Elisa&lt;/a&gt;. I think the project will evolve faster
and better in this new context. Talking with people face to face
is really better than IRC or video-conferencing; and by the way 
Fluendo folks are so fun to work with :)&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/75/">
<dc:date>2006-08-03T14:56:53.000003+02:00</dc:date>
<title>Switching server</title>
<link>http://base-art.net/Articles/75/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;This evening base-art.net, pythonfr.org and few other hosted domains should be un-available while we migrate websites to a brand new dedicated server. So, fellow readers, don't be surprised ;-)&lt;/p&gt;
&lt;p&gt;Things will come back up this night hopefully. I'm still reachable by mail, phil at base-art dot net. &lt;a class="reference" href="http://larsen-b.com"&gt;Jkx&lt;/a&gt;, the summer-server-migrator, did a good job and won few beers :-)&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/70/">
<dc:date>2006-04-21T00:28:33.000004+02:00</dc:date>
<title>Pimp this rage</title>
<link>http://base-art.net/Articles/70/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;Looks like &lt;a class="reference" href="http://rasterman.com"&gt;Raster&lt;/a&gt; has been hacking on a media center thingy. So far
it looks great, i've watched the &lt;a class="reference" href="http://www.rasterman.com/files/rage2.avi"&gt;demo video&lt;/a&gt;, installed &lt;a class="reference" href="http://www.rasterman.com/files/rage-0.1.0.tar.gz"&gt;rage&lt;/a&gt; in no time
and got it running in, well, even less time :) I must say i'm really
impressed by the look and feel of the app. Need to keep an eye on this
!&lt;/p&gt;
&lt;p&gt;I've even seen a -gstreamer option, but somehow didn't worked
out. Also video thumbnail build/playback didn't worked, but i'm not
really up-to-date with my EFLs these days, and Raster warned Rage
could make your computer blow out :) Anyway, keep up good work Raster!&lt;/p&gt;
&lt;p&gt;Watch out the demo video, it's really impressing.&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/69/">
<dc:date>2006-03-19T12:39:28.000006+02:00</dc:date>
<title>So (privately) delicious</title>
<link>http://base-art.net/Articles/69/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;&lt;a class="reference" href="http://del.icio.us"&gt;Del.icio.us&lt;/a&gt; folks added the so awaited &lt;a class="reference" href="http://blog.del.icio.us/blog/2006/03/private_saving_.html"&gt;private bookmarks saving&lt;/a&gt; support. That's a great step for this service, i need it to save links to private websites or htaccess protected websites or even job-related locations.&lt;/p&gt;
&lt;p&gt;By default the new option is not activated, and once active you need to validate a little checkbox on the &amp;quot;new-post&amp;quot; page to keep the link private.&lt;/p&gt;

</description>
</item>


<item rdf:about="http://base-art.net/Articles/68/">
<dc:date>2006-03-17T19:31:23.000004+02:00</dc:date>
<title>New home, new job</title>
<link>http://base-art.net/Articles/68/</link>
<author>Philippe Normand</author>
<description>
&lt;p&gt;Last month i moved from Brest to Lyon, for a new job. I'm now working
with &lt;a class="reference" href="http://fluendo.com"&gt;Fluendo&lt;/a&gt; folks on a Gstreamer/Python media center open-source
project since March 1st.&lt;/p&gt;
&lt;p&gt;The project is very ambitious, the plan is to provide a
cross-platform, great looking media-center supported by a community of
developers and users (like Gstreamer for instance). We are working
hard, i'll probably post more on that topic later on.&lt;/p&gt;
&lt;p&gt;So, moving on was a bit hard, including flat-hunting, lots of
administrative tasks (phone, electricity, dsl subscriptions and i forget some
others). I'm not finished yet, but quite lazy for the remaining ones. Flat hunting was hard but my new home is quite good, i'm happy with it ;) And many thanks to Gagoune for hosting me during few weeks!&lt;/p&gt;
&lt;p&gt;BTW hello to &lt;a class="reference" href="http://gstreamer.freedesktop.org/planet/"&gt;planet gstreamer&lt;/a&gt;! Very happy to be here :)&lt;/p&gt;

</description>
</item>



</rdf:RDF>