Older blog entries for rbultje (starting at number 88)

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.

Bugs, bugs, bugs...
So as Christian already said, I got a bit pissed off today when looking at bugzilla. I'd cleaned it up a few weeks ago, taking most dups out, applying most if not all pending patches, asking appropriate questions to the unclear ones, etc. We got down from almost 350 to 180 by doing that. And we were, within a week, already back to over 200.

Cleaned up again today, back to 175 (incl. enhancements, excl. needinfo), and - as Christian said - out of GNOME's hall of shame. Yay. I guess hall of shame isn't really a good word, it just implies your software is used a lot. Unused software gets no bug reports, no matter how buggy it is. So I guess we should be happy with the amount of bug reports we get. Good job, people. Keep them coming. We still have many bugs and I hope to get to an acceptable level of workability (which is not the same as 'well, that may crash and this may be broken, but playing this specific Ogg works!') when GNOME 2.10 comes out.

However, I won't be triaging for a while, at least I hope so. I'm off to Manhattan thursday morning for my in-take talks at Cornell medical gradschool (plus the usual get-to-know-the-city night-stuff), and am flying onwards to Barcelona (GStreamer team 0.9 summit) and Brussels (FOSDEM) right after. I'll post some pictures if I can.

Gotta love it. I definately do. :-).

Cupid and DV
Today, I found out that if you use today's CVS of a lot of things, Cupid can display video from your DV cam as well. Of course, capture is far more interesting but, well, y'know, one thing at a time.

In other news, I'm said to have ported a plugin to the threading branch in GStreamer. It's not hard, which is good. I'll port some more plugins later this week. This branch may end up becoming GStreamer-1.0.

Today, the toothfairy came by to tell me something really cool is happening!
Who wants to join
Several people have bugged me about a blog that I did earlier, about helping new people to get into GStreamer programming. I've been rather unhelpful so far ( :-( ), but today, I've finnaly setup a few new "tasks" in the GStreamer / GNOME tasks page. The first has general GStreamer tasks, the second has ones specifically targetted at GNOME modules using GStreamer. Bug me for more info on any of them, I'll probably add a few more sometime soon. They're fairly simple, serve as a good introduction into the codebase while only touching small parts so it doesn't get too difficult. Needless to say, the tasks are well-documented for a newcomer.
Doing stuff
As days move by, you slowly see cool new things happening.
  • Fluendo now has a couch in their office. I just have to try that out sometime soon.
  • I got AMR (the sound format of .3gp movies, which are produced by mobile phones with a cam) to work - audio-only needs a small bit of more work before it's functional. See bugs #140141, #143555 and #155163.
  • Some ffmpeg/mplayer dudes are working on a WMV9 decoder (currently a simple bitstream parser). They're about as far as I got, and they're having the same issues I had. Nice to see I'm not just stupid. ;).
  • Divx Labs figured it'd be cool to write a new media format. Unfortunately for them and fortunately for me, it's just AVI with some non-standard chunks for subtitles.
  • At newyear, a friend and me promised we'd do sports each week. It's been freezing outside ever since, but we still try to keep to our sayings. No wonder most people give up within a month... I'll need to get us tennis cards for the indoor courts before next week. :).
22 Jan 2005 (updated 22 Jan 2005 at 14:22 UTC) »
Metadata and deprecation
Today's CVS of Cupid has tag support. Currently works for Ogg and AVI, but I'll add it to other formats as I see fit later on, if the format supports it, that is. Should release 0.0.2 sometime soon, since it's had quite some updates and fixes since I released 0.0.1 just after newyear.

I also decided to have a look at the new APIs of the day and try to update Cupid to it. Noticed that GtkFileChooserButton cannot do save actions (filed as #164900), which means I need to continue using GnomeFileEntry. GtkUIManager (replacing GnomeUIInfo) keeps confusing me for some reason, maybe I need to look for some hello world example code (which http://developer.gnome.org/doc/API/2.0/gtk/GtkUIManager.html basically is, but not just yet). GtkTextView looks nice, but is incredibly complex if you just want a simple HTML-like textbox. How do I get the complete text from the GtkTextBuffer...? Need to move over to GOption (instead of popt) at some point too, but GStreamer doesn't use it yet, which is kind of annoying. I guess I'll quietly continue to use deprecated widgets/objects for a while longer until I get familiar with the new ones...

EU horrors
Remember how last month, EU patents were not accepted after Poland did a great job? FFII reported on it, as did others. Apparently, our agriculture politicians are very hard-headed people, because they've decided to try again. Yes, boys'n'girls, the agriculture EU people know what's best for you.


You're European? Write a letter to your national agriculture minister, today. Don't ask me what agriculture and computing sciences have to do with each other. I don't know. But I'm sure they can tell us, because boy, those agriculture politicians make some heavy decisions for us...

I did some work on my video capture tool Cupid yesterday and today. I fixed some stability issues, crashers, added some sanity checks and I added a bunch of new features, amongst which:
  • snapshot support (and since it has webcam support, this makes it a good webcam tool as well)
  • overlay emulation (which means that if your card does not support hardware overlay, we will set up a background GStreamer pipeline to display video instead; again useful for webcams)
  • minimal mode and fullscreen support, which make it useful to watch TV
There's some more needed, such as channel/tuning and remote control support, but all in all I think I've finally got my replacement for STV, which I wrote years ago. We're not tvtime yet, but adding a deinterlacer or text-overlay is nothing more than a GStreamer element, so I have good faith in it.

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