Difference between revisions of "FFmpeg Summer Of Code 2007"

From MultimediaWiki
Jump to navigation Jump to search
(add official projects and ideas sections to please ffmpeg devels)
Line 40: Line 40:
Most of this list is just some ideas we are kicking around.
Most of this list is just some ideas we are kicking around.


=== JPEG2000 ===
=== Projects with Mentors (official projects) ===
* Specifications: [http://www.itu.int/rec/T-REC-T/e As ITU-T recommendations], [http://isotc.iso.org/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm ISO publicly available standards]
* Sources: [http://www.ece.uvic.ca/~mdadams/jasper/ JasPer], [http://www.openjpeg.org/ OpenJpeg], [http://jj2000.epfl.ch/ JJ2000 (in Java)]
* Samples: http://samples.mplayerhq.hu/jpeg2000/
 
=== Monkey's Audio Decoder ===
* Sources: [http://www.monkeysaudio.com/files/MAC_SDK_399.zip original sources], [http://sourceforge.net/projects/mac-port/ original sources port for non-win32 platforms], [http://jmac.sourceforge.net/ LGPLed Java implementation]


=== QCELP Decoder ===
==== QCELP Decoder ====


* Specification: QCELP decoder [http://www.3gpp2.org/Public_html/specs/alltsgscfm.cfm spec] is c.s0020 and source is c.r0020
* Specification: QCELP decoder [http://www.3gpp2.org/Public_html/specs/alltsgscfm.cfm spec] is c.s0020 and source is c.r0020
Line 55: Line 49:
''Mentor: Benjamin Larsson''
''Mentor: Benjamin Larsson''


=== Finish LC AAC decoder and implement HE-AAC(+) ===
==== Matroska Muxer ====
 
* Specification: http://www.matroska.org/technical/specs/index.html
* Sample files: http://samples.mplayerhq.hu/Matroska/
 
''Mentor: Aurelien Jacobs; Backup mentors: Steve Lhomme, Ronald S. Bultje''
 
==== MPEG TS/DVB Muxer ====
* Specification: ISO 13818-1
 
''Mentor: Baptiste Coudurier''
 
==== MXF Muxer ====
* Specification: SMPTE 377M
 
''Mentor: Baptiste Coudurier''
 
=== Ideas for more projects to be determined ===
 
==== JPEG2000 ====
* Specifications: [http://www.itu.int/rec/T-REC-T/e As ITU-T recommendations], [http://isotc.iso.org/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm ISO publicly available standards]
* Sources: [http://www.ece.uvic.ca/~mdadams/jasper/ JasPer], [http://www.openjpeg.org/ OpenJpeg], [http://jj2000.epfl.ch/ JJ2000 (in Java)]
* Samples: http://samples.mplayerhq.hu/jpeg2000/
 
==== Monkey's Audio Decoder ====
* Sources: [http://www.monkeysaudio.com/files/MAC_SDK_399.zip original sources], [http://sourceforge.net/projects/mac-port/ original sources port for non-win32 platforms], [http://jmac.sourceforge.net/ LGPLed Java implementation]
 
==== Finish LC AAC decoder and implement HE-AAC(+) ====
* Code: http://svn.mplayerhq.hu/aac/
* Code: http://svn.mplayerhq.hu/aac/


=== E-AC3 Decoder ===
==== E-AC3 Decoder ====
* Specification: http://www.atsc.org/standards/a_52b.pdf
* Specification: http://www.atsc.org/standards/a_52b.pdf
* Samples: http://samples.mplayerhq.hu/evob/MAININTRO.EVO
* Samples: http://samples.mplayerhq.hu/evob/MAININTRO.EVO


=== GSM Decoder ===
==== GSM Decoder ====
* Specification + sample implementation: http://kbs.cs.tu-berlin.de/~jutta/toast.html
* Specification + sample implementation: http://kbs.cs.tu-berlin.de/~jutta/toast.html
* Samples: http://samples.mplayerhq.hu/A-codecs/GSM/
* Samples: http://samples.mplayerhq.hu/A-codecs/GSM/


=== Dirac Encoder AND Decoder ===
==== Dirac Encoder AND Decoder ====
* Website: http://dirac.sf.net
* Website: http://dirac.sf.net
* Specification: http://dirac.sourceforge.net/specification.html
* Specification: http://dirac.sourceforge.net/specification.html


=== i263 Decoder ===
==== i263 Decoder ====
* Specification: [[I263 | I263 Format Specification at MultimediaWiki]]
* Specification: [[I263 | I263 Format Specification at MultimediaWiki]]
* Sources: [http://multimedia.cx/I263Src.zip  GPLed I263 decoder]
* Sources: [http://multimedia.cx/I263Src.zip  GPLed I263 decoder]
* Sample files: http://samples.mplayerhq.hu/V-codecs/I263/
* Sample files: http://samples.mplayerhq.hu/V-codecs/I263/


=== VP6 Encoder ===
==== VP6 Encoder ====
* Specification: [[On2 VP6]]
* Specification: [[On2 VP6]]
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/


=== NUT Muxer ===
==== NUT Muxer ====
 
=== Matroska Muxer ===
 
* Specification: http://www.matroska.org/technical/specs/index.html
* Sample files: http://samples.mplayerhq.hu/Matroska/
 
''Mentor: Aurelien Jacobs; Backup mentors: Steve Lhomme, Ronald S. Bultje''
 
=== MPEG TS/DVB Muxer ===
* Specification: ISO 13818-1
 
''Mentor: Baptiste Coudurier''


=== PAFF decoding for H.264/AVC ===
==== PAFF decoding for H.264/AVC ====
* Specification: [http://www.itu.int/rec/T-REC-H.264-200503-I/en ITU-T]
* Specification: [http://www.itu.int/rec/T-REC-H.264-200503-I/en ITU-T]
* Sample files: http://samples.mplayerhq.hu/V-codecs/h264/PAFF/
* Sample files: http://samples.mplayerhq.hu/V-codecs/h264/PAFF/


=== MXF Muxer ===
==== RV30/RV40 decoders ====
* Specification: SMPTE 377M
 
''Mentor: Baptiste Coudurier''
 
=== RV30/RV40 decoders ===
''(contingent on near-term reverse engineering efforts)''
''(contingent on near-term reverse engineering efforts)''


=== DPX/Cineon Encoder AND Decoder ===
==== DPX/Cineon Encoder AND Decoder ====
* Specification: SMPTE 268M
* Specification: SMPTE 268M
* http://en.wikipedia.org/wiki/DPX
* http://en.wikipedia.org/wiki/DPX
Line 111: Line 115:
* Samples: ftp://ftp.graphicsmagick.org/pub/dpx/
* Samples: ftp://ftp.graphicsmagick.org/pub/dpx/


=== OpenEXR Encoder AND Decoder ===
==== OpenEXR Encoder AND Decoder ====
* Website and open source tools: http://openexr.com/
* Website and open source tools: http://openexr.com/
* License: modified BSD
* License: modified BSD
Line 117: Line 121:
* Sources: [http://cinepaint.cvs.sourceforge.net/cinepaint/cinepaint-project/OpenEXR/ CinePaint implementation] , [http://linuxmovies.org/ linuxmovies.org list of open source film tools]
* Sources: [http://cinepaint.cvs.sourceforge.net/cinepaint/cinepaint-project/OpenEXR/ CinePaint implementation] , [http://linuxmovies.org/ linuxmovies.org list of open source film tools]


=== HD Photo Encoder AND Decoder ===
==== HD Photo Encoder AND Decoder ====
* Sources and specification: http://www.microsoft.com/whdc/xps/hdphotodpk.mspx
* Sources and specification: http://www.microsoft.com/whdc/xps/hdphotodpk.mspx
* http://en.wikipedia.org/wiki/HD_Photo
* http://en.wikipedia.org/wiki/HD_Photo

Revision as of 05:57, 15 March 2007

Google is sponsoring their third annual Summer of Code for the summer of 2007. This entails sponsoring students to work on assorted open source projects as well as sponsoring mentors in those same projects. Everyone wins.

FFmpeg was a Summer of Code participant in the summer of 2006 (here is the corresponding Wiki page) and hopes to be accepted again this year.

Mike Melanson (mike -at- multimedia.cx) is the administrator and main point of contact for matters relating to the FFmpeg Summer of Code.

How to apply

Before you can apply make sure you are qualified enough to apply. Last year 50% of the applicants weren't qualified for the task they applied for.

  • You have to know how to program in C fairly well.
  • We would like you to submit a patch that fixes a bug or adds a feature to FFmpeg. By doing that we will know that you are qualified for the task or not. On this page there is a list of Qualification Tasks that can be done. But you are free to submit anything you feel might be of value to FFmpeg.
  • Submit a good application through the formal Google Summer of Code process during the application timeframe (March 14-24, 2007).

Current Status

  • March 5-12, 2007: Application period for mentoring organizations.
  • March 6, 2007: Mike Melanson submitted FFmpeg mentoring application.
  • March 14, 2007: Google are now accepting student Applications.
  • March 15, 2007: FFmpeg got accepted as mentoring organization.

Project Proposals

Overview

Qualifications for a good Summer of Code proposal:

  • discrete, well-defined, modular
  • comprised of a series of measurable sub-goals
  • based on open specs that are available free of charge
  • based on complete specs

An example of a good proposal is the implementation of a decoder or demuxer for an as yet unsupported multimedia format, or an encoder or muxer for a format that can already be demuxed/decoded by FFmpeg.

An example of a less desirable proposal is one that's not as measurable, such as refactoring APIs. Bad proposals tend to be ones that would require touching a lot of core code.

To re-iterate:

  • Localized/isolated code projects = good
  • Global code refactoring = bad

Note

THIS LIST IS NOT THE PROPOSALS WE ARE SUBMITTING!

Most of this list is just some ideas we are kicking around.

Projects with Mentors (official projects)

QCELP Decoder

Mentor: Benjamin Larsson

Matroska Muxer

Mentor: Aurelien Jacobs; Backup mentors: Steve Lhomme, Ronald S. Bultje

MPEG TS/DVB Muxer

  • Specification: ISO 13818-1

Mentor: Baptiste Coudurier

MXF Muxer

  • Specification: SMPTE 377M

Mentor: Baptiste Coudurier

Ideas for more projects to be determined

JPEG2000

Monkey's Audio Decoder

Finish LC AAC decoder and implement HE-AAC(+)

E-AC3 Decoder

GSM Decoder

Dirac Encoder AND Decoder

i263 Decoder

VP6 Encoder

NUT Muxer

PAFF decoding for H.264/AVC

RV30/RV40 decoders

(contingent on near-term reverse engineering efforts)

DPX/Cineon Encoder AND Decoder

OpenEXR Encoder AND Decoder

HD Photo Encoder AND Decoder

Qualification tasks

TIFF encoder

Vivo demuxer

IFF/8SVX 8-bit audio demuxer

Optimize some code

Do you think some code in ffmpeg could run faster? We would love to get some faster decoders or encoders.

This requires some ASM skills and using timer code to benchmark.

Speedups needed in:

  • h264 decoder
  • vc-1 decoder

BFI Playback System

Add FFmpeg playback capability for the BFI format. This entails writing a new file demuxer and simple video decoder.

THP Playback System

Add FFmpeg playback capability for the THP format. This entails writing a new file demuxer and leveraging existing JPEG and ADPCM decoders to handle the video and audio data inside.

Game Formats

Several game formats are documented in this Wiki, but not yet implemented in FFmpeg. Some of them are Bethsoft VID, ...