Showing posts with label embedded gstreamer gsoc work. Show all posts
Showing posts with label embedded gstreamer gsoc work. Show all posts

Tuesday, August 26, 2008

finally h264!

Just for letting you know: qtmux now supports h264 (and also a-law and mu-law)

Yay! \o/

Friday, August 22, 2008

Update on qtmux

I've been through the semester final exams the last weeks (my university timeline is all messed up) and time was short, so I couldn't update here with news on qtmux, but the semester in now finally over, so here are the new features:
  • raw formats (both audio and video) and mp3 are working correctly in all players I tested (totem, vlc, mplayer and quicktime)
  • support for h263 has been added and also works on the players above
  • support for aac and amr has been added and it still doesn't work at quicktime, but works in totem and mplayer (vlc went nuts on my machine, and I still haven't got it to work again)
  • ilst atom metadata support (used by itunes and qtdemux) has been added
I couldn't get aac and amr working, after some days searching for specs and testing applications that could generate qt files with amr or aac with no success, I noticed too much time was being lost and started working on other features.
None of the applications I tested could generate a qt file (with amr or aac) that quicktime would actually play, and I couldn't find any useful spec. I also tried inspecting bytes in some files that played successfully, but just looking at them wasn't enough, the different bytes are easy to find, but not easy to understand.

I said that I would add flavor selection in the previous post, but I was advised to work on some widely used formats first, so I did it.

GSoC is comming to an end in the next days, but work won't, qtmux has still a lot to be worked on and I'll keep it up.

Tuesday, July 22, 2008

Good news!

Qtmux has just generated the first mov files that have audio and video that plays synchronously. MPlayer and GStreamer were able to successfully play it, VLC couldn't (not sure why, yet). Still have to test it in another players. But this is a huge step.

Now, I'll probably be working on adding flavour selection (qt, mp4 or 3gpp) using a property in the element (maybe using caps?).

Monday, July 21, 2008

Raw video into qtmux

Raw video formats were added to qtmux: 'rgb' and 'yuv' (only one 'yuv' format, but easily extensible to others). The current state is that it is possible to package video 'xor' audio into a mov file, and they are played fine.

What's keeping me busy now is to add support for synchronized audio and video. Some work has already been done, but it is still not as expected. I've re-read the spec trying to identify what info am I missing, still no clue, but I'll keep looking :)

Thursday, July 10, 2008

New audio formats for qtmux

Support for 8-bit and 16-bit pcm audio have just been added to qtmux.

I'm stepping now into video data. As it requires less knowledge about profiles and codecs, I'll start with raw rgb video. And then try to insert one format for compressed data (h263 or h264).

Inserting 8bit and 16bit pcm audio made me found a possible bug in qtdemux, already reported in bugzilla: #542410

Tuesday, July 8, 2008

The first one

I should announce that the first mp4 file has been created using qtmux (at least, the first one capable of playing nicely). It is still only able of handling mp3 audio. But that means that the underlying mp4 library reached some stable level and now the work focus should be into the qtmux element itself.

Next steps:
  1. Add another audio format support (probably raw audio)
  2. Add video support (h263? Suggestions?)
  3. Add multiplexing support (finally!)

I thought I was going to reach this goal before, but my graduation required some extra hours in the last weeks and mp4 atoms' fields given me some headache on understanding its semantics, mainly in how to define what media type (and parameters) for a track. 'qtdemux' has been a great help, it outputs some really helpful debug messages. Thanks for the guys who developed it! Great job!

Code is here: http://gforge.embedded.ufcg.edu.br/scm/?group_id=122

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.