Small FFmpeg Tasks: Difference between revisions
(Claimed) |
(fdctref reimplementation) |
||
Line 127: | Line 127: | ||
=== Complete QuickTime RLE Encoder === | === Complete QuickTime RLE Encoder === | ||
FFmpeg already has a decoder for the [[Apple QuickTime RLE]] video format. It needs work, though. Pursuant to [[Interesting_Patches#1_and_2_bit_QTRLE_decoder_by_Roberto_Togni|this patch]] and [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/043352.html this email thread], revise the patch so that it is suitable for inclusion into the main codebase. This involves adding support for 1-bit and 2-bit variants, and refactoring the whole decoder to be cleaner. Ask on the list for specific advice. | FFmpeg already has a decoder for the [[Apple QuickTime RLE]] video format. It needs work, though. Pursuant to [[Interesting_Patches#1_and_2_bit_QTRLE_decoder_by_Roberto_Togni|this patch]] and [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/043352.html this email thread], revise the patch so that it is suitable for inclusion into the main codebase. This involves adding support for 1-bit and 2-bit variants, and refactoring the whole decoder to be cleaner. Ask on the list for specific advice. | ||
=== Reimplement libavcodec/fdctref.c === | |||
The forward double precision DCT in this file has a non-free license. We need an LGPL replacement of this file. | |||
[[Category:FFmpeg]] | [[Category:FFmpeg]] |
Revision as of 04:50, 9 April 2008
This page contains ideas for small, relatively simple tasks for the FFmpeg project. People who might be interested in trying one of these tasks:
- Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with
- Someone who wishes to qualify for one of FFmpeg's coveted Summer of Code project slots
- An existing FFmpeg developer who has been away from the project for awhile and needs a smaller task as motivation for re-learning the codebase
If you would like to work on one of these tasks, please take these steps:
- Subscribe to the development mailing list and indicate your interest
- Ask Multimedia Mike for a Wiki account so you can claim your task on this Wiki
If you would like to add to this list, please be prepared to explain some useful details about the task. Excessively vague tasks with no supporting details will be ruthlessly deleted.
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. Check out the FFmpeg Summer Of Code overview page and look for the unfinished projects, like AMR-NB, QCELP, Dirac, TS muxer, JPEG 2000.
- Bartlomiej Wolowiec is working on finishing the EAC3 decoder [1].
- A G BHATT is working on JPEG 2000 decoder [2].
- Reynaldo H. Verdejo Pinochet is working on the QCELP Decoder [4].
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)
I don't think so, extending PixFmt to extended structure with finegrained description like depth, range values, colorspace, sample period, and write generic simple conversion from all formats to all others, like suggested by Michael on the mailing list. Conversion routine can be a good qualification task for video encoders/decoders. What do you think ? --Baptiste Coudurier 00:30, 29 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
- Claimed by Andy Gocke
Make the SoC dts encoder multichannel capable
Here is a skeleton for a dts encoder http://svn.mplayerhq.hu/soc/dcaenc/, currently it can only encode stereo streams. The task is to extend it to support 5.1 channels also.
Specs and info can be found here: http://wiki.multimedia.cx/index.php?title=DTS
- Osunkunle Biodun Isaac
Nellymoser forward transform
FFmpeg has a Nellymoser decoder, for an encoder we need to have working forwrd mdct transform. The one used is not a pure mdct, some blocks are moved around and subtracted. Figure out how to do the forward transform. To verify that the transform is correct just do the reverse transform. Keep in mind that the mdct needs a previous block to do the alias cancelation. This is part of a working Nellymoser encoder, a task that one who would like to do the Nellymoser encoder should do.
- Claimed by Tomasz Żernicki
Support PB frame mode for H.263i
Details are in the issue tracker: http://roundup.mplayerhq.hu/roundup/ffmpeg/issue27
H.263 spec describing PB frames and improved PB frames: http://www.itu.int/rec/T-REC-H.263-200501-I/en
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
I am ready to help out with understanding MPlayer's demuxer, esp. MPlayer API stuff if necessary. --Reimar 15:46, 1 March 2008 (EST)
- Claimed by Marcondes Ricarte
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
- Claimed by Deep Pal
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.
- Claimed by Sisir Koppaka
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.
BRP Playback System
This task is to implement an FFmpeg playback subsystem for BRP files. This will entail writing a new file demuxer as well as a video decoder that can handle at least 2 variations of format data. Further, write an audio decoder for the custom DPCM format in the file. All of these tasks are considered trivial by FFmpeg standards. The BRP page contains the specs necessary to complete this task and points to downloadable samples for both known variations.
- Claimed by Nishanth Mukiri
16-bit Interplay Video Decoder
FFmpeg already supports Interplay MVE files with 8-bit video data inside. This task involves supporting 16-bit video data. The video encoding format is mostly the same but the pixel size is twice as large. Engage the ffmpeg-devel list to discuss how best to approach this task.
16-bit VQA Video Decoder
FFmpeg already supports Westwood VQA files. However, there are 3 variations of its custom video codec. The first 2 are supported in FFmpeg. This task involves implementing support for the 3rd variation. Visit the VQA samples repository: http://samples.mplayerhq.hu/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The VQA page should link to all the details you need to support this format.
HNM4 Playback System
This task is to implement an FFmpeg playback subsystem for HNM4 variant of the HNM format. This will entail writing a new file demuxer and video decoder, both of which are trivial by FFmpeg standards. The HNM4 page contains the specs necessary to complete this task and links to downloadable samples.
- Jai Menon is working on this task
Maxis XA Playback System
This task is to implement an FFmpeg playback subsystem for Maxis XA files. This will entail writing a new file demuxer and connecting it to the existing FFmpeg decoder for EA ADPCM data. The Maxis XA page contains the specs necessary to complete this task and links to downloadable samples.
- Claimed by Robert Marston
FunCom ISS Playback System
This task is to implement an FFmpeg playback subsystem for FunCom ISS files. This will entail writing a new file demuxer and connecting it to the existing FFmpeg decoder for IMA ADPCM data. The FunCom ISS page contains the specs necessary to complete this task and links to downloadable samples.
SSE2 iDCT Optimization
Incorporate an inverse discrete cosine transform (IDCT) for SSE2-capable CPUs. The hardest work is already done-- dig up Intel's AP-945 application programming note which will spell out precisely how to do this. Mostly, this involves adapting the ASM code for gcc AT&T syntax.
- Claimed by Alexander Strange
Apple RPZA encoder
A patch was once sent to the ffmpeg-devel mailing list to include and encoder for the Apple RPZA video codec. That code can be found on the "Interesting Patches" page. This qualification task involves applying that patch so that it can compile with current FFmpeg SVN code and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.
QuickTime Edit List Support
Implement edit list support in FFmpeg's QuickTime demuxer (libavformat/mov.c). This involves parsing the 'elst' atom in a QuickTime file. For a demonstration of how this is a problem, download the file menace00.mov from http://samples.mplayerhq.hu/mov/editlist/ and play it with ffplay or transcode it with ffmpeg. Notice that the audio and video are ever so slightly out of sync. Proper edit list support will solve that. Other samples in that directory also presumably exhibit edit list-related bugs. The Xine demuxer has support for this, it might be useful for hints.
- Claimed by Sathvik L.
Complete QuickTime RLE Encoder
FFmpeg already has a decoder for the Apple QuickTime RLE video format. It needs work, though. Pursuant to this patch and this email thread, revise the patch so that it is suitable for inclusion into the main codebase. This involves adding support for 1-bit and 2-bit variants, and refactoring the whole decoder to be cleaner. Ask on the list for specific advice.
Reimplement libavcodec/fdctref.c
The forward double precision DCT in this file has a non-free license. We need an LGPL replacement of this file.