Difference between revisions of "Libavfilter"

From MultimediaWiki
Jump to navigation Jump to search
(Past discussions on the topic: Add links to the lavfi state of affairs saga)
(Committed!)
Line 1: Line 1:
Until libavfilter is fully incorporated into [[FFmpeg]], you may get the complete libavfilter source from [[FFmpeg Summer Of Code|GSoC]] SVN repository:
 
 
svn checkout svn://svn.mplayerhq.hu/soc/libavfilter
 
 
Please read [http://svn.mplayerhq.hu/soc/libavfilter/README?view=co the README.TXT for libavfilter] to discover how to integrate libavfilter into ffmpeg and ffplay.
 
  
 
==Reasons why a filter API is needed in FFmpeg==
 
==Reasons why a filter API is needed in FFmpeg==
 
FFmpeg's already well-known [[libavcodec]] module has become the de facto standard library for video decoding and encoding in free software projects. Unfortunately, no similar standard library has surfaced for audio/video filtering and otherwise working with audio/video stream once it has been decoded. Various multimedia projects (such as MPlayer, Xine, GStreamer, VirtualDub, etc.) have implemented their own filter systems to various degrees of success. What is needed is a high quality audio and video filter API - efficient, flexible enough to meet all the requirements which have led various projects to invent their own filter system, and yet easy to use or develop new filters with. This proposal is to implement a high quality video API and filter library for FFmpeg, where it can be easily used by other multimedia-related software projects.
 
FFmpeg's already well-known [[libavcodec]] module has become the de facto standard library for video decoding and encoding in free software projects. Unfortunately, no similar standard library has surfaced for audio/video filtering and otherwise working with audio/video stream once it has been decoded. Various multimedia projects (such as MPlayer, Xine, GStreamer, VirtualDub, etc.) have implemented their own filter systems to various degrees of success. What is needed is a high quality audio and video filter API - efficient, flexible enough to meet all the requirements which have led various projects to invent their own filter system, and yet easy to use or develop new filters with. This proposal is to implement a high quality video API and filter library for FFmpeg, where it can be easily used by other multimedia-related software projects.
  
== Issues that have to be fixed before adding to main tree ==
+
== Possible known issues ==
 
* no frame rate estimation is supported (see post in -soc [http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-December/002283.html])
 
* no frame rate estimation is supported (see post in -soc [http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-December/002283.html])
* a padding filter is lacking (see [http://thread.gmane.org/gmane.comp.video.ffmpeg.user/14587/focus=14596]) -- '''Updated:''' vdmsss is working on it
 
 
* make ffmpeg.c honor the aspect ratio outputted by the filter chain (thanks vdmsss for the bug report) -- '''Updated:''' probably fixed, but maybe not printing the right PAR in the terminal
 
* make ffmpeg.c honor the aspect ratio outputted by the filter chain (thanks vdmsss for the bug report) -- '''Updated:''' probably fixed, but maybe not printing the right PAR in the terminal
  
Line 43: Line 37:
 
*** Possible sources: [http://sourceforge.net/projects/deinterlace DScaler] or [http://www.mir.com/DMG/Software/y4mscaler.html y4mscale]?
 
*** Possible sources: [http://sourceforge.net/projects/deinterlace DScaler] or [http://www.mir.com/DMG/Software/y4mscaler.html y4mscale]?
 
** NTSC => PAL, and PAL => NTSC frame-rate (FPS) adjust and reclock filter for NTSC <=> PAL conversion
 
** NTSC => PAL, and PAL => NTSC frame-rate (FPS) adjust and reclock filter for NTSC <=> PAL conversion
 
== Past discussions on the topic ==
 
Threads with previous discussions in the subject:
 
* Possible adopt MPlayer's A/V filter system or create a new API 'from scratch' for pre-process and post-process audio/video filters:
 
** See http://article.gmane.org/gmane.comp.video.ffmpeg.devel/39130 for michaelni's idea of what to do.
 
***Also read this discussion thread on MPlayer's mailing-list:
 
****http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2007-April/051142.html
 
*****http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2007-April/thread.html#51142
 
* The lavfi state of affairs saga
 
** lavfi state of affairs:  http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/80845/focus=80946
 
** lavfi state of affairs 2: http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/85905
 
** lavfi state of affairs 3: http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/93176/focus=93336
 
 
*Take a look at other existing players API for filter plugins, like for example;
 
** [http://svn.mplayerhq.hu/mplayer/trunk/DOCS/tech/libmpcodecs.txt?revision=15625&view=markup MPlayer (libmpcodecs vf_*.c filters)], [http://xinehq.de/index.php/hackersguide#AEN864 Xine], [[ffdshow|FFdshow]], [[VLC media player|VLC]], [http://www.virtualdub.org/filtersdk VirtualDub], [http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html GStreamer], [http://www.foobar2000.org foobar], and [http://www.xmms.org/ XMMS]
 
 
==Mentors==
 
A'rpi (has expressed interest of possibly helping with implementing a filter API in FFmpeg, he also volunteering to help porting the MPlayer filters too if a such API becomes available http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2007-April/051164.html)''
 
 
  
 
== See also ==
 
== See also ==

Revision as of 12:30, 7 May 2010

Reasons why a filter API is needed in FFmpeg

FFmpeg's already well-known libavcodec module has become the de facto standard library for video decoding and encoding in free software projects. Unfortunately, no similar standard library has surfaced for audio/video filtering and otherwise working with audio/video stream once it has been decoded. Various multimedia projects (such as MPlayer, Xine, GStreamer, VirtualDub, etc.) have implemented their own filter systems to various degrees of success. What is needed is a high quality audio and video filter API - efficient, flexible enough to meet all the requirements which have led various projects to invent their own filter system, and yet easy to use or develop new filters with. This proposal is to implement a high quality video API and filter library for FFmpeg, where it can be easily used by other multimedia-related software projects.

Possible known issues

  • no frame rate estimation is supported (see post in -soc [1])
  • make ffmpeg.c honor the aspect ratio outputted by the filter chain (thanks vdmsss for the bug report) -- Updated: probably fixed, but maybe not printing the right PAR in the terminal

Feature wish list

Warning: This is not an official wish list. Before implementing any one of these items, ask first in the ffmpeg-devel mailing-list.

See also