Difference between revisions of "Small FFmpeg Tasks"

From MultimediaWiki
Jump to navigation Jump to search
(origin)
 
(populate page with qual tasks from GSoC '08 page)
Line 1: Line 1:
 
This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project.
 
This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project.
 +
 +
=== 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 [http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2008-March/002745.html].
 +
 +
* A G BHATT is working on [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]] [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/043754.html].
 +
 +
* Zhentan Feng is working on the [[FFmpeg Summer Of Code#TS Muxer|TS Muxer]] [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/043773.html].
 +
 +
* Reynaldo H. Verdejo Pinochet is working on the [[FFmpeg Summer Of Code#QCELP Decoder|QCELP Decoder]] [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/043806.html].
 +
 +
=== 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.'' --[[User:Multimedia Mike|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 ?
 +
--[[User:Bcoudurier|Baptiste Coudurier]] 00:30, 29 February 2008 (EST)
 +
 +
=== Cleanup of MLP decoder ===
 +
This task involves adding a decoder to FFmpeg to play [[Meridian Lossless Packing|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 [[Meridian Lossless Packing|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 [[User:Agocke|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.
 +
 +
=== 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 [http://svn.mplayerhq.hu/mplayer/trunk/libmpdemux/demux_viv.c?view=markup 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.
 +
--[[User:Reimar|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. [[RL2|The RL2 page]] contains the specs necessary to complete this task and points to downloadable samples.
 +
 +
:''[[User:Sascha|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. [[Psygnosis YOP|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. [[BFI|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. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.
 +
:''Claimed by [[User:kdubois|Kevin DuBois]]''
 +
 +
=== PAF Playback System ===
 +
This task is to implement an FFmpeg playback subsystem for [[Packed Animation File]]s. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. [[Packed Animation File|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 [[User:Astrange|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 [http://xine.cvs.sourceforge.net/xine/xine-lib/src/demuxers/demux_qt.c?view=markup 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 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-November/037984.html 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 [[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.
 +
 +
  
 
[[Category:FFmpeg]]
 
[[Category:FFmpeg]]

Revision as of 18:17, 26 March 2008

This page contains ideas for small, relatively simple tasks for the FFmpeg project.

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.

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.