FFmpeg Wishlist: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(remove completed things, try to remove entire list or port it to small tasks page...)
 
(162 intermediate revisions by 14 users not shown)
Line 1: Line 1:
A temporary FFmpeg wish/todo list:
The various desired features for FFmpeg can be found in the following pages:
* [https://roundup.mplayerhq.hu/roundup/ffmpeg/issue?%40&%40columns=title&%40columns=topic&id=&%40columns=id&%40columns=activity&%40sort=activity&%40columns=priority&%40group=priority&type=2&status=2&%40columns=substatus&%40pagesize=50&%40startwith=0&%40action=search Open feature requests in the issue tracker]
* [http://svn.mplayerhq.hu/ffmpeg/trunk/doc/TODO?view=co TODO file in the SVN tree]
* [[FFmpeg Summer Of Code]] pages
* Finish and commit any code not yet commited at the [http://svn.mplayerhq.hu/soc/ SoC FFmpeg tree]
 
Also, other features requests can be found in:
* [https://roundup.mplayerhq.hu/roundup/ffmpeg/issue?%40&%40columns=title&%40columns=topic&id=&%40columns=id&%40columns=activity&%40sort=activity&%40columns=priority&%40group=priority&type=2&status=1&%40columns=substatus&%40pagesize=50&%40startwith=0&%40action=search Feature requests marked as "new"]
* Below in this page (mostly deprecated items)
 
 
See also the discussion about [[Ffmpeg audio api|Audio API]] TODOs.
 
 
 
 
 
 
= Old list =
 
The following is deprecated, please '''do not''' add new items to this list, use instead the issue tracker. Also, send a message to the mailing list before implementing one of those items. They could be work-in-progress or not wanted anymore.
 
Moving any of these items to a '''proper''' feature request in the issue tracker is welcome.
 
 
== Decoders ==
== Decoders ==
* g723.1/rtp decoder
* [[xeb|XEB]] - the [[RatDVD]] video codec (stored in [[xvo|XVO]] container format)
*  g729/rtp decoder
* VNC decoder, files created by vncrec. Re-use code from [[VMware Video]] decoder http://www.sodan.org/~penny/vncrec/
*  Bethsoft VID decoder
* Additional game formats support:
*  a Monkey's Audio decoder, look at the c++ sdk sources
** [[VQA]] v3 support, see http://www.gamers.org/pub/idgames2/planetquake/planetcnc/cncdz/
*  a JPEG2000 decoder
** [[Gremlin Digital Video]]
*  a gsm decoder
** [[M95]]
*  QCELP decoder [http://www.3gpp2.org/Public_html/specs/alltsgscfm.cfm spec] is c.s0020 and source is c.r0020
*  AMV decoder, http://scrub50187.com/ has the creator. wikipedia has [http://en.wikipedia.org/wiki/AMV_video_format articles] about the format also.
* integer only vorbis decoder (to replace tremor)
* LGPL'ed AAC decoder
* Add j-type picture support to wmv8 decoder
* MLP decoder
* add b-frame support to ffsvq3
* Indeo 4 and 5 decoder
* vnc decoder, files created by vncrec. reuse code from [[VMware Video]] decoder. http://www.sodan.org/~penny/vncrec/


== Demuxers ==
== Demuxers ==
* iff demuxer (with anim and sound decoding), xine has a decoder for it
* [[FluxDVD]] / [[RatDVD]] demuxer for [[xvo|XVO]] files (Note! [[RatDVD]] is the predecesor of [[FluxDVD]])
* g723.1/rtp demuxer
 
* g729/rtp demuxer
== Muxers ==
* Bethsoft VID demuxer
* DVB (MPEG-TS) muxer inside DVB containers
* vivo demuxer, look at the mplayer vivo demuxer for reference
** MPEG-1/2 video-streams inside DVB containers
* a xmv demuxer, look at http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/25207/focus=25224 and http://www.maxconsole.net/?mode=news&newsid=411 for hints; also look at http://sourceforge.net/tracker/index.php?func=detail&aid=1097094&group_id=53761&atid=471491 (should be a working demuxer/decoder)
** MPEG-4 ASP video-streams inside DVB containers
* AMV demuxer, http://scrub50187.com/ has the creator. wikipedia has [http://en.wikipedia.org/wiki/AMV_video_format articles] about the format also.
** MPEG-4 AVC (H.264) video-streams inside DVB containers
** AC3 audio-streams inside DVB containers
*** Mutiple AC3 audio-streams inside DVB containers
** MP3 audio-streams inside DVB containers
*** Mutiple MP3 audio-streams inside DVB containers
* NSV muxer
* NSA muxer


== Features ==
*  a new audio api
*  radix-4 fft routines
*  grabbing from video devices under windows, apply this vfw capture patch http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2006-December/005607.html
*  -[h|v]flip options for ffplay
* improved documentation (web,manpage)


=== Subtitles ===
*  Create a common 'subtitles display library or API' with all subtile decoders/demuxers gathered. Call it "libsubs" (or "libsub", "libsubtitles" or whatever). Move FFmpeg's existing VobSub and DVBsub code there, no matter if they are bitmap or text-based subs, and add any future subtile code there. This will help reduce future code replication and make it easier to add support for additional subtitles.
**Maybe use MPlayer's recently added "'''libass'''" (SSA/ASS subtile reader)
*  [http://en.wikipedia.org/wiki/Closed_captioning Closed captioning (CC)] subtile support - (Closed captions for the deaf and hard of hearing, also known as "Line 21 captioning", uses VobSub bitmaps)
*  [http://en.wikipedia.org/wiki/DivX#DivX_Subtitles_.28XSUB.29 DivX Subtitles (XSUB)] display/reader/decoder (Note: bitmap based subtitle, similar to VobSub)
*  [http://en.wikipedia.org/wiki/SubRip SubRip (.srt)] subtile support (Note: simple text-based based subtitle with timestamp)
*  Subviewer (.sub) subtile support (Note: simple text-based based subtitle with timestamp)
*  MicroDVD (.sub) subtile support (Note: simple text-based based subtitle with timestamp
*  [http://en.wikipedia.org/wiki/Sami_%28subtitle_tool%29 Sami (.smi)] subtile support (Note: simple text-based based subtitle with timestamp)
*  [http://en.wikipedia.org/wiki/SubStation_Alpha SubStation Alpha (.ssa+.ass)] subtile support (Note: advanced text-based based subtitle with timestamps and XY location on screen)
*  [http://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language RealText (.rt)] subtile support
*  PowerDivx (.psb) subtile support
*  [http://en.wikipedia.org/wiki/Universal_Subtitle_Format Universal Subtitle Format (.usf)] subtile support
*  Structured Subtitle Format (.ssf) subtile support


== Misc ==
== Features ==
*  NSV muxer
* add PAFF to [[H.264]] decoder
* improve seeking in asf files
* clean up alac decoder
*  dts in wav support
*  raw dts support
* integrate speex, glue code or native
* add xing or vbri header parsing support to the mp3 decoder/parser
*  a aac parser so -acodec copy to mp4/mov works
* clean up the h263 rtp patch found on this page: http://www.salyens.com/downloads/index.html#ffmpeg-0.4.7
* add nice error messages to the flv demuxer(Nelly Moser) amr decoder and dv encoder/decoder
* game formats:
** [[Gremlin Digital Video]]
** [[ARMovie|ARMovie/RPL]]
** [[ESCAPE]]
** [[C93]]
** [[M95]]
** [[THP]]
* subtitle support


* Improved existing documentation and add additional means to document
**Web
**WIKI
**manpage


== [[Snow]] ==
== Streaming Media Network Protocols ==
* multiple reference frames improvements
Streaming Media Network Protocols (client and server-side) improvements/enhancements and related ideas for new features/functions.
** decide which frames to keep (e.g. long-term refs)
* Create a common 'stream demuxer/parser library' for the client-side to receive input streams (and/or API for adding support for additional streaming formats?) - a LGPL'ed sub-library in FFmpeg with all stream demuxers/parsers gathered (similar to the libpostproc and libavutil). Call it "libstream" (or "stream" or whatever). Move FFmpeg's existing stream code there like HTTP and RTSP/RTP. This will help reduce future code replication by sharing common code, thus making it easier to add support for additional streaming formats. All togther making it super easy for audio/video players using FFmpeg to add all-in-one streaming support to their player.
** some changes to the mv prediction code
**Maybe use either [http://www.mplayerhq.hu MPlayer]'s "''stream''" library structure, [http://www.live555.com LIVE555], [http://curl.haxx.se cURL], or probebly the better [http://streaming.polito.it/client/library libnms] (from [http://streaming.polito.it/client NeMeSi]) as a base for such a common library?
* non translational motion compensation
*Add support for additional streaming protocols (on the client side) and improve/enhance support for existing protocols:
** estimate non translational parameters per block by using surrounding motion vectors
** HTTP (Hypertext Transfer Protocol) client
** add a ac coded bit per block to switch between translational and non-translational MC
*** plus a SSL (Secure Sockets Layer) client support for HTTPS
** borrow the non translational MC code from libmpcodecs/vf_perspective.c
** UDP (User Datagram Protocol) client
** some changes to the encoder to decide between translational and non t.
** RTSP - Real-Time Streaming Protocol (RFC2326) client
* Trellis quantization (select quantized coefficient so as to minimize the rate distrortion
** RTP/RTCP - Real-Time Transport Protocol/RTP Control Protocol (RFC3550) client
* 4x4 sized block support (we have 16x16 and 8x8 currently)
** RTP Profile for Audio and Video Conferences with Minimal Control (RFC3551) client
* 1/8 pel motion compensation / estimation support (pretty much just encoder changes needed which in case of the iterative me should be trivial)
** RealMedia RTSP/RDT (Real Time Streaming Protocol /  Real Data Transport)  client
* improve the intra color decision
** SDP (Service Discovery Protocol) / SSDP (Simple Service Discovery Protocol)  client
** MMS (Microsoft Media Services) client
*** including the subprotocol mmsh (MMS over HTTP) and mmst (MMS over TCP)
*FFServer (streaming server) updating and improving:
**FFServer code hasn't been update for quite a while
**Support for RTSP interleaved RTP media
**RTSP over HTTP tunneling
**SLL (Secure Sockets Layer) support
**TLS (Transport Layer Security) support
**SCTP (Stream Control Transmission Protocol) support
***including tunnel SCTP over UDP
**Per-asset accounting options
**Profiling and performance improvements of the RTSP, HTTP and RTP server code
**Streaming to clients like WMP 9, 10 and 11 is broken
**MMS server streaming support in FFServer, (especially for Linux).
*** including the subprotocol mmsh (MMS over HTTP) and mmst (MMS over TCP)
*** Note that al3x has gotten something working with ffserver, you might want to ask him what needs to be done as well :) --[[User:Compn|Compn]] 14:22, 19 March 2007 (EDT)
***You should also take a look at the [http://streaming.polito.it/server FENG (RTSP Streaming Server)] code, [http://streaming.polito.it/embedded NetEmbryo (Embedded Open Media Streaming Library)], and also [http://curl.haxx.se cURL]  --[[User:Gamester17|Gamester17]] 11:20, 29 March 2007 (GMT+1)


==See Also==
*[[FFmpeg Summer Of Code]] for more suggestions/requests (ideas for developers).
*[http://bugzilla.mplayerhq.hu/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=FFmpeg&content= FFmpeg bugs] for bugs in FFmpegs (codecs) that you can help fix or add addition information/samples to.
*[[:Category:Formats missing in FFmpeg]] for formats not implemented in ffmpeg yet


== A/V Filters ==
[[Category:FFmpeg]]
* adopt mplayer filter system or create new one.
**http://article.gmane.org/gmane.comp.video.ffmpeg.devel/39130
***for michaelni's idea of what to do
* decide on name.
** libavfilter (conflicts with LAVF)? libavmunge?

Latest revision as of 05:37, 4 October 2011

The various desired features for FFmpeg can be found in the following pages:

Also, other features requests can be found in:


See also the discussion about Audio API TODOs.




Old list

The following is deprecated, please do not add new items to this list, use instead the issue tracker. Also, send a message to the mailing list before implementing one of those items. They could be work-in-progress or not wanted anymore.

Moving any of these items to a proper feature request in the issue tracker is welcome.


Decoders

Demuxers

Muxers

  • DVB (MPEG-TS) muxer inside DVB containers
    • MPEG-1/2 video-streams inside DVB containers
    • MPEG-4 ASP video-streams inside DVB containers
    • MPEG-4 AVC (H.264) video-streams inside DVB containers
    • AC3 audio-streams inside DVB containers
      • Mutiple AC3 audio-streams inside DVB containers
    • MP3 audio-streams inside DVB containers
      • Mutiple MP3 audio-streams inside DVB containers
  • NSV muxer
  • NSA muxer


Features

  • Improved existing documentation and add additional means to document
    • Web
    • WIKI
    • manpage

Streaming Media Network Protocols

Streaming Media Network Protocols (client and server-side) improvements/enhancements and related ideas for new features/functions.

  • Create a common 'stream demuxer/parser library' for the client-side to receive input streams (and/or API for adding support for additional streaming formats?) - a LGPL'ed sub-library in FFmpeg with all stream demuxers/parsers gathered (similar to the libpostproc and libavutil). Call it "libstream" (or "stream" or whatever). Move FFmpeg's existing stream code there like HTTP and RTSP/RTP. This will help reduce future code replication by sharing common code, thus making it easier to add support for additional streaming formats. All togther making it super easy for audio/video players using FFmpeg to add all-in-one streaming support to their player.
    • Maybe use either MPlayer's "stream" library structure, LIVE555, cURL, or probebly the better libnms (from NeMeSi) as a base for such a common library?
  • Add support for additional streaming protocols (on the client side) and improve/enhance support for existing protocols:
    • HTTP (Hypertext Transfer Protocol) client
      • plus a SSL (Secure Sockets Layer) client support for HTTPS
    • UDP (User Datagram Protocol) client
    • RTSP - Real-Time Streaming Protocol (RFC2326) client
    • RTP/RTCP - Real-Time Transport Protocol/RTP Control Protocol (RFC3550) client
    • RTP Profile for Audio and Video Conferences with Minimal Control (RFC3551) client
    • RealMedia RTSP/RDT (Real Time Streaming Protocol / Real Data Transport) client
    • SDP (Service Discovery Protocol) / SSDP (Simple Service Discovery Protocol) client
    • MMS (Microsoft Media Services) client
      • including the subprotocol mmsh (MMS over HTTP) and mmst (MMS over TCP)
  • FFServer (streaming server) updating and improving:
    • FFServer code hasn't been update for quite a while
    • Support for RTSP interleaved RTP media
    • RTSP over HTTP tunneling
    • SLL (Secure Sockets Layer) support
    • TLS (Transport Layer Security) support
    • SCTP (Stream Control Transmission Protocol) support
      • including tunnel SCTP over UDP
    • Per-asset accounting options
    • Profiling and performance improvements of the RTSP, HTTP and RTP server code
    • Streaming to clients like WMP 9, 10 and 11 is broken
    • MMS server streaming support in FFServer, (especially for Linux).

See Also