Thursday, June 19, 2008

Refactoring

I should have posted this before, but the code for GSoC is already hosted online at http://gforge.embedded.ufcg.edu.br/scm/?group_id=122 (there's info about checkout there, and also you can browse the code online)

After writing a lot of repetitive code for atoms serialization I decided to stop and rethink it. So, creating a function for serializing each type of property an atom can have made the code much shorter and better to read. This refactoring proved even more useful, when I found out that mp4 files had to be big endian, I did the changes to support it in no time, as I only had one spot to change.

Other than that, I've been using qtdump for validating my generated files, but sometimes it only reports "unsupported file type", and I need more than that. So, I'm also adding more verbosity to qtdump (and also qtinfo). I'm trying to make it able to tell why it is not a valid mp4 file.

As always, comments and critics on my code are very welcome.

Tuesday, May 13, 2008

GSoC First Lines of Code

Since last week, I started coding the first lines of the qtmux (yes, that will be the name of the new plugin/element).
The muxer is still at an early 'draft state', but what concerns me more at this point is creating the MPEG4 Atoms hierarchy to be used by the muxer. This hierarchy will last during the whole project and it could cause some headaches later.

I thought of two main options:
  • Create a gobject class hierarchy: it is better organized and we could have some common interfaces, but it would be probably too much of a overhead
  • Create a 'struct hierarchy': composing structs is pretty easy and straightforward to do. Having common structs at the top place might also provide some common methods, but probably difficult to maintain
Structs seems better to me at this point, I'm for the KISS (Keep It Simple, Stupid) principle. And I also don't expect to be changing those atoms often (after my code gets stable, at least). But, of course, I'm accepting comments and sugestions and critics.

Other than that, I'll be starting a repository to put the code in the following days, so that interested people might take a look at it.

Thursday, April 24, 2008

Let the games begin

GSoC has just started this year (I've been accepted :D) and I'll use this space to provide information about my ongoing work. My project is to create and develop the quicktimemp4mux plugin for GStreamer.

For the past weeks, I've been studying specs and code on mpeg4. Right now, I'm starting to think on how to validate the resulting files my plugin will be able to generate. Some options that have already been suggested to me:
  • use qtdump to inspect the files
  • use a GStreamer pipeline to play the files
Other than that, I'm also wondering what could be my first goal at the plugin implementation, and I think that being able to create a mpeg4 file that contains only one audio track (possibly mp3) would be a nice start.

That's it, I hope that GSoC will be fun and, mostly, that I manage to finish a good quality plugin so that everybody gets happy :D