Difference between revisions of "FFmpeg Summer Of Code 2008"

From MultimediaWiki
Jump to navigation Jump to search
(Getting an unfinished project merged can make for a good qualification task.)
(QuickTime IMA ADPCM Encoder: Kostya already did this)
Line 161: Line 161:
 
=== M95 Playback System ===
 
=== M95 Playback System ===
 
This task is to implement an FFmpeg playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.
 
This task is to implement an FFmpeg playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.
 
=== QuickTime IMA ADPCM Encoder ===
 
This task entails adding [[IMA ADPCM]] encoding to the [[QuickTime container|QuickTime]] file format. FFmpeg already contains support for both IMA ADPCM encoding and the QuickTime file muxing. This task is to make the two work together. Make sure it supports both mono and stereo modes.
 
  
 
=== Interesting Patches ===
 
=== Interesting Patches ===

Revision as of 06:00, 28 February 2008

This is a page to discuss possible project ideas for the Google Summer of Code 2008 season, just in case Google decides to host it and accept FFmpeg as a project again.

Current Status

  • February 20, 2008: Created page

Application Process

The student application process for 2008 will be as rigorous, if not more so, than in 2007. The exact FFmpeg SoC details and schedules are not yet known, but if FFmpeg is accepted for the 2008 season, qualifications tasks will play a role again.

Project Proposals

Apple Lossless Encoder

Also see ALAC and issue #82.

GSM Decoder

Also see GSM.

AMR-WB Decoder

Also see AMR.

AMR-NB Encoder

Also see AMR.

G.729 Encoder

Mentor: Benjamin Larsson

G.723.1 Decoder

Mentor: Benjamin Larsson

G.723.1 Encoder

Mentor: Benjamin Larsson

Speex Decoder

Also see Speex.

DTS Encoder

Mentor: Benjamin Larsson

Nellymoser Encoder

Mentor: Benjamin Larsson

AAC-LC Encoder

  • Sample files: http://samples.mplayerhq.hu/A-codecs/AAC/
  • Qualification: Quicktime IMA ADPCM encoder
  • Prerequisite: Filterbanks (Sigsys)
  • Clearly defined task
  • Primary goal: Dumb bitstream compatible encoder with flexible framework for a serious psychoacoustic implementation

Mentor: Benjamin Larsson

VP3/Theora Encoder

  • Clearly defined task
  • Primary goal: Encode video sequences such that they can be decoded by a VP3 decoder first, and then a standard Theora decoder.

Mentor: Mike Melanson

WMV3 Encoder

  • Clearly defined task
  • Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.

Mentor: TBD

Better handling of audio in libavcodec

LGPL reimplementation of GPL sws_scale parts

  • Loosely defined task
  • Primary goal: LGPL licensed sws_scale
  • Secondary goal: removal of lavc scaler

MXF muxer

  • Specifications: SMPTE 377M
  • Clearly defined task

Mentor: Baptiste Coudurier

MVC decoder

  • Create an independent FFmpeg decoder for the Nokia MVC codec
  • Very clearly defined task
  • Mentor: Michael Niedermayer

Freeform Proposal

If you think you have a good idea for a FFmpeg Summer of Code project, propose it on the FFmpeg development mailing list. We will discuss it from there.

Qualification Tasks

Many students apply for the Google Summer of Code and wish to work on a sexy multimedia project such as FFmpeg. All students will claim to be hard workers but we need a method of determining which students have a higher probability for success. Thus, we developed the qualification system during the 2007 season and will be enforcing the same system this year. A student must successfully complete a qualification task in order to be considered for an FFmpeg SoC project. In doing so, a student demonstrates that they:

  • were willing to commit some time during the Summer of Code application review period in order to prove themselves
  • can code C satisfactorily and with the same general style expected of the FFmpeg codebase
  • can wrap their head around the code base
  • can interact with the FFmpeg development mailing list
  • can accept feedback and revise the code until it is suitable for inclusion in the main code base

Frequent Objection #1: But I don't have time to do a qualification task! Then how do we know you will have time to work on your task during the summer? The qualification tasks are selected to be fairly trivial by FFmpeg standards and should not be too difficult for a prospective FFmpeg contributor. If they are too difficult, maybe FFmpeg is not the project for you. Also, be encouraged by the fact that the app review period comes after the application submission deadline; i.e., you can work on a qualification task after you submit an application for FFmpeg. But you will not be considered for an SoC project slot unless you have satisfactorily completed a qualification task.

Process: If you are interested in applying for FFmpeg's Summer of Code and, by extension, interested in working on a qualification task, the first step is to subscribe to the FFmpeg development mailing list and indicate your interest and which project you plan to work on.

Finish up a previous incomplete SoC project

Several SoC projects from previous years have not yet made it into FFmpeg. Taking any of them and finishing them up to the point that they can be included should make for a good qualification task.

Generic Colorspace system

This task involves adding support more than 8 bits per component (Y on 10 bits, U on 10 bits, V on 10 bits for example) and generic simple conversion to other colorspaces.

Does this have to do with revising FFmpeg's infrastructure? If so, then it doesn't feel like a qualification task. If it's something simpler, then the vague description does not convey that simplicity. Please expound. --Multimedia Mike 12:56, 25 February 2008 (EST)

Cleanup of MLP decoder

This task involves adding a decoder to FFmpeg to play MLP audio data. The hard work has already been done; now a volunteer needs to take the existing decoder patch and make it satisfactory for inclusion into the codebase. MLP samples referenced from the MLP Wiki page.

Latest version of the MLP patch: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-January/040234.html

And the comments: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-January/040251.html

Support PB frame mode for H.263i

Details are in the issue tracker: http://roundup.mplayerhq.hu/roundup/ffmpeg/issue27

Patch cleanup for MPEG 1 & 2 optimizations

Details are in the issue tracker: http://roundup.mplayerhq.hu/roundup/ffmpeg/issue100

Implement a Vivo demuxer for FFmpeg

Implement an FFmpeg demuxer for the Vivo file format. The best reference for understanding the format would be MPlayer's existing .viv demuxer.

This task corresponds to issue 99: http://roundup.mplayerhq.hu/roundup/ffmpeg/issue99

Optimal Huffman tables for (M)JPEG

This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://roundup.mplayerhq.hu/roundup/ffmpeg/issue267

RL2 Playback System

This task is to implement an FFmpeg playback subsystem for RL2 files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. The RL2 page contains the specs necessary to complete this task and points to downloadable samples.

YOP Playback System

This task is to implement an FFmpeg playback subsystem for Psygnosis YOP files. This will entail writing a new file demuxer and video decoder, both of which are trivial by FFmpeg standards. The Psygnosis YOP page contains the specs necessary to complete this task and points to downloadable samples.

BFI Playback System

This task is to implement an FFmpeg playback subsystem for BFI files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. The BFI page contains the specs necessary to complete this task and points to downloadable samples.

M95 Playback System

This task is to implement an FFmpeg playback subsystem for M95 files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. The M95 page contains the specs necessary to complete this task and points to downloadable samples.

Interesting Patches

There is a growing backlog of "Interesting Patches" for FFmpeg tracked on this Wiki. Each one requires a volunteer to task the initiative to clean up the patch to the satisfaction of the project leaders so that it can finally be included.

Legacy Tasks

Many tasks were suggested during the 2007 season. Any task that is not marked as completed is probably fair game, but ask on the list, just to be sure: http://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2007#Qualification_tasks

Freeform Tasks

If you have an idea for a simple task, come and discuss it on the development mailing list and the devs might approve it.