Older blog entries for rbultje (starting at number 96)

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

Cornell Graduate Recruitment Weekend
So this weekend and the days before, I was in Manhattan to attend the Graduate School of Medical Sciences of Cornell University's student recruitment weekend to apply for the pharmacology program ("apply" means applying for the program, which includes free tuition, scholarship and housing). I left early Thursday morning, took an airplane at Schiphol airport and arrived at JFK airport 8 hours later. Went over to the hotel, met up with some other recruits and some of the host students. We (department staff, current and prospective students) had dinner in the house of one of the faculty staff members and went out after that. I was pretty tired, happy to be in bed at the end of the evening.

Friday was the most important day, where I got to have interviews with the faculty staff; they will ask you about previous research experience, academic results, science interest and goals and social interests. It's the same as when applying for undergraduate schools in the US, yet very uncommon in Europe. The good thing was that I already met with half of the faculty staff when I studied at Cornell as an exchange student last year. The first three talks were laid-back and easy, all in the prebytorian hospital / weill medical college building. I was basically told that they were happy to see me back and were very satisfied by the fact that I wanted to come back to Cornell (and that they would happily accept me). Actually, it was mostly just social chatting rather than an acceptance interview. So far so good. The next interview was in Memorial Sloan-Kettering (a heavily funded cancer research center) and went surprisingly well (I didn't know the guy, he didn't know me, and he was said to be fairly critical; well, he was very nice and invited me to come over in August to discuss a possible research project there). The last talks were in the hospital building again, and again all was fine. I met up with my former supervisor (who was interviewing other prospective students that day) at the reception afterwards, and he told me that I was one of the top-of-the-list students. Good to see a good feeling being confirmed.

Obviously, there's many good universities in the US: MIT, Harvard, Columbia, Yale, etc., they all have as excellent, or maybe even better, research facilities than/as Cornell. What they don't have, is The City [ok, so Columbia is in New York City, too, but that's Harlem; it doesn't count]. So in order to get all of us in love with all this, Cornell paid for a full day of New York entertainment that Saturday. A total of 125 youngsters got to go to some of the finest restaurants in town, and after that they spread out to see broadway plays or visit jazz and comedy clubs. I went to a Japanese restaurant where we had delicious wines, good sushi and good-old lobster right at Union Square. We ate some chocolate specialties as well, and had a good night of jazz with it [ picture ].

The day after, we were about to go home again. My plain left only late in the afternoon, so me and some other students had brunch together [ picture ], and after that some of us went to the park, where a bulgarian artists' orange creations were decorating the ice-skating track. The ice-skating-in-central-park is one of those things that I fell in love with last year already [ Picture ]. I just arrived at Schiphol this morning, tired but happy.

The weekend was just great. My class was great so far (obviously, not everyone may be accepted and not everyone may accept the acceptance) and the city was just as great as in my memories. I can't wait to start here in August.

87 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!