Version 5 (modified by michael, 5 years ago) (diff)

add ffv1 p frame idea


FFmpeg is the universal multimedia toolkit: a complete, cross-platform solution to record, convert, filter and stream audio and video. It is used by a number of media players (including VLC, MPlayer, and Totem through GStreamer), video distribution websites (including YouTube and Vimeo), Internet browsers (including Google Chrome/Chromium), and lots of other software projects in the multi-media field and beyond.

Outreachy is a program that helps underrepresented people to get involved in free and open source software. Through the guidance of mentors, interns gain valuable experience interacting with and coding for open source projects like FFmpeg. Additionally, the project and its users benefit from code created from applicants who often continue contributing as developers.

This is our landing page for the current round of the program, which will formally start in May, 2015. Please also see our Google Summer of Code Page for ideas, they are all also eligible and not duplicated here

Information for Applicants

Getting Started

  1. Get to know FFmpeg. If you are an applicant interested in contributing to FFmpeg, it is recommended to start by subscribing to the ffmpeg-devel mailing-list, visiting our FreeNode IRC channels (#ffmpeg-devel and #ffmpeg although you will find most developers on the first one), and exploring both the codebase and the development workflow. Feel free to contact us if you have any questions.
  1. Find a project. Listed on this page are mentored and un-mentored projects. Mentored projects are well-defined and mentor(s) have already volunteered. Un-mentored projects are additional ideas you may want to consider, but you will have to contact us to find a mentor. You can also propose your own project, if you can think of one that better fits your interest and skill level. If a project description is unclear or you have any questions, please get in touch with its mentor and/or send an email to the program admins at [].
  1. Contact us. If you decide on a project, get in touch with the community and let us know. If you want to work on a qualification task, let the respective mentor know so we can avoid duplicated efforts.
  1. Apply. Interns should apply by October 22 at the very latest. The "work" period begins December 9 and ends the same day in March. Take a look at for additional information.

Note: A friendly reminder that while the application to Outreachy is important for you and Outreachy, FFmpeg mentors will not base their decision solely on the Outreachy application. We will judge the applicant based on their abilities in coding, learning the tools, communication skills etc. So please do not worry about your application being perfect for us. Although it is very important to follow Outreachy's application rules so they can pay you.

Qualification Tasks

In order to get accepted you normally have to complete a small qualification task. FFmpeg development can be quite challenging and the qualification task helps us figure out whether you are motivated enough and have the potential to deliver successfully.

The qualification tasks are usually shown in the project description. Contact the respective mentor(s) for assistance on getting a related qualification task or if you want to propose your own. You can also browse the FFmpeg Bug Tracker for qualification task ideas. In general qualification tasks should include submitting a patch to the ffmpeg-devel mailing list which passes review and is accepted into the FFmpeg codebase. It will be common for such patches to need multiple iterations of submissions and reviews, so dont wait too long with the first submission!

Contacting FFmpeg

If you have questions or comments feel free to contact us via our mailing list, IRC channel, or e-mail one of the FFmpeg Outreachy admins:

  • Mailing-list: ffmpeg-devel
  • IRC: #ffmpeg-devel on Freenode
  • FFmpeg Outreachy Admin: Michael Niedermayer (michaelni in #ffmpeg-devel on Freenode IRC,
  • FFmpeg Outreachy Backup Admins: Stefano Sabatini (saste in #ffmpeg-devel on Freenode IRC, stefasab AT gmail DOT com. ), Reynaldo Verdejo (reynaldo in #ffmpeg-devel on Freenode IRC, R Verdejo on g mail)

You may also contact a mentor directly if you have questions specifically related to one of the projects listed on this page.

Mentored Projects

This section lists well-defined projects that have one or more available mentors. If you are new to FFmpeg, and have relatively little experience with multimedia, you should favor a mentored project rather than propose your own. Contact the respective mentor(s) to get more information about the project and the requested qualification task.

Also, please see out Google Summer of Code Page for more ideas, they are all eligible as well and not duplicated here

Setting up FATE automated testing system on various platforms

Description: Set up virtalboxes with various OSs inside them as well as various qemu based non x86 clients, which run our FATE testset and submit results to


Expected results:

Prerequisites: POSIX and command line knowledge sufficient to install and setup various odd and obscure operating systems, building and using cross compilers

Qualification Task: create one or 2 working images with fate clients inside them for platforms not yet listed on

Mentor: Ramiro Polla (ramiro in #ffmpeg-devel on Freenode IRC, ramiro DOT polla AT gmail DOT com)

Backup mentor: Michael Niedermayer (michaelni in #ffmpeg-devel on Freenode IRC,

Creating fate tests / finding sample files to improve fate test coverage

Description: Many of our decoders and demuxers are tested but some are not and many are tested incompletely. The goal of the task would be to find small multimedia files which improve this test coverage and add them to the fate tests. Also encoding / muxing / filtering tests can be added to improve coverage


Expected results: Significantly improved coverage on, and new tests integrated in "make fate"

Prerequisites: Good knowledge of the Makefile syntax as its used in our fate tests.

Qualification Task: add 3 or 4 fate tests which improve the code coverage of "make fate"

Mentor: Carl Eugen Hoyos (ce at hoyos dot ws)

Backup mentor: Michael Niedermayer (michaelni in #ffmpeg-devel on Freenode IRC,

FFv1 P frame support

Description: FFv1 is one of the most efficient intra-only lossless video codecs. Your work will be to add support for P frames with motion compensation and motion estimation support (the existing motion estimation code in libavcodec can be reused here). Then fine-tune it until the best compression rate is achieved. This will make FFv1 competitive with existing I+P frame lossless codecs like lossless H.264.

Expected results: State of the art P frame support in the FFv1 encoder and decoder implementation.

Prerequisites: C coding skills, basic familiarity with git, solid understanding of video coding especially with motion compensation.

Qualification Task: Implement support for simple P frames without motion compensation in FFv1. That is so that each frame stores the difference to the previous frame.

Alternative Qualification Task: Improve the compression of the existing FFV1 Intra frames, you can change any part of the algorithm but it must be practical, the more improvement you can achieve, the better

Mentor: Michael Niedermayer (michaelni in #ffmpeg-devel on Freenode IRC,

Backup mentor: Derek Buitenhuis (Daemon404 in #ffmpeg-devel on Freenode IRC, derek.buitenhuis ut gmail)