<?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=DonDiego</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=DonDiego"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/DonDiego"/>
	<updated>2026-06-13T11:43:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14366</id>
		<title>Libav Summer Of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14366"/>
		<updated>2013-02-24T19:17:11Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: The Grand Refactoring project idea&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 the project and has considerable standing in the community. By doing so, you'll learn to operate in an open source 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, 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 the mailing lists as well. Hop on irc.freenode.net, channel #libav-devel, or mail us at libav-devel@libav.org. There, you'll be able to ask around for persons to guide you on 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 slots we are allotted 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.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete APIs to provide hardware acceleration wrapping. One, deprecated, is to make a full decoder and signal its capabilities somehow, the other integrates in the stock decoder, has some provision for transparent fallback, but lacks a clean way to setup and pass configuration options to it.&lt;br /&gt;
&lt;br /&gt;
The project should improve the available abstraction, migrate the currently implemented ones and add more hardware acceleration interfaces.&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;
=== VP9 Native Decoder ===&lt;br /&gt;
&lt;br /&gt;
The WebM team is refining the evolution of their VP8 codec using a number of additional tools and tunings. The project involves providing a baseline&lt;br /&gt;
decoder as first step and optimizing it to be at least as fast as the libvpx one on one of the most used architectures (ARM and x86_64).&lt;br /&gt;
&lt;br /&gt;
[http://tools.ietf.org/html/draft-grange-vp9-bitstream-00 current draft]&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== WebP Lossless Native codec and WebP Lossy decoder ===&lt;br /&gt;
&lt;br /&gt;
WebP is a promising image format that could supercede [[JPEG]] and [[PNG]] as common format for web images, it leverages VP8 for lossy&lt;br /&gt;
encoding and uses a relatively simple original format for the lossless part.&lt;br /&gt;
&lt;br /&gt;
The project is split in a number of easy tasks, such as writing a decoder for both the lossy and the lossless mode and a much harder task that is providing a good encoder for the lossless part, at least. (Exceptional praise for producing a good lossy encoder but it is not required.)&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== Native DVD support ===&lt;br /&gt;
&lt;br /&gt;
Most of the open source support for DVDs is available through libdvdread and libdvdnav. Currently there is some effort to unify them&lt;br /&gt;
in a single library (libdvd5). An additional step would be factoring the non-interactive part of into the libav codebase to leverage even more code and leave as stand alone library the parts that require some kind of interaction.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:flameeyes|Diego Pettenò]]&lt;br /&gt;
&lt;br /&gt;
=== Restructuring the MPEG video family of codecs ===&lt;br /&gt;
&lt;br /&gt;
Many encoders and decoders currently use the MpegEncContext structure and its associated API. This structure is a huge monolithic blob which combines the features of all those encoders and decoders, thus making it very fragile and hard to understand.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is splitting out parts of the MpegEncContext API into self-contained structures that would be easier to grasp, while still allowing code reuse where appropriate.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:elenril|Anton Khirnov]]&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;
=== The Grand Refactoring (working title) ===&lt;br /&gt;
&lt;br /&gt;
Many parts of the libav codebase are still unnecessarily monolithic. This makes custom builds that only support a subset of the multitude of formats we have larger than they need to be. The goal of this project will be to locate parts that can be separated and refactor the code so that each subpart can be compiled standalone so as to not increase the size of a custom configuration without the part.&lt;br /&gt;
&lt;br /&gt;
A suitable qualification task for this project is picking a simple encoder/decoder pair or some part of dsputil (harder) and splitting it cleanly.&lt;br /&gt;
&lt;br /&gt;
Note that this project will consist of multiple small subtasks and is therefore highly parallelizable. More than one student could apply for and work on this at the same time, each on different subtasks.&lt;br /&gt;
&lt;br /&gt;
''Mentor: [[User:DonDiego|Diego Biurrun]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2nd Tier Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
None of these are confirmed yet, just added here as ideas.&lt;br /&gt;
&lt;br /&gt;
=== Assembly Unit Testing Framework ===&lt;br /&gt;
* Libav has a lot of assembly and not enough tests for it. Your job is to write a unit testing framework for assembly.&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;
* The qualification task will be to implement at least one unit test and have an idea of how to do the rest.&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;
=== 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;
=== 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;
=== 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;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14325</id>
		<title>Libav Summer Of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14325"/>
		<updated>2013-02-14T02:05:29Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add last year's unfinished projects as ideas.&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 the project and has considerable standing in the community. By doing so, you'll learn to operate in an open source 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, 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 the mailing lists as well. Hop on irc.freenode.net, channel #libav-devel, or mail us at libav-devel@libav.org. There, you'll be able to ask around for persons to guide you on 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 slots we are allotted 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.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete APIs to provide hardware acceleration wrapping. The project should improve the available abstraction, migrate the currently implemented ones and add more hardware acceleration interfaces.&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;
=== VP9 Native Decoder ===&lt;br /&gt;
&lt;br /&gt;
The WebM team is refining the evolution of their VP8 codec using a number of additional tools and tunings. The project involves providing a baseline&lt;br /&gt;
decoder as first step and optimizing it to be at least as fast as the libvpx one on one of the most used architectures (ARM and x86_64).&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== WebP Lossless Native codec and WebP Lossy decoder ===&lt;br /&gt;
&lt;br /&gt;
WebP is a promising image format that could supercede [[JPEG]] and [[PNG]] as common format for web images, it leverages VP8 for lossy&lt;br /&gt;
encoding and uses a relatively simple original format for the lossless part.&lt;br /&gt;
&lt;br /&gt;
The project is split in a number of easy tasks, such as writing a decoder for both the lossy and the lossless mode and a much harder task that is providing a good encoder for the lossless part, at least. (Exceptional praise for producing a good lossy encoder but it is not required.)&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== Native DVD support ===&lt;br /&gt;
&lt;br /&gt;
Most of the open source support for DVDs is available through libdvdread and libdvdnav. Currently there is some effort to unify them&lt;br /&gt;
in a single library (libdvd5). An additional step would be factoring the non-interactive part of into the libav codebase to leverage even more code and leave as stand alone library the parts that require some kind of interaction.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:flameeyes|Diego Pettenò]]&lt;br /&gt;
&lt;br /&gt;
=== Restructuring the MPEG video family of codecs ===&lt;br /&gt;
&lt;br /&gt;
Many encoders and decoders currently use the MpegEncContext structure and its associated API. This structure is a huge monolithic blob which combines the features of all those encoders and decoders, thus making it very fragile and hard to understand.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is splitting out parts of the MpegEncContext API into self-contained structures that would be easier to grasp, while still allowing code reuse where appropriate.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:elenril|Anton Khirnov]]&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;
== 2nd Tier Project Proposals ==&lt;br /&gt;
&lt;br /&gt;
None of these are confirmed yet, just added here as ideas.&lt;br /&gt;
&lt;br /&gt;
=== Assembly Unit Testing Framework ===&lt;br /&gt;
* Libav has a lot of assembly and not enough tests for it. Your job is to write a unit testing framework for assembly.&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;
* The qualification task will be to implement at least one unit test and have an idea of how to do the rest.&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;
=== 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://www.itscj.ipsj.or.jp/sc29/open/29view/29n12612c.htm&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;
Note that this is a difficult project. Do not try to apply unless you already have experience with H.264 as well as reading and writing complex C code.&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;
=== 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;
* Bayer layouts&lt;br /&gt;
* Other general cleanup&lt;br /&gt;
&lt;br /&gt;
''Mentor: Kieran Kunhya (kierank)''&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;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14323</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=14323"/>
		<updated>2013-02-13T23:17:42Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: fix category&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 Unit Testing Framework ===&lt;br /&gt;
* Libav has a lot of assembly and not enough tests for it. Your job is to write a unit testing framework for assembly.&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;
* The qualification task will be to implement at least one unit test and have an idea of how to do the rest.&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;
=== 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://www.itscj.ipsj.or.jp/sc29/open/29view/29n12612c.htm&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;
Note that this is a difficult project. Do not try to apply unless you already have experience with H.264 as well as reading and writing complex C code.&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;
* Bayer layouts&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:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=14322</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=14322"/>
		<updated>2013-02-13T22:46:38Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add link to 2013 SoC page.&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[Libav Summer Of Code 2013|2013 Libav project page]]&lt;br /&gt;
* [[Libav Summer Of Code 2012|2012 Libav project page]]&lt;br /&gt;
* [[FFmpeg / Libav 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 / Libav codebase. Naturally, the end goal of each of the accepted 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;, &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;
=== 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;#00CC00&amp;quot;&amp;gt;Decoder committed to FFmpeg,&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt; the encoder still needs more work.&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;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
* 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;
=== 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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&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;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Code Status: [https://github.com/shahriman/libav WiP]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&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;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&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;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&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;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Decoder accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2012 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H.265 video decoder ===&lt;br /&gt;
* Student: Guillaume Martres&lt;br /&gt;
* Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]&lt;br /&gt;
* Code Status: [https://github.com/smarter/libav/tree/hevc &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;in progress&amp;lt;/font&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
* Student: Andrew D'Addesio&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Code Status: [https://github.com/Fatbag/libav &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;in progress&amp;lt;/font&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
* Student: Samuel Pitoiset&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ut Video encoder ===&lt;br /&gt;
* Student: Jan Ekström&lt;br /&gt;
* Mentor: Derek Buitenhuis&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14321</id>
		<title>Libav Summer Of Code 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2013&amp;diff=14321"/>
		<updated>2013-02-13T22:43:31Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: minor wording fixes&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 the project and has considerable standing in the community. By doing so, you'll learn to operate in an open source 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, 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 the mailing lists as well. Hop on irc.freenode.net, channel #libav-devel, or mail us at libav-devel@libav.org. There, you'll be able to ask around for persons to guide you on 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 slots we are allotted 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.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration API ===&lt;br /&gt;
&lt;br /&gt;
Libav has two different and incomplete APIs to provide hardware acceleration wrapping. The project should improve the available abstraction, migrate the currently implemented ones and add more hardware acceleration interfaces.&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;
=== VP9 Native Decoder ===&lt;br /&gt;
&lt;br /&gt;
The WebM team is refining the evolution of their VP8 codec using a number of additional tools and tunings. The project involves providing a baseline&lt;br /&gt;
decoder as first step and optimizing it to be at least as fast as the libvpx one on one of the most used architectures (ARM and x86_64).&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== WebP Lossless Native codec and WebP Lossy decoder ===&lt;br /&gt;
&lt;br /&gt;
WebP is a promising image format that could supercede [[JPEG]] and [[PNG]] as common format for web images, it leverages VP8 for lossy&lt;br /&gt;
encoding and uses a relatively simple original format for the lossless part.&lt;br /&gt;
&lt;br /&gt;
The project is split in a number of easy tasks, such as writing a decoder for both the lossy and the lossless mode and a much harder task that is providing a good encoder for the lossless part, at least. (Exceptional praise for producing a good lossy encoder but it is not required.)&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:lu_zero|Luca Barbato]]'''&lt;br /&gt;
&lt;br /&gt;
=== Native DVD support ===&lt;br /&gt;
&lt;br /&gt;
Most of the open source support for DVDs is available through libdvdread and libdvdnav. Currently there is some effort to unify them&lt;br /&gt;
in a single library (libdvd5). An additional step would be factoring the non-interactive part of into the libav codebase to leverage even more code and leave as stand alone library the parts that require some kind of interaction.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:flameeyes|Diego Pettenò]]&lt;br /&gt;
&lt;br /&gt;
=== Restructuring the MPEG video family of codecs ===&lt;br /&gt;
&lt;br /&gt;
Many encoders and decoders currently use the MpegEncContext structure and its associated API. This structure is a huge monolithic blob which combines the features of all those encoders and decoders, thus making it very fragile and hard to understand.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is splitting out parts of the MpegEncContext API into self-contained structures that would be easier to grasp, while still allowing code reuse where appropriate.&lt;br /&gt;
&lt;br /&gt;
'''Mentor: [[User:elenril|Anton Khirnov]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=14229</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=14229"/>
		<updated>2012-11-21T09:09:08Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: 2012 projects&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg_Summer_of_Code_2012|2012 FFmpeg Project page]]&lt;br /&gt;
