• Stephen Seo's avatar
    Add lensfun filter · 0ea20124
    Stephen Seo authored
    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: 's avatarStephen Seo <seo.disparate@gmail.com>
    0ea20124
configure 238 KB