Older blog entries for phkhal (starting at number 1)

Today I remembered I had a blog. Last entry was exactly 3 months ago! I'm due.

GStreamer Profiler

Last couple of days I have been working on a simple profiler for GStreamer. Basically I wanted to see how much time each packet was spending inside the pipeline and inside the different elements. Specifically for RTP that requires good latency. I wanted something non-intrusive that didn't require any changes to the existing elements, and I wanted something fast so it wouldn't make the collected data useless. It also needed to be thread-safe since elements can run in different threads. After some discussion on irc I came up with a simple profiler that works. Basically it allocates a memory space and uses an atomic pointer to insert structs into that memory space. The structs have some data such as the element name, the buffer size, the time of the log, etc. As for doing the actual logging, I simply override the gst_pad_push() and gst_pad_chain() functions using LD_PRELOAD magic. This will log most buffers when they enter/leave each element in the pipeline. For the moment it simply puts the collected data in a log file, but in the future I want to write some processing code that give me easier to read data.

Here is a screenshot. The yellow and red colors represent the 2 different threads (one for receiving and one for sending). The sinks/sources on each thread are also colored. Other than giving timing information it also allows me to more easily see the flow of packets happening in the pipeline.

Ok. So I have eventually started a blog. I guess it was inevitable :) Today, I also finished my last exam of my Bachelor of Computer Engineering. This means, I now have the rest of my life to develop open source software.

First step, Farsight. I'll be working more on Farsight from now on, including all RTP Gstreamer work. The RTP in GStreamer is coming along nicely, but still alot of work needs to be done. Fortunatly, all this work is mostly enhancements to a base that I hope is solid. Soon we will have drift control in there, as well as support for multiple codecs per stream. Later we will work on mulitparticipant support and alot of other goodies :)

Ok, time to go order that X40 !

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!