<?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=Ronald+S.+Bultje</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=Ronald+S.+Bultje"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Ronald_S._Bultje"/>
	<updated>2026-07-12T03:49:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=15141</id>
		<title>User:Ronald S. Bultje</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=15141"/>
		<updated>2014-10-23T18:19:02Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm Ronald and work on all kind of stuff in libavformat, and some in libavcodec. My contributions include:&lt;br /&gt;
&lt;br /&gt;
*various pieces in RTP/RTSP/HTTP stack&lt;br /&gt;
*[[Matroska]] demuxer&lt;br /&gt;
*[[Windows_Media_Audio_Voice|WMAVoice]], [[VP8]] and [[VP9]] decoder&lt;br /&gt;
*[[H264]] optimizations&lt;br /&gt;
&lt;br /&gt;
=Contact:=&lt;br /&gt;
*Email: rsbultje (at) gmail (dot) com&lt;br /&gt;
*IRC: BBB on #libav-devel (irc.freenode.net)&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14013</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14013"/>
		<updated>2012-03-25T16:28:35Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* HEVC/H265 decoder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the Libav project. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channel #libav-devel, or talk to us on libav-devel@libav.org. Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== Assembly Testing Framework ===&lt;br /&gt;
&lt;br /&gt;
FFmpeg/Libav use an extensive amount of assembly to optimize video and audio decoding. For scientific applications and high-assurance systems (e.g. a spacecraft), accuracy and speed are vital. Assembly is difficult to code, and lends itself to mistakes. As FFmpeg/Libav has no framework for testing assembly functions, development of assembly is often hindered by each developer having to create his or her own tests. In addition, functions are not tested for speed. While FATE covers some functions, there are many that simply aren't tested. The samples in FATE do not cover all features in every decoder that has assembly functions (e.g. several 10-bit H.264 predict functions are not used in any FATE sample). FATE also does not test functions in isolation, which impedes assembly development. In addition, FATE might not cover all assembly versions of a function if multiple different levels of optimizations exist (e.g. MMX, MMX2, SSE, SSE2, SSSE3, SSE4, AVX, etc). &lt;br /&gt;
&lt;br /&gt;
* Qualification task: describe how you will implement the system (probably based on x264's checkasm). It should test accuracy, speed, and be extensible. Also, contact me via IRC.&lt;br /&gt;
* Actual task: implement the system. At least all H.264 assembly functions should be covered and the framework should be easily extensible. &lt;br /&gt;
* The framework should work across all supported architectures and operating systems.&lt;br /&gt;
* The framework should measure exactly how fast an individual function is (e.g. using START/STOP_TIMER).&lt;br /&gt;
* The framework should be able to test functions in isolation.&lt;br /&gt;
* x264's checkasm can be used as a reference.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Daniel Kang'' (Jumpyshoes on #libav-devel@chat.freenode.net; daniel.d.kang@gmail.com -- ping me on IRC and email me).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
* Draft spec: http://phenix.it-sudparis.eu/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v21.zip&lt;br /&gt;
* HM (draft reference decoder) git mirror: http://hevc.kw.bbc.co.uk/git/w/jctvc-hm.git&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opus Decoder ===&lt;br /&gt;
&lt;br /&gt;
Implement an independent Opus decoder using the publicly-available specification at:&lt;br /&gt;
http://tools.ietf.org/html/draft-ietf-codec-opus-11&lt;br /&gt;
&lt;br /&gt;
* The reference source code should only be used as a normative document reference when required (i.e. this should not just be a port of libopus)&lt;br /&gt;
* Fully support Ogg/Opus mapping: https://wiki.xiph.org/OggOpus&lt;br /&gt;
* Handle CELT, SILK, and Hybrid modes (including transitions)&lt;br /&gt;
* (optional) Handle more than 2 channels&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adobe DNG Decoder (Basic Support) ===&lt;br /&gt;
&lt;br /&gt;
Adobe Digital Negative (DNG) is an attempt at a universal file format for raw camera images. Most camera manufacturers have their own proprietary raw image format. Adobe provides tools for converting these to DNG with minimal or no loss of information for more reliable long-term support in a format with an open specification.&lt;br /&gt;
&lt;br /&gt;
The project goal would be to add features required for basic support of DNG files. Some of these include:&lt;br /&gt;
* test/improve TIFF and LJPEG 16-bit decoding support&lt;br /&gt;
* implement both variants of JPEG-in-TIFF in the TIFF decoder&lt;br /&gt;
* add basic handling for Bayer CFA pixel format(s), including demosaicing&lt;br /&gt;
* conversion from camera colorspace to RGB&lt;br /&gt;
* export of DNG/TIFF/Exif metadata&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Digital_Negative Wikipedia Article]&lt;br /&gt;
* [http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/dng_spec.pdf Specification]&lt;br /&gt;
* DNG samples can be created from other raw formats using the free [http://www.adobe.com/products/photoshop/extend.displayTab2.html DNG Converter] program&lt;br /&gt;
* A good place to find raw camera samples is http://www.imaging-resource.com&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]], [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete api to provide hardware acceleration wrapping, the project should provide a better abstraction and migrate the currently implemented ones and additional provide more.&lt;br /&gt;
&lt;br /&gt;
* Draft the API (that will require knowledge of libavcodec)&lt;br /&gt;
* Port vaapi/hwaccel to the new API.&lt;br /&gt;
* Port vdpau to the new API&lt;br /&gt;
* Implement Freescale VPU support&lt;br /&gt;
* Implement TI dce support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
&lt;br /&gt;
Libav needs a better system to serve streams, the current codebase had a number of design defect showing its age. The new avserver should be written from scratch, leveraging the knowledge piled up.&lt;br /&gt;
&lt;br /&gt;
The implementation will be incrementally complex and possibly modular.&lt;br /&gt;
&lt;br /&gt;
* Implement support to rtsp record/announce&lt;br /&gt;
* Expose RTMP and RTSP specific API (so the server won't have to use private calls)&lt;br /&gt;
* Write a simple rtsp, http, rtmp redirector (listen for publish/announce and rebroadcast the received streams)&lt;br /&gt;
* Add the capability to serve on-demand content reading from a single path&lt;br /&gt;
&lt;br /&gt;
Ideally the first implementation can be made using a poll/event loop and then moved to use threads.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Swscale Cleanup and Additions ===&lt;br /&gt;
&lt;br /&gt;
Libswscale is an open source library for colourspace conversion. However, it requires significant cleanup to allow&lt;br /&gt;
it to support modern features. Knowledge of x86 assembly is preferred, though it can be learnt as part of GSOC.&lt;br /&gt;
&lt;br /&gt;
* Support for more interleaved colourspaces. This is useful because interleaved chroma provides improved cache coherency and would form the basis for future optimisations in libav's decoders.&lt;br /&gt;
* Support for the vast number of packed pixel formats (e.g r210, v210). Many are currently implemented as decoders but it is agreed that all uses of such formats are effectively colourspace conversions, they should be included in swscale. This task will involve collaborating with the student of &amp;quot;Adobe DNG Decoder&amp;quot; (if applicable) to rewrite the pixel format headers to support more complex pixel formats.&lt;br /&gt;
* Inline asm to yasm conversion&lt;br /&gt;
* RGB work (todo: expand this)&lt;br /&gt;
* Other general cleanup&lt;br /&gt;
&lt;br /&gt;
''Mentor: Kieran Kunhya (kierank)''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== DTS-LBR decoder ===&lt;br /&gt;
&lt;br /&gt;
This is the DTS equivalent to E-AC3 but not technically related to DTS/DTS-HD. It is found in the following specification: http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). The task is to find a way of making the official&lt;br /&gt;
decoder decode just the LBR stream (and not mix it into the main audio) and use that to verify decoder compliance of the decoder you wrote.&lt;br /&gt;
The spec may be incomplete or require parts to be reverse engineered from the binary.&lt;br /&gt;
&lt;br /&gt;
''Mentor: ???''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14011</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14011"/>
		<updated>2012-03-21T21:08:01Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the Libav project. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channel #libav-devel, or talk to us on libav-devel@libav.org. Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== Assembly Testing Framework ===&lt;br /&gt;
&lt;br /&gt;
FFmpeg/Libav use an extensive amount of assembly to optimize video and audio decoding. For scientific applications and high-assurance systems (e.g. a spacecraft), accuracy and speed are vital. Assembly is difficult to code, and lends itself to mistakes. As FFmpeg/Libav has no framework for testing assembly functions, development of assembly is often hindered by each developer having to create his or her own tests. In addition, functions are not tested for speed. While FATE covers some functions, there are many that simply aren't tested. The samples in FATE do not cover all features in every decoder that has assembly functions (e.g. several 10-bit H.264 predict functions are not used in any FATE sample). FATE also does not test functions in isolation, which impedes assembly development. In addition, FATE might not cover all assembly versions of a function if multiple different levels of optimizations exist (e.g. MMX, MMX2, SSE, SSE2, SSSE3, SSE4, AVX, etc). &lt;br /&gt;
&lt;br /&gt;
* Qualification task: describe how you will implement the system (probably based on x264's checkasm). It should test accuracy, speed, and be extensible. Also, contact me via IRC.&lt;br /&gt;
* Actual task: implement the system. At least all H.264 assembly functions should be covered and the framework should be easily extensible. &lt;br /&gt;
* The framework should work across all supported architectures and operating systems.&lt;br /&gt;
* The framework should measure exactly how fast an individual function is (e.g. using START/STOP_TIMER).&lt;br /&gt;
* The framework should be able to test functions in isolation.&lt;br /&gt;
* x264's checkasm can be used as a reference.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Daniel Kang'' (Jumpyshoes on #libav-devel@chat.freenode.net; daniel.d.kang@gmail.com -- ping me on IRC and email me).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opus Decoder ===&lt;br /&gt;
&lt;br /&gt;
Implement an independent Opus decoder using the publicly-available specification at:&lt;br /&gt;
http://tools.ietf.org/html/draft-ietf-codec-opus-11&lt;br /&gt;
&lt;br /&gt;
* The reference source code should only be used as a normative document reference when required (i.e. this should not just be a port of libopus)&lt;br /&gt;
* Fully support Ogg/Opus mapping: https://wiki.xiph.org/OggOpus&lt;br /&gt;
* Handle CELT, SILK, and Hybrid modes (including transitions)&lt;br /&gt;
* (optional) Handle more than 2 channels&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adobe DNG Decoder (Basic Support) ===&lt;br /&gt;
&lt;br /&gt;
Adobe Digital Negative (DNG) is an attempt at a universal file format for raw camera images. Most camera manufacturers have their own proprietary raw image format. Adobe provides tools for converting these to DNG with minimal or no loss of information for more reliable long-term support in a format with an open specification.&lt;br /&gt;
&lt;br /&gt;
The project goal would be to add features required for basic support of DNG files. Some of these include:&lt;br /&gt;
* test/improve TIFF and LJPEG 16-bit decoding support&lt;br /&gt;
* implement both variants of JPEG-in-TIFF in the TIFF decoder&lt;br /&gt;
* add basic handling for Bayer CFA pixel format(s), including demosaicing&lt;br /&gt;
* conversion from camera colorspace to RGB&lt;br /&gt;
* export of DNG/TIFF/Exif metadata&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Digital_Negative Wikipedia Article]&lt;br /&gt;
* [http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/dng_spec.pdf Specification]&lt;br /&gt;
* DNG samples can be created from other raw formats using the free [http://en.wikipedia.org/wiki/Digital_Negative DNG Converter] program&lt;br /&gt;
* A good place to find raw camera samples is http://www.imaging-resource.com&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]], [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete api to provide hardware acceleration wrapping, the project should provide a better abstraction and migrate the currently implemented ones and additional provide more.&lt;br /&gt;
&lt;br /&gt;
* Draft the API (that will require knowledge of libavcodec)&lt;br /&gt;
* Port vaapi/hwaccel to the new API.&lt;br /&gt;
* Port vdpau to the new API&lt;br /&gt;
* Implement Freescale VPU support&lt;br /&gt;
* Implement TI dce support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
&lt;br /&gt;
Libav needs a better system to serve streams, the current codebase had a number of design defect showing its age. The new avserver should be written from scratch, leveraging the knowledge piled up.&lt;br /&gt;
&lt;br /&gt;
The implementation will be incrementally complex and possibly modular.&lt;br /&gt;
&lt;br /&gt;
* Implement support to rtsp record/announce&lt;br /&gt;
* Expose RTMP and RTSP specific API (so the server won't have to use private calls)&lt;br /&gt;
* Write a simple rtsp, http, rtmp redirector (listen for publish/announce and rebroadcast the received streams)&lt;br /&gt;
* Add the capability to serve on-demand content reading from a single path&lt;br /&gt;
&lt;br /&gt;
Ideally the first implementation can be made using a poll/event loop and then moved to use threads.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Swscale Cleanup and Additions ===&lt;br /&gt;
&lt;br /&gt;
Libswscale is an open source library for colourspace conversion. However, it requires significant cleanup to allow&lt;br /&gt;
it to support modern features. Knowledge of x86 assembly is preferred, though it can be learnt as part of GSOC.&lt;br /&gt;
&lt;br /&gt;
* Support for more interleaved colourspaces. This is useful because interleaved chroma provides improved cache coherency and would form the basis for future optimisations in libav's decoders.&lt;br /&gt;
* Support for the vast number of packed pixel formats (e.g r210, v210). Many are currently implemented as decoders but it is agreed that all uses of such formats are effectively colourspace conversions, they should be included in swscale. This task will involve collaborating with the student of &amp;quot;Adobe DNG Decoder&amp;quot; (if applicable) to rewrite the pixel format headers to support more complex pixel formats.&lt;br /&gt;
* Inline asm to yasm conversion&lt;br /&gt;
* RGB work (todo: expand this)&lt;br /&gt;
* Other general cleanup&lt;br /&gt;
&lt;br /&gt;
''Mentor: Kieran Kunhya (kierank)''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== DTS-LBR decoder ===&lt;br /&gt;
&lt;br /&gt;
This is the DTS equivalent to E-AC3 but not technically related to DTS/DTS-HD. It is found in the following specification: http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). The task is to find a way of making the official&lt;br /&gt;
decoder decode just the LBR stream (and not mix it into the main audio) and use that to verify decoder compliance of the decoder you wrote.&lt;br /&gt;
The spec may be incomplete or require parts to be reverse engineered from the binary.&lt;br /&gt;
&lt;br /&gt;
''Mentor: ???''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=14000</id>
		<title>User:Ronald S. Bultje</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=14000"/>
		<updated>2012-03-17T17:15:05Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm Ronald and work on all kind of stuff in libavformat, and some in libavcodec. My contributions include:&lt;br /&gt;
&lt;br /&gt;
*RDT / Realmedia and RTSP-MS / ASF support to the RTSP / RTP stack&lt;br /&gt;
*HTTP seeking&lt;br /&gt;
*[[Matroska]] demuxer&lt;br /&gt;
*[[Windows_Media_Audio_Voice|WMAVoice]] and [[VP8]] decoder&lt;br /&gt;
*[[H264]] optimizations&lt;br /&gt;
&lt;br /&gt;
In daily life, I work for Google as part of the WebM team.&lt;br /&gt;
&lt;br /&gt;
=Contact:=&lt;br /&gt;
*Email: rsbultje (at) gmail (dot) com&lt;br /&gt;
*IRC: BBB on #libav-devel (irc.freenode.net)&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=13999</id>
		<title>User:Ronald S. Bultje</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=13999"/>
		<updated>2012-03-17T17:14:41Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm Ronald and work on all kind of stuff in libavformat, and some in libavcodec. My contributions include:&lt;br /&gt;
&lt;br /&gt;
*RDT / Realmedia and RTSP-MS / ASF support to the RTSP / RTP stack&lt;br /&gt;
*HTTP seeking&lt;br /&gt;
*[[Matroska]] demuxer&lt;br /&gt;
*[[Windows_Media_Audio_Voice|WMAVoice]] and [[VP8]] decoder&lt;br /&gt;
*[[H264]] optimizations&lt;br /&gt;
&lt;br /&gt;
In daily life, I work for Google as part of the WebM team.&lt;br /&gt;
&lt;br /&gt;
Email: rsbultje (at) gmail (dot) com&lt;br /&gt;
IRC: BBB on #libav-devel (irc.freenode.net)&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13942</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13942"/>
		<updated>2012-03-09T19:26:37Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: remove WIP edit notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the Libav project. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channel #libav-devel, or talk to us on libav-devel@libav.org. Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opus Decoder ===&lt;br /&gt;
&lt;br /&gt;
Implement an independent Opus decoder using the publicly-available specification at:&lt;br /&gt;
http://tools.ietf.org/html/draft-ietf-codec-opus-11&lt;br /&gt;
&lt;br /&gt;
* The reference source code should only be used as a normative document reference when required (i.e. this should not just be a port of libopus)&lt;br /&gt;
* Fully support Ogg/Opus mapping: https://wiki.xiph.org/OggOpus&lt;br /&gt;
* Handle CELT, SILK, and Hybrid modes (including transitions)&lt;br /&gt;
* (optional) Handle more than 2 channels&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]], [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete api to provide hardware acceleration wrapping, the project should provide a better abstraction and migrate the currently implemented ones and additional provide more.&lt;br /&gt;
&lt;br /&gt;
* Draft the API (that will require knowledge of libavcodec)&lt;br /&gt;
* Port vaapi/hwaccel to the new API.&lt;br /&gt;
* Port vdpau to the new API&lt;br /&gt;
* Implement Freescale VPU support&lt;br /&gt;
* Implement TI dce support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
&lt;br /&gt;
Libav needs a better system to serve streams, the current codebase had a number of design defect showing its age. The new avserver should be written from scratch, leveraging the knowledge piled up.&lt;br /&gt;
&lt;br /&gt;
The implementation will be incrementally complex and possibly modular.&lt;br /&gt;
&lt;br /&gt;
* Implement support to rtsp record/announce&lt;br /&gt;
* Expose RTMP and RTSP specific API (so the server won't have to use private calls)&lt;br /&gt;
* Write a simple rtsp, http, rtmp redirector (listen for publish/announce and rebroadcast the received streams)&lt;br /&gt;
* Add the capability to serve on-demand content reading from a single path&lt;br /&gt;
&lt;br /&gt;
Ideally the first implementation can be made using a poll/event loop and then moved to use threads.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13941</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13941"/>
		<updated>2012-03-09T19:26:23Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: revert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
:Please detail the deadlines for applying and being a student/mentor.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the Libav project. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channel #libav-devel, or talk to us on libav-devel@libav.org. Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opus Decoder ===&lt;br /&gt;
&lt;br /&gt;
Implement an independent Opus decoder using the publicly-available specification at:&lt;br /&gt;
http://tools.ietf.org/html/draft-ietf-codec-opus-11&lt;br /&gt;
&lt;br /&gt;
* The reference source code should only be used as a normative document reference when required (i.e. this should not just be a port of libopus)&lt;br /&gt;
* Fully support Ogg/Opus mapping: https://wiki.xiph.org/OggOpus&lt;br /&gt;
* Handle CELT, SILK, and Hybrid modes (including transitions)&lt;br /&gt;
* (optional) Handle more than 2 channels&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Jruggle|Justin Ruggles]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]], [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete api to provide hardware acceleration wrapping, the project should provide a better abstraction and migrate the currently implemented ones and additional provide more.&lt;br /&gt;
&lt;br /&gt;
* Draft the API (that will require knowledge of libavcodec)&lt;br /&gt;
* Port vaapi/hwaccel to the new API.&lt;br /&gt;
* Port vdpau to the new API&lt;br /&gt;
* Implement Freescale VPU support&lt;br /&gt;
* Implement TI dce support&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
&lt;br /&gt;
Libav needs a better system to serve streams, the current codebase had a number of design defect showing its age. The new avserver should be written from scratch, leveraging the knowledge piled up.&lt;br /&gt;
&lt;br /&gt;
The implementation will be incrementally complex and possibly modular.&lt;br /&gt;
&lt;br /&gt;
* Implement support to rtsp record/announce&lt;br /&gt;
* Expose RTMP and RTSP specific API (so the server won't have to use private calls)&lt;br /&gt;
* Write a simple rtsp, http, rtmp redirector (listen for publish/announce and rebroadcast the received streams)&lt;br /&gt;
* Add the capability to serve on-demand content reading from a single path&lt;br /&gt;
&lt;br /&gt;
Ideally the first implementation can be made using a poll/event loop and then moved to use threads.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13940</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13940"/>
		<updated>2012-03-09T19:18:47Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: remove deadlines edit - this is not a WIP page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 Decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (may be) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.mplayerhq.hu/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated with ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13924</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13924"/>
		<updated>2012-03-01T19:07:24Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
tandberg 4/5 have large codec delays because of misordered frames, and the delay jumps randomly within the file. We don't preroll well enough to know the correct delay in advance and so at each point where we return a frame too far ahead in the future, we drop the preceeding frames once we get around to decoding them because we've already passed that point in units returned to the application. The correct solution for these would be to increase delay dynamically whenever we encounter a gap until either we're at max-delay, or until we've resolved the gap. almost certainly, max-delay should be settable in user applications so we can disable it for live/low-latency purposes. Q: should we return old frames also? The user may want to reorder himself (although this doesn't make much sense). Fate currently uses -strict 1 as a workaround for these samples, which simply forces codec-delay to 16. This is not the correct solution.&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13876</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13876"/>
		<updated>2012-02-17T15:34:45Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: Remove references to ffmpeg except where historically relevant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
:Please detail the deadlines for applying and being a student/mentor.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the Libav project. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channel #libav-devel, or talk to us on libav-devel@libav.org. Ask about the FFmpeg/Libav fork as a first conversation subject. Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong in libavcodec/libavformat, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13875</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13875"/>
		<updated>2012-02-17T15:31:15Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: Michael will not be a mentor for the Libav summer of code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
:Please detail the deadlines for applying and being a student/mentor.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong in libavcodec/libavformat, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2012&amp;diff=13874</id>
		<title>FFmpeg / Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2012&amp;diff=13874"/>
		<updated>2012-02-17T15:30:41Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: FFmpeg / Libav Summer Of Code 2012 moved to Libav Summer Of Code 2012: We will not be doing a shared summer of code, thus a shared page isn't useful.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Libav Summer Of Code 2012]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13873</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13873"/>
		<updated>2012-02-17T15:30:40Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: FFmpeg / Libav Summer Of Code 2012 moved to Libav Summer Of Code 2012: We will not be doing a shared summer of code, thus a shared page isn't useful.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
:Please detail the deadlines for applying and being a student/mentor.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio resampling/rematrixing/converting code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using libswresample to resample/rematrix audio (samplerate / channels) and to resample the audio format (int, float, 16-bit, 32-bit).&lt;br /&gt;
* both interleaved and planar audio sample formats are already supported&lt;br /&gt;
* We need SIMD optimization of popular conversions (float-int16, int16-float), (stereo-mono-5.1) and anything else thats frequently used.&lt;br /&gt;
* We need support for alternate conversion functions (e.g. sample format conversion with or without dithering)&lt;br /&gt;
* fix bugs in current design (none known but there sure are some)&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Michael|Michael Niedermayer]]''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong in libavcodec/libavformat, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13872</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13872"/>
		<updated>2012-02-17T15:24:28Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
:Please detail the deadlines for applying and being a student/mentor.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that, together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
There will be a second qualification task for every student: Pick a file of moderate size and reformat it in proper K&amp;amp;R style. The goal of this task is twofold: First it familiarizes students with the style that they will have to write their code in, second it demonstrates that students are able to submit patches from git and go through our review process.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 ALS Roundup ===&lt;br /&gt;
&lt;br /&gt;
This task is to update and enhance the existing ALS decoder as well as integrate&lt;br /&gt;
and enhance the rudimentary encoder found at:&lt;br /&gt;
https://github.com/justinruggles/FFmpeg-alsenc&lt;br /&gt;
&lt;br /&gt;
Possible features are:&lt;br /&gt;
&lt;br /&gt;
* implement rls-lms in the decoder&lt;br /&gt;
* do correct channel layout/sort handling in the decoder&lt;br /&gt;
* update to current master&lt;br /&gt;
* use codec private options&lt;br /&gt;
* implement encode2(), setting pts and duration&lt;br /&gt;
* document options and examples in encoders.texi&lt;br /&gt;
* come up with a good set of encoding tests for FATE&lt;br /&gt;
* implement mcc/channel sort in the encoder&lt;br /&gt;
* implement rls-lms in the encoder&lt;br /&gt;
* implement float support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== On2 VP7 decoder ===&lt;br /&gt;
&lt;br /&gt;
VP7 is a DCT-based video codec. At the moment, it seems to lack a reference implementation, but we do have a spec and may take hint from libavcodec's VP8 and VP6 decoder and libvpx. MPlayer can decode VP7 by loading a binary. To begin working on the project, one has to setup a reference decoder against which to compare our output. This can be done by either writing a wrapper for the binary or (maybe) hacking libvpx itself.&lt;br /&gt;
&lt;br /&gt;
You might want to discuss with us how and where to start. Drop by on IRC if you need help. It is not as difficult as it sounds.&lt;br /&gt;
&lt;br /&gt;
* [http://multimedia.cx/mirror/VP7_Data_Format_and_Decoder_Overview.pdf Specification]&lt;br /&gt;
* [http://samples.libav.org/V-codecs/VP7/ Samples]&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
&lt;br /&gt;
Currently librtmp is required for RTMPE, RTMPS, RTMPT, RTMPTE. The goal of this project is to implement these protocol variants natively in libavformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:mstorsjo|Martin Storsjö]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== spin off build system into a separate project ===&lt;br /&gt;
&lt;br /&gt;
Our build system is neat enough to make into a more general solution to be reused by other projects.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to achieve exactly that. Intermediate steps will be reading, understanding and documenting the current build system, refactoring parts that can be generalized further and finally making a prototype implementation for libpostproc.&lt;br /&gt;
&lt;br /&gt;
You will require skills in POSIX shell, GNU Make and a firm command of English.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio resampling/rematrixing/converting code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using libswresample to resample/rematrix audio (samplerate / channels) and to resample the audio format (int, float, 16-bit, 32-bit).&lt;br /&gt;
* both interleaved and planar audio sample formats are already supported&lt;br /&gt;
* We need SIMD optimization of popular conversions (float-int16, int16-float), (stereo-mono-5.1) and anything else thats frequently used.&lt;br /&gt;
* We need support for alternate conversion functions (e.g. sample format conversion with or without dithering)&lt;br /&gt;
* fix bugs in current design (none known but there sure are some)&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Michael|Michael Niedermayer]]''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong in libavcodec/libavformat, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13824</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13824"/>
		<updated>2012-02-01T06:40:03Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Applying */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. In the past few years, students that completely finished their qualification task always got selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google, and the number of students that apply.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated with ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13823</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13823"/>
		<updated>2012-02-01T06:37:50Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Contacting developers/mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg-devel or #libav-devel, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. Generally, students that completely finish their qualification task always get selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
