Difference between revisions of "FFmpeg Summer Of Code In Space 2012"

From MultimediaWiki
Jump to navigation Jump to search
(2nd Tier Project Proposals)
(typos and fixes)
Line 3: Line 3:
 
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:
 
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)
 
* 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 mailinglist.
+
* 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.
 
* 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 FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg 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.
+
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 FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|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 mailing list, make sure you read and understand our netiquette guidelines, especially avoid top-posting and thread-hijacking. You should also familiar with the programs diff, patch and git.
+
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 ==
Line 22: Line 22:
 
Qualification task: a port or an implementation from scratch of one or more filters.
 
Qualification task: a port or an implementation from scratch of one or more filters.
  
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)
+
* 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
 
* 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'''.
 
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...) '''when it makes sense'''.
Line 66: Line 66:
 
=== Automatic image classification ===
 
=== Automatic image classification ===
  
Research existing litratur about image classification and implement the best algorithms in libavfilter with the purpose of allowing autonomious classification of images in terms of containing unexpected, interresting features or simply significant temporal changes. This would allow a probe to quicker and autonomiously detect interresting things or changes to image and transmit to earth.
+
Research existing literature about image classification and implement the best algorithms in libavfilter with the purpose of allowing autonomious 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 dont volunteer as primary mentor
 
I (michaelni) am happy to help mentor this but i dont volunteer as primary mentor
Line 72: Line 72:
 
=== libavfilter star scanner ===
 
=== 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 cammera
+
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 dont volunteer as primary mentor
 
I (michaelni) am happy to help mentor this but i dont volunteer as primary mentor

Revision as of 19:03, 10 July 2012

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 concelment improvments

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 advancted 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 its possible and improve resynchronization of the image decoders in light of data errors.

As qualification task, at least one image decoders 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?)

Mentor: ???

I (michaelni) am happy to help mentor this but i dont 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 autonomious 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 dont 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 dont volunteer as primary mentor