Rework bulge mapping function to give more predictable results.
Now the bulge is done dividing by a scale factor that smoothsteps from
"zoom" at the center to 1.0 at "radius".
https://bugzilla.gnome.org/show_bug.cgi?id=625908
Make the "radius" property of CircleGeometricTransform relative.
This is more coherent with the way [x,y]-center properties are handled
and allow to set a radius without knowing the video size.
Radius is defined with respect to the circle circumscribed about the
video rectangle so that a point in the center has radius 0.0 and one in
a vertex has radius 1.0.
Note that this is not a regression from the previous absolute way of
defining the radius as a user who knows the video size can easily
calculate the relative radius and set that.
https://bugzilla.gnome.org/show_bug.cgi?id=625959
Ports gleffects "fisheye" filter to geometrictransform.
Fake fisheye lens filter. Somewhat empiric implementation because I
didn't find any good algorithm that does it with nice results.
https://bugzilla.gnome.org/show_bug.cgi?id=625722
Ports gleffects "mirror" filter to geometrictransform.
Simple yet effective mirror effect, splits the image into halves and
reflect the first into the second.
https://bugzilla.gnome.org/show_bug.cgi?id=625722
Ports gleffects "square" filter to geometrictransform.
Maps a region around the center into a zoomed square and smoothly get
back to normal zoom. With faces it makes a funny "cube-face" effect.
https://bugzilla.gnome.org/show_bug.cgi?id=625722
Ports gleffects "stretch" filter to geometrictransform.
Shrinks the image around the center and gradually return to normal zoom
creating funny caricatures.
https://bugzilla.gnome.org/show_bug.cgi?id=625722
Use explicit format macros from gstvideo to avoid exposing
unsupported formats on template pads. Using the macros
also give us complete caps (width/height/framerate).
And add support for AYUV.
Fixes#620717
Adds a prepare function to make subclasses precalculate values
that will be used throughout the mapping functions.
Also adds a missing cleanup to fix a memleak
Renames some variables and adds a minimum doc to the
mapping function for a little clarity.
Also uses gstvideo functions for the row and pixel strides
instead of hardcoded values
Adds a new plugin that has elements that perform geometric
transformations to images. By geometric transformations I mean
that the operations are functions that given the output pixel
position, get the pixel position in the input image. This pixel
is then copied from input to output.
The gstgeometrictransform baseclass makes it easy to write
such elements. It boils down to write the mapping function
and exposing properties
Already added the first of the elements, 'pinch'. It's a common
effect in image editors, like gimp (distort -> pinch)