FFmpeg Summer of Code 2012
- Please detail the deadlines for applying and being a student/mentor.
FFmpeg Summer of Code Proposals and Qualification Tasks.
- 1 Timeline
- 2 Contacting Devels
- 2.1 Qualification Tasks
- 2.2 1st Tier Project Proposals
- 2.3 2nd Tier (need mentor) Project Proposals
- 2.3.1 H.264 MVC
- 2.3.2 DTS-HD decoder
- 2.3.3 MPEG-4 ALS Roundup
- 2.3.4 reverse engineer TAK format
- 2.3.5 support for more subtitle formats
- 2.3.6 mkv ordered chapters / playlist support
- 2.3.7 adobe fragmented http in/out
- 2.3.8 libavfilter 9/10bit support
- 2.3.9 fix copying video between formats
- 2.3.10 extend image formats support
- 2.3.11 extend paletted format support
- 2.3.12 g2m4 decoder
March 12th-16th: Project application evaluation.
Find us on irc, server: irc.freenode.net channel: #ffmpeg-devel or contact us by subscribing to the mailing list https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel/
To be eligible for a Summer of Code project, we ask you to do a small programming task to prove you know the basics. FFmpeg is a large, complicated collection of code and its not easy for beginners. There are some ideas for tasks on the Small FFmpeg Tasks page.
1st Tier Project Proposals
These are proposals with a mentor attached.
Baptiste has also offered to mentor.
Improve the audio resampling/rematrixing/converting code
- right now, we're using libswresample to resample/rematrix audio (samplerate / channels) and to resample the audio format (int, float, 16-bit, 32-bit).
- both interleaved and planar audio sample formats are already supported
- We need SIMD optimization of popular conversions (float-int16, int16-float), (stereo-mono-5.1) and anything else thats frequently used.
- We need support for alternate conversion functions (e.g. sample format conversion with or without dithering)
- fix bugs in current design (none known but there sure are some)
Mentor: Michael Niedermayer
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC project. It currently supports audio and video filtering and generation support.
The task would consist into writing or porting audio and video filters and eventually fix/extend libavfilter API and design.
In particular the work may focus on porting MPlayer filters which are currently integrated through the mp wrapper. For each port the student should verify that the new filter produces the same output (by comparing the output generated by -vf mp=FILTER and -vf FILTER) and checking that the new integrated filter is not slower.
Prerequisites: good C coding skills, familiarity with git/source code control systems, having some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.
Qualification task: a port or a new implementation of one or more filters.
Mentor: Stefano Sabatini - saste on IRC (possibly with a backup mentor).
2nd Tier (need mentor) Project Proposals
some following proposals might be done by libav, still waiting for dust to settle.
- Implement an H.264 MVC decoder. This format is used in 3D Blu-Rays.
- ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.
(1) Add support for mixed Core + DTS-HD stream structure (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main and commentary tracks. (2) Add support for XXCh extension (6.1 and 7.1 channels). (3) Add support for X96 extension (96khz). (4) Add support for XLL extension (lossless). (5) Add support for a pure DTS-HD stream structure (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks. (6) Add support for XBR extension (extra bitrate).
MPEG-4 ALS Roundup
This task is to update and enhance the existing ALS decoder as well as integrate and enhance the rudimentary encoder found at: https://github.com/justinruggles/FFmpeg-alsenc
Possible features are:
- implement rls-lms in the decoder
- do correct channel layout/sort handling in the decoder
- update to current master
- use codec private options
- implement encode2(), setting pts and duration
- document options and examples in encoders.texi
- come up with a good set of encoding tests for FATE
- implement mcc/channel sort in the encoder
- implement rls-lms in the encoder
- implement float support
reverse engineer TAK format
there is some interest in this format. maybe a qual task?
support for more subtitle formats
we have libass support now, either a parser (from mplayer) to convert subs into ass or something else.
mkv ordered chapters / playlist support
get playlist stuff into ffmpeg. playlist is blocking a few things like quicktime edit list and .asx / .pls files.
adobe fragmented http in/out
adobe has a new streaming format.
libavfilter 9/10bit support
make filters work with higher bitrate codecs/colorspaces
fix copying video between formats
lots of h264 streams in flv, mp4, mkv, mpegts. people wish to remux these into various formats so it works on their hardware (ps3, ipod etc).
https://ffmpeg.org/trac/ffmpeg/ticket/796 https://ffmpeg.org/trac/ffmpeg/ticket/822 https://ffmpeg.org/trac/ffmpeg/ticket/954 https://ffmpeg.org/trac/ffmpeg/ticket/976
extend image formats support
Improve FFmpeg support for image formats, adding missing formats (e.g. XPM) and extending support for the current ones (e.g. animated GIF, GIF compression, fix PNG todos, add support to animated PNG) etc.
extend paletted format support
Cleanup framework for handling better with paletted format, write a posterize filter, add support to libswscale palette output (possibly making use of libavcodec/elbg), add support for reading and saving a palette to a file and apply them to the input video (e.g. by creating ad-hoc filters).
lots of videolan users are requesting this codec be supported. there is a binary decoder in mplayer. its possible maxim is already working on this.