When I was first asked to work on GStreamer, I had a good 4 years of industry experience under my belt. I had worked on firmware development for embedded platforms, had a decent understanding of the Linux kernel, designed and developed multithreaded RTOS applications and had some experience with the Yocto build system. Pretty diverse exposure I would say, covering most of what was in demand in the industry at that time. GStreamer was something completely new to me. A quick Google search revealed “GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows”. Well that didn’t sound very difficult or intimidating, so I decided to give it a shot.
As with any new technology the first step always is aggregating as much documentation on the subject as possible. I was quite surprised when I was told that there was 150 pages manual available – “The GStreamer Application Developers Manual”, that covered everything one needed to know about GStreamer. After skimming through all the GStreamer concepts and terminologies, I tried some of the example programs available and they worked flawlessly. Navigating the framework source code took some time but my experience in combing through the linux kernel helped here. Everything was looking good time to get some work done.
Well as with any media framework, issues do arise from time to time with…. of course, playback. No problem, GStreamer provides extensive debugging information to trace any issue. So, I enabled the DEBUG logs. What happened next took my breath away. A never-ending stream of debug information surged through the terminal. Chances of finding the proverbial needle in the haystack seemed much brighter. This looked like it would take time. Days turned into weeks, weeks into months, months into years… just kidding not that long, I’m exaggerating to point out that it could very well have gone there. Finally, the long caffeine fueled operation came to an end resulting in a code change of one line.
The beauty of GStreamer is that one can add support for almost any open source package with great ease. The resulting situation can be compared with The United Nations. All the different nations of the world may sit together but it does not mean that they get along. At some point of time there may be a package that does not play well with others. This will cause a cascade effect of failures until a fix is found. A strong caffeine delivery system does help. A study should really be done on the how the growing software industry has impacted the turnover of the local coffee suppliers.
As time progressed, I grew to appreciate what GStreamer has to offer, flexibility, modularity and a quick way to get any streaming media application up and running. The amount of thought, planning and vision that has gone into it is commendable. At the end of the day the soothing sound of music streaming through an array of HiFi speakers is a reward in itself.
– Vernon D’Souza