FFmpeg Summer Of Code 2006
Google is sponsoring its second Summer of Code. FFmpeg has been selected as one of the approved mentoring organizations. Here are a few project ideas:
VC-1
VC-1, a.k.a. Microsoft Windows Media Video 3 or 9, is widely used and should see even wider use due to the introduction of HD-DVD. The format for this codec is open and know but so far unimplemented in FFmpeg. This task entails implementing the VC-1 codec based on the emerging open specification Wiki document and forthcoming roadmap. This is a big task but will have very clearly defined milestones, e.g., the first major goal is to decode I-frames, and to get that point there will be a number of smaller goals, each with its own set of unit tests.
Mentor: Mike Melanson
AAC
Implement a new, optimized AAC decoder based on the emerging open specification document.
Mentor: Mike Melanson
FFmpeg Refactoring
Modularize the FFmpeg libraries so that each individual codec and muxer/demuxer modules can be easily enabled and disabled at compile time.
Mentor: Mike Melanson
Improving libavformat
libavformat is the interface of FFmpeg that is responsible for splitting apart encoded audio and video data from multimedia files (demuxing) and putting it together in new multimedia files (muxing). While libavcodec -- the FFmpeg component that encodes and decodes audio and video data -- enjoys widespread use among an impressive array of multimedia projects libavformat has not seen the same level of adoption. This task would entail investigating how to improve the libavformat API, how it interacts with client applications and input layers, developing proof of concept code for a new API and working to port existing muxers and demuxers to the new API.
Mentor: Mike Melanson
Dirac
Implement the Dirac codec based on the upcoming new specification from Dirac site
Mentor: Luca Barbato
NUT
Update the NUT container format support (the current one implements an ancient specification), check the current one here
Mentor: Luca Barbato
SNOW
Optimize and document SNOW wavelet codec
Mentor: Luca Barbato
AC3
Implement a LGPL (E)AC3 decoder
Mentor: Benjamin Larsson
Profiling and Optimization
Profile and optimize memory usage
Vorbis
Implement a Vorbis encoder
AMR
Implement a LGPL AMR decoder (encoder)
MP3
Implement a simple MP3 encoder
Pyschoacoustics
Implement a good pychoacoustic model. Support the usage of this model from the AC3, MP2 and other audio encoders.