FFmpeg
|
transform input video More...
#include <stdint.h>
Go to the source code of this file.
Macros | |
#define | INTERPOLATE_DEFAULT INTERPOLATE_BILINEAR |
#define | INTERPOLATE_FAST INTERPOLATE_NEAREST |
#define | INTERPOLATE_BEST INTERPOLATE_BIQUADRATIC |
#define | FILL_DEFAULT FILL_ORIGINAL |
Enumerations | |
enum | InterpolateMethod { INTERPOLATE_NEAREST, INTERPOLATE_BILINEAR, INTERPOLATE_BIQUADRATIC, INTERPOLATE_COUNT } |
enum | FillMethod { FILL_BLANK, FILL_ORIGINAL, FILL_CLAMP, FILL_MIRROR, FILL_COUNT } |
Functions | |
void | avfilter_get_matrix (float x_shift, float y_shift, float angle, float zoom, float *matrix) |
Get an affine transformation matrix from a given translation, rotation, and zoom factor. | |
void | avfilter_add_matrix (const float *m1, const float *m2, float *result) |
Add two matrices together. | |
void | avfilter_sub_matrix (const float *m1, const float *m2, float *result) |
Subtract one matrix from another. | |
void | avfilter_mul_matrix (const float *m1, float scalar, float *result) |
Multiply a matrix by a scalar value. | |
int | avfilter_transform (const uint8_t *src, uint8_t *dst, int src_stride, int dst_stride, int width, int height, const float *matrix, enum InterpolateMethod interpolate, enum FillMethod fill) |
Do an affine transformation with the given interpolation method. | |
transform input video
All matrices are defined as a single 9-item block of contiguous memory. For example, the identity matrix would be:
float *matrix = {1, 0, 0, 0, 1, 0, 0, 0, 1};
Definition in file transform.h.
#define INTERPOLATE_DEFAULT INTERPOLATE_BILINEAR |
Definition at line 47 of file transform.h.
#define INTERPOLATE_FAST INTERPOLATE_NEAREST |
Definition at line 48 of file transform.h.
#define INTERPOLATE_BEST INTERPOLATE_BIQUADRATIC |
Definition at line 49 of file transform.h.
#define FILL_DEFAULT FILL_ORIGINAL |
Definition at line 60 of file transform.h.
enum InterpolateMethod |
Definition at line 39 of file transform.h.
enum FillMethod |
Definition at line 51 of file transform.h.
void avfilter_get_matrix | ( | float | x_shift, |
float | y_shift, | ||
float | angle, | ||
float | zoom, | ||
float * | matrix | ||
) |
Get an affine transformation matrix from a given translation, rotation, and zoom factor.
The matrix will look like:
[ zoom * cos(angle), -sin(angle), x_shift, sin(angle), zoom * cos(angle), y_shift, 0, 0, 1 ]
x_shift | horizontal translation |
y_shift | vertical translation |
angle | rotation in radians |
zoom | scale percent (1.0 = 100%) |
matrix | 9-item affine transformation matrix |
Definition at line 106 of file transform.c.
Referenced by filter_frame().
void avfilter_add_matrix | ( | const float * | m1, |
const float * | m2, | ||
float * | result | ||
) |
Add two matrices together.
result = m1 + m2.
m1 | 9-item transformation matrix |
m2 | 9-item transformation matrix |
result | 9-item transformation matrix |
Definition at line 118 of file transform.c.
void avfilter_sub_matrix | ( | const float * | m1, |
const float * | m2, | ||
float * | result | ||
) |
Subtract one matrix from another.
result = m1 - m2.
m1 | 9-item transformation matrix |
m2 | 9-item transformation matrix |
result | 9-item transformation matrix |
Definition at line 125 of file transform.c.
void avfilter_mul_matrix | ( | const float * | m1, |
float | scalar, | ||
float * | result | ||
) |
Multiply a matrix by a scalar value.
result = m1 * scalar.
m1 | 9-item transformation matrix |
scalar | a number |
result | 9-item transformation matrix |
Definition at line 132 of file transform.c.
int avfilter_transform | ( | const uint8_t * | src, |
uint8_t * | dst, | ||
int | src_stride, | ||
int | dst_stride, | ||
int | width, | ||
int | height, | ||
const float * | matrix, | ||
enum InterpolateMethod | interpolate, | ||
enum FillMethod | fill | ||
) |
Do an affine transformation with the given interpolation method.
This multiplies each vector [x,y,1] by the matrix and then interpolates to get the final value.
src | source image |
dst | destination image |
src_stride | source image line size in bytes |
dst_stride | destination image line size in bytes |
width | image width in pixels |
height | image height in pixels |
matrix | 9-item affine transformation matrix |
interpolate | pixel interpolation method |
fill | edge fill method |
Definition at line 149 of file transform.c.
Referenced by filter_frame().