Summary of SoC 2006 work by Tahseen Mohammad

Hi everyone. I'm Tahseen Mohammad, a Java web application developer and Master's student from Bangladesh. I intend to summerize my work for Google Summer of Code - 2006 in this page.

My project for SoC has been to implement Ogg Skeleton support in different tools including encoders, decoders, libraries, players etc. Ogg Skeleton is a new meta data bitstream format for Ogg. You can look at xiph.org or annodex.net for some of the details of Ogg or Ogg skeleton. I plan to add detail links later.

My work has been spread over different projects and tools. I will try listing the tools that I have worked on in a chronological order.

  • vorbisfile - Vorbisfile library was the first thing I started working on. It was also my first contribution to any FOSS software :). It is a decoding libarary for Ogg Vorbis file. I had tried modifying vorbisfile to allow it to decode Ogg Vorbis streams out of any Ogg file regarding of other streams presented in the file. But the experiments with them took too much time and I couldn't keep the library binary compatible. So I finally made the patch to allow Vorbisfile to decode a Ogg Vorbis file Skeleton bitstream. It haven't made it yet to the trunk.
  • ffmpeg2theora - A popular video converter that allows any video supported by ffmpeg to be converted to Ogg Theora. I patched it to allow outputting skeleton bitstream in the converted theora file. The skeleton bitstream is properly filled with the required meta-data. This skeleton output is disabled by default and a command line option -k or --skeleton will enable it. It needs to be noted that all my patches regarding skeleton uses -k and --skeleton for enabling skeleton output. The patch has been put into svn trunk. It was my first ever accepted patch to any public project.
  • speexenc - This is the Speex encoder. Also using my skeleton API, this patch is in the trunk and will made it to the coming speex release.
  • speexdec - I patched the speex decoder to allow playing speex file with skeleton bitstream. Actually my latest patch will allow it to decode any files with a speex bitstream regardless of the content of the other bitstreams. It has already been tested to play files containing skelton and cmml (see annodex.net). These patches are also in the trunk.
  • oggzinfo - Its a tool from Annodex that parses a Ogg file and outputs all kind of information on it like the number of different bitstrams in it, their serialno, number of pages etc. I patched it to allow processing the skeleton bitstream (if present) from a file and output additional detail. It uses the same -k, --skeleton flag for the addional output. On the course of this patch I updated my skeleton API to allow parsing of skeleton data from an ogg packet. This too had made it to the turnk.
  • cortado - Its a java based media player that supports Ogg vorbis and Theora. I patched it to support allow playing files with skeleton or cmml bitstream. The patch has been to the devel list recently and haven't made it to the trunk yet. I think annodex.net is on the process of using the patched version for their website. The patch now actually made it somehow. The maintainer made the required modification based very loosely on my patch.

And my latest work. Writing and updating this summary page. I just have a few days left of my SoC deadline. I plan to work a bit on vorbisfile to see if I can make a better binary compatible patch. Also I would try to make the decoders able to parse and output the cmml meta-data from a file.

Life after SoC

I am thinking of doing some cleanup of speexdec as Jean-Marc suggested. Speexdec is a compatc piece of code so it would be easier to start with that.

Just today I heard about oggzplay from shans and I think I will like it very much working on it. Cortado is another think I would like to look into. There's some similarity of it with oggzplay but I don't find it as simple as it can be being written in a OOP language. It would be nice to experiment how the ideas from these two project can improve one another.

Right now my knowledge of projects that I've worked on is too focused to get the bigger picture. After SoC I hope I will have time to understand and choose what I like most to work on and where I can contribute the most. Whatever direction I choose it seems the start of very long FOSS development journey and I hope to enjoy it very much.

Thanks

First thanks has to go to Google. Summer of Code gave me the jolt needed to be active in FOSS development. FOSS has a very important role to play for IT development in an underdeveloped country like mine. The first step to a journey is always the hardest and thanks to google for helping with it.

I forgot, a very special thank must go to Leslie Hawthorn (primarily known by her initial LH to the SoCers?) for meticulously tracking everything for over 600 perticipants of this years SoC. Going through each and every mail of so many people and patienty answering each of their query clearly must take an amazing person. Also thanks to Chris DiBona? and everyone at Google helping with SoC and its Open Source effort.

The whole xiph community has been awesome to me over the last few months. There is no actual way to give enough thanks to them. Hopefully I too will be able to help others in the same way.

Conrad Parker - My mentor. Agreed to be mentor to someone with almost NIL exprience. Have been patient with even the silly questions of mine, reviewed all my patches in all the different projects, letting me pace myself and guiding me in my work. I'm always impatient when teaching someone, always trying to run in my natural pace not waiting for others to catchup. So I appreciate it very much when somebody walks to match my pace.

Silvia Pfeiffer - Officially I think she was my backup mentor for my project. Practically I just ping either of Conrad/Silvia who is available. She wrote the skeleton spec, so she helped a lot in answering a lot of my questions and clearning my confusion. Although the theorical discussion of the specs goes over my head a lot of time, she made me knowledgable enough to get the work done.

Illi - Illi has no official involvement with my SoC project. But I think he is the most avaiable in IRC. Checked lots of my works, found some of the bugs. Illi's very good at looking at the output file for inconsistency. Has some awesome tools of his own writing to help with that.

Jan Gerber - ffmpeg2theora developer, maintainer. Thanks for being so quick in reviewing my patch and applying it. Until I have that patch accepted my confidence in my abilities had been quite shaky.

Jean-Marc Valin - Speex developer. Jean-Marc has always been quick in reviewing my patches and answering my questions on speex.

Then there is rillian, MikeS, shans (first one to comment on this page. Thanks :-) ) and rest of the gang. My questinos have never been left unanswered. So Thanks everyone.