Older blog entries for rbultje (starting at number 97)

Totem Mozilla Embedding
Bastien already said that we had basic javascript functionality people working in the Totem-Mozilla plugin. Today, I finished the second part of the job: a two-way communication protocol. Should ideally use DBUS for that, but we're using something of ourselves right now.

The result of that is that the plugin and the child application (which is spawned on its own for security reasons) interact using some basic IPC command-set. This, in combination with the javascript-functionality, means that I can click images on a HTML page and the player will react as it should. The javascript-calls are compatible with Quicktime Player. Woohoo, finally a kick-ass mozilla media player. :-). Get your daily dose of Totem-CVS today!

MP4 authoring
After Jon's release of pyMusique, I felt the strong need to get my hands on a working MPEG-4 ISO muxer (for GStreamer). Reasons are simple:
  • Writing tags to music downloaded from iTMS (yes, they're untagged!).
  • Capture MPEG-4 video/audio in a MPEG-4 container using Cupid.
  • Transcoding my Ogg/Vorbis files to MPEG-4 so I can transfer them to my iPod.
And so I did. GStreamer can now write full-spec MPEG-4 files. Screenshot. Tested with all of the above use cases. (3) can be done using gst-launch, tags are conserved. (2) just works. Jon is adding support for (1) right now. Get your daily dose of GStreamer CVS right now!
Release day
It's kinda evil, but hey, why not? All poor packagers are busy already, so let's give them some more work. I've released Cupid 0.0.2, which is a GStreamer/GNOME video-capture and -display tool, and GStreamer-FFmpeg 0.8.4, which is a set of GStreamer plugins based on the popular and high-quality ffmpeg codecs.

Other people release, too
Also, one of our new GStreamer supporters, Jon Lech Johansen, released pyMusique today, which is a Gtk-application that lets you buy music from the iTunes Music Store from your GNOME desktop. I'm already a happy user of this piece of software. Great work, Jon!

GNOME-nl release party
After the release of GNOME 2.10 and the congratulations from our KDE-nl colleagues, it was time to celebrate the release locally. A total of 10 people had a great evening in the Stairway to Heaven in Utrecht, the Netherlands. Of course made the obligatory Tux-with-beer picture, but most importantly, we all celebrated the continued livelihood of our beloved GNOME. Here's another picture showing (clock-wise) Kris (with blue hair!), Wouter, Jeroen, Hette, Tino, Vincent and Reinout. Not shown but definately there were Laurens, Marcel and Tim. Great release-party, let's hope we can soon do this again!
European software patents
I just heard multiple such rumours... After the EP (EU parliament) proposed to restart the directive decision-makery, after MPs (national parliaments) of many countries opposed the directive, after many citizens openly opposed the directive, after Denmark announced they would oppose the A-item, at least for the meeting this morning, after all our tries ...

... the EC (EU council) just passed the patent directive. Long live democracy. :-(.

GNOME 2.10 release party
At the day of the release (Wednesday, March 9th), GNOME-nl will be organizing one of the GNOME release parties to celebrate the release of our all-beloved GNOME 2.10. See this page for a complete list. Our party will be held in the Stairway to Heaven, which is a popular cafe close to the train station of Utrecht. All interested people are invited to come and join us from 20.00 on.

All dutch GNOME developers, translaters, contributors and enthusiasts are hereby invited to come and join us in this celebration. Don't bring your laptop, however, it's not a LAN/install party. See you wednesday!

iTunes Music Store #2
So, apparently, if you use iTMS on your Linux/GNOME machine, you can buy songs and play them back. Against all expectations, these songs are:
  • not tagged (shame on you, Apple!)
  • not encrypted (woohoo! love ya)
Hey, it's only $0.99/song, what are we waiting for? :-). Longe live Apple!
iTunes Music Store
Today (that's a lie; it was yesterday), the tooth fairy knocked on my door again. I said "heya tooth fairy, what've you been up to lately?" and the tooth fairy just stood there, smiling, happy, glimming even. Silent. Then, I knew something was gonna happen. I'd been here before.

She said: "Ronald, I've been doing something different lately. Do you want me to take you to this new world and show you the code that will rule your hard disk tomorrow?" and I said "sure, why not" and off we were.

And there we went off, to a computer, she showed me a dark terminal with a GNOME mountains background through the transparent background (yes, that's slow). And she typed, magically, but it worked as if it was a P-4 2 GHz: "search Korn", and output appeared. Free preview (~15sec), played back through GStreamer, $0.99 for the full song. This is not just a price. Those knowledgeable know what this means.

Apple iTunes Music Store accessible on your Linux box (with a shiny GNOME UI, of course). Coming soon.

So this weekend, we had FOSDEM. There were some nice talks from various people, there was no working wireless network and I managed to have good chats with various great people. Same as always, great stuff. I met up with the dutch GNOME people and had some pleasant night-talks in the bars with them (long live gnome-nl!). I also caught a cold, which made the whole somewhat painful, because I've been caughing and sneezing all weekend (and still am). Fortuntely, I wasn't the only sneezing person in there (or, well, fortunately? ...).

Special were the talks I had with Oyvind (GIMP/GGGL/Oxide), Charles (MLT/Kino) and Edward (Pitivi) on how to do more advanced stuff with our respective video solutions w.r.t. video editing (plus lots of cool demos) plus the obligatory amounts of lunch and beer. It's good to have talks with people that know their stuff. It gave me some pretty good ideas on things I can try to do in the future, and some starting points for basic interoperation. More on this is yet to come. Here's some cool stuff: Oyvind can do pretty wacky advanced motion vector and interactivity stuff in his framework that we cannot do yet. Oyvind has some really wacky examples (like live pong using a webcam), people really should look at those. Charles has some very well-working video editing things that are being used in the industry. It's very well-thought-out ideas that we can adapt and use ourselves, too. Long live free software!

GStreamer releases
We're currently preparing for a new gst-plugins release, which should be out within a few days.

GStreamer Developer Summit
From wednesday on, most GStreamer core developers and following (Andy, Benjamin, Christian, Dave, Julien, me, Thomas, Wim) got together to discuss future development and direction for the 0.9 branch . This will then become the final design for GStreamer 1.0; 1.0 would, in the end, be proposed for inclusion in both KDE and GNOME developer platforms. Big words, time for action.

Current GStreamer-0.8 design has various generally agreed-on problems that cannot be fixed easily without breaking ABI/API. Worse, for a long time we did not know how to fix it and did not agree on a common direction towards fixing it.

  • thread-safety issues (refcount-, signal-, state-change- related stuff and a lot more)
  • clocking/synchronization issues
  • state handling on eos/error is wrong
  • negotiation protocol issues
  • a lot more
Wim was leading the discussion to identify and agree on the mistakes in our current 0.8 tree, particularly the ones that we cannot fix in the 0.8 timeframe. This is mostly stuff that we agree on and know how to fix. It´s just something we need on paper for later.

Generally agreed-on solutions:
Here is what came out of this discussion:

  • eos/error should not change state. More generally, state and actual processing ("scheduling") should be separated from each other.
  • refcounting should be threadsafe (glib)
  • signals should be marshalled to the correct thread, either through a message bus or through cross-thread signal marshalling.
  • Clocking should be improved to be implicitely synchronization (which we don´t have right now; *shame*) across streams.
Most of thursday was spent on discussing and agreeing on the above. We mostly agree on all this. Friday was spent talking about scheduling of pipelines ("processing of the media").

Solution #1: -threaded:
-threaded is an experimental branch that aims to add locking in the right places, adds protocols on locking and variable usage and make it all just work. It also adds some nice extra features such as media processing on events (e.g. "preroll", which means that the media is preloaded while a user executes an action).

Solution #2: -nonblock/async:
-async/noblock is another experimental branch that aims to remove the requirement for threads by using an event-based scheduling model. Elements are only scheduled when all preconditions for a non-blocking execution of their function is met (e.g. a file descriptor, a clock, etc.). Interesting features are seamless mainloop integration, which allows out-of-dataflow pipeline processing (e.g. expose an X window on expose events).

What's next:
The rest of friday was spent on discussing both approaches, fetching problems, setting a short-term path and some more. Wim and Dave believe that the async/noblock approach can be merged in the otherwise nice -threaded approach (which already implements the other stuff that we agreed on).

Next few days, we'll be experimenting with the design and implement all of the above. We will also discuss various directions for gst-plugins that are not directly related to GStreamer core. For the near future, we will work on preparing core to become the 0.9 branch, port the various subsystems from -threaded and -noblock/async over to this 0.9 branch (and have various people understand and review this), write a porting guide, remove deprecated code, write reference plugin implementations, updating documentation and porting plugins. From then on, we hopefully rock.

Time for beer. :).

88 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!