FFmpeg
|
#include <stdint.h>
#include <string.h>
#include <math.h>
#include "display.h"
#include "mathematics.h"
Go to the source code of this file.
Macros | |
#define | CONV_FP(x) ((double) (x)) / (1 << 16) |
#define | CONV_DB(x) (int32_t) ((x) * (1 << 16)) |
Functions | |
double | av_display_rotation_get (const int32_t matrix[9]) |
The display transformation matrix specifies an affine transformation that should be applied to video frames for correct presentation. | |
void | av_display_rotation_set (int32_t matrix[9], double angle) |
Initialize a transformation matrix describing a pure rotation by the specified angle (in degrees). | |
void | av_display_matrix_flip (int32_t matrix[9], int hflip, int vflip) |
Flip the input matrix horizontally and/or vertically. | |
#define CONV_FP | ( | x | ) | ((double) (x)) / (1 << 16) |
Definition at line 29 of file display.c.
Referenced by av_display_rotation_get().
#define CONV_DB | ( | x | ) | (int32_t) ((x) * (1 << 16)) |
Definition at line 32 of file display.c.
Referenced by av_display_rotation_set().
double av_display_rotation_get | ( | const int32_t | matrix[9] | ) |
The display transformation matrix specifies an affine transformation that should be applied to video frames for correct presentation.
It is compatible with the matrices stored in the ISO/IEC 14496-12 container format.
The data is a 3x3 matrix represented as a 9-element array:
| a b u |
(a, b, u, c, d, v, x, y, w) -> | c d v | | x y w |
All numbers are stored in native endianness, as 16.16 fixed-point values, except for u, v and w, which are stored as 2.30 fixed-point values.
The transformation maps a point (p, q) in the source (pre-transformation) frame to the point (p', q') in the destination (post-transformation) frame as follows: | a b u | (p, q, 1) . | c d v | = z * (p', q', 1) | x y w |
The transformation can also be more explicitly written in components as follows: p' = (a * p + c * q + x) / z; q' = (b * p + d * q + y) / z; z = u * p + v * q + w Extract the rotation component of the transformation matrix.
matrix | the transformation matrix |
Definition at line 34 of file display.c.
Referenced by dump_sidedata(), filter_frame(), and mov_read_tkhd().
Initialize a transformation matrix describing a pure rotation by the specified angle (in degrees).
matrix | an allocated transformation matrix (will be fully overwritten by this function) |
angle | rotation angle in degrees. |
Definition at line 50 of file display.c.
Referenced by decode_postinit(), and set_side_data().
Flip the input matrix horizontally and/or vertically.
matrix | an allocated transformation matrix |
hflip | whether the matrix should be flipped horizontally |
vflip | whether the matrix should be flipped vertically |
Definition at line 65 of file display.c.
Referenced by decode_postinit(), and set_side_data().