Small FFmpeg Tasks: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(more intro info)
Line 49: Line 49:
=== Nellymoser forward transform ===
=== 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.
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 ===
=== Support PB frame mode for H.263i ===

Revision as of 11:53, 28 March 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 wished 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 tasks:

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].

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

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

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.

Sascha Sommer completed this task.

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.

Claimed by Indrani Kundu Saha

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.

Claimed by Kevin DuBois

PAF Playback System

This task is to implement an FFmpeg playback subsystem for Packed Animation 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 PAF page contains the specs necessary to complete this task and points to downloadable samples.

SSE2 iDCT Optimization

Incorporate an invert discrete cosine transform 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.

IFF demuxer

Implement demuxing of 8svx audio. This involves implementing an IFF file demuxer and a 8svx audio demuxer.

Jai Menon sent a patch to -devel implementing it.

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.

ARMovie/RPL Demuxer + 1 ESCAPE Decoder

This task involves writing a demuxer for the ARMovie/RPL format (or adapting an existing patch). Further, it involves writing a decoder for one of 3 the ESCAPE video codec variations that is known to be encapsulated inside of an RPL file for various gaming applications. All 3 codecs have descriptions and samples available.

Eli Friedman submitted a patch for the demuxer in -devel

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.