* This task will depend on the current standardisation status of HEVC. Final publication is in 2013 but there may be parts which will not change much anyway.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD decoder ===&lt;br /&gt;
&lt;br /&gt;
* ETSI released specifcations (http://www.etsi.org/deliver/etsi_ts/102100_102199/102114/01.03.01_60/ts_102114v010301p.pdf). Your job is to complete the existing decoder with the following features.&lt;br /&gt;
&lt;br /&gt;
 (1) Add support for mixed Core + DTS-HD stream structure&lt;br /&gt;
     (DtsCoreFrame+DtsHdFrame+DtsCoreFrame+DtsHdFrame+...), used by Blu-Ray main&lt;br /&gt;
     and commentary tracks.&lt;br /&gt;
 (2) Add support for XXCh extension (6.1 and 7.1 channels).&lt;br /&gt;
 (3) Add support for X96 extension (96khz).&lt;br /&gt;
 (4) Add support for XLL extension (lossless).&lt;br /&gt;
 (5) Add support for a pure DTS-HD stream structure&lt;br /&gt;
     (DtsHdFrame+DtsHdFrame+DtsHdFrame+...), used by Blu-Ray PiP tracks.&lt;br /&gt;
 (6) Add support for XBR extension (extra bitrate).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
== 2nd Tier (need mentor) Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task is to get libbluray integrated with ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13818</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13818"/>
		<updated>2012-01-28T02:55:00Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* How it works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a project, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a project, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a project ===&lt;br /&gt;
Below, you'll find two lists of projects:&lt;br /&gt;
* Projects with a mentor&lt;br /&gt;
* Projects without a mentor&lt;br /&gt;
If you choose a project with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a project without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the projects, you're free to define your own project and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a project (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own project, explain (with reasonable amount of detail) what you intend to achieve and why you think your project should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code project, some community members of considerable standing need to vouch for your project.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the project of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding project in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code project before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected project. For example, if your project will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your project is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. Generally, students that completely finish their qualification task always get selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13817</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13817"/>
		<updated>2012-01-27T10:09:33Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Contacting developers/mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a task, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a task, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a tasks ===&lt;br /&gt;
Below, you'll find two lists of tasks:&lt;br /&gt;
* Tasks with a mentor&lt;br /&gt;
* Tasks without a mentor&lt;br /&gt;
If you choose a task with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a task without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the tasks, you're free to define your own task and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a task (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own task, explain (with reasonable amount of detail) what you intend to achieve and why you think your task should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring. Likewise, if you choose to define your own Summer of Code task, some community members of considerable standing need to vouch for your task.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the task of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding task in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code task before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected task. For example, if your task will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your task is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. Generally, students that completely finish their qualification task always get selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=13816</id>
		<title>User:Ronald S. Bultje</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ronald_S._Bultje&amp;diff=13816"/>
		<updated>2012-01-27T09:56:21Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm Ronald and work on all kind of stuff in libavformat, and some in libavcodec. My contributions include:&lt;br /&gt;
&lt;br /&gt;
*RDT / Realmedia and RTSP-MS / ASF support to the RTSP / RTP stack&lt;br /&gt;
*HTTP seeking&lt;br /&gt;
*[[Matroska]] demuxer&lt;br /&gt;
*[[Windows_Media_Audio_Voice|WMAVoice]] and [[VP8]] decoder&lt;br /&gt;
*[[H264]] optimizations&lt;br /&gt;
&lt;br /&gt;
In daily life, I work for Google as part of the WebM team.&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13815</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13815"/>
		<updated>2012-01-27T09:55:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* How it works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a task, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a task, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a tasks ===&lt;br /&gt;
Below, you'll find two lists of tasks:&lt;br /&gt;
* Tasks with a mentor&lt;br /&gt;
* Tasks without a mentor&lt;br /&gt;
If you choose a task with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a task without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the tasks, you're free to define your own task and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a task (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own task, explain (with reasonable amount of detail) what you intend to achieve and why you think your task should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the task of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding task in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code task before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected task. For example, if your task will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your task is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Applying ===&lt;br /&gt;
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. Generally, students that completely finish their qualification task always get selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13814</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13814"/>
		<updated>2012-01-27T09:53:15Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Contacting developers/mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a task, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a task, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a tasks ===&lt;br /&gt;
Below, you'll find two lists of tasks:&lt;br /&gt;
* Tasks with a mentor&lt;br /&gt;
* Tasks without a mentor&lt;br /&gt;
If you choose a task with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a task without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the tasks, you're free to define your own task and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a task (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own task, explain (with reasonable amount of detail) what you intend to achieve and why you think your task should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the task of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding task in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code task before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected task. For example, if your task will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your task is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13813</id>
		<title>Libav Summer Of Code 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13813"/>
		<updated>2012-01-27T09:52:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: first iteration of a gsoc2012 page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How it works ==&lt;br /&gt;
&lt;br /&gt;
Google's Summer of Code program is simple: you (the student) work on a task, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a task, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.&lt;br /&gt;
&lt;br /&gt;
=== Selecting a tasks ===&lt;br /&gt;
Below, you'll find two lists of tasks:&lt;br /&gt;
* Tasks with a mentor&lt;br /&gt;
* Tasks without a mentor&lt;br /&gt;
If you choose a task with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a task without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the tasks, you're free to define your own task and find a mentor as mentioned before (see below for caveats).&lt;br /&gt;
&lt;br /&gt;
=== Contacting developers/mentors ===&lt;br /&gt;
Once you've found a task (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on libav-devel@libav.org or ffmpeg-devel@ffmpeg.org. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own task, explain (with reasonable amount of detail) what you intend to achieve and why you think your task should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.&lt;br /&gt;
&lt;br /&gt;
=== Your qualification task ===&lt;br /&gt;
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the task of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding task in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code task before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected task. For example, if your task will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your task is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.&lt;br /&gt;
&lt;br /&gt;
=== Videolan qualification tasks ===&lt;br /&gt;
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H265 decoder ===&lt;br /&gt;
&lt;br /&gt;
* HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.&lt;br /&gt;
* It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Ronald_S._Bultje|Ronald S. Bultje]]''&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13725</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13725"/>
		<updated>2011-11-27T00:25:06Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped. A patch to fix this is pending.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
