FFmpeg
Data Structures | Macros | Enumerations | Functions
hdr_dynamic_metadata.h File Reference
#include "frame.h"
#include "rational.h"

Go to the source code of this file.

Data Structures

struct  AVHDRPlusPercentile
 Represents the percentile at a specific percentage in a distribution. More...
 
struct  AVHDRPlusColorTransformParams
 Color transform parameters at a processing window in a dynamic metadata for SMPTE 2094-40. More...
 
struct  AVDynamicHDRPlus
 This struct represents dynamic metadata for color volume transform - application 4 of SMPTE 2094-40:2016 standard. More...
 

Macros

#define AV_HDR_PLUS_MAX_PAYLOAD_SIZE   907
 

Enumerations

enum  AVHDRPlusOverlapProcessOption { AV_HDR_PLUS_OVERLAP_PROCESS_WEIGHTED_AVERAGING = 0, AV_HDR_PLUS_OVERLAP_PROCESS_LAYERING = 1 }
 Option for overlapping elliptical pixel selectors in an image. More...
 

Functions

AVDynamicHDRPlusav_dynamic_hdr_plus_alloc (size_t *size)
 Allocate an AVDynamicHDRPlus structure and set its fields to default values. More...
 
AVDynamicHDRPlusav_dynamic_hdr_plus_create_side_data (AVFrame *frame)
 Allocate a complete AVDynamicHDRPlus and add it to the frame. More...
 
int av_dynamic_hdr_plus_from_t35 (AVDynamicHDRPlus *s, const uint8_t *data, size_t size)
 Parse the user data registered ITU-T T.35 to AVbuffer (AVDynamicHDRPlus). More...
 
int av_dynamic_hdr_plus_to_t35 (const AVDynamicHDRPlus *s, uint8_t **data, size_t *size)
 Serialize dynamic HDR10+ metadata to a user data registered ITU-T T.35 buffer, excluding the first 48 bytes of the header, and beginning with the application mode. More...
 

Macro Definition Documentation

◆ AV_HDR_PLUS_MAX_PAYLOAD_SIZE

#define AV_HDR_PLUS_MAX_PAYLOAD_SIZE   907

Definition at line 356 of file hdr_dynamic_metadata.h.

Enumeration Type Documentation

◆ AVHDRPlusOverlapProcessOption

Option for overlapping elliptical pixel selectors in an image.

Enumerator
AV_HDR_PLUS_OVERLAP_PROCESS_WEIGHTED_AVERAGING 
AV_HDR_PLUS_OVERLAP_PROCESS_LAYERING 

Definition at line 30 of file hdr_dynamic_metadata.h.

Function Documentation

◆ av_dynamic_hdr_plus_alloc()

AVDynamicHDRPlus* av_dynamic_hdr_plus_alloc ( size_t *  size)

Allocate an AVDynamicHDRPlus structure and set its fields to default values.

The resulting struct can be freed using av_freep().

Returns
An AVDynamicHDRPlus filled with default values or NULL on failure.

Definition at line 36 of file hdr_dynamic_metadata.c.

◆ av_dynamic_hdr_plus_create_side_data()

AVDynamicHDRPlus* av_dynamic_hdr_plus_create_side_data ( AVFrame frame)

Allocate a complete AVDynamicHDRPlus and add it to the frame.

Parameters
frameThe frame which side data is added to.
Returns
The AVDynamicHDRPlus structure to be filled by caller or NULL on failure.

Definition at line 48 of file hdr_dynamic_metadata.c.

Referenced by export_itut_t35(), and libdav1d_receive_frame().

◆ av_dynamic_hdr_plus_from_t35()

int av_dynamic_hdr_plus_from_t35 ( AVDynamicHDRPlus s,
const uint8_t *  data,
size_t  size 
)

Parse the user data registered ITU-T T.35 to AVbuffer (AVDynamicHDRPlus).

The T.35 buffer must begin with the application mode, skipping the country code, terminal provider codes, and application identifier.

Parameters
sA pointer containing the decoded AVDynamicHDRPlus structure.
dataThe byte array containing the raw ITU-T T.35 data.
sizeSize of the data array in bytes.
Returns
>= 0 on success. Otherwise, returns the appropriate AVERROR.

Definition at line 61 of file hdr_dynamic_metadata.c.

Referenced by export_itut_t35(), and libdav1d_receive_frame().

◆ av_dynamic_hdr_plus_to_t35()

int av_dynamic_hdr_plus_to_t35 ( const AVDynamicHDRPlus s,
uint8_t **  data,
size_t *  size 
)

Serialize dynamic HDR10+ metadata to a user data registered ITU-T T.35 buffer, excluding the first 48 bytes of the header, and beginning with the application mode.

Parameters
sA pointer containing the decoded AVDynamicHDRPlus structure.
data[in,out]A pointer to pointer to a byte buffer to be filled with the serialized metadata. If *data is NULL, a buffer be will be allocated and a pointer to it stored in its place. The caller assumes ownership of the buffer. May be NULL, in which case the function will only store the required buffer size in *size.
size[in,out]A pointer to a size to be set to the returned buffer's size. If *data is not NULL, *size must contain the size of the input buffer. May be NULL only if *data is NULL.
Returns
>= 0 on success. Otherwise, returns the appropriate AVERROR.

Buffer size per CTA-861-H p.253-254: 48 header bits (excluded from the serialized payload) 8 bits for application_mode 2 bits for num_windows 153 bits for window geometry, for each window above 1 27 bits for targeted_system_display_maximum_luminance 1-2511 bits for targeted system display peak luminance information 82-442 bits per window for pixel distribution information 1-2511 bits for mastering display peak luminance information 1-179 bits per window for tonemapping information 1-7 bits per window for color saturation mapping information Total: 123-7249 bits, excluding trimmed header bits

Definition at line 239 of file hdr_dynamic_metadata.c.

Referenced by mkv_write_block().