CINXE.COM
FFmpeg Summer Of Code 2009 - MultimediaWiki
<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"/> <title>FFmpeg Summer Of Code 2009 - MultimediaWiki</title> <script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"3d2cb6e9d50cdb839d006874","wgCSPNonce":false,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"FFmpeg_Summer_Of_Code_2009","wgTitle":"FFmpeg Summer Of Code 2009","wgCurRevisionId":12370,"wgRevisionId":12370,"wgArticleId":3292,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["FFmpeg"],"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"FFmpeg_Summer_Of_Code_2009","wgRelevantArticleId":3292,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgVector2022PreviewPages":[]}; RLSTATE={"site.styles":"ready","user.styles":"ready","user":"ready","user.options":"loading","skins.vector.styles.legacy":"ready"};RLPAGEMODULES=["site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.implement("user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});});});</script> <link rel="stylesheet" href="/load.php?lang=en&modules=skins.vector.styles.legacy&only=styles&skin=vector"/> <script async="" src="/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="generator" content="MediaWiki 1.39.5"/> <meta name="format-detection" content="telephone=no"/> <meta name="viewport" content="width=1000"/> <link rel="icon" href="/favicon.ico"/> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch_desc.php" title="MultimediaWiki (en)"/> <link rel="EditURI" type="application/rsd+xml" href="https://wiki.multimedia.cx/api.php?action=rsd"/> <link rel="alternate" type="application/atom+xml" title="MultimediaWiki Atom feed" href="/index.php?title=Special:RecentChanges&feed=atom"/> </head> <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-FFmpeg_Summer_Of_Code_2009 rootpage-FFmpeg_Summer_Of_Code_2009 skin-vector action-view skin-vector-legacy vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-language-alert-in-sidebar-disabled vector-feature-sticky-header-disabled vector-feature-sticky-header-edit-disabled vector-feature-table-of-contents-disabled vector-feature-visual-enhancement-next-disabled"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">FFmpeg Summer Of Code 2009</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">From MultimediaWiki</div> <div id="contentSub"></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Jump to navigation</a> <a class="mw-jump-link" href="#searchInput">Jump to search</a> <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-parser-output"><div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Current_Status"><span class="tocnumber">1</span> <span class="toctext">Current Status</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Qualification_tasks"><span class="tocnumber">2</span> <span class="toctext">Qualification tasks</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#1st_Tier_Project_Proposals"><span class="tocnumber">3</span> <span class="toctext">1st Tier Project Proposals</span></a> <ul> <li class="toclevel-2 tocsection-4"><a href="#S/PDIF_muxer"><span class="tocnumber">3.1</span> <span class="toctext">S/PDIF muxer</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#Flash_Screen_video_2_codec"><span class="tocnumber">3.2</span> <span class="toctext">Flash Screen video 2 codec</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#MPEG-4_ALS_decoder"><span class="tocnumber">3.3</span> <span class="toctext">MPEG-4 ALS decoder</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#RTMP_Support_(Flash_streaming)"><span class="tocnumber">3.4</span> <span class="toctext">RTMP Support (Flash streaming)</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#Playlist/Concatenation_Support"><span class="tocnumber">3.5</span> <span class="toctext">Playlist/Concatenation Support</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#NEW_Seeking_API"><span class="tocnumber">3.6</span> <span class="toctext">NEW Seeking API</span></a></li> <li class="toclevel-2 tocsection-10"><a href="#Improve_RTSP/RTP_layer"><span class="tocnumber">3.7</span> <span class="toctext">Improve RTSP/RTP layer</span></a></li> <li class="toclevel-2 tocsection-11"><a href="#AACS_implementation"><span class="tocnumber">3.8</span> <span class="toctext">AACS implementation</span></a></li> <li class="toclevel-2 tocsection-12"><a href="#Libavfilter_video_work"><span class="tocnumber">3.9</span> <span class="toctext">Libavfilter video work</span></a></li> <li class="toclevel-2 tocsection-13"><a href="#Libavfilter_audio_work"><span class="tocnumber">3.10</span> <span class="toctext">Libavfilter audio work</span></a></li> <li class="toclevel-2 tocsection-14"><a href="#AMR-NB_decoder"><span class="tocnumber">3.11</span> <span class="toctext">AMR-NB decoder</span></a></li> <li class="toclevel-2 tocsection-15"><a href="#QCELP_decoder_missing_features"><span class="tocnumber">3.12</span> <span class="toctext">QCELP decoder missing features</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-16"><a href="#2nd_Tier_Project_Proposals"><span class="tocnumber">4</span> <span class="toctext">2nd Tier Project Proposals</span></a> <ul> <li class="toclevel-2 tocsection-17"><a href="#Finish_SoC_projects_from_previous_years"><span class="tocnumber">4.1</span> <span class="toctext">Finish SoC projects from previous years</span></a></li> <li class="toclevel-2 tocsection-18"><a href="#Implement_a_better_regressions_test_system"><span class="tocnumber">4.2</span> <span class="toctext">Implement a better regressions test system</span></a></li> <li class="toclevel-2 tocsection-19"><a href="#Finish_ACELP.NET_/_G.729_decoder"><span class="tocnumber">4.3</span> <span class="toctext">Finish ACELP.NET / G.729 decoder</span></a></li> <li class="toclevel-2 tocsection-20"><a href="#libvo"><span class="tocnumber">4.4</span> <span class="toctext">libvo</span></a></li> <li class="toclevel-2 tocsection-21"><a href="#GStreamer_input"><span class="tocnumber">4.5</span> <span class="toctext">GStreamer input</span></a></li> <li class="toclevel-2 tocsection-22"><a href="#AMR-WB_Decoder"><span class="tocnumber">4.6</span> <span class="toctext">AMR-WB Decoder</span></a></li> <li class="toclevel-2 tocsection-23"><a href="#GSM_Decoder"><span class="tocnumber">4.7</span> <span class="toctext">GSM Decoder</span></a></li> <li class="toclevel-2 tocsection-24"><a href="#Sipr_Decoder"><span class="tocnumber">4.8</span> <span class="toctext">Sipr Decoder</span></a></li> <li class="toclevel-2 tocsection-25"><a href="#Speex_Decoder"><span class="tocnumber">4.9</span> <span class="toctext">Speex Decoder</span></a></li> <li class="toclevel-2 tocsection-26"><a href="#AMR-NB_Encoder"><span class="tocnumber">4.10</span> <span class="toctext">AMR-NB Encoder</span></a></li> <li class="toclevel-2 tocsection-27"><a href="#VP6_Encoder"><span class="tocnumber">4.11</span> <span class="toctext">VP6 Encoder</span></a></li> <li class="toclevel-2 tocsection-28"><a href="#WMV3_Encoder"><span class="tocnumber">4.12</span> <span class="toctext">WMV3 Encoder</span></a></li> <li class="toclevel-2 tocsection-29"><a href="#Improve_subtitle_support"><span class="tocnumber">4.13</span> <span class="toctext">Improve subtitle support</span></a></li> <li class="toclevel-2 tocsection-30"><a href="#VC-1_Interlaced_Support"><span class="tocnumber">4.14</span> <span class="toctext">VC-1 Interlaced Support</span></a></li> <li class="toclevel-2 tocsection-31"><a href="#Improve_Ratecontrol"><span class="tocnumber">4.15</span> <span class="toctext">Improve Ratecontrol</span></a></li> <li class="toclevel-2 tocsection-32"><a href="#WMA_lossless"><span class="tocnumber">4.16</span> <span class="toctext">WMA lossless</span></a></li> <li class="toclevel-2 tocsection-33"><a href="#WTV_(de)muxer"><span class="tocnumber">4.17</span> <span class="toctext">WTV (de)muxer</span></a></li> </ul> </li> </ul> </div> <h2><span class="mw-headline" id="Current_Status">Current Status</span></h2> <p>This list is still a work-in-progress, please see also the <a href="/index.php/Talk:FFmpeg_Summer_Of_Code_2009" title="Talk:FFmpeg Summer Of Code 2009">Talk Page</a>. </p> <h2><span class="mw-headline" id="Qualification_tasks">Qualification tasks</span></h2> <p>For us to consider your application for SoC we require a completed qualification task. Choose a task from the <a href="/index.php/Small_FFmpeg_Tasks" title="Small FFmpeg Tasks">Small Tasks list</a>, send an email to FFmpeg-devel 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-devel. The task is considered completed when your patch is accepted to our main SVN tree. </p><p>Before posting to ffmpeg-devel, make sure you read and understand <a rel="nofollow" class="external text" href="http://www.ffmpeg.org/contact.html">our netiquette guidelines</a>, especially avoid top-posting. Before you send us your patch, read our <a rel="nofollow" class="external text" href="http://www.ffmpeg.org/general.html#SEC23">development guidelines</a> 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. </p><p>A completed FFmpeg qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264). </p> <h2><span class="mw-headline" id="1st_Tier_Project_Proposals">1st Tier Project Proposals</span></h2> <p>1st tier project proposals are project ideas that are reasonably well defined <b>AND</b> have a mentor volunteered. </p> <h3><span id="S.2FPDIF_muxer"></span><span class="mw-headline" id="S/PDIF_muxer">S/PDIF muxer</span></h3> <ul><li>Info: <a href="/index.php/SPDIF" title="SPDIF">Spdif</a></li> <li>Implement a muxer capable to mux: <ul><li>DTS, all 3 packing modes and the usable HD extensions</li> <li>AC3, eAC3 also</li> <li>PCM</li> <li>WMApro</li> <li>AAC</li> <li>Mpeg-audio, layer 2 and 3</li></ul></li></ul> <p>Implement support in ffplay so that it is possible to output the audio stream over S/PDIF when playing a media file. </p><p><i>Mentor: Benjamin Larsson, Andreas 脰man</i> </p> <h3><span class="mw-headline" id="Flash_Screen_video_2_codec">Flash Screen video 2 codec</span></h3> <ul><li>Implement a flashsv2 decoder and encoder. And extend the current flashsv encoder to support optimal 2-pass encoding.</li> <li>Specs: <a rel="nofollow" class="external free" href="http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v10.pdf">http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v10.pdf</a></li></ul> <p><i>Mentor: Benjamin Larsson</i> </p> <h3><span class="mw-headline" id="MPEG-4_ALS_decoder"><a href="/index.php/MPEG-4_ALS" class="mw-redirect" title="MPEG-4 ALS">MPEG-4 ALS</a> decoder</span></h3> <ul><li>primary goal: stream copy of ALS frames in MP4 files from the <a rel="nofollow" class="external text" href="http://www.nue.tu-berlin.de/forschung/projekte/lossless/refsoft/mp4alsRM22rev2.zip">reference encoder</a> <ul><li>detect codec_id</li> <li>preserve extradata</li></ul></li> <li>primary goal: write the decoder based on the ISO specification <ul><li>ISO/IEC 14496-3:2005/Amd.2:2006, related corrigenda, and other pertinent ISO documents</li></ul></li> <li>primary goal: decode files with basic ALS features <ul><li>integer samples</li> <li>LPC</li> <li>rice coding</li> <li>joint-stereo</li></ul></li> <li>secondary goal: decode files with more advanced ALS features <ul><li>floating-point samples</li> <li>block switching</li> <li>LTP (long term prediction)</li> <li>BGMC (arithmetic coding)</li> <li>MCC (advanced multi-channel)</li> <li>RLSLMS (backward-adaptive prediction)</li></ul></li> <li>secondary goal: pass the ISO conformance tests</li> <li>secondary goal: handle anything the reference encoder can come up with</li></ul> <p><i>Mentor: Justin Ruggles</i> </p> <h3><span id="RTMP_Support_.28Flash_streaming.29"></span><span class="mw-headline" id="RTMP_Support_(Flash_streaming)">RTMP Support (Flash streaming)</span></h3> <ul><li>primary goal: implement a RTMP URLProtocol and/or demuxer if needed.</li> <li>secondary goal: extend FFserver to support RTMP streaming. <ul><li>implementation must be compatible with Flash plugin.</li></ul></li></ul> <p><i>Mentor: Baptiste Coudurier</i> </p> <h3><span id="Playlist.2FConcatenation_Support"></span><span class="mw-headline" id="Playlist/Concatenation_Support">Playlist/Concatenation Support</span></h3> <ul><li>primary goal: implement a playlist/concatenation interface to transcode(FFmpeg) and play(FFplay) media <ul><li>interface will use commandline switches.</li> <li>interface must support every input format FFmpeg support</li> <li>interface must work with different input stream parameters (different formats, codecs, video resolution, audio sample rate, audio channels, etc..)</li> <li>interface must support track selection</li> <li>interface must support existing playlist format files .m3u, .pls, xpsf.</li></ul></li></ul> <p><i>Mentor: Baptiste Coudurier</i> </p><p><br /> </p> <h3><span class="mw-headline" id="NEW_Seeking_API">NEW Seeking API</span></h3> <ul><li>primary goal: implement a new seeking API in libavformat <ul><li>implement av_seek_file in libavformat</li> <li>implement compatible new seek_file for all AVInputFormat porting existing seek function if possible.</li> <li>implement av_build_index function which will build an AVIndex for the file</li> <li>implement av_export_index function which will save AVIndex in a file which can be loaded later.</li></ul></li></ul> <p><i>Mentor: Baptiste Coudurier</i> </p> <h3><span id="Improve_RTSP.2FRTP_layer"></span><span class="mw-headline" id="Improve_RTSP/RTP_layer">Improve RTSP/RTP layer</span></h3> <ul><li>primary goal: cleanup code the structure</li> <li>primary goal: improve the receiver compatibility <ul><li>Add support for more widespread formats ([list will follow check gst live555 and feng]) <ul><li>X-Qt/quicktime depayloader (see <a rel="nofollow" class="external text" href="http://www.gnome.org/~rbultje/ffmpeg-patchset/">X-QT patch</a>)</li> <li>vorbis and theora depayloader (see <a href="/index.php/Small_FFmpeg_Tasks#Implement_the_RTP.2FVorbis_payload" title="Small FFmpeg Tasks">Small_FFmpeg_Tasks#Implement_the_RTP.2FVorbis_payload</a>)</li> <li>h263 and h263+ (see <a rel="nofollow" class="external text" href="http://roundup.ffmpeg.org/roundup/ffmpeg/issue678">Issue 678</a>)</li> <li>...more...</li></ul></li> <li>support Quicktime http tunnel mode</li></ul></li> <li>secondary goal: provide an API to expose the rtcp layer (and the equivalent in RDT dialect)</li> <li>secondary goal: try to support subtitle streams (either as rtcp-xr or application/text stream)</li> <li>secondary goal: make VideoLanClient, MPlayer and Xine use ffmpeg rtsp</li></ul> <p><i>Mentor: Luca Barbato, Ronald S. Bultje</i> </p> <h3><span class="mw-headline" id="AACS_implementation">AACS implementation</span></h3> <ul><li>Add the ability to encode and decode using Advanced Access Content System to FFmpeg.</li> <li>Specifications: <a rel="nofollow" class="external free" href="http://www.aacsla.com/specifications/">http://www.aacsla.com/specifications/</a></li> <li>existing implementation e.g. DumpHD: <a rel="nofollow" class="external free" href="http://forum.doom9.org/showthread.php?t=123111">http://forum.doom9.org/showthread.php?t=123111</a></li> <li>Most parts (BD-J, MKB, title key generation) probably do not belong into FFmpeg, this should be discussed with us before submitting an application <ul><li>possible solution: only implement "lowest" level (decode given the correct title key) but implement CSS en- and decryption as secondary goal</li></ul></li></ul> <p><i>Mentor: Reimar D枚ffinger</i> </p> <h3><span class="mw-headline" id="Libavfilter_video_work"><a href="/index.php/Libavfilter" title="Libavfilter">Libavfilter</a> video work</span></h3> <p>Libavfilter is the FFmpeg filtering library that started as a 2007 SoC <a href="/index.php/FFmpeg_Summer_Of_Code#Video_Filter_API_(AKA_libavfilter)" class="mw-redirect" title="FFmpeg Summer Of Code">project</a>. 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 </p> <ul><li>Get the remaining bits of the SoC tree committed, including the ffmpeg.c and ffplay.c patch</li> <li>Get libavfilter enabled in the main SVN tree</li> <li>Write a watermark filter (this is one of the most commonly requested FFmpeg feature)</li> <li>Write a expand/pad filter (see <a rel="nofollow" class="external autonumber" href="http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85015">[1]</a> and <a rel="nofollow" class="external autonumber" href="http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/2779/">[2]</a></li> <li>Port all MPlayer filters at libmbcodec/vf_* (do not forget asking the authors if it is ok to release them under the LGPL)</li></ul> <p>see also this ffmpeg-devel message: <a rel="nofollow" class="external autonumber" href="http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-March/064817.html">[3]</a> </p><p><i>Mentor: To be determined, <a href="/index.php/User:Vitor" title="User:Vitor">Vitor Sessak</a> if no one else shows up</i> </p> <h3><span class="mw-headline" id="Libavfilter_audio_work"><a href="/index.php/Libavfilter" title="Libavfilter">Libavfilter</a> audio work</span></h3> <p>At the moment, FFmpeg filtering library has no support at all for handling audio. This task would consist of </p> <ul><li>Expanding the libavfilter framework to work with audio</li> <li>Writing a resampling/format conversion filter (starting with just a wrapping code at libavcodec/resample.c) <ul><li>Can it be made clear that ideally we'd want N-channel resampling? <a href="/index.php/User:Superdump" title="User:Superdump">Rob</a> <ul><li>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. <a href="/index.php/User:Vitor" title="User:Vitor">Vitor</a> 17:52, 22 March 2009 (EDT)</li></ul></li></ul></li> <li>Implement negotiation of sample format and number of channels analogously to the libavfilter colorspace negotiation <ul><li>Does this imply a channel mixing filter? This would be the second most desirable basic audio filter in my opinion. <a href="/index.php/User:Superdump" title="User:Superdump">Rob</a> <ul><li>Yes, but it to begin with, he could just write a wrapper around libavcodec/resample.c (see my next point) <a href="/index.php/User:Vitor" title="User:Vitor">Vitor</a> 17:52, 22 March 2009 (EDT)</li></ul></li></ul></li> <li>Make the resampling filter works for several combinations of sample format and channels</li> <li>Write a visualization filter as proof-of-concept of a filter that works with both video and audio</li></ul> <p><i>Mentor: To be determined, <a href="/index.php/User:Vitor" title="User:Vitor">Vitor Sessak</a> if no one else shows up</i> </p> <h3><span class="mw-headline" id="AMR-NB_decoder"><a href="/index.php/AMR-NB" title="AMR-NB">AMR-NB</a> decoder</span></h3> <ul><li>Continue and complete the fundamental debugging of the floating point AMR-NB decoder</li> <li>Implement/reuse the missing post filters</li> <li>Clean up the code, refactor it as appropriate to share code with QCELP and others</li> <li>Submit for review and tend to review comments</li> <li>Implement further non-essential features such as comfort noise</li></ul> <p><i>Mentor: <a href="/index.php/User:Superdump" title="User:Superdump">Robert Swain</a></i> </p> <h3><span class="mw-headline" id="QCELP_decoder_missing_features">QCELP decoder missing features</span></h3> <ul><li>Implement missing features in the QCELP decoder</li></ul> <p><i>Mentor: <a href="/index.php/User:Superdump" title="User:Superdump">Robert Swain</a></i> </p> <dl><dd>This task is probably too small on its own so if you would like to do it, also look at the completion of the AMR-NB decoder task above as they may be merged into one CELP task. --<a href="/index.php/User:Superdump" title="User:Superdump">Robert Swain</a></dd></dl> <h2><span class="mw-headline" id="2nd_Tier_Project_Proposals">2nd Tier Project Proposals</span></h2> <p>All that separates these proposals from their 1st tier brethren is a mentor. </p> <h3><span class="mw-headline" id="Finish_SoC_projects_from_previous_years">Finish SoC projects from previous years</span></h3> <p>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. </p><p>Unfinished projects from previous years are: </p><p>2007: </p> <ul><li><a href="/index.php/FFmpeg_Summer_Of_Code#JPEG_2000_Encoder_and_Decoder" class="mw-redirect" title="FFmpeg Summer Of Code">JPEG 2000 decoder</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#JPEG_2000_Encoder_and_Decoder" class="mw-redirect" title="FFmpeg Summer Of Code">JPEG 2000 encoder</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#Dirac_Encoder_and_Decoder" class="mw-redirect" title="FFmpeg Summer Of Code">Dirac decoder</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#Dirac_Encoder_and_Decoder" class="mw-redirect" title="FFmpeg Summer Of Code">Dirac encoder</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#TS_Muxer" class="mw-redirect" title="FFmpeg Summer Of Code">TS muxer</a></li></ul> <p>2008: </p> <ul><li><a href="/index.php/FFmpeg_Summer_Of_Code#Generic_frame-level_multithreading_support" class="mw-redirect" title="FFmpeg Summer Of Code">Generic frame-level multithreading support</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#AAC-LC_Encoder" class="mw-redirect" title="FFmpeg Summer Of Code">AAC-LC encoder</a></li> <li><a href="/index.php/FFmpeg_Summer_Of_Code#WMA_Pro_Decoder" class="mw-redirect" title="FFmpeg Summer Of Code">WMA Pro decoder</a></li></ul> <p>For the current status of all SoC projects up to date, see <a href="/index.php/FFmpeg_Summer_Of_Code" class="mw-redirect" title="FFmpeg Summer Of Code">FFmpeg Summer Of Code</a>. </p> <h3><span class="mw-headline" id="Implement_a_better_regressions_test_system">Implement a better regressions test system</span></h3> <ul><li>Split up the current regtests</li> <li>Add tests for all the missing formats and codecs to FATE</li></ul> <h3><span id="Finish_ACELP.NET_.2F_G.729_decoder"></span><span class="mw-headline" id="Finish_ACELP.NET_/_G.729_decoder">Finish ACELP.NET / G.729 decoder</span></h3> <p>Some parts of a <a href="/index.php/ACELP.net" title="ACELP.net">ACELP.net / G.729</a> decoder are inside and outside of FFmpeg, see <a href="/index.php/Interesting_Patches#ACELP.net_and_G.729_decoder_by_Vladimir_Voroshilov" title="Interesting Patches">the entry on the interesting patches page</a>. They need to get cleaned up, finished and integrated. </p> <h3><span class="mw-headline" id="libvo">libvo</span></h3> <ul><li>Port MPlayer's libvo to ffplay</li> <li>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.</li></ul> <h3><span class="mw-headline" id="GStreamer_input">GStreamer input</span></h3> <ul><li>Like we have vfw input we could have a gstreamer input format also. This would enable support of wmapro and wmalossless until these formats are RE'd. GStreamer input support could possible also enable <a href="/index.php/DRM" title="DRM">DRM</a> support, even under Linux/Unix.</li></ul> <p><i>Mentor: Christian Schaller</i> </p> <h3><span class="mw-headline" id="AMR-WB_Decoder">AMR-WB Decoder</span></h3> <ul><li>Specification: <a rel="nofollow" class="external free" href="http://www.3gpp.org/ftp/Specs/html-info/26-series.htm">http://www.3gpp.org/ftp/Specs/html-info/26-series.htm</a></li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/amr/">http://samples.mplayerhq.hu/A-codecs/amr/</a></li></ul> <p>Also see <a href="/index.php/AMR" title="AMR">AMR</a>. </p> <h3><span class="mw-headline" id="GSM_Decoder">GSM Decoder</span></h3> <ul><li>Specification + sample implementation: <a rel="nofollow" class="external free" href="http://kbs.cs.tu-berlin.de/~jutta/toast.html">http://kbs.cs.tu-berlin.de/~jutta/toast.html</a></li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/GSM/">http://samples.mplayerhq.hu/A-codecs/GSM/</a></li></ul> <p>Also see <a href="/index.php/GSM" title="GSM">GSM</a>. </p> <h3><span class="mw-headline" id="Sipr_Decoder">Sipr Decoder</span></h3> <ul><li>Specification: will be provided</li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/real/AC-sipr/">http://samples.mplayerhq.hu/real/AC-sipr/</a></li></ul> <p>Also see <a href="/index.php/RealAudio_sipr" title="RealAudio sipr">RealAudio sipr</a> and <a href="/index.php/Interesting_Patches#RealAudio_SIPR_.4016k_decoder_and_demuxer_by_Vladimir_Voroshilov" title="Interesting Patches">this patch</a>. </p> <h3><span class="mw-headline" id="Speex_Decoder">Speex Decoder</span></h3> <ul><li>Specification: <a rel="nofollow" class="external free" href="http://speex.org/docs/">http://speex.org/docs/</a></li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/speex/">http://samples.mplayerhq.hu/A-codecs/speex/</a></li></ul> <p>Also see <a href="/index.php/Speex" title="Speex">Speex</a>. </p> <h3><span class="mw-headline" id="AMR-NB_Encoder">AMR-NB Encoder</span></h3> <ul><li>Specification: <a rel="nofollow" class="external free" href="http://www.3gpp.org/ftp/Specs/html-info/26-series.htm">http://www.3gpp.org/ftp/Specs/html-info/26-series.htm</a></li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/amr/">http://samples.mplayerhq.hu/A-codecs/amr/</a></li></ul> <p>Also see <a href="/index.php/AMR" title="AMR">AMR</a>. </p> <h3><span class="mw-headline" id="VP6_Encoder">VP6 Encoder</span></h3> <ul><li>Specification: <a href="/index.php/On2_VP6" title="On2 VP6">On2 VP6</a></li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/V-codecs/VP6/">http://samples.mplayerhq.hu/V-codecs/VP6/</a></li></ul> <h3><span class="mw-headline" id="WMV3_Encoder">WMV3 Encoder</span></h3> <ul><li>Clearly defined task</li> <li>Primary goal: Encode video sequences such that they can be decoded by a Windows Media player.</li></ul> <p>This could either be done by improving <a href="/index.php/Interesting_Patches#WMV3_encoder_by_Denis_Fortin" title="Interesting Patches">this patch</a> or by writing the encoder from scratch. </p> <h3><span class="mw-headline" id="Improve_subtitle_support">Improve subtitle support</span></h3> <ul><li>Add text-to-bitmap conversion functions</li> <li>One with hard-coded bitmaps for characters</li> <li>One that utilizes freetype</li> <li>Function used will be chosen upon compilation</li></ul> <p>Adjust existing subtitle support to new ABI </p> <ul><li>ABI change: <a rel="nofollow" class="external free" href="http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html">http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/058521.html</a></li></ul> <h3><span class="mw-headline" id="VC-1_Interlaced_Support">VC-1 Interlaced Support</span></h3> <ul><li>Add support for interlaced streams as used in Bluray recordings to the VC-1 decoder.</li> <li>This includes fixing some reference streams</li></ul> <h3><span class="mw-headline" id="Improve_Ratecontrol">Improve Ratecontrol</span></h3> <ul><li>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.</li> <li>Primary goal 2: VBV compliant, rate distortion optimal per macroblock ratecontrol using the viterbi algorithm.</li> <li>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.</li> <li>Secondary goal 2: Rate distortion optimal (for the current picture) scene change detection.</li> <li>Secondary goal 3: B frames decision which is faster and or has a higher PSNR/bitrate and subjective quality/bitrate than the current code.</li></ul> <h3><span class="mw-headline" id="WMA_lossless">WMA lossless</span></h3> <ul><li>Implement a decoder for WMA lossless (0x0163)</li> <li>Reuse as much libavcodec code as possible</li> <li>Samples: <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/WMA9/wma_0x163.wma">http://samples.mplayerhq.hu/A-codecs/WMA9/wma_0x163.wma</a> <a rel="nofollow" class="external free" href="http://samples.mplayerhq.hu/A-codecs/lossless/luckynight.wma">http://samples.mplayerhq.hu/A-codecs/lossless/luckynight.wma</a></li></ul> <h3><span id="WTV_.28de.29muxer"></span><span class="mw-headline" id="WTV_(de)muxer">WTV (de)muxer</span></h3> <ul><li>Implement a demuxer (and possibly a muxer) for the <a href="/index.php/WTV" title="WTV">WTV</a> file format.</li></ul> <!-- NewPP limit report Cached time: 20241125064128 Cache expiry: 86400 Reduced expiry: false Complications: [show鈥恡oc] CPU time usage: 0.021 seconds Real time usage: 0.023 seconds Preprocessor visited node count: 132/1000000 Post鈥恊xpand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 2/100 Expensive parser function count: 0/100 Unstrip recursion depth: 0/20 Unstrip post鈥恊xpand size: 0/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 0.000 1 -total --> <!-- Saved in parser cache with key multimediawiki_1_39_5-multimediawiki_:pcache:idhash:3292-0!canonical and timestamp 20241125064128 and revision id 12370. --> </div> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2009&oldid=12370">https://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2009&oldid=12370</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/index.php/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/index.php/Category:FFmpeg" title="Category:FFmpeg">FFmpeg</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigation menu</h2> <div id="mw-head"> <nav id="p-personal" class="vector-menu mw-portlet mw-portlet-personal vector-user-menu-legacy" aria-labelledby="p-personal-label" role="navigation" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Personal tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="pt-login" class="mw-list-item"><a href="/index.php?title=Special:UserLogin&returnto=FFmpeg+Summer+Of+Code+2009" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span>Log in</span></a></li></ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="vector-menu mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy" aria-labelledby="p-namespaces-label" role="navigation" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namespaces</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="ca-nstab-main" class="selected mw-list-item"><a href="/index.php/FFmpeg_Summer_Of_Code_2009" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/index.php/Talk:FFmpeg_Summer_Of_Code_2009" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li></ul> </div> </nav> <nav id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown" aria-labelledby="p-variants-label" role="navigation" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" /> <label id="p-variants-label" aria-label="Change language variant" class="vector-menu-heading " > <span class="vector-menu-heading-label">English</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"></ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="vector-menu mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy" aria-labelledby="p-views-label" role="navigation" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Views</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="ca-view" class="selected mw-list-item"><a href="/index.php/FFmpeg_Summer_Of_Code_2009"><span>Read</span></a></li><li id="ca-viewsource" class="mw-list-item"><a href="/index.php?title=FFmpeg_Summer_Of_Code_2009&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="mw-list-item"><a href="/index.php?title=FFmpeg_Summer_Of_Code_2009&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li></ul> </div> </nav> <nav id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown" aria-labelledby="p-cactions-label" role="navigation" title="More options" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" /> <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">More</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"></ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <div> <h3 > <label for="searchInput">Search</label> </h3> <form action="/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Search MultimediaWiki" aria-label="Search MultimediaWiki" autocapitalize="sentences" title="Search MultimediaWiki [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Special:Search"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Search the pages for this text" value="Search"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Go to a page with this exact name if it exists" value="Go"> </div> </form> </div> </div> </div> </div> <div id="mw-panel"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/index.php/Main_Page" title="Visit the main page"></a> </div> <nav id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation vector-menu-portal portal" aria-labelledby="p-navigation-label" role="navigation" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigation</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="n-mainpage" class="mw-list-item"><a href="/index.php/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main Page</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/index.php/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-Video-Codecs" class="mw-list-item"><a href="/index.php/Category:Video_Codecs"><span>Video Codecs</span></a></li><li id="n-Video-FourCCs" class="mw-list-item"><a href="/index.php/Category:Video_FourCCs"><span>Video FourCCs</span></a></li><li id="n-Audio-Codecs" class="mw-list-item"><a href="/index.php/Category:Audio_Codecs"><span>Audio Codecs</span></a></li><li id="n-Container-Formats" class="mw-list-item"><a href="/index.php/Category:Container_Formats"><span>Container Formats</span></a></li><li id="n-Game-Formats" class="mw-list-item"><a href="/index.php/Category:Game_Formats"><span>Game Formats</span></a></li><li id="n-Subtitle-Formats" class="mw-list-item"><a href="/index.php/Category:Subtitle_Formats"><span>Subtitle Formats</span></a></li><li id="n-Image-Formats" class="mw-list-item"><a href="/index.php/Category:Image_Formats"><span>Image Formats</span></a></li><li id="n-All-Categories" class="mw-list-item"><a href="/index.php/Special:Categories"><span>All Categories</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/index.php/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li></ul> </div> </nav> <nav id="p-tb" class="vector-menu mw-portlet mw-portlet-tb vector-menu-portal portal" aria-labelledby="p-tb-label" role="navigation" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"><li id="t-whatlinkshere" class="mw-list-item"><a href="/index.php/Special:WhatLinksHere/FFmpeg_Summer_Of_Code_2009" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/index.php/Special:RecentChangesLinked/FFmpeg_Summer_Of_Code_2009" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/index.php/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/index.php?title=FFmpeg_Summer_Of_Code_2009&oldid=12370" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/index.php?title=FFmpeg_Summer_Of_Code_2009&action=info" title="More information about this page"><span>Page information</span></a></li></ul> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" role="contentinfo" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 12 March 2010, at 10:30.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="/index.php/MultimediaWiki:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/index.php/MultimediaWiki:About">About MultimediaWiki</a></li> <li id="footer-places-disclaimer"><a href="/index.php/MultimediaWiki:General_disclaimer">Disclaimers</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/"><img src="/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"/></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.021","walltime":"0.023","ppvisitednodes":{"value":132,"limit":1000000},"postexpandincludesize":{"value":0,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":2,"limit":100},"expensivefunctioncount":{"value":0,"limit":100},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"timingprofile":["100.00% 0.000 1 -total"]},"cachereport":{"timestamp":"20241125064128","ttl":86400,"transientcontent":false}}});});</script> <!-- Matomo --> <script type="text/javascript"> var _paq = _paq || []; _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking"]); (function() { var u = (("https:" == document.location.protocol) ? "https" : "http") + "://"+"wiki.multimedia.cx/matomo/"; _paq.push(["setTrackerUrl", u+"piwik.php"]); _paq.push(["setSiteId", "1"]); var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript"; g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> <!-- Matomo Image Tracker --> <noscript><img src="https://wiki.multimedia.cx/matomo/piwik.php?idsite=1&rec=1" style="border:0" alt="" /></noscript> <!-- End Matomo --> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":146});});</script> </body> <!-- Cached 20241125064128 --> </html>