tandberg 4/5 have large codec delays because of misordered frames, and the delay jumps randomly within the file. We don't preroll well enough to know the correct delay in advance and so at each point where we return a frame too far ahead in the future, we drop the preceeding frames once we get around to decoding them because we've already passed that point in units returned to the application. The correct solution for these would be to increase delay dynamically whenever we encounter a gap until either we're at max-delay, or until we've resolved the gap. almost certainly, max-delay should be settable in user applications so we can disable it for live/low-latency purposes. Q: should we return old frames also? The user may want to reorder himself (although this doesn't make much sense). Fate currently uses -strict 1 as a workaround for these samples, which simply forces codec-delay to 16. This is not the correct solution.&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13724</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13724"/>
		<updated>2011-11-27T00:18:03Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped. A patch to fix this is pending.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
tandberg 4/5 have large codec delays because of misordered frames, and the delay jumps randomly within the file. We don't preroll well enough to know the correct delay in advance and so at each point where we return a frame too far ahead in the future, we drop the preceeding frames once we get around to decoding them because we've already passed that point in units returned to the application. The correct solution for these would be to increase delay dynamically whenever we encounter a gap until either we're at max-delay, or until we've resolved the gap. almost certainly, max-delay should be settable in user applications so we can disable it for live/low-latency purposes. Q: should we return old frames also? The user may want to reorder himself (although this doesn't make much sense).&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13723</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13723"/>
		<updated>2011-11-27T00:03:44Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped. A patch to fix this is pending.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
tandberg 4/5 have large codec delays because of misordered frames, and the delay jumps randomly within the file. We don't preroll well enough to know the correct delay in advance and so at each point where we return a frame too far ahead in the future, we drop the preceeding frames once we get around to decoding them because we've already passed that point in units returned to the application. The correct solution for these would be to increase delay dynamically whenever we encounter a gap until either we're at max-delay, or until we've resolved the gap.&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13722</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13722"/>
		<updated>2011-11-27T00:03:29Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
tandberg 4/5 have large codec delays because of misordered frames, and the delay jumps randomly within the file. We don't preroll well enough to know the correct delay in advance and so at each point where we return a frame too far ahead in the future, we drop the preceeding frames once we get around to decoding them because we've already passed that point in units returned to the application. The correct solution for these would be to increase delay dynamically whenever we encounter a gap until either we're at max-delay, or until we've resolved the gap.&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13721</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13721"/>
		<updated>2011-11-20T04:34:02Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact. I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13720</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13720"/>
		<updated>2011-11-20T04:21:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact. I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped. MR4_TANDBERG_C sets has_b_Frames to 14 after the poc reset at that point.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13719</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13719"/>
		<updated>2011-11-20T00:37:06Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact. I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, and we drop all frames after that with a POC smaller than the POC of before the POC reset, causing a total of 41 frames to be dropped.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13718</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13718"/>
		<updated>2011-11-20T00:03:01Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* H.264 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact. I've briefly analyzed MR3_TANDBERG_B and it appears that the first 41 frames are bitexact. After 42 frames there is a reset of POCs, so assuming a delay of 1, it seems we don't handle POC resets. We should first output the remaining pre-reset pictures, but instead we output the new ones. There's more defects after that, we only output 259 frames, JM outputs 300.&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13682</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13682"/>
		<updated>2011-11-06T02:25:37Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact:&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Other samples from the H264 conformance suite that don't play back correctly ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13681</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13681"/>
		<updated>2011-11-06T01:30:15Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, look roughly OK but not bitexact:&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
=== Samples from the H264 conformance suite that don't play back at all ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13680</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13680"/>
		<updated>2011-11-06T00:46:01Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, but look roughly OK (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames, unanalyzed beyond that:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unanalyzed beyond that:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13672</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13672"/>
		<updated>2011-10-29T21:58:52Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Incomplete delayed picture support causing decoder to drop frames (patch pending):&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, but look roughly OK (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits:&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13671</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13671"/>
		<updated>2011-10-29T21:56:34Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Incomplete delayed picture support causing decoder to drop frames (patch pending):&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, but look roughly OK (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits (&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13670</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13670"/>
		<updated>2011-10-29T21:56:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Incomplete delayed picture support causing decoder to drop frames (patch pending):&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, but look roughly OK (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
For this one, we output only 12 of a few hundred-or-so frames:&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like CAVLC-444 isn't completely implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPCV444I1_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPCV444I2_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPCV444I3_Thomson_A.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Missing 14-bits support:&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444I1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444I2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444I3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444P1_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444P2_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444P3_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444P4_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/Professional_profiles/PPH444P5_Thomson_A.bits ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
FMO + 14-bits (&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13669</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13669"/>
		<updated>2011-10-29T20:02:04Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Incomplete delayed picture support causing decoder to drop frames (patch pending):&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed, but look roughly OK (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Probably a particular professional profile not yet implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I1_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I2_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I3_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13668</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13668"/>
		<updated>2011-10-29T20:01:45Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Incomplete delayed picture support causing decoder to drop frames (patch pending):&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Unanalyzed (i.e. may be a bug in my script):&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Probably a particular professional profile not yet implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I1_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I2_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I3_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13667</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13667"/>
		<updated>2011-10-29T18:19:32Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
 MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Those look approximately OK so I'm not yet sure if they're bitexact or my script is bad:&lt;br /&gt;
 MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
 FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
 MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
 MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Probably a particular professional profile not yet implemented:&lt;br /&gt;
 PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I1_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I2_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
 PP/PPCV444I3_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13666</id>
		<title>FATE failures</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FATE_failures&amp;diff=13666"/>
		<updated>2011-10-29T18:19:06Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although FATE can appear green, in fact many of the samples in FATE are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
The following samples are not bit-exact.&lt;br /&gt;
&lt;br /&gt;
=== H.264 ===&lt;br /&gt;
&lt;br /&gt;
FMO:&lt;br /&gt;
MAIN/FM1_FT_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/FM2_SVA_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/FM1_BT_B.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Those look approximately OK so I'm not yet sure if they're bitexact or my script is bad:&lt;br /&gt;
MAIN/HCBP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
MAIN/HCBP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
MAIN/HCMP1_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
MAIN/MR2_TANDBERG_E.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/MR3_TANDBERG_B.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/MR4_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/MR5_TANDBERG_C.264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
MAIN/sp1_bt_a.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
FR/HCHP1_HHI_B.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
FR/HCHP2_HHI_A.264 ... JF ( yuv420p @  352x288 /  25  fps) not equal&lt;br /&gt;
FR/HCHP3_HHI_A.264 ... JF ( yuv420p @  720x576 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Looks like garbage, unsure why:&lt;br /&gt;
MAIN/H26L/BitstreamExchange/sp2_bt_b.h264 ... JF ( yuv420p @  176x144 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Cropping:&lt;br /&gt;
MAIN/CVFC1_Sony_C.jsv ... JF ( yuv420p @  338x274 /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
Probably a particular professional profile not yet implemented:&lt;br /&gt;
PP/PPCV444I-7.264 ... JF ( yuv420p @  48x80 /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I4_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I5_Mitsubishi_A.264 ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I6_Mitsubishi_A.264 ... JF ( yuv420p @  48x48 /  25  fps) not equal&lt;br /&gt;
PP/PPH444I-7.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444I4_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444I5_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444I6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444P-10.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444P6_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444P7_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444P8_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPH444P9_Mitsubishi_A.264 ... JF ( 25 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I1_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I2_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
PP/PPCV444I3_2008.bits ... JF ( 50 fps @  25 tbr /  25  fps) not equal&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13385</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13385"/>
		<updated>2011-03-29T12:51:38Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Multithreading support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]]''&lt;br /&gt;
&lt;br /&gt;
''Young Han Lee has completed a qualification task (AAC LTP profile) for this project''&lt;br /&gt;
&lt;br /&gt;
=== Libav Usage Example, Tutorial and test suite ===&lt;br /&gt;
&lt;br /&gt;
* Prepare a serie of example program of increasing complexity&lt;br /&gt;
** Simple remuxer&lt;br /&gt;
** Simple decoding loop&lt;br /&gt;
** Simple encoding loop&lt;br /&gt;
** Simple transcoding loop&lt;br /&gt;
** Simple producer + consumer scenario with the network protocols&lt;br /&gt;
** ...&lt;br /&gt;
** Optionally it would lead to prepare a leaner equivalent to ffmpeg and ffplay&lt;br /&gt;
&lt;br /&gt;
* Examine when there are inconsistencies with the current API (e.g. unexpected timestamp mangling, packet splitting) and fix the issues.&lt;br /&gt;
&lt;br /&gt;
* Integrate the example programs as components of FATE.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Lu_zero|Luca Barbato]]''&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
''Shahriman AMS is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
''[[User:Spyfeng|Zhentan Feng]] is working on the qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
''Xiang Wang is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* define ways to use both slice-based and frame-based multithreading at the same time if decoders (and files) support both&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
* implement slice-based and/or frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in MJPEG decoder&lt;br /&gt;
* implement frame-based (or if you want to hurt yourself, try slice-based) multithreading in VC-1 decoder&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample formats and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check for example MPlayer/libaf)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
''Mina Nagy Zaki is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
&lt;br /&gt;
* Write a decoder for the screen video 2 format&lt;br /&gt;
* Enhance the encoder patch posted to ffmpeg-devel so it can be committed&lt;br /&gt;
* Write optimal 2-pass encoding support for the flash screen video 1 and possibly 2 encoder (djinkstra graph)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson (possibly some one else)''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for both interleaved and planar audio sample formats&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* design should allow for alternate conversion functions (e.g. sample format conversion with or without dithering and different sample rate conversion algorithms)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles&lt;br /&gt;
&lt;br /&gt;
=== MXF support ===&lt;br /&gt;
&lt;br /&gt;
* Support Clip Wrapping, Op1B, Avid proprietary files&lt;br /&gt;
* Support muxing DV, H.264&lt;br /&gt;
* Seeking support using index&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
:jlindgren is interested in this task&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13371</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13371"/>
		<updated>2011-03-25T02:03:34Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* Multithreading support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]]''&lt;br /&gt;
&lt;br /&gt;
''Young Han Lee has completed a qualification task (AAC LTP profile) for this project''&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
''Shahriman AMS is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
''[[User:Spyfeng|Zhentan Feng]] is working on the qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
''Xiang Wang is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* implement slice-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* define ways to use both slice-based and frame-based multithreading at the same time if decoders (and files) support both&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample formats and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check for example MPlayer/libaf)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
''Mina Nagy Zaki is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
&lt;br /&gt;
* Write a decoder for the screen video 2 format&lt;br /&gt;
* Enhance the encoder patch posted to ffmpeg-devel so it can be committed&lt;br /&gt;
* Write optimal 2-pass encoding support for the flash screen video 1 and possibly 2 encoder (djinkstra graph)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson (possibly some one else)''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for both interleaved and planar audio sample formats&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* design should allow for alternate conversion functions (e.g. sample format conversion with or without dithering and different sample rate conversion algorithms)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Justin Ruggles&lt;br /&gt;
&lt;br /&gt;
=== MXF support ===&lt;br /&gt;
&lt;br /&gt;
* Support Clip Wrapping, Op1B, Avid proprietary files&lt;br /&gt;
* Support muxing DV, H.264&lt;br /&gt;
* Seeking support using index&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13361</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13361"/>
		<updated>2011-03-18T19:44:21Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* VC-1 decoder missing features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]], task claimed by Young Han Lee (qualification task: AAC LTP profile)&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
''Shahriman AMS is working on a qualification task for this project''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
(Qualification claimed by Xiang Wang)&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* implement slice-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check for example MPlayer/libaf)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
&lt;br /&gt;
* Write a decoder for the screen video 2 format&lt;br /&gt;
* Enhance the encoder patch posted to ffmpeg-devel so it can be committed&lt;br /&gt;
* Write optimal 2-pass encoding support for the flash screen video 1 and possibly 2 encoder (djinkstra graph)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson (possibly some one else)''&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13360</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13360"/>
		<updated>2011-03-18T19:43:46Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* VC-1 decoder missing features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]], task claimed by Young Han Lee (qualification task: AAC LTP profile)&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
''Shahriman AMS is working on a qualification task for this project&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
(Qualification claimed by Xiang Wang)&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* implement slice-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check for example MPlayer/libaf)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
&lt;br /&gt;
* Write a decoder for the screen video 2 format&lt;br /&gt;
* Enhance the encoder patch posted to ffmpeg-devel so it can be committed&lt;br /&gt;
* Write optimal 2-pass encoding support for the flash screen video 1 and possibly 2 encoder (djinkstra graph)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson (possibly some one else)''&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2011&amp;diff=13359</id>
		<title>FFmpeg Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2011&amp;diff=13359"/>
		<updated>2011-03-18T19:41:49Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: FFmpeg Summer Of Code 2011 moved to FFmpeg / Libav Summer Of Code 2011&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FFmpeg / Libav Summer Of Code 2011]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13358</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13358"/>
		<updated>2011-03-18T19:41:49Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: FFmpeg Summer Of Code 2011 moved to FFmpeg / Libav Summer Of Code 2011&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]], task claimed by Young Han Lee (qualification task: AAC LTP profile)&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
