ffmpeg/doc
Stephen Seo 0ea20124b7 Add lensfun filter
Lensfun is a library that applies lens correction to an image using a
database of cameras/lenses (you provide the camera and lens models, and
it uses the corresponding database entry's parameters to apply lens
correction). It is licensed under LGPL3.

The lensfun filter utilizes the lensfun library to apply lens
correction to videos as well as images.

This filter was created out of necessity since I wanted to apply lens
correction to a video and the lenscorrection filter did not work for me.

While this filter requires little info from the user to apply lens
correction, the flaw is that lensfun is intended to be used on indvidual
images. When used on a video, the parameters such as focal length is
constant, so lens correction may fail on videos where the camera's focal
length changes (zooming in or out via zoom lens). To use this filter
correctly on videos where such parameters change, timeline editing may
be used since this filter supports it.

Note that valgrind shows a small memory leak which is not from this
filter but from the lensfun library (memory is allocated when loading
the lensfun database but it somehow isn't deallocated even during
cleanup; it is briefly created in the init function of the filter, and
destroyed before the init function returns). This may have been fixed by
the latest commit in the lensfun repository; the current latest release
of lensfun is almost 3 years ago.

Bi-Linear interpolation is used by default as lanczos interpolation
shows more artifacts in the corrected image in my tests.

The lanczos interpolation is derived from lenstool's implementation of
lanczos interpolation. Lenstool is an app within the lensfun repository
which is licensed under GPL3.

v2 of this patch fixes license notice in libavfilter/vf_lensfun.c

v3 of this patch fixes code style and dependency to gplv3 (thanks to
Paul B Mahol for pointing out the mentioned issues).

v4 of this patch fixes more code style issues that were missed in
v3.

v5 of this patch adds line breaks to some of the documentation in
doc/filters.texi (thanks to Gyan Doshi for pointing out the issue).

v6 of this patch fixes more problems (thanks to Moritz Barsnick for
pointing them out).

v7 of this patch fixes use of sqrt() (changed to sqrtf(); thanks to
Moritz Barsnick for pointing this out). Also should be rebased off of
latest master branch commits at this point.

