<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbm</id>
	<title>MultimediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbm"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Pbm"/>
	<updated>2026-04-10T09:34:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DSD_Stream_File&amp;diff=15281</id>
		<title>DSD Stream File</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DSD_Stream_File&amp;diff=15281"/>
		<updated>2017-09-04T10:59:46Z</updated>

		<summary type="html">&lt;p&gt;Pbm: Implemented in FFmpeg long ago&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: dsf&lt;br /&gt;
* Company: [[Sony]]&lt;br /&gt;
This format contains DSD(Direct Stream Digital) audio.&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Wideband_Single-bit_Data&amp;diff=15280</id>
		<title>Wideband Single-bit Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Wideband_Single-bit_Data&amp;diff=15280"/>
		<updated>2017-09-04T10:57:42Z</updated>

		<summary type="html">&lt;p&gt;Pbm: Implemented in FFmpeg long ago&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: wsd&lt;br /&gt;
* Company: [http://www.acoust.rise.waseda.ac.jp/1bitcons/ One-bit Audio Consortium] (Japanese)&lt;br /&gt;
* Samples: http://www.acoust.rise.waseda.ac.jp/1bitcons/data1/data1.html (Japanese)&lt;br /&gt;
* Specification: http://www.acoust.rise.waseda.ac.jp/1bitcons/pdf/020917wsd.pdf (Japanese)&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=15270</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=15270"/>
		<updated>2017-02-22T16:00:54Z</updated>

		<summary type="html">&lt;p&gt;Pbm: remove Implemented stuff in FFmpeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [https://ffmpeg.org/trac/ffmpeg/report/1 FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/173307/focus=173308&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=IVR&amp;diff=15269</id>
		<title>IVR</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=IVR&amp;diff=15269"/>
		<updated>2017-02-22T15:59:20Z</updated>

		<summary type="html">&lt;p&gt;Pbm: Implemented in FFmpeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Company: [[Real]]&lt;br /&gt;
*Sample: http://samples.mplayerhq.hu/real/ivr/&lt;br /&gt;
&lt;br /&gt;
IVR is a recorded media format created by Real Player 11.&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=QDesign_Music_Codec&amp;diff=15260</id>
		<title>QDesign Music Codec</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=QDesign_Music_Codec&amp;diff=15260"/>
		<updated>2017-01-06T15:32:54Z</updated>

		<summary type="html">&lt;p&gt;Pbm: there is QDMC open source decoder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: QDMC, QDM2&lt;br /&gt;
* Company: [[QDesign]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/QDMC/ (QDMC)&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/QDM2/ (QDM2)&lt;br /&gt;
* Technical Analysis: http://multimedia.cx/mirror/qdmc2.pdf&lt;br /&gt;
&lt;br /&gt;
QDesign Music Codec is a perceptual audio codec commonly used in [[MOV]] files between 1998 and 2005, after which it was more or less supplanted by [[AAC]] for the same role. Variants of QDM2 with 32, 16 or 8 subbands exist, 16 and 8 decode with noticeable artifacts (metallic sound).&lt;br /&gt;
&lt;br /&gt;
QDMC was the first version of the codec which was apparently short lived and quickly superceded by the second version, QDM2. Both QDM2 and QDMC are supported in open source software (via [[FFmpeg]]).&lt;br /&gt;
&lt;br /&gt;
=== QDesign Music Codec (v1) ===&lt;br /&gt;
&lt;br /&gt;
This codec codes audio as a set of tones and noise parameters that are later reconstructed with FFT.&lt;br /&gt;
&lt;br /&gt;
For sampling rates &amp;lt; 16kHz subframe should be 64 samples and full frame should be 2048 samples. For 16-32kHz it's 128 and 4096 samples correspondingly. For &amp;gt;=32kHz it's 256 and 8192 samples.&lt;br /&gt;
&lt;br /&gt;
Bits are read from LSB using 16-bit little-endian words.&lt;br /&gt;
&lt;br /&gt;
==== Subblock format ====&lt;br /&gt;
&lt;br /&gt;
===== Noise data =====&lt;br /&gt;
&lt;br /&gt;
  for (band = 0; band &amp;lt; noise_bands[mode]; band++) {&lt;br /&gt;
    v = get_huff(noise_val_tree);&lt;br /&gt;
    if (v &amp;amp; 1)&lt;br /&gt;
      v = (v + 1) &amp;gt;&amp;gt; 1;&lt;br /&gt;
    else&lt;br /&gt;
      v = -v / 2;&lt;br /&gt;
    noise[band][0] = v - 1;&lt;br /&gt;
    lastval = v;&lt;br /&gt;
    for (idx = 0; idx &amp;lt; 16;) {&lt;br /&gt;
      len = get_huff_long(noise_seg_len_tree);&lt;br /&gt;
      v = get_huff(noise_val_tree);&lt;br /&gt;
      if (v &amp;amp; 1)&lt;br /&gt;
        v = (v + 1) &amp;gt;&amp;gt; 1;&lt;br /&gt;
      else&lt;br /&gt;
        v = -v / 2;&lt;br /&gt;
      newval = lastval + v;&lt;br /&gt;
      for (j = 0; j &amp;lt; len; j++)&lt;br /&gt;
        noise[band][idx + 1 + j] = lastval + v * j / len;&lt;br /&gt;
      lastval = newval;&lt;br /&gt;
      idx += len + 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===== Wave data =====&lt;br /&gt;
&lt;br /&gt;
  for (group = 0; group &amp;lt; 5; group++) {&lt;br /&gt;
    group_size = 1 &amp;lt;&amp;lt; (frame_bits - group - 1);&lt;br /&gt;
    group_bits = 4 - group;&lt;br /&gt;
    freq = 1;&lt;br /&gt;
    off  = 0;&lt;br /&gt;
    pos2 = 0;&lt;br /&gt;
    do {&lt;br /&gt;
      freq += get_huff_long(freq_diff_tree);&lt;br /&gt;
      while (freq &amp;gt;= group_size - 1) {&lt;br /&gt;
        freq -= group_size - 2;&lt;br /&gt;
        off  += 1 &amp;lt;&amp;lt; group_bits;&lt;br /&gt;
        pos2 += group_size;&lt;br /&gt;
      }&lt;br /&gt;
      if (pos2 &amp;gt;= frame_size)&lt;br /&gt;
        break;&lt;br /&gt;
      if (channels &amp;gt; 1)&lt;br /&gt;
        stereo_mode = get_bits(2);&lt;br /&gt;
      else&lt;br /&gt;
        stereo_mode = 0;&lt;br /&gt;
      amp   = get_huff(amp_tree);&lt;br /&gt;
      phase = get_bits(3);&lt;br /&gt;
      if (stereo_mode &amp;amp; 2) {&lt;br /&gt;
        amp2   =  amp   - get_huff(amp_diff_tree);&lt;br /&gt;
        phase2 = (phase - get_huff(phase_diff_tree)) &amp;amp; 7;&lt;br /&gt;
      } else {&lt;br /&gt;
        amp2   = 0;&lt;br /&gt;
        phase2 = 0;&lt;br /&gt;
      }&lt;br /&gt;
      add tone &amp;lt;off, freq, stereo_mode &amp;amp; 1, amp, phase&amp;gt;&lt;br /&gt;
      if (stereo_mode &amp;amp; 2)&lt;br /&gt;
        add tone &amp;lt;off, freq, ~stereo_mode &amp;amp; 1, amp2, phase2&amp;gt;&lt;br /&gt;
    } while (freq &amp;lt; group_size);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===== Huffman code reading =====&lt;br /&gt;
&lt;br /&gt;
Trees are static but the codes can have an additional data afterwards:&lt;br /&gt;
&lt;br /&gt;
  int get_huff(tree) {&lt;br /&gt;
    v = read_code(tree);&lt;br /&gt;
    if (v)&lt;br /&gt;
      return v - 1;&lt;br /&gt;
    else {&lt;br /&gt;
      v = get_bits(3) + 1;&lt;br /&gt;
      return get_bits(v);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int get_huff_long(tree) {&lt;br /&gt;
    v = read_code(tree);&lt;br /&gt;
    if (v)&lt;br /&gt;
      v--;&lt;br /&gt;
    else&lt;br /&gt;
      v = get_bits(get_bits(3) + 1);&lt;br /&gt;
    return code_prefix[v] + get_bits(v &amp;gt;&amp;gt; 2);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  unsigned code_prefix[] = {&lt;br /&gt;
    0x0, 0x1, 0x2, 0x3, 0x4, 0x6, 0x8, 0xA,&lt;br /&gt;
    0xC, 0x10, 0x14, 0x18, 0x1C, 0x24, 0x2C, 0x34,&lt;br /&gt;
    0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x9C, 0xBC, 0xDC,&lt;br /&gt;
    0xFC, 0x13C, 0x17C, 0x1BC, 0x1FC, 0x27C, 0x2FC, 0x37C,&lt;br /&gt;
    0x3FC, 0x4FC, 0x5FC, 0x6FC, 0x7FC, 0x9FC, 0xBFC, 0xDFC,&lt;br /&gt;
    0xFFC, 0x13FC, 0x17FC, 0x1BFC, 0x1FFC, 0x27FC, 0x2FFC, 0x37FC,&lt;br /&gt;
    0x3FFC, 0x4FFC, 0x5FFC, 0x6FFC, 0x7FFC, 0x9FFC, 0xBFFC, 0xDFFC,&lt;br /&gt;
    0xFFFC, 0x13FFC, 0x17FFC, 0x1BFFC, 0x1FFFC, 0x27FFC, 0x2FFFC, 0x37FFC,&lt;br /&gt;
    0x3FFFC&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
Noise bands selector (depending on bitrate):&lt;br /&gt;
&lt;br /&gt;
  4, 3, 2, 1, 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
Number of noise bands:&lt;br /&gt;
&lt;br /&gt;
  19, 14, 11, 9, 4&lt;br /&gt;
&lt;br /&gt;
Noise subbands:&lt;br /&gt;
&lt;br /&gt;
  0, 1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 56, 64, 80, 96, 120, 144, 176, 208, 240, 256&lt;br /&gt;
  0, 2, 4, 8, 16, 24, 32, 48, 56, 64, 80, 104, 128, 160, 208, 256&lt;br /&gt;
  0, 2, 4, 8, 16, 32, 48, 64, 80, 112, 160, 208, 256&lt;br /&gt;
  0, 4, 8, 16, 32, 48, 64, 96, 144, 208, 256&lt;br /&gt;
  0, 4, 16, 32, 64, 256&lt;br /&gt;
&lt;br /&gt;
Levels table:&lt;br /&gt;
&lt;br /&gt;
  1.1875, 1.6835938, 2.375, 3.3671875, 4.75, 6.734375, 9.5, 13.46875,&lt;br /&gt;
  19.0, 26.9375, 38.0, 53.875, 76.0, 107.75, 152.0, 215.5,&lt;br /&gt;
  304.0, 431.0, 608.0, 862.0, 1216.0, 1724.0, 2432.0, 3448.0,&lt;br /&gt;
  4864.0, 6896.0, 9728.0, 13792.0, 19456.0, 27584.0, 38912.0, 55168.0,&lt;br /&gt;
  77824.0, 110336.0, 155648.0, 220672.0, 311296.0, 441344.0, 622592.0, 882688.0,&lt;br /&gt;
  1245184.0, 1765376.0, 2490368.0, 3530752.0, 4980736.0, 7061504.0&lt;br /&gt;
&lt;br /&gt;
==== Frequencies for the trees ====&lt;br /&gt;
&lt;br /&gt;
Table 0 — noise value&lt;br /&gt;
&lt;br /&gt;
  3233, 1195, 1897, 877, 1240, 368, 364, 222, 103, 125, 18, 68, 10, 25, 7, 13,&lt;br /&gt;
  0, 18, 0, 20, 0, 31, 0, 28, 0, 31, 0, 19, 0, 23, 0, 10, 0, 9, 0, 1,&lt;br /&gt;
&lt;br /&gt;
Table 1 — noise segment length&lt;br /&gt;
&lt;br /&gt;
  7647, 1011, 380, 215, 180, 65, 33, 12, 4, 0, 0, 0, 16, 0, 0, 0, 84&lt;br /&gt;
&lt;br /&gt;
Table 2 — amplitude&lt;br /&gt;
&lt;br /&gt;
  2436, 1411, 692, 389, 316, 310, 368, 457, 651, 1359, 2563, 4732, 8946, 17150, 29621, 44245,&lt;br /&gt;
  50156, 45928, 33262, 20474, 9855, 3813, 1378, 514, 154, 82, 3&lt;br /&gt;
&lt;br /&gt;
Table 3 — frequency difference&lt;br /&gt;
&lt;br /&gt;
  57884, 27424, 14988, 11027, 17889, 14609, 11790, 9479,&lt;br /&gt;
  15948, 11581, 7815, 6917, 10486, 6603, 4897, 3983,&lt;br /&gt;
  5120, 3479, 2949, 2626, 3443, 2984, 3725, 3593,&lt;br /&gt;
  3307, 3283, 2954, 2384, 1777, 2042, 1641, 798,&lt;br /&gt;
  769, 863, 776, 239, 162, 104, 63, 43,&lt;br /&gt;
  49, 30, 6, 1, 0, 4, 1&lt;br /&gt;
&lt;br /&gt;
Table 4 — amplitude difference tree&lt;br /&gt;
&lt;br /&gt;
  8392, 14998, 5103, 1797, 648, 237, 42, 7&lt;br /&gt;
&lt;br /&gt;
Table 5 — phase difference tree&lt;br /&gt;
&lt;br /&gt;
  8860, 9620, 2138, 897, 618, 834, 1920, 6337&lt;br /&gt;
&lt;br /&gt;
Converting frequencies into codes is left as an exercise to the reader.&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Pixlet_Codec&amp;diff=15259</id>
		<title>Apple Pixlet Codec</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Pixlet_Codec&amp;diff=15259"/>
		<updated>2017-01-06T15:30:57Z</updated>

		<summary type="html">&lt;p&gt;Pbm: This codec have been fully reverse engineered&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: PXLT&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/pxlt-ApplePixlet/ http://samples.mplayerhq.hu/V-codecs/pxlt-ApplePixlet/]&lt;br /&gt;
&lt;br /&gt;
Pixar/[[Apple]] Pixlet codec.  Reportedly based on a wavelet transform and encodes only I-frames.  FFmpeg have open source decoder.  This codec was designed as an editing format and is rarely used for media distribution.&lt;br /&gt;
&lt;br /&gt;
=== Frame Format ===&lt;br /&gt;
&lt;br /&gt;
==== Frame Header ====&lt;br /&gt;
&lt;br /&gt;
All values are 32-bit big-endian words.&lt;br /&gt;
&lt;br /&gt;
   0- 3  -- frame size&lt;br /&gt;
   4- 7  -- version, supposed to be 1&lt;br /&gt;
   8-11  -- ???&lt;br /&gt;
  12-15  -- should be 0x01000000&lt;br /&gt;
  16-19  -- ???&lt;br /&gt;
  20-23  -- width&lt;br /&gt;
  24-27  -- height&lt;br /&gt;
  28-31  -- number of levels (should be 4)&lt;br /&gt;
  32-35  -- ???&lt;br /&gt;
  36-39  -- some number * 1000&lt;br /&gt;
  40-43  -- coded planes size?&lt;br /&gt;
&lt;br /&gt;
Each plane starts with (level*2) words that contain scaling parameters used in wavelet reconstruction (horizontal/vertical) multiplied by 1000000 followed by lowpass subband and (level*3) highpass subbands.&lt;br /&gt;
&lt;br /&gt;
==== Lowpass subband coding ====&lt;br /&gt;
&lt;br /&gt;
Decoding order:&lt;br /&gt;
* top left pixel (as 16-bit BE, no special coding)&lt;br /&gt;
* top row (without the first pixel)&lt;br /&gt;
* left column (without the first pixel)&lt;br /&gt;
* the rest of pixels&lt;br /&gt;
&lt;br /&gt;
After decoding pixel data is top+left predicted, i.e. &amp;lt;code&amp;gt;dst[x][y] += dst[x-1][y] + dst[x][y-1];&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Coefficients are decoded as adaptive Rice codes in form of &amp;lt;code&amp;gt;val, [skip]&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
  flag = 0;&lt;br /&gt;
  rparam      = 3;&lt;br /&gt;
  quant       = 120;&lt;br /&gt;
  max_length  = 14;&lt;br /&gt;
  max_zlength = &lt;br /&gt;
  while (!done) {&lt;br /&gt;
    nbits = log2((rparam &amp;gt;&amp;gt; 8) + 3);&lt;br /&gt;
    if (nbits &amp;gt; max_length)&lt;br /&gt;
      nbits = max_length;&lt;br /&gt;
    if (show_bits(8) == 0xFF) {&lt;br /&gt;
      skip_bits(8);&lt;br /&gt;
      val = get_bits(16);&lt;br /&gt;
    } else {&lt;br /&gt;
      pfx = show_unary(); // like 111110 -&amp;gt; 5&lt;br /&gt;
      val = ((1 &amp;lt;&amp;lt; nbits) - 1) * pfx + get_bits(nbits) - 1;&lt;br /&gt;
    }&lt;br /&gt;
    val += flag;&lt;br /&gt;
    if (val &amp;amp; 1)&lt;br /&gt;
      *dst++ = -((val + 1) &amp;gt;&amp;gt; 1);&lt;br /&gt;
    else&lt;br /&gt;
      *dst++ =   (val + 1) &amp;gt;&amp;gt; 1;&lt;br /&gt;
  &lt;br /&gt;
    rparam += quant * (val - (rparam &amp;gt;&amp;gt; 8));&lt;br /&gt;
    flag = 0;&lt;br /&gt;
  &lt;br /&gt;
    if (rparam * 4 &amp;gt; 0xFF &amp;amp;&amp;amp; dst &amp;lt; dst_end) {&lt;br /&gt;
      nbits = log2(rparam) + ((rparam + 8) &amp;gt;&amp;gt; 5) - 24;&lt;br /&gt;
      if (nbits &amp;gt; max_zlength)&lt;br /&gt;
        nbits = max_zlength;&lt;br /&gt;
      if (show_bits(8) == 0xFF) {&lt;br /&gt;
        skip_bits(8);&lt;br /&gt;
        val = get_bits(16);&lt;br /&gt;
      } else {&lt;br /&gt;
        pfx = show_unary(); // like 111110 -&amp;gt; 5&lt;br /&gt;
        val = ((1 &amp;lt;&amp;lt; nbits) - 1) * pfx + get_bits(nbits) - 1;&lt;br /&gt;
      }&lt;br /&gt;
      rparam = 0;&lt;br /&gt;
      if (val &amp;lt;= 0xFFFE)&lt;br /&gt;
        flag = 1;&lt;br /&gt;
      dst += val;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Highpass subbands coding ====&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
&lt;br /&gt;
   0- 3 -- some negative value&lt;br /&gt;
   4- 7 -- some positive value&lt;br /&gt;
   8-11 -- some parameter&lt;br /&gt;
  12-15 -- some parameter 2&lt;br /&gt;
  16-19 -- 0xDEADBEEF&lt;br /&gt;
&lt;br /&gt;
Coefficients decoding is done similarly to the lowpass subband decoding except that some parameters are taken from the subband header.&lt;br /&gt;
&lt;br /&gt;
=== Wavelet filters ===&lt;br /&gt;
&lt;br /&gt;
Edges:&lt;br /&gt;
&lt;br /&gt;
  -0.07576144003329376&lt;br /&gt;
   0.8586296626673486&lt;br /&gt;
  -0.07576144003329376&lt;br /&gt;
&lt;br /&gt;
   0.3535533905932737&lt;br /&gt;
   0.3535533905932737&lt;br /&gt;
&lt;br /&gt;
Main:&lt;br /&gt;
&lt;br /&gt;
  -0.01515228715813062&lt;br /&gt;
   0.3687056777514043&lt;br /&gt;
   0.3687056777514043&lt;br /&gt;
  -0.01515228715813062&lt;br /&gt;
 &lt;br /&gt;
   0.07071067811865475&lt;br /&gt;
  -0.8485281374238569&lt;br /&gt;
   0.07071067811865475&lt;br /&gt;
&lt;br /&gt;
[[Category:Wavelet Video Codecs]]&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Formats missing in MPlayer]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Cinepak&amp;diff=14605</id>
		<title>Cinepak</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Cinepak&amp;diff=14605"/>
		<updated>2013-07-30T22:59:19Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCC: CVID&lt;br /&gt;
* Company: [[Supermac]], [[Radius]], [[Providenza &amp;amp; Boekelheide, Inc.]]&lt;br /&gt;
* Technical Description: http://www.csse.monash.edu.au/%7etimf/videocodec/cinepak.txt ([[Mirrored Files|mirrored]])&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/CVID/ http://samples.mplayerhq.hu/V-codecs/CVID/]&lt;br /&gt;
* Windows binary codec: [http://www.probo.com/cinepak.htm http://www.probo.com/cinepak.htm]&lt;br /&gt;
&lt;br /&gt;
The Cinepak coding method is a vector quantization scheme with interframe update optimization. It is known to operate most commonly using a modified YUV 4:2:0 colorspace but also supports 256-grayscale and palettized mode. A modified variant of this format is used for full motion video on many Sega Saturn games (in [[Sega FILM]] files often bearing the .cpk extension). It is not known if this format has anything in common with the [[Cinepak For Sega]] format used in many Sega CD games.&lt;br /&gt;
&lt;br /&gt;
According to https://en.wikipedia.org/wiki/Cinepak (as of 2013-07-27) Cinepak was released in 1991. There is also a patent which seems to describe the codec: http://www.patentstorm.us/patents/5467413/fulltext.html&lt;br /&gt;
&amp;quot;Patent 5467413 Issued on November 14, 1995. Estimated Expiration Date: May 20, 2013&amp;quot;, submitted 05/20/1993.&lt;br /&gt;
&lt;br /&gt;
The old technology is still being used. As of 2012: &amp;quot;Cinepak Codec for 64 bit is now available&amp;quot; http://beyonddesign.typepad.com/posts/2012/09/service-pack-2-now-available-for-autodesk-navisworks-2013.html&lt;br /&gt;
&lt;br /&gt;
The codec has a very low decoding complexity. With Motorola 68k CPUs at 25 to 33MHz it is known to be well playable as 320x240 2175kbits/sec at 15fps. For a better visual quality with those CPUs 24fps, 320x240, 1800kbps could be recommended (according to http://www.synack.net/~bbraun/68kvideo.html written Jan. 23 2010).&lt;br /&gt;
&lt;br /&gt;
There are several versions of a binary proprietary encoder/decoder as a windows dll, among others ftp://ftp.probo.com/pub/cinepak/cvid32.zip&lt;br /&gt;
&lt;br /&gt;
There is also a simple and straightforward open source encoder as a ffmpeg patch, written in 2011 by Tomas Härdin and available at&lt;br /&gt;
http://titan.codemill.se/~tomhar/cinepakenc.patch&lt;br /&gt;
&lt;br /&gt;
The encoder mentioned above was adapted for the current (December 2012) ffmpeg, bugfixed and improved for better rate/distortion performance by Rl. The compression speed is barely optimized (it is slow), a choice made for keeping simplicity and r/d. The encoder seems to outperform the proprietary one but does not yet produce streams fully playable by the legacy decoders (the stream format is simple but the constraints of its interpretation by those decoders remain undocumented). The decoder in ffmpeg is of course happy with the streams. A snapshot 2013-02-18 is at&lt;br /&gt;
http://www.aetey.se/dl/cinepak-encoder-ffmpeg.patch&lt;br /&gt;
&lt;br /&gt;
ffmpeg's decoder used to be partially compliant (substituting Cinepak colorspace with YUV420, which distorted the colors). A colorspace fix has been submitted (as of 2013-02-18) by Rl, also improving decoding speed with 15-60% and stream format compliance. Since then the new decoder is part of ffmpeg.&lt;br /&gt;
&lt;br /&gt;
The encoder was submitted for inclusion in ffmpeg, feel free to fix encoder.&lt;br /&gt;
See http://ffmpeg.org/pipermail/ffmpeg-devel/2013-April/141781.html.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A technical note: x1, x2 and y1, y2 strip coordinates are absolute, unless y1==0 and the strip is not the first one on the frame - then y1 is assumed to coincide with y2 from the previous strip and the read y2 contains the strip height, i.e. ''if(read_y1==0){ y1 = previous_y2; y2 = previous_y2 + read_y2; }''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Cinepak&amp;diff=14604</id>
		<title>Cinepak</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Cinepak&amp;diff=14604"/>
		<updated>2013-07-30T22:58:50Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCC: CVID&lt;br /&gt;
* Company: [[Supermac]], [[Radius]], [[Providenza &amp;amp; Boekelheide, Inc.]]&lt;br /&gt;
* Technical Description: http://www.csse.monash.edu.au/%7etimf/videocodec/cinepak.txt ([[Mirrored Files|mirrored]])&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/CVID/ http://samples.mplayerhq.hu/V-codecs/CVID/]&lt;br /&gt;
* Windows binary codec: [http://www.probo.com/cinepak.htm http://www.probo.com/cinepak.htm]&lt;br /&gt;
&lt;br /&gt;
The Cinepak coding method is a vector quantization scheme with interframe update optimization. It is known to operate most commonly using a modified YUV 4:2:0 colorspace but also supports 256-grayscale and palettized mode. A modified variant of this format is used for full motion video on many Sega Saturn games (in [[Sega FILM]] files often bearing the .cpk extension). It is not known if this format has anything in common with the [[Cinepak For Sega]] format used in many Sega CD games.&lt;br /&gt;
&lt;br /&gt;
According to https://en.wikipedia.org/wiki/Cinepak (as of 2013-07-27) Cinepak was released in 1991. There is also a patent which seems to describe the codec: http://www.patentstorm.us/patents/5467413/fulltext.html&lt;br /&gt;
&amp;quot;Patent 5467413 Issued on November 14, 1995. Estimated Expiration Date: May 20, 2013&amp;quot;, submitted 05/20/1993.&lt;br /&gt;
&lt;br /&gt;
The old technology is still being used. As of 2012: &amp;quot;Cinepak Codec for 64 bit is now available&amp;quot; http://beyonddesign.typepad.com/posts/2012/09/service-pack-2-now-available-for-autodesk-navisworks-2013.html&lt;br /&gt;
&lt;br /&gt;
The codec has a very low decoding complexity. With Motorola 68k CPUs at 25 to 33MHz it is known to be well playable as 320x240 2175kbits/sec at 15fps. For a better visual quality with those CPUs 24fps, 320x240, 1800kbps could be recommended (according to http://www.synack.net/~bbraun/68kvideo.html written Jan. 23 2010).&lt;br /&gt;
&lt;br /&gt;
There are several versions of a binary proprietary encoder/decoder as a windows dll, among others ftp://ftp.probo.com/pub/cinepak/cvid32.zip&lt;br /&gt;
&lt;br /&gt;
There is also a simple and straightforward open source encoder as a ffmpeg patch, written in 2011 by Tomas Härdin and available at&lt;br /&gt;
http://titan.codemill.se/~tomhar/cinepakenc.patch&lt;br /&gt;
&lt;br /&gt;
The encoder mentioned above was adapted for the current (December 2012) ffmpeg, bugfixed and improved for better rate/distortion performance by Rl. The compression speed is barely optimized (it is slow), a choice made for keeping simplicity and r/d. The encoder seems to outperform the proprietary one but does not yet produce streams fully playable by the legacy decoders (the stream format is simple but the constraints of its interpretation by those decoders remain undocumented). The decoder in ffmpeg is of course happy with the streams. A snapshot 2013-02-18 is at&lt;br /&gt;
http://www.aetey.se/dl/cinepak-encoder-ffmpeg.patch&lt;br /&gt;
&lt;br /&gt;
ffmpeg's decoder used to be partially compliant (substituting Cinepak colorspace with YUV420, which distorted the colors). A colorspace fix has been submitted (as of 2013-02-18) by Rl, also improving decoding speed with 15-60% and stream format compliance. Since then the new decoder is part of ffmpeg.&lt;br /&gt;
&lt;br /&gt;
The encoder was submitted for inclusion in ffmpeg, feel free fix encoder.&lt;br /&gt;
See http://ffmpeg.org/pipermail/ffmpeg-devel/2013-April/141781.html.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A technical note: x1, x2 and y1, y2 strip coordinates are absolute, unless y1==0 and the strip is not the first one on the frame - then y1 is assumed to coincide with y2 from the previous strip and the read y2 contains the strip height, i.e. ''if(read_y1==0){ y1 = previous_y2; y2 = previous_y2 + read_y2; }''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libavfilter_Shortcomings&amp;diff=14564</id>
		<title>Libavfilter Shortcomings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libavfilter_Shortcomings&amp;diff=14564"/>
		<updated>2013-04-09T08:37:53Z</updated>

		<summary type="html">&lt;p&gt;Pbm: remove addresed stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here a list of Libavfilter shortcomings that should be addressed:&lt;br /&gt;
&lt;br /&gt;
* No support for reconfiguration&lt;br /&gt;
* Avisynth-like features (script files, random access to source frames)&lt;br /&gt;
* higher-bit-depth support in most scenarios&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=DFA&amp;diff=14561</id>
		<title>DFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=DFA&amp;diff=14561"/>
		<updated>2013-04-06T12:26:42Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* TDLT chunk */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extensions: dfa&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/game-formats/chronomaster-dfa/ http://samples.mplayerhq.hu/game-formats/chronomaster-dfa/]&lt;br /&gt;
&lt;br /&gt;
DFA is a FMV format used in PC games developed by DreamForge.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
All multi-byte numbers are little endian. These files are comprised of chunks with the following format:&lt;br /&gt;
&lt;br /&gt;
  bytes 0-3    chunk fourcc&lt;br /&gt;
  bytes 4-7    chunk size, not including 12-byte preamble&lt;br /&gt;
  bytes 8-11   chunk type, essentially numeric equivalent of fourcc&lt;br /&gt;
  bytes 12..   chunk payload&lt;br /&gt;
&lt;br /&gt;
A DFA file begins with a 128- (0x80-)byte header:&lt;br /&gt;
&lt;br /&gt;
  bytes 0-3    file signature: 'DFIA'&lt;br /&gt;
  byte  4      version (= 0)&lt;br /&gt;
  byte  5      ? (output)&lt;br /&gt;
  bytes 6-7    number of frames&lt;br /&gt;
  bytes 8-9    frame width&lt;br /&gt;
  bytes 10-11  frame height&lt;br /&gt;
  bytes 12-15  frame rate&lt;br /&gt;
  bytes 16-19  first frame offset (= 0x80)&lt;br /&gt;
  bytes 20-23  ? (odirectory)&lt;br /&gt;
  bytes 24-127 unused&lt;br /&gt;
&lt;br /&gt;
Chunk types include:&lt;br /&gt;
&lt;br /&gt;
  EOFR (type 0)    end of frame, empty chunk&lt;br /&gt;
  PAL1 (type 1)    768-byte chunk containing a 6-bit VGA palette components&lt;br /&gt;
  COPY (type 2)    raw frame data&lt;br /&gt;
  TSW1 (type 3)    video frame, intra LZ-coded&lt;br /&gt;
  BDLT (type 4)    video frame, inter RLE-coded bytes&lt;br /&gt;
  WDLT (type 5)    video frame, inter RLE-coded words&lt;br /&gt;
  TDLT (type 6)    video frame, inter chains&lt;br /&gt;
  DSW1 (type 7)    video frame, inter LZ-coded&lt;br /&gt;
  BLCK (type 8)    solid frame, fill whole frame with the first byte of payload&lt;br /&gt;
  DDS1 (type 9)    video frame, inter LZ-coded, double-scaled&lt;br /&gt;
&lt;br /&gt;
=== TSW1 chunk ===&lt;br /&gt;
&lt;br /&gt;
First four bytes store number of stripes to change, next four bytes - offset inside frame. The rest is stripe data.&lt;br /&gt;
&lt;br /&gt;
Every stripe is coded with 16-bit LSB little-endian words in LZ77-like scheme:&lt;br /&gt;
&lt;br /&gt;
  mask = 0x10000;&lt;br /&gt;
  while (stripes--) {&lt;br /&gt;
    if (mask == 0x10000) {&lt;br /&gt;
      mask = 1;&lt;br /&gt;
      bitbuf = get_le16();&lt;br /&gt;
    }&lt;br /&gt;
    if (bitbuf &amp;amp; mask) {&lt;br /&gt;
      v = get_le16();&lt;br /&gt;
      offset = (v &amp;amp; 0x1FFF) * 2;&lt;br /&gt;
      count  = ((v &amp;gt;&amp;gt; 13) + 2) * 2;&lt;br /&gt;
      memmove(cur_frame_pos, cur_frame_pos - offset, count);&lt;br /&gt;
    } else {&lt;br /&gt;
      *cur_frame_pos++ = get_byte();&lt;br /&gt;
      *cur_frame_pos++ = get_byte();&lt;br /&gt;
    }&lt;br /&gt;
    mask &amp;lt;&amp;lt;= 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BDLT chunk ===&lt;br /&gt;
&lt;br /&gt;
First two bytes code number of lines to skip in frame before decoding, next two bytes code number of lines to decode.&lt;br /&gt;
&lt;br /&gt;
Every line is coded into segments, first byte of data tells how many segments are there. Every segment is coded as RLE, first byte&lt;br /&gt;
tells how many pixels to skip before decoding segment, second byte is treated as signed value with sign telling if it's copy or run:&lt;br /&gt;
&lt;br /&gt;
  while (segments--) {&lt;br /&gt;
     cur_line_ptr += get_byte();&lt;br /&gt;
     count = (int8_t)get_byte();&lt;br /&gt;
     if (count &amp;gt;= 0)&lt;br /&gt;
         get_buffer(cur_line_ptr, count);&lt;br /&gt;
     else&lt;br /&gt;
         memset(cur_line_ptr, get_byte(), -count);&lt;br /&gt;
     cur_line_ptr += abs(count);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== WDLT chunk ===&lt;br /&gt;
&lt;br /&gt;
First two bytes code number of lines to decode. Overall decoding is similar to BDLT chunk but with words copy instead of byte copy and different segment handling scheme:&lt;br /&gt;
&lt;br /&gt;
  while (lines--) {&lt;br /&gt;
    stripes = (int16_t)get_le16();&lt;br /&gt;
    while (stripes &amp;amp; 0xC000) {&lt;br /&gt;
      *frame_ptr += -stripes * width;&lt;br /&gt;
      stripes = (int16_t)get_le16();&lt;br /&gt;
    }&lt;br /&gt;
    if (stripes &amp;lt; 0) {&lt;br /&gt;
      frame_ptr[width - 1] = stripes &amp;amp; 0xFF;&lt;br /&gt;
      stripes = (int16_t)get_le16();&lt;br /&gt;
    }&lt;br /&gt;
    line_ptr = frame_ptr;&lt;br /&gt;
    while (stripes--) {&lt;br /&gt;
      line_ptr += get_byte();&lt;br /&gt;
      count = (int8_t)get_byte();&lt;br /&gt;
      if (count &amp;gt; 0) {&lt;br /&gt;
        get_buffer(line_ptr, count * 2);&lt;br /&gt;
        line_ptr += count * 2;&lt;br /&gt;
      } else {&lt;br /&gt;
        val = get_le16();&lt;br /&gt;
        for (i = 0; i &amp;lt; -count * 2; i++) {&lt;br /&gt;
          put_le16(line_ptr, val);&lt;br /&gt;
          line_ptr += 2;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    frame_ptr += width;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== TDLT chunk ===&lt;br /&gt;
&lt;br /&gt;
First four bytes code number of segments, each segment contains number of words to skip before decoding, number of words to copy and bytes to copy.&lt;br /&gt;
&lt;br /&gt;
  segments = getdword()&lt;br /&gt;
  while(segments--)&lt;br /&gt;
  {&lt;br /&gt;
    numcopy = getbyte()&lt;br /&gt;
    numskip = getbyte()&lt;br /&gt;
    output += numskip * 2&lt;br /&gt;
    output &amp;lt;- getbytes(numcopy * 2)&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Sample NEEDED!&lt;br /&gt;
&lt;br /&gt;
=== DSW1 chunk ===&lt;br /&gt;
&lt;br /&gt;
Almost the same as TSW1 chunk with the following differences:&lt;br /&gt;
&lt;br /&gt;
* first two bytes code number of stripes&lt;br /&gt;
* if getbit() returned zero, get and test another bit. If that bit is zero too then read literal (two bytes), else read 2-byte number and skip corresponding number of pixels. And report two bits read in any case.&lt;br /&gt;
&lt;br /&gt;
=== DDS1 chunk ===&lt;br /&gt;
&lt;br /&gt;
Almost the same as DSW1 chunk but it decodes in scaled mode - every skip is twice that large, literal is used to set 2x2 block and copying also fills 2x2 block with pixel value:&lt;br /&gt;
&lt;br /&gt;
  mask = 0x10000;&lt;br /&gt;
  while (stripes--) {&lt;br /&gt;
    if (mask == 0x10000) {&lt;br /&gt;
      mask = 1;&lt;br /&gt;
      bitbuf = get_le16();&lt;br /&gt;
    }&lt;br /&gt;
    if (bitbuf &amp;amp; mask) {&lt;br /&gt;
      v = get_le16();&lt;br /&gt;
      offset = (v &amp;amp; 0x1FFF) * 2 * 2;&lt;br /&gt;
      count  = ((v &amp;gt;&amp;gt; 13) + 2) * 2;&lt;br /&gt;
      for (i = 0; i &amp;lt; count; i++) {&lt;br /&gt;
        cur_frame_pos[0] = cur_frame_pos[1] =&lt;br /&gt;
        cur_frame_pos[width] = cur_frame_pos[width + 1] = cur_frame_pos[-offset];&lt;br /&gt;
        cur_frame_pos += 2;&lt;br /&gt;
      }&lt;br /&gt;
      memmove(cur_frame_pos, cur_frame_pos - offset, count);&lt;br /&gt;
    } else if (!(bitbuf &amp;amp; (mask &amp;lt;&amp;lt; 1)) {&lt;br /&gt;
      cur_frame_pos[0] = cur_frame_pos[1] =&lt;br /&gt;
      cur_frame_pos[width] = cur_frame_pos[width + 1] = get_byte();&lt;br /&gt;
      cur_frame_pos += 2;&lt;br /&gt;
      cur_frame_pos[0] = cur_frame_pos[1] =&lt;br /&gt;
      cur_frame_pos[width] = cur_frame_pos[width + 1] = get_byte();&lt;br /&gt;
      cur_frame_pos += 2;&lt;br /&gt;
    } else {&lt;br /&gt;
      cur_frame_pos += get_le16() * 2;&lt;br /&gt;
    }&lt;br /&gt;
    mask &amp;lt;&amp;lt;= 2;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Games using DFI ==&lt;br /&gt;
* [http://www.mobygames.com/game/anvil-of-dawn Anvil of Dawn]&lt;br /&gt;
* [http://www.mobygames.com/game/dos/chronomaster Chronomaster]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Game Formats]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14465</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14465"/>
		<updated>2013-03-20T10:44:32Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* MPEG-4 ALS encoder */ remove some irrelevant parts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code is a program that offers students stipends to write code for open source projects. FFmpeg participated to several past editions, and this page is about the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013 edition].&lt;br /&gt;
In particular, see [http://www.google-melange.com/gsoc/events/google/gsoc2013 timeline].&lt;br /&gt;
&lt;br /&gt;
Application period starts on March 18, and March 29 at 19:00 UTC is the application deadline for interested organizations.&lt;br /&gt;
Please finish up this page before then.&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Task Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Small task student should perform to demonstrate understanding.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentored tasks =&lt;br /&gt;
&lt;br /&gt;
== H.264 Multiview Video Coding (MVC) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Mmspg-epfl-ch-double-camera.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist and the codec is used on Bluray media, but FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the [http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ffmpeg-devel mailing list].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Create MVC decoder and add a test for the FFmpeg Automated Testing Environment (FATE).&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Perform work that demonstrates understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Animated Portable Network Graphics (APNG) ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Animated PNG example bouncing beach ball.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Pbm|Paul B Mahol]]&lt;br /&gt;
&lt;br /&gt;
== Misc Libavfilter extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Lavfi-gsoc-filter-vintage-illustration.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filters&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Stefanosa|Stefano Sabatini]].&lt;br /&gt;
&lt;br /&gt;
'''Backup mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Subtitles ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg has been working on improving its subtitles support recently, notably by adding the support for various text subtitles and various hardsubbing (burning the subtitles onto the video) facilities. While the theme may sound relatively simple compared to audio/video signal processing, the project carry an historical burden not easy to deal with, and introduces various issues very specific to its sparse form.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Subtitles-sensei.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Add support for new subtitles formats. Example: a demuxer for .SUP files, just like VobSub but for Blu-Ray, or a VobSub muxer.&lt;br /&gt;
* Improve text subtitles decoders. Typically, this can be supporting advanced markup features in SAMI or WebVTT.&lt;br /&gt;
* Update the API to get rid of the clumsy internal text representation of styles&lt;br /&gt;
* Proper integration of subtitles into libavfilter. This is the ultimate goal, as it will notably allow a complete subtitles rendering for applications such as ffplay.&lt;br /&gt;
* BONUS: if everything goes well, the student will be allowed to add basic support for teletext&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background in fansubbing area (notably ASS experience) would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write one subtitles demuxer and decoder (for example support for Spruce subtitles format). This is in order to make sure the subtitles chain is understood.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Postproc optimizations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:PostProc.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains libpostproc, which is used to postprocess 8x8 DCT-MC based video and images (jpeg, mpeg-1/2/4, H263 amongth others). The code though has been written a long time ago and its SIMD optimizations need to be updated to what modern CPUs support (AVX2 and SSE2+).&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Convert all gcc inline asm in libpostproc to YASM.&lt;br /&gt;
* Restructure the code so that it works with block sizes compatible with modern SIMD.&lt;br /&gt;
* Add Integer SSE2 and AVX2 optimizations for each existing MMX/MMX2/3dnow optimization in libpostproc.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, good x86 assembly coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' convert 1 or 2 MMX2 functions to SSE2 and AVX2.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayer RGB colorspaces ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:350px-Bayer_pattern_on_sensor.svg.png ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Several image and video format store pixels using Bayer-pattern colorspaces. Supporting these format would broaden FFmepg's applicability to RAW still and video photography processing. Tasks:&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* Rebase existing patches&lt;br /&gt;
* Implement bayer transformations in libswscale (plain C)&lt;br /&gt;
* Add bayer formats to the libavutil pixfmt enumeration routines&lt;br /&gt;
* SIMD optimizations of the libswscale transformations&lt;br /&gt;
* Complete PhotoCINE demuxer to support Bayer format; (or another format of your choosing)&lt;br /&gt;
&lt;br /&gt;
Optional goodies:&lt;br /&gt;
* Extend TIFF decoder to support DNG-Bayer format&lt;br /&gt;
* Support a popular proprietary camera format (many to choose from; see dcraw project)&lt;br /&gt;
&lt;br /&gt;
'''Qualification task''': TBD&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Peter Ross&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MPEG-4 ALS encoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;http://upload.wikimedia.org/wikipedia/commons/e/e9/ATunes.png&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[http://commons.wikimedia.org/wiki/File%3AATunes.png]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' &lt;br /&gt;
A MPEG-4 ALS decoder was implemented several years ago but an encoder is still missing in the official codebase. A rudimentary encoder has already been written and is available on [https://github.com/justinruggles/FFmpeg-alsenc.git github]. For this task, that encoder is first to be updated to fit into the current codebase of FFmpeg and to be tested for conformance using the [http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/#230252 reference codec and specifications]. Second, the encoder is to be brought through the usual reviewing process to hit the codebase at the end of the project.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' &lt;br /&gt;
&lt;br /&gt;
* Update the existing encoder to fit into the current codebase.&lt;br /&gt;
* Ensure conformance of the encoder by verifying using the reference codec and generate a test case for FATE.&lt;br /&gt;
* Ensure the FFmpeg decoder processes all generated files without warnings.&lt;br /&gt;
* Enhance the rudimentary feature set of the encoder.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. A certain interest in audio coding and/or knowledge about the FFmpeg codebase could be beneficial.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' Add floating point support to MPEG-4 ALS decoder&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Paul B Mahol (''durandal_1707'' on irc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unmentored tasks =&lt;br /&gt;
&lt;br /&gt;
== glplay ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Opengl_logo.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' TBD Backup: Reimar Döffinger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AAC ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
== DTS / DCA ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
&lt;br /&gt;
== TrueHD encoder ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
== Opus decoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Opus.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== VC-1 interlaced ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
== JPEG 2000 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Jpeg2000.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VP7 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14464</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14464"/>
		<updated>2013-03-20T10:35:37Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* MPEG-4 ALS encoder */ make task less trivial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code is a program that offers students stipends to write code for open source projects. FFmpeg participated to several past editions, and this page is about the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013 edition].&lt;br /&gt;
In particular, see [http://www.google-melange.com/gsoc/events/google/gsoc2013 timeline].&lt;br /&gt;
&lt;br /&gt;
Application period starts on March 18, and March 29 at 19:00 UTC is the application deadline for interested organizations.&lt;br /&gt;
Please finish up this page before then.&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Task Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Small task student should perform to demonstrate understanding.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentored tasks =&lt;br /&gt;
&lt;br /&gt;
== H.264 Multiview Video Coding (MVC) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Mmspg-epfl-ch-double-camera.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist and the codec is used on Bluray media, but FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the [http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ffmpeg-devel mailing list].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Create MVC decoder and add a test for the FFmpeg Automated Testing Environment (FATE).&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Perform work that demonstrates understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Animated Portable Network Graphics (APNG) ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Animated PNG example bouncing beach ball.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Pbm|Paul B Mahol]]&lt;br /&gt;
&lt;br /&gt;
== Misc Libavfilter extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Lavfi-gsoc-filter-vintage-illustration.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filters&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Stefanosa|Stefano Sabatini]].&lt;br /&gt;
&lt;br /&gt;
'''Backup mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Subtitles ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg has been working on improving its subtitles support recently, notably by adding the support for various text subtitles and various hardsubbing (burning the subtitles onto the video) facilities. While the theme may sound relatively simple compared to audio/video signal processing, the project carry an historical burden not easy to deal with, and introduces various issues very specific to its sparse form.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Subtitles-sensei.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Add support for new subtitles formats. Example: a demuxer for .SUP files, just like VobSub but for Blu-Ray, or a VobSub muxer.&lt;br /&gt;
* Improve text subtitles decoders. Typically, this can be supporting advanced markup features in SAMI or WebVTT.&lt;br /&gt;
* Update the API to get rid of the clumsy internal text representation of styles&lt;br /&gt;
* Proper integration of subtitles into libavfilter. This is the ultimate goal, as it will notably allow a complete subtitles rendering for applications such as ffplay.&lt;br /&gt;
* BONUS: if everything goes well, the student will be allowed to add basic support for teletext&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background in fansubbing area (notably ASS experience) would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write one subtitles demuxer and decoder (for example support for Spruce subtitles format). This is in order to make sure the subtitles chain is understood.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Postproc optimizations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:PostProc.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains libpostproc, which is used to postprocess 8x8 DCT-MC based video and images (jpeg, mpeg-1/2/4, H263 amongth others). The code though has been written a long time ago and its SIMD optimizations need to be updated to what modern CPUs support (AVX2 and SSE2+).&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Convert all gcc inline asm in libpostproc to YASM.&lt;br /&gt;
* Restructure the code so that it works with block sizes compatible with modern SIMD.&lt;br /&gt;
* Add Integer SSE2 and AVX2 optimizations for each existing MMX/MMX2/3dnow optimization in libpostproc.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, good x86 assembly coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' convert 1 or 2 MMX2 functions to SSE2 and AVX2.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayer RGB colorspaces ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:350px-Bayer_pattern_on_sensor.svg.png ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Several image and video format store pixels using Bayer-pattern colorspaces. Supporting these format would broaden FFmepg's applicability to RAW still and video photography processing. Tasks:&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* Rebase existing patches&lt;br /&gt;
* Implement bayer transformations in libswscale (plain C)&lt;br /&gt;
* Add bayer formats to the libavutil pixfmt enumeration routines&lt;br /&gt;
* SIMD optimizations of the libswscale transformations&lt;br /&gt;
* Complete PhotoCINE demuxer to support Bayer format; (or another format of your choosing)&lt;br /&gt;
&lt;br /&gt;
Optional goodies:&lt;br /&gt;
* Extend TIFF decoder to support DNG-Bayer format&lt;br /&gt;
* Support a popular proprietary camera format (many to choose from; see dcraw project)&lt;br /&gt;
&lt;br /&gt;
'''Qualification task''': TBD&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Peter Ross&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MPEG-4 ALS encoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;http://upload.wikimedia.org/wikipedia/commons/e/e9/ATunes.png&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[http://commons.wikimedia.org/wiki/File%3AATunes.png]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' &lt;br /&gt;
A MPEG-4 ALS decoder was implemented several years ago but an encoder is still missing in the official codebase. A rudimentary encoder has already been written and is available on [https://github.com/justinruggles/FFmpeg-alsenc.git github]. For this task, that encoder is first to be updated to fit into the current codebase of FFmpeg and to be tested for conformance using the [http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/#230252 reference codec and specifications]. Second, the encoder is to be brought through the usual reviewing process to hit the codebase at the end of the project.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' &lt;br /&gt;
&lt;br /&gt;
Mandatory objectives&lt;br /&gt;
&lt;br /&gt;
* Update the existing encoder to fit into the current codebase.&lt;br /&gt;
* Ensure conformance of the encoder by verifying using the reference codec and generate a test case for FATE.&lt;br /&gt;
* Push the encoder into the codebase after iterating through the review process on the developing mailing list.&lt;br /&gt;
* Ensure the FFmpeg decoder processes all generated files without warnings.&lt;br /&gt;
* Enhance the rudimentary feature set of the encoder.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. A certain interest in audio coding and/or knowledge about the FFmpeg codebase could be beneficial.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' Add floating point support to MPEG-4 ALS decoder&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Paul B Mahol (''durandal_1707'' on irc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unmentored tasks =&lt;br /&gt;
&lt;br /&gt;
== glplay ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Opengl_logo.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' TBD Backup: Reimar Döffinger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AAC ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
== DTS / DCA ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
&lt;br /&gt;
== TrueHD encoder ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
== Opus decoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Opus.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== VC-1 interlaced ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
== JPEG 2000 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Jpeg2000.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VP7 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14462</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14462"/>
		<updated>2013-03-19T11:34:54Z</updated>

		<summary type="html">&lt;p&gt;Pbm: remove hevc, there is already incomplete decoder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code is a program that offers students stipends to write code for open source projects. FFmpeg participated to several past editions, and this page is about the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013 edition].&lt;br /&gt;
In particular, see [http://www.google-melange.com/gsoc/events/google/gsoc2013 timeline].&lt;br /&gt;
&lt;br /&gt;
Application period starts on March 18, and March 29 at 19:00 UTC is the application deadline for interested organizations.&lt;br /&gt;
Please finish up this page before then.&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Task Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Small task student should perform to demonstrate understanding.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentored tasks =&lt;br /&gt;
&lt;br /&gt;
== H.264 Multiview Video Coding (MVC) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Mmspg-epfl-ch-double-camera.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist and the codec is used on Bluray media, but FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the [http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ffmpeg-devel mailing list].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Create MVC decoder and add a test for the FFmpeg Automated Testing Environment (FATE).&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Perform work that demonstrates understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Animated Portable Network Graphics (APNG) ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Animated PNG example bouncing beach ball.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Pbm|Paul B Mahol]]&lt;br /&gt;
&lt;br /&gt;
== Misc Libavfilter extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Lavfi-gsoc-filter-vintage-illustration.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filters&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Stefanosa|Stefano Sabatini]].&lt;br /&gt;
&lt;br /&gt;
'''Backup mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Subtitles ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg has been working on improving its subtitles support recently, notably by adding the support for various text subtitles and various hardsubbing (burning the subtitles onto the video) facilities. While the theme may sound relatively simple compared to audio/video signal processing, the project carry an historical burden not easy to deal with, and introduces various issues very specific to its sparse form.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Subtitles-sensei.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Add support for new subtitles formats. Example: a demuxer for .SUP files, just like VobSub but for Blu-Ray, or a VobSub muxer.&lt;br /&gt;
* Improve text subtitles decoders. Typically, this can be supporting advanced markup features in SAMI or WebVTT.&lt;br /&gt;
* Update the API to get rid of the clumsy internal text representation of styles&lt;br /&gt;
* Proper integration of subtitles into libavfilter. This is the ultimate goal, as it will notably allow a complete subtitles rendering for applications such as ffplay.&lt;br /&gt;
* BONUS: if everything goes well, the student will be allowed to add basic support for teletext&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background in fansubbing area (notably ASS experience) would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write one subtitles demuxer and decoder (for example support for Spruce subtitles format). This is in order to make sure the subtitles chain is understood.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Postproc optimizations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:PostProc.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains libpostproc, which is used to postprocess 8x8 DCT-MC based video and images (jpeg, mpeg-1/2/4, H263 amongth others). The code though has been written a long time ago and its SIMD optimizations need to be updated to what modern CPUs support (AVX2 and SSE2+).&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Convert all gcc inline asm in libpostproc to YASM.&lt;br /&gt;
* Restructure the code so that it works with block sizes compatible with modern SIMD.&lt;br /&gt;
* Add Integer SSE2 and AVX2 optimizations for each existing MMX/MMX2/3dnow optimization in libpostproc.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, good x86 assembly coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' convert 1 or 2 MMX2 functions to SSE2 and AVX2.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== glplay ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Opengl_logo.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' TBD Backup: Reimar Döffinger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayer RGB colorspaces ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:350px-Bayer_pattern_on_sensor.svg.png ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Several image and video format store pixels using Bayer-pattern colorspaces. Supporting these format would broaden FFmepg's applicability to RAW still and video photography processing. Tasks:&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* Rebase existing patches&lt;br /&gt;
* Implement bayer transformations in libswscale (plain C)&lt;br /&gt;
* Add bayer formats to the libavutil pixfmt enumeration routines&lt;br /&gt;
* SIMD optimizations of the libswscale transformations&lt;br /&gt;
* Complete PhotoCINE demuxer to support Bayer format; (or another format of your choosing)&lt;br /&gt;
&lt;br /&gt;
Optional goodies:&lt;br /&gt;
* Extend TIFF decoder to support DNG-Bayer format&lt;br /&gt;
* Support a popular proprietary camera format (many to choose from; see dcraw project)&lt;br /&gt;
&lt;br /&gt;
'''Qualification task''': TBD&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Peter Ross&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MPEG-4 ALS encoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;http://upload.wikimedia.org/wikipedia/commons/e/e9/ATunes.png&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[http://commons.wikimedia.org/wiki/File%3AATunes.png]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' &lt;br /&gt;
A MPEG-4 ALS decoder was implemented several years ago but an encoder is still missing in the official codebase. A rudimentary encoder has already been written and is available on [https://github.com/justinruggles/FFmpeg-alsenc.git github]. For this task, that encoder is first to be updated to fit into the current codebase of FFmpeg and to be tested for conformance using the [http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/#230252 reference codec and specifications]. Second, the encoder is to be brought through the usual reviewing process to hit the codebase at the end of the project.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' &lt;br /&gt;
&lt;br /&gt;
Mandatory objectives&lt;br /&gt;
&lt;br /&gt;
* Update the existing encoder to fit into the current codebase.&lt;br /&gt;
* Ensure conformance of the encoder by verifying using the reference codec and generate a test case for FATE.&lt;br /&gt;
* Push the encoder into the codebase after iterating through the review process on the developing mailing list.&lt;br /&gt;
&lt;br /&gt;
Optional goodies&lt;br /&gt;
&lt;br /&gt;
* Ensure the FFmpeg decoder processes all generated files without warnings.&lt;br /&gt;
* Enhance the rudimentary feature set of the encoder.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. A certain interest in audio coding and/or knowledge about the FFmpeg codebase could be beneficial.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' Add floating point support to MPEG-4 ALS decoder&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Paul B Mahol (''durandal_1707'' on irc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unmentored tasks =&lt;br /&gt;
&lt;br /&gt;
== AAC ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
== DTS / DCA ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
&lt;br /&gt;
== TrueHD encoder ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
== Opus decoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Opus.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== VC-1 interlaced ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
== JPEG 2000 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Jpeg2000.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VP7 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14461</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14461"/>
		<updated>2013-03-19T11:22:01Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* DTS / DCA */  remove encoder part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code is a program that offers students stipends to write code for open source projects. FFmpeg participated to several past editions, and this page is about the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013 edition].&lt;br /&gt;
In particular, see [http://www.google-melange.com/gsoc/events/google/gsoc2013 timeline].&lt;br /&gt;
&lt;br /&gt;
Application period starts on March 18, and March 29 at 19:00 UTC is the application deadline for interested organizations.&lt;br /&gt;
Please finish up this page before then.&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Task Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Small task student should perform to demonstrate understanding.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentored tasks =&lt;br /&gt;
&lt;br /&gt;
== H.264 Multiview Video Coding (MVC) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Mmspg-epfl-ch-double-camera.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist and the codec is used on Bluray media, but FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the [http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ffmpeg-devel mailing list].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Create MVC decoder and add a test for the FFmpeg Automated Testing Environment (FATE).&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Perform work that demonstrates understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Animated Portable Network Graphics (APNG) ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Animated PNG example bouncing beach ball.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Pbm|Paul B Mahol]]&lt;br /&gt;
&lt;br /&gt;
== Misc Libavfilter extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Lavfi-gsoc-filter-vintage-illustration.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filters&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Stefanosa|Stefano Sabatini]].&lt;br /&gt;
&lt;br /&gt;
'''Backup mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Subtitles ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg has been working on improving its subtitles support recently, notably by adding the support for various text subtitles and various hardsubbing (burning the subtitles onto the video) facilities. While the theme may sound relatively simple compared to audio/video signal processing, the project carry an historical burden not easy to deal with, and introduces various issues very specific to its sparse form.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Subtitles-sensei.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Add support for new subtitles formats. Example: a demuxer for .SUP files, just like VobSub but for Blu-Ray, or a VobSub muxer.&lt;br /&gt;
* Improve text subtitles decoders. Typically, this can be supporting advanced markup features in SAMI or WebVTT.&lt;br /&gt;
* Update the API to get rid of the clumsy internal text representation of styles&lt;br /&gt;
* Proper integration of subtitles into libavfilter. This is the ultimate goal, as it will notably allow a complete subtitles rendering for applications such as ffplay.&lt;br /&gt;
* BONUS: if everything goes well, the student will be allowed to add basic support for teletext&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background in fansubbing area (notably ASS experience) would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write one subtitles demuxer and decoder (for example support for Spruce subtitles format). This is in order to make sure the subtitles chain is understood.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Postproc optimizations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:PostProc.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains libpostproc, which is used to postprocess 8x8 DCT-MC based video and images (jpeg, mpeg-1/2/4, H263 amongth others). The code though has been written a long time ago and its SIMD optimizations need to be updated to what modern CPUs support (AVX2 and SSE2+).&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Convert all gcc inline asm in libpostproc to YASM.&lt;br /&gt;
* Restructure the code so that it works with block sizes compatible with modern SIMD.&lt;br /&gt;
* Add Integer SSE2 and AVX2 optimizations for each existing MMX/MMX2/3dnow optimization in libpostproc.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, good x86 assembly coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' convert 1 or 2 MMX2 functions to SSE2 and AVX2.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== glplay ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Opengl_logo.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' TBD Backup: Reimar Döffinger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayer RGB colorspaces ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:350px-Bayer_pattern_on_sensor.svg.png ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Several image and video format store pixels using Bayer-pattern colorspaces. Supporting these format would broaden FFmepg's applicability to RAW still and video photography processing. Tasks:&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* Rebase existing patches&lt;br /&gt;
* Implement bayer transformations in libswscale (plain C)&lt;br /&gt;
* Add bayer formats to the libavutil pixfmt enumeration routines&lt;br /&gt;
* SIMD optimizations of the libswscale transformations&lt;br /&gt;
* Complete PhotoCINE demuxer to support Bayer format; (or another format of your choosing)&lt;br /&gt;
&lt;br /&gt;
Optional goodies:&lt;br /&gt;
* Extend TIFF decoder to support DNG-Bayer format&lt;br /&gt;
* Support a popular proprietary camera format (many to choose from; see dcraw project)&lt;br /&gt;
&lt;br /&gt;
'''Qualification task''': TBD&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Peter Ross&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MPEG-4 ALS encoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;http://upload.wikimedia.org/wikipedia/commons/e/e9/ATunes.png&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[http://commons.wikimedia.org/wiki/File%3AATunes.png]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' &lt;br /&gt;
A MPEG-4 ALS decoder was implemented several years ago but an encoder is still missing in the official codebase. A rudimentary encoder has already been written and is available on [https://github.com/justinruggles/FFmpeg-alsenc.git github]. For this task, that encoder is first to be updated to fit into the current codebase of FFmpeg and to be tested for conformance using the [http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/#230252 reference codec and specifications]. Second, the encoder is to be brought through the usual reviewing process to hit the codebase at the end of the project.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' &lt;br /&gt;
&lt;br /&gt;
Mandatory objectives&lt;br /&gt;
&lt;br /&gt;
* Update the existing encoder to fit into the current codebase.&lt;br /&gt;
* Ensure conformance of the encoder by verifying using the reference codec and generate a test case for FATE.&lt;br /&gt;
* Push the encoder into the codebase after iterating through the review process on the developing mailing list.&lt;br /&gt;
&lt;br /&gt;
Optional goodies&lt;br /&gt;
&lt;br /&gt;
* Ensure the FFmpeg decoder processes all generated files without warnings.&lt;br /&gt;
* Enhance the rudimentary feature set of the encoder.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. A certain interest in audio coding and/or knowledge about the FFmpeg codebase could be beneficial.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' Add floating point support to MPEG-4 ALS decoder&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Paul B Mahol (''durandal_1707'' on irc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unmentored tasks =&lt;br /&gt;
&lt;br /&gt;
== AAC ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
== DTS / DCA ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
&lt;br /&gt;
== TrueHD encoder ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
== Opus decoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Opus.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== HEVC / H.265 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
== VC-1 interlaced ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
== JPEG 2000 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Jpeg2000.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VP7 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14460</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14460"/>
		<updated>2013-03-19T11:19:10Z</updated>

		<summary type="html">&lt;p&gt;Pbm: move als encoder to mentored tasks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code is a program that offers students stipends to write code for open source projects. FFmpeg participated to several past editions, and this page is about the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Google Summer of Code 2013 edition].&lt;br /&gt;
In particular, see [http://www.google-melange.com/gsoc/events/google/gsoc2013 timeline].&lt;br /&gt;
&lt;br /&gt;
Application period starts on March 18, and March 29 at 19:00 UTC is the application deadline for interested organizations.&lt;br /&gt;
Please finish up this page before then.&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Task Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Small task student should perform to demonstrate understanding.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mentored tasks =&lt;br /&gt;
&lt;br /&gt;
== H.264 Multiview Video Coding (MVC) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Mmspg-epfl-ch-double-camera.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist and the codec is used on Bluray media, but FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the [http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ffmpeg-devel mailing list].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Create MVC decoder and add a test for the FFmpeg Automated Testing Environment (FATE).&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Perform work that demonstrates understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Animated Portable Network Graphics (APNG) ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Animated PNG example bouncing beach ball.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Pbm|Paul B Mahol]]&lt;br /&gt;
&lt;br /&gt;
== Misc Libavfilter extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Lavfi-gsoc-filter-vintage-illustration.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filters&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' [[User:Stefanosa|Stefano Sabatini]].&lt;br /&gt;
&lt;br /&gt;
'''Backup mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Subtitles ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg has been working on improving its subtitles support recently, notably by adding the support for various text subtitles and various hardsubbing (burning the subtitles onto the video) facilities. While the theme may sound relatively simple compared to audio/video signal processing, the project carry an historical burden not easy to deal with, and introduces various issues very specific to its sparse form.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Subtitles-sensei.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Add support for new subtitles formats. Example: a demuxer for .SUP files, just like VobSub but for Blu-Ray, or a VobSub muxer.&lt;br /&gt;
* Improve text subtitles decoders. Typically, this can be supporting advanced markup features in SAMI or WebVTT.&lt;br /&gt;
* Update the API to get rid of the clumsy internal text representation of styles&lt;br /&gt;
* Proper integration of subtitles into libavfilter. This is the ultimate goal, as it will notably allow a complete subtitles rendering for applications such as ffplay.&lt;br /&gt;
* BONUS: if everything goes well, the student will be allowed to add basic support for teletext&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background in fansubbing area (notably ASS experience) would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write one subtitles demuxer and decoder (for example support for Spruce subtitles format). This is in order to make sure the subtitles chain is understood.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Clément Bœsch (''ubitux'' on IRC).&lt;br /&gt;
&lt;br /&gt;
== Postproc optimizations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:PostProc.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains libpostproc, which is used to postprocess 8x8 DCT-MC based video and images (jpeg, mpeg-1/2/4, H263 amongth others). The code though has been written a long time ago and its SIMD optimizations need to be updated to what modern CPUs support (AVX2 and SSE2+).&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* Convert all gcc inline asm in libpostproc to YASM.&lt;br /&gt;
* Restructure the code so that it works with block sizes compatible with modern SIMD.&lt;br /&gt;
* Add Integer SSE2 and AVX2 optimizations for each existing MMX/MMX2/3dnow optimization in libpostproc.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, good x86 assembly coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' convert 1 or 2 MMX2 functions to SSE2 and AVX2.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Michael Niedermayer (''michaelni'' on IRC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== glplay ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Opengl_logo.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' TBD Backup: Reimar Döffinger&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bayer RGB colorspaces ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:350px-Bayer_pattern_on_sensor.svg.png ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Several image and video format store pixels using Bayer-pattern colorspaces. Supporting these format would broaden FFmepg's applicability to RAW still and video photography processing. Tasks:&lt;br /&gt;
&lt;br /&gt;
'''Expected Results:'''&lt;br /&gt;
* Rebase existing patches&lt;br /&gt;
* Implement bayer transformations in libswscale (plain C)&lt;br /&gt;
* Add bayer formats to the libavutil pixfmt enumeration routines&lt;br /&gt;
* SIMD optimizations of the libswscale transformations&lt;br /&gt;
* Complete PhotoCINE demuxer to support Bayer format; (or another format of your choosing)&lt;br /&gt;
&lt;br /&gt;
Optional goodies:&lt;br /&gt;
* Extend TIFF decoder to support DNG-Bayer format&lt;br /&gt;
* Support a popular proprietary camera format (many to choose from; see dcraw project)&lt;br /&gt;
&lt;br /&gt;
'''Qualification task''': TBD&lt;br /&gt;
&lt;br /&gt;
'''Mentor''': Peter Ross&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MPEG-4 ALS encoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;http://upload.wikimedia.org/wikipedia/commons/e/e9/ATunes.png&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[http://commons.wikimedia.org/wiki/File%3AATunes.png]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' &lt;br /&gt;
A MPEG-4 ALS decoder was implemented several years ago but an encoder is still missing in the official codebase. A rudimentary encoder has already been written and is available on [https://github.com/justinruggles/FFmpeg-alsenc.git github]. For this task, that encoder is first to be updated to fit into the current codebase of FFmpeg and to be tested for conformance using the [http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/#230252 reference codec and specifications]. Second, the encoder is to be brought through the usual reviewing process to hit the codebase at the end of the project.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' &lt;br /&gt;
&lt;br /&gt;
Mandatory objectives&lt;br /&gt;
&lt;br /&gt;
* Update the existing encoder to fit into the current codebase.&lt;br /&gt;
* Ensure conformance of the encoder by verifying using the reference codec and generate a test case for FATE.&lt;br /&gt;
* Push the encoder into the codebase after iterating through the review process on the developing mailing list.&lt;br /&gt;
&lt;br /&gt;
Optional goodies&lt;br /&gt;
&lt;br /&gt;
* Ensure the FFmpeg decoder processes all generated files without warnings.&lt;br /&gt;
* Enhance the rudimentary feature set of the encoder.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. A certain interest in audio coding and/or knowledge about the FFmpeg codebase could be beneficial.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' Add floating point support to MPEG-4 ALS decoder&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Paul B Mahol (''durandal_1707'' on irc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unmentored tasks =&lt;br /&gt;
&lt;br /&gt;
== AAC ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
== DTS / DCA ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TrueHD encoder ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
== Opus decoder ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;[[Image:Opus.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== HEVC / H.265 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
== VC-1 interlaced ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
== JPEG 2000 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatleft&amp;quot;&amp;gt;[[Image:Jpeg2000.jpg]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VP7 ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14367</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14367"/>
		<updated>2013-02-25T09:46:07Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
== Example Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
= GSoC task proposal ideas =&lt;br /&gt;
&lt;br /&gt;
== Audio codecs ==&lt;br /&gt;
&lt;br /&gt;
=== AAC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
=== DTS / DCA ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
=== TrueHD encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== Video codecs ==&lt;br /&gt;
&lt;br /&gt;
=== GotoMeeting Decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The [[GoToMeeting_Codec]] has been figured out and we need a decoder for it. We don't have samples for G2M1 so this decoder will focus on G2M2, G2M3 and G2M4 versions.&lt;br /&gt;
&lt;br /&gt;
=== HEVC / H265 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
=== H264 MVC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
=== VC-1 interlaced ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
=== Animated Portable Network Graphics (APNG) ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
'''Qualification Task:''' Implement format autodetection for imagepipe &amp;amp; image demuxer&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue (for example from the bug tracker) as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
=== VP7 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== glplay ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Misc Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filter&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14364</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14364"/>
		<updated>2013-02-23T13:36:32Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
== Example Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
= GSoC task proposal ideas =&lt;br /&gt;
&lt;br /&gt;
== Audio codecs ==&lt;br /&gt;
&lt;br /&gt;
=== AAC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
=== DTS / DCA ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
=== TrueHD encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== Video codecs ==&lt;br /&gt;
&lt;br /&gt;
=== GotoMeeting Decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The [[GoToMeeting_Codec]] has been figured out and we need a decoder for it. We don't have samples for G2M1 so this decoder will focus on G2M2, G2M3 and G2M4 versions.&lt;br /&gt;
&lt;br /&gt;
=== HEVC / H265 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
=== H264 MVC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
=== VC-1 interlaced ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
=== Animated Portable Network Graphics (APNG) ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing:&lt;br /&gt;
*** PNG images are not misdetected as APNG animations&lt;br /&gt;
*** APNG animations are not misdetected as PNG images&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
=== VP7 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== glplay ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Misc Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filter&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14363</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14363"/>
		<updated>2013-02-23T13:33:03Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
== Example Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
= GSoC task proposal ideas =&lt;br /&gt;
&lt;br /&gt;
== Audio codecs ==&lt;br /&gt;
&lt;br /&gt;
=== AAC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
=== DTS / DCA ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
=== TrueHD encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== Video codecs ==&lt;br /&gt;
&lt;br /&gt;
=== GotoMeeting Decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The [[GoToMeeting_Codec]] has been figured out and we need a decoder for it. We don't have samples for G2M1 so this decoder will focus on G2M2, G2M3 and G2M4 versions.&lt;br /&gt;
&lt;br /&gt;
=== HEVC / H265 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
=== H264 MVC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
=== VC-1 interlaced ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
=== Animated Portable Network Graphics (APNG) ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so no invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** use existing PNG encoder code (write encoder in same file)&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
** add test for FATE&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
=== VP7 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although a specification exists. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== glplay ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Misc Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filter&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14359</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14359"/>
		<updated>2013-02-22T18:57:52Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* DTS / DCA */  please cehoyos refrain from editing something you do not know anything about, DTS-HD is just fancy name for couple of DTS extensionsm, there is already suport for some DTS-HD features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
== Example Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
= GSoC task proposal ideas =&lt;br /&gt;
&lt;br /&gt;
== Audio codecs ==&lt;br /&gt;
&lt;br /&gt;
=== AAC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
=== DTS / DCA ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
=== TrueHD encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== Video codecs ==&lt;br /&gt;
&lt;br /&gt;
=== GotoMeeting Decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The [[GoToMeeting_Codec]] has been figured out and we need a decoder for it. We don't have samples for G2M1 so this decoder will focus on G2M2, G2M3 and G2M4 versions.&lt;br /&gt;
&lt;br /&gt;
=== HEVC / H265 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
=== H264 MVC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
=== VC-1 interlaced ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
=== Animated Portable Network Graphics (APNG) ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
=== VP7 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== glplay ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Misc Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library. It currently supports audio and video filtering and generation support. This work may focus on porting, fixing, extending, or writing new audio and video filters from scratch. &lt;br /&gt;
&lt;br /&gt;
Candidate filters for porting may be the remaining MPlayer filters currently supported through the mp wrapper, libaf MPlayer filters, and filters from other frameworks (e.g. mjpegtools, transcode, avisynth, virtualdub, etc.). In case of mp ports, the student should verify that the new filter produces the same output and is not slower.&lt;br /&gt;
&lt;br /&gt;
Some ideas for more filters:&lt;br /&gt;
* a frequency filtering domain filter relying on the FFT utils in libavcodec&lt;br /&gt;
* a controller filter which allows to send commands to other filters (e.g. to adjust volume, contrast, etc.), e.g. like the sendcmd filter but through an interactive GUI&lt;br /&gt;
* a lua scripting filter, which allows to implement filtering custom logic in lua&lt;br /&gt;
&lt;br /&gt;
For more ideas check:&lt;br /&gt;
[https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design when required.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Qualification task:''' write or port one or more filter&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14351</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14351"/>
		<updated>2013-02-22T12:01:27Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
= Proposing Ideas =&lt;br /&gt;
&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
== Example Title ==&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
= GSoC Ideas =&lt;br /&gt;
&lt;br /&gt;
== Audio codecs ==&lt;br /&gt;
&lt;br /&gt;
=== AAC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
=== DTS / DCA ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
=== TrueHD encoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
== Video codecs ==&lt;br /&gt;
&lt;br /&gt;
=== HEVC / H265 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
=== H264 MVC ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
=== VC-1 interlaced ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
=== Animated Portable Network Graphics (APNG) ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
=== VP7 ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14350</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14350"/>
		<updated>2013-02-22T11:42:14Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== Animated Portable Network Graphics (APNG) ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14349</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14349"/>
		<updated>2013-02-22T11:38:36Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== Animated Portable Network Graphics (APNG) ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing (zzuf)&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14348</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14348"/>
		<updated>2013-02-22T11:36:59Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== Animated Portable Network Graphics (APNG) ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results:'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing atacks (zzuf)&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:Pbm|Paul B Mahol]]'''&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems.&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14347</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14347"/>
		<updated>2013-02-22T11:30:50Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Animated Portable Network Graphics (APNG) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== Animated Portable Network Graphics (APNG) ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
&lt;br /&gt;
'''Specification:''' https://wiki.mozilla.org/APNG_Specification&lt;br /&gt;
&lt;br /&gt;
'''Expected results'''&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing atacks (zzuf)&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14346</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14346"/>
		<updated>2013-02-22T11:25:35Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* animated png */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== Animated Portable Network Graphics (APNG) ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
* APNG demuxer&lt;br /&gt;
** implement robust probing, so that normal PNG images are not misdetected as APNG animations&lt;br /&gt;
** splits stream into sensible packets (so they can be easily reused in APNG muxer)&lt;br /&gt;
** survives fuzzing atacks (zzuf)&lt;br /&gt;
** test code under valgrind so not invalid reads/writes happen&lt;br /&gt;
** add FATE coverage, coverage should be at least 70%&lt;br /&gt;
&lt;br /&gt;
* APNG decoder&lt;br /&gt;
** use existing PNG decoder code (write decoder in same file)&lt;br /&gt;
** implement parsing of all APNG chunks (acTL, fcTL, fdAT)&lt;br /&gt;
** error handling&lt;br /&gt;
** survives fuzzing (zzuf) &lt;br /&gt;
** add test for FATE, coverage should be at least 75%&lt;br /&gt;
** CRC checksum validation&lt;br /&gt;
&lt;br /&gt;
* APNG muxer &amp;amp;&amp;amp; APNG encoder&lt;br /&gt;
** write compliant files, make sure they play correctly in major web browsers that support APNG&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14345</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14345"/>
		<updated>2013-02-22T10:49:50Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* DTS / DCA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder improvements: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== animated png ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
* animated png decoder&lt;br /&gt;
* animated png encoder&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14344</id>
		<title>FFmpeg Summer of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_of_Code_2013&amp;diff=14344"/>
		<updated>2013-02-22T10:49:06Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* DTS / DCA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg Summer of Code Ideas List&lt;br /&gt;
&lt;br /&gt;
== Proposing Ideas ==&lt;br /&gt;
If you have a project idea please contact a developer first at the #ffmpeg-devel IRC channel on Freenode or via the [http://ffmpeg.org/contact.html ffmpeg-devel mailing list]. A good source of ideas is the [https://ffmpeg.org/trac/ffmpeg/ FFmpeg bug tracker] and [[FFmpeg_Summer_of_Code_2012|FFmpeg Summer of Code 2012 Ideas List]].&lt;br /&gt;
&lt;br /&gt;
When adding an idea follow this template for consistency:&lt;br /&gt;
&lt;br /&gt;
=== Example Title ===&lt;br /&gt;
'''Description:''' A few sentences or a short paragraph describing the task.&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Bulleted list or paragraph describing what the student is expected to achieve.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' Skills or knowledge required by student.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' List mentor and backup mentor if there is one and contact info such as IRC name or email address.&lt;br /&gt;
&lt;br /&gt;
== GSoC Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Audio codecs ===&lt;br /&gt;
&lt;br /&gt;
==== AAC ====&lt;br /&gt;
'''Description:''' FFmpeg contains an AAC encoder and decoder, both of them can be improved in various ways. This is enough work for more than one GSoC project, so one part of your submission would be to define on which task exactly you want to work.&lt;br /&gt;
* AAC LD decoder&lt;br /&gt;
* AAC BSAC decoder: This has already been started, but the existing decoder still fails on many samples&lt;br /&gt;
* AAC SSR decoder&lt;br /&gt;
* AAC 960/120 MDCT window&lt;br /&gt;
* AAC multi-channel encoding&lt;br /&gt;
See also the FFmpeg bug tracker for AAC issues, fixing one of them or rebasing the existing incomplete BSAC decoder for current git head fixing one or more existing bugs are possible qualification tasks.&lt;br /&gt;
&lt;br /&gt;
==== DTS / DCA ====&lt;br /&gt;
'''Description:''' FFmpeg contains a DTS decoder and an experimental DTS encoder. Both are missing some features.&lt;br /&gt;
* DTS-HD decoder: A possible qualification task is to implement ticket #1920&lt;br /&gt;
** Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
** Add support for X96 extension (96khz)&lt;br /&gt;
** Add support for XLL extension (lossless)&lt;br /&gt;
** Add support for pure DTS-HD streams that do not contain a DTS core&lt;br /&gt;
** Add support for multiple assets&lt;br /&gt;
** Add support for LBR extension&lt;br /&gt;
* DTS encoder improvements&lt;br /&gt;
&lt;br /&gt;
==== MPEG-4 ALS encoder ====&lt;br /&gt;
'''Description:''' An ALS decoder was implemented several years ago, an encoder is still missing.&lt;br /&gt;
&lt;br /&gt;
==== TrueHD encoder ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support encoding to one of the lossless audio formats used on Bluray discs. This task consists of implementing a TrueHD encoder that allows to losslessly encode audio to play it on hardware devices capable of TrueHD decoding.&lt;br /&gt;
&lt;br /&gt;
==== Opus decoder ====&lt;br /&gt;
'''Description:''' Opus decoding is currently supported through the external libopus library&lt;br /&gt;
* Write a native decoder, continue working on the existing unfinished implementation&lt;br /&gt;
A possible qualification task is to port the existing incomplete decoder to current git head and improve it to show that you are capable of working on this task.&lt;br /&gt;
&lt;br /&gt;
=== Video codecs ===&lt;br /&gt;
&lt;br /&gt;
==== HEVC / H265 ====&lt;br /&gt;
'''Description:''' The specification was finished, FFmpeg needs a decoder for this new format.&lt;br /&gt;
* Write a basic decoder supporting I, P, and, only if time permits, B slices.&lt;br /&gt;
* It does not need to be ASM/SIMD optimized but its high level structure must permit such optimizations to be easily added later.&lt;br /&gt;
As a qualification task you need to implement parsing headers and maybe a bit beyond that to demonstrate that you are qualified and understand the HEVC specification. This project requires a solid understanding of video coding and C, it's not something for the average SOC student.&lt;br /&gt;
&lt;br /&gt;
==== H264 MVC ====&lt;br /&gt;
'''Description:''' MVC samples exist, the codec is used on Bluray media, FFmpeg is missing a decoder. Since this task also consists of some changes in the current architecture, it is especially important that this task is discussed on the ffmpeg-devel mailing list.&lt;br /&gt;
As qualification you have to do some work that demonstrates your understanding of MVC and that is a subpart of the whole MVC implementation.&lt;br /&gt;
&lt;br /&gt;
==== VC-1 interlaced ====&lt;br /&gt;
'''Description:''' The FFmpeg VC-1 decoder has improved over the years, but many samples are still not decoded bit-exact and real-world interlaced streams typically show artefacts.&lt;br /&gt;
* Implement missing interlace features&lt;br /&gt;
* Make more reference samples bit-exact&lt;br /&gt;
As a qualification task, you should try to find a bug in the current decoder implementation and fix it.&lt;br /&gt;
&lt;br /&gt;
==== animated png ====&lt;br /&gt;
'''Description:''' FFmpeg currently does not support Animated PNGs.&lt;br /&gt;
* animated png decoder&lt;br /&gt;
* animated png encoder&lt;br /&gt;
&lt;br /&gt;
==== JPEG 2000 ====&lt;br /&gt;
'''Description:''' FFmpeg contains an experimental native JPEG 2000 encoder and decoder. Both are missing many features, see also the FFmpeg bug tracker for some unsupported samples.&lt;br /&gt;
Work on an issue as a qualification task to show that you are capable of improving the codec implementation.&lt;br /&gt;
&lt;br /&gt;
==== VP7 ====&lt;br /&gt;
'''Description:''' Not many VP7 samples are in the wild, but no open-source decoder exists although Google has released a specification. Write a decoder that reuses as much as possible of existing FFmpeg code, it is likely that functions of the existing decoders for On2-based formats will be useful.&lt;br /&gt;
&lt;br /&gt;
=== FFplay ===&lt;br /&gt;
&lt;br /&gt;
==== glplay ====&lt;br /&gt;
'''Description:''' The SDL library that is used by FFplay has some deficiencies, adding OpenGL output to FFplay should allow for better performance (and less bugs at least for some hardware / driver combinations). This could be a new application (glplay), but it is probably simpler to extend ffplay to use OpenGL. You can use code from MPlayer's OpenGL vo module which may be relicensed under the LGPL.&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter extension ===&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It currently supports audio and video filtering and generation support.&lt;br /&gt;
&lt;br /&gt;
* This work may focus on porting MPlayer filters which are currently integrated through the mp wrapper.&lt;br /&gt;
* For each port the student should verify that the new filter produces the same output and checking that the new integrated filter is not slower.&lt;br /&gt;
* For more ideas read the [[FFmpeg_/_Libav_Summer_Of_Code_2011#Libavfilter_video_work|GSoC 2011 libavfilter video proposal]] and [https://ffmpeg.org/trac/ffmpeg/query?status=new&amp;amp;status=open&amp;amp;status=reopened&amp;amp;component=avfilter&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=component&amp;amp;col=version&amp;amp;order=priority trac libavfilter tickets].&lt;br /&gt;
&lt;br /&gt;
'''Expected results:''' Write or port audio and video filters and possibly fix/extend libavfilter API and design.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' C coding skills, familiarity with git/source code control systems. Some background on DSP and image/sound processing techniques would be a bonus but is not strictly required.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Stefano Sabatini (''saste'' on IRC).&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14299</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14299"/>
		<updated>2013-01-25T14:27:20Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* vcr1 encoder */  questionable usefulness, also template have been removed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [https://ffmpeg.org/trac/ffmpeg/report/1 FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://ffmpeg.org/trac/ffmpeg/ticket/134&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14298</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14298"/>
		<updated>2013-01-25T14:25:01Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [https://ffmpeg.org/trac/ffmpeg/report/1 FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://ffmpeg.org/trac/ffmpeg/ticket/134&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
=== vcr1 encoder ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html vcr1 encoder is disabled, and won't compile if enabled.  Michael would prefer to keep it around, and have someone grow it into full encoder.&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14297</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14297"/>
		<updated>2013-01-25T14:24:06Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Programming Tasks */  add animated gif encoder back&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [https://ffmpeg.org/trac/ffmpeg/report/1 FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://ffmpeg.org/trac/ffmpeg/ticket/134&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
=== vcr1 encoder ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html vcr1 encoder is disabled, and won't compile if enabled.  Michael would prefer to keep it around, and have someone grow it into full encoder.&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14296</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14296"/>
		<updated>2013-01-25T14:21:34Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Enhanced Variable Rate Codec decoder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [https://ffmpeg.org/trac/ffmpeg/report/1 FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://ffmpeg.org/trac/ffmpeg/ticket/134&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
=== vcr1 encoder ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html vcr1 encoder is disabled, and won't compile if enabled.  Michael would prefer to keep it around, and have someone grow it into full encoder.&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Vivo&amp;diff=14259</id>
		<title>Vivo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Vivo&amp;diff=14259"/>
		<updated>2012-12-06T11:19:59Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: viv&lt;br /&gt;
* Company: [[Vivo Software]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/vivo/&lt;br /&gt;
&lt;br /&gt;
Proprietary web audio/video streaming format. Uses H.263 video and G.723 [[ADPCM]] audio (not the G.723.1 speech codec).&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;br /&gt;
&lt;br /&gt;
Vivo files consist of a sequence of packets.&lt;br /&gt;
&lt;br /&gt;
Each packet starts with 4 bit packet type (see below).&lt;br /&gt;
Then follows a 4 bit &amp;quot;sequence number&amp;quot;. Packets with same packet number probably must be combined?&lt;br /&gt;
If the packet is not fixed-size type, the packet length follows and after that the packet data.&lt;br /&gt;
&lt;br /&gt;
Known packet types are:&lt;br /&gt;
 0: header&lt;br /&gt;
 1: video (fixed length 128 unless prefixed)&lt;br /&gt;
 2: video&lt;br /&gt;
 3: audio (fixed length 40 unless prefixed)&lt;br /&gt;
 4: audio (fixed length 24 unless prefixed)&lt;br /&gt;
Each packet may be prefixed with 0x82 in which case the packet types marked as fixed length above have a packet length as well.&lt;br /&gt;
&lt;br /&gt;
Packet length is probably coded in the way that the following code would decode:&lt;br /&gt;
 len = 0&lt;br /&gt;
 do&lt;br /&gt;
   c = get_byte();&lt;br /&gt;
   len = (len &amp;lt;&amp;lt; 7) + (c &amp;amp; 0x7f)&lt;br /&gt;
 while c &amp;amp; 0x80&lt;br /&gt;
&lt;br /&gt;
But this is not sure since only header packets seem to be longer than 127 bytes?&lt;br /&gt;
&lt;br /&gt;
Header packets are simply text with CRLF line-breaks, defining one &amp;quot;variable&amp;quot; per line in the form Name:Value&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=14258</id>
		<title>Dialogic IMA ADPCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Dialogic_IMA_ADPCM&amp;diff=14258"/>
		<updated>2012-12-06T11:19:18Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Microsoft Audio ID: 0x0010 &lt;br /&gt;
* Extension: vox, oki&lt;br /&gt;
* Company: [[Dialogic]], Oki Electric Industry&lt;br /&gt;
* Official Specification: http://multimedia.cx/mirror/dialogic-adpcm.pdf&lt;br /&gt;
&lt;br /&gt;
Dialogic ADPCM is a variation of the standard [[IMA ADPCM]] algorithm that is optimized for monaural voice data. The encoder operates on 12-bit input samples and outputs 4-bit encoding for each sample. This yields a 3:1 compression ratio.&lt;br /&gt;
&lt;br /&gt;
Dialogic ADPCM data is transported in raw files bearing the extension VOX. For each byte in the file, the high nibble (bits 7-4) is decoded first, then the low nibble.&lt;br /&gt;
&lt;br /&gt;
The decoding algorithm is the same as the standard IMA ADPCM algorithm with the following modifications:&lt;br /&gt;
&lt;br /&gt;
* A different, smaller step table is used (refer to Appendix A for the table). The table contains 49 values ranging from indices 0..48.&lt;br /&gt;
* The predictor is always initialized to 0 at the start of decoding.&lt;br /&gt;
* The index is always initialized to 16 at the start of decoding.&lt;br /&gt;
* When the index is modified by the ADPCM delta, it should be clamped within the 0..48 range, rather than 0..88.&lt;br /&gt;
* When the diff is applied to the predictor, it should be clamped within a signed 12-bit range (-2048..2047) rather than a signed 16-bit range.&lt;br /&gt;
* The output samples are 12 bits in resolution and should be scaled as necessary.&lt;br /&gt;
&lt;br /&gt;
== Modified Step Table ==&lt;br /&gt;
&lt;br /&gt;
 int dialogic_ima_step[49] = { &lt;br /&gt;
   16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, &lt;br /&gt;
   50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143,&lt;br /&gt;
   157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, &lt;br /&gt;
   494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:ADPCM Audio Codecs]]&lt;br /&gt;
[[Category:IMA ADPCM Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Adobe_Filmstrip&amp;diff=14257</id>
		<title>Adobe Filmstrip</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Adobe_Filmstrip&amp;diff=14257"/>
		<updated>2012-12-06T11:18:07Z</updated>

		<summary type="html">&lt;p&gt;Pbm: it is in ffmpeg long ago&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Extension: flm&lt;br /&gt;
*Company: [[Adobe]]&lt;br /&gt;
*Specification and decoder with source code: http://www.compuphase.com/filmstrp.htm&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14254</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14254"/>
		<updated>2012-12-05T01:17:44Z</updated>

		<summary type="html">&lt;p&gt;Pbm: pvf is implemented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [http://ffmpeg.org/trac/ffmpeg FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Generic Colorspace system ===&lt;br /&gt;
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)&lt;br /&gt;
and generic simple conversion to other colorspaces.&lt;br /&gt;
&lt;br /&gt;
''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)&lt;br /&gt;
&lt;br /&gt;
''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 ?&lt;br /&gt;
--[[User:Bcoudurier|Baptiste Coudurier]] 00:30, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''* Adding the [[YCoCg]] colorspace (with different sized planes) for RGB sourced pictures would be nice too. [[User:Elte|Elte]] 07:15, 16 March 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder and Decoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://roundup.libav.org/issue267&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== merge all fixed point decoders back into libavcodec ===&lt;br /&gt;
http://git.rockbox.org/?p=rockbox.git;a=tree;f=lib/rbcodec/codecs Rockbox's fixed-point decoders are based on decoders from libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/317&lt;br /&gt;
&lt;br /&gt;
=== vcr1 encoder ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html vcr1 encoder is disabled, and won't compile if enabled.  Michael would prefer to keep it around, and have someone grow it into full encoder.&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
*any samples?&lt;br /&gt;
&lt;br /&gt;
=== [[Enhanced Variable Rate Codec]] decoder ===&lt;br /&gt;
samples and specs available.&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ce&amp;diff=14253</id>
		<title>User:Ce</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ce&amp;diff=14253"/>
		<updated>2012-12-04T17:00:40Z</updated>

		<summary type="html">&lt;p&gt;Pbm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carl Eugen Hoyos works on [[MPlayer]] and [[FFmpeg]].&lt;br /&gt;
&lt;br /&gt;
PAL8 output DOES NOT YET exist for swscale.&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=XMV&amp;diff=14232</id>
		<title>XMV</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=XMV&amp;diff=14232"/>
		<updated>2012-11-28T21:39:51Z</updated>

		<summary type="html">&lt;p&gt;Pbm: supported by ffmpeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: xmv&lt;br /&gt;
* Company: [[Microsoft]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/game-formats/xmv/&lt;br /&gt;
&lt;br /&gt;
XMV is the audio/video container format used on the [[Microsoft Xbox]] console. It is reportedly similar to [[ASF]] and typically contains video at 640x480 29.97, and CBR audio at 128k.&lt;br /&gt;
&lt;br /&gt;
Working legal source code for a decoder/demuxer can be found here but it is copyrighted and without open source licence: http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1097094&amp;amp;group_id=53761&amp;amp;atid=471491 also look at http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/25207/focus=25224 and http://www.maxconsole.net/?mode=news&amp;amp;newsid=411 for hints/tips&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
All multi-byte numbers of little endian.&lt;br /&gt;
&lt;br /&gt;
 bytes 0-11    unknown&lt;br /&gt;
 bytes 12-15   'xobX' ('Xbox' spelled backwards)&lt;br /&gt;
 bytes 16-19   unknown&lt;br /&gt;
 bytes 20-23   video width in pixels&lt;br /&gt;
 bytes 24-27   video height in pixels&lt;br /&gt;
 bytes 28-37   unknown&lt;br /&gt;
 bytes 38-39   number of audio channels&lt;br /&gt;
 bytes 40-43   audio sample rate&lt;br /&gt;
 bytes 44..    unknown&lt;br /&gt;
&lt;br /&gt;
== Games Using XMV ==&lt;br /&gt;
This is a list of games (usually Xbox games) known to use the XMV format.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mobygames.com/game/xbox/lego-star-wars-ii-the-original-trilogy Lego Star Wars 2: The Original Trilogy (Xbox)]&lt;br /&gt;
* [http://www.mobygames.com/game/xbox/monopoly-party Monopoly Party (Xbox)]&lt;br /&gt;
* [http://www.mobygames.com/game/xbox/thrillville Thrillville (Xbox)] -- as .fmv files&lt;br /&gt;
* [http://www.mobygames.com/game/xbox/xiaolin-showdown Xiaolin Showdown (Xbox)] -- as .pss files&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;br /&gt;
[[Category:Game Formats]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14223</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=14223"/>
		<updated>2012-11-03T17:34:09Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* write fate breakage notification bot */ done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
The FFmpeg project always needs people to do the following tasks:&lt;br /&gt;
#Review bugs on the [http://ffmpeg.org/trac/ffmpeg FFmpeg bug tracker]&lt;br /&gt;
##verifying bugreports are complete with 'ffmpeg -i' output&lt;br /&gt;
##making sure samples are mirrored/available&lt;br /&gt;
##verifying bugs against current git master&lt;br /&gt;
#Review patches posted to ffmpeg-devel mailing list&lt;br /&gt;
##also test to make sure they compile against git master and dont break 'make fate' / compilation&lt;br /&gt;
#Review documentation and update examples in documentation.&lt;br /&gt;
##updating and adding more information to the howto and api documents&lt;br /&gt;
##make a guide how to embed ffmpeg into various programming languages, be it c++, java, mono, c#, etc&lt;br /&gt;
&lt;br /&gt;
== Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
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 the TS muxer.&lt;br /&gt;
&lt;br /&gt;
=== Add code to validate get_buffer usage of decoders ===&lt;br /&gt;
Change the default_get_buffer etc. functions to enforce the minimum guarantees the decoder requests.&lt;br /&gt;
E.g. if a decoder does not set FF_BUFFER_HINTS_READABLE, return a buffer without read permissions (using e.g. mprotect).&lt;br /&gt;
If the decoder does not use reget_buffer, always return a buffer initialized with random data.&lt;br /&gt;
If the decoder does not set FF_BUFFER_HINTS_PRESERVE, always destroy the buffer contents as soon as possible.&lt;br /&gt;
Make reget_buffer always fail if FF_BUFFER_HINTS_REUSABLE was not used.&lt;br /&gt;
Probably more things that could be done.&lt;br /&gt;
&lt;br /&gt;
=== Generic Colorspace system ===&lt;br /&gt;
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)&lt;br /&gt;
and generic simple conversion to other colorspaces.&lt;br /&gt;
&lt;br /&gt;
''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)&lt;br /&gt;
&lt;br /&gt;
''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 ?&lt;br /&gt;
--[[User:Bcoudurier|Baptiste Coudurier]] 00:30, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''* Adding the [[YCoCg]] colorspace (with different sized planes) for RGB sourced pictures would be nice too. [[User:Elte|Elte]] 07:15, 16 March 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder and Decoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
=== Implement a Vivo demuxer ===&lt;br /&gt;
Implement a 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].&lt;br /&gt;
&lt;br /&gt;
This task corresponds to ticket 132: https://avcodec.org/trac/ffmpeg/ticket/132&lt;br /&gt;
&lt;br /&gt;
''I am ready to help out with understanding MPlayer's demuxer, esp. MPlayer API stuff if necessary.&lt;br /&gt;
--[[User:Reimar|Reimar]] 15:46, 1 March 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo --&lt;br /&gt;
# VIVO -- ''Daniel Verkamp has a patch for this''&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG -- ''Paul B Mahol is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://roundup.libav.org/issue267&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a 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 fairly easy by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.multimedia.cx/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/89902/focus=90433&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the 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.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== Add wma fixed point decoder back into libavcodec ===&lt;br /&gt;
http://svn.rockbox.org/viewvc.cgi/trunk/apps/codecs/libwma/&lt;br /&gt;
Rockbox's fixed-point WMA decoder was adapted from the decoder in libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== VC1 timestamps in m2ts ===&lt;br /&gt;
&lt;br /&gt;
Codec copy of VC1 from m2ts currently doesn't work. Either extend the VC1 parser to output/fix timestamps, or fix the timestamps from m2ts demuxing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://roundup.ffmpeg.org/roundup/ffmpeg/issue741&lt;br /&gt;
&lt;br /&gt;
=== lavf-based concatenation tool ===&lt;br /&gt;
&lt;br /&gt;
It would be nice to have some libavformat-based tool that would extract frames from multiple files (possible different containers as well) and put them into single one.&lt;br /&gt;
&lt;br /&gt;
=== vcr1 encoder ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html vcr1 encoder is disabled, and won't compile if enabled.  Michael would prefer to keep it around, and have someone grow it into full encoder.&lt;br /&gt;
&lt;br /&gt;
=== implement some colorspace fourcc/codecs ===&lt;br /&gt;
some colorspace formats were uploaded to http://samples.mplayerhq.hu/V-codecs/&lt;br /&gt;
including:&lt;br /&gt;
 a12v.avi is 4:2:2:4 10 Bit Interleaved&lt;br /&gt;
 auv2.avi is 4:2:2:4 8 Bit Interleaved&lt;br /&gt;
&lt;br /&gt;
it might decode with current pixfmts, a sample commit is 9853bbb21a19d540850de60d3e9cf7c6ef9da7dc&lt;br /&gt;
&lt;br /&gt;
a sample commit for adding new input formats to swscale is 4884b9e50d416f84e64bfaf546a03e490cb83a2f&lt;br /&gt;
 the hunks 3 and 5 you do not need, they are optional special converters&lt;br /&gt;
 also the change to isSupportedOut() you do not need&lt;br /&gt;
 above will add a new input format&lt;br /&gt;
&lt;br /&gt;
another example for adding an input format is a43fb6b37efa5b01f2c9bdc414570691229bcfab&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 Paris Audio File PAF&lt;br /&gt;
 IRCAM SF&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Portable Voice Format PVFSound&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== libswscale PAL8 output ===&lt;br /&gt;
&lt;br /&gt;
See the thread: &amp;quot;[RFC] libswscale palette output implementation&amp;quot;:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/101397&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== arithmetic decoding (and encoding) for mjpeg ===&lt;br /&gt;
Following marker codes are not supported by our mjpeg decoder:&lt;br /&gt;
DAC, SOF9, SOF10, SOF11, SOF13, SOF14 and SOF15.&lt;br /&gt;
&lt;br /&gt;
=== [[Enhanced Variable Rate Codec]] decoder ===&lt;br /&gt;
samples and specs available.&lt;br /&gt;
&lt;br /&gt;
=== adobe http f4f segmented fragmentation dynamic streaming format ===&lt;br /&gt;
sample streams on http://www.fox.com . command line instructions for creating such files: http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html . spec is available under adobe NDA. not to be confused with freely available F4V specification. open source php to convert f4f to flv: https://github.com/svnpenn/dotfiles/blob/master/etc/AdobeHDS.php&lt;br /&gt;
&lt;br /&gt;
=== get 3IV1 decoder working and benchmark ===&lt;br /&gt;
we have a decoder for 3IV1. its currently if 0'd in the mpeg4 decoder. your task is to test if it still builds and works, and fix it so that it does not slow down mpeg4 decoder if enabled. the end goal is to enable it by default.&lt;br /&gt;
&lt;br /&gt;
=== rewrite realmedia demuxer ===&lt;br /&gt;
our real media demuxer is very old code and could use a cleanup or rewrite. please get more details on what needs to be done before starting.&lt;br /&gt;
&lt;br /&gt;
=== rewrite asf demuxer ===&lt;br /&gt;
our windows media video (wmv) demuxer is very old code and could use a cleanup or rewrite. please get more details on what needs to be done before starting.&lt;br /&gt;
&lt;br /&gt;
== add support for very old rm files ==&lt;br /&gt;
there are a few samples that ffmpeg rm demuxer cannot handle.&lt;br /&gt;
http://ffmpeg.org/trac/ffmpeg/ticket/1557&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Demuxer for csf format and video codec ===&lt;br /&gt;
This is partially analyzed in http://ffmpeg.org/trac/ffmpeg/ticket/1060&lt;br /&gt;
&lt;br /&gt;
=== realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== pick a random binary codec from mplayer ===&lt;br /&gt;
[[MPlayer]] has over 100 binary codecs which have no opensource decoder. pick one, find a sample and try to reverse engineer it. note that some work has been done on some codecs, and its a good idea to ask on the mailing list before starting.&lt;br /&gt;
&lt;br /&gt;
==== screen capture codec ====&lt;br /&gt;
screen capture codecs are usually very simple and based on zlib.&lt;br /&gt;
&lt;br /&gt;
=== emblaze demuxer/decoder from java code ===&lt;br /&gt;
samples and java decoder: http://samples.mplayerhq.hu/internets/emblaze/&lt;br /&gt;
&lt;br /&gt;
=== audio sample suite ===&lt;br /&gt;
check and add support for these old audio formats: http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/index.html&lt;br /&gt;
&lt;br /&gt;
== Non-Programming Tasks ==&lt;br /&gt;
&lt;br /&gt;
=== Check Linux distributions for patches to ffmpeg ===&lt;br /&gt;
&lt;br /&gt;
check various distros like Fedora, Ubuntu, Debian, Mint, Arch, Suse etc for patches to ffmpeg. write down location of patches so it can be checked on an annual basis. if patches are found , report to ffmpeg-devel mailing list or bug trac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== improve layout and accessability of ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
test ffmpeg.org with various browsers, including screen readers and get it optimized and available to people with poor vision. check wording and general ease of use. for example putting large download links for users like vlc and firefox have.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restore and update compatability page on ffmpeg website ===&lt;br /&gt;
&lt;br /&gt;
we used to have a page that detailed how to create files for other software players and operating systems. restore this page from git history and update it for new devices and standardized codecs (h264 is the preferred codec now).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== contact large ffmpeg users for broken / unplayable samples ===&lt;br /&gt;
contact the largest users of ffmpeg, like youtube, facebook, archive.org, blip.tv and others and ask them for access to samples that do not decode correctly.&lt;br /&gt;
&lt;br /&gt;
=== review sample request error messages ===&lt;br /&gt;
ffmpeg has an av_log_ask_for_sample generic log message to ask the user for a sample when there is a problem. your task is to review ffmpeg decoders and demuxers (and possibly other inputs) and replace regular av_log messages requesting samples with it. example commit here: http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/036509.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write bluray and 3d howtos ===&lt;br /&gt;
write a document or wiki article or just link to some info on how to play + encode + rip bluray using ffmpeg/mplayer and the various bluray libs required. also a guide on how to use ffmpeg/mplayer/vlc to encode and play various 3D formats. including maybe some supported hardware screens/video cards w/ examples. includes updating this wiki page [[Blu Ray and HD-DVD Playback Status]]&lt;br /&gt;
[[How to make a 3d movie with ffmpeg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== write ipad/iphone/ios howto ===&lt;br /&gt;
write up some documentation on how to compile ffmpeg/ffplay/ffserver for iOS. exact tool versions, command lines, library requirements. both native compilation on the device and cross-compile using OS X. an android howto for various devices would be useful too.&lt;br /&gt;
&lt;br /&gt;
=== talk to downstream ===&lt;br /&gt;
talk to the big projects that use ffmpeg. see if there is anything ffmpeg can do to make things easier, be it api stabilization, backwards compatability, or turning private functions into public headers.&lt;br /&gt;
&lt;br /&gt;
examples include videolan, perian, mplayer, xbmc, ffdshow-tryouts, gstreamer.&lt;br /&gt;
&lt;br /&gt;
==== migrate bugs from other projects ====&lt;br /&gt;
many projects that use ffmpeg or libavcodec have bugs that are meant for ffmpeg. some of these projects dont have time to send them to us, so they rot on bugzillas.&lt;br /&gt;
&lt;br /&gt;
==== review any local patches ====&lt;br /&gt;
some projects may patch ffmpeg. collect these patches and compare them with other projects. see if there is anything we can do to reduce external patches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Canopus_Lossless&amp;diff=14202</id>
		<title>Canopus Lossless</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Canopus_Lossless&amp;diff=14202"/>
		<updated>2012-10-15T11:00:16Z</updated>

		<summary type="html">&lt;p&gt;Pbm: no more undiscovered, available in ffmpeg/libav&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: CLLC&lt;br /&gt;
* Company: Canopus&lt;br /&gt;
* Binary codec: http://www.thomson-canopus.jp/download/drivers/winvista/canopus_vcodec_pb_v303.exe&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Lossless Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=CDXL&amp;diff=14201</id>
		<title>CDXL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=CDXL&amp;diff=14201"/>
		<updated>2012-10-15T10:51:48Z</updated>

		<summary type="html">&lt;p&gt;Pbm: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Company: [[Commodore]]&lt;br /&gt;
* Patents: US 5,293,606, &amp;quot;Apparatus and method for transferring interleaved data objects in mass storage devices into separate destinations in memory&amp;quot;&lt;br /&gt;
* See also: [http://en.wikipedia.org/wiki/CDXL Wikipedia CDXL article], [http://web.archive.org/web/20030108081402/http://home.t-online.de/home/K_Andreas/CDXL.HTM German article with technical details] (archive.org)&lt;br /&gt;
* Amiga decoder with source code in Pascal: http://aminet.net/package/gfx/show/AnimFX&lt;br /&gt;
* Sample: http://samples.ffmpeg.org/game-formats/cdxl/, http://aminet.net/search?query=cdxl&lt;br /&gt;
&lt;br /&gt;
CDXL is an uncompressed video format created by Commodore for playback from CD-ROM on Amiga computers.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
CDXL files have no identifying markers or file headers; the file contains a number of frames, each prefixed by a frame header.&lt;br /&gt;
&lt;br /&gt;
  Frame header | Palette | Video | Audio&lt;br /&gt;
&lt;br /&gt;
All multi-byte integers are big endian.&lt;br /&gt;
&lt;br /&gt;
== Frame header ==&lt;br /&gt;
&lt;br /&gt;
  byte 0        File type&lt;br /&gt;
  byte 1        Info byte&lt;br /&gt;
    bits 0-2      Video encoding&lt;br /&gt;
    bit 3         Stereo flag&lt;br /&gt;
    bits 5-7      Plane arrangement&lt;br /&gt;
  bytes 2-5     Current chunk size&lt;br /&gt;
  bytes 6-9     Previous chunk size&lt;br /&gt;
  bytes 10-11   Reserved&lt;br /&gt;
  bytes 12-13   Current frame number (1 for first frame)&lt;br /&gt;
  bytes 14-15   Video width&lt;br /&gt;
  bytes 16-17   Video height&lt;br /&gt;
  bytes 18-19   Number of bit planes&lt;br /&gt;
  bytes 20-21   Palette size in bytes&lt;br /&gt;
  bytes 22-23   Sound size in bytes&lt;br /&gt;
  bytes 24-31   Reserved&lt;br /&gt;
&lt;br /&gt;
File type values (it is unknown what these mean):&lt;br /&gt;
&lt;br /&gt;
  0  Custom CDXL&lt;br /&gt;
  1  Standard CDXL&lt;br /&gt;
  2  Special CDXL&lt;br /&gt;
&lt;br /&gt;
Video encoding values:&lt;br /&gt;
&lt;br /&gt;
  0  RGB&lt;br /&gt;
  1  HAM&lt;br /&gt;
  2  YUV&lt;br /&gt;
  3  AVM &amp;amp; DCTV&lt;br /&gt;
&lt;br /&gt;
Plane arrangement values:&lt;br /&gt;
  0  Bit planar&lt;br /&gt;
  1  Byte planar&lt;br /&gt;
  2  Chunky&lt;br /&gt;
  4  Bit line&lt;br /&gt;
  6  Byte line&lt;br /&gt;
&lt;br /&gt;
== Palette ==&lt;br /&gt;
&lt;br /&gt;
The palette is encoded as 12-bit RGB values (4 bits each of R, G, and B) stored in 16-bit words with the upper 4 bits unused and set to 0.  The palette size field in the header is the number of bytes in the palette, i.e. double the number of entries in the palette.&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
&lt;br /&gt;
Audio is encoded in standard uncompressed signed 8-bit PCM.  The CDXL file itself does not seem to contain any sampling rate information, although related documents suggest 11025 Hz is standard.&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
Video is encoded differently based on the info byte in the header.&lt;br /&gt;
&lt;br /&gt;
RGB is encoded as an index into the palette for the current frame.&lt;br /&gt;
&lt;br /&gt;
HAM (Hold-And-Modify), an Amiga-specific video mode, is encoded as described on [http://en.wikipedia.org/wiki/Hold-And-Modify Wikipedia].&lt;br /&gt;
The sample at http://samples.mplayerhq.hu/game-formats/cdxl/amigaball.cdxl at least seems to use the HAM6 method, since it has 32 bytes&lt;br /&gt;
of palette (i.e. 16 palette entries).&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Incomplete Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=CDXL&amp;diff=14200</id>
		<title>CDXL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=CDXL&amp;diff=14200"/>
		<updated>2012-10-15T10:48:30Z</updated>

		<summary type="html">&lt;p&gt;Pbm: remove dead link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Company: [[Commodore]]&lt;br /&gt;
* Patents: US 5,293,606, &amp;quot;Apparatus and method for transferring interleaved data objects in mass storage devices into separate destinations in memory&amp;quot;&lt;br /&gt;
* See also: [http://en.wikipedia.org/wiki/CDXL Wikipedia CDXL article], [http://web.archive.org/web/20030108081402/http://home.t-online.de/home/K_Andreas/CDXL.HTM German article with technical details] (archive.org)&lt;br /&gt;
* Amiga decoder with source code in Pascal: http://aminet.net/package/gfx/show/AnimFX&lt;br /&gt;
* Sample: ftp://ffmpeg.org/MPlayer/samples/game-formats/cdxl/, http://aminet.net/search?query=cdxl&lt;br /&gt;
&lt;br /&gt;
CDXL is an uncompressed video format created by Commodore for playback from CD-ROM on Amiga computers.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
CDXL files have no identifying markers or file headers; the file contains a number of frames, each prefixed by a frame header.&lt;br /&gt;
&lt;br /&gt;
  Frame header | Palette | Video | Audio&lt;br /&gt;
&lt;br /&gt;
All multi-byte integers are big endian.&lt;br /&gt;
&lt;br /&gt;
== Frame header ==&lt;br /&gt;
&lt;br /&gt;
  byte 0        File type&lt;br /&gt;
  byte 1        Info byte&lt;br /&gt;
    bits 0-2      Video encoding&lt;br /&gt;
    bit 3         Stereo flag&lt;br /&gt;
    bits 5-7      Plane arrangement&lt;br /&gt;
  bytes 2-5     Current chunk size&lt;br /&gt;
  bytes 6-9     Previous chunk size&lt;br /&gt;
  bytes 10-11   Reserved&lt;br /&gt;
  bytes 12-13   Current frame number (1 for first frame)&lt;br /&gt;
  bytes 14-15   Video width&lt;br /&gt;
  bytes 16-17   Video height&lt;br /&gt;
  bytes 18-19   Number of bit planes&lt;br /&gt;
  bytes 20-21   Palette size in bytes&lt;br /&gt;
  bytes 22-23   Sound size in bytes&lt;br /&gt;
  bytes 24-31   Reserved&lt;br /&gt;
&lt;br /&gt;
File type values (it is unknown what these mean):&lt;br /&gt;
&lt;br /&gt;
  0  Custom CDXL&lt;br /&gt;
  1  Standard CDXL&lt;br /&gt;
  2  Special CDXL&lt;br /&gt;
&lt;br /&gt;
Video encoding values:&lt;br /&gt;
&lt;br /&gt;
  0  RGB&lt;br /&gt;
  1  HAM&lt;br /&gt;
  2  YUV&lt;br /&gt;
  3  AVM &amp;amp; DCTV&lt;br /&gt;
&lt;br /&gt;
Plane arrangement values:&lt;br /&gt;
  0  Bit planar&lt;br /&gt;
  1  Byte planar&lt;br /&gt;
  2  Chunky&lt;br /&gt;
  4  Bit line&lt;br /&gt;
  6  Byte line&lt;br /&gt;
&lt;br /&gt;
== Palette ==&lt;br /&gt;
&lt;br /&gt;
The palette is encoded as 12-bit RGB values (4 bits each of R, G, and B) stored in 16-bit words with the upper 4 bits unused and set to 0.  The palette size field in the header is the number of bytes in the palette, i.e. double the number of entries in the palette.&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
&lt;br /&gt;
Audio is encoded in standard uncompressed signed 8-bit PCM.  The CDXL file itself does not seem to contain any sampling rate information, although related documents suggest 11025 Hz is standard.&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
Video is encoded differently based on the info byte in the header.&lt;br /&gt;
&lt;br /&gt;
RGB is encoded as an index into the palette for the current frame.&lt;br /&gt;
&lt;br /&gt;
HAM (Hold-And-Modify), an Amiga-specific video mode, is encoded as described on [http://en.wikipedia.org/wiki/Hold-And-Modify Wikipedia].&lt;br /&gt;
The sample at http://samples.mplayerhq.hu/game-formats/cdxl/amigaball.cdxl at least seems to use the HAM6 method, since it has 32 bytes&lt;br /&gt;
of palette (i.e. 16 palette entries).&lt;br /&gt;
&lt;br /&gt;
[[Category:Container Formats]]&lt;br /&gt;
[[Category:Video Codecs]]&lt;br /&gt;
[[Category:Incomplete Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14199</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14199"/>
		<updated>2012-10-15T10:39:04Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Audio data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
==== Frame header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
 0-7 bits    padding&lt;br /&gt;
  24 bits    CRC&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
==== Frame data ====&lt;br /&gt;
&lt;br /&gt;
  X  bits    bitstream&lt;br /&gt;
 0-7 bits    padding&lt;br /&gt;
 24  bits    CRC&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14198</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14198"/>
		<updated>2012-10-15T10:37:23Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Audio data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
==== Frame header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
 0-7 bits    padding&lt;br /&gt;
  24 bits    CRC&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14197</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14197"/>
		<updated>2012-10-15T10:36:29Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Data header */ padding&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
 0-7 bits    padding&lt;br /&gt;
  24 bits    CRC&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14196</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14196"/>
		<updated>2012-10-15T10:33:48Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Data header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
  24 bits    CRC&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14195</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14195"/>
		<updated>2012-10-15T10:32:17Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Encoder info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14194</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14194"/>
		<updated>2012-10-15T10:29:23Z</updated>

		<summary type="html">&lt;p&gt;Pbm: fix name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's lossless Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
   frame size information (32 bits, see below)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14193</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14193"/>
		<updated>2012-10-15T10:27:02Z</updated>

		<summary type="html">&lt;p&gt;Pbm: update stale info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's verlustfreier Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. Last version is 2.2.0. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
   frame size information (32 bits, see below)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14192</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14192"/>
		<updated>2012-10-15T10:24:02Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Frame size information */  fix incorrect information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's verlustfreier Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. As of January 2006, the codec is at the 1.0 release stage. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
   frame size information (32 bits, see below)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size type&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame types:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 samples&lt;br /&gt;
   5    8192 samples&lt;br /&gt;
   6    16384 samples&lt;br /&gt;
   7    512 samples&lt;br /&gt;
   8    1024 samples&lt;br /&gt;
   9    2048 samples&lt;br /&gt;
  10    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  11    obsoleted in 1.1.0, invalid, never used&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14191</id>
		<title>TAK</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=TAK&amp;diff=14191"/>
		<updated>2012-10-15T10:18:59Z</updated>

		<summary type="html">&lt;p&gt;Pbm: /* Stream information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.thbeck.de/Tak/Tak.html (German)&lt;br /&gt;
&lt;br /&gt;
TAK (Tom's verlustfreier Audio Kompressor), formerly known as YALAC (Yet Another Lossless Audio Codec) &lt;br /&gt;
is a [[lossless compression|lossless]] audio codec developed by Thomas Becker. As of January 2006, the codec is at the 1.0 release stage. Source code is not available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=50958 Alpha testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=51565 Beta testing thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=52212 1.0 release thread from hydrogenaudio.org]&lt;br /&gt;
* [http://www.rarewares.org/files/lossless/Tak1.0.zip Binary download link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stream format ==&lt;br /&gt;
Integers are little-endian.  24-bit CRC is employed for checking data integrity.&lt;br /&gt;
&lt;br /&gt;
TAK file consists of signature (&amp;quot;tBaK&amp;quot;), obligatory metadata and compressed audio data. APE tags may be present at the end of file.&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
Metadata consists of series of objects, each object has 32-bit header.&lt;br /&gt;
&lt;br /&gt;
Header meaning:&lt;br /&gt;
&lt;br /&gt;
   7 bits - object type&lt;br /&gt;
   1 bit  - reserved&lt;br /&gt;
  24 bits - object size&lt;br /&gt;
&lt;br /&gt;
Metadata object types:&lt;br /&gt;
&lt;br /&gt;
  0x00 - end of metadata&lt;br /&gt;
  0x01 - stream info&lt;br /&gt;
  0x02 - seektable (obsoleted in TAK 1.1.1)&lt;br /&gt;
  0x03 - original file data&lt;br /&gt;
  0x04 - encoder info&lt;br /&gt;
  0x05 - padding (since 1.0.3)&lt;br /&gt;
  0x06 - MD5 checksum (since 1.1.1)&lt;br /&gt;
  0x07 - last frame information (since 1.1.1)&lt;br /&gt;
&lt;br /&gt;
Non-empty metadata object ends with 3 bytes of object data CRC.&lt;br /&gt;
&lt;br /&gt;
==== Stream information ====&lt;br /&gt;
&lt;br /&gt;
Stream information consist of:&lt;br /&gt;
   Encoder info&lt;br /&gt;
   Frame size information&lt;br /&gt;
   Audio format&lt;br /&gt;
   &lt;br /&gt;
===== Encoder info =====&lt;br /&gt;
&lt;br /&gt;
   6 bits    codec type&lt;br /&gt;
   4 bits    encoder profile (= encoder preset at least for versions &amp;lt;= 1.1.2)&lt;br /&gt;
&lt;br /&gt;
Known codec types:&lt;br /&gt;
&lt;br /&gt;
   0    Integer 24 bit (TAK 1.0)&lt;br /&gt;
   1    Experimental!&lt;br /&gt;
   2    Integer 24 bit (TAK 2.0)&lt;br /&gt;
   3    LossyWav (TAK 2.1 Beta)&lt;br /&gt;
   4    Integer 24 bit MC (TAK 2.2)&lt;br /&gt;
&lt;br /&gt;
   frame size information (32 bits, see below)&lt;br /&gt;
&lt;br /&gt;
===== Frame size information =====&lt;br /&gt;
&lt;br /&gt;
   4 bits    frame size index&lt;br /&gt;
  35 bits    number of samples in whole stream&lt;br /&gt;
&lt;br /&gt;
Possible frame sizes:&lt;br /&gt;
&lt;br /&gt;
   0    94 ms of audio&lt;br /&gt;
   1    125 ms&lt;br /&gt;
   2    188 ms&lt;br /&gt;
   3    250 ms&lt;br /&gt;
   4    4096 ms&lt;br /&gt;
   5    8192 ms&lt;br /&gt;
   6    16384 ms&lt;br /&gt;
   7    512 ms&lt;br /&gt;
   8    1024 ms&lt;br /&gt;
   9    2048 ms&lt;br /&gt;
  10    6144 ms (obsoleted in 1.1.0, invalid)&lt;br /&gt;
  11    12288 ms (obsoleted in 1.1.0, invalid)&lt;br /&gt;
  12-14    reserved&lt;br /&gt;
  15    frame contains number of samples stored in next 35 bits (not supported yet)&lt;br /&gt;
&lt;br /&gt;
===== Audio format =====&lt;br /&gt;
&lt;br /&gt;
   3 bits    data type (should be 0 = PCM)&lt;br /&gt;
  18 bits    sample rate - 6000&lt;br /&gt;
   5 bits    sample bits - 8&lt;br /&gt;
   4 bits    audio channels - 1 (5 bits in 1.1.1 version, last bit is never&lt;br /&gt;
                                 used anyway because older encoders did not&lt;br /&gt;
                                 supported multi-channel input)&lt;br /&gt;
&lt;br /&gt;
   1 bit     is extension present&lt;br /&gt;
(&amp;gt;= 2.2.0 only)   &lt;br /&gt;
             if extension is present:&lt;br /&gt;
   5 bits    valid bits per sample&lt;br /&gt;
   1 bit     is speaker assignment present&lt;br /&gt;
             if speaker assignment present:&lt;br /&gt;
6xCh bits    speaker assignment for each channel&lt;br /&gt;
&lt;br /&gt;
supported assignments:&lt;br /&gt;
    0    none&lt;br /&gt;
    1    FRONT_LEFT&lt;br /&gt;
    2    FRONT_RIGHT&lt;br /&gt;
    3    FRONT_CENTER&lt;br /&gt;
    4    LOW_FREQUENCY&lt;br /&gt;
    5    BACK_LEFT&lt;br /&gt;
    6    BACK_RIGHT&lt;br /&gt;
    7    FRONT_LEFT_OF_CENTER&lt;br /&gt;
    8    FRONT_RIGHT_OF_CENTER&lt;br /&gt;
    9    BACK_CENTER&lt;br /&gt;
   10    SIDE_LEFT&lt;br /&gt;
   11    SIDE_RIGHT&lt;br /&gt;
   12    TOP_CENTER&lt;br /&gt;
   13    TOP_FRONT_LEFT&lt;br /&gt;
   14    FRONT_CENTER&lt;br /&gt;
   15    FRONT_RIGHT&lt;br /&gt;
   16    BACK_LEFT&lt;br /&gt;
   17    BACK_CENTER&lt;br /&gt;
   18    BACK_RIGHT&lt;br /&gt;
&lt;br /&gt;
==== Original file data ====&lt;br /&gt;
Called &amp;quot;simple wave data&amp;quot;, this contains trailer and footer from original file to allow perfect reconstruction:&lt;br /&gt;
&lt;br /&gt;
   0-2   trailer size&lt;br /&gt;
   3-6   footer size&lt;br /&gt;
   trailer data&lt;br /&gt;
   footer data&lt;br /&gt;
&lt;br /&gt;
==== Encoder info ====&lt;br /&gt;
&lt;br /&gt;
   24 bits    encoder version (8 bits per each version component)&lt;br /&gt;
    4 bits    preset&lt;br /&gt;
    2 bits    evaluation&lt;br /&gt;
    2 bits    reserved&lt;br /&gt;
&lt;br /&gt;
==== Last frame information ====&lt;br /&gt;
&lt;br /&gt;
  40 bits    frame position relative to the beginning of audio data&lt;br /&gt;
  24 bits    frame size&lt;br /&gt;
&lt;br /&gt;
=== Audio data ===&lt;br /&gt;
&lt;br /&gt;
TODO: header order, padding, CRC positions&lt;br /&gt;
&lt;br /&gt;
==== Data header ====&lt;br /&gt;
&lt;br /&gt;
  16 bits    syncword (0xA0FF little-endian)&lt;br /&gt;
   1 bit     last frame&lt;br /&gt;
   1 bit     frame contains stream information + extra info (see &amp;quot;stream information&amp;quot; above and &amp;quot;extra info&amp;quot; bellow)&lt;br /&gt;
   1 bit     frame contains metadata (unsupported)&lt;br /&gt;
  21 bits    frame number&lt;br /&gt;
  14 bits    sample count - 1 (only for the last frame)&lt;br /&gt;
   2 bits    padding (only for the last frame)&lt;br /&gt;
             if stream information is present:&lt;br /&gt;
   stream information&lt;br /&gt;
   extra info&lt;br /&gt;
&lt;br /&gt;
==== Extra info ====&lt;br /&gt;
&lt;br /&gt;
   1 bit     previous frame position is present (currently always set to 0)&lt;br /&gt;
   5 bits    reserved (should be 0)&lt;br /&gt;
             if previous frame position is present:&lt;br /&gt;
  25 bits    offset to the previous frame header from the end of this header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio Codecs]]&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Pbm</name></author>
	</entry>
</feed>