libavfilter/transform.c File Reference

transform input video More...

#include "libavutil/common.h"
#include "libavutil/avassert.h"
#include "transform.h"

Go to the source code of this file.

Defines

#define INTERPOLATE_METHOD(name)
#define PIXEL(img, x, y, w, h, stride, def)

Functions

 INTERPOLATE_METHOD (interpolate_nearest)
 Nearest neighbor interpolation.
 INTERPOLATE_METHOD (interpolate_bilinear)
 Bilinear interpolation.
 INTERPOLATE_METHOD (interpolate_biquadratic)
 Biquadratic interpolation.
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.
static int mirror (int v, int m)
void 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.


Detailed Description

transform input video

Definition in file transform.c.


Define Documentation

#define INTERPOLATE_METHOD ( name   ) 

Value:

static uint8_t name(float x, float y, const uint8_t *src, \
                        int width, int height, int stride, uint8_t def)

Definition at line 32 of file transform.c.

#define PIXEL ( img,
x,
y,
w,
h,
stride,
def   ) 

Value:

((x) < 0 || (y) < 0) ? (def) : \
    (((x) >= (w) || (y) >= (h)) ? (def) : \
    img[(x) + (y) * (stride)])

Definition at line 36 of file transform.c.

Referenced by INTERPOLATE_METHOD().


Function Documentation

void avfilter_add_matrix ( const float *  m1,
const float *  m2,
float *  result 
)

Add two matrices together.

result = m1 + m2.

Parameters:
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_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 ]

Parameters:
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 end_frame().

void avfilter_mul_matrix ( const float *  m1,
float  scalar,
float *  result 
)

Multiply a matrix by a scalar value.

result = m1 * scalar.

Parameters:
m1 9-item transformation matrix
scalar a number
result 9-item transformation matrix

Definition at line 132 of file transform.c.

void avfilter_sub_matrix ( const float *  m1,
const float *  m2,
float *  result 
)

Subtract one matrix from another.

result = m1 - m2.

Parameters:
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_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.

Parameters:
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 end_frame().

INTERPOLATE_METHOD ( interpolate_biquadratic   ) 

Biquadratic interpolation.

Definition at line 79 of file transform.c.

INTERPOLATE_METHOD ( interpolate_bilinear   ) 

Bilinear interpolation.

Definition at line 52 of file transform.c.

INTERPOLATE_METHOD ( interpolate_nearest   ) 

Nearest neighbor interpolation.

Definition at line 44 of file transform.c.

static int mirror ( int  v,
int  m 
) [inline, static]

Definition at line 139 of file transform.c.


Generated on Fri Oct 26 02:50:10 2012 for FFmpeg by  doxygen 1.5.8