Signed-off-by: Stephen Seo <seo.disparate@gmail.com>
2018-07-15 10:07:54 +02:00
..
doxy Merge commit '257f00ec1ab06a2a161f535036c6512f3fc8e801' 2016-06-22 11:28:51 +02:00
examples doc/examples: add missing ignore files 2018-05-16 00:39:52 +02:00
.gitignore Merge commit '257f00ec1ab06a2a161f535036c6512f3fc8e801' 2016-06-22 11:28:51 +02:00
APIchanges doc: remove AVStream private fields from APIchanges 2018-05-21 12:13:14 -07:00
Doxyfile doc: fix spelling errors 2016-10-21 23:58:47 +02:00
Makefile doc: Add mailing list FAQ 2017-10-03 15:25:07 -08:00
authors.texi
bitstream_filters.texi lavc: Add VP9 metadata bitstream filter 2018-05-02 01:21:40 +01:00
bootstrap.min.css
build_system.txt doc/build_system: Document how to build decoder fuzzer 2017-05-08 17:02:02 +02:00
codecs.texi doc/codecs: Remove option sc_factor. 2018-05-24 18:23:53 +02:00
decoders.texi avcodec/libzvbi-teletextdec: add support for selecting subtitle pages only 2018-06-10 23:48:23 +02:00
default.css
demuxers.texi avformat/mpegts: add merge_pmt_versions option 2018-05-18 19:00:29 -07:00
developer.texi doc/developer: update style guidelines to include for loops with declarations 2018-05-18 02:24:28 +01:00
devices.texi
doxy-wrapper.sh doc: make apidoc output independent of SRC_PATH 2016-01-02 12:11:36 +01:00
encoders.texi doc/encoders: list missing options for x265 2018-03-30 14:03:03 -08:00
errno.txt doc/errno: fix description typo for ENAMETOOLONG 2015-12-18 04:04:14 +01:00
faq.texi doc: Add FAQs about running in background (rev 2) 2017-11-22 18:13:49 +01:00
fate.texi fate: allow temp files for passed test to be kept 2018-07-10 10:12:38 +05:30
fate_config.sh.template Merge commit '35d1f726eb9fdd376ab900587fb02122b72f2b9a' 2017-05-05 09:27:18 +02:00
ffmpeg-bitstream-filters.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-codecs.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-devices.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-filters.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-formats.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-protocols.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-resampler.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-scaler.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg-utils.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffmpeg.texi ffmpeg: mark sseof as an input-only option 2018-06-09 00:37:03 +05:30
ffmpeg.txt
ffplay.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
ffprobe.texi doc: fix incorrect reference to xsd_compliant option 2018-05-12 12:09:20 -07:00
ffprobe.xsd ffprobe: Print color properties from show_frames 2017-07-21 20:19:07 +02:00
fftools-common-opts.texi avformat/utils: Stream specifier enhancement 2. 2018-04-13 21:44:28 +02:00
filter_design.txt doc: update filter_design.txt. 2017-09-12 11:03:51 +02:00
filters.texi Add lensfun filter 2018-07-15 10:07:54 +02:00
formats.texi doc/formats: get fflags values up-to-date 2018-06-14 17:28:45 +05:30
general.texi doc/general.texi: clarify FDK-AAC licensing & usability 2018-06-07 17:04:56 +05:30
git-howto.texi Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb' 2016-06-21 21:55:34 +02:00
indevs.texi doc/devices: order alphabetically and add missing v4l2 outdev 2018-06-13 11:21:12 -08:00
issue_tracker.txt Remove the ffserver program 2018-01-06 18:31:37 +00:00
lexicon doc: add a lexicon 2017-02-03 15:03:44 +01:00
libav-merge.txt doc/libav-merge: remove resolved item 2018-04-28 14:15:41 +02:00
libavcodec.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libavdevice.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libavfilter.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libavformat.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libavutil.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libswresample.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
libswscale.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
mailing-list-faq.texi Remove the ffserver program 2018-01-06 18:31:37 +00:00
metadata.texi doc: More semantic markup using @samp and @var where appropriate 2015-03-23 17:08:08 +01:00
mips.txt Edit documentation and versioning for the fixed point AAC decoder 2015-07-22 23:25:33 +02:00
multithreading.txt Merge commit 'def97856de6021965db86c25a732d78689bd6bb0' 2015-07-27 22:50:18 +02:00
muxers.texi avformat/movenc: creating producer reference time (PRFT) box 2018-05-29 09:32:11 +05:30
nut.texi Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb' 2016-06-21 21:55:34 +02:00
optimization.txt build: Prefer NASM assembler over YASM 2017-06-21 17:00:30 -03:00
outdevs.texi doc/devices: order alphabetically and add missing v4l2 outdev 2018-06-13 11:21:12 -08:00
patchwork doc/patchwork: Document the patchwork states 2016-10-26 19:46:00 +02:00
platform.texi configure: error out on unsupported MSVC versions 2018-05-18 02:22:57 +01:00
print_options.c Merge commit '2025d3787158ba272a1b8fbc0493fa20dd7a8484' 2017-03-29 15:20:10 +02:00
protocols.texi Merge commit 'a2fc8dbae85339d1b418d296f2982b6c04c53c57' 2018-03-29 21:56:19 -03:00
rate_distortion.txt
resampler.texi swresample/options: enable linear_interp and exact_rational by default 2017-03-17 00:08:03 +07:00
scaler.texi doc/scaler: mention default scaling algorithm 2017-01-09 12:58:25 -09:00
snow.txt fix some a/an typos 2016-03-28 14:13:17 -08:00
style.min.css
swresample.txt
swscale.txt cosmetics: Fix spelling mistakes 2016-05-04 18:16:21 +02:00
t2h.init doc/t2h: use container 2016-10-03 00:16:27 +01:00
t2h.pm doc/t2h: use container 2016-10-03 00:16:27 +01:00
tablegen.txt
texi2pod.pl doc: escape left brace in texi2pod.pl regex 2016-07-10 13:34:57 +02:00
texidep.pl
undefined.txt doc: Add initial documentation explaining undefined behavior and SUINT 2017-07-21 17:37:05 +02:00
utils.texi lavu,lavfi,ffmpeg: Remove experimental OpenCL API 2017-11-22 23:20:39 +00:00
writing_filters.txt lavfi: add new iteration API 2018-03-31 23:26:30 +01:00