(Qualification claimed by Xiang Wang)&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* implement slice-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (mjpeg-tools, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check for example MPlayer/libaf)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Stefano Sabatini (possibly with a backup mentor)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
&lt;br /&gt;
* Write a decoder for the screen video 2 format&lt;br /&gt;
* Enhance the encoder patch posted to ffmpeg-devel so it can be committed&lt;br /&gt;
* Write optimal 2-pass encoding support for the flash screen video 1 and possibly 2 encoder (djinkstra graph)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson (possibly some one else)''&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13345</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13345"/>
		<updated>2011-03-15T02:22:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]], task claimed by Young Han Lee (qualification task: AAC LTP profile)&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
(Qualification claimed by Xiang Wang)&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hardware accelerated decoder for Android devices ===&lt;br /&gt;
Most Android phones supports decoding H264 via an OpenMAX decoder interface. This interface is exposed through the Stagefright&lt;br /&gt;
multimedia framework. The flashplugin uses this to be able to have hardware accelerated decode of H264 bitstreams from Android&lt;br /&gt;
user space. As many Android devices will not be upgraded to Android 2.3 or users don't want to root/reflash their firmware this&lt;br /&gt;
will enable a lot of devices to install a libavcodec based media player while still having hardware accelerated H264 decode.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support in FFmpeg. The task is relatively unspecific, but your&lt;br /&gt;
basic goal will be to add multithreading support to a variety of decoders in FFmpeg, by using existing infrastructure. Examples goals&lt;br /&gt;
could include:&lt;br /&gt;
* implement slice-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* implement frame-based threading in FFmpeg's VP8 decoder&lt;br /&gt;
* Fix problems with FFmpeg's slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Help merging the remaining bits of ffmpeg-mt into the main repository (i.e. H.264/MPEG decoder multithreading)&lt;br /&gt;
* Implement functions in the ffmpeg/ffplay binaries to autodetect the number of CPUs/cores and autodetect the number of threads to use (if unspecified)&lt;br /&gt;
* Multithreading in other decoders that currently don't support it&lt;br /&gt;
&lt;br /&gt;
''Mentor: (hopefully) Alexander Strange and Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (yuvjpeg, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check libaf in MPlayer/libmpcodecs)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13337</id>
		<title>FFmpeg / Libav Summer Of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13337"/>
		<updated>2011-03-11T01:57:22Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[FFmpeg]] project has been a participant in the [http://code.google.com/soc/ Google Summer of Code] program since 2006.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code_2011|2011 project page]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code_2010|2010 project page]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code_2009|2009 project page]]&lt;br /&gt;
* [[FFmpeg Summer Of Code 2008|2008 project page]]&lt;br /&gt;
* [[FFmpeg Summer Of Code 2007|2007 project page]]&lt;br /&gt;
* [[FFmpeg Summer Of Code 2006|2006 project page]]&lt;br /&gt;
&lt;br /&gt;
Each accepted project is developed in its own sandbox, separate from the main FFmpeg codebase. Naturally, the end goal of each of the accepted FFmpeg projects ought to be to have that code in shape for acceptance into the production codebase. This page tracks the status of each project and how well each student did.&lt;br /&gt;
&lt;br /&gt;
== 2006 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== VC-1 Decoder ===&lt;br /&gt;
* Student: [[User:Kostya|Kostya Shishkov]]&lt;br /&gt;
* Mentor: [[User:Multimedia Mike|Mike Melanson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Decoder ===&lt;br /&gt;
* Student: [[User:superdump|Robert Swain]]&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer.&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;Project not finished during SoC.&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: Continued in another Summer of Code [[FFmpeg Summer Of Code#Finish AMR-NB decoder and write an encoder|task]] and &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AC-3 Decoder ===&lt;br /&gt;
* Student: [[User:Cloud9|Kartikey Mahendra BHATT]]&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;disappeared, project unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: Picked up by [[User:Jruggle|Justin Ruggles]] and &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;committed to FFmpeg&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== AAC Decoder ===&lt;br /&gt;
* Student: Maxim Gavrilov&lt;br /&gt;
* Mentor: [[User:ods15|Oded Shimon]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;disappeared, project unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: Picked up by [[User:andoma|Andreas Öman]] and [[User:superdump|Robert Swain]] and &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;committed to FFmpeg&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Vorbis Encoder ===&lt;br /&gt;
* Student: Mathew Philip&lt;br /&gt;
* Mentor: [[User:ods15|Oded Shimon]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;disappeared, project barely started&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: Picked up by [[User:ods15|Oded Shimon]] and &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;committed to FFmpeg&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 2007 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== RealVideo 4 Decoder ===&lt;br /&gt;
* Student: [[User:Kostya|Kostya Shishkov]]&lt;br /&gt;
* Mentor: [[User:Multimedia Mike|Mike Melanson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt; The project goal morphed to include a RealVideo 3 decoder since the 2 schemes are so similar.&lt;br /&gt;
&lt;br /&gt;
=== QCELP Decoder ===&lt;br /&gt;
* Student: [[User:Reynaldo|Reynaldo Verdejo Pinochet]]&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg commiter&amp;lt;/font&amp;gt;. &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;Produced a working decoder during SoC but the code didn't reach SVN before the end of the program&amp;lt;/font&amp;gt;.&lt;br /&gt;
* Code Status: Picked up by Kenan Gillet and with the help of [[User:Reynaldo|Reynaldo]] &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;committed to FFmpeg&amp;lt;/font&amp;gt;. Some features still missing, though.&lt;br /&gt;
&lt;br /&gt;
=== Matroska Muxer ===&lt;br /&gt;
* Student: David Conrad&lt;br /&gt;
* Mentor: [[User:aurel|Aurélien Jacobs]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video Filter API (AKA [[Libavfilter|libavfilter]]) ===&lt;br /&gt;
* Student: [[User:Koorogi|Bobby Bingham]]&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]] and Michael Niedermayer&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;project not finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== E-AC-3 Decoder ===&lt;br /&gt;
* Student: Bartlomiej Wolowiec&lt;br /&gt;
* Mentor:  [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;; &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;code produced worked for most available samples, but there were some unimplemented features.&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: Picked up by [[User:Jruggle|Justin Ruggles]], finished and &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;committed to FFmpeg&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== JPEG 2000 Encoder and Decoder ===&lt;br /&gt;
* Student: Kamil Nowosad&lt;br /&gt;
* Mentor: [[User:pengvado|Loren Merritt]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;disappeared, project unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;The code is working but not all features are supported.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dirac Encoder and Decoder ===&lt;br /&gt;
* Student: Marco Gerards&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;project not finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;The decoder is in good shape, the encoder still needs more work. Both need to be updated to the latest spec.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TS Muxer ===&lt;br /&gt;
* Student: Xiaohui Sun&lt;br /&gt;
* Mentor:  [[User:bcoudurier|Baptiste Coudurier]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;disappeared, project unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt; [[Interesting Patches#PES packetizer by Xiaohui Sun|Changes]] requested during the review process for FFmpeg inclusion were never made.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2008 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Generic frame-level multithreading support  ===&lt;br /&gt;
* Student: Alexander Strange &lt;br /&gt;
* Mentor: Kristian Jerpetjoen&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;in process&amp;lt;/font&amp;gt; here: http://gitorious.org/projects/ffmpeg/repos/ffmpeg-mt&lt;br /&gt;
&lt;br /&gt;
=== Nellymoser Encoder ===&lt;br /&gt;
* Student: Bartlomiej Wolowiec &lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  ALAC Encoder ===&lt;br /&gt;
* Student: [[User:Jai|Jai Menon]]&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LGPL reimplementation of GPL sws_scale parts ===&lt;br /&gt;
* Student: Keiji Costantini&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;project unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: The GPL YUV table generator has since been &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;implemented as LGPL by [[User:Kostya|Kostya Shishkov]]&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== AAC-LC Encoder ===&lt;br /&gt;
* Student: [[User:Kostya|Kostya]]&lt;br /&gt;
* Mentor: [[User:Andoma|Andreas Öman]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;merged but terrible&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MLP/TrueHD encoder ===&lt;br /&gt;
* Student: [[User:Angustia|Ramiro Polla]]&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;MLP encoder never finished&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;MLP decoder committed to FFmpeg&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== WMA Pro Decoder ===&lt;br /&gt;
* Student: Sascha Sommer&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MXF Muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor:  [[User:Bcoudurier|Baptiste Coudurier]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;finished project&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2009 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== RTMP Support (Flash streaming) ===&lt;br /&gt;
* Student: [[User:Kostya|Kostya Shishkov]]&lt;br /&gt;
* Mentor:  [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libswscale cleanup ===&lt;br /&gt;
* Student: [[User:Angustia|Ramiro Polla]]&lt;br /&gt;
* Mentor: [[User:reimar|Reimar Döffinger]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;partially committed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== S/PDIF muxer ===&lt;br /&gt;
* Student: Bartlomiej Wolowiec &lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Playlist/Concatenation Support for FFmpeg ===&lt;br /&gt;
* Student: [[User:Gkovacs|Geza Kovacs]]&lt;br /&gt;
* Mentor:  [[User:Bcoudurier|Baptiste Coudurier]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;project not finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG2000 decoder and encoder ===&lt;br /&gt;
* Student: [[User:Jai|Jai Menon]]&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;abandoned project&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Implement the New Seeking API in Libavformat ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor:  [[User:Bcoudurier|Baptiste Coudurier]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;project not finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[MPEG-4 Audio Lossless Coding (ALS)|MPEG-4 ALS]] decoder ===&lt;br /&gt;
* Student: Thilo Borgmann&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;FFmpeg committer&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Implementation of AVFilter infrastructure and various audio filters ===&lt;br /&gt;
* Student: Kevin Dubois&lt;br /&gt;
* Mentor:  [[User:Vitor|Vitor Sessak]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;project not finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;unfinished&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Finish AMR-NB decoder and write an encoder ===&lt;br /&gt;
* Student: Colin McQuillan&lt;br /&gt;
* Mentor:  [[User:superdump|Robert Swain]]&lt;br /&gt;
* Student Status: &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;AMR-NB decoder almost finished during SoC&amp;lt;/font&amp;gt;&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;AMR-NB decoder accepted into the FFmpeg codebase&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;AMR-NB encoder not started&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 2010 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Improve RTSP/RTP layer ===&lt;br /&gt;
* Student: Josh Allmann&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: [[Improve RTSP/RTP layer|roadmap/checklist]]&lt;br /&gt;
&lt;br /&gt;
=== Writing an AMR-WB audio decoder ===&lt;br /&gt;
* Student: Marcelo Povoa&lt;br /&gt;
* Mentor: [[User:superdump|Robert Swain]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;AMR-WB decoder accepted into the FFmpeg codebase&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MMS protocol Implementation ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;MMSH and MMST protocols accepted into FFmpeg codebase&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;MMSU protocol not started&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== G.723.1 Decoder/Encoder ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
&lt;br /&gt;
=== Libavfilter audio framework and filters ===&lt;br /&gt;
* Student: S.N. Hemanth Meenakshisundaram&lt;br /&gt;
* Mentor: Stefano Sabatini&lt;br /&gt;
* Code status: &amp;lt;font color=&amp;quot;#AAAA00&amp;quot;&amp;gt;partially integrated in the FFmpeg codebase&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MOD audio playback support ===&lt;br /&gt;
* Student: Sebastian Vater&lt;br /&gt;
* Mentor: Stefano Sabatini, Vitor Sessak&lt;br /&gt;
* Code status: &amp;lt;font color=&amp;quot;#AAAA00&amp;quot;&amp;gt;implemented in external repo, not integrated into FFmpeg codebase&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accurate Seeking API ===&lt;br /&gt;
* Student: Michael Chinen&lt;br /&gt;
* Mentor: [[User:Bcoudurier|Baptiste Coudurier]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13336</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13336"/>
		<updated>2011-03-11T01:56:23Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* BSAC AAC Decoder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]], task claimed by Young Han Lee (qualification task: AAC LTP profile)&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (yuvjpeg, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check libaf in MPlayer/libmpcodecs)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support. SVN merge.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== WMA lossless ===&lt;br /&gt;
* Implement a decoder for WMA lossless (0x0163)&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/WMA9/wma_0x163.wma http://samples.mplayerhq.hu/A-codecs/lossless/luckynight.wma&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13331</id>
		<title>FFmpeg / Libav Summer Of Code 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code_2011&amp;diff=13331"/>
		<updated>2011-03-09T17:39:04Z</updated>

		<summary type="html">&lt;p&gt;Ronald S. Bultje: /* VC1 decoder missing features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Qualification tasks ==&lt;br /&gt;
&lt;br /&gt;
For us to consider your application for SoC we require a completed qualification task. Many Summer-of-Code projects (in the list below) have specific qualification tasks. These tasks are meant to make you familiar with the code that you will be working with, are at approximately the same difficulty level as the actual Summer-of-Code project itself (just a lot smaller), and often already provide you with a jumpstart into your Summer-of-Code project. We suggest the following order of events:&lt;br /&gt;
* First, select a Summer-of-Code project (either from the list below, but in some cases you may also come up with your own)&lt;br /&gt;
* Second, discuss this project with the person that will mentor it. If a mentor is listed, talk to him on IRC, via email or so. If no mentor is listed, find one by emailing the FFmpeg-soc mailinglist.&lt;br /&gt;
* With your mentor, discuss the most appropriate qualification task for your Summer-of-Code project.&lt;br /&gt;
If no specific qualification task is listed for your project of interest, you can discuss with your mentor to choose a task from the [[Small FFmpeg Tasks|Small Tasks list]] or the [[Interesting Patches|Interesting Patches list]] instead. If your prospective mentor agrees, please send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work). You can discuss progress on your qualification task and initial review of your finished qualification task on the FFmpeg-soc mailinglist (sometimes the patch will have to go through final review on the main FFmpeg development mailinglist before it can be applied also). The qualification task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
Before posting to the FFmpeg-soc mailinglist, make sure you read and understand [http://www.ffmpeg.org/contact.html our netiquette guidelines], especially avoid top-posting and thread-hijacking (note that if you don't understand one of those terms, make sure to have understood them before writing your first post). Before you send us your patch, read our [http://www.ffmpeg.org/general.html#SEC23 development guidelines] and make sure your patch fulfills all the requirements stated there. You should also familiar with the programs diff, patch and Subversion. You have to learn these basics on your own before you start, we will not teach them to you during the application process.&lt;br /&gt;
&lt;br /&gt;
A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).&lt;br /&gt;
&lt;br /&gt;
== 1st Tier Project Proposals ==&lt;br /&gt;
1st tier project proposals are project ideas that are reasonably well defined '''AND''' have a mentor volunteered.&lt;br /&gt;
&lt;br /&gt;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantization from the rest of AAC decoder.&lt;br /&gt;
* Write a BSAC AAC decoder.&lt;br /&gt;
* Reuse as much of the existing AAC decoder and libavcodec as possible. &lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
&lt;br /&gt;
=== [[VC-1]] decoder missing features  ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* Add support for chroma/luma scaling, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add support for slice decoding, used in [https://roundup.ffmpeg.org/issue1477 RTP/VC1].&lt;br /&gt;
* Add optimizations for x86-32/64 (or ARM), so that HD streams play back faster.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:Kostya|Kostya Shishkov]], [[User:Ronald S. Bultje|Ronald S. Bultje]] and (maybe) Christophe Gisquet''&lt;br /&gt;
&lt;br /&gt;
=== [[WTV|Windows Television (WTV)]] muxer ===&lt;br /&gt;
&lt;br /&gt;
* Qualification task: develop a prototype WTV muxer that can produce files then able to be demuxed by FFmpeg.&lt;br /&gt;
* The objective of this project is produce files that are compatible with Microsoft Windows Media Center. To achieve this, one must determine which of the many undocumented data types are expected by Microsoft Stream Buffer Engine, discover their format, and implement these in the muxer.&lt;br /&gt;
* The muxer must support metadata and indexing.&lt;br /&gt;
* Clearly defined task; reverse engineering skills required.&lt;br /&gt;
''Mentor: [[User:Suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
== 1st tier proposals of last year ==&lt;br /&gt;
These are the same as above-mentioned 1st tier proposals, but we're not sure yet if we'll repeat them. Once mentors are OK, please move them up.&lt;br /&gt;
&lt;br /&gt;
=== NEW Seeking API ===&lt;br /&gt;
*primary goal: implement a new seeking API in libavformat&lt;br /&gt;
** implement av_seek_file in libavformat&lt;br /&gt;
** implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.&lt;br /&gt;
** implement av_build_index function which will build an AVIndex for the file&lt;br /&gt;
** implement av_export_index function which will save AVIndex in a file which can be loaded later.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Baptiste Coudurier''&lt;br /&gt;
&lt;br /&gt;
=== AACS implementation ===&lt;br /&gt;
* this task probably is to get libbluray integrated with vlc/mplayer/ffmpeg and working with as many discs as possible.&lt;br /&gt;
* Add the ability to encode and decode using Advanced Access Content System to FFmpeg.&lt;br /&gt;
* Specifications: http://www.aacsla.com/specifications/&lt;br /&gt;
* existing implementation e.g. DumpHD: http://forum.doom9.org/showthread.php?t=123111&lt;br /&gt;
* Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application&lt;br /&gt;
** possible solution: only implement &amp;quot;lowest&amp;quot; level (decode given the correct title key) but implement CSS en- and decryption as secondary goal&lt;br /&gt;
&lt;br /&gt;
''Mentor: Reimar Döffinger''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the FFmpeg filtering library that started as a 2007 SoC [[FFmpeg Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the FFmpeg main source tree, but there a few bits remaining. This project would consist in a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed (this includes: the rotate, split, and fps filters)&lt;br /&gt;
* Port all the missing filters from MPlayer (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
* Framework: implement dynamic-reconfiguration of the filterchain, for supporting dynamic size/format changes&lt;br /&gt;
* Port filters from other frameworks (yuvjpeg, effectv, frei0r, virtualdub, vlc, etc...)&lt;br /&gt;
* Write wrappers for more image processing libraries and filtering frameworks (libgimp, libgraphicsmagic, weed), extend the libopencv wrapper for supporting more filters (this may need implemented float image support in libswscale)&lt;br /&gt;
* Write more filters (possibly starting from already posted filters which for a reason or another were never committed, e.g. concatenate, fish, 2xsai, select, lut, eval, posterize, elbg/posterize etc.)&lt;br /&gt;
* Implement a compose filter (suggestion for a better name?), for creating a mosaic of the input video streams&lt;br /&gt;
* Write a movie sink (e.g. it could be useful for implementing a display functionality, e.g. when the video is dumped to an output device)&lt;br /&gt;
* Write a frequency domain filter using the FFT implementation in libavcodec&lt;br /&gt;
* Write a Matlab/Octave/SAGE scripting wrapper (assuming it can be done)&lt;br /&gt;
* More ideas?&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has incomplete support for handling audio. This task would consist of a combination of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Fix the remaining outstanding issues and complete the audio framework integration (check the saste's audio-filters FFmpeg branch on gitorious)&lt;br /&gt;
* Make the resampling filter works for several combinations of sample format and channels&lt;br /&gt;
* Write a visualization filter as proof-of-concept of a filter that works with both video and audio&lt;br /&gt;
* Extend/improve libav* audio resampling/rematrixing/requantization capabilities (this may need to re-design the audio API, maybe it deserves a task on its own)&lt;br /&gt;
* Write/port basic audio filters (check libaf in MPlayer/libmpcodecs)&lt;br /&gt;
* Write wrapper for audio frameworks (sox, ladspa, ...)&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined''&lt;br /&gt;
&lt;br /&gt;
=== Rewrite the audio format conversion code ===&lt;br /&gt;
&lt;br /&gt;
* right now, we're using audioresample to resample audio (samplerate / channels) and audioconvert to resample audio format (int, float, 16-bit, 32-bit). We'd like a new, swscale-style implementation that combines these two in a single codebase&lt;br /&gt;
* design should allow for SIMD optimization of popular conversions (float-int16, int16-float)&lt;br /&gt;
* fix bugs in current design (clipping, overflows when going from float to int, questionable rounding)&lt;br /&gt;
&lt;br /&gt;
''Mentor: to be decided&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Specification: http://wiki.multimedia.cx/index.php?title=Mirror&lt;br /&gt;
* Sample files: http://samples.mplayerhq.hu/A-codecs/DTS/&lt;br /&gt;
* Qualification: Extend the encoder in the SoC tree (port the float transform from the decoder, fix the LFE channel generation).&lt;br /&gt;
* Primary goal: Encoder that can produce multi sample rate, multi channel files and multi bit-rate. Wav and raw muxing support. SVN merge.&lt;br /&gt;
* Secondary goal: Techniques from specification implemented, optimal codebook usage, vector quantization, simple psycho acoustics.&lt;br /&gt;
* Third goal: Advanced psycho acoustics.&lt;br /&gt;
&lt;br /&gt;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== h264 decoder optimizations ===&lt;br /&gt;
* Quite simply, make our decoder faster&lt;br /&gt;
* Qualification task: make our decoder 1% faster&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
=== Add support for Bayer RGB colour format ===&lt;br /&gt;
Since it is not even clear if this should be implemented in libswscale or libavcodec, this should be discussed on ffmpeg-devel or ffmpeg-soc before submitting.&lt;br /&gt;
There was a related discussion on mplayer-devel once and at least two related FFmpeg issues:&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.mplayer.devel/48091&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1816&lt;br /&gt;
* http://roundup.ffmpeg.org/issue1837&lt;br /&gt;
* Contact Peter Ross for his latest working patch (Jan-2011)&lt;br /&gt;
&lt;br /&gt;
''Mentor: Michael Niedermayer''&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
All that separates these proposals from their 1st tier brethren is a lack of mentor.&lt;br /&gt;
&lt;br /&gt;
=== Finish SoC projects from previous years ===&lt;br /&gt;
Some projects are lingering in the dark unfinished. They should be picked up and made ready for inclusion. These projects are potentially less involved than starting from scratch, but also more useful for FFmpeg since the probability that the projects get finished should be higher. If some of them are deemed too easy, they could be combined.&lt;br /&gt;
&lt;br /&gt;
Unfinished projects from previous years are:&lt;br /&gt;
&lt;br /&gt;
2007:&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2008:&lt;br /&gt;
* [[FFmpeg Summer Of Code#Generic frame-level multithreading support|Generic frame-level multithreading support]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_Summer_Of_Code#Implementation_of_AVFilter_infrastructure_and_various_audio_filters|AVFilter audio infrastructure]]&lt;br /&gt;
&lt;br /&gt;
For the current status of all SoC projects up to date, see [[FFmpeg Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/WVP2/ http://samples.mplayerhq.hu/V-codecs/WVP2/]&lt;br /&gt;
* Suggested qualification task: [[Reverse_Engineering|Reverse engineer]] the frame header parsing or the actual frame data parsing&lt;br /&gt;
&lt;br /&gt;
=== WMA lossless ===&lt;br /&gt;
* Implement a decoder for WMA lossless (0x0163)&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/WMA9/wma_0x163.wma http://samples.mplayerhq.hu/A-codecs/lossless/luckynight.wma&lt;br /&gt;
&lt;br /&gt;
=== RALF Realaudio Lossless ===&lt;br /&gt;
* RE and implement a decoder for this format&lt;br /&gt;
* Reuse as much libavcodec code as possible&lt;br /&gt;
&lt;br /&gt;
=== libvo ===&lt;br /&gt;
* Port MPlayer's libvo to ffplay&lt;br /&gt;
* Note that this does not just mean to produce a working hack so that ffplay can use xv, but a clean and acceptable wrapper for (most of) libvo.&lt;br /&gt;
* An alternative might be to only port the OpenGL part of libvo into a new glplay. This should be discussed on ffmpeg-devel before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT Decoder ===&lt;br /&gt;
* Specification:  http://celt-codec.org/docs&lt;br /&gt;
Also see [[CELT]].&lt;br /&gt;
&lt;br /&gt;
=== AMR-NB Encoder ===&lt;br /&gt;
* Specification: http://www.3gpp.org/ftp/Specs/html-info/26-series.htm&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/amr/&lt;br /&gt;
Also see [[AMR]].&lt;br /&gt;
&lt;br /&gt;
=== VP6 Encoder ===&lt;br /&gt;
* Specification: [[On2 VP6]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/VP6/&lt;br /&gt;
&lt;br /&gt;
=== WMV3 Encoder ===&lt;br /&gt;
* Clearly defined task&lt;br /&gt;
* Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.&lt;br /&gt;
&lt;br /&gt;
This could either be done by improving [[Interesting Patches#WMV3 encoder by Denis Fortin|this patch]] or by writing the encoder from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Improve subtitle support ===&lt;br /&gt;
&lt;br /&gt;
* Add text-to-bitmap conversion functions&lt;br /&gt;
* One with hard-coded bitmaps for characters&lt;br /&gt;
* One that utilizes freetype&lt;br /&gt;
* Function used will be chosen upon compilation&lt;br /&gt;
&lt;br /&gt;
Adjust existing subtitle support to new ABI&lt;br /&gt;
* ABI change: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html&lt;br /&gt;
&lt;br /&gt;
=== Improve Ratecontrol ===&lt;br /&gt;
*Primary goal 1: Fast heuristic VBV compliant per macroblock ratecontrol which has a better PSNR/bitrate and better subjective quality/bitrate than the current code. &lt;br /&gt;
*Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm. &lt;br /&gt;
*Secondary goal 1: Fast heuristic scene change detection which detects scene changes more accurately, has better PSNR/bitrate and subjective quality/bitrate than the current heuristic. &lt;br /&gt;
*Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection. &lt;br /&gt;
*Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.&lt;br /&gt;
&lt;br /&gt;
=== SILK decoder and/or encoder ===&lt;br /&gt;
* A specification was published: http://tools.ietf.org/html/draft-vos-silk-01&lt;br /&gt;
&lt;br /&gt;
=== DTS-HD Master Audio decoder ===&lt;br /&gt;
* You should know exactly what you do if you submit an application.&lt;br /&gt;
&lt;br /&gt;
=== ATRAC3plus ===&lt;br /&gt;
* Implement a decoder for [[ATRAC3plus]].&lt;br /&gt;
&lt;br /&gt;
=== Dolby E ===&lt;br /&gt;
* Implement a decoder for [[Dolby E]].&lt;br /&gt;
&lt;br /&gt;
=== MPEG-4 SLS ===&lt;br /&gt;
* FFmpeg has currently no support for [[MPEG-4 SLS]]&lt;br /&gt;
&lt;br /&gt;
=== DirectShow capture ===&lt;br /&gt;
* Implement an indev for DirectShow capture on Windows (and support A/V synchronisation).&lt;br /&gt;
* Qualification: Get [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/106245 GDI] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/105810 waveform] capture integrated into FFmpeg SVN with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Ronald S. Bultje</name></author>
	</entry>
</feed>