FFmpeg
Display transformation matrix functions

file  display.h

## Functions

double av_display_rotation_get (const int32_t matrix[9])
Extract the rotation component of the transformation matrix. More...

void av_display_rotation_set (int32_t matrix[9], double angle)
Initialize a transformation matrix describing a pure clockwise rotation by the specified angle (in degrees). More...

void av_display_matrix_flip (int32_t matrix[9], int hflip, int vflip)
Flip the input matrix horizontally and/or vertically. More...

## Detailed Description

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

## ◆ av_display_rotation_get()

 double av_display_rotation_get ( const int32_t matrix[9] )

Extract the rotation component of the transformation matrix.

Parameters
 matrix the transformation matrix
Returns
the angle (in degrees) by which the transformation rotates the frame counterclockwise. The angle will be in range [-180.0, 180.0], or NaN if the matrix is singular.
Note
floating point numbers are inherently inexact, so callers are recommended to round the return value to nearest integer before use.

Definition at line 35 of file display.c.

Referenced by dump_sidedata(), filter_frame(), get_rotation(), main(), print_pkt_side_data(), and show_frame().

## ◆ av_display_rotation_set()

 void av_display_rotation_set ( int32_t matrix[9], double angle )

Initialize a transformation matrix describing a pure clockwise rotation by the specified angle (in degrees).

Parameters
 [out] matrix a transformation matrix (will be fully overwritten by this function) angle rotation angle in degrees.

Definition at line 51 of file display.c.

## ◆ av_display_matrix_flip()

 void av_display_matrix_flip ( int32_t matrix[9], int hflip, int vflip )

Flip the input matrix horizontally and/or vertically.

Parameters
 [in,out] matrix a transformation matrix hflip whether the matrix should be flipped horizontally vflip whether the matrix should be flipped vertically

Definition at line 66 of file display.c.