Loading...
Searching...
No Matches
Display transformation matrix functions
libavutil » Video related

The display transformation matrix specifies an affine transformation that should be applied to video frames for correct presentation. More...

## Files

file | display.h
| Display matrix.

## Functions

double | av_display_rotation_get (const int32_t matrix[9])
| Extract the rotation component of the transformation matrix.
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).
void | av_display_matrix_flip (int32_t matrix[9], int hflip, int vflip)
| Flip the input matrix horizontally and/or vertically.

## 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

## Function Documentation

## 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.

## 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.

## 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