Tuesday, May 18, 2010

GSoC Project Report 1 - xmfdemux

This is the first report for the iXMF GSoC project. First let's have some useful information about it:

Project repository: http://gitorious.org/gst/ixmf
Contact:
  • Me: André Dieb Martins (andredieb on IRC-freenode) - andre.dieb@gmail.com
  • Mentor: Thiago Sousa Santos (thiagoss on IRC-freenode) - thiagossantos@gmail.com
iXMF related resources:
  • XMF - introduction about the base format for iXMF
  • iXMF - introduction about interactive XMF
  • iXMF IASIG - interactive XMF working group (contains the draft spec)
  • mXMF - mobile XMF
  • Blog post by me about XMF/iXMF and the GSoC project

For achieving the bigger goal (iXMF), GStreamer needs to support the base format (XMF). For a better understanding of the format, we decided to start the project writing a XMF demuxer element.

I started implementing the demuxer element about a week ago and today we played for the first time a XMF file. The demuxer is capable of parsing a mxmf file (mobile XMF - audio/mobile-xmf, bundle of two audio files: mDLS + MIDI) and creating sometimes-pads for each internal file.

It seems that GStreamer does not yet support mDLS, so the test concerned only the internal MIDI file (using wildmidi MIDI decoder plugin). The pipeline used was:

filesrc location=sample.mxmf ! xmfdemux ! wildmidi ! pulsesink


Still, there are a few TODO's for this element:
  1. Pull mode for created pads: when working in sink pull mode, it would be nice to let our created pads also work in pull mode. This can be tested with the timidity plugin which supports only pull-mode.
  2. Finish implementing file references handlers: currently we're only parsing in-line resources data. There are a few more types of reference that should be implemented before moving forward to the next element.
I'll be working on these TODO's in the next week and there should be a report concerning the next steps, which are currently under discussion with Thiago.

I'd also like to call out our fellow GStreamer developers for help, insights, suggestions, reviews, etc. It would be great to have feedback from the community.

0 comentários: