Libavfilter: Difference between revisions
Gamester17 (talk | contribs) No edit summary |
Rogerdpack (talk | contribs) |
||
(17 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
==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 [http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-December/002283.html]) | |||
== | * 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 the [http://svn.mplayerhq.hu/soc/libavfilter/TODO?view=co TODO file] in SoC SVN tree | ||
*Create a SDK (Software Development Kit) with templates for the A/V filter APIs | *Create a SDK (Software Development Kit) with templates for the A/V filter APIs | ||
*Add support for audio filters | |||
** See [[FFmpeg audio API]] | |||
*Add support for subtitle filters | |||
** Add a subtitle drawing support to simplify ffplay.c | |||
* Create (or port) additional pre-process and post-process video filters to FFmpeg: | * Create (or port) additional pre-process and post-process video filters to FFmpeg: | ||
** General post-proc sources are [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] | ** General post-proc sources are [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], vhook | ||
**More [http://en.wikipedia.org/wiki/Image_scaling image scaling] methods: | **More [http://en.wikipedia.org/wiki/Image_scaling image scaling] methods: | ||
***[http://en.wikipedia.org/wiki/Linear_interpolation linear interpolation] | ***[http://en.wikipedia.org/wiki/Linear_interpolation linear interpolation] | ||
Line 23: | Line 24: | ||
***[http://en.wikipedia.org/wiki/Bicubic_interpolation bicubic interpolation] | ***[http://en.wikipedia.org/wiki/Bicubic_interpolation bicubic interpolation] | ||
***[http://en.wikipedia.org/wiki/Trilinear_interpolation trilinear interpolation] | ***[http://en.wikipedia.org/wiki/Trilinear_interpolation trilinear interpolation] | ||
** SSP (Statistical Post-Processing) | ** SSP (Statistical Post-Processing) | ||
** DeBlocking | ** DeBlocking | ||
Line 37: | 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 | ||
== See also == | == See also == | ||
* [[FFmpeg filter howto]] | * [[FFmpeg filter howto]] | ||
* [[FFmpeg audio API]] | * [[FFmpeg audio API]] | ||
* [http://ffmpeg.org/trac/ffmpeg/wiki/FilteringGuide FFmpeg filtering Guide] | |||
[[Category:FFmpeg]] | [[Category:FFmpeg]] |
Latest revision as of 17:13, 15 July 2012
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 the TODO file in SoC SVN tree
- Create a SDK (Software Development Kit) with templates for the A/V filter APIs
- Add support for audio filters
- See FFmpeg audio API
- Add support for subtitle filters
- Add a subtitle drawing support to simplify ffplay.c
- Create (or port) additional pre-process and post-process video filters to FFmpeg:
- General post-proc sources are MPlayer (libmpcodecs vf_*.c filters), Xine, FFdshow, VLC, VirtualDub, GStreamer, foobar, and XMMS, vhook
- More image scaling methods:
- SSP (Statistical Post-Processing)
- DeBlocking
- DeRinging
- IVTC
- Sharpen / UnSharpen (Soften)
- ReQuantization
- Auto-Luminance
- Blurring / DeNoising / Spatial Blur / Temporal Blur
- Deinterlace (weave AND bob) filters
- 2:3 pull-down / ivtc (inverse telecine) for 24 progressive-frames on 30 FPS TV's
- NTSC => PAL, and PAL => NTSC frame-rate (FPS) adjust and reclock filter for NTSC <=> PAL conversion