FFmpeg Summer Of Code 2009: Difference between revisions
(→AACS implementation: No) |
|||
Line 90: | Line 90: | ||
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111 | * existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111 | ||
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application | * Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application | ||
** possible solution: only implement "lowest" level (decode given the correct title key) but implement CSS en- and decryption as secondary goal | |||
''Mentor: Reimar Döffinger'' | ''Mentor: Reimar Döffinger'' |
Revision as of 02:51, 20 March 2009
Current Status
This list is still a work-in-progress, please see also the Talk Page.
Qualification tasks
For us to consider your application for SoC we require a completed qualification task. Choose a task from the Small Tasks list, send an email to FFmpeg-devel mailing list to inform that you are working on it (to avoid duplicated work) and when it is ready submit it for review at FFmpeg-devel. The task is considered completed when your patch is accepted to our main SVN tree.
1st Tier Project Proposals
1st tier project proposals are project ideas that are reasonably well defined AND have a mentor volunteered.
S/PDIF muxer
- Implement a muxer capable to mux:
- DTS, all 3 packing modes and the usable HD extensions
- AC3, eAC3 also
- MLP
- PCM
- WMApro
- AAC
- Mpeg-audio, layer 2 and 3
Implement support in ffplay so that it is possible to output the audio stream over S/PDIF when playing a media file.
Mentor: Benjamin Larsson
Flash Screen video 2 codec
- Implement a flashsv2 decoder and encoder. And extend the current flashsv encoder to support optimal 2-pass encoding.
Mentor: Benjamin Larsson
MPEG-4 ALS decoder
- primary goal: stream copy of ALS frames in MP4 files from reference encoder
- detect codec_id
- preserve extradata
- primary goal: write the decoder based on the ISO specification
- ISO/IEC 14496-3:2005/Amd.2:2006 and related corrigenda
- primary goal: decode files with basic ALS features
- integer samples
- LPC
- rice coding
- joint-stereo
- secondary goal: decode files with more advanced ALS features
- floating-point samples
- block switching
- LTP (long term prediction)
- BGMC (arithmetic coding)
- MCC (advanced multi-channel)
- RLSLMS (backward-adaptive prediction)
- secondary goal: pass the ISO conformance tests
- secondary goal: handle anything the reference encoder can come up with
Mentor: Justin Ruggles
Playlist/Concatenation Support
- primary goal: implement a playlist/concatenation interface
to transcode(FFmpeg) and play(FFplay) media
- interface will use commandline switches.
- interface must support every input format FFmpeg support
- interface must work with different input stream parameters (different formats, codecs, video resolution, audio sample rate, audio channels, etc..)
- interface must support track selection
- interface must support existing playlist format files .m3u, .pls, xpsf.
Mentor: Baptiste Coudurier
NEW Seeking API
- primary goal: implement a new seeking API in libavformat
- implement av_seek_file in libavformat
- implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.
- implement av_build_index function which will build an AVIndex for the file
- implement av_export_index function which will save AVIndex in a file which can be loaded later.
Mentor: Baptiste Coudurier
Improve RTSP/RTP layer
- primary goal: improve the receiver compatibility
- Add support for more widespread formats ([list will follow check gst live555 and feng])
- X-Qt/quicktime depayloader (see X-QT patch)
- vorbis and theora depayloader (see Small_FFmpeg_Tasks#Implement_the_RTP.2FVorbis_payload)
- h263 and h263+ (see Issue 678)
- ...more...
- support Quicktime http tunnel mode
- Add support for more widespread formats ([list will follow check gst live555 and feng])
- secondary goal: provide an API to expose the rtcp layer (and the equivalent in RDT dialect)
- secondary goal: try to support subtitle streams (either as rtcp-xr or application/text stream)
- secondary goal: make VideoLanClient, MPlayer and Xine use ffmpeg rtsp
Mentor: Luca Barbato, Ronald S. Bultje
AACS implementation
- Add the ability to encode and decode using Advanced Access Content System to FFmpeg.
- Specifications: http://www.aacsla.com/specifications/
- existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111
- Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application
- possible solution: only implement "lowest" level (decode given the correct title key) but implement CSS en- and decryption as secondary goal
Mentor: Reimar Döffinger
2nd Tier Project Proposals
All that separates these proposals from their 1st tier brethren is a mentor.
Finish SoC 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.
Unfinished projects from previous years are:
2006:
- AMR-NB decoder
2007:
- QCELP decoder (missing features)
- JPEG 2000 decoder
- JPEG 2000 encoder
- Dirac decoder
- Dirac encoder
- TS muxer
2008:
- Generic frame-level multithreading support
- AAC-LC encoder
- MLP/TrueHD encoder
- WMA Pro decoder
Libavfilter video work
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC project. It should replace the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in the following tasks
- Get the remaining bits of the SoC tree committed, including the ffmpeg.c and ffplay.c patch
- Get libavfilter enabled in the main SVN tree
- Write a watermark filter (this is one of the most commonly requested FFmpeg feature)
- Write a expand/pad filter (see [1] and [2]
- Port all MPlayer filters at libmbcodec/vf_* (do not forget asking the authors if it is ok to release them under the LGPL)
see also this ffmpeg-devel message: [3]
Libavfilter audio work
At the moment, FFmpeg filtering library has no support at all for handling audio. This task would consist of
- Expanding the libavfilter framework to work with audio
- Writing a resampling filter (starting with just a wrapping code at libavcodec/audioconvert.c)
- Implement negotiation of sample format and number of channels analogously to the libavfilter colorspace negotiation
- Make the resampling filter works for several combinations of sample format and channels
- Write a visualization filter as proof-of-concept of a filter that works with both video and audio
Implement a better regressions test system
- Split up the current regtests
- Add tests for all the missing formats and codecs to FATE
libvo
- Port MPlayer's libvo to ffplay
- Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.
GStreamer input
- Like we have vfw input we could have a gstreamer input format also. This would enable support of wmapro and wmalossless until these formats are RE'd.
Mentor: Christian Schaller
AMR-WB Decoder
- Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm
- Samples: http://samples.mplayerhq.hu/A-codecs/amr/
Also see AMR.
GSM Decoder
- Specification + sample implementation: http://kbs.cs.tu-berlin.de/~jutta/toast.html
- Samples: http://samples.mplayerhq.hu/A-codecs/GSM/
Also see GSM.
Sipr Decoder
- Specification: will be provided
- Samples: http://samples.mplayerhq.hu/real/AC-sipr/
Also see RealAudio sipr and this patch.
Speex Decoder
- Specification: http://speex.org/docs/
- Samples: http://samples.mplayerhq.hu/A-codecs/speex/
Also see Speex.
AMR-NB Encoder
- Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm
- Samples: http://samples.mplayerhq.hu/A-codecs/amr/
Also see AMR.
VP6 Encoder
- Specification: On2 VP6
- Samples: http://samples.mplayerhq.hu/V-codecs/VP6/
WMV3 Encoder
- Clearly defined task
- Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.
This could either be done by improving this patch or by writing the encoder from scratch.
Improve subtitle support
- Add text-to-bitmap conversion functions
- One with hard-coded bitmaps for characters
- One that utilizes freetype
- Function used will be chosen upon compilation
Adjust existing subtitle support to new ABI
VC-1 Interlaced Support
- Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.
- This includes fixing some reference streams
Improve Ratecontrol
- Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code.
- Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm.
- Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic.
- Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection.
- Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.
WMA lossless
- Implement a decoder for WMA lossless (0x0163)
- Reuse as much libavcodec code as possible
- Samples: http://samples.mplayerhq.hu/A-codecs/WMA9/wma_0x163.wma http://samples.mplayerhq.hu/A-codecs/lossless/luckynight.wma
WTV (de)muxer
- Implement a demuxer (and possibly a muxer) for the WTV file format.