* [[Libav Summer Of Code 2012|2012 Libav project page]]&lt;br /&gt;
* [[FFmpeg / Libav 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 / Libav codebase. Naturally, the end goal of each of the accepted 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;, &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;
=== 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;#00CC00&amp;quot;&amp;gt;Decoder committed to FFmpeg,&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt; the encoder still needs more work.&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;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
* 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;
=== 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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&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;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Code Status: [https://github.com/shahriman/libav WiP]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&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;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&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;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&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;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Decoder accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2012 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== HEVC/H.265 video decoder ===&lt;br /&gt;
* Student: Guillaume Martres&lt;br /&gt;
* Mentor: [[User:Shahriman|Mashiat Sarker Shakkhar]]&lt;br /&gt;
* Code Status: [https://github.com/smarter/libav/tree/hevc &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;in progress&amp;lt;/font&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Opus decoder ===&lt;br /&gt;
* Student: Andrew D'Addesio&lt;br /&gt;
* Mentor: [[User:Jruggle|Justin Ruggles]]&lt;br /&gt;
* Code Status: [https://github.com/Fatbag/libav &amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt;in progress&amp;lt;/font&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Rewrite avserver ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RTMP[E|S|T|TE] protocol implementation ===&lt;br /&gt;
* Student: Samuel Pitoiset&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ut Video encoder ===&lt;br /&gt;
* Student: Jan Ekström&lt;br /&gt;
* Mentor: Derek Buitenhuis&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Accepted into the Libav codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=14025</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=14025"/>
		<updated>2012-04-04T17:46:14Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Mark HEVC/H265 decoder project as difficult.&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 Unit Testing Framework ===&lt;br /&gt;
* Libav has a lot of assembly and not enough tests for it. Your job is to write a unit testing framework for assembly.&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;
* The qualification task will be to implement at least one unit test and have an idea of how to do the rest.&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;
=== 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://www.itscj.ipsj.or.jp/sc29/open/29view/29n12612c.htm&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;
Note that this is a difficult project. Do not try to apply unless you already have experience with H.264 as well as reading and writing complex C code.&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;
* Bayer layouts&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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav/ReleaseHowto&amp;diff=13937</id>
		<title>Libav/ReleaseHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav/ReleaseHowto&amp;diff=13937"/>
		<updated>2012-03-08T08:44:04Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Replace backtics by superior $() syntax.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LibavReleaseHowto == &lt;br /&gt;
&lt;br /&gt;
These are more or less personal notes how Libav releases and point release tarballs are rolled.&lt;br /&gt;
&lt;br /&gt;
=== Checklist for release preparation ===&lt;br /&gt;
&lt;br /&gt;
* If necessary, create a new release tracking bug&lt;br /&gt;
* (constantly) Backport interesting patches from trunk&lt;br /&gt;
* check the bugzilla release tracking bug&lt;br /&gt;
* update Changelog, use 'git log --oneline' for inspiration&lt;br /&gt;
* Write/Review News entry for http://libav.org&lt;br /&gt;
&lt;br /&gt;
=== Roll, sign and publish tarballs ===&lt;br /&gt;
&lt;br /&gt;
* For 0.6 and later, update the VERSION file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
echo '$VERSION' &amp;gt; VERSION&amp;lt;br/&amp;gt;&lt;br /&gt;
git add VERSION&amp;lt;br/&amp;gt;&lt;br /&gt;
git commit -m&amp;quot;Update Version identification for $(cat VERSION)&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* push the changelog to repository&lt;br /&gt;
** git push ...&lt;br /&gt;
&lt;br /&gt;
* create an annotated tag:&lt;br /&gt;
** git tag -a v$VERSION -m&amp;quot;$VERSION Release&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* For 0.7 and later, create a VERSION file from the RELEASE file (don't commit/push this)&lt;br /&gt;
** &amp;lt;code&amp;gt;cp -v RELEASE VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the release tarball&lt;br /&gt;
** &amp;lt;code&amp;gt;tar czv --xform=&amp;quot;s,^./,libav-$VERSION/,&amp;quot; --exclude=.git -f /tmp/libav-$VERSION.tar.gz .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Testcompile this tarball&lt;br /&gt;
&lt;br /&gt;
* Create the xz variant:&lt;br /&gt;
** &amp;lt;code&amp;gt;zcat /tmp/libav-$VERSION.tar.gz | xz &amp;gt; /tmp/libav-$VERSION.tar.xz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GPG signatures:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
gpg -ab /tmp/libav-$VERSION.tar.gz&amp;lt;br/&amp;gt;&lt;br /&gt;
gpg -ab /tmp/libav-$VERSION.tar.xz&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copy release notes and changelog:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cp -v Changelog /tmp/libav-$VERSION.changelog&amp;lt;br/&amp;gt;&lt;br /&gt;
cp -v doc/RELEASE_NOTES /tmp/libav-$VERSION.release&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install tarballs to libav.org: &lt;br /&gt;
** &amp;lt;code&amp;gt;scp /tmp/libav-$(cat VERSION).* libav.org:releases&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Publish the release ===&lt;br /&gt;
&lt;br /&gt;
* push the created, *annotated* tags&lt;br /&gt;
* Publish the prepared News entry for http://libav.org&lt;br /&gt;
&lt;br /&gt;
* Enjoy!&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13890</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=13890"/>
		<updated>2012-02-20T10:04:17Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Reverted edits by Compn (Talk); changed back to last version by DonDiego&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code 2012|2012 project page]]&lt;br /&gt;
* [[FFmpeg / Libav 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 Libav codebase. Naturally, the end goal of each of the accepted 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;, &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;
=== 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;#00CC00&amp;quot;&amp;gt;Decoder committed to FFmpeg,&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt; the encoder still needs more work.&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;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
* 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;
=== 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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&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;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Code Status: [https://github.com/shahriman/libav WiP]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&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;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&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;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&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;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Decoder accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Michael&amp;diff=13881</id>
		<title>User:Michael</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Michael&amp;diff=13881"/>
		<updated>2012-02-18T13:53:56Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: skeleton description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Michael Niedermayer&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=RTMP&amp;diff=13856</id>
		<title>RTMP</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=RTMP&amp;diff=13856"/>
		<updated>2012-02-14T10:30:48Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Remove some empty lines from table.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol Real Time Messaging Protocol] is a proprietary protocol created by [[Macromedia]] used for accessing streaming multimedia and for elementary remote function calls.&lt;br /&gt;
&lt;br /&gt;
*Description: http://rtmpy.org/wiki/RTMP&lt;br /&gt;
*Server: http://www.osflash.org/rtmp_os&lt;br /&gt;
*Server: http://osflash.org/red5&lt;br /&gt;
*Server: http://www.rtmpd.com/&lt;br /&gt;
*Server: http://erlyvideo.org/&lt;br /&gt;
*Server: http://code.google.com/p/rubyizumi/&lt;br /&gt;
*Client: http://swfdec.freedesktop.org/&lt;br /&gt;
*RTMPdump - http://rtmpdump.mplayerhq.hu&lt;br /&gt;
*Videolan - http://www.videolan.org&lt;br /&gt;
*Specifications (RTMPE) : http://lkcl.net/rtmp/&lt;br /&gt;
&lt;br /&gt;
Variations&lt;br /&gt;
# RTMP uses port 1935. &lt;br /&gt;
# RTMPT (RTMP Tunnelled) uses port 80 (protocol is encapsulated by HTTP).&lt;br /&gt;
# RTMPS (RTMP Secure) uses port 443 (protocol is encapsulated by HTTPS).&lt;br /&gt;
&lt;br /&gt;
Mostly used for streaming [[Flash Video]].&lt;br /&gt;
&lt;br /&gt;
== Protocol technical description ==&lt;br /&gt;
&lt;br /&gt;
Streaming consists of exchanging messages with server by TCP protocol.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that path in URL serves two functions: first two directory levels (if present, only one otherwise) serve as an application name, the rest is played file name. Prefixed with colon (for [[FLV]]) or &amp;quot;mp4:&amp;quot; (for [[MP4]]) it is called &amp;quot;playpath&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Handshake ===&lt;br /&gt;
==== Old Plain Handshake ====&lt;br /&gt;
This type of handshake is described everywhere (but not working with all servers):&lt;br /&gt;
&lt;br /&gt;
# client sends 0x03 and 1536 bytes of random data&lt;br /&gt;
# server sends 0x03 and 1536 bytes of its own random data&lt;br /&gt;
# server sends 1536 bytes of data, containing exactly what client has sent&lt;br /&gt;
# client sends 1536-bytes of server-generated data back to server&lt;br /&gt;
&lt;br /&gt;
==== Digested Handshake ====&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=== Common packet passing ===&lt;br /&gt;
Each packet is transmitted in chunks. If packet is bigger than chunk size, each new chunk is prefixed with &amp;lt;code&amp;gt;0xC0+stream_id&amp;lt;/code&amp;gt; byte.&lt;br /&gt;
&lt;br /&gt;
Initial chunk size is 128 (some sources say it's 64 for audio packets but 128 otherwise). Server (client too?) may change chunk size any time.&lt;br /&gt;
&lt;br /&gt;
=== Packet header ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable style=&amp;quot;width:100%; height:200px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Size&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Packet header size&lt;br /&gt;
| 2 bits&lt;br /&gt;
| 0 - 12 bytes, 1 - 8 bytes (no ext. timestamp), 2 - 4 bytes (header data is taken from previous packet with the same stream_id), 3 - next chunk marker&lt;br /&gt;
|-&lt;br /&gt;
| Stream ID&lt;br /&gt;
| 6 bits&lt;br /&gt;
| packet stream id, usually has some relation to packet contents&lt;br /&gt;
|-&lt;br /&gt;
| Stream ID additional data&lt;br /&gt;
| 0/8/16 bits LE&lt;br /&gt;
| it contains &amp;lt;code&amp;gt;stream ID - 64&amp;lt;/code&amp;gt;. For stream ID &amp;lt; 64 real value is stored in previous 6 bits and this field is not written; for stream ID &amp;lt; 320 previous 6 bits are zero and this field is single byte, otherwise previous 6 bits contain value &amp;quot;1&amp;quot; and this field is written as two bytes.&lt;br /&gt;
|-&lt;br /&gt;
| Timestamp&lt;br /&gt;
| 24 bits BE&lt;br /&gt;
| packet timestamp&lt;br /&gt;
|-&lt;br /&gt;
| Packet type&lt;br /&gt;
| 8 bits&lt;br /&gt;
| describes what data this packet holds&lt;br /&gt;
|-&lt;br /&gt;
| Packet size&lt;br /&gt;
| 24 bits BE&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 32 bits LE&lt;br /&gt;
| probably contains extended timestamp when it's too big to fit into 24 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Usual stream ID meanings:&lt;br /&gt;
* 2 - network-related stuff&lt;br /&gt;
* 3 - actions&lt;br /&gt;
* 8 - video data&lt;br /&gt;
* 9 - audio data&lt;br /&gt;
&lt;br /&gt;
Packet types:&lt;br /&gt;
* 1 - change chunk type, contains 32-bit BE number with new chunk size&lt;br /&gt;
* 3 - &amp;quot;bytes read&amp;quot; message&lt;br /&gt;
* 4 - ping&lt;br /&gt;
* 5 - server bandwidth, contains 32-bit BE number with server bandwidth&lt;br /&gt;
* 6 - client bandwidth, contains 32-bit BE number with client bandwidth&lt;br /&gt;
* 8 - audio data, as in [[FLV]] starts with flags&lt;br /&gt;
* 9 - video data, as in [[FLV]] starts with flags&lt;br /&gt;
* 20 - invoke (server or client function call), body contains arguments to the call&lt;br /&gt;
* 22 - FLV metadata&lt;br /&gt;
&lt;br /&gt;
=== Typical workflow for playing ===&lt;br /&gt;
* Client handshakes with server&lt;br /&gt;
* Client sends invoke with 'connect'&lt;br /&gt;
* Server responds with either '_result' or '_error' invoke&lt;br /&gt;
* If succeeded client invokes 'createStream'&lt;br /&gt;
* Server may respond with something&lt;br /&gt;
* If succeeded client invokes 'play'&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
{| class=wikitable style=&amp;quot;width:100%; height:200px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Audio&lt;br /&gt;
! Video&lt;br /&gt;
! URL&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6f&lt;br /&gt;
| rtmp://cp9950.edgefcs.net/ondemand/comedystor/_!/com/dailyshow/TDS/season_03/episode_100/ds_03100_08_blm_480.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6f&lt;br /&gt;
| rtmp://wdiguk.fcod.llnwd.net:1935/a2334/d1/xd/disneyxd.co.uk/JIMMY_2_SHOES_SHORTS_S1_E1_sw.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6f&lt;br /&gt;
| rtmp://directv.fcod.llnwd.net/a517/d1/com/lp/testdrive/active_channel-hack.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6f&lt;br /&gt;
| rtmp://ciena.fv.miisolutions.net/ciena/flash/LynneMilton_256l.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6f&lt;br /&gt;
| rtmp://flvideo.wwe.com/wwevideo/flv/kids/2008/october8-14/kids_cena_wiffle_large.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6a&lt;br /&gt;
| rtmp://advancedmethod.flashsvc.vitalstreamcdn.com/advancedmethod_vitalstream_com/_definst_/airtime/Q4.flv&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| rtmp://www.yozik.com/yo2413/30393.mp3&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| flv&lt;br /&gt;
| rtmp://fsapfs.fplive.net/fsap/Videos/foie_gras_uk_high.flv&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| vp6a&lt;br /&gt;
| rtmp://fms.04C7.edgecastcdn.net/0004C7/t-mobilemytouch/videos/home/phil_video&lt;br /&gt;
|-&lt;br /&gt;
| aac&lt;br /&gt;
| h264&lt;br /&gt;
| rtmp://sony.flash.internapcdn.net/sony_vitalstream_com/_definst_/mp4:NAB2009-Video/Sony_Professional_Media.f4v&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| text&lt;br /&gt;
| rtmp://flowplayer.org:1935/fastplay/video/buffalo.srt&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
|&lt;br /&gt;
| rtmp://fl9.maelstrom.jet-stream.nl:80/vod/vdoxadmin/jeroen/bunny.mp3&lt;br /&gt;
|-&lt;br /&gt;
| aac&lt;br /&gt;
|&lt;br /&gt;
| rtmp://cp72151.live.edgefcs.net/live/WCHB-AM@10665&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| rtmpe://wbads.fcod.llnwd.net/a2383/o25/mp4:thewb/video/thegeorgecarlinshow/01/thegeorgecarlinshow_01_01_700kbps.mp4&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
| h264&lt;br /&gt;
| rtmp://video-12.radioradicale.it/store-51/mp4:FL532501.f4v&lt;br /&gt;
|-&lt;br /&gt;
| mp3&lt;br /&gt;
|&lt;br /&gt;
| rtmpe://akafms-music01.myspacecdn.com/ondemand/mp3:86/std_e647631bd0c6e9197654c64dce7e4e12&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| rtmp://octopus.xuggle.com/scatterchat/audience&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
streams requiring swfurl / pageurl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rtmpdump -f &amp;quot;WIN 10,0,12,36&amp;quot; -s &amp;quot;http://www.teennick.com/theclick/turboclick/swf/bb_flv_player_nick.swf&amp;quot; -p &amp;quot;http://www.teennick.com/theclick/?titleId=23721&amp;amp;ctitle=No%20Vomments&amp;amp;owner=thecolin&amp;quot; -r rtmp://viacom.fcod.llnwd.net/a1624/e17/gsp.thencomstor/the-n.com/the_assistants/tn_ass_112_fle_o5g_rt162572_480x360_700.flv -o ass12.flv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
live streams:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rtmpdump --live -r rtmp://flash1.bpmnetworks.com/live/ktv -o cra.flv -s &amp;quot;http://www2.k-tv.at/streaming/playbackengine.swf&amp;quot; -V -f &amp;quot;WIN 10,0,12,36&amp;quot; -p &amp;quot;http://www2.k-tv.at/streaming/index.html&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rtmpdump -r rtmp://kanald.tbt.com.tr:80/cnnturk/CNNTurk1 -o output.flv --live -f &amp;quot;WIN 10,0,12,36&amp;quot; -s &amp;quot;http://www.cnnturk.com/swf/player_cnnturk_secure.swf&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking Protocols]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13855</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=13855"/>
		<updated>2012-02-14T10:11:29Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add cosmetics qualification task.&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;
== 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;br /&gt;
&lt;br /&gt;
== ideas from previous years ==&lt;br /&gt;
&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;
&lt;br /&gt;
=== Libav Usage Example, Tutorial and test suite ===&lt;br /&gt;
&lt;br /&gt;
* Prepare a series 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 avconf and avplay&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;
&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;
&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 libavformat.&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;
&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.libav.org/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;
&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;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support. The task is relatively unspecific, but your basic goal will be to add multithreading support to a variety of decoders, by using existing infrastructure. Example goals could include:&lt;br /&gt;
* Fix problems with the libavcodec slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Implement functions in the avconv/avplay 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 the libavcodec 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;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the filtering library that started as a 2007 SoC [[FFmpeg / Libav Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the 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 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;
&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, libavfilter 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 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;
&lt;br /&gt;
=== Flash screen video (1)/2 encoder ===&lt;br /&gt;
&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 (dijkstra graph)&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
=== Standards Compliant TS Muxer ===&lt;br /&gt;
&lt;br /&gt;
* This is harder than it might seem at first because of the myriad of codecs and muxing rules.&lt;br /&gt;
* In order to complete this task you must find (or ask for) the spec, read it and understand the buffering models and what you will need to do for each codec. It's much easier to start with MPEG codecs to begin with. In most cases this will involve extracting or guessing information from the input stream.&lt;br /&gt;
* Sometimes spec-incompliant modes might be ok such as H.264 in TS files without HRD for iPod streaming.&lt;br /&gt;
* Later work can focus on remuxing&lt;br /&gt;
&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;
&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;
&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 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;
&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 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 / Libav Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_/_Libav_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_/_Libav_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_/_Libav_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 / Libav Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: http://samples.libav.org/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 before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.libav.org/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT/Opus 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.libav.org/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.libav.org/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;
* libavcodec 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 master with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
=== AAC-LD ===&lt;br /&gt;
* Implement an AAC-LD decoder.&lt;br /&gt;
&lt;br /&gt;
=== H.264 MVC ===&lt;br /&gt;
* Implement an H.264 MVC decoder. This format is used in 3D Blu-Rays.&lt;br /&gt;
&lt;br /&gt;
=== SSE2 swscale ===&lt;br /&gt;
* swscale largely implements MMX. Add SSE2 support using the yasm macro library.&lt;br /&gt;
* Difficult variants: add OpenCL, high bit-depth support, gamma-accurate conversion, better dithering, or edge-directed interpolation.&lt;br /&gt;
&lt;br /&gt;
=== Forward Error Correction ===&lt;br /&gt;
Add FEC to libavutil - this is relevant to ESA summer of code.&lt;br /&gt;
* RTP FEC, standardised as SMPTE 2022M (Possibly the same as Pro-MPEG FEC) - (not 100% sure if this is for all types of RTP or just some)&lt;br /&gt;
* MPEG-TS 16 bytes extra - (not sure where this is standardised - in DVB perhaps?)&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13854</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=13854"/>
		<updated>2012-02-14T10:03:00Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add project ideas from previous years as raw material that can be refined or discarded.&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 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;
&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;
== 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;br /&gt;
&lt;br /&gt;
== ideas from previous years ==&lt;br /&gt;
&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;
&lt;br /&gt;
=== Libav Usage Example, Tutorial and test suite ===&lt;br /&gt;
&lt;br /&gt;
* Prepare a series 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 avconf and avplay&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;
&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;
&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 libavformat.&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;
&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.libav.org/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;
&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;
&lt;br /&gt;
=== Multithreading support ===&lt;br /&gt;
The goal of this task will be to improve the multithreading support. The task is relatively unspecific, but your basic goal will be to add multithreading support to a variety of decoders, by using existing infrastructure. Example goals could include:&lt;br /&gt;
* Fix problems with the libavcodec slice-based H.264 decoder threading (ask Jason for details here)&lt;br /&gt;
* Implement functions in the avconv/avplay 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 the libavcodec 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;
&lt;br /&gt;
=== [[Libavfilter]] video work ===&lt;br /&gt;
Libavfilter is the filtering library that started as a 2007 SoC [[FFmpeg / Libav Summer Of Code#Video Filter API (AKA libavfilter)|project]]. It replaced the now removed vhook subsystem. Most of it is already part of the 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 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;
&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, libavfilter 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 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;
&lt;br /&gt;
=== Flash screen video (1)/2 encoder ===&lt;br /&gt;
&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 (dijkstra graph)&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
=== Standards Compliant TS Muxer ===&lt;br /&gt;
&lt;br /&gt;
* This is harder than it might seem at first because of the myriad of codecs and muxing rules.&lt;br /&gt;
* In order to complete this task you must find (or ask for) the spec, read it and understand the buffering models and what you will need to do for each codec. It's much easier to start with MPEG codecs to begin with. In most cases this will involve extracting or guessing information from the input stream.&lt;br /&gt;
* Sometimes spec-incompliant modes might be ok such as H.264 in TS files without HRD for iPod streaming.&lt;br /&gt;
* Later work can focus on remuxing&lt;br /&gt;
&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;
&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;
&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 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;
&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 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 / Libav Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 decoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#JPEG 2000 Encoder and Decoder|JPEG 2000 encoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#Dirac Encoder and Decoder|Dirac decoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#Dirac Encoder and Decoder|Dirac encoder]]&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code#TS Muxer|TS muxer]]&lt;br /&gt;
&lt;br /&gt;
2009:&lt;br /&gt;
* [[FFmpeg_/_Libav_Summer_Of_Code#Playlist.2FConcatenation_Support_for_FFmpeg|Playlist and concatenation support]]&lt;br /&gt;
* [[FFmpeg_/_Libav_Summer_Of_Code#Implement_the_New_Seeking_API_in_Libavformat|New seeking API]]&lt;br /&gt;
* [[FFmpeg_/_Libav_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 / Libav Summer Of Code]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Implement a Windows Video Presentation 2 decoder ===&lt;br /&gt;
* Fourcc: [[WVP2]]&lt;br /&gt;
* Samples: http://samples.libav.org/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 before submission.&lt;br /&gt;
&lt;br /&gt;
=== Speex Decoder ===&lt;br /&gt;
* Specification:  http://speex.org/docs/&lt;br /&gt;
* Samples: http://samples.libav.org/A-codecs/speex/&lt;br /&gt;
Also see [[Speex]].&lt;br /&gt;
&lt;br /&gt;
=== CELT/Opus 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.libav.org/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.libav.org/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;
* libavcodec 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 master with A/V synchronisation. Both patches are almost finished.&lt;br /&gt;
&lt;br /&gt;
=== AAC-LD ===&lt;br /&gt;
* Implement an AAC-LD decoder.&lt;br /&gt;
&lt;br /&gt;
=== H.264 MVC ===&lt;br /&gt;
* Implement an H.264 MVC decoder. This format is used in 3D Blu-Rays.&lt;br /&gt;
&lt;br /&gt;
=== SSE2 swscale ===&lt;br /&gt;
* swscale largely implements MMX. Add SSE2 support using the yasm macro library.&lt;br /&gt;
* Difficult variants: add OpenCL, high bit-depth support, gamma-accurate conversion, better dithering, or edge-directed interpolation.&lt;br /&gt;
&lt;br /&gt;
=== Forward Error Correction ===&lt;br /&gt;
Add FEC to libavutil - this is relevant to ESA summer of code.&lt;br /&gt;
* RTP FEC, standardised as SMPTE 2022M (Possibly the same as Pro-MPEG FEC) - (not 100% sure if this is for all types of RTP or just some)&lt;br /&gt;
* MPEG-TS 16 bytes extra - (not sure where this is standardised - in DVB perhaps?)&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Shahriman&amp;diff=13853</id>
		<title>User:Shahriman</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Shahriman&amp;diff=13853"/>
		<updated>2012-02-14T09:51:23Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: skeleton description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mashiat Sarker Shakkhar&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13852</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=13852"/>
		<updated>2012-02-14T09:30:36Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Fix link to 2012 soc page.&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg / Libav Summer Of Code 2012|2012 project page]]&lt;br /&gt;
* [[FFmpeg / Libav 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 Libav codebase. Naturally, the end goal of each of the accepted 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;, &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;
=== 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;#00CC00&amp;quot;&amp;gt;Decoder committed to FFmpeg,&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#CCCC00&amp;quot;&amp;gt; the encoder still needs more work.&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;#00CC00&amp;quot;&amp;gt;Accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
* 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;
=== 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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&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;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
* Code Status: [https://github.com/shahriman/libav WiP]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&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;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&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;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&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;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
* Project Status: &amp;lt;font color=&amp;quot;#CC0000&amp;quot;&amp;gt;failed&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Decoder accepted into the FFmpeg codebase.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13851</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=13851"/>
		<updated>2012-02-14T09:27:57Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Remove VideoLAN paragraph; replace ffmpeg references by libavcodec/libavformat where appropriate.&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 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;
&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.mplayerhq.hu/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;
== 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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13847</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=13847"/>
		<updated>2012-02-13T18:47:22Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: avbuild&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 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 (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.mplayerhq.hu/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;
== 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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav_Summer_Of_Code_2012&amp;diff=13846</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=13846"/>
		<updated>2012-02-13T18:36:00Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add RTMP* protocol implementation project.&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 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 (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.mplayerhq.hu/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;
== 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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Running_FATE&amp;diff=13633</id>
		<title>Running FATE</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Running_FATE&amp;diff=13633"/>
		<updated>2011-09-20T09:58:28Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add -T to ssh command to avoid terminal error messages, improve comment field description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Get The Samples ==&lt;br /&gt;
Sync the FATE samples:&lt;br /&gt;
&lt;br /&gt;
  rsync -WaL rsync://fate-suite.libav.org/fate-suite/ /path/to/fate/samples&lt;br /&gt;
&lt;br /&gt;
Please ignore any &amp;quot;Permission denied&amp;quot; errors, permissions of recently uploaded files are fixed regularly by a cron job.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Create a configuration file setting the following variables:&lt;br /&gt;
&lt;br /&gt;
 slot=                                   # some unique identifier&lt;br /&gt;
 repo=git://git.libav.org/libav.git      # the source repository&lt;br /&gt;
 samples=/path/to/fate/samples&lt;br /&gt;
 workdir=                                # directory in which to do all the work&lt;br /&gt;
 fate_recv=&amp;quot;ssh -T fate@fate.libav.org&amp;quot;  # command to submit report&lt;br /&gt;
 comment=                                # optional description&lt;br /&gt;
 &lt;br /&gt;
 # the following are optional and map to configure options&lt;br /&gt;
 arch=&lt;br /&gt;
 cpu=&lt;br /&gt;
 cross_prefix=&lt;br /&gt;
 cc=&lt;br /&gt;
 target_os=&lt;br /&gt;
 sysroot=&lt;br /&gt;
 target_exec=&lt;br /&gt;
 target_path=&lt;br /&gt;
 extra_cflags=&lt;br /&gt;
 extra_ldflags=&lt;br /&gt;
 extra_libs=&lt;br /&gt;
 extra_conf=     # extra configure options not covered above&lt;br /&gt;
 &lt;br /&gt;
 #make=          # name of GNU make if not 'make'&lt;br /&gt;
 makeopts=       # extra options passed to 'make'&lt;br /&gt;
 #tar=           # command to create a tar archive from its arguments on stdout, defaults to 'tar c'&lt;br /&gt;
&lt;br /&gt;
This file is parsed by the shell, so any shell features may be used. Any site-specific settings can be made here as well, such as PATH to compilers etc.  One such file is required per configuration to be tested.&lt;br /&gt;
&lt;br /&gt;
The $slot value can be anything not already in use.  Names of the form arch-os-compiler-version are suggested.  Allowed characters are alphanumeric, underscore, period, and hyphen.&lt;br /&gt;
&lt;br /&gt;
== Get the Script ==&lt;br /&gt;
Fetch the file 'tests/fate.sh' from the libav repo.  This script checks out the source, builds it, runs the tests, and submits the report to the server. It's a good idea to watch this file for changes and update your running copy as necessary.&lt;br /&gt;
&lt;br /&gt;
== Test Run ==&lt;br /&gt;
Perform a test run by leaving $fate_recv unset in the configuration and issue the command &amp;quot;fate.sh /path/to/config/file&amp;quot;. This should perform all the steps except the final report submission. In the end, $workdir should contain the following files:&lt;br /&gt;
&lt;br /&gt;
* configure.log&lt;br /&gt;
* compile.log&lt;br /&gt;
* test.log&lt;br /&gt;
* report&lt;br /&gt;
* version&lt;br /&gt;
&lt;br /&gt;
After a successful run, the 'report' file should contain one line for each test and a couple of header lines. Most of the content is base64-encoded, so it will look like gibberish.&lt;br /&gt;
&lt;br /&gt;
If any of the files are missing, or if the report seems too sparse, check for errors that may have occurred.&lt;br /&gt;
&lt;br /&gt;
Delete the version file to force a retest of the same revision.&lt;br /&gt;
&lt;br /&gt;
== Submitting Results ==&lt;br /&gt;
When everything is working properly, create an ssh key, send it to the FATE system adminstrator, and await confirmation. Make sure the ssh command used in the fate_recv setting uses this key for authentication. You will also need to accept the host key of the server. Its fingerprint is:&lt;br /&gt;
&lt;br /&gt;
  a4:99:d7:d3:1c:92:0d:56:d6:d5:61:be:01:ae:7d:e6&lt;br /&gt;
&lt;br /&gt;
Accepting the host key is most easily done by running the ssh command directly from a shell once. When it connects, simply kill it. You will not get a shell prompt.&lt;br /&gt;
&lt;br /&gt;
== Regular Cycles ==&lt;br /&gt;
You are now ready to commence automated testing. Set up a cron job, shell script, or use whatever means you prefer to run the command from step 3 at regular intervals. If using multiple configurations, a simple shell wrapper iterating over them may be convenient.&lt;br /&gt;
&lt;br /&gt;
The fate.sh script will refuse to run if the workdir is locked by the&lt;br /&gt;
presence of a fate.lock file there.  If something dies leaving this&lt;br /&gt;
file behind, you must delete it manually.&lt;br /&gt;
&lt;br /&gt;
Adjunct to running the FATE script from cron, it's also useful to rsync the FATE samples directory via cron. This doesn't need to be performed as frequently. Once per day is adequate.&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Running_FATE&amp;diff=13605</id>
		<title>Running FATE</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Running_FATE&amp;diff=13605"/>
		<updated>2011-09-13T15:55:57Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: update configuration file to match current code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Get The Samples ==&lt;br /&gt;
Sync the FATE samples:&lt;br /&gt;
&lt;br /&gt;
  rsync -WaL rsync://fate-suite.libav.org/fate-suite/ /path/to/fate/samples&lt;br /&gt;
&lt;br /&gt;
Please ignore any &amp;quot;Permission denied&amp;quot; errors, permissions of recently uploaded files are fixed regularly by a cron job.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Create a configuration file setting the following variables:&lt;br /&gt;
&lt;br /&gt;
 slot=                                 # some unique identifier&lt;br /&gt;
 repo=git://git.libav.org/libav.git    # the source repository&lt;br /&gt;
 samples=/path/to/fate/samples&lt;br /&gt;
 workdir=                              # directory in which to do all the work&lt;br /&gt;
 fate_recv=&amp;quot;ssh fate@fate.libav.org&amp;quot;   # command to submit report&lt;br /&gt;
 comment=                              # optional identifier string&lt;br /&gt;
 &lt;br /&gt;
 # the following are optional and map to configure options&lt;br /&gt;
 arch=&lt;br /&gt;
 cpu=&lt;br /&gt;
 cross_prefix=&lt;br /&gt;
 cc=&lt;br /&gt;
 target_os=&lt;br /&gt;
 sysroot=&lt;br /&gt;
 target_exec=&lt;br /&gt;
 target_path=&lt;br /&gt;
 extra_cflags=&lt;br /&gt;
 extra_ldflags=&lt;br /&gt;
 extra_libs=&lt;br /&gt;
 extra_conf=     # extra configure options not covered above&lt;br /&gt;
 &lt;br /&gt;
 #make=          # name of GNU make if not 'make'&lt;br /&gt;
 makeopts=       # extra options passed to 'make'&lt;br /&gt;
 #tar=           # command to create a tar archive from its arguments on stdout, defaults to 'tar c'&lt;br /&gt;
&lt;br /&gt;
This file is parsed by the shell, so any shell features may be used. Any site-specific settings can be made here as well, such as PATH to compilers etc.  One such file is required per configuration to be tested.&lt;br /&gt;
&lt;br /&gt;
The $slot value can be anything not already in use.  Names of the form arch-os-compiler-version are suggested.  Allowed characters are alphanumeric, underscore, period, and hyphen.&lt;br /&gt;
&lt;br /&gt;
== Get the Script ==&lt;br /&gt;
Fetch the file 'tests/fate.sh' from the libav repo.  This script checks out the source, builds it, runs the tests, and submits the report to the server. It's a good idea to watch this file for changes and update your running copy as necessary.&lt;br /&gt;
&lt;br /&gt;
== Test Run ==&lt;br /&gt;
Perform a test run by leaving $fate_recv unset in the configuration and issue the command &amp;quot;fate.sh /path/to/config/file&amp;quot;. This should perform all the steps except the final report submission. In the end, $workdir should contain the following files:&lt;br /&gt;
&lt;br /&gt;
* configure.log&lt;br /&gt;
* compile.log&lt;br /&gt;
* test.log&lt;br /&gt;
* report&lt;br /&gt;
* version&lt;br /&gt;
&lt;br /&gt;
After a successful run, the 'report' file should contain one line for each test and a couple of header lines. Most of the content is base64-encoded, so it will look like gibberish.&lt;br /&gt;
&lt;br /&gt;
If any of the files are missing, or if the report seems too sparse, check for errors that may have occurred.&lt;br /&gt;
&lt;br /&gt;
Delete the version file to force a retest of the same revision.&lt;br /&gt;
&lt;br /&gt;
== Submitting Results ==&lt;br /&gt;
When everything is working properly, create an ssh key, send it to the FATE system adminstrator, and await confirmation. Make sure the ssh command used in the fate_recv setting uses this key for authentication. You will also need to accept the host key of the server. Its fingerprint is:&lt;br /&gt;
&lt;br /&gt;
  a4:99:d7:d3:1c:92:0d:56:d6:d5:61:be:01:ae:7d:e6&lt;br /&gt;
&lt;br /&gt;
Accepting the host key is most easily done by running the ssh command directly from a shell once. When it connects, simply kill it. You will not get a shell prompt.&lt;br /&gt;
&lt;br /&gt;
== Regular Cycles ==&lt;br /&gt;
You are now ready to commence automated testing. Set up a cron job, shell script, or use whatever means you prefer to run the command from step 3 at regular intervals. If using multiple configurations, a simple shell wrapper iterating over them may be convenient.&lt;br /&gt;
&lt;br /&gt;
The fate.sh script will refuse to run if the workdir is locked by the&lt;br /&gt;
presence of a fate.lock file there.  If something dies leaving this&lt;br /&gt;
file behind, you must delete it manually.&lt;br /&gt;
&lt;br /&gt;
Adjunct to running the FATE script from cron, it's also useful to rsync the FATE samples directory via cron. This doesn't need to be performed as frequently. Once per day is adequate.&lt;br /&gt;
&lt;br /&gt;
[[Category:FATE]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Ce&amp;diff=13604</id>
		<title>User:Ce</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Ce&amp;diff=13604"/>
		<updated>2011-09-13T14:14:43Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: skeleton description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Carl Eugen Hoyos works on [[MPlayer]] and [[FFmpeg]].&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Interesting_Patches&amp;diff=13552</id>
		<title>Interesting Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Interesting_Patches&amp;diff=13552"/>
		<updated>2011-07-20T19:17:38Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: vestigial G.729 decoder removed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to collect some useful patches for FFmpeg that didn't make into SVN for some reason or another.&lt;br /&gt;
&lt;br /&gt;
== native [[Zlib]] decoder by [[User:Mans|Mans Rullgard]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-July/032807.html&lt;br /&gt;
&lt;br /&gt;
In the same thread, there are patches to use the native decoder in several FFmpeg decoders.&lt;br /&gt;
&lt;br /&gt;
== [[WMV3]] encoder by Denis Fortin ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-June/031689.html&lt;br /&gt;
&lt;br /&gt;
== [[Apple RPZA]] encoder by Todd Kirby ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2005-June/001673.html&lt;br /&gt;
&lt;br /&gt;
== Test Pattern Generator Demuxer by Nicholas George ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/036819.html&lt;br /&gt;
&lt;br /&gt;
== Test Pattern Generator Demuxer by [[User:Angustia|Ramiro Ribeiro Polla]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-April/028226.html&lt;br /&gt;
Or &lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/49447&lt;br /&gt;
&lt;br /&gt;
== PES packetizer by Xiaohui Sun ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-September/034834.html&lt;br /&gt;
&lt;br /&gt;
Part of the work of [[FFmpeg Summer Of Code#TS Muxer|Summer Of Code TS Muxer]]&lt;br /&gt;
&lt;br /&gt;
== vf_imlib2: a libavfilter filter by [[User:Wzrlpy|Víctor Paesa]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-December/002161.html&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;mem&amp;quot; file protocol by Lagrange Multiplier ==&lt;br /&gt;
The &amp;quot;mem&amp;quot; protocol simply uses RAM as a source for input multimedia data, akin to how the &amp;quot;file&amp;quot; and &amp;quot;pipe&amp;quot; protocols use filesystem files and pipes as sources.&lt;br /&gt;
&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-May/028489.html&lt;br /&gt;
&lt;br /&gt;
== Presets/profiles for usual targets by Panagiotis Issaris ==&lt;br /&gt;
Allow to keep in a text file groups of command options, and apply them at once by specifying the target name.&lt;br /&gt;
&lt;br /&gt;
Handy for iPod, PSP, or any other picky multimedia player that otherwise requires lengthy command lines.&lt;br /&gt;
&lt;br /&gt;
http://article.gmane.org/gmane.comp.video.ffmpeg.devel/37244&lt;br /&gt;
&lt;br /&gt;
== [[AMV]] encoder ==&lt;br /&gt;
http://code.google.com/p/amv-codec-tools/&lt;br /&gt;
&lt;br /&gt;
See this post [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/037336.html] to see what is missing to get it into SVN.&lt;br /&gt;
&lt;br /&gt;
== Experimental MSVC port by Ole André Vadla Ravnås ==&lt;br /&gt;
&lt;br /&gt;
OAH Build System https://launchpad.net/oah&lt;br /&gt;
&lt;br /&gt;
Old page [http://bazaar-vcs.org bazaar] branch at http://people.collabora.co.uk/~oleavr/OABuild/&lt;br /&gt;
&lt;br /&gt;
Patch at http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/044418.html&lt;br /&gt;
&lt;br /&gt;
== H264 encoder by Jori Liesenborgs &amp;amp; Panagiotis Issaris ==&lt;br /&gt;
http://research.edm.uhasselt.be/~h264/&lt;br /&gt;
&lt;br /&gt;
== DTS/AC3 in wav autodetection ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/49812&lt;br /&gt;
Clean up this patch and also add detection of AC3 in wav, it is similar. Samples for both can be found here: http://www.sr.se/cgi-bin/mall/artikel.asp?ProgramID=2445&amp;amp;Artikel=739973&lt;br /&gt;
&lt;br /&gt;
== [[Chinese AVS]] video encoder by [[User:StefanG|Stefan Gehrer]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-July/033273.html&lt;br /&gt;
&lt;br /&gt;
==  Lossless msmpeg4v3 to mpeg4 transcoder ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/17074&lt;br /&gt;
&lt;br /&gt;
== Fixed point cook decoder ==&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/46024&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/53003/focus=46913&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/54008&lt;br /&gt;
* http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/54553&lt;br /&gt;
&lt;br /&gt;
== fixed point wma decoder ==&lt;br /&gt;
http://svn.rockbox.org/viewvc.cgi/trunk/apps/codecs/libwma/&lt;br /&gt;
Rockbox's fixed-point WMA decoder was adapted from the decoder in libavcodec.&lt;br /&gt;
&lt;br /&gt;
== GDI screen grabbing for Win32 ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/43589&lt;br /&gt;
&lt;br /&gt;
There are two implementations in the thread above.&lt;br /&gt;
&lt;br /&gt;
== Proper parsing of DTS-HD MA streams ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-November/056484.html&lt;br /&gt;
&lt;br /&gt;
== [[G.729]] decoder by [[User:Voroshil|Vladimir Voroshilov]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-June/072046.html&lt;br /&gt;
&lt;br /&gt;
The remnants of this vestigial decoder were removed from libav in&lt;br /&gt;
revision 79a9aab56f06b870bfb8090e8e29fabdd0cfc6df, see also&lt;br /&gt;
&lt;br /&gt;
http://git.libav.org/?p=libav.git;a=commit;h=79a9aab56f06b870bfb8090e8e29fabdd0cfc6df&lt;br /&gt;
&lt;br /&gt;
== [[Microsoft Video 1|MS Video 1]] encoder by [[User:Kostya|Kostya Shishkov]] ==&lt;br /&gt;
&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/060033.html&lt;br /&gt;
&lt;br /&gt;
== LucasArts [[Smush|SMUSH]] demuxer and decoder by [[User:Kostya|Kostya Shishkov]] ==&lt;br /&gt;
&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/060391.html&lt;br /&gt;
&lt;br /&gt;
== [[MPEG-4 ALS]] encoder by [[User:Jruggle|Justin Ruggles]] ==&lt;br /&gt;
http://gitorious.org/projects/ffmpeg/repos/alsenc&lt;br /&gt;
&lt;br /&gt;
== libaacplus and FFmpeg encoding patch ==&lt;br /&gt;
http://tipok.org.ua/ru/node/17&lt;br /&gt;
&lt;br /&gt;
== [[Bayer RGB]] decoder by Guennadi Liakhovetski ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-March/056719.html&lt;br /&gt;
&lt;br /&gt;
== Chromium security patches ==&lt;br /&gt;
Security/stability patches from Google's web browser&lt;br /&gt;
http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/ffmpeg/&lt;br /&gt;
&lt;br /&gt;
==  Framebuffer input device by Giliard ==&lt;br /&gt;
&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/91238&lt;br /&gt;
&lt;br /&gt;
== Cedric's alpha blending routines ==&lt;br /&gt;
&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/80675/focus=80833&lt;br /&gt;
&lt;br /&gt;
The blending routines should be moved to libavfilter where they seem to belong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TS ARIB STD-B24 caption decoder by Michael Wu ==&lt;br /&gt;
&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2009-October/062725.html&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13548</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=13548"/>
		<updated>2011-07-15T22:41:20Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: more linkification&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg / Libav 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 Libav codebase. Naturally, the end goal of each of the accepted 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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&lt;br /&gt;
&lt;br /&gt;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Mstorsjo&amp;diff=13547</id>
		<title>User:Mstorsjo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Mstorsjo&amp;diff=13547"/>
		<updated>2011-07-15T21:44:18Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Martin Storsjö&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13546</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=13546"/>
		<updated>2011-07-15T20:49:12Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: linkify some names&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. In 2011, the [[Libav]] fork became part of the same Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg / Libav 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 Libav codebase. Naturally, the end goal of each of the accepted 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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;
== 2011 Projects ==&lt;br /&gt;
&lt;br /&gt;
=== BSAC AAC Decoder ===&lt;br /&gt;
* Student: Young Han Lee&lt;br /&gt;
* Mentor: [[User:AConverse|Alex Converse]]&lt;br /&gt;
* Code Status: [http://github.com/yhlee/bsac Started]&lt;br /&gt;
&lt;br /&gt;
=== Playlist Support ===&lt;br /&gt;
* Student: [[User:elenril|Anton Khirnov]]&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
=== Improve the audio filtering support in libavfilter ===&lt;br /&gt;
* Student: Mina Nagy&lt;br /&gt;
* Mentor: [[User:stefanosa|Stefano Sabatini]]&lt;br /&gt;
&lt;br /&gt;
=== DTS Encoder ===&lt;br /&gt;
* Student: Xiang Wang&lt;br /&gt;
* Mentor: [[User:Merbanan|Benjamin Larsson]]&lt;br /&gt;
&lt;br /&gt;
=== VC-1 decoder missing features implementation ===&lt;br /&gt;
* Student: Mashiat Sarker Shakkhar&lt;br /&gt;
* Mentor: [[User:Ronald S. Bultje|Ronald Bultje]]&lt;br /&gt;
&lt;br /&gt;
=== Complete WMVP/WVP2 decoder ===&lt;br /&gt;
* Student: Alberto Delmás&lt;br /&gt;
* Mentor: [[User:Kostya|Kostya Shishkov]]&lt;br /&gt;
&lt;br /&gt;
=== Implement Windows Television (WTV) muxer ===&lt;br /&gt;
* Student: [[User:spyfeng|Zhentan Feng]]&lt;br /&gt;
* Mentor: [[User:suxen_drol|Peter Ross]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Accelerated H264 Decoding on Android ===&lt;br /&gt;
* Student: Mohamed Naufal&lt;br /&gt;
* Mentor: Martin Storsjö&lt;br /&gt;
&lt;br /&gt;
=== Flash screen video (1)/2 ===&lt;br /&gt;
* Student: [[User:DonDiego|Diego Biurrun]]&lt;br /&gt;
* Mentor: [[User:Jumpyshoes|Daniel Kang]]&lt;br /&gt;
&lt;br /&gt;
=== Dirac Video Codec update ===&lt;br /&gt;
* Student: Jordi Ortiz&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Elenril&amp;diff=13545</id>
		<title>User:Elenril</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Elenril&amp;diff=13545"/>
		<updated>2011-07-15T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anton Khirnov&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:Jumpyshoes&amp;diff=13544</id>
		<title>User:Jumpyshoes</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:Jumpyshoes&amp;diff=13544"/>
		<updated>2011-07-15T20:39:00Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Daniel Kang&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=13460</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=13460"/>
		<updated>2011-04-28T15:33:43Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Update for Libav.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[Libav]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to Libav and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of Libav's coveted [[Libav Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing Libav developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.libav.org/mailman/listinfo/libav-devel Libav development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''If you would like to add to this list''', please be prepared to explain some useful details about the task. Excessively vague tasks with no supporting details will be ruthlessly deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
Several SoC projects from previous years have not yet made it into Libav. Taking any of them and finishing them up to the point that they can be included should make for a good qualification task. Check out the [[Libav Summer Of Code]] overview page and look for the unfinished projects.&lt;br /&gt;
&lt;br /&gt;
=== Generic Colorspace system ===&lt;br /&gt;
This task involves adding support more than 8 bits per component (Y on 10 bits, U on 10 bits, V on 10 bits for example)&lt;br /&gt;
and generic simple conversion to other colorspaces.&lt;br /&gt;
&lt;br /&gt;
''Does this have to do with revising Libav's infrastructure? If so, then it doesn't feel like a qualification task. If it's something simpler, then the vague description does not convey that simplicity. Please expound.'' --[[User:Multimedia Mike|Multimedia Mike]] 12:56, 25 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''I don't think so, extending PixFmt to extended structure with finegrained description like depth, range values, colorspace, sample period, and write generic simple conversion from all formats to all others, like suggested by Michael on the mailing list. Conversion routine can be a good qualification task for video encoders/decoders. What do you think ?&lt;br /&gt;
--[[User:Bcoudurier|Baptiste Coudurier]] 00:30, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''* Adding the [[YCoCg]] colorspace (with different sized planes) for RGB sourced pictures would be nice too. [[User:Elte|Elte]] 07:15, 16 March 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Make the SoC dts encoder multichannel capable ===&lt;br /&gt;
Here is a skeleton for a dts encoder http://svn.mplayerhq.hu/soc/dcaenc/, currently it can only encode stereo streams.&lt;br /&gt;
The task is to extend it to support 5.1 channels also.&lt;br /&gt;
&lt;br /&gt;
Specs and info can be found here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=DTS&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder and Decoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
=== reverse engineer realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== Implement a Vivo demuxer ===&lt;br /&gt;
Implement a demuxer for the [[Vivo]] file format. The best reference for understanding the format would be MPlayer's [http://svn.mplayerhq.hu/mplayer/trunk/libmpdemux/demux_viv.c?view=markup existing .viv demuxer].&lt;br /&gt;
&lt;br /&gt;
This task corresponds to issue 99: http://roundup.libav.org/issue99&lt;br /&gt;
&lt;br /&gt;
''I am ready to help out with understanding MPlayer's demuxer, esp. MPlayer API stuff if necessary.&lt;br /&gt;
--[[User:Reimar|Reimar]] 15:46, 1 March 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo -- ''Jai Menon is working on this''&lt;br /&gt;
# VIVO -- ''Daniel Verkamp has a patch for this''&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://roundup.libav.org/issue267&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which should be fairly easy. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[BRP]] files. This will entail writing a new file demuxer as well as a video decoder that can handle at least 2 variations of format data. Further, write an audio decoder for the custom DPCM format in the file. All of these tasks are considered fairly easy. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
Westwood [[VQA]] files are already supported. However, there are three variations of its custom video codec, only the first two of which are supported. This task involves implementing support for the third variation. Visit the VQA samples repository: http://samples.libav.org/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch: ([http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-March/065348.html reference])&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement a playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are considered fairly easy. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current HEAD and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in the QuickTime demuxer (libavformat/mov.c). This involves parsing the 'elst' atom in a QuickTime file. For a demonstration of how this is a problem, download the file menace00.mov from http://samples.mplayerhq.hu/mov/editlist/ and play it with ffplay or transcode it with ffmpeg. Notice that the audio and video are ever so slightly out of sync. Proper edit list support will solve that. Other samples in that directory also presumably exhibit edit list-related bugs. The [http://xine.cvs.sourceforge.net/xine/xine-lib/src/demuxers/demux_qt.c?view=markup Xine demuxer] has support for this, it might be useful for hints.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== Implement the Flash Screen Video codec version 2 ===&lt;br /&gt;
Both a decoder and an encoder are missing, but would be nice to have.&lt;br /&gt;
&lt;br /&gt;
:''Daniel Verkamp is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Add wma fixed point decoder back into libavcodec ===&lt;br /&gt;
http://svn.rockbox.org/viewvc.cgi/trunk/apps/codecs/libwma/&lt;br /&gt;
Rockbox's fixed-point WMA decoder was adapted from the decoder in libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== VC1 timestamps in m2ts ===&lt;br /&gt;
&lt;br /&gt;
Codec copy of VC1 from m2ts currently doesn't work. Either extend the VC1 parser to output/fix timestamps, or fix the timestamps from m2ts demuxing.&lt;br /&gt;
&lt;br /&gt;
=== FLIC work ===&lt;br /&gt;
&lt;br /&gt;
Revise the [[Flic Video]] decoder at libavcodec/flicvideo.c to support video transported in AVI or MOV files while making sure that data coming from the usual FLI files still works. 'AFLC' and 'flic' FourCC samples are linked from the [[Flic Video]] page.&lt;br /&gt;
&lt;br /&gt;
=== CJPG format ===&lt;br /&gt;
&lt;br /&gt;
Extend the MJPEG decoder to handle the different frames/packing of CJPG. Samples at: http://roundup.libav.org/issue777&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://roundup.ffmpeg.org/roundup/ffmpeg/issue741&lt;br /&gt;
&lt;br /&gt;
=== lavf-based concatenation tool ===&lt;br /&gt;
&lt;br /&gt;
It would be nice to have some libavformat-based tool that would extract frames from multiple files (possible different containers as well) and put them into single one.&lt;br /&gt;
&lt;br /&gt;
=== cljr and vcr1 encoders ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html both of the encoders are disabled, and won't compile if enabled.  Michael would prefer to keep them around, and have someone grow them into full encoders.&lt;br /&gt;
&lt;br /&gt;
=== implement some colorspace fourcc/codecs ===&lt;br /&gt;
some colorspace formats were uploaded to http://samples.mplayerhq.hu/V-codecs/&lt;br /&gt;
including:&lt;br /&gt;
 CYUV.AVI is 8 Bit Interleaved 4:2:2&lt;br /&gt;
 a12v.avi is 4:2:2:4 10 Bit Interleaved&lt;br /&gt;
 auv2.avi is 4:2:2:4 8 Bit Interleaved&lt;br /&gt;
 and V-codecs/yuv8/MAILTEST.AVI .&lt;br /&gt;
&lt;br /&gt;
it might decode with current pixfmts, a sample commit is 9853bbb21a19d540850de60d3e9cf7c6ef9da7dc&lt;br /&gt;
&lt;br /&gt;
a sample commit for adding new input formats to swscale is 4884b9e50d416f84e64bfaf546a03e490cb83a2f&lt;br /&gt;
 the hunks 3 and 5 you do not need, they are optional special converters&lt;br /&gt;
 also the change to isSupportedOut() you do not need&lt;br /&gt;
 above will add a new input format&lt;br /&gt;
&lt;br /&gt;
another example for adding an input format is a43fb6b37efa5b01f2c9bdc414570691229bcfab&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all supported platforms (most important OS X + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== Metal Gear Solid Video format demuxer ===&lt;br /&gt;
Write a demuxer to play video files harvested from the game Metal Gear Solid: The Twin Snakes. The format is described on the wiki page [[Metal Gear Solid VP3]] (which also contains links to samples). This page is based on observations and conjecture, so remember to engage the mailing list or IRC with questions.&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
=== [[CDXL]] decoder ===&lt;br /&gt;
http://roundup.libav.org/issue1012&lt;br /&gt;
&lt;br /&gt;
Write a decoder for this format using the information in the [[CDXL]] wiki page&lt;br /&gt;
Discussed for the 2009 SoC &lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 Paris Audio File PAF&lt;br /&gt;
 IRCAM SF&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Portable Voice Format PVFSound&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not supported yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== port [[Ut Video]] decoder/encoder ===&lt;br /&gt;
gpl v2 decoder/encoder at wiki page&lt;br /&gt;
&lt;br /&gt;
=== Sony psp demuxer ===&lt;br /&gt;
create/port a demuxer for the sony playstation portable format PMP.&lt;br /&gt;
*Samples: http://samples.mplayerhq.hu/playstation/psp/&lt;br /&gt;
*mplayer demuxer: http://mplayer-ww.svn.sourceforge.net/viewvc/mplayer-ww/trunk/mplayer/libmpdemux/demux_pmp.c&lt;br /&gt;
&lt;br /&gt;
=== libswscale PAL8 output ===&lt;br /&gt;
&lt;br /&gt;
See the thread: &amp;quot;[RFC] libswscale palette output implementation&amp;quot;:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/101397&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== Add weighted motion compensation for B-frames in RV3/4 ===&lt;br /&gt;
&lt;br /&gt;
RealVideo 3 and 4 uses weighted motion compensation for B-frames (like H.264) but current code&lt;br /&gt;
always uses simple averaging. Reverse-engineer weighted MC functions for B-frames and make&lt;br /&gt;
RV3/4 decoder use them.&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== rewrite rm demuxer ===&lt;br /&gt;
the rm demuxer was written before specs were available and has guesses, hacks and generally needs a cleanup/update.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Libav&amp;diff=13459</id>
		<title>Libav</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Libav&amp;diff=13459"/>
		<updated>2011-04-28T15:18:48Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Create a Libav article stub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Libav is a fork of the [[FFmpeg]] project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://libav.org/ official website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Libav]]&lt;br /&gt;
[[Category:Multimedia Projects]]&lt;br /&gt;
[[Category:Multimedia Programs]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg&amp;diff=13458</id>
		<title>FFmpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg&amp;diff=13458"/>
		<updated>2011-04-28T15:17:02Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Mention Libav fork.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg is a collection of software libraries that can record, convert and stream digital audio and video in numerous formats.&lt;br /&gt;
&lt;br /&gt;
FFmpeg includes the [[libavcodec]] audio/video codec library, a decoder/encoder codec-suit that forms the basis of most free and open source software multimedia programs. The FFmpeg project aims to support all popular and less known codec formats and it is closer to that goal than any other (commercial or open source) program or library&lt;br /&gt;
&lt;br /&gt;
FFmpeg also contains [[libavformat]], a library for multimedia container formats and [[libpostproc]] for postprocessing, (and in the future also [[libavfilter]] for video and audio filtering). [[ffplay]] is a simple media player that uses libavcodec and libavformat.&lt;br /&gt;
&lt;br /&gt;
In 2011 FFmpeg was forked and the [[Libav]] project came into being.&lt;br /&gt;
&lt;br /&gt;
==About the FFmpeg project==&lt;br /&gt;
The name of the project comes from the MPEG video standards group, together with &amp;quot;FF&amp;quot; for &amp;quot;fast forward&amp;quot;.[1]&lt;br /&gt;
&lt;br /&gt;
The project was started by Fabrice Bellard (using the pseudonym “Gerard Lantau”), and is now maintained by Michael Niedermayer. Many FFmpeg developers are also part of the MPlayer project, and FFmpeg is hosted at the MPlayer project server.&lt;br /&gt;
&lt;br /&gt;
FFmpeg is developed under Linux, but it can be compiled under most operating systems, including Microsoft Windows. There are no releases. Instead, FFmpeg developers recommend using the latest Subversion snapshot as development maintains a constantly stable trunk. Released under the GNU Lesser General Public License or GNU General Public License (depending on which sub-libraries one would include), FFmpeg is free software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Image of applications that uses FFmpeg and libavcodec and libavformat ==&lt;br /&gt;
[[Image:FFmpeg_diag.png|thumb|right|300px|Diagram showing different applications that uses FFmpeg, (the applications listed are [[Video Disk Recorder|VDR]], [[MPlayer]], [[Xine]] and [[VideoLAN]])]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Components ==&lt;br /&gt;
The FFmpeg project is made of several components:&lt;br /&gt;
&lt;br /&gt;
* ''ffmpeg'' is a command line tool to convert one video file format to another. It also supports grabbing and encoding in real time from a TV card.&lt;br /&gt;
* ''[[ffserver]]'' is an [[Hypertext Transfer Protocol|HTTP]] ([[Real Time Streaming Protocol|RTSP]] is being developed) multimedia streaming server for live broadcasts. Time shifting of live broadcast is also supported.&lt;br /&gt;
* ''[[ffplay]]'' is a simple media player based on [[Simple DirectMedia Layer|SDL]] and on the FFmpeg libraries.&lt;br /&gt;
* ''[[libavcodec]]'' is a library containing all the FFmpeg audio/video encoders and decoders. Most codecs were developed from scratch to ensure best performance and high code reusability.&lt;br /&gt;
* ''[[libavformat]]'' is a library containing demuxers and muxers for audio/video container formats. &lt;br /&gt;
* ''[[libavutil]]'' is a helper library containing routines common to different parts of FFmpeg.&lt;br /&gt;
* ''[[libpostproc]]'' is a library containing [http://en.wikipedia.org/wiki/Video_postprocessing video postprocessing] routines.&lt;br /&gt;
* ''[[libswscale]]'' is a library containing video [http://en.wikipedia.org/wiki/Image_scaling image scaling] routines.&lt;br /&gt;
* ([[libavfilter]] is in development and is an API and library for video and audio filtering)&lt;br /&gt;
&lt;br /&gt;
==Codecs and formats supported ==&lt;br /&gt;
The FFmpeg developers have reverse engineering|reverse-engineered and/or reimplemented or invented, among others:&lt;br /&gt;
===Codecs===&lt;br /&gt;
See [[libavcodec]] for more details.&lt;br /&gt;
* [[Adaptive Transform Acoustic Coding|ATRAC3]]&amp;lt;ref name=&amp;quot;svn8747&amp;quot;&amp;gt;{{cite web | author = banan | url = http://svn.mplayerhq.hu/ffmpeg/trunk/Changelog?revision=8747&amp;amp;view=marku | title = Changelog | publisher = FFmpeg website | work = FFmpeg trunk SVN | date = [[17 April]] [[2007]] | accessdate = 2007-04-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[FFV1]] lossless and intraframe-only codec invented by ffmpeg developers&lt;br /&gt;
* [[H.261]],&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt; [[H.263]]&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt; and [[h.264/MPEG-4 AVC]]&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt;&lt;br /&gt;
* [[Indeo]] 2 and 3&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt;&lt;br /&gt;
* [[QDesign]] Music Codec 2, used by many QuickTime movies prior to QuickTime 7.&lt;br /&gt;
* [[Snow]] lossless or lossy working codec based on wavelet transform, invented by ffmpeg developers&lt;br /&gt;
* [[Sorenson 3 Codec]] used by many [[QuickTime]] movies&lt;br /&gt;
* [[Theora]] (together with [[Vorbis]] makes a base for the .[[ogg]] format)&lt;br /&gt;
* [[Truespeech]]&lt;br /&gt;
* TXD&amp;lt;ref name=&amp;quot;ffdev20070507&amp;quot;&amp;gt;{{cite web | author = banan | url = http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-May/028761.html | title = FFmpeg development mailing list | publisher = FFmpeg website | work = FFmpeg development | date = [[7 May]] [[2007]] | accessdate = 2007-06-01}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[VP5]]&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt; and [[VP6]]&amp;lt;ref name=&amp;quot;svn8747&amp;quot;/&amp;gt;&lt;br /&gt;
* [[Vorbis]]&lt;br /&gt;
* [[Windows Media Audio]]&lt;br /&gt;
* Some [[Windows Media Video]] codecs, including WMV1, WMV2 and WMV3&lt;br /&gt;
&lt;br /&gt;
The default [[MPEG-4]] codec used by FFmpeg for encoding has the [[FourCC]] of '''FMP4'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Formats===&lt;br /&gt;
* [[Advanced Systems Format|ASF]], and thereby the original version of [[DivX]]&lt;br /&gt;
* [[Audio Video Interleave|AVI]]&lt;br /&gt;
* [[FLV]]&lt;br /&gt;
* [[Matroska]]&lt;br /&gt;
* [[MPEG transport stream]]&lt;br /&gt;
* TXD&amp;lt;ref name=&amp;quot;ffdev20070507&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Legal status ==&lt;br /&gt;
FFmpeg's legal status varies by country. Some included codecs, (such as Sorenson 3), are claimed by patent owners. Such claims may be enforceable in countries like the United States which recognize [[software patent]]s, but are considered unenforcable or void in countries that do not recognize software patents. Furthermore, many of these codecs are only released under terms that forbid reverse engineering, even for purposes of interoperability. However, these terms of use are forbidden in certain countries. For example, some European Union nations do not recognize software patents and/or have laws expressly allowing reverse engineering for purposes of interoperability.&amp;lt;ref&amp;gt;{{cite encyclopedia |publisher=[[Directive on the legal protection of computer programs|Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs]]}}&amp;lt;/ref&amp;gt; In any case, many Linux distributions do not include FFmpeg to avoid legal complications.&amp;lt;ref&amp;gt;{{ cite web | title = Information about this on FFmpeg's website | url = http://ffmpeg.mplayerhq.hu/legal.html }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analysis ==&lt;br /&gt;
&lt;br /&gt;
''Clang Static Analyzer&lt;br /&gt;
*http://clang.llvm.org/StaticAnalysis.html&lt;br /&gt;
#http://tranquillity.ath.cx/clang/scan-build-2009-04-17-1/&lt;br /&gt;
#http://tranquillity.ath.cx/clang/scan-build-2009-04-18-1/&lt;br /&gt;
&lt;br /&gt;
''Coverity&lt;br /&gt;
*http://scan.coverity.com/&lt;br /&gt;
#http://scan.coverity.com/rungAll.html&lt;br /&gt;
&lt;br /&gt;
''zzuf&lt;br /&gt;
*http://caca.zoy.org/wiki/zzuf&lt;br /&gt;
#http://caca.zoy.org/wiki/zzuf/bugs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[FFmpeg Summer Of Code]]&lt;br /&gt;
*[[FFmpeg Wishlist]]&lt;br /&gt;
*[[:Category:FFmpeg Tutorials|FFmpeg Tutorials]]&lt;br /&gt;
&lt;br /&gt;
==Other projects and applications that use FFmpeg==&lt;br /&gt;
*[http://sourceforge.net/projects/ac3encode/ ac3encode (DirectShow AC3 Encoder)]&lt;br /&gt;
*[http://atglas.sourceforge.net/ AtGLas]&lt;br /&gt;
*[http://avifile.sourceforge.net/ avifile]&lt;br /&gt;
*[http://gatos.sourceforge.net/avview.php Avview]&lt;br /&gt;
*[http://www.bbrox.org/iPAQ/BBPlay/ bbplay]&lt;br /&gt;
*[http://www.bebits.com/app/2575 BeOS FFmpeg decoders]&lt;br /&gt;
*[http://www.bebits.com/app/2867  BeOS HybridDivx]&lt;br /&gt;
*[http://dspguru.doom9.net/  BeSweet]&lt;br /&gt;
*[http://chromaplayer.com/  Chroma Player]&lt;br /&gt;
*[http://sourceforge.net/projects/chronictv/  chronictv]&lt;br /&gt;
*[http://www.coreplayer.com/  CorePlayer]&lt;br /&gt;
*[http://www.objectifmac.com/english/downloads.php  D-Volution]&lt;br /&gt;
*[http://mh1.de/divxray/  DivXray]&lt;br /&gt;
*[http://sourceforge.net/projects/divxtodvd/  DivXtoDVD]&lt;br /&gt;
*[http://expandinglimits.com/drdivx/  Dr. Divx]&lt;br /&gt;
*[http://dvbcut.sourceforge.net/  dvbcut]&lt;br /&gt;
*[http://www.dvdflick.net/  DVDFlick]&lt;br /&gt;
*[http://sourceforge.net/projects/easyvob2divx/  Easy VOB 2 DivX]&lt;br /&gt;
*[http://ffdshow.sourceforge.net/  ffdshow]&lt;br /&gt;
*[http://ffdshow-tryout.sourceforge.net/  ffdshow tryouts]&lt;br /&gt;
*[http://ffmpeg-php.sourceforge.net/  ffmpeg-php]&lt;br /&gt;
*[http://www.v2v.cc/~j/ffmpeg2theora/  ffmpeg2theora]&lt;br /&gt;
*[http://sourceforge.net/projects/qt-ffmpeg/  FFMPEG for QT]&lt;br /&gt;
*[http://homepage.mac.com/major4/  ffmpegX for Mac OS X]&lt;br /&gt;
*[http://homepage.mac.com/gellenburg/ffmpegX_Companion/  ffmpegX Companion]&lt;br /&gt;
*[http://colabti.de/convertx/  FFRecord]&lt;br /&gt;
*[http://fftv.sourceforge.net/  fftv]&lt;br /&gt;
*[http://aldorandenet.free.fr/codecs/  FFusion, Alternative Codecs for Mac OS X]&lt;br /&gt;
*[http://fmj.sourceforge.net/  FMJ]&lt;br /&gt;
*[http://fobs.sourceforge.net/  Fobs]&lt;br /&gt;
*[http://freej.org/  FreeJ]&lt;br /&gt;
*[http://frogger.rules.pl/  Frogger]&lt;br /&gt;
*[http://gallery.sourceforge.net/  Gallery]&lt;br /&gt;
*[http://gmerlin.sourceforge.net/  gmerlin]&lt;br /&gt;
*[http://www.gomplayer.com/ GOM Player]&lt;br /&gt;
*[http://gpac.sourceforge.net/  GPAC]&lt;br /&gt;
*[http://www.gstreamer.net/  GStreamer]&lt;br /&gt;
*[http://handbrake.m0k.org/  HandBrake]&lt;br /&gt;
*[http://www.lonelycoder.com/hts/  HTS (Home Theater System)]&lt;br /&gt;
*[http://apple-x.net/thetakent/products.html  Hyperion]&lt;br /&gt;
*[http://imtoo.com/  ImTOO DVD Ripper]&lt;br /&gt;
*[http://jffmpeg.sourceforge.net/  Jffmpeg]&lt;br /&gt;
*[http://www.kdenlive.org/  Kdenlive]&lt;br /&gt;
*[http://kfilm.sourceforge.net/  KFilm]&lt;br /&gt;
*[http://www.iki.fi/damu/software/kmediafactory/index.html  KMediaFactory]&lt;br /&gt;
*[http://www.konvertor.net/indexe.html Konvertor]&lt;br /&gt;
*[http://ktoon.toonka.com/  KToon]&lt;br /&gt;
*[http://libquicktime.sourceforge.net/  libquicktime]&lt;br /&gt;
*[http://www.xs4all.nl/~salsaman/lives/index.html  LIVES]&lt;br /&gt;
*[http://lulop2.sourceforge.net/  LULOP2]&lt;br /&gt;
*[http://lynkeos.sourceforge.net/  Lynkeos]&lt;br /&gt;
*[http://mconverter.sourceforge.net/  mConverter]&lt;br /&gt;
*[http://mlt.sourceforge.net/  MLT Framework]&lt;br /&gt;
*[http://www.nurs.or.jp/~calcium/3gpp/sources/  MobileHackerz]&lt;br /&gt;
*[http://www.miksoft.net/mobileMediaConverter.htm  Mobile Media Converter]&lt;br /&gt;
*[http://sourceforge.net/projects/modprismiq/  modprismiq]&lt;br /&gt;
*[http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome  Motion]&lt;br /&gt;
*[http://moviethumbnail.sourceforge.net/  movie thumbnailer]&lt;br /&gt;
*[http://www.mp4converter.net/dvd-to-appletv-converter-mac.html mp4converter]&lt;br /&gt;
*[http://mpeg4ip.sourceforge.net/  mpeg4ip]&lt;br /&gt;
*[http://mplayerhq.hu/  MPlayer]&lt;br /&gt;
*[http://mplayerplug-in.sourceforge.net/ mplayer plug-in]&lt;br /&gt;
*[http://www.mythtv.org/  MythTV]&lt;br /&gt;
*[http://www.networkmultimedia.org/  Network-Integrated Multimedia Middleware (NMM)]&lt;br /&gt;
*[http://nvrec.sourceforge.net/  nvrec]&lt;br /&gt;
*[http://www.2600.com/offthehook/  Off The Hook]&lt;br /&gt;
*[http://openh323.sourceforge.net/  OpenH323]&lt;br /&gt;
*[http://www.perian.org/  Perian]&lt;br /&gt;
*[http://www.gocyberlink.com/english/companybg/pcmlinuxgpl.jsp  PowerCinema for Linux]&lt;br /&gt;
*[http://1homebrew.com/psp/pmppspmediaplayer.shtml  PSP Media Player]&lt;br /&gt;
*[http://www.pspvideo9.com/  PSP Video 9]&lt;br /&gt;
*[http://pymedia.org/  PyMedia]&lt;br /&gt;
*[http://qemacs.org/  QEmacs]&lt;br /&gt;
*[http://qstream.org/  QStream]&lt;br /&gt;
*[http://linuxvideo.info/  QuickView Pro]&lt;br /&gt;
*[http://rivavx.com/  Riva VX]&lt;br /&gt;
*[http://applian.com/replay-converter/ Replay Converter]&lt;br /&gt;
*[http://rmovie.rubyforge.org  rmovie]&lt;br /&gt;
*[http://shotdetect.nonutc.fr/  shotdetect]&lt;br /&gt;
*[http://sourceforge.net/projects/screenkast/  SkreenKast]&lt;br /&gt;
*[http://streamstudio.sourceforge.net/  StreamStudio]&lt;br /&gt;
*[http://www.erightsoft.net/SUPER.html SUPER]&lt;br /&gt;
*[http://megafonts.free.fr/flv/  TaKa FLV Encoder]&lt;br /&gt;
*[http://tcvp.sourceforge.net/ TCVP]&lt;br /&gt;
*[http://www.thekompany.com/embedded/tkcvideo/ tkcVideo]&lt;br /&gt;
*[http://www.transcoding.org/ Transcode]&lt;br /&gt;
*[http://www.tversity.com/ TVersity]&lt;br /&gt;
*[http://vchannel.sourceforge.net/player.html V-Player]&lt;br /&gt;
*[http://www.vdownloader.es/ VDownloader]&lt;br /&gt;
*[http://softdevice.berlios.de/ vdr-softdevice]&lt;br /&gt;
*[http://veejay.sourceforge.net/ VeeJay]&lt;br /&gt;
*[http://www.viceteam.org/ VICE]&lt;br /&gt;
*[http://www.videolan.org/ VideoLAN]&lt;br /&gt;
*[http://virchor.sourceforge.net/ Virtual Choreographer]&lt;br /&gt;
*[http://vitooki.sourceforge.net/ ViTooKi]&lt;br /&gt;
*[http://vive.sourceforge.net/ Vive]&lt;br /&gt;
*[http://biggmatt.com/winff/ WinFF]&lt;br /&gt;
*[http://qtwmacodec.sourceforge.net/ WMA codec for Mac OS X]&lt;br /&gt;
*[http://xawdecode.sourceforge.net/ Xawdecode]&lt;br /&gt;
*[http://www.xbmc.org/ XBMC (formally known as XBox Media Center)]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/XBMP XBox Media Player]&lt;br /&gt;
*[http://www.xinehq.de/ xine]&lt;br /&gt;
*[http://sourceforge.net/projects/xmffmpeg/ XMFFMPEG]&lt;br /&gt;
*[http://xvidcap.sourceforge.net/ xvidcap]&lt;br /&gt;
*[http://sourceforge.net/projects/xbyamp YAMP]&lt;br /&gt;
*[http://yellowtab.com/ Zeta]&lt;br /&gt;
*[http://www.zoneminder.com/ ZoneMinder]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://ffmpeg.org/ FFmpeg official website]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/FFmpeg Wikipedia FFmpeg article]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;br /&gt;
[[Category:Multimedia Projects]]&lt;br /&gt;
[[Category:Multimedia Programs]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13457</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=13457"/>
		<updated>2011-04-28T15:14:01Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Replace FFmpeg by Libav where appropriate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[Libav]] project has been a participant in the [http://code.google.com/soc/ Google Summer of Code] program since 2006,&lt;br /&gt;
before 2011 as [[FFmpeg]].&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 Libav codebase. Naturally, the end goal of each of the accepted 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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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;br /&gt;
[[Category:Libav]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13453</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=13453"/>
		<updated>2011-04-28T15:11:53Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg Summer Of Code moved to Libav Summer Of Code: Go Libav!&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;
* Student Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Active contributor&amp;lt;/font&amp;gt;&lt;br /&gt;
* Mentor: [[User:Lu_zero|Luca Barbato]], [[User:Mstorsjo|Martin Storsjö]]&lt;br /&gt;
* Code Status: &amp;lt;font color=&amp;quot;#00CC00&amp;quot;&amp;gt;Fully integrated ([[Improve RTSP/RTP layer|checklist]])&amp;lt;/font&amp;gt;&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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:Small_FFmpeg_Tasks&amp;diff=13451</id>
		<title>Talk:Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:Small_FFmpeg_Tasks&amp;diff=13451"/>
		<updated>2011-04-28T15:10:32Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Talk:Small FFmpeg Tasks moved to Talk:Small Libav Tasks: Go Libav!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Patch Rules==&lt;br /&gt;
should we link or quote some ffmpeg patch rules? e.g. tabs are forbidden, use diff -u or svn diff or (insert git command). it seems like this is a common mistake for SoC students. -- [[User:Compn|Compn]] 10:53, 29 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Well the mailing list page has a link to the [http://www.mplayerhq.hu/DOCS/tech/patches.txt MPlayer patch guidelines], but it's missing a few things such as:&lt;br /&gt;
:* No trailing whitespace&lt;br /&gt;
:* Must not break the regression tests&lt;br /&gt;
:* If it does change the regression tests, you must update regression.ref&lt;br /&gt;
:* Must check bounds on all input and must not allow overflow or other out-of-bounds condition&lt;br /&gt;
:* Use meaningful variable names&lt;br /&gt;
:* Globals/externs should have ff_ prefix to avoid naming conflicts&lt;br /&gt;
:* Doxygen comments&lt;br /&gt;
:* No breaking C standards (eg using underscore prefixes)&lt;br /&gt;
:* Keep { } tidy&lt;br /&gt;
:* No code duplication&lt;br /&gt;
:* Workarounds for compiler bugs (eg MSVC) must not break other platforms&lt;br /&gt;
: Anything else? -- [[User:Mkhodor|Mkhodor]] 13:18, 31 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: er, the whole rule list is availible here http://ffmpeg.mplayerhq.hu/general.html#SEC20 , feel free to add it-- [[User:Compn|Compn]] 14:09, 31 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Delphine CIN? ==&lt;br /&gt;
&lt;br /&gt;
But we already have it in FFmpeg - look at libavcodec/dsicinav.c and libavformat/dsicin.c --[[User:Kostya|Kostya]] 01:43, 31 March 2008 (EDT)&lt;br /&gt;
: Awesome. See, that's what this collaborative Wiki model is good for-- keeping me honest. :-) I'll get a test in [http://fate.multimedia.cx/ FATE] soon. --[[User:Multimedia Mike|Multimedia Mike]] 02:05, 31 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VC1 timestamps in m2ts ==&lt;br /&gt;
&lt;br /&gt;
''was: Add support for newer codecs such as [[Dirac]] and [[VC1]] to FFmpeg's [[Matroska]] muxer.''&lt;br /&gt;
:''[[Dirac]] should mux perfectly as of r16261. What about muxing [[VC1]] doesn't work? A quick -vcodec copy from wmv didn't throw any errors. -[[User:Yuvi|Yuvi]] 05:31, 3 January 2009 (EST)''&lt;br /&gt;
::''Yes, WMV3 works fine.  There was a report that muxing VC1 from m2ts didn't work.  If this does work then feel free to remove the task.  Also the demuxer doesn't recognize V_VC1.  ''-[[User:Mkhodor|Mkhodor]] 22:58, 4 January 2009 (EST)&lt;br /&gt;
:::''From m2ts, ffmpeg gives &amp;quot;error, pts &amp;lt; dts&amp;quot; which means that the timestamps coming out of the m2ts demuxer are invalid. I dunno if it would be easier to fix the demuxer or just extend the parser to fix/fill them in. For V_VC1, is that actually used by a muxer now? According to http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-August/034825.html it was a brief mistake that isn't supposed to be used. -[[User:Yuvi|Yuvi]] 02:50, 5 January 2009 (EST)&lt;br /&gt;
::::''I don't know of any other muxers that use it, so I made a note on the [[Matroska]] page that it is deprecated.'' -[[User:Mkhodor|Mkhodor]] 10:47, 13 January 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
==Removing Claimed tags==&lt;br /&gt;
Should the claimed tags be removed from the page? Most of them (if not all of them) are quite old, and many mention people who are not involved with the project anymore.  If so, I'll remove them within a few days. [[User:Dashcloud|Dashcloud]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=13449</id>
		<title>Small FFmpeg Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks&amp;diff=13449"/>
		<updated>2011-04-28T15:10:32Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Small FFmpeg Tasks moved to Small Libav Tasks: Go Libav!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains ideas for small, relatively simple tasks for the [[FFmpeg]] project. People who might be interested in trying one of these tasks:&lt;br /&gt;
* Someone who wants to contribute to FFmpeg and needs to find a well-defined task to start with&lt;br /&gt;
* Someone who wishes to qualify for one of FFmpeg's coveted [[FFmpeg Summer Of Code|Summer of Code]] project slots&lt;br /&gt;
* An existing FFmpeg developer who has been away from the project for a while and needs a smaller task as motivation for re-learning the codebase&lt;br /&gt;
&lt;br /&gt;
For other tasks of varying difficulty, see the [[Interesting Patches]] page.&lt;br /&gt;
&lt;br /&gt;
'''If you would like to work on one of these tasks''', please take these steps:&lt;br /&gt;
* Subscribe to the [https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel FFmpeg development mailing list] and indicate your interest&lt;br /&gt;
* Ask [[User:Multimedia Mike|Multimedia Mike]] for a Wiki account so you can claim your task on this Wiki&lt;br /&gt;
&lt;br /&gt;
'''If you would like to add to this list''', please be prepared to explain some useful details about the task. Excessively vague tasks with no supporting details will be ruthlessly deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Finish up a previous incomplete SoC project ===&lt;br /&gt;
&lt;br /&gt;
Several SoC projects from previous years have not yet made it into FFmpeg. Taking any of them and finishing them up to the point that they can be included should make for a good qualification task. Check out the [[FFmpeg Summer Of Code]] overview page and look for the unfinished projects, like Dirac, TS muxer, JPEG 2000.&lt;br /&gt;
&lt;br /&gt;
=== Generic Colorspace system ===&lt;br /&gt;
This task involves adding support more than 8 bits per component (Y on 10 bits, U on 10 bits, V on 10 bits for example)&lt;br /&gt;
and generic simple conversion to other colorspaces.&lt;br /&gt;
&lt;br /&gt;
''Does this have to do with revising FFmpeg's infrastructure? If so, then it doesn't feel like a qualification task. If it's something simpler, then the vague description does not convey that simplicity. Please expound.'' --[[User:Multimedia Mike|Multimedia Mike]] 12:56, 25 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''I don't think so, extending PixFmt to extended structure with finegrained description like depth, range values, colorspace, sample period, and write generic simple conversion from all formats to all others, like suggested by Michael on the mailing list. Conversion routine can be a good qualification task for video encoders/decoders. What do you think ?&lt;br /&gt;
--[[User:Bcoudurier|Baptiste Coudurier]] 00:30, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
''* Adding the [[YCoCg]] colorspace (with different sized planes) for RGB sourced pictures would be nice too. [[User:Elte|Elte]] 07:15, 16 March 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Make the SoC dts encoder multichannel capable ===&lt;br /&gt;
Here is a skeleton for a dts encoder http://svn.mplayerhq.hu/soc/dcaenc/, currently it can only encode stereo streams.&lt;br /&gt;
The task is to extend it to support 5.1 channels also.&lt;br /&gt;
&lt;br /&gt;
Specs and info can be found here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=DTS&lt;br /&gt;
&lt;br /&gt;
=== Extend GIF Encoder and Decoder to support Animated GIFs ===&lt;br /&gt;
&lt;br /&gt;
=== reverse engineer realplayer's ivr format and create a demuxer for it ===&lt;br /&gt;
samples on [[IVR]] page.&lt;br /&gt;
&lt;br /&gt;
=== Implement a Vivo demuxer for FFmpeg ===&lt;br /&gt;
Implement an FFmpeg demuxer for the [[Vivo]] file format. The best reference for understanding the format would be MPlayer's [http://svn.mplayerhq.hu/mplayer/trunk/libmpdemux/demux_viv.c?view=markup existing .viv demuxer].&lt;br /&gt;
&lt;br /&gt;
This task corresponds to issue 99: http://roundup.ffmpeg.org/roundup/ffmpeg/issue99&lt;br /&gt;
&lt;br /&gt;
''I am ready to help out with understanding MPlayer's demuxer, esp. MPlayer API stuff if necessary.&lt;br /&gt;
--[[User:Reimar|Reimar]] 15:46, 1 March 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Port missing demuxers from MPlayer to FFmpeg ===&lt;br /&gt;
MPlayer supports a few container formats in libmpdemux that are not yet present in libavformat. Porting them over and gettting them relicensed as LGPL or reimplementing them from scratch should make reasonable small tasks.&lt;br /&gt;
&lt;br /&gt;
# TiVo -- ''Jai Menon is working on this''&lt;br /&gt;
# VIVO -- ''Daniel Verkamp has a patch for this''&lt;br /&gt;
# SL support for MPEG-TS (anyone got samples?)&lt;br /&gt;
# MNG&lt;br /&gt;
&lt;br /&gt;
=== Optimal Huffman tables for (M)JPEG ===&lt;br /&gt;
This task is outlined at http://guru.multimedia.cx/small-tasks-for-ffmpeg/ and is tracked in the issue tracker: http://roundup.ffmpeg.org/roundup/ffmpeg/issue267&lt;br /&gt;
&lt;br /&gt;
=== M95 Playback System ===&lt;br /&gt;
This task is to implement an FFmpeg playback subsystem for [[M95]] files. This will entail writing a new file demuxer and video decoder (the audio is already uncompressed), both of which are trivial by FFmpeg standards. [[M95|The M95 page]] contains the specs necessary to complete this task and points to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== BRP Playback System ===&lt;br /&gt;
This task is to implement an FFmpeg playback subsystem for [[BRP]] files. This will entail writing a new file demuxer as well as a video decoder that can handle at least 2 variations of format data. Further, write an audio decoder for the custom DPCM format in the file. All of these tasks are considered trivial by FFmpeg standards. [[BRP|The BRP page]] contains the specs necessary to complete this task and points to downloadable samples for both known variations.&lt;br /&gt;
&lt;br /&gt;
=== 16-bit VQA Video Decoder ===&lt;br /&gt;
FFmpeg already supports Westwood [[VQA]] files. However, there are 3 variations of its custom video codec. The first 2 are supported in FFmpeg. This task involves implementing support for the 3rd variation. Visit the VQA samples repository: http://samples.mplayerhq.hu/game-formats/vqa/ -- The files in the directories Tiberian Sun VQAs/, bladerunner/, and dune2000/ use the 3rd variation of this codec. The [[VQA|VQA page]] should link to all the details you need to support this format.&lt;br /&gt;
&lt;br /&gt;
Discussion/patch: ([http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-March/065348.html reference])&lt;br /&gt;
&lt;br /&gt;
=== HNM4 Playback System ===&lt;br /&gt;
This task is to implement an FFmpeg playback subsystem for [[HNM4]] variant of the [[HNM]] format. This will entail writing a new file demuxer and video decoder, both of which are trivial by FFmpeg standards. [[HNM4|The HNM4 page]] contains the specs necessary to complete this task and links to downloadable samples.&lt;br /&gt;
&lt;br /&gt;
=== Apple RPZA encoder ===&lt;br /&gt;
A patch was once sent to the ffmpeg-devel mailing list to include an encoder for the [[Apple RPZA]] video codec. That code can be found on the &amp;quot;[[Interesting Patches]]&amp;quot; page. This qualification task involves applying that patch so that it can compile with current FFmpeg SVN code and then cleaning it up per the standards of the project. Engage the mailing list to learn more about what to do.&lt;br /&gt;
&lt;br /&gt;
=== QuickTime Edit List Support ===&lt;br /&gt;
Implement edit list support in FFmpeg's QuickTime demuxer (libavformat/mov.c). This involves parsing the 'elst' atom in a QuickTime file. For a demonstration of how this is a problem, download the file menace00.mov from http://samples.mplayerhq.hu/mov/editlist/ and play it with ffplay or transcode it with ffmpeg. Notice that the audio and video are ever so slightly out of sync. Proper edit list support will solve that. Other samples in that directory also presumably exhibit edit list-related bugs. The [http://xine.cvs.sourceforge.net/xine/xine-lib/src/demuxers/demux_qt.c?view=markup Xine demuxer] has support for this, it might be useful for hints.&lt;br /&gt;
&lt;br /&gt;
(patch was submitted to ffmpeg-devel , around 14 March 2009) &lt;br /&gt;
&lt;br /&gt;
=== Implement the Flash Screen Video codec version 2 ===&lt;br /&gt;
FFmpeg is missing both a decoder and an encoder. Would be nice to have that.&lt;br /&gt;
&lt;br /&gt;
:''Daniel Verkamp is working on this''&lt;br /&gt;
&lt;br /&gt;
=== Add wma fixed point decoder back into libavcodec ===&lt;br /&gt;
http://svn.rockbox.org/viewvc.cgi/trunk/apps/codecs/libwma/&lt;br /&gt;
Rockbox's fixed-point WMA decoder was adapted from the decoder in libavcodec.&lt;br /&gt;
&lt;br /&gt;
=== VC1 timestamps in m2ts ===&lt;br /&gt;
&lt;br /&gt;
Codec copy of VC1 from m2ts currently doesn't work. Either extend the VC1 parser to output/fix timestamps, or fix the timestamps from m2ts demuxing.&lt;br /&gt;
&lt;br /&gt;
=== FLIC work ===&lt;br /&gt;
&lt;br /&gt;
Revise the [[Flic Video]] decoder at libavcodec/flicvideo.c to support video transported in AVI or MOV files while making sure that data coming from the usual FLI files still works. 'AFLC' and 'flic' FourCC samples are linked from the [[Flic Video]] page.&lt;br /&gt;
&lt;br /&gt;
=== CJPG format ===&lt;br /&gt;
&lt;br /&gt;
Extend FFmpeg's MJPEG decoder to handle the different frames/packing of CJPG. Samples at: http://roundup.ffmpeg.org/roundup/ffmpeg/issue777&lt;br /&gt;
&lt;br /&gt;
=== flip flag for upside-down codecs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;about the flip, a patch that decodes images fliped when&lt;br /&gt;
codec_tag == ff_get_fourcc(&amp;quot;GEOX&amp;quot;) is welcome.&lt;br /&gt;
its a metter of 2lines manipulating data/linesize of imgages after&lt;br /&gt;
get_buffer() or something similar&lt;br /&gt;
[...]&lt;br /&gt;
-- &lt;br /&gt;
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
more info:&lt;br /&gt;
http://roundup.ffmpeg.org/roundup/ffmpeg/issue741&lt;br /&gt;
&lt;br /&gt;
=== lavf-based concatenation tool ===&lt;br /&gt;
&lt;br /&gt;
Unless we have multiple files input in FFmpeg, it would be nice to have some libavformat-based tool that would extract frames from multiple files (possible different containers as well) and put them into single one.&lt;br /&gt;
&lt;br /&gt;
=== cljr and vcr1 encoders ===&lt;br /&gt;
According to this: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-February/063555.html both of the encoders are disabled, and won't compile if enabled.  Michael would prefer to keep them around, and have someone grow them into full encoders.&lt;br /&gt;
&lt;br /&gt;
=== implement some colorspace fourcc/codecs ===&lt;br /&gt;
some colorspace formats were uploaded to http://samples.mplayerhq.hu/V-codecs/&lt;br /&gt;
including:&lt;br /&gt;
 CYUV.AVI is 8 Bit Interleaved 4:2:2&lt;br /&gt;
 a12v.avi is 4:2:2:4 10 Bit Interleaved&lt;br /&gt;
 auv2.avi is 4:2:2:4 8 Bit Interleaved&lt;br /&gt;
 and V-codecs/yuv8/MAILTEST.AVI .&lt;br /&gt;
&lt;br /&gt;
it might decode with current pixfmts, for that all you will need is:&lt;br /&gt;
 cd ffmpeg&lt;br /&gt;
 svn di -r20378:20379&lt;br /&gt;
&lt;br /&gt;
step by step tutorial for adding new input formats to swscale:&lt;br /&gt;
 cd mplayer/libswscale/&lt;br /&gt;
 svn di -r20426:20427&lt;br /&gt;
 the hunks 3 and 5 you dont need, they are optional special converters&lt;br /&gt;
 also the change to isSupportedOut() you dont need&lt;br /&gt;
 above will add a new input format&lt;br /&gt;
&lt;br /&gt;
another example for adding an input format&lt;br /&gt;
 cd mplayer/libswscale/&lt;br /&gt;
 svn di -r20604:20605&lt;br /&gt;
&lt;br /&gt;
=== Implement Phantom Cine demuxer and Bayer format support for swscale ===&lt;br /&gt;
The format is described here:&lt;br /&gt;
http://wiki.multimedia.cx/index.php?title=Phantom_Cine&lt;br /&gt;
It will need support for Bayer -&amp;gt; RGB conversion in swscale to make the demuxer useful though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== support for [[YCoCg]]/RGB colorspace in FFV1 ===&lt;br /&gt;
Add support for [[YCoCg]] and [[RGB]] encoded sources for the [[FFV1]] codec&lt;br /&gt;
&lt;br /&gt;
This would add a free lossless intra-frame RGB codec for all by FFmpeg supported platforms (most important MacOS + Windows) which is often asked for video editing in video forums (e.g. slashcam.de)&lt;br /&gt;
&lt;br /&gt;
=== Metal Gear Solid Video format demuxer ===&lt;br /&gt;
Write a demuxer to play video files harvested from the game Metal Gear Solid: The Twin Snakes. The format is described on the wiki page [[Metal Gear Solid VP3]] (which also contains links to samples). This page is based on observations and conjecture, so remember to engage the ffmpeg-devel mailing list with questions.&lt;br /&gt;
&lt;br /&gt;
=== [[IFF#ANIM|IFF ANIM]] decoder ===&lt;br /&gt;
Modify libavformat/iff.c to handle this chunk and write a decoder for the format. The wiki page at [[IFF#ANIM|IFF ANIM]] has links to more information and source code. Samples can be found at http://www-user.tu-chemnitz.de/~womar/projects/iffanim/iffanim_samplepack.zip .&lt;br /&gt;
&lt;br /&gt;
=== [[CDXL]] decoder ===&lt;br /&gt;
http://roundup.ffmpeg.org/roundup/ffmpeg/issue1012&lt;br /&gt;
&lt;br /&gt;
Write a decoder for this format using the information in the [[CDXL]] wiki page&lt;br /&gt;
Discussed for the 2009 SoC &lt;br /&gt;
&lt;br /&gt;
=== port missing decoders/demuxers from other open source projects. ===&lt;br /&gt;
&lt;br /&gt;
http://www.mega-nerd.com/libsndfile/#Features&lt;br /&gt;
 Paris Audio File PAF&lt;br /&gt;
 IRCAM SF&lt;br /&gt;
 GNU Octave 2.0 MAT4&lt;br /&gt;
 GNU Octave 2.1 MAT5&lt;br /&gt;
 Portable Voice Format PVFSound&lt;br /&gt;
 Designer II SD2&lt;br /&gt;
samples are here: http://www.mega-nerd.com/tmp/SoundFileCollection-20050711-0902.tgz&lt;br /&gt;
&lt;br /&gt;
http://www.hawksoft.com/hawkvoice/&lt;br /&gt;
 HVDI_VOICE_DATA- packet&lt;br /&gt;
 [[GSM]]&lt;br /&gt;
 LPC&lt;br /&gt;
 CELP&lt;br /&gt;
 LPC10&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/projects/vgmstream&lt;br /&gt;
 150+ formats: http://vgmstream.svn.sourceforge.net/viewvc/vgmstream/readme.txt&lt;br /&gt;
&lt;br /&gt;
http://www.imagemagick.org&lt;br /&gt;
http://www.graphicsmagick.org/formats.html&lt;br /&gt;
 many image formats not in ffmpeg yet.&lt;br /&gt;
&lt;br /&gt;
http://gpac.sourceforge.net/&lt;br /&gt;
 [[MPEG-4 BIFS]]&lt;br /&gt;
 3GPP DIMS&lt;br /&gt;
 [[LASeR]]&lt;br /&gt;
 SAF&lt;br /&gt;
 SVG&lt;br /&gt;
 [[Synchronized Multimedia Integration Language|SMIL]]&lt;br /&gt;
 VRML&lt;br /&gt;
 X3D&lt;br /&gt;
 XMT&lt;br /&gt;
&lt;br /&gt;
http://adplug.sourceforge.net/&lt;br /&gt;
http://adplug.sourceforge.net/library/&lt;br /&gt;
 many OPL2/OPL3 audio formats not in ffmpeg yet.&lt;br /&gt;
&lt;br /&gt;
http://mikmod.raphnet.net/&lt;br /&gt;
http://mikmod.raphnet.net/#features&lt;br /&gt;
 many music pattern formats not in ffmpeg yet.&lt;br /&gt;
&lt;br /&gt;
http://www.fly.net/~ant/libs/audio.html#Game_Music_Emu&lt;br /&gt;
 AY&lt;br /&gt;
 GBS&lt;br /&gt;
 GYM&lt;br /&gt;
 HES&lt;br /&gt;
 KSS&lt;br /&gt;
 NSF, NSFE&lt;br /&gt;
 SAP&lt;br /&gt;
 [[SNES-SPC700 Sound Format]]&lt;br /&gt;
 VGM, VGZ&lt;br /&gt;
&lt;br /&gt;
=== port [[Ut Video]] decoder/encoder ===&lt;br /&gt;
gpl v2 decoder/encoder at wiki page&lt;br /&gt;
&lt;br /&gt;
=== Sony psp demuxer ===&lt;br /&gt;
create/port a demuxer for the sony playstation portable format PMP.&lt;br /&gt;
*Samples: http://samples.mplayerhq.hu/playstation/psp/&lt;br /&gt;
*mplayer demuxer: http://mplayer-ww.svn.sourceforge.net/viewvc/mplayer-ww/trunk/mplayer/libmpdemux/demux_pmp.c&lt;br /&gt;
&lt;br /&gt;
=== libswscale PAL8 output ===&lt;br /&gt;
&lt;br /&gt;
See the thread: &amp;quot;[RFC] libswscale palette output implementation&amp;quot;:&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/101397&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== vloopback output support ===&lt;br /&gt;
&lt;br /&gt;
vloopback is a linux kernel device which allows to create a virtual video device where&lt;br /&gt;
programs can write, and can be accessed as a normal video device:&lt;br /&gt;
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoFourLinuxLoopbackDevice&lt;br /&gt;
&lt;br /&gt;
This would allow to write the ffmpeg output to a vloopdevice and be displayed by some a&lt;br /&gt;
program reading from such device (e.g. skype, a voip client etc.).&lt;br /&gt;
&lt;br /&gt;
An example of a program which uses vloopback:&lt;br /&gt;
http://www.ws4gl.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Port video filters from MPlayer/VLC/Mjpegtools/Effectv/etc etc to libavfilter ===&lt;br /&gt;
&lt;br /&gt;
There are plenty programs providing their own filters, many of them may be easily ported to the &lt;br /&gt;
superior ;-) framework of libavfilter. Also may be possible to create wrappers around other libraries&lt;br /&gt;
(e.g. opencv, libgimp, libshowphoto, libaa).&lt;br /&gt;
&lt;br /&gt;
=== Add weighted motion compensation for B-frames in RV3/4 ===&lt;br /&gt;
&lt;br /&gt;
RealVideo 3 and 4 uses weighted motion compensation for B-frames (like H.264) but current code&lt;br /&gt;
always uses simple averaging. Reverse-engineer weighted MC functions for B-frames and make&lt;br /&gt;
RV3/4 decoder use them.&lt;br /&gt;
&lt;br /&gt;
=== rar/zip/gz/bz2 etc demuxer ===&lt;br /&gt;
there are still compressed files out there (zipped raw wav, multi-rar'ed videos etc). create a decompression demuxer for them.&lt;br /&gt;
&lt;br /&gt;
=== Less common AAC decoder features ===&lt;br /&gt;
&lt;br /&gt;
Add support to the AAC decoder for object type ER AAC LC or AAC LC 960.&lt;br /&gt;
&lt;br /&gt;
=== rewrite rm demuxer ===&lt;br /&gt;
the rm demuxer was written before specs were available and has guesses, hacks and generally needs a cleanup/update.&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_distribution_status&amp;diff=13032</id>
		<title>FFmpeg distribution status</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_distribution_status&amp;diff=13032"/>
		<updated>2010-10-02T13:56:33Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: basic overview of FFmpeg packages in distributions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FFmpeg distribution packages are often incomplete or crippled.  Oftentimes they are not crippled, but people claim they are.  This page tries to track the status of FFmpeg in distributions to clear up this confusion and provide a quick overview of the situation.&lt;br /&gt;
&lt;br /&gt;
=== Gentoo (unverified) ===&lt;br /&gt;
&lt;br /&gt;
Gentoo packages are not crippled in any way.&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu (unverified) ===&lt;br /&gt;
&lt;br /&gt;
Ubuntu ships uncrippled FFmpeg packages in universe.  FFmpeg is not available on the install DVDs.&lt;br /&gt;
&lt;br /&gt;
=== Debian (unverified) ===&lt;br /&gt;
&lt;br /&gt;
Lenny packages are crippled and have some encoders disabled.  Squeeze packages are uncrippled.&lt;br /&gt;
&lt;br /&gt;
=== Fedora / Red Hat (unverified) ===&lt;br /&gt;
&lt;br /&gt;
Fedora does not have any sort of multimedia in their repositories, except for the Xiph kind.  FFmpeg and other packages are available from the livna repositories.&lt;br /&gt;
&lt;br /&gt;
=== OpenSUSE (unverified) ===&lt;br /&gt;
&lt;br /&gt;
The status regarding OpenSUSE is unknown.  Supposedly they ship no FFmpeg packages, users need to get them from packman instead.&lt;br /&gt;
&lt;br /&gt;
[[category: FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=13031</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=13031"/>
		<updated>2010-10-02T13:32:59Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Update AAC encoder and MLP encoder status.&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_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 still missing some features&amp;lt;/font&amp;gt;, [[User:AConverse|Alex Converse]] is working on finishing it.&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;
&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;
&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;
&lt;br /&gt;
=== Libavfilter audio work ===&lt;br /&gt;
* Student: Sebastian Vater&lt;br /&gt;
* Mentor: [[User:Andoma|Andreas Öman]]&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>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_demuxer_howto&amp;diff=12814</id>
		<title>FFmpeg demuxer howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_demuxer_howto&amp;diff=12814"/>
		<updated>2010-07-08T13:48:20Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg demuxer howto moved to FFmpeg demuxer HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FFmpeg demuxer HOWTO]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_demuxer_HOWTO&amp;diff=12813</id>
		<title>FFmpeg demuxer HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_demuxer_HOWTO&amp;diff=12813"/>
		<updated>2010-07-08T13:48:19Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg demuxer howto moved to FFmpeg demuxer HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: ''please make this page more complete if you can, thanks''&lt;br /&gt;
&lt;br /&gt;
== registering the demuxer ==&lt;br /&gt;
&lt;br /&gt;
=== libavformat/allformats.c ===&lt;br /&gt;
&lt;br /&gt;
Add for a demuxer:&lt;br /&gt;
 REGISTER_DEMUXER(DEMUXERNAME, demuxername)&lt;br /&gt;
&lt;br /&gt;
For a muxer:&lt;br /&gt;
 REGISTER_MUXER(MUXERNAME, muxername)&lt;br /&gt;
 &lt;br /&gt;
The macro will add the _demuxer or whatever is appropriate. '''Run configure in the top level directory and make clean, as config.h will be automatically modified'''.&lt;br /&gt;
&lt;br /&gt;
 make dist-clean&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== libavformat/Makefile ===&lt;br /&gt;
&lt;br /&gt;
Add &lt;br /&gt;
 OBJS-$(CONFIG_DEMUXERNAME_DEMUXER)    += filename.o&lt;br /&gt;
&lt;br /&gt;
== demuxer code ==&lt;br /&gt;
&lt;br /&gt;
This section is merely an overview; please look at an actual demuxer to see how to do it.&lt;br /&gt;
&lt;br /&gt;
=== demuxername_probe ===&lt;br /&gt;
&lt;br /&gt;
The probe will be called by the framework; this is where you can detect if the file is your format. There should be no dependence on filename, in fact you probably can't even access it. Most video containers start with some constant sequence of bytes. If there are 4 bytes and they are always the same, and unique, then return AVPROBE_SCORE_MAX. Otherwise, return 0. If the format is mis-designed and doesn't have this, divide AVPROBE_SCORE_MAX by something (e.g. 2) to designate limited confidence that the file corresponds to your demuxer.&lt;br /&gt;
&lt;br /&gt;
=== demuxername_read_header ===&lt;br /&gt;
&lt;br /&gt;
Here you should get any header information, e.g. the frame width if it is video, the sample rate if it is audio, etc. You should also setup your streams (looking at examples usually explains most things, except perhaps [[presentation timestamp|timestamp]] information); set codec_type, codec_id, and possibly width, height, pix_fmt for video, and channels, sample_rate, bits_per_sample, and bit_rate for audio. return 0.&lt;br /&gt;
&lt;br /&gt;
=== demuxername_read_packet ===&lt;br /&gt;
&lt;br /&gt;
Most formats are split into blocks of audio and video. The read_packet function should set up pkt. This involves initializing the packet with av_new_packet, or, preferably, av_get_packet (which also takes the file stream as an argument). After you initialize the packet, you should set (in any order) pos and data (if you used av_new_packet), stream_index (to set which decoder, usually audio or video, to send the packet to, which corresponds to the order you initialized them in), and pts, the presentation timestamp.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg codec howto]]&lt;br /&gt;
* [[FFmpeg programming conventions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg Tutorials]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto&amp;diff=12812</id>
		<title>FFmpeg filter howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto&amp;diff=12812"/>
		<updated>2010-07-08T13:48:06Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg filter howto moved to FFmpeg filter HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FFmpeg filter HOWTO]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_filter_HOWTO&amp;diff=12811</id>
		<title>FFmpeg filter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_filter_HOWTO&amp;diff=12811"/>
		<updated>2010-07-08T13:48:06Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg filter howto moved to FFmpeg filter HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as an introduction of writing filters for [[libavfilter]].  This is a work in progress, but should at least point you in the right direction for writing simple filters.&lt;br /&gt;
&lt;br /&gt;
== Definition of a filter ==&lt;br /&gt;
&lt;br /&gt;
=== AVFilter ===&lt;br /&gt;
All filters are described by an AVFilter structure.  This structure gives information needed to initialize the filter, and information on the entry points into the filter code.  This structure is declared in libavfilter/avfilter.h:&lt;br /&gt;
&lt;br /&gt;
 typedef struct&lt;br /&gt;
 {&lt;br /&gt;
     char *name;         ///&amp;lt; filter name&lt;br /&gt;
 &lt;br /&gt;
     int priv_size;      ///&amp;lt; size of private data to allocate for the filter&lt;br /&gt;
 &lt;br /&gt;
     int (*init)(AVFilterContext *ctx, const char *args, void *opaque);&lt;br /&gt;
     void (*uninit)(AVFilterContext *ctx);&lt;br /&gt;
 &lt;br /&gt;
     int (*query_formats)(AVFilterContext *ctx);&lt;br /&gt;
 &lt;br /&gt;
     const AVFilterPad *inputs;  ///&amp;lt; NULL terminated list of inputs. NULL if none&lt;br /&gt;
     const AVFilterPad *outputs; ///&amp;lt; NULL terminated list of outputs. NULL if none&lt;br /&gt;
 } AVFilter;&lt;br /&gt;
&lt;br /&gt;
The query_formats function sets the in_formats member of connected '''output''' links, and the out_formats member of connected '''input''' links, described below under AVFilterLink.&lt;br /&gt;
&lt;br /&gt;
=== AVFilterPad ===&lt;br /&gt;
Let's take a quick look at the AVFilterPad structure, which is used to describe the inputs and outputs of the filter.  This is also defined in libavfilter/avfilter.h:&lt;br /&gt;
&lt;br /&gt;
 typedef struct AVFilterPad&lt;br /&gt;
 {&lt;br /&gt;
     char *name;&lt;br /&gt;
     int type;&lt;br /&gt;
 &lt;br /&gt;
     int min_perms;&lt;br /&gt;
     int rej_perms;&lt;br /&gt;
 &lt;br /&gt;
     void (*start_frame)(AVFilterLink *link, AVFilterPicRef *picref);&lt;br /&gt;
     AVFilterPicRef *(*get_video_buffer)(AVFilterLink *link, int perms);&lt;br /&gt;
     void (*end_frame)(AVFilterLink *link);&lt;br /&gt;
     void (*draw_slice)(AVFilterLink *link, int y, int height);&lt;br /&gt;
 &lt;br /&gt;
     int (*request_frame)(AVFilterLink *link);&lt;br /&gt;
 &lt;br /&gt;
     int (*config_props)(AVFilterLink *link);&lt;br /&gt;
 } AVFilterPad;&lt;br /&gt;
&lt;br /&gt;
The actual definition in the header file has doxygen comments describing each entry point, its purpose, and what type of pads it is relevant for.  These fields are relevant for all pads:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Name of the pad.  No two inputs should have the same name, and no two outputs should have the same name.&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|Only AV_PAD_VIDEO currently.&lt;br /&gt;
|-&lt;br /&gt;
|config_props&lt;br /&gt;
|Handles configuration of the link connected to the pad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Fields only relevant to input pads are:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|min_perms&lt;br /&gt;
|Minimum permissions required to a picture received as input.&lt;br /&gt;
|-&lt;br /&gt;
|rej_perms&lt;br /&gt;
|Permissions not accepted on pictures received as input.&lt;br /&gt;
|-&lt;br /&gt;
|start_frame&lt;br /&gt;
|Called when a frame is about to be given as input.&lt;br /&gt;
|-&lt;br /&gt;
|draw_slice&lt;br /&gt;
|Called when a slice of frame data has been given as input.&lt;br /&gt;
|-&lt;br /&gt;
|end_frame&lt;br /&gt;
|Called when the input frame has been completely sent.&lt;br /&gt;
|-&lt;br /&gt;
|get_video_buffer&lt;br /&gt;
|Called by the previous filter to request memory for a picture.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Fields only relevant to output pads are:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|request_frame&lt;br /&gt;
|Requests that the filter output a frame.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Picture buffers ==&lt;br /&gt;
&lt;br /&gt;
=== Reference counting ===&lt;br /&gt;
All pictures in the filter system are reference counted.  This means that there is a picture buffer with memory allocated for the image data, and various filters can own a reference to the buffer.  When a reference is no longer needed, its owner frees the reference.  When the last reference to a picture buffer is freed, the filter system automatically frees the picture buffer.&lt;br /&gt;
&lt;br /&gt;
=== Permissions ===&lt;br /&gt;
The upshot of multiple filters having references to a single picture is that they will all want some level of access to the image data.  It should be obvious that if one filter expects to be able to read the image data without it changing that no other filter should write to the image data.  The permissions system handles this.&lt;br /&gt;
&lt;br /&gt;
In most cases, when a filter prepares to output a frame, it will request a buffer from the filter to which it will be outputting.  It specifies the minimum permissions it needs to the buffer, though it may be given a buffer with more permissions than the minimum it requested.&lt;br /&gt;
&lt;br /&gt;
When it wants to pass this buffer to another filter as output, it creates a new reference to the picture, possibly with a reduced set of permissions.  This new reference will be owned by the filter receiving it.&lt;br /&gt;
&lt;br /&gt;
So, for example, for a filter which drops frames if they are similar to the last frame it output, it would want to keep its own reference to a picture after outputting it, and make sure that no other filter modified the buffer either.  It would do this by requesting the permissions AV_PERM_READ|AV_PERM_WRITE|AV_PERM_PRESERVE for itself, and removing the AV_PERM_WRITE permission from any references it gave to other filters.&lt;br /&gt;
&lt;br /&gt;
The available permissions are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Permission&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|AV_PERM_READ&lt;br /&gt;
|Can read the image data.&lt;br /&gt;
|-&lt;br /&gt;
|AV_PERM_WRITE&lt;br /&gt;
|Can write to the image data.&lt;br /&gt;
|-&lt;br /&gt;
|AV_PERM_PRESERVE&lt;br /&gt;
|Can assume that the image data will not be modified by other filters. This means that no other filters should have the AV_PERM_WRITE permission.&lt;br /&gt;
|-&lt;br /&gt;
|AV_PERM_REUSE&lt;br /&gt;
|The filter may output the same buffer multiple times, but the image data may not be changed for the different outputs.&lt;br /&gt;
|-&lt;br /&gt;
|AV_PERM_REUSE2&lt;br /&gt;
|The filter may output the same buffer multiple times, and may modify the image data between outputs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Filter Links ==&lt;br /&gt;
A filter's inputs and outputs are connected to those of another filter through the AVFilterLink structure:&lt;br /&gt;
&lt;br /&gt;
 typedef struct AVFilterLink&lt;br /&gt;
 {&lt;br /&gt;
     AVFilterContext *src;       ///&amp;lt; source filter&lt;br /&gt;
     unsigned int srcpad;        ///&amp;lt; index of the output pad on the source filter&lt;br /&gt;
 &lt;br /&gt;
     AVFilterContext *dst;       ///&amp;lt; dest filter&lt;br /&gt;
     unsigned int dstpad;        ///&amp;lt; index of the input pad on the dest filter&lt;br /&gt;
 &lt;br /&gt;
     int w;                      ///&amp;lt; agreed upon image width&lt;br /&gt;
     int h;                      ///&amp;lt; agreed upon image height&lt;br /&gt;
     enum PixelFormat format;    ///&amp;lt; agreed upon image colorspace&lt;br /&gt;
 &lt;br /&gt;
     AVFilterFormats *in_formats;    ///&amp;lt; formats supported by source filter&lt;br /&gt;
     AVFilterFormats *out_formats;   ///&amp;lt; formats supported by destination filter&lt;br /&gt;
 &lt;br /&gt;
     AVFilterPicRef *srcpic;&lt;br /&gt;
 &lt;br /&gt;
     AVFilterPicRef *cur_pic;&lt;br /&gt;
     AVFilterPicRef *outpic;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
The src and dst members indicate the filters at the source and destination ends of the link, respectively.  The srcpad indicates the index of the output pad on the source filter to which the link is connected.  Likewise, the dstpad indicates the index of the input pad on the destination filter.&lt;br /&gt;
&lt;br /&gt;
The in_formats member points to a list of formats supported by the source filter, while the out_formats member points to a list of formats supported by the destination filter.  The AVFilterFormats structure used to store the lists is reference counted, and in fact tracks its references (see the comments for the AVFilterFormats structure in libavfilter/avfilter.h for more information on how the colorspace negotiation is works and why this is necessary).  The upshot is that if a filter provides pointers to the same list on multiple input/output links, it means that those links will be forced to use the same format as each other.&lt;br /&gt;
&lt;br /&gt;
When two filters are connected, they need to agree upon the dimensions of the image data they'll be working with, and the format that data is in.  Once this has been agreed upon, these parameters are stored in the link structure.&lt;br /&gt;
&lt;br /&gt;
The srcpic member is used internally by the filter system, and should not be accessed directly.&lt;br /&gt;
&lt;br /&gt;
The cur_pic member is for the use of the destination filter.  When a frame is currently being sent over the link (ie. starting from the call to start_frame() and ending with the call to end_frame()), this contains the reference to the frame which is owned by the destination filter.&lt;br /&gt;
&lt;br /&gt;
The outpic member is described in the following tutorial on writing a simple filter.&lt;br /&gt;
&lt;br /&gt;
== Writing a simple filter ==&lt;br /&gt;
&lt;br /&gt;
=== Default filter entry points ===&lt;br /&gt;
Because the majority of filters that will probably be written will take exactly one input, and produce exactly one output, and output one frame for every frame received as input, the filter system provides a number default entry points to ease the development of such filters.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Entry point&lt;br /&gt;
!Actions taken by the default implementation&lt;br /&gt;
|-&lt;br /&gt;
|request_frame()&lt;br /&gt;
|Request a frame from the previous filter in the chain.&lt;br /&gt;
|-&lt;br /&gt;
|query_formats()&lt;br /&gt;
|Sets the list of supported formats on all input pads such that all links must use the same format, from a default list of formats containing most YUV and RGB/BGR formats.&lt;br /&gt;
|-&lt;br /&gt;
|start_frame()&lt;br /&gt;
|Request a buffer to store the output frame in.  A reference to this buffer is stored in the outpic member of the link hooked to the filter's output.  The next filter's start_frame() callback is called and given a reference to this buffer.&lt;br /&gt;
|-&lt;br /&gt;
|end_frame()&lt;br /&gt;
|Calls the next filter's end_frame() callback.  Frees the reference to the outpic member of the output link, if it was set by (ie. if the default start_frame() is used).  Frees the cur_pic reference in the input link.&lt;br /&gt;
|-&lt;br /&gt;
|get_video_buffer()&lt;br /&gt;
|Returns a buffer with the AV_PERM_READ permission in addition to all the requested permissions.&lt;br /&gt;
|-&lt;br /&gt;
|config_props() on output pad&lt;br /&gt;
|Sets the image dimensions for the output link to the same as on the filter's input.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The vf_negate filter ===&lt;br /&gt;
Having looked at the data structures and callback functions involved, let's take a look at an actual filter.  The vf_negate filter inverts the colors in a video.  It has one input, and one output, and outputs exactly one frame for every input frame.  In this way, it's fairly typical, and can take advantage of many of the default callback implementations offered by the filter system.&lt;br /&gt;
&lt;br /&gt;
First, let's take a look at the AVFilter structure at the bottom of the libavfilter/vf_negate.c file:&lt;br /&gt;
&lt;br /&gt;
 AVFilter avfilter_vf_negate =&lt;br /&gt;
 {&lt;br /&gt;
     .name      = &amp;quot;negate&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
     .priv_size = sizeof(NegContext),&lt;br /&gt;
 &lt;br /&gt;
     .query_formats = query_formats,&lt;br /&gt;
 &lt;br /&gt;
     .inputs    = (AVFilterPad[]) {{ .name            = &amp;quot;default&amp;quot;,&lt;br /&gt;
                                     .type            = AV_PAD_VIDEO,&lt;br /&gt;
                                     .draw_slice      = draw_slice,&lt;br /&gt;
                                     .config_props    = config_props,&lt;br /&gt;
                                     .min_perms       = AV_PERM_READ, },&lt;br /&gt;
                                   { .name = NULL}},&lt;br /&gt;
     .outputs   = (AVFilterPad[]) {{ .name            = &amp;quot;default&amp;quot;,&lt;br /&gt;
                                     .type            = AV_PAD_VIDEO, },&lt;br /&gt;
                                   { .name = NULL}},&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Here, you can see that the filter is named &amp;quot;negate,&amp;quot; and it needs sizeof(NegContext) bytes of data to store its context.  In the list of inputs and outputs, a pad whose name is set to NULL indicates the end of the list, so this filter has exactly one input and one output.  If you look closely at the pad definitions, you will see that fairly few callback functions are actually specified.  Because of the simplicity of the filter, the defaults can do most of the work for us.&lt;br /&gt;
&lt;br /&gt;
Let us take a look at the callback function it does define.&lt;br /&gt;
&lt;br /&gt;
==== query_formats() ====&lt;br /&gt;
 static int query_formats(AVFilterContext *ctx)&lt;br /&gt;
 {&lt;br /&gt;
     avfilter_set_common_formats(ctx,&lt;br /&gt;
         avfilter_make_format_list(10,&lt;br /&gt;
                 PIX_FMT_YUV444P,  PIX_FMT_YUV422P,  PIX_FMT_YUV420P,&lt;br /&gt;
                 PIX_FMT_YUV411P,  PIX_FMT_YUV410P,&lt;br /&gt;
                 PIX_FMT_YUVJ444P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ420P,&lt;br /&gt;
                 PIX_FMT_YUV440P,  PIX_FMT_YUVJ440P));&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This calls avfilter_make_format_list().  This function takes as its first parameter the number of formats which will follow as the remaining parameters.  The return value is an AVFilterFormats structure containing the given formats.  The avfilter_set_common_formats() function which this structure is passed to sets all connected links to use this same list of formats, which causes all the filters to use the same format after negotiation is complete.  As you can see, this filter supports a number of planar YUV colorspaces, including JPEG YUV colorspaces (the ones with a 'J' in the names).&lt;br /&gt;
&lt;br /&gt;
==== config_props() on an input pad ====&lt;br /&gt;
The config_props() on an input pad is responsible for verifying that the properties of the input pad are supported by the filter, and to make any updates to the filter's context which are necessary for the link's properties.&lt;br /&gt;
&lt;br /&gt;
TODO: quick explanation of YUV colorspaces, chroma subsampling, difference in range of YUV and JPEG YUV.&lt;br /&gt;
&lt;br /&gt;
Let's take a look at the way in which this filter stores its context:&lt;br /&gt;
&lt;br /&gt;
 typedef struct&lt;br /&gt;
 {&lt;br /&gt;
     int offY, offUV;&lt;br /&gt;
     int hsub, vsub;&lt;br /&gt;
 } NegContext;&lt;br /&gt;
&lt;br /&gt;
That's right.  The priv_size member of the AVFilter structure tells the filter system how many bytes to reserve for this structure.  The hsub and vsub members are used for chroma subsampling, and the offY and offUV members are used for handling the difference in range between YUV and JPEG YUV.  Let's see how these are set in the input pad's config_props:&lt;br /&gt;
&lt;br /&gt;
 static int config_props(AVFilterLink *link)&lt;br /&gt;
 {&lt;br /&gt;
     NegContext *neg = link-&amp;gt;dst-&amp;gt;priv;&lt;br /&gt;
 &lt;br /&gt;
     avcodec_get_chroma_sub_sample(link-&amp;gt;format, &amp;amp;neg-&amp;gt;hsub, &amp;amp;neg-&amp;gt;vsub);&lt;br /&gt;
 &lt;br /&gt;
     switch(link-&amp;gt;format) {&lt;br /&gt;
     case PIX_FMT_YUVJ444P:&lt;br /&gt;
     case PIX_FMT_YUVJ422P:&lt;br /&gt;
     case PIX_FMT_YUVJ420P:&lt;br /&gt;
     case PIX_FMT_YUVJ440P:&lt;br /&gt;
         neg-&amp;gt;offY  =&lt;br /&gt;
         neg-&amp;gt;offUV = 0;&lt;br /&gt;
         break;&lt;br /&gt;
     default:&lt;br /&gt;
         neg-&amp;gt;offY  = -4;&lt;br /&gt;
         neg-&amp;gt;offUV = 1;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This simply calls avcodec_get_chroma_sub_sample() to get the chroma subsampling shift factors, and stores those in the context.  It then stores a set of offsets for compensating for different luma/chroma value ranges for JPEG YUV, and a different set of offsets for other YUV colorspaces.  It returns zero to indicate success, because there are no possible input cases which this filter cannot handle.&lt;br /&gt;
&lt;br /&gt;
==== draw_slice() ====&lt;br /&gt;
Finally, the function which actually does the processing for the filter, draw_slice():&lt;br /&gt;
&lt;br /&gt;
 static void draw_slice(AVFilterLink *link, int y, int h)&lt;br /&gt;
 {&lt;br /&gt;
     NegContext *neg = link-&amp;gt;dst-&amp;gt;priv;&lt;br /&gt;
     AVFilterPicRef *in  = link-&amp;gt;cur_pic;&lt;br /&gt;
     AVFilterPicRef *out = link-&amp;gt;dst-&amp;gt;outputs[0]-&amp;gt;outpic;&lt;br /&gt;
     uint8_t *inrow, *outrow;&lt;br /&gt;
     int i, j, plane;&lt;br /&gt;
 &lt;br /&gt;
     /* luma plane */&lt;br /&gt;
     inrow  = in-&amp;gt; data[0] + y * in-&amp;gt; linesize[0];&lt;br /&gt;
     outrow = out-&amp;gt;data[0] + y * out-&amp;gt;linesize[0];&lt;br /&gt;
     for(i = 0; i &amp;lt; h; i ++) {&lt;br /&gt;
         for(j = 0; j &amp;lt; link-&amp;gt;w; j ++)&lt;br /&gt;
             outrow[j] = 255 - inrow[j] + neg-&amp;gt;offY;&lt;br /&gt;
         inrow  += in-&amp;gt; linesize[0];&lt;br /&gt;
         outrow += out-&amp;gt;linesize[0];&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /* chroma planes */&lt;br /&gt;
     for(plane = 1; plane &amp;lt; 3; plane ++) {&lt;br /&gt;
         inrow  = in-&amp;gt; data[plane] + (y &amp;gt;&amp;gt; neg-&amp;gt;vsub) * in-&amp;gt; linesize[plane];&lt;br /&gt;
         outrow = out-&amp;gt;data[plane] + (y &amp;gt;&amp;gt; neg-&amp;gt;vsub) * out-&amp;gt;linesize[plane];&lt;br /&gt;
 &lt;br /&gt;
         for(i = 0; i &amp;lt; h &amp;gt;&amp;gt; neg-&amp;gt;vsub; i ++) {&lt;br /&gt;
             for(j = 0; j &amp;lt; link-&amp;gt;w &amp;gt;&amp;gt; neg-&amp;gt;hsub; j ++)&lt;br /&gt;
                 outrow[j] = 255 - inrow[j] + neg-&amp;gt;offUV;&lt;br /&gt;
             inrow  += in-&amp;gt; linesize[plane];&lt;br /&gt;
             outrow += out-&amp;gt;linesize[plane];&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     avfilter_draw_slice(link-&amp;gt;dst-&amp;gt;outputs[0], y, h);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The y parameter indicates the top of the current slice, and the h parameter the slice's height.  Areas of the image outside this slice should not be assumed to be meaningful (though a method to allow this assumption in order to simplify boundary cases for some filters is coming in the future).&lt;br /&gt;
&lt;br /&gt;
This sets inrow to point to the beginning of the first row of the slice in the input, and outrow similarly for the output.  Then, for each row, it loops through all the pixels, subtracting them from 255, and adding the offset which was determined in config_props() to account for different value ranges.&lt;br /&gt;
&lt;br /&gt;
It then does the same thing for the chroma planes.  Note how the width and height are shifted right to account for the chroma subsampling.&lt;br /&gt;
&lt;br /&gt;
Once the drawing is completed, the slice is sent to the next filter by calling avfilter_draw_slice().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg Tutorials]]&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:FFmpeg_codec_howto&amp;diff=12810</id>
		<title>Talk:FFmpeg codec howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:FFmpeg_codec_howto&amp;diff=12810"/>
		<updated>2010-07-08T13:47:36Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Talk:FFmpeg codec howto moved to Talk:FFmpeg codec HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:FFmpeg codec HOWTO]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Talk:FFmpeg_codec_HOWTO&amp;diff=12809</id>
		<title>Talk:FFmpeg codec HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Talk:FFmpeg_codec_HOWTO&amp;diff=12809"/>
		<updated>2010-07-08T13:47:36Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Talk:FFmpeg codec howto moved to Talk:FFmpeg codec HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have a few questions. I can modify the wiki page when I find these out (maybe through email?)&lt;br /&gt;
&lt;br /&gt;
1.) need to modify the makefile?&lt;br /&gt;
&lt;br /&gt;
entries such as&lt;br /&gt;
 OBJS-$(CONFIG_AASC_DECODER)            += aasc.o&lt;br /&gt;
&lt;br /&gt;
The command line utility -- whatever that did -- didn't do this.&lt;br /&gt;
&lt;br /&gt;
Thanks. --[[User:Gatoatigrado|Gatoatigrado]] 20:57, 17 March 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Yes, your observation is correct, the Makefile needs to be modified as well. Go right ahead and make the change. --[[User:DonDiego|DonDiego]] 07:51, 6 May 2007 (EDT)&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto&amp;diff=12808</id>
		<title>FFmpeg codec howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto&amp;diff=12808"/>
		<updated>2010-07-08T13:47:36Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg codec howto moved to FFmpeg codec HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FFmpeg codec HOWTO]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_codec_HOWTO&amp;diff=12807</id>
		<title>FFmpeg codec HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_codec_HOWTO&amp;diff=12807"/>
		<updated>2010-07-08T13:47:35Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: FFmpeg codec howto moved to FFmpeg codec HOWTO: Fix title spelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as an introduction to the internal codec API in [[FFmpeg]].&lt;br /&gt;
It will also show how the codecs are connected with the demuxers. This is by&lt;br /&gt;
no means a complete guide but enough to understand how to add a codec to FFmpeg.&lt;br /&gt;
[[RealAudio cook|Cook]] is used as an example throughout.&lt;br /&gt;
&lt;br /&gt;
== registering the codec ==&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/avcodec.h ===&lt;br /&gt;
The first thing to look at is the AVCodec struct.&lt;br /&gt;
&lt;br /&gt;
 typedef struct AVCodec {&lt;br /&gt;
     const char *name;&lt;br /&gt;
     enum CodecType type;&lt;br /&gt;
     enum CodecID id;&lt;br /&gt;
     int priv_data_size;&lt;br /&gt;
     int (*init)(AVCodecContext *);&lt;br /&gt;
     int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);&lt;br /&gt;
     int (*close)(AVCodecContext *);&lt;br /&gt;
     int (*decode)(AVCodecContext *, void *outdata, int *outdata_size,&lt;br /&gt;
                   uint8_t *buf, int buf_size);&lt;br /&gt;
     int capabilities;&lt;br /&gt;
     struct AVCodec *next;&lt;br /&gt;
     void (*flush)(AVCodecContext *);&lt;br /&gt;
     const AVRational *supported_framerates; ///array of supported framerates, or NULL if any, array is terminated by {0,0}&lt;br /&gt;
     const enum PixelFormat *pix_fmts;       ///array of supported pixel formats, or NULL if unknown, array is terminanted by -1&lt;br /&gt;
 } AVCodec;&lt;br /&gt;
&lt;br /&gt;
Here we can see that we have some elements to name the codec, what type it is (audio/video), the supported pixel formats and some function&lt;br /&gt;
pointers for init/encode/decode and close. Now lets see how it is used.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/cook.c ===&lt;br /&gt;
If we look in this file at the bottom we can see this code:&lt;br /&gt;
&lt;br /&gt;
 AVCodec cook_decoder =&lt;br /&gt;
 {&lt;br /&gt;
     .name           = &amp;quot;cook&amp;quot;,&lt;br /&gt;
     .type           = CODEC_TYPE_AUDIO,&lt;br /&gt;
     .id             = CODEC_ID_COOK,&lt;br /&gt;
     .priv_data_size = sizeof(COOKContext),&lt;br /&gt;
     .init           = cook_decode_init,&lt;br /&gt;
     .close          = cook_decode_close,&lt;br /&gt;
     .decode         = cook_decode_frame,&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
First we get an AVCodec struct named cook_decoder. And then we set the variables of cook_decoder. Note that we only set the variables that are needed. Currently there is no encoder so we don't set any. If we now look at the id variable we can see that CODEC_ID_COOK isn't defined in libavcodec/cook.c. It is declared in avcodec.h.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/avcodec.h ===&lt;br /&gt;
&lt;br /&gt;
Here we will find the CodecID enumeration.&lt;br /&gt;
&lt;br /&gt;
 enum CodecID {&lt;br /&gt;
 ...&lt;br /&gt;
 CODEC_ID_GSM,&lt;br /&gt;
 CODEC_ID_QDM2,&lt;br /&gt;
 CODEC_ID_COOK,&lt;br /&gt;
 CODEC_ID_TRUESPEECH,&lt;br /&gt;
 CODEC_ID_TTA,&lt;br /&gt;
 ...&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
CODEC_ID_COOK is there in the list. This is the list of all supported codecs in FFmpeg, the list is fixed and used internally to id every codec. Changing the order would break binary compatibility.&lt;br /&gt;
&lt;br /&gt;
This is all enough to declare a codec. Now we must register them for internal use also. This is done at runtime.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/allcodecs.c ===&lt;br /&gt;
In this file we have the avcodec_register_all() function, it has entries like this for all codecs.&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
     REGISTER_DECODER(COOK, cook);&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
This macro expands to a register_avcodec() call which registers a codec for internal use.&lt;br /&gt;
Note that register_avcodec() will only be called when CONFIG_COOK_DECODER is defined.&lt;br /&gt;
This allows to not compile the decoder code for a specific codec.&lt;br /&gt;
But where is it defined? This is extracted by configure with this command line:&lt;br /&gt;
&lt;br /&gt;
 sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c&lt;br /&gt;
&lt;br /&gt;
So adding a REGISTER_DECODER(NEW, new) entry in allcodecs.c and reconfigure is enough to add the needed define. Now we have everything to hookup a codec.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/Makefile ===&lt;br /&gt;
In this file we define the objects on which a codec depends. For example, cook uses fft and mdct code so it depends on the mdct.o and fft.o object files as well as the cook.o object file.&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 OBJS-$(CONFIG_COOK_DECODER)            += cook.o mdct.o fft.o&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== FFmpeg demuxer connection ==&lt;br /&gt;
&lt;br /&gt;
: ''[[FFmpeg demuxer howto]]''&lt;br /&gt;
&lt;br /&gt;
=== libavformat/rm.c ===&lt;br /&gt;
&lt;br /&gt;
If we think of an imaginary rm file that ffmpeg is about to process, the first thing that happens is that it is identified&lt;br /&gt;
as a rm file. It is passed on to the rm demuxer ([http://svn.mplayerhq.hu/ffmpeg/trunk/libavformat/rmdec.c?view=markup rmdec.c]). The rm demuxer looks through the file and finds out that it is a&lt;br /&gt;
cook file.&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 } else if (!strcmp(buf, &amp;quot;cook&amp;quot;)) {&lt;br /&gt;
 st-&amp;gt;codec-&amp;gt;codec_id = CODEC_ID_COOK;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Now ffmpeg knows what codec to init and where to send the payload from the container. So back to cook.c and the initialization process.&lt;br /&gt;
&lt;br /&gt;
== codec code ==&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/cook.c Init ===&lt;br /&gt;
After ffmpeg knows what codec to use, it calls the declared initialization function pointer declared in the codecs AVCodec struct. In&lt;br /&gt;
cook.c it is called cook_decode_init. Here we setup as much as we can before we start decoding. The following things should be handled in the init, vlc table initialization, table generation, memory allocation and extradata parsing.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/cook.c Close ===&lt;br /&gt;
The cook_decode_close function is the codec clean-up call. All memory, vlc tables, etc. should be freed here.&lt;br /&gt;
&lt;br /&gt;
=== libavcodec/cook.c Decode ===&lt;br /&gt;
In cook.c the name of the decode call is cook_decode_frame.&lt;br /&gt;
&lt;br /&gt;
 static int cook_decode_frame(AVCodecContext *avctx,&lt;br /&gt;
             void *data, int *data_size,&lt;br /&gt;
             uint8_t *buf, int buf_size) {&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The function has 5 arguments:&lt;br /&gt;
* avctx is a pointer to an AVCodecContext&lt;br /&gt;
* data is the pointer to the output buffer&lt;br /&gt;
* data_size is a variable that should be set to the output buffer size in bytes (this is usually the number of samples decoded * the number of channels * the byte size of a sample)&lt;br /&gt;
* buf is the pointer to the input buffer&lt;br /&gt;
* buf_size is the byte size of the input buffer&lt;br /&gt;
&lt;br /&gt;
The decode function shall return the number of bytes consumed from the input buffer or -1 in case of an error. If there is no error during decoding, the return value is usually buf_size as buf should only contain one 'frame' of data. Bitstream parsers to split the bitstream into 'frames' used to be part of the codec so a call to the decode function could have consumed less than buf_size bytes from buf. It is now encouraged that bitstream parsers be separate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's how it works without too much detail.&lt;br /&gt;
&lt;br /&gt;
=== The Glue codec template ===&lt;br /&gt;
The imaginary Glue audio codec will serve as a base to exhibit bitstream reading, vlc decoding and other things.&lt;br /&gt;
The code is purely fictional and is sometimes written purely for the sake of example. No attempt is made to prevent invalid&lt;br /&gt;
data manipulation.&lt;br /&gt;
&lt;br /&gt;
The Glue codec follows.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto&amp;amp;oldid=7347 non-colored version]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* The following includes have the bitstream reader, various dsp functions and the various defaults */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;#define ALT_BITSTREAM_READER&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;#include &amp;quot;avcodec.h&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;#include &amp;quot;bitstream.h&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;#include &amp;quot;dsputil.h&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* This includes the tables needed for the Glue codec template */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;#include &amp;quot;gluedata.h&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Here we declare the struct used for the codec private data */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;typedef&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;struct&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    GetBitContext       gb;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    FFTContext          fft_ctx;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    VLC                 vlc_table;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    MDCTContext         mdct_ctx;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;*              sample_buffer;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;} GLUEContext;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* The init function */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;static&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; glue_decode_init(AVCodecContext *avctx)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    GLUEContext *q = avctx-&amp;amp;gt;priv_data;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* This imaginary codec uses one fft, one mdct and one vlc table. */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    ff_mdct_init(&amp;amp;amp;q-&amp;amp;gt;mdct_ctx, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;// 2^10 == size of mdct, 1 == inverse mdct&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    ff_fft_init(&amp;amp;amp;q-&amp;amp;gt;fft_ctx, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);       &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;// 2^9 == size of fft, 0 == inverse fft&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    init_vlc (&amp;amp;amp;q-&amp;amp;gt;vlc_table, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;24&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;           vlctable_huffbits, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;           vlctable_huffcodes, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);  &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;// look in bitstream.h for the meaning of the arguments&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* We also need to allocate a sample buffer */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    q-&amp;amp;gt;sample_buffer = av_mallocz(&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;sizeof&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;)*&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1024&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);  &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;// here we used av_mallocz instead of av_malloc&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;                                                        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;// av_mallocz memsets the whole buffer to 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Check if the allocation was successful */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;(q-&amp;amp;gt;sample_buffer == NULL)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; -&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* return 0 for a successful init, -1 for failure */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* This is the main decode function */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;static&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; glue_decode_frame(AVCodecContext *avctx,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;           &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; *data, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; *data_size,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;           uint8_t *buf, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; buf_size)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    GLUEContext *q = avctx-&amp;amp;gt;priv_data;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    int16_t *outbuffer = data;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* We know what the arguments for this function are from above&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       now we just have to decode this imaginary codec, the made up&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       bitstream format is as follows:&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       12 bits representing the amount of samples&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       1 bit fft or mdct coded coeffs, 0 for fft/1 for mdct&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;         read 13 bits representing the amount of vlc coded fft data coeffs&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;         read 10 bits representing the amount of vlc coded mdct data coeffs&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       (...bits representing the coeffs...)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       5 bits of dummy data that should be ignored&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;       32 bits the hex value 0x12345678, used for integrity check&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;    */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Declare the needed variables */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; samples, coeffs, i, fft;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; mdct_tmp[&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1024&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;];&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Now we init the bitstream reader, we start at the beginning of the inbuffer */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    init_get_bits(&amp;amp;amp;q-&amp;amp;gt;gb, buf, buf_size*&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);  &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//the buf_size is in bytes but we need bits&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Now we take 12 bits to get the amount of samples the current frame has */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    samples = get_bits(&amp;amp;amp;q-&amp;amp;gt;gb, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Now we check if we have fft or mdct coeffs */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    fft = get_bits1(&amp;amp;amp;q-&amp;amp;gt;gb);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; (fft) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//fft coeffs, get how many&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        coeffs = get_bits(&amp;amp;amp;q-&amp;amp;gt;gb, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;13&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    } &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//mdct coeffs, get how many&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        coeffs = get_bits(&amp;amp;amp;q-&amp;amp;gt;gb, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    }&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Now decode the vlc coded coeffs to the sample_buffer */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; (i=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; ; i&amp;amp;lt;coeffs ; i++)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        q-&amp;amp;gt;sample_buffer[i] = get_vlc2(&amp;amp;amp;q-&amp;amp;gt;gb, q-&amp;amp;gt;vlc_table.table, vlc_table.bits, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);  &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//read about the arguments in bitstream.h&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Now we need to transform the coeffs to samples */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; (fft) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//The fft is done inplace&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        ff_fft_permute(&amp;amp;amp;q-&amp;amp;gt;fft_ctx, (FFTComplex *) q-&amp;amp;gt;sample_buffer);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        ff_fft_calc(&amp;amp;amp;q-&amp;amp;gt;fft_ctx, (FFTComplex *) q-&amp;amp;gt;sample_buffer);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    } &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;//And we pretend that the mdct is also inplace&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        ff_imdct_calc(&amp;amp;amp;q-&amp;amp;gt;mdct_ctx, q-&amp;amp;gt;sample_buffer, q-&amp;amp;gt;sample_buffer, mdct_tmp);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    }&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* To make it easy the stream can only be 16 bits mono, so let's convert it to that */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; (i=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; ; i&amp;amp;lt;samples ; i++)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        outbuffer[i] = (int16_t)q-&amp;amp;gt;sample_buffer[i];&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Report how many samples we got */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    *data_size = samples;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Skip the dummy data bits */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    skip_bits(&amp;amp;amp;q-&amp;amp;gt;gb, &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Check if the buffer was consumed ok */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; (get_bits(&amp;amp;amp;q-&amp;amp;gt;gb,&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;32&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;) != &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #008080;&amp;quot;&amp;gt;0x12345678&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        av_log(avctx,AV_LOG_ERROR,&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #dd0000;&amp;quot;&amp;gt;&amp;quot;Stream error, integrity check failed!&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff00ff;&amp;quot;&amp;gt;\n&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #dd0000;&amp;quot;&amp;gt;&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;        &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; -&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    }&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;&lt;br /&gt;
     /* The decision between erroring out or not in case of unexpected data&lt;br /&gt;
        should be made so that the output quality is maximized.&lt;br /&gt;
        This means that if undamaged data is assumed then unused/resereved values&lt;br /&gt;
        should lead to warnings but not failure. (assumption of slightly non compliant&lt;br /&gt;
        file)&lt;br /&gt;
        OTOH if possibly damaged data is assumed and it is assumed that the original&lt;br /&gt;
        did contain specific values in reserved/unused fields then finding unexpected&lt;br /&gt;
        values should trigger error concealment code and the decoder/demuxer should&lt;br /&gt;
        attempt to resync.&lt;br /&gt;
        The decision between these 2 should be made by using &lt;br /&gt;
        AVCodecContext.error_recognition unless its a clear case where only one of&lt;br /&gt;
        the 2 makes sense.&lt;br /&gt;
     */&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Return the amount of bytes consumed if everything was ok */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; *data_size*&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;sizeof&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;(int16_t);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* the uninit function, here we just do the inverse of the init */&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;static&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; glue_decode_close(AVCodecContext *avctx)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    GLUEContext *q = avctx-&amp;amp;gt;priv_data;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Free allocated memory buffer */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    av_free(q-&amp;amp;gt;sample_buffer);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Free the fft transform */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    ff_fft_end(&amp;amp;amp;q-&amp;amp;gt;fft_ctx);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Free the mdct transform */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    ff_mdct_end(&amp;amp;amp;q-&amp;amp;gt;mdct_ctx);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Free the vlc table */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    free_vlc(&amp;amp;amp;q-&amp;amp;gt;vlc_table);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-style: italic;color: #808080;&amp;quot;&amp;gt;/* Return 0 if everything is ok, -1 if not */&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;AVCodec glue_decoder =&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .name           = &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #dd0000;&amp;quot;&amp;gt;&amp;quot;glue&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .type           = CODEC_TYPE_AUDIO,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .id             = CODEC_ID_GLUE,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .priv_data_size = &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;color: #000000;&amp;quot;&amp;gt;sizeof&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;(GLUEContext),&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .init           = glue_decode_init,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .close          = glue_decode_close,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;    .decode         = glue_decode_frame,&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: #000000;&amp;quot;&amp;gt;};&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg demuxer howto]]&lt;br /&gt;
* [[FFmpeg programming conventions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg Tutorials]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=12565</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=12565"/>
		<updated>2010-04-27T15:00:34Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: MLP status&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_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;#CCCC00&amp;quot;&amp;gt;Parts have been committed to FFmpeg, but remain disabled.&amp;lt;/font&amp;gt; Still in  development (albeit slowly) by [[User:Koorogi|Bobby Bingham]] and [[User:Vitor|Vitor]].  2009 SoC projects are underway to complete its integration and add audio support.&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;#00CC00&amp;quot;&amp;gt;merged&amp;lt;/font&amp;gt; but still missing some features, [[User:AConverse|Alex Converse]] is working on finishing it.&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;#CCCC00&amp;quot;&amp;gt;MLP encoder in process&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;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&amp;diff=12564</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=12564"/>
		<updated>2010-04-27T14:57:54Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: details about the AMR-NB project status&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_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;#CCCC00&amp;quot;&amp;gt;Parts have been committed to FFmpeg, but remain disabled.&amp;lt;/font&amp;gt; Still in  development (albeit slowly) by [[User:Koorogi|Bobby Bingham]] and [[User:Vitor|Vitor]].  2009 SoC projects are underway to complete its integration and add audio support.&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;#00CC00&amp;quot;&amp;gt;merged&amp;lt;/font&amp;gt; but still missing some features, [[User:AConverse|Alex Converse]] is working on finishing it.&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;#CCCC00&amp;quot;&amp;gt;in process&amp;lt;/font&amp;gt;, the first stage, getting the MLP decoder into shape and committed, has been accomplished.&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;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2010&amp;diff=12455</id>
		<title>FFmpeg Summer Of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2010&amp;diff=12455"/>
		<updated>2010-03-25T21:40:33Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Remove &amp;quot;better regtest system&amp;quot;, it has already been implemented.&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. Choose a task from the [[Small FFmpeg Tasks|Small Tasks list]], send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work) and when it is ready submit it for review at FFmpeg-soc. The task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
You could also look at [[Interesting Patches]] and choose a patch to update and clean up for inclusion into FFmpeg svn. In any case, you should discuss your qualification task (and the project you plan to send an application for) on the FFmpeg-soc mailing list.&lt;br /&gt;
&lt;br /&gt;
Before posting to FFmpeg-soc, 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;
=== Implement a Windows Screen Video 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;
&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;
=== Improve RTSP/RTP layer ===&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depayloader (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** ...more...&lt;br /&gt;
** support Quicktime http tunnel mode &lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
''Josh Allmann finished the Theora depacketizer as a qualification task&lt;br /&gt;
&lt;br /&gt;
=== MMS protocol implementation ===&lt;br /&gt;
* See patches from Ryan Martell [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-December/020118.html]&lt;br /&gt;
* Implementation suggestions:&lt;br /&gt;
** Should probably be a URLProtocol (similar to RTMP)&lt;br /&gt;
** Initial version should only stream (no seeking), TCP-only, and should reuse the tcp:// stack&lt;br /&gt;
** Subsequent patchsets could add UDP (mmsu://) and HTTP (mssh://) by reusing their respective stacks&lt;br /&gt;
** Subsequent patches could add seeking&lt;br /&gt;
* Maybe the task can be extended to add support for MMS output to FFserver, but ONLY once decoding MMS is done&lt;br /&gt;
* An patch for simple streaming (no seeking) over TCP only could serve as a good qualification task&lt;br /&gt;
&lt;br /&gt;
''Mentor: Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
''Zhentan Feng is working on the MMS-over-TCP qualification task''&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 should replace 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 the following tasks&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed, including the ffmpeg.c and ffplay.c patch&lt;br /&gt;
* Get libavfilter enabled in the main SVN tree&lt;br /&gt;
* Write a watermark filter (this is one of the most commonly requested FFmpeg feature)&lt;br /&gt;
* Write a expand/pad filter (see [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85015] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/2779/]&lt;br /&gt;
* Port all MPlayer filters at libmbcodec/vf_* (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
&lt;br /&gt;
see also this ffmpeg-devel message: [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-March/064817.html]&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined, [[User:Vitor|Vitor Sessak]] if no one else shows up''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has no support at all for handling audio. This task would consist of&lt;br /&gt;
&lt;br /&gt;
* Expanding the libavfilter framework to work with audio&lt;br /&gt;
* Writing a resampling/format conversion filter (starting with just a wrapping code at libavcodec/resample.c)&lt;br /&gt;
** Can it be made clear that ideally we'd want N-channel resampling? [[User:superdump|Rob]]&lt;br /&gt;
*** I'm listing here the tasks in the order I'd want see them done chronologically. I think first of all he should write a filter that is just a wrapper (and nothing more) of the code in resample.c. Making it more general is my point #4. I'm trying to focus in getting the general infrastructure in SVN, even if without a lot of fancy filters. [[User:Vitor|Vitor]] 17:52, 22 March 2009 (EDT)&lt;br /&gt;
* Implement negotiation of sample format and number of channels analogously to the libavfilter colorspace negotiation&lt;br /&gt;
** Does this imply a channel mixing filter? This would be the second most desirable basic audio filter in my opinion. [[User:superdump|Rob]]&lt;br /&gt;
*** Yes, but it to begin with, he could just write a wrapper around libavcodec/resample.c (see my next point) [[User:Vitor|Vitor]] 17:52, 22 March 2009 (EDT)&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;
&lt;br /&gt;
''Mentor: To be determined, [[User:Vitor|Vitor Sessak]] if no one else shows up''&lt;br /&gt;
&lt;br /&gt;
=== [[AMR-WB]] decoder ===&lt;br /&gt;
* Write or improve AMR-WB spec&lt;br /&gt;
* Implement a decoder&lt;br /&gt;
&lt;br /&gt;
''Mentor: Robert Swain''&lt;br /&gt;
&lt;br /&gt;
=== VC-1 Interlaced Support ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: Kostya Shishkov''&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;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantiztion 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;
=== 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;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Floating-point MPEG audio decoder ===&lt;br /&gt;
* ffmpeg currently has a fixed-point mp1/2/3 decoder, but a floating-point one should be faster on many systems.&lt;br /&gt;
* Goal: a decoder with speed comparable to other widely-used codecs.&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 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;
=== 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;
=== GSM Decoder ===&lt;br /&gt;
* Specification + sample implementation: http://kbs.cs.tu-berlin.de/~jutta/toast.html&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/GSM/&lt;br /&gt;
Also see [[GSM]].&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;
=== 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;
=== WTV (de)muxer ===&lt;br /&gt;
* Implement a demuxer (and possibly a muxer) for the [[WTV]] file format.&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;
=== 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;
&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;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2010&amp;diff=12453</id>
		<title>FFmpeg Summer Of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2010&amp;diff=12453"/>
		<updated>2010-03-25T16:49:41Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Send newbies to ffmpeg-soc instead of ffmeg-devel, at least at first.&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. Choose a task from the [[Small FFmpeg Tasks|Small Tasks list]], send an email to the FFmpeg-soc mailing list to inform that you are working on it (to avoid duplicated work) and when it is ready submit it for review at FFmpeg-soc. The task is considered completed when your patch is accepted to our main SVN tree.&lt;br /&gt;
&lt;br /&gt;
You could also look at [[Interesting Patches]] and choose a patch to update and clean up for inclusion into FFmpeg svn. In any case, you should discuss your qualification task (and the project you plan to send an application for) on the FFmpeg-soc mailing list.&lt;br /&gt;
&lt;br /&gt;
Before posting to FFmpeg-soc, 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;
=== Implement a Windows Screen Video 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;
&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;
=== Improve RTSP/RTP layer ===&lt;br /&gt;
* Primary goal: improve the receiver compatibility&lt;br /&gt;
** Add support for more widespread formats ([list will follow check gst live555 and feng])&lt;br /&gt;
*** X-Qt/quicktime depayloader (see [http://www.gnome.org/~rbultje/ffmpeg-patchset/ X-QT patch])&lt;br /&gt;
*** SVQ3 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-July/073511.html] and QDM2 [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-August/073826.html] depacketizers&lt;br /&gt;
*** ...more...&lt;br /&gt;
** support Quicktime http tunnel mode &lt;br /&gt;
** support RTCP/Bye as end-of-file (see [[Small_FFmpeg_Tasks#Make_the_rtp_demuxer_support_rtcp_BYE_packets|small task]])&lt;br /&gt;
* Secondary goal: improve application integration&lt;br /&gt;
** Provide an API to expose the rtcp layer (and the equivalent in RDT dialect)&lt;br /&gt;
** Try to support subtitle streams (either as rtcp-xr or application/text stream)&lt;br /&gt;
** Make VideoLanClient, MPlayer or Xine use FFmpeg RTSP&lt;br /&gt;
&lt;br /&gt;
''Mentor: Luca Barbato, Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
''Josh Allmann finished the Theora depacketizer as a qualification task&lt;br /&gt;
&lt;br /&gt;
=== MMS protocol implementation ===&lt;br /&gt;
* See patches from Ryan Martell [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-December/020118.html]&lt;br /&gt;
* Implementation suggestions:&lt;br /&gt;
** Should probably be a URLProtocol (similar to RTMP)&lt;br /&gt;
** Initial version should only stream (no seeking), TCP-only, and should reuse the tcp:// stack&lt;br /&gt;
** Subsequent patchsets could add UDP (mmsu://) and HTTP (mssh://) by reusing their respective stacks&lt;br /&gt;
** Subsequent patches could add seeking&lt;br /&gt;
* Maybe the task can be extended to add support for MMS output to FFserver, but ONLY once decoding MMS is done&lt;br /&gt;
* An patch for simple streaming (no seeking) over TCP only could serve as a good qualification task&lt;br /&gt;
&lt;br /&gt;
''Mentor: Ronald S. Bultje''&lt;br /&gt;
&lt;br /&gt;
''Zhentan Feng is working on the MMS-over-TCP qualification task''&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 should replace 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 the following tasks&lt;br /&gt;
&lt;br /&gt;
* Get the remaining bits of the SoC tree committed, including the ffmpeg.c and ffplay.c patch&lt;br /&gt;
* Get libavfilter enabled in the main SVN tree&lt;br /&gt;
* Write a watermark filter (this is one of the most commonly requested FFmpeg feature)&lt;br /&gt;
* Write a expand/pad filter (see [http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85015] and [http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/2779/]&lt;br /&gt;
* Port all MPlayer filters at libmbcodec/vf_* (do not forget asking the authors if it is ok to release them under the LGPL)&lt;br /&gt;
&lt;br /&gt;
see also this ffmpeg-devel message: [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-March/064817.html]&lt;br /&gt;
&lt;br /&gt;
''Mentor: To be determined, [[User:Vitor|Vitor Sessak]] if no one else shows up''&lt;br /&gt;
&lt;br /&gt;
=== [[Libavfilter]] audio work ===&lt;br /&gt;
At the moment, FFmpeg filtering library has no support at all for handling audio. This task would consist of&lt;br /&gt;
&lt;br /&gt;
* Expanding the libavfilter framework to work with audio&lt;br /&gt;
* Writing a resampling/format conversion filter (starting with just a wrapping code at libavcodec/resample.c)&lt;br /&gt;
** Can it be made clear that ideally we'd want N-channel resampling? [[User:superdump|Rob]]&lt;br /&gt;
*** I'm listing here the tasks in the order I'd want see them done chronologically. I think first of all he should write a filter that is just a wrapper (and nothing more) of the code in resample.c. Making it more general is my point #4. I'm trying to focus in getting the general infrastructure in SVN, even if without a lot of fancy filters. [[User:Vitor|Vitor]] 17:52, 22 March 2009 (EDT)&lt;br /&gt;
* Implement negotiation of sample format and number of channels analogously to the libavfilter colorspace negotiation&lt;br /&gt;
** Does this imply a channel mixing filter? This would be the second most desirable basic audio filter in my opinion. [[User:superdump|Rob]]&lt;br /&gt;
*** Yes, but it to begin with, he could just write a wrapper around libavcodec/resample.c (see my next point) [[User:Vitor|Vitor]] 17:52, 22 March 2009 (EDT)&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;
&lt;br /&gt;
''Mentor: To be determined, [[User:Vitor|Vitor Sessak]] if no one else shows up''&lt;br /&gt;
&lt;br /&gt;
=== [[AMR-WB]] decoder ===&lt;br /&gt;
* Write or improve AMR-WB spec&lt;br /&gt;
* Implement a decoder&lt;br /&gt;
&lt;br /&gt;
''Mentor: Robert Swain''&lt;br /&gt;
&lt;br /&gt;
=== VC-1 Interlaced Support ===&lt;br /&gt;
* Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.&lt;br /&gt;
* This includes fixing some reference streams&lt;br /&gt;
&lt;br /&gt;
''Mentor: Kostya Shishkov''&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;
=== [[Advanced_Audio_Coding#BSAC_AAC|BSAC AAC]] Decoder ===&lt;br /&gt;
&lt;br /&gt;
* Separate [[AAC]] Huffman decoding and dequantiztion 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;
=== 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;
''Mentor: Benjamin Larsson''&lt;br /&gt;
&lt;br /&gt;
=== Floating-point MPEG audio decoder ===&lt;br /&gt;
* ffmpeg currently has a fixed-point mp1/2/3 decoder, but a floating-point one should be faster on many systems.&lt;br /&gt;
* Goal: a decoder with speed comparable to other widely-used codecs.&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 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 better regressions test system ===&lt;br /&gt;
* Split up the current regtests&lt;br /&gt;
* Add tests for all the missing formats and codecs to FATE&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;
=== GSM Decoder ===&lt;br /&gt;
* Specification + sample implementation: http://kbs.cs.tu-berlin.de/~jutta/toast.html&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/A-codecs/GSM/&lt;br /&gt;
Also see [[GSM]].&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;
=== 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;
=== WTV (de)muxer ===&lt;br /&gt;
* Implement a demuxer (and possibly a muxer) for the [[WTV]] file format.&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;
=== 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;
&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;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=MPlayer_FAQ&amp;diff=12379</id>
		<title>MPlayer FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=MPlayer_FAQ&amp;diff=12379"/>
		<updated>2010-03-16T13:44:19Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: Add URL for updated stereoscopic patch.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will attempt to list all of the frequent questions we get in the #mplayer irc channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
IRC channel rules (by KotH):&lt;br /&gt;
# Ask user questions in #mplayer&lt;br /&gt;
# Don't ask in #mplayerdev.&lt;br /&gt;
# Don't ask in #mplayerdev. we are serious!&lt;br /&gt;
# Don't ask in #mplayerdev. you will be banned.&lt;br /&gt;
# mplayerdev is for patches/development only!&lt;br /&gt;
&lt;br /&gt;
Official MPlayer Frequently asked Questions:&lt;br /&gt;
http://www.mplayerhq.hu/DOCS/HTML/en/faq.html&lt;br /&gt;
&lt;br /&gt;
MPlayer Wikibooks: &lt;br /&gt;
http://en.wikibooks.org/wiki/Mplayer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Feel free to add your questions/answers here, and include important error messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please try to get the latest version of mplayer. a lot of the times, a problem is fixed already. problems sometimes occur when the file you are playing is newer than your mplayer version :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MPlayer information==&lt;br /&gt;
;Where is mplayer's config?&lt;br /&gt;
&lt;br /&gt;
:*usually in ~/.mplayer/config&lt;br /&gt;
:*on windows its in the mplayer directory where mplayer.exe is. for example c:\mplayer\mplayer.exe the config is c:\mplayer\mplayer\config&lt;br /&gt;
::*input.conf, codecs.conf, mencoder.conf and gui.conf can go there as well.&lt;br /&gt;
:*you can find where mplayer looks by using mplayer -v somefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;my docs/man does not have the feature you are talking about!&lt;br /&gt;
&lt;br /&gt;
:*you can find an updated manual here: http://www.mplayerhq.hu/DOCS/man/&lt;br /&gt;
:*updated docs here: http://www.mplayerhq.hu/DOCS/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;the video filters (-vf) can be used with mplayer and mencoder.&lt;br /&gt;
:currently -vf ass/-ass does not work with mencoder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;switches can be put into the config.&lt;br /&gt;
:-fs becomes fs=yes or fs=1 or fs=ja (or a few more different ways to say yes/no)&lt;br /&gt;
:-nodouble becomes nodouble=yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;options have the 'no' prefix, to disable defaults or configs.&lt;br /&gt;
:-fs/-nofs -double/-nodouble -framedrop/-noframedrop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;gmplayer will not let you change gui.conf while it is running. close gmplayer first, then change gui.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;when will you release the NEXT VERSION of mplayer?&lt;br /&gt;
&lt;br /&gt;
:*when the svn is stable and the mplayer team gets some time to build the package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;if you do not like using email to report bugs to mplayer-users@mplayerhq.hu mailing list, you can report bugs to http://bugzilla.mplayerhq.hu&lt;br /&gt;
&lt;br /&gt;
==Questions from #mplayer channel:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Subtitle/OSD===&lt;br /&gt;
&lt;br /&gt;
;How do i increase the subtitle font size?&lt;br /&gt;
;Hi, im using a Mplayer windows gui. Is there a way to make subtitles smaller? mpui its named&lt;br /&gt;
&lt;br /&gt;
:*subfont-text-scale=3 in config or mplayer -subfont-text-scale 3 file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;None of the &amp;quot;freetype&amp;quot; commands in man work when I attempt to use -subfont-autoscale or -subfont-text-scale .&lt;br /&gt;
;It says&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;unknown option on the command line&amp;lt;/code&amp;gt; or&lt;br /&gt;
:&amp;lt;code&amp;gt;Cannot load bitmap font&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; /usr/share/fonts/truetype/truetype/msttcorefonts/Arial.ttf&amp;lt;/code&amp;gt;&lt;br /&gt;
:*install freetype/truetype and recompile mplayer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I recompiled mplayer and now it doesn't complain about -subfont-autoscale or -subfont-text-scale. &lt;br /&gt;
;Unfortunately, they don't do anything&lt;br /&gt;
&lt;br /&gt;
:*symlink any ttf font to ~/.mplayer/subfont.ttf or&lt;br /&gt;
:*specify a font, mplayer -font /dir/somefont.ttf -subfont-text-scale 3 file.avi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Is it normal that a subtitle disappear after 7 seconds, not at the end of the time specified in the subtitle file? or help! some subtitles are missing&lt;br /&gt;
&lt;br /&gt;
:*try -overlapsub or -nooverlapsub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do i expand the &amp;quot;area&amp;quot; so that the subtitles are lower on the screen/ put the subs in the black bars?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -vf expand=:-100::2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do I view romanian subtitles?&lt;br /&gt;
&lt;br /&gt;
:*-subcp cp1250&lt;br /&gt;
;Greek subs:&lt;br /&gt;
:*-subcp iso-8859-7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How to force SSA subtitles size to constant one&lt;br /&gt;
&lt;br /&gt;
:*Try ass-force-style=FontSize=&amp;lt;value&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For vobsub subtitles, is there anyway to change the font?&lt;br /&gt;
&lt;br /&gt;
:*vobsubs don't have fonts, vobsub is a set of images.&lt;br /&gt;
:*you can convert vobsub to txt, using TOOLS/subrip.c script&lt;br /&gt;
:*or download your movie's subtitles from http://www.opensubtitles.org or http://www.kloofy.net for asian movies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to show the time/filename over my video at all times&lt;br /&gt;
&lt;br /&gt;
:*hack up a script to do something like 'create a subtitle file with the filename in it' then call mplayer -sub blah.sub file.avi . the subtitle file contains a timestamp for the whole length of the movie with the filename as a subtitle. e.g. 0 999999 moviename-dvdrip.avi&lt;br /&gt;
:*patch for timestamp osd http://onebithq.com/root/mplayer/cctv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I have embedded avi subtitles, help!&lt;br /&gt;
:*http://xlife.zuavra.net/index.php/54/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; can i disable mkv subtitles from the command line / config file, as opposed to having to press 'v' when i start mplayer?&lt;br /&gt;
&lt;br /&gt;
:*-nosub or -sid 999&lt;br /&gt;
&lt;br /&gt;
===General Questions===&lt;br /&gt;
&lt;br /&gt;
;Do win32 codec dll binaries work with 64bit mplayer&lt;br /&gt;
&lt;br /&gt;
:*No, you have to use a 32bit mplayer binary/build&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Hi, My cpu is too slow, help!&lt;br /&gt;
&lt;br /&gt;
:*for mpeg1/2 or mpeg4 try adding -nodouble or mplayer -lavdopts lowres=1 -vfm ffmpeg will use half-res decoding to speed things up as well.&lt;br /&gt;
:*for H264 try mplayer -lavdopts skiploopfilter=all file.mkv&lt;br /&gt;
:**might cause artefacts like sudden color changes, in this case try e.g. &amp;quot;nonref&amp;quot; instead of &amp;quot;all&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;Your computer is still too slow?&lt;br /&gt;
&lt;br /&gt;
:*Try -lavdopts skipframe=nonref:skiploopfilter=all&lt;br /&gt;
::*This will skip many frames, but saves 50% CPU performance&lt;br /&gt;
:*if using -vo gl use -vo gl:yuv=2 or similar. For high FPS video (&amp;gt; 50 Hz) also try -vo gl:swapinterval=0 since the default limits FPS to well below monitor refresh.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;i have a 3GHz core2duo with a pci Mystique 200 (MGA 1064SG), but playing 720p h264 in vo x11 is too slow.&lt;br /&gt;
&lt;br /&gt;
:*really? if your c2d mobo does not have onboard video, then use -vf scale=640:480 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Hi folks, is there a way to &amp;quot;tell&amp;quot; mplayer (not gmplayer) not to exit when a file has been played and then wait for some new input? via a fifo or whatever&lt;br /&gt;
&lt;br /&gt;
:*[http://www1.mplayerhq.hu/DOCS/tech/slave.txt http://www1.mplayerhq.hu/DOCS/tech/slave.txt]&lt;br /&gt;
:*mplayer -slave -idle -input=/fifo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Anyway to dump a dvd audio stream really fast?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -dumpaudio dvd:// -speed 90 -vc null -vo null -benchmark&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I have a corrupt file that mplayer plays, how do i get a new &amp;quot;clean&amp;quot; version of the audio?&lt;br /&gt;
&lt;br /&gt;
:*mplayer file -ao pcm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I have a widescreen lcd monitor and everything is stretched, help!&lt;br /&gt;
&lt;br /&gt;
:* use -monitoraspect 16:10 or -monitorpixelaspect 1.125&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do I set the video window to double size when running mplayer from command line? Cannot find it in man file...&lt;br /&gt;
&lt;br /&gt;
:*mplayer -xy 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How to set video as wallpaper ?&lt;br /&gt;
&lt;br /&gt;
:* mplayer -rootwin yourmovie (Only works with the x11, xv, xmga, xvidix, quartz, macosx and directx video output drivers.)&lt;br /&gt;
:* Gnome : gconftool-2 -s /apps/nautilus/preferences/show_desktop -t bool false (to disable background)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Why can`t I increase the displayed image width my mplayer?&lt;br /&gt;
;My image is small and black border / frame around tiny video, what gives?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -zoom or zoom=1 in config&lt;br /&gt;
:*but first try setting mplayer -vo xv or vo=xv in config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Fullscreen does not work right in a multi-monitor setup&lt;br /&gt;
&lt;br /&gt;
:*try using mplayer -fstype none&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I get errors playing h264 like these&lt;br /&gt;
:[h264 @ 0xd96950]concealing 1840 DC, 1840 AC, 1840 MV errors or Error while decoding frame! what gives?&lt;br /&gt;
:*check your config and options for 'framedrop' and disable/turn it off. try also -noframedrop&lt;br /&gt;
:*its possible your file is incomplete, try md5sum against the original or rehash it using your torrent program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want a concise comparison of the various video outputs - say, their scores on performance measures - to help choose between em.&lt;br /&gt;
&lt;br /&gt;
:*different vo's are faster/slower on different pc, drivers and video cards, its almost impossible to tell whats fastest for everyone.&lt;br /&gt;
:*use mplayer -nosound -benchmark file -vo (vohere) to test your video output speed&lt;br /&gt;
:*vo's with hardware accelerated output (like xv, vidix, directx, macosx/quartz) will usually be faster than vesa, fb, gl/gl2. but not always.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Whats the best deinterlacing filter?&lt;br /&gt;
&lt;br /&gt;
:*-vf yadif with mcedeint is reccomended by mplayer and ffmpeg devels.&lt;br /&gt;
:*see comparison at http://guru.multimedia.cx/deinterlacing-filters/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to seek in avi while they are downloading but -forceidx is too slow.&lt;br /&gt;
&lt;br /&gt;
:*use mplayer -demuxer lavf to seek in broken/incomplete avi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;This error when trying to play an audio stream&lt;br /&gt;
:Win32 LoadLibrary failed to load: avisynth.dll .&lt;br /&gt;
;Is this DLL only available from a licensed windows install?&lt;br /&gt;
&lt;br /&gt;
:*the file is most likely a playlist&lt;br /&gt;
:*try mplayer -playlist http://blah&lt;br /&gt;
:*also try wget it to make sure its audio and not some html page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to play a DVD that's already on my hard drive with gmplayer.&lt;br /&gt;
&lt;br /&gt;
:*gmplayer dvd:// -dvd-device /dir/vobfiless/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do i position mplayer window?&lt;br /&gt;
;How do i make mplayer start in the same spot every time?&lt;br /&gt;
&lt;br /&gt;
:*see -geometry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do i extract frames from videos?&lt;br /&gt;
;How do i make thumbnails from videos?&lt;br /&gt;
;How do i make a gallery of images from a movie? &lt;br /&gt;
&lt;br /&gt;
:*mplayer -vo jpeg -sstep 30 -frames 10 yourfile&lt;br /&gt;
:*add -vf scale=320:240 if you want smaller image size...&lt;br /&gt;
:*use -vf framestep if sstep does not work on your source.&lt;br /&gt;
:** also check out this howto for using ffmpeg or mencoder to create movies http://electron.mit.edu/~gsteele/ffmpeg/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I use mencoder to create videos from jpg files in a directory.&lt;br /&gt;
;The problem is the files are 1-out.jpg 2-out.jpg ... mencoder gets the order wrong.&lt;br /&gt;
&lt;br /&gt;
:*try wtih mf://%d-out.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I'm having trouble viewing the Guadec 2006 talks, in Ogg Theora format, in mplayer.&lt;br /&gt;
;Anyone try these before?  My error seems to be&lt;br /&gt;
:[theora @ 0x89ccef8]Missing extradata!Could not open codec.VDecoder init failed&lt;br /&gt;
:*use -demuxer lavf if you dont have mplayer compiled with libtheora&lt;br /&gt;
:*maybe also try -correct-pts &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How to play raw ac3 files?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -demuxer rawaudio -rawaudio format=0x2000 file.ac3&lt;br /&gt;
:*format=0x2001 for dts&lt;br /&gt;
:*check codecs.conf for format= entries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;All my files with AC3 audio are too quiet! I cant hear anything! How do i make it louder?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -af volume=10 will add 10 db.&lt;br /&gt;
:*see also -af volnorm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Is there a way to get mplayer/mencoder not being to much verbose?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -quiet&lt;br /&gt;
:*mplayer -really-quiet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;xine or videolan can play my file but mplayer cannot!&lt;br /&gt;
&lt;br /&gt;
:*try mplayer -demuxer lavf file&lt;br /&gt;
:*make sure mplayer and the other program are using the same audio and video output&lt;br /&gt;
:*make sure the other program is not locking the audio/video output (by closing other multimedia programs first (also make sure artsd is not locking /dev/dsp (use lsof | grep -i dsp)))&lt;br /&gt;
:*if xine plays the file ok, but mplayer stutters, try mplayer -autosync 30 file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do i change mplayer speed but keep pitch the same?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -speed 1.5 -af scaletempo&lt;br /&gt;
&lt;br /&gt;
:*mplayer -speed 1.5 -af ladspa=tap_pitch:tap_pitch:0:-33:-90:0 foo.avi&lt;br /&gt;
:*http://tap-plugins.sourceforge.net/ladspa/pitch.html&lt;br /&gt;
:*more info : http://mark.santaniello.net/archives/260&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to play a bin, cue, mdf, mds, nrg, iso or other audio cd image?&lt;br /&gt;
;My operating system does not have a way to mount the image.&lt;br /&gt;
&lt;br /&gt;
:*mplayer file.nrg -demuxer rawaudio -rawaudio format=0x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;does mplayer stop gnome-power-manager so it won't turn my screen off?&lt;br /&gt;
&lt;br /&gt;
:*-heartbeat-cmd &amp;quot;gnome-screensaver-command -p&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How can i get total frame count from mencoder/ffmpeg/mplayer?&lt;br /&gt;
&lt;br /&gt;
:*mplayer -v file.avi -nosound -frames 0 | grep -i frames&lt;br /&gt;
:*(slow) mencoder -nosound -ovc frameno -vc null -o /dev/null input.avi&lt;br /&gt;
:*(slow) ffmpeg -i input.avi -an -vcodec copy -f avi -y NUL&lt;br /&gt;
:*(slow) mplayer -vo null -benchmark -nosound input.avi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;i want to play movies in black and white / grayscale but -lavdopts gray isnt working and -hue -100 -saturation -100 does not work on my video output!&lt;br /&gt;
&lt;br /&gt;
:*mplayer -eq2=1:1:0:0&lt;br /&gt;
:*mplayer -vf format=y8,scale&lt;br /&gt;
&lt;br /&gt;
===Non-mplayer problems===&lt;br /&gt;
;I want to distribute the win32 codecs, is it legal for me to do so?&lt;br /&gt;
&lt;br /&gt;
:*yes&lt;br /&gt;
:*no&lt;br /&gt;
:*depends on your country :)&lt;br /&gt;
:*[http://lists.mplayerhq.hu/pipermail/mplayer-users/2002-March/011789.html See Mike Melanson's answer to this question]&lt;br /&gt;
:*Unless Microsoft explicitly gives you permission within the End-User License Agreement (EULA) or License Terms that accompany the Products and Services and/or in the guidelines below, you may not copy, modify, distribute, display, license, or sell any Products and Services or components contained in them. from [http://www.microsoft.com/about/legal/permissions/default.mspx Microsoft Permissions].&lt;br /&gt;
:*Microsoft grants you the right to reproduce, install and use a reasonable number of copies of the Client OS Components on computers at your premises that are each running a validly licensed copy of the Client OS Software. from the eula.txt inside one of the codec downloads at [http://www.microsoft.com/windows/windowsmedia/forpros/format/codecdownload.aspx microsoft's site].&lt;br /&gt;
:*the mpeg4 license for ms codecs is for individuals only:&lt;br /&gt;
:**USE OF THIS PRODUCT IN ANY MANNER THAT COMPLIES WITH THE MPEG 4 VISUAL STANDARD IS PROHIBITED, EXCEPT FOR USE DIRECTLY RELATED TO (A) DATA OR INFORMATION (i) GENERATED BY AND OBTAINED WITHOUT CHARGE FROM A CONSUMER NOT THEREBY ENGAGED IN A BUSINESS ENTERPRISE, AND (ii) FOR PERSONAL USE ONLY; AND (B) OTHER USES SPECIFICALLY AND SEPARATELY LICENSED BY MPEG LA, L.L.C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Help! When i play a file over the network i get desync and cpu is at 100%, but if i play it locally its fine!&lt;br /&gt;
&lt;br /&gt;
:*are you using a ne2000 clone NIC? (Realtek cards like RTL8019 or 8029 or 8039). they use some cpu when transferring data.&lt;br /&gt;
:*check the ethernet howto for tips and try to decrease your tcp window size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How to include mplayer in a java application or program or library?&lt;br /&gt;
&lt;br /&gt;
:*http://jajuk.cvs.sourceforge.net/jajuk/jajuk/src/org/jajuk/players/MPlayerPlayerImpl.java?view=log&lt;br /&gt;
:*http://lists.mplayerhq.hu/pipermail/mplayer-cygwin/2005-September/002287.html&lt;br /&gt;
:*http://jmplayer.sourceforge.net/&lt;br /&gt;
:*http://beradrian.wordpress.com/2008/01/30/jmplayer/&lt;br /&gt;
&lt;br /&gt;
;Having adjusted the hue/contrast previously, what's an easy way to set them all back to neutral?&lt;br /&gt;
&lt;br /&gt;
:* use xvattr&lt;br /&gt;
:* rpm packages at http://dag.wieers.com/packages/xvattr/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I get a 'process input error' with some wmv files and mplayer plays all blocks.&lt;br /&gt;
&lt;br /&gt;
:*its probably a drm protected file&lt;br /&gt;
:*run strings -n19 yourfile.wmv and if a url comes out, its drm.&lt;br /&gt;
:*if you can play the file on windows you can remove the drm using freeme2 project (other, possibly outdated tools include: fairuse4wm (FU4WM), drmcreep, automateundrm, sidda, drmdbg, drm2wmv).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to play and record tv video at the same time with mencoder.&lt;br /&gt;
:How do I pipe mplayer/mencoder output to stdout?&lt;br /&gt;
&lt;br /&gt;
:*mplayer devs reccomend using mkfifo (named pipe) instead of stdout.&lt;br /&gt;
:*mencoder tv:// -tv driver=v4l:width=324:height=248:outfmt=rgb24:device=/dev/video0:adevice=hw.1,0 -oac mp3lame -lameopts cbr:br=128 -flip -ovc lavc -lavcopts threads=2 -o &amp;gt;( tee filename.avi | mplayer -)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How can I play movie in rar?&lt;br /&gt;
&lt;br /&gt;
:*unrar p -inul movie.part01.rar |mplayer -noidx -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do I extract the mpeg file/s from a vcd or bin/cue files?&lt;br /&gt;
&lt;br /&gt;
:*windows: vcdgear available at http://www.vcdgear.com/ (works on linux too but it's not open source)&lt;br /&gt;
:*linux: use vcdxrip like so vcdxrip --bin-file=blah.bin , or just vcdxrip in a writeable directory if extracting from an actual disc. vcdxrip is part of the vcdimager package&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to get images from videos by frame number or frame range, not by time.&lt;br /&gt;
&lt;br /&gt;
:*transcode -c  0-100  will encode 100 frames starting at frame 0 up to frame 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Build questions/crashes===&lt;br /&gt;
;mplayer doesn't compile anymore since svn rXXXXX&lt;br /&gt;
&lt;br /&gt;
:*Before reporting problems, please retry after a make distclean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Anyone know how to play mp4 files with sound? I can only see video but no audio.&lt;br /&gt;
&lt;br /&gt;
:*check mplayer output for helpful messages.&lt;br /&gt;
:*Requested audio codec family [faad] (afm=faad) not available. Enable it at compilation.&lt;br /&gt;
:*your mplayer was not compiled with faad support. recompile it after installing libfaad package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Hi, playing a 3GP file, I get &amp;quot;Cannot find codec 'amr_nb' in libavcodec&amp;quot;. How can I solve this please &lt;br /&gt;
&lt;br /&gt;
:*You need OpenCORE amrnb and/or amrwb from https://sourceforge.net/projects/opencore-amr/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Help I get this crash X11 error: BadAlloc (insufficient resources for operation)?,?% 0 0 &lt;br /&gt;
;MPlayer interrupted by signal 6 in module vo_check_events or this error&lt;br /&gt;
:&amp;quot;X11 error: BadAccess (attempt to access private resource denied)&amp;quot; using an intel card&lt;br /&gt;
:*add Option &amp;quot;LinearAlloc&amp;quot; &amp;quot;8192&amp;quot; to xorg.conf (under Device section) and restart X&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How to setup [[XvMC]] ?&lt;br /&gt;
&lt;br /&gt;
:* Get xmvc dev lib (libxvmc-dev) and compile MPlayer with --enable-xvmc&lt;br /&gt;
:* If the resulting mplayer executable was linked against the xvmc wrapper library libXvMCW.so, point /usr/X11R6/lib/X11/XvMCConfig (or /etc/X11/XvMCConfig or both) to your /lib/libXvMCNVIDIA.so.* (libI810XvMC.so.1, if you don't have an NVIDIA, but an intel graphics controller), for example : echo &amp;quot;libXvMCNVIDIA.so.1.0.9742&amp;quot;  &amp;gt; /etc/X11/XvMCConfig&lt;br /&gt;
:* mplayer -vc ffmpeg12mc -vo xvmc yourmovie.mpeg2&lt;br /&gt;
:* NB : works only with mpeg2 and mpeg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I get this error when playing files, whats up?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders&lt;br /&gt;
Compiler did not align stack variables.&lt;br /&gt;
Libavcodec has been miscompiled and may be very slow or crash.&lt;br /&gt;
This is not a bug in libavcodec, but in the compiler.&lt;br /&gt;
Do not report crashes to FFmpeg developers.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:*gcc3x mis aligns the stack, use gcc4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;mplayer saya: error opening/initializing selected video_out device and -vo x11 does not help!&lt;br /&gt;
&lt;br /&gt;
:*run mplayer -vo help and see if x11 is listed&lt;br /&gt;
:*use a different mplayer package if its not listed&lt;br /&gt;
:*recompile mplayer after getting hte x11-devel or libxv or x11 header files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;mplayer doesn't compile with live555 library&lt;br /&gt;
&lt;br /&gt;
:*Do NOT use --enable-live&lt;br /&gt;
:*Do NOT report errors on mailing lists if you use --enable-live&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;cabac.h:526: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'&lt;br /&gt;
&lt;br /&gt;
:* On x86, you can't compile mplayer after configuring with --enable-debug, because cabac.h in libavcodec can't be compiled with all optimizations when debugging is turned on.&lt;br /&gt;
:*Three possible solutions:&lt;br /&gt;
:# Don't configure with enable-debug&lt;br /&gt;
:# Use -fomit-frame-pointer: Copy the line beginning with &amp;quot;cc&amp;quot; ending with &amp;quot;-c -o h264.o h264.c&amp;quot; (from make output immediately above the error) and add &amp;quot;-fomit-frame-pointer&amp;quot;: This might affect debugging for h264.o&lt;br /&gt;
:# Don't compile the optimized code: Add &amp;quot;#undef HAVE_EBX_AVAILABLE&amp;quot; to libavcodec/cabac.h&lt;br /&gt;
&lt;br /&gt;
===Mencoder questions===&lt;br /&gt;
;I try to add subtitles to my video with mencoder but nothing happens, here is my mencoder command&lt;br /&gt;
&amp;lt;pre&amp;gt;mencoder file.avi -sub file.srt -oac copy -ovc copy.&amp;lt;/pre&amp;gt;&lt;br /&gt;
:*you cant use -sub or -vf with -ovc copy, try -ovc lavc instead&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Why is encoded video always at a lower bitrate than specified?&lt;br /&gt;
&lt;br /&gt;
:*try using vqmin lavc option&lt;br /&gt;
:*it may mean that the encoder is using all possible bits to encode the video and it's not possible to go any higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Hi, I am looking for a way to automatically convert ogg to mp3 I must give a directory and have everything in converted is it possible to achievve such a thing with mplayer ?&lt;br /&gt;
&lt;br /&gt;
:*use aconvert found in mplayer source TOOLS/aconvert .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I'm converting some video and i get bad desynch!&lt;br /&gt;
&lt;br /&gt;
:*try adding -noskip and/or -mc 0&lt;br /&gt;
:*also look at -vf harddup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I want to transcode/encode a Variable Frame Rate(VFR) video stream, such as a .ASF/.WMV .&lt;br /&gt;
&lt;br /&gt;
:*When converting a VFR to a Constant/Stable Frame Rate, we must provide the desired FPS target, The most appropriate one would be an average FPS of our source, we will use this cmd to find it out:&lt;br /&gt;
:*mencoder file.wmv -ovc copy -nosound -o /dev/null -endpos 100&lt;br /&gt;
&lt;br /&gt;
:*When its done, the sum of frames and seconds duration will be printed, we divide the (Frames / Seconds), and this is our estimated average FPS, we may use it in the following cmd:&lt;br /&gt;
:*mencoder file.wmv -o file.avi -ovc lavc -lavcopts vbitrate=500 -oac mp3lame -lameopts cbr:br=128 -vf harddup -ofps 25&lt;br /&gt;
&lt;br /&gt;
:*While &amp;quot;-ofps 25&amp;quot;, Is where we input the framerate we previously calculated.&lt;br /&gt;
:*(You must keep harddup,ofps. Do not use: fps,noskip. You may change: ovc,oac,lavcopts,lameopts)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I cant encode ssa subtitles with mencoder with styles?&lt;br /&gt;
&lt;br /&gt;
:*-ass does not work with mencoder yet.&lt;br /&gt;
:*First terminal: mkfifo stream.yuv ; mplayer -vf expand=:-60::2 -ao pcm foo.avi -ass -sub subtitles.ssa -vo yuv4mpeg &lt;br /&gt;
:*Second terminal: mencoder -demuxer y4m stream.yuv -o bar.avi -ovc lavc -audiofile audiofile.wav -oac mp3lame -lameopts cbr:br=128&lt;br /&gt;
:**the stream.yuv fifo is the file mplayer default outputs -vo yuv4mpeg to, so dont change this!&lt;br /&gt;
:** this technique also works for encoding vobsubs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;How do i record video from my webcam?&lt;br /&gt;
&lt;br /&gt;
:*mencoder  tv:// -tv driver=v4l2:width=640:height=480:fps=90:device=/dev/v4l/video0  -nosound -ovc lavc -lavcopts vcodec=mjpeg -o cooking.avi&lt;br /&gt;
&lt;br /&gt;
;I am trying to use mencoder to make an mp3 file into a video using a single image as the resulting video&lt;br /&gt;
:The duration of the audio file should be known.&lt;br /&gt;
: e.g. duration='''132.8''' seconds&lt;br /&gt;
 mencoder mf://file.jpg -ovc lavc -oac copy -audiofile song.mp3 -fps 1/'''132.8''' -ofps 30 -o finished.avi&lt;br /&gt;
&lt;br /&gt;
;I am trying to encode files to use with openoffice presentation and nothing works! &lt;br /&gt;
:cinepak works in openoffice with JMF support&lt;br /&gt;
:mencoder input.avi -ovc vfw -xvfwopts codec=iccvid.dll -oac pcm -o out.avi&lt;br /&gt;
&lt;br /&gt;
===Streaming Questions===&lt;br /&gt;
;Help i cant access azntv.com nsv streams!&lt;br /&gt;
&lt;br /&gt;
:* the server only allows winamp user agent&lt;br /&gt;
:* -user-agent &amp;quot;Winamp NSV Player/5.12 (ultravox/2.0)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;rtsp&amp;lt;nowiki&amp;gt;://&amp;lt;/nowiki&amp;gt; rm streams are soooo slow! even with -dumpstream!&lt;br /&gt;
&lt;br /&gt;
:*-bandwidth 1000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I cant play some &amp;lt;nowiki&amp;gt;rtsp://&amp;lt;/nowiki&amp;gt; mov urls. but vlc can!&lt;br /&gt;
&lt;br /&gt;
:*you might be behind a firewall or router where udp does not work. try -rtsp-stream-over-tcp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;how do i play a multicast stream with mplayer?&lt;br /&gt;
&lt;br /&gt;
:*first, set up your igmp profile. on linux this is done using sysctls. you have to use the proper version of igmp which your network design supports (sysctl -a | grep igmp helps)&lt;br /&gt;
:*second, add a routing entry to your routing table. (to expect the traffic from the proper interface (if you've got more, of course))&lt;br /&gt;
:*then &amp;lt;nowiki&amp;gt;mplayer udp://mcastaddress:port&amp;lt;/nowiki&amp;gt; will play the stream&lt;br /&gt;
&lt;br /&gt;
==Encoding to PSP/iPod/Other Devices==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#-oac lavc -lavcopts acodec=aac produces better streams for embedded devices than -oac faac&lt;br /&gt;
#or using ffmpeg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
how do i make videos for my ipod? or other video device?&lt;br /&gt;
*ipod here : http://home.c-otto.de/ipod/  &lt;br /&gt;
**ffmpeg ipod script: http://cekirdek.pardus.org.tr/~ismail/hacks/ipodenc&lt;br /&gt;
*treo 650 : http://www.mythtv.org/wiki/index.php/User:Ianf#Encoding_Videos_for_PSP_and_Treo_650&lt;br /&gt;
*psp : http://gentoo-wiki.com/HOWTO_PSP#Converting_Video_files_to_play_in_PSP&lt;br /&gt;
&lt;br /&gt;
MEncoder PSP AVC profile (put in ~/.mplayer/mencoder.conf ) by predatorfreak :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[psp]&lt;br /&gt;
profile-desc=&amp;quot;PSP AVC encoding profile.&amp;quot;&lt;br /&gt;
vf=hqdn3d,scale=368:208&lt;br /&gt;
af=lavcresample=48000&lt;br /&gt;
ofps=30000/1001&lt;br /&gt;
ovc=lavc=1&lt;br /&gt;
oac=lavc=1&lt;br /&gt;
lavcopts=aglobal=1:vglobal=1:vcodec=h264:acodec=aac:vbitrate=320:abitrate=97:coder=1&lt;br /&gt;
of=lavf=1&lt;br /&gt;
lavfopts=format=psp:i_certify_that_my_video_stream_does_not_use_b_frames=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*for Symbian 9.1/S60 - Nokia E70 (thanks Honeyman)&lt;br /&gt;
http://forum.nokia.com/main/resources/technologies/audiovideo/ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mencoder $SOURCE_FILENAME -ofps $FPS -o temp.vid -of rawvideo -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=400 -vf scale=$SCALE&lt;br /&gt;
mencoder $SOURCE_FILENAME -ofps $FPS -o temp.aac -of rawaudio -ovc frameno -oac lavc -lavcopts acodec=aac:abitrate=96&lt;br /&gt;
mp4box -new -add temp.vid -add temp.cmp -fps $FPS -brand mp42 -isma $OUTPUT_FILENAME&lt;br /&gt;
For $SCALE, &amp;quot;352:264&amp;quot; works for 4:3 movies, and &amp;quot;352:200&amp;quot; works for 16:9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
This section links to external patches that add interesting features to mplayer/mencoder.&lt;br /&gt;
&lt;br /&gt;
===Developer / Unstable repositories or Forks===&lt;br /&gt;
*http://repo.or.cz/w/mplayer.git&lt;br /&gt;
#Uoti's mplayer git repo. contains changes that might be in official mplayer svn in the future.&lt;br /&gt;
&lt;br /&gt;
*http://oss.netfarm.it/mplayer-win32.php&lt;br /&gt;
#Gianluigi's patchset for his win32 builds.&lt;br /&gt;
&lt;br /&gt;
*http://onebithq.com/root/mplayer/&lt;br /&gt;
#Otvos Attila's large patches for mplayer including dvd menus, osd menu, video mixing etc.&lt;br /&gt;
&lt;br /&gt;
*http://git.mika.l3ib.org/?p=mplayer-svn.git&lt;br /&gt;
#Mika's mplayer git repo.&lt;br /&gt;
&lt;br /&gt;
*http://smplayer.svn.sourceforge.net/viewvc/smplayer/mplayer-builds/patches/&lt;br /&gt;
#SMPlayer patches&lt;br /&gt;
&lt;br /&gt;
=== Hardware Acceleration Patches ===&lt;br /&gt;
&lt;br /&gt;
*http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/&lt;br /&gt;
#VA-API&lt;br /&gt;
&lt;br /&gt;
*ftp://download.nvidia.com/XFree86/vdpau&lt;br /&gt;
#Nvidia VDPAU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Distribution Patches===&lt;br /&gt;
&lt;br /&gt;
*Pardus:&lt;br /&gt;
#[http://svn.pardus.org.tr/pardus/devel/applications/multimedia/mplayer/files/ svn branch]&lt;br /&gt;
#[http://svn.pardus.org.tr/pardus/2007/applications/multimedia/mplayer/files/ stable branch]&lt;br /&gt;
#[http://svn.pardus.org.tr/pardus/2008/applications/multimedia/mplayer/files/ upcoming 2008 branch ]&lt;br /&gt;
&lt;br /&gt;
*Mandriva:&lt;br /&gt;
#http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/mplayer/current/SOURCES/&lt;br /&gt;
&lt;br /&gt;
*ALT Linux&lt;br /&gt;
#http://sisyphus.ru/srpm/Sisyphus/mplayer/patches&lt;br /&gt;
&lt;br /&gt;
*FreeBSD&lt;br /&gt;
#http://svn.pld-freebsd.org/svn/packages/trunk/mplayer/SOURCES/&lt;br /&gt;
#http://www.freebsd.org/cgi/cvsweb.cgi/ports/multimedia/mplayer/files/&lt;br /&gt;
&lt;br /&gt;
*NetBSD&lt;br /&gt;
#ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/multimedia/mplayer-share/patches/&lt;br /&gt;
&lt;br /&gt;
*Gentoo&lt;br /&gt;
#http://sources.gentoo.org/viewcvs.py/gentoo-x86/media-video/mplayer/files/&lt;br /&gt;
&lt;br /&gt;
*Busybox&lt;br /&gt;
#http://busybox.net/cgi-bin/viewcvs.cgi/trunk/buildroot/package/mplayer/&lt;br /&gt;
&lt;br /&gt;
*Zaurus&lt;br /&gt;
#http://www.courville.org/mediawiki/index.php/EZX#further_enhancements_brought_to_the_code&lt;br /&gt;
#https://svn.jerryweb.org/wsvn/public/mkezx/trunk/packages/mplayer/patches/?rev=0&amp;amp;sc=0&lt;br /&gt;
&lt;br /&gt;
===MPlayer===&lt;br /&gt;
*[http://keyj.s2000.ws/?p=15 -af lame patch]&lt;br /&gt;
-af lame for mplayer to output mp3 using lame.&lt;br /&gt;
&lt;br /&gt;
*[http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2005-June/035153.html original patch for stereoscopic support], [http://www.mygnu.de/index.php/2010/01/stereoscopic-mplayer-working-again/ updated patch for stereoscopic support]&lt;br /&gt;
stereoscopic support to -vo gl&lt;br /&gt;
&lt;br /&gt;
*[http://tuukkat.cabspace.com/mplayer/ -vf ocr,threshold patch]&lt;br /&gt;
ocr support to mplayer for reading hard subtitles into soft subs.&lt;br /&gt;
&lt;br /&gt;
*[http://urandom.ca/mebox/downloads/patches/ mebox patches]&lt;br /&gt;
vf overlay for overlay text/video on mplayer video.&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2005-February/033570.html&lt;br /&gt;
ability to change subtitle/osd size while playing.&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-August/045105.html&lt;br /&gt;
support to play youtube urls&lt;br /&gt;
&lt;br /&gt;
*http://pigeond.net/mplayer/mplayer-matrixview.html&lt;br /&gt;
vo matrixview&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-users/2007-December/070500.html&lt;br /&gt;
startup volume&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2007-March/050206.html&lt;br /&gt;
zattoo ztv patch&lt;br /&gt;
&lt;br /&gt;
===MEncoder===&lt;br /&gt;
*[http://www.on2.com/gpl/mplayer/ on2 various patches] mencoder audio only patch, ogg muxing , misc patches&lt;br /&gt;
*[http://smplayer.svn.sourceforge.net/viewvc/smplayer/mplayer-builds/patches/ass_support_for_mencoder_with_embeddedfonts.patch?view=log ass support for mencoder]&lt;br /&gt;
&lt;br /&gt;
===Both===&lt;br /&gt;
*[http://doors.univer.omsk.su/~voroshil/ mplayer tv:// support for windows]&lt;br /&gt;
tv:// support for win32&lt;br /&gt;
&lt;br /&gt;
* http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation&lt;br /&gt;
patch to support binary codec coreavc (fast h264 decoder with multiple cpu support)&lt;br /&gt;
&lt;br /&gt;
*http://article.gmane.org/gmane.comp.video.mplayer.devel/26732&lt;br /&gt;
vf coring filter&lt;br /&gt;
&lt;br /&gt;
*http://article.gmane.org/gmane.comp.video.mplayer.devel/143&lt;br /&gt;
virtualdub plugin support&lt;br /&gt;
&lt;br /&gt;
*http://article.gmane.org/gmane.comp.video.mplayer.devel/24742&lt;br /&gt;
vf deblendlogo&lt;br /&gt;
&lt;br /&gt;
*http://kurtnoise.free.fr/misc/mplayer_eac3_mlp_r26256.patch&lt;br /&gt;
** see also: http://forum.doom9.org/showthread.php?t=129050&lt;br /&gt;
eac3 and mlp patch&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-August/058182.html&lt;br /&gt;
Sony PSP (PlayStation Portable) PMP filedemuxer&lt;br /&gt;
&lt;br /&gt;
*http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-September/058418.html&lt;br /&gt;
Color management filter that transform between colorspaces using ICC profiles.&lt;br /&gt;
&lt;br /&gt;
*http://www.intinor.se/mms/Downloads&lt;br /&gt;
mms seek patch (other mms improvements too)&lt;br /&gt;
&lt;br /&gt;
==Simple Bash / Perl / Python Scripts==&lt;br /&gt;
* [[MPlayer_youtube_script]]&lt;br /&gt;
&lt;br /&gt;
==Complaints/Known Bugs==&lt;br /&gt;
some complaints/known bugs about mplayer and mencoder&lt;br /&gt;
&lt;br /&gt;
*-oac mp3lame -lameopts abr/vbr causes desync in videos&lt;br /&gt;
&lt;br /&gt;
*-dumpstream and -endpos or -frames dont work together&lt;br /&gt;
&lt;br /&gt;
*cant save/encode video and play at the same time with one mplayer/mencoder instance&lt;br /&gt;
&lt;br /&gt;
*playlists require -playlist switch (mplayer should detect playlists!)&lt;br /&gt;
&lt;br /&gt;
*cant edit gui.conf while gmplayer is running&lt;br /&gt;
&lt;br /&gt;
*opening multiple files causes multiple gmplayer/mplayer instancess&lt;br /&gt;
&lt;br /&gt;
*-cache affects -ss accuracy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Capture cards and Webcam command lines==&lt;br /&gt;
MPlayer can be hard to use for devices, its not very userfriendly in automatically guessing working options. below is an incomplete list of working lines for specified hardware. if you use mplayer with a webcam and it requires some odd options, please list it here.&lt;br /&gt;
&lt;br /&gt;
*3com Homeconnect USB webcam: mplayer tv:// -fps 30 -tv driver=dshow:outfmt=bgr32 -vf flip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MPlayer]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=FFmpeg_Release_Plan&amp;diff=12330</id>
		<title>FFmpeg Release Plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Release_Plan&amp;diff=12330"/>
		<updated>2010-03-03T09:51:35Z</updated>

		<summary type="html">&lt;p&gt;DonDiego: release process details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ideas and suggestions concerning FFmpeg software releases.&lt;br /&gt;
&lt;br /&gt;
==Things that need doing==&lt;br /&gt;
* Fix SVQ3 regression test?&lt;br /&gt;
* Approximately 95% test coverage in FATE.&lt;br /&gt;
* AAC Conformance sweep&lt;br /&gt;
* Make sure API/ABI changelog is up-to-date&lt;br /&gt;
&lt;br /&gt;
=== Release 0.6 &amp;quot;Works with HTML5&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Pending features that would be nice to have in 0.6&lt;br /&gt;
&lt;br /&gt;
* HE AAC v1&lt;br /&gt;
* LATM demuxing support&lt;br /&gt;
* Theora speedup work&lt;br /&gt;
&lt;br /&gt;
==Release Criteria==&lt;br /&gt;
* make test passes.&lt;br /&gt;
* FATE test coverage passes for all platforms of interest.&lt;br /&gt;
* All 'important' bugs reported in roundup fixed/closed.&lt;br /&gt;
:Except 46, 127 and possibly 192 and 452 --[[User:Ce|Ce]] 05:36, 3 February 2010 (EST)&lt;br /&gt;
* No half-implemented functionality that may break existing user apps.&lt;br /&gt;
* Endurance/memleak testing on film-length files.&lt;br /&gt;
&lt;br /&gt;
==Rationale for releases==&lt;br /&gt;
* Provide endorsed snapshots for external software developers to develop against&lt;br /&gt;
* Avoid situation where external software developers using SVN head when head has transient limitations.&lt;br /&gt;
* Discourage external software developers using ancient snapshots that we don't support.&lt;br /&gt;
&lt;br /&gt;
==Release Process==&lt;br /&gt;
* Create a branch in Subversion.&lt;br /&gt;
* Add VERSION file that hardcodes 0.6.&lt;br /&gt;
* Create release tarballs (repeat the process for gzip compression)&lt;br /&gt;
** svn export svn://svn.ffmpeg.org/ffmpeg/tags/0.6/ ffmpeg-0.6&lt;br /&gt;
** tar -cjf ffmpeg-0.6.tar.bz2 ffmpeg-0.6&lt;br /&gt;
** md5sum ffmpeg-0.6.tar.bz2 &amp;gt; ffmpeg-0.6.tar.bz2.md5&lt;br /&gt;
** sha1sum ffmpeg-0.6.tar.bz2 &amp;gt; ffmpeg-0.6.tar.bz2.sha&lt;br /&gt;
** signatures from the release managers (concatenate all signatures into one file)&lt;br /&gt;
*** gpg --armor --detach-sign ffmpeg-0.6.tar.bz2&lt;br /&gt;
* Upload to ffmpeg.org&lt;br /&gt;
* Update website&lt;br /&gt;
* Who needs to be notified?&lt;br /&gt;
** Major dependent projects, major distribution package maintainers --[[User:Rathann|Rathann]] 09:43, 29 January 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>DonDiego</name></author>
	</entry>
</feed>