FFmpeg Summer Of Code In Space 2012

From MultimediaWiki
Revision as of 15:17, 18 July 2012 by Stefanosa (talk | contribs) (Add introductory blurb with some administrative details and links.)
Jump to navigation Jump to search

ESA Summer of Code in Space 2012 (SOCIS 2012) is a program run by the European Space Agency. It aims at offering student developers stipends to write code for various space-related open source software projects. For more information read the page:


FFmpeg has been accepted in the SOCIS 2012 program:


and has been allocated one slot for one student/task.

If you want to apply as a student please read these documents:

Candidate students application deadline is on 27/07 (11am UTC).

The FFmpeg administrator for SOCIS 2012 is Stefano Sabatini (<stefasab@gmail.com>, saste on IRC), and Michael Niedermayer (<michaelni@gmx.at, michaelni on IRC) is the backup administrator. Please contact them if you have any related questions.

Qualification tasks

For us to consider your application for SOCIS we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:

  • First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)
  • Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-devel mailinglist.
  • With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.

If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the Small Tasks list or the Interesting Patches list instead. If your prospective mentor agrees, please send an email to the FFmpeg-devel mailing list to inform that you are working on it (to avoid duplicated work). The qualification task is considered completed when your patch is accepted to the main Git tree.

Before posting to the FFmpeg-devel mailing list, make sure you read and understand our netiquette guidelines, especially avoid top-posting and thread-hijacking. You should also be familiar with the diff, patch and git programs.

1st Tier Project Proposals

1st tier project proposals are project ideas that are reasonably well defined and have a mentor volunteered.

Libavfilter misc extensions

Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support.

The task would consist of writing or porting audio and video filters and eventually fix/extend libavfilter API and design.

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 an implementation from scratch of one or more filters.

  • Port all the missing filters from MPlayer (remember to ask the authors of the original filter if it is ok to release them under the LGPL)
  • Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes
  • Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...) when it makes sense.
  • Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)
  • Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, eval, posterize, elbg/posterize etc.)
  • Write a frequency domain transform filter and inverse frequency domain transform using the DSP utils in libavcodec
  • Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)
  • Add metadata injection in the filtergraph
  • Fix libavfilter trac tickets

Mentor: Stefano Sabatini - saste in IRC (possibly with a backup mentor)

Error concealment improvements

When data is damaged beyond the capabilities of forward error correction codes or when it was damaged where there is no error correction like due to failing storage devices / RAM. Then when decoding/viewing the data error concealment can be applied to fill in lost areas. FFmpeg currently supports moderately advanced error concealment for most popular video codecs but lacks it for all image formats. This task is to add high quality error concealment to the image decoders where it's possible and improve resynchronization of the image decoders in light of data errors.

As qualification task, at least one image decoder's error concealment capabilities need to be significantly improved.

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.

Mentor: Michael Niedermayer - michaelni in IRC (possibly with a backup mentor)

2nd Tier Project Proposals

These proposals lack of a mentor.

Finish GSoC projects from previous years

Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.

For the current status of all GSoC projects up to date, see FFmpeg Summer Of Code.

Forward Error Correction

Add FEC to libavutil.

  • RTP FEC, standardised as SMPTE 2022M (Possibly the same as Pro-MPEG FEC) - (not 100% sure if this is for all types of RTP or just some)
  • MPEG-TS 16 bytes extra - (not sure where this is standardised - in DVB perhaps?)

I (michaelni) am happy to help mentor this but i don't volunteer as primary mentor.

Automatic image classification

Research existing literature about image classification and implement the best algorithms in libavfilter with the purpose of allowing autonomous classification of images in terms of containing unexpected, interesting features or simply significant temporal changes. This would allow a probe to quicker and automatically detect interesting things or changes to image and transmit to earth.

I (michaelni) am happy to help mentor this but i don't volunteer as primary mentor.

libavfilter star scanner

Write a libavfilter that determines from a image of a random patch of the sky / a bunch of stars the exact orientation of the camera.

I (michaelni) am happy to help mentor this but i don't volunteer as primary mentor.