FFmpeg
dovi_meta.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Vacing Fang <vacingfang@tencent.com>
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 /**
22  * @file
23  * DOVI configuration
24  */
25 
26 
27 #ifndef AVUTIL_DOVI_META_H
28 #define AVUTIL_DOVI_META_H
29 
30 #include <stdint.h>
31 #include <stddef.h>
32 
33 #include "rational.h"
34 #include "csp.h"
35 
36 /*
37  * DOVI configuration
38  * ref: dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2
39  dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2
40  * @code
41  * uint8_t dv_version_major, the major version number that the stream complies with
42  * uint8_t dv_version_minor, the minor version number that the stream complies with
43  * uint8_t dv_profile, the Dolby Vision profile
44  * uint8_t dv_level, the Dolby Vision level
45  * uint8_t rpu_present_flag
46  * uint8_t el_present_flag
47  * uint8_t bl_present_flag
48  * uint8_t dv_bl_signal_compatibility_id
49  * @endcode
50  *
51  * @note The struct must be allocated with av_dovi_alloc() and
52  * its size is not a part of the public ABI.
53  */
57  uint8_t dv_profile;
58  uint8_t dv_level;
60  uint8_t el_present_flag;
61  uint8_t bl_present_flag;
64 
65 /**
66  * Allocate a AVDOVIDecoderConfigurationRecord structure and initialize its
67  * fields to default values.
68  *
69  * @return the newly allocated struct or NULL on failure
70  */
72 
73 /**
74  * Dolby Vision RPU data header.
75  *
76  * @note sizeof(AVDOVIRpuDataHeader) is not part of the public ABI.
77  */
78 typedef struct AVDOVIRpuDataHeader {
79  uint8_t rpu_type;
80  uint16_t rpu_format;
81  uint8_t vdr_rpu_profile;
82  uint8_t vdr_rpu_level;
84  uint8_t coef_data_type; /* informative, lavc always converts to fixed */
85  uint8_t coef_log2_denom;
88  uint8_t bl_bit_depth; /* [8, 16] */
89  uint8_t el_bit_depth; /* [8, 16] */
90  uint8_t vdr_bit_depth; /* [8, 16] */
95 
99 };
100 
101 /**
102  * Coefficients of a piece-wise function. The pieces of the function span the
103  * value ranges between two adjacent pivot values.
104  */
105 #define AV_DOVI_MAX_PIECES 8
106 typedef struct AVDOVIReshapingCurve {
107  uint8_t num_pivots; /* [2, 9] */
108  uint16_t pivots[AV_DOVI_MAX_PIECES + 1]; /* sorted ascending */
110  /* AV_DOVI_MAPPING_POLYNOMIAL */
111  uint8_t poly_order[AV_DOVI_MAX_PIECES]; /* [1, 2] */
112  int64_t poly_coef[AV_DOVI_MAX_PIECES][3]; /* x^0, x^1, x^2 */
113  /* AV_DOVI_MAPPING_MMR */
114  uint8_t mmr_order[AV_DOVI_MAX_PIECES]; /* [1, 3] */
116  int64_t mmr_coef[AV_DOVI_MAX_PIECES][3/* order - 1 */][7];
118 
122 };
123 
124 /**
125  * Coefficients of the non-linear inverse quantization. For the interpretation
126  * of these, see ETSI GS CCM 001.
127  */
128 typedef struct AVDOVINLQParams {
129  uint16_t nlq_offset;
130  uint64_t vdr_in_max;
131  /* AV_DOVI_NLQ_LINEAR_DZ */
135 
136 /**
137  * Dolby Vision RPU data mapping parameters.
138  *
139  * @note sizeof(AVDOVIDataMapping) is not part of the public ABI.
140  */
141 typedef struct AVDOVIDataMapping {
142  uint8_t vdr_rpu_id;
145  AVDOVIReshapingCurve curves[3]; /* per component */
146 
147  /* Non-linear inverse quantization */
151  AVDOVINLQParams nlq[3]; /* per component */
152  uint16_t nlq_pivots[2];
154 
155 /**
156  * Dolby Vision RPU colorspace metadata parameters.
157  *
158  * @note sizeof(AVDOVIColorMetadata) is not part of the public ABI.
159  */
160 typedef struct AVDOVIColorMetadata {
161  uint8_t dm_metadata_id;
163 
164  /**
165  * Coefficients of the custom Dolby Vision IPT-PQ matrices. These are to be
166  * used instead of the matrices indicated by the frame's colorspace tags.
167  * The output of rgb_to_lms_matrix is to be fed into a BT.2020 LMS->RGB
168  * matrix based on a Hunt-Pointer-Estevez transform, but without any
169  * crosstalk. (See the definition of the ICtCp colorspace for more
170  * information.)
171  */
172  AVRational ycc_to_rgb_matrix[9]; /* before PQ linearization */
173  AVRational ycc_to_rgb_offset[3]; /* input offset of neutral value */
174  AVRational rgb_to_lms_matrix[9]; /* after PQ linearization */
175 
176  /**
177  * Extra signal metadata (see Dolby patents for more info).
178  */
179  uint16_t signal_eotf;
186  uint8_t signal_full_range_flag; /* [0, 3] */
187  uint16_t source_min_pq;
188  uint16_t source_max_pq;
189  uint16_t source_diagonal;
191 
192 typedef struct AVDOVIDmLevel1 {
193  /* Per-frame brightness metadata */
194  uint16_t min_pq;
195  uint16_t max_pq;
196  uint16_t avg_pq;
198 
199 typedef struct AVDOVIDmLevel2 {
200  /* Usually derived from level 8 (at different levels) */
201  uint16_t target_max_pq;
202  uint16_t trim_slope;
203  uint16_t trim_offset;
204  uint16_t trim_power;
207  int16_t ms_weight;
209 
210 typedef struct AVDOVIDmLevel3 {
211  uint16_t min_pq_offset;
212  uint16_t max_pq_offset;
213  uint16_t avg_pq_offset;
215 
216 typedef struct AVDOVIDmLevel4 {
217  uint16_t anchor_pq;
218  uint16_t anchor_power;
220 
221 typedef struct AVDOVIDmLevel5 {
222  /* Active area definition */
223  uint16_t left_offset;
224  uint16_t right_offset;
225  uint16_t top_offset;
226  uint16_t bottom_offset;
228 
229 typedef struct AVDOVIDmLevel6 {
230  /* Static HDR10 metadata */
231  uint16_t max_luminance;
232  uint16_t min_luminance;
233  uint16_t max_cll;
234  uint16_t max_fall;
236 
237 typedef struct AVDOVIDmLevel8 {
238  /* Extended version of level 2 */
240  uint16_t trim_slope;
241  uint16_t trim_offset;
242  uint16_t trim_power;
245  uint16_t ms_weight;
247  uint16_t clip_trim;
249  uint8_t hue_vector_field[6];
251 
252 typedef struct AVDOVIDmLevel9 {
253  /* Source display characteristics */
257 
258 typedef struct AVDOVIDmLevel10 {
259  /* Target display characteristics */
261  uint16_t target_max_pq;
262  uint16_t target_min_pq;
266 
267 typedef struct AVDOVIDmLevel11 {
268  uint8_t content_type;
269  uint8_t whitepoint;
271  uint8_t sharpness;
275  uint8_t brightness;
276  uint8_t color;
278 
279 typedef struct AVDOVIDmLevel254 {
280  /* DMv2 info block, always present in samples with DMv2 metadata */
281  uint8_t dm_mode;
284 
285 typedef struct AVDOVIDmLevel255 {
286  /* Debug block, not really used in samples */
287  uint8_t dm_run_mode;
288  uint8_t dm_run_version;
289  uint8_t dm_debug[4];
291 
292 /**
293  * Dolby Vision metadata extension block.
294  *
295  * @note sizeof(AVDOVIDmData) is not part of the public API.
296  */
297 typedef struct AVDOVIDmData {
298  uint8_t level; /* [1, 255] */
299  union {
301  AVDOVIDmLevel2 l2; /* may appear multiple times */
306  /* level 7 is currently unused */
307  AVDOVIDmLevel8 l8; /* may appear multiple times */
309  AVDOVIDmLevel10 l10; /* may appear multiple times */
313  };
314 } AVDOVIDmData;
315 
316 /**
317  * Combined struct representing a combination of header, mapping and color
318  * metadata, for attaching to frames as side data.
319  *
320  * @note The struct must be allocated with av_dovi_metadata_alloc() and
321  * its size is not a part of the public ABI.
322  */
323 
324 typedef struct AVDOVIMetadata {
325  /**
326  * Offset in bytes from the beginning of this structure at which the
327  * respective structs start.
328  */
329  size_t header_offset; /* AVDOVIRpuDataHeader */
330  size_t mapping_offset; /* AVDOVIDataMapping */
331  size_t color_offset; /* AVDOVIColorMetadata */
332 
333  size_t ext_block_offset; /* offset to start of ext blocks array */
334  size_t ext_block_size; /* size per element */
335  int num_ext_blocks; /* number of extension blocks */
336 
337  /* static limit on num_ext_blocks, derived from bitstream limitations */
338 #define AV_DOVI_MAX_EXT_BLOCKS 32
340 
343 {
344  return (AVDOVIRpuDataHeader *)((uint8_t *) data + data->header_offset);
345 }
346 
349 {
350  return (AVDOVIDataMapping *)((uint8_t *) data + data->mapping_offset);
351 }
352 
355 {
356  return (AVDOVIColorMetadata *)((uint8_t *) data + data->color_offset);
357 }
358 
361 {
362  return (AVDOVIDmData *)((uint8_t *) data + data->ext_block_offset +
363  data->ext_block_size * index);
364 }
365 
366 /**
367  * Find an extension block with a given level, or NULL. In the case of
368  * multiple extension blocks, only the first is returned.
369  */
371 
372 /**
373  * Allocate an AVDOVIMetadata structure and initialize its
374  * fields to default values.
375  *
376  * @param size If this parameter is non-NULL, the size in bytes of the
377  * allocated struct will be written here on success
378  *
379  * @return the newly allocated struct or NULL on failure
380  */
382 
383 #endif /* AVUTIL_DOVI_META_H */
av_dovi_metadata_alloc
AVDOVIMetadata * av_dovi_metadata_alloc(size_t *size)
Allocate an AVDOVIMetadata structure and initialize its fields to default values.
Definition: dovi_meta.c:47
AVDOVINLQMethod
AVDOVINLQMethod
Definition: dovi_meta.h:119
AVDOVIDmLevel254
Definition: dovi_meta.h:279
AVDOVIDataMapping::nlq_method_idc
enum AVDOVINLQMethod nlq_method_idc
Definition: dovi_meta.h:148
AVDOVIDmLevel2::trim_chroma_weight
uint16_t trim_chroma_weight
Definition: dovi_meta.h:205
level
uint8_t level
Definition: svq3.c:205
AVDOVIDmLevel8::trim_power
uint16_t trim_power
Definition: dovi_meta.h:242
AVDOVIDmLevel8::saturation_vector_field
uint8_t saturation_vector_field[6]
Definition: dovi_meta.h:248
AVDOVIDmLevel8::trim_offset
uint16_t trim_offset
Definition: dovi_meta.h:241
AVColorPrimariesDesc
Struct that contains both white point location and primaries location, providing the complete descrip...
Definition: csp.h:78
rational.h
AVDOVIMetadata::ext_block_offset
size_t ext_block_offset
Definition: dovi_meta.h:333
AVDOVIDmLevel9::source_display_primaries
AVColorPrimariesDesc source_display_primaries
Definition: dovi_meta.h:255
AVDOVIDmLevel8::trim_saturation_gain
uint16_t trim_saturation_gain
Definition: dovi_meta.h:244
AVDOVIDmLevel5::top_offset
uint16_t top_offset
Definition: dovi_meta.h:225
AVDOVIDmLevel11::frame_rate_conversion
uint8_t frame_rate_conversion
Definition: dovi_meta.h:274
av_dovi_get_ext
static av_always_inline AVDOVIDmData * av_dovi_get_ext(const AVDOVIMetadata *data, int index)
Definition: dovi_meta.h:360
AVDOVIReshapingCurve::mmr_coef
int64_t mmr_coef[AV_DOVI_MAX_PIECES][3][7]
Definition: dovi_meta.h:116
AVDOVIMappingMethod
AVDOVIMappingMethod
Definition: dovi_meta.h:96
AVDOVIDmLevel10::target_primary_index
uint8_t target_primary_index
Definition: dovi_meta.h:263
AVDOVIDmLevel4
Definition: dovi_meta.h:216
AVDOVIDmLevel10
Definition: dovi_meta.h:258
data
const char data[16]
Definition: mxf.c:148
AV_DOVI_NLQ_NONE
@ AV_DOVI_NLQ_NONE
Definition: dovi_meta.h:120
AVDOVIDmLevel8::ms_weight
uint16_t ms_weight
Definition: dovi_meta.h:245
AVDOVIReshapingCurve::mapping_idc
enum AVDOVIMappingMethod mapping_idc[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:109
AVDOVIDmLevel6::min_luminance
uint16_t min_luminance
Definition: dovi_meta.h:232
AVDOVIDmLevel10::target_display_index
uint8_t target_display_index
Definition: dovi_meta.h:260
AVDOVIDmLevel1::max_pq
uint16_t max_pq
Definition: dovi_meta.h:195
AVDOVIDmData::l11
AVDOVIDmLevel11 l11
Definition: dovi_meta.h:310
AVDOVIRpuDataHeader::rpu_format
uint16_t rpu_format
Definition: dovi_meta.h:80
AVDOVIDataMapping::mapping_color_space
uint8_t mapping_color_space
Definition: dovi_meta.h:143
AVDOVIRpuDataHeader
Dolby Vision RPU data header.
Definition: dovi_meta.h:78
AVDOVIDmLevel8::hue_vector_field
uint8_t hue_vector_field[6]
Definition: dovi_meta.h:249
AVDOVIRpuDataHeader::coef_data_type
uint8_t coef_data_type
Definition: dovi_meta.h:84
AVDOVIDmLevel11::color
uint8_t color
Definition: dovi_meta.h:276
AVDOVIMetadata::ext_block_size
size_t ext_block_size
Definition: dovi_meta.h:334
AVDOVIDmLevel11::reference_mode_flag
uint8_t reference_mode_flag
Definition: dovi_meta.h:270
AVDOVIDmLevel255
Definition: dovi_meta.h:285
AVDOVIDmLevel11::brightness
uint8_t brightness
Definition: dovi_meta.h:275
AVDOVIRpuDataHeader::el_bit_depth
uint8_t el_bit_depth
Definition: dovi_meta.h:89
av_dovi_find_level
AVDOVIDmData * av_dovi_find_level(const AVDOVIMetadata *data, uint8_t level)
Find an extension block with a given level, or NULL.
Definition: dovi_meta.c:67
AVDOVIColorMetadata::signal_eotf_param0
uint16_t signal_eotf_param0
Definition: dovi_meta.h:180
AVDOVIDmLevel2::trim_power
uint16_t trim_power
Definition: dovi_meta.h:204
AVDOVIDmLevel8
Definition: dovi_meta.h:237
AVDOVIDmLevel2::trim_slope
uint16_t trim_slope
Definition: dovi_meta.h:202
AVDOVIColorMetadata::ycc_to_rgb_offset
AVRational ycc_to_rgb_offset[3]
Definition: dovi_meta.h:173
AVDOVIDmLevel2::ms_weight
int16_t ms_weight
Definition: dovi_meta.h:207
AVDOVIRpuDataHeader::vdr_rpu_normalized_idc
uint8_t vdr_rpu_normalized_idc
Definition: dovi_meta.h:86
AVDOVIRpuDataHeader::el_spatial_resampling_filter_flag
uint8_t el_spatial_resampling_filter_flag
Definition: dovi_meta.h:92
AVDOVIDmLevel8::clip_trim
uint16_t clip_trim
Definition: dovi_meta.h:247
AVDOVIDmLevel3::avg_pq_offset
uint16_t avg_pq_offset
Definition: dovi_meta.h:213
AVDOVIColorMetadata::dm_metadata_id
uint8_t dm_metadata_id
Definition: dovi_meta.h:161
AVDOVIDmData
Dolby Vision metadata extension block.
Definition: dovi_meta.h:297
AVDOVIRpuDataHeader::chroma_resampling_explicit_filter_flag
uint8_t chroma_resampling_explicit_filter_flag
Definition: dovi_meta.h:83
AVDOVIDmLevel6::max_cll
uint16_t max_cll
Definition: dovi_meta.h:233
AVDOVIRpuDataHeader::vdr_bit_depth
uint8_t vdr_bit_depth
Definition: dovi_meta.h:90
AVDOVIRpuDataHeader::rpu_type
uint8_t rpu_type
Definition: dovi_meta.h:79
AVDOVIMetadata
Combined struct representing a combination of header, mapping and color metadata, for attaching to fr...
Definition: dovi_meta.h:324
AVDOVIDmLevel8::trim_slope
uint16_t trim_slope
Definition: dovi_meta.h:240
AVDOVIDmLevel4::anchor_power
uint16_t anchor_power
Definition: dovi_meta.h:218
AVDOVIReshapingCurve::mmr_order
uint8_t mmr_order[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:114
AVDOVIDmData::l3
AVDOVIDmLevel3 l3
Definition: dovi_meta.h:302
AVDOVIDmLevel1
Definition: dovi_meta.h:192
AVDOVIDmLevel11::noise_reduction
uint8_t noise_reduction
Definition: dovi_meta.h:272
AVDOVIRpuDataHeader::spatial_resampling_filter_flag
uint8_t spatial_resampling_filter_flag
Definition: dovi_meta.h:91
AVDOVIDmLevel10::target_min_pq
uint16_t target_min_pq
Definition: dovi_meta.h:262
AVDOVIDecoderConfigurationRecord::dv_profile
uint8_t dv_profile
Definition: dovi_meta.h:57
AV_DOVI_MAPPING_POLYNOMIAL
@ AV_DOVI_MAPPING_POLYNOMIAL
Definition: dovi_meta.h:97
AVDOVIDecoderConfigurationRecord::dv_version_major
uint8_t dv_version_major
Definition: dovi_meta.h:55
av_dovi_get_header
static av_always_inline AVDOVIRpuDataHeader * av_dovi_get_header(const AVDOVIMetadata *data)
Definition: dovi_meta.h:342
AVDOVIReshapingCurve::poly_order
uint8_t poly_order[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:111
AVDOVINLQParams::linear_deadzone_threshold
uint64_t linear_deadzone_threshold
Definition: dovi_meta.h:133
AVDOVIDmLevel8::target_mid_contrast
uint16_t target_mid_contrast
Definition: dovi_meta.h:246
AVDOVIColorMetadata::signal_eotf_param2
uint32_t signal_eotf_param2
Definition: dovi_meta.h:182
AVDOVIDecoderConfigurationRecord::dv_level
uint8_t dv_level
Definition: dovi_meta.h:58
AVDOVIDecoderConfigurationRecord::dv_bl_signal_compatibility_id
uint8_t dv_bl_signal_compatibility_id
Definition: dovi_meta.h:62
AVDOVIColorMetadata::signal_bit_depth
uint8_t signal_bit_depth
Definition: dovi_meta.h:183
AV_DOVI_MAPPING_MMR
@ AV_DOVI_MAPPING_MMR
Definition: dovi_meta.h:98
AVDOVIDmLevel5::bottom_offset
uint16_t bottom_offset
Definition: dovi_meta.h:226
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVDOVIDmData::l9
AVDOVIDmLevel9 l9
Definition: dovi_meta.h:308
AVDOVIDmLevel5
Definition: dovi_meta.h:221
AVDOVIColorMetadata::signal_eotf
uint16_t signal_eotf
Extra signal metadata (see Dolby patents for more info).
Definition: dovi_meta.h:179
AVDOVIDmLevel4::anchor_pq
uint16_t anchor_pq
Definition: dovi_meta.h:217
AVDOVIMetadata::header_offset
size_t header_offset
Offset in bytes from the beginning of this structure at which the respective structs start.
Definition: dovi_meta.h:329
AVDOVIReshapingCurve::mmr_constant
int64_t mmr_constant[AV_DOVI_MAX_PIECES]
Definition: dovi_meta.h:115
AVDOVIDmLevel9::source_primary_index
uint8_t source_primary_index
Definition: dovi_meta.h:254
index
int index
Definition: gxfenc.c:90
AVDOVIDmLevel2::target_max_pq
uint16_t target_max_pq
Definition: dovi_meta.h:201
AVDOVIDmLevel6::max_luminance
uint16_t max_luminance
Definition: dovi_meta.h:231
AVDOVIDmData::l2
AVDOVIDmLevel2 l2
Definition: dovi_meta.h:301
AVDOVIDataMapping::nlq_pivots
uint16_t nlq_pivots[2]
Definition: dovi_meta.h:152
AVDOVIDmLevel6::max_fall
uint16_t max_fall
Definition: dovi_meta.h:234
AVDOVIColorMetadata::scene_refresh_flag
uint8_t scene_refresh_flag
Definition: dovi_meta.h:162
AVDOVIDmLevel8::target_display_index
uint8_t target_display_index
Definition: dovi_meta.h:239
AVDOVIDmData::l254
AVDOVIDmLevel254 l254
Definition: dovi_meta.h:311
AVDOVIDmLevel2
Definition: dovi_meta.h:199
AVDOVIDmLevel10::target_display_primaries
AVColorPrimariesDesc target_display_primaries
Definition: dovi_meta.h:264
AV_DOVI_NLQ_LINEAR_DZ
@ AV_DOVI_NLQ_LINEAR_DZ
Definition: dovi_meta.h:121
AVDOVIRpuDataHeader::vdr_rpu_profile
uint8_t vdr_rpu_profile
Definition: dovi_meta.h:81
AVDOVIDmLevel2::trim_saturation_gain
uint16_t trim_saturation_gain
Definition: dovi_meta.h:206
size
int size
Definition: twinvq_data.h:10344
AVDOVIDmLevel8::trim_chroma_weight
uint16_t trim_chroma_weight
Definition: dovi_meta.h:243
AVDOVIMetadata::mapping_offset
size_t mapping_offset
Definition: dovi_meta.h:330
AVDOVIDmLevel255::dm_run_mode
uint8_t dm_run_mode
Definition: dovi_meta.h:287
AVDOVIDmLevel1::min_pq
uint16_t min_pq
Definition: dovi_meta.h:194
AVDOVIDmLevel11::content_type
uint8_t content_type
Definition: dovi_meta.h:268
AVDOVIDmData::l10
AVDOVIDmLevel10 l10
Definition: dovi_meta.h:309
AVDOVIRpuDataHeader::coef_log2_denom
uint8_t coef_log2_denom
Definition: dovi_meta.h:85
AVDOVIRpuDataHeader::bl_video_full_range_flag
uint8_t bl_video_full_range_flag
Definition: dovi_meta.h:87
AVDOVIDmLevel9
Definition: dovi_meta.h:252
AVDOVIReshapingCurve::poly_coef
int64_t poly_coef[AV_DOVI_MAX_PIECES][3]
Definition: dovi_meta.h:112
csp.h
AVDOVIDmData::l255
AVDOVIDmLevel255 l255
Definition: dovi_meta.h:312
AVDOVIDmData::l8
AVDOVIDmLevel8 l8
Definition: dovi_meta.h:307
AVDOVIDmLevel2::trim_offset
uint16_t trim_offset
Definition: dovi_meta.h:203
AVDOVIDmLevel10::target_max_pq
uint16_t target_max_pq
Definition: dovi_meta.h:261
AVDOVIColorMetadata::source_min_pq
uint16_t source_min_pq
Definition: dovi_meta.h:187
AVDOVIDmLevel6
Definition: dovi_meta.h:229
av_dovi_alloc
AVDOVIDecoderConfigurationRecord * av_dovi_alloc(size_t *size)
Allocate a AVDOVIDecoderConfigurationRecord structure and initialize its fields to default values.
Definition: dovi_meta.c:26
AVDOVIMetadata::color_offset
size_t color_offset
Definition: dovi_meta.h:331
AVDOVIDataMapping::num_y_partitions
uint32_t num_y_partitions
Definition: dovi_meta.h:150
av_always_inline
#define av_always_inline
Definition: attributes.h:49
AVDOVINLQParams
Coefficients of the non-linear inverse quantization.
Definition: dovi_meta.h:128
AVDOVIDmData::l4
AVDOVIDmLevel4 l4
Definition: dovi_meta.h:303
AVDOVIDmData::l1
AVDOVIDmLevel1 l1
Definition: dovi_meta.h:300
AVDOVIDataMapping::curves
AVDOVIReshapingCurve curves[3]
Definition: dovi_meta.h:145
AVDOVIColorMetadata::source_diagonal
uint16_t source_diagonal
Definition: dovi_meta.h:189
AVDOVINLQParams::linear_deadzone_slope
uint64_t linear_deadzone_slope
Definition: dovi_meta.h:132
AVDOVIReshapingCurve
Definition: dovi_meta.h:106
AVDOVIColorMetadata::signal_chroma_format
uint8_t signal_chroma_format
Definition: dovi_meta.h:185
AVDOVIDmLevel11::mpeg_noise_reduction
uint8_t mpeg_noise_reduction
Definition: dovi_meta.h:273
AVDOVIDmLevel11::sharpness
uint8_t sharpness
Definition: dovi_meta.h:271
AVDOVIColorMetadata::signal_eotf_param1
uint16_t signal_eotf_param1
Definition: dovi_meta.h:181
AVDOVINLQParams::vdr_in_max
uint64_t vdr_in_max
Definition: dovi_meta.h:130
AVDOVIColorMetadata::rgb_to_lms_matrix
AVRational rgb_to_lms_matrix[9]
Definition: dovi_meta.h:174
AVDOVIDmData::l6
AVDOVIDmLevel6 l6
Definition: dovi_meta.h:305
AVDOVIReshapingCurve::num_pivots
uint8_t num_pivots
Definition: dovi_meta.h:107
AVDOVIDmLevel3::min_pq_offset
uint16_t min_pq_offset
Definition: dovi_meta.h:211
AVDOVIRpuDataHeader::vdr_rpu_level
uint8_t vdr_rpu_level
Definition: dovi_meta.h:82
av_dovi_get_color
static av_always_inline AVDOVIColorMetadata * av_dovi_get_color(const AVDOVIMetadata *data)
Definition: dovi_meta.h:354
AVDOVIDmLevel5::left_offset
uint16_t left_offset
Definition: dovi_meta.h:223
AVDOVIDmData::l5
AVDOVIDmLevel5 l5
Definition: dovi_meta.h:304
AVDOVIDataMapping::mapping_chroma_format_idc
uint8_t mapping_chroma_format_idc
Definition: dovi_meta.h:144
AVDOVIDmLevel5::right_offset
uint16_t right_offset
Definition: dovi_meta.h:224
AVDOVIDmLevel255::dm_run_version
uint8_t dm_run_version
Definition: dovi_meta.h:288
AVDOVIDmLevel1::avg_pq
uint16_t avg_pq
Definition: dovi_meta.h:196
AVDOVIDecoderConfigurationRecord::bl_present_flag
uint8_t bl_present_flag
Definition: dovi_meta.h:61
AVDOVIRpuDataHeader::bl_bit_depth
uint8_t bl_bit_depth
Definition: dovi_meta.h:88
AVDOVIColorMetadata
Dolby Vision RPU colorspace metadata parameters.
Definition: dovi_meta.h:160
AVDOVIDecoderConfigurationRecord::rpu_present_flag
uint8_t rpu_present_flag
Definition: dovi_meta.h:59
AVDOVIDecoderConfigurationRecord::el_present_flag
uint8_t el_present_flag
Definition: dovi_meta.h:60
AVDOVIColorMetadata::source_max_pq
uint16_t source_max_pq
Definition: dovi_meta.h:188
AVDOVIDmData::level
uint8_t level
Definition: dovi_meta.h:298
AVDOVIDmLevel3::max_pq_offset
uint16_t max_pq_offset
Definition: dovi_meta.h:212
AVDOVIDmLevel254::dm_version_index
uint8_t dm_version_index
Definition: dovi_meta.h:282
AVDOVIDecoderConfigurationRecord::dv_version_minor
uint8_t dv_version_minor
Definition: dovi_meta.h:56
AVDOVIDmLevel11::whitepoint
uint8_t whitepoint
Definition: dovi_meta.h:269
AVDOVIDmLevel254::dm_mode
uint8_t dm_mode
Definition: dovi_meta.h:281
av_dovi_get_mapping
static av_always_inline AVDOVIDataMapping * av_dovi_get_mapping(const AVDOVIMetadata *data)
Definition: dovi_meta.h:348
AVDOVIReshapingCurve::pivots
uint16_t pivots[AV_DOVI_MAX_PIECES+1]
Definition: dovi_meta.h:108
AVDOVIColorMetadata::ycc_to_rgb_matrix
AVRational ycc_to_rgb_matrix[9]
Coefficients of the custom Dolby Vision IPT-PQ matrices.
Definition: dovi_meta.h:172
AVDOVIDmLevel3
Definition: dovi_meta.h:210
AVDOVINLQParams::nlq_offset
uint16_t nlq_offset
Definition: dovi_meta.h:129
AVDOVIDmLevel11
Definition: dovi_meta.h:267
AVDOVIDataMapping::vdr_rpu_id
uint8_t vdr_rpu_id
Definition: dovi_meta.h:142
AVDOVIRpuDataHeader::disable_residual_flag
uint8_t disable_residual_flag
Definition: dovi_meta.h:93
AVDOVIDataMapping::nlq
AVDOVINLQParams nlq[3]
Definition: dovi_meta.h:151
AVDOVIColorMetadata::signal_color_space
uint8_t signal_color_space
Definition: dovi_meta.h:184
AVDOVIDataMapping
Dolby Vision RPU data mapping parameters.
Definition: dovi_meta.h:141
AVDOVIColorMetadata::signal_full_range_flag
uint8_t signal_full_range_flag
Definition: dovi_meta.h:186
AV_DOVI_MAX_PIECES
#define AV_DOVI_MAX_PIECES
Coefficients of a piece-wise function.
Definition: dovi_meta.h:105
AVDOVIDataMapping::num_x_partitions
uint32_t num_x_partitions
Definition: dovi_meta.h:149
AVDOVIDmLevel255::dm_debug
uint8_t dm_debug[4]
Definition: dovi_meta.h:289
AVDOVIDecoderConfigurationRecord
Definition: dovi_meta.h:54
AVDOVIMetadata::num_ext_blocks
int num_ext_blocks
Definition: dovi_meta.h:335