dav1d  1.4.3
dav1disanAV1decoder
headers.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2018-2020, VideoLAN and dav1d authors
3  * Copyright © 2018, Two Orioles, LLC
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright notice,
13  * this list of conditions and the following disclaimer in the documentation
14  * and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #ifndef DAV1D_HEADERS_H
29 #define DAV1D_HEADERS_H
30 
31 #include <stdint.h>
32 #include <stddef.h>
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 // Constants from Section 3. "Symbols and abbreviated terms"
39 #define DAV1D_MAX_CDEF_STRENGTHS 8
40 #define DAV1D_MAX_OPERATING_POINTS 32
41 #define DAV1D_MAX_TILE_COLS 64
42 #define DAV1D_MAX_TILE_ROWS 64
43 #define DAV1D_MAX_SEGMENTS 8
44 #define DAV1D_NUM_REF_FRAMES 8
45 #define DAV1D_PRIMARY_REF_NONE 7
46 #define DAV1D_REFS_PER_FRAME 7
47 #define DAV1D_TOTAL_REFS_PER_FRAME (DAV1D_REFS_PER_FRAME + 1)
48 
58 };
59 
65 };
66 
75 };
76 
78  DAV1D_OFF = 0,
79  DAV1D_ON = 1,
81 };
82 
88 };
89 
95 };
96 
97 typedef struct Dav1dWarpedMotionParams {
99  int32_t matrix[6];
100  union {
101  struct {
102  int16_t alpha, beta, gamma, delta;
103  } p;
104  int16_t abcd[4];
105  } u;
107 
113 };
114 
120 };
121 
136 };
137 
157 };
158 
175 };
176 
180  DAV1D_CHR_COLOCATED = 2,
182 };
183 
184 typedef struct Dav1dContentLightLevel {
188 
189 typedef struct Dav1dMasteringDisplay {
191  uint16_t primaries[3][2];
193  uint16_t white_point[2];
195  uint32_t max_luminance;
197  uint32_t min_luminance;
199 
200 typedef struct Dav1dITUTT35 {
201  uint8_t country_code;
203  size_t payload_size;
204  uint8_t *payload;
205 } Dav1dITUTT35;
206 
207 typedef struct Dav1dSequenceHeader {
213  uint8_t profile;
225 
232  uint8_t hbd;
237  uint8_t color_range;
238 
243  uint16_t idc;
244  uint8_t tier;
248 
249  uint8_t still_picture;
253  uint32_t time_scale;
266  uint8_t sb128;
267  uint8_t filter_intra;
269  uint8_t inter_intra;
271  uint8_t warped_motion;
272  uint8_t dual_filter;
273  uint8_t order_hint;
274  uint8_t jnt_comp;
275  uint8_t ref_frame_mvs;
279  uint8_t super_res;
280  uint8_t cdef;
281  uint8_t restoration;
286 
287  // Dav1dSequenceHeaders of the same sequence are required to be
288  // bit-identical until this offset. See 7.5 "Ordering of OBUs":
289  // Within a particular coded video sequence, the contents of
290  // sequence_header_obu must be bit-identical each time the
291  // sequence header appears except for the contents of
292  // operating_parameters_info.
296  uint8_t low_delay_mode;
299 
300 typedef struct Dav1dSegmentationData {
301  int16_t delta_q;
303  int8_t ref;
304  uint8_t skip;
305  uint8_t globalmv;
307 
308 typedef struct Dav1dSegmentationDataSet {
310  uint8_t preskip;
313 
315  int8_t mode_delta[2 /* is_zeromv */];
318 
319 typedef struct Dav1dFilmGrainData {
320  unsigned seed;
322  uint8_t y_points[14][2 /* value, scaling */];
325  uint8_t uv_points[2][10][2 /* value, scaling */];
328  int8_t ar_coeffs_y[24];
329  int8_t ar_coeffs_uv[2][25 + 3 /* padding for alignment purposes */];
330  uint64_t ar_coeff_shift;
332  int uv_mult[2];
333  int uv_luma_mult[2];
334  int uv_offset[2];
338 
339 typedef struct Dav1dFrameHeader {
340  struct {
342  uint8_t present, update;
343  } film_grain;
345  int width[2 /* { coded_width, superresolution_upscaled_width } */], height;
346  uint8_t frame_offset;
347  uint8_t temporal_id;
348  uint8_t spatial_id;
349 
352  uint32_t frame_id;
354  uint8_t show_frame;
355  uint8_t showable_frame;
368  struct {
370  uint8_t enabled;
371  } super_res;
373  uint8_t allow_intrabc;
376  uint8_t hp;
381  struct {
382  uint8_t uniform;
383  uint8_t n_bytes;
388  uint16_t update;
389  } tiling;
390  struct {
391  uint8_t yac;
392  int8_t ydc_delta;
394  uint8_t qm, qm_y, qm_u, qm_v;
395  } quant;
396  struct {
400  } segmentation;
401  struct {
402  struct {
403  uint8_t present;
404  uint8_t res_log2;
405  } q;
406  struct {
407  uint8_t present;
408  uint8_t res_log2;
409  uint8_t multi;
410  } lf;
411  } delta;
412  uint8_t all_lossless;
413  struct {
414  uint8_t level_y[2 /* dir */];
415  uint8_t level_u, level_v;
419  uint8_t sharpness;
420  } loopfilter;
421  struct {
422  uint8_t damping;
423  uint8_t n_bits;
426  } cdef;
427  struct {
428  enum Dav1dRestorationType type[3 /* plane */];
429  uint8_t unit_size[2 /* y, uv */];
430  } restoration;
434  int8_t skip_mode_refs[2];
435  uint8_t warp_motion;
439 
440 #ifdef __cplusplus
441 } /* extern "C" */
442 #endif
443 
444 #endif /* DAV1D_HEADERS_H */
Definition: headers.h:142
uint8_t uv_points[2][10][2]
Definition: headers.h:325
uint32_t time_scale
Definition: headers.h:253
int8_t udc_delta
Definition: headers.h:393
Definition: headers.h:78
uint32_t buffer_removal_time
Definition: headers.h:364
uint8_t color_range
Definition: headers.h:237
uint8_t level_v
Definition: headers.h:415
Switch Inter frame.
Definition: headers.h:119
Definition: headers.h:168
uint8_t ss_hor
Definition: headers.h:282
uint8_t decoder_model_param_present
Definition: headers.h:245
uint8_t lossless[DAV1D_MAX_SEGMENTS]
Definition: headers.h:399
Dav1dWarpedMotionType
Definition: headers.h:90
Definition: headers.h:50
4:4:4 planar
Definition: headers.h:112
int8_t ar_coeffs_uv[2][25+3]
Definition: headers.h:329
Definition: headers.h:130
Definition: headers.h:64
Definition: headers.h:51
Definition: headers.h:63
Definition: headers.h:140
uint8_t max_log2_cols
Definition: headers.h:384
uint8_t min_log2_cols
Definition: headers.h:384
int height
Definition: headers.h:345
uint8_t allow_intrabc
Definition: headers.h:373
uint8_t color_description_present
Definition: headers.h:283
int16_t gamma
Definition: headers.h:102
Definition: headers.h:62
struct Dav1dFrameHeader::@9 cdef
struct Dav1dFrameHeader::@7 delta
Definition: headers.h:164
Dav1dLoopfilterModeRefDeltas mode_ref_deltas
Definition: headers.h:418
Definition: headers.h:162
int num_uv_points[2]
Definition: headers.h:324
int8_t ref_delta[DAV1D_TOTAL_REFS_PER_FRAME]
Definition: headers.h:316
Definition: headers.h:68
Definition: headers.h:131
lograithmic (100*sqrt(10):1 range)
Definition: headers.h:147
uint8_t height_n_bits
Definition: headers.h:262
uint8_t delta_frame_id_n_bits
Definition: headers.h:264
uint8_t width_scale_denominator
Definition: headers.h:369
uint32_t num_units_in_tick
Definition: headers.h:252
Definition: headers.h:127
int uv_mult[2]
Definition: headers.h:332
Definition: headers.h:61
uint8_t buffer_removal_time_present
Definition: headers.h:362
uint32_t num_ticks_per_picture
Definition: headers.h:255
enum Dav1dAdaptiveBoolean force_integer_mv
Definition: headers.h:277
enum Dav1dTxfmMode txfm_mode
Definition: headers.h:431
uint8_t uv_strength[DAV1D_MAX_CDEF_STRENGTHS]
Definition: headers.h:425
uint32_t min_luminance
Definition: headers.h:197
Definition: headers.h:150
uint16_t max_frame_average_light_level
Definition: headers.h:186
int render_height
Definition: headers.h:367
Definition: headers.h:339
uint8_t damping
Definition: headers.h:422
Dav1dAdaptiveBoolean
Definition: headers.h:77
Definition: headers.h:166
enum Dav1dChromaSamplePosition chr
chroma sample position (av1)
Definition: headers.h:224
struct Dav1dFrameHeader::@5 quant
uint8_t frame_size_override
Definition: headers.h:360
uint8_t mode_ref_delta_update
Definition: headers.h:417
uint8_t level_u
Definition: headers.h:415
uint8_t reduced_txtp_set
Definition: headers.h:436
uint8_t qidx[DAV1D_MAX_SEGMENTS]
Definition: headers.h:399
enum Dav1dPixelLayout layout
format of the picture
Definition: headers.h:220
int clip_to_restricted_range
Definition: headers.h:336
monochrome
Definition: headers.h:109
uint8_t primary_ref_frame
Definition: headers.h:361
Definition: headers.h:71
uint16_t primaries[3][2]
< 0.16 fixed point
Definition: headers.h:191
Definition: headers.h:143
uint8_t frame_offset
frame number
Definition: headers.h:346
Definition: headers.h:178
Definition: headers.h:184
int8_t delta_lf_v
Definition: headers.h:302
int overlap_flag
Definition: headers.h:335
Definition: headers.h:126
Definition: headers.h:144
uint8_t initial_display_delay
Definition: headers.h:242
int32_t matrix[6]
Definition: headers.h:99
Definition: headers.h:92
uint8_t equal_picture_interval
Definition: headers.h:254
uint8_t qm_y
Definition: headers.h:394
uint8_t n_bits
Definition: headers.h:423
enum Dav1dMatrixCoefficients mtrx
matrix coefficients (av1)
Definition: headers.h:223
Definition: headers.h:154
uint8_t cols
Definition: headers.h:384
uint8_t still_picture
Definition: headers.h:249
uint8_t max_log2_rows
Definition: headers.h:385
Definition: headers.h:134
Dav1dChromaSamplePosition
Definition: headers.h:177
int8_t delta_lf_y_h
Definition: headers.h:302
Definition: headers.h:319
int8_t vac_delta
Definition: headers.h:393
int8_t refidx[DAV1D_REFS_PER_FRAME]
Definition: headers.h:375
Definition: headers.h:80
Definition: headers.h:207
uint8_t disable_cdf_update
Definition: headers.h:357
uint8_t force_integer_mv
Definition: headers.h:359
uint8_t frame_ref_short_signaling
Definition: headers.h:374
uint8_t globalmv
Definition: headers.h:305
Dav1dObuType
Definition: headers.h:49
Definition: headers.h:73
Definition: headers.h:57
Dav1dFrameType
Definition: headers.h:115
Definition: headers.h:151
uint8_t min_log2_rows
Definition: headers.h:385
uint8_t display_model_param_present
Definition: headers.h:246
uint8_t super_res
Definition: headers.h:279
uint32_t max_luminance
18.14 fixed point
Definition: headers.h:195
uint8_t * payload
Definition: headers.h:204
uint8_t y_points[14][2]
Definition: headers.h:322
Definition: headers.h:52
Dav1dMatrixCoefficients
Definition: headers.h:159
#define DAV1D_MAX_TILE_COLS
Definition: headers.h:41
Definition: headers.h:55
uint8_t uniform
Definition: headers.h:382
uint8_t restoration
Definition: headers.h:281
uint8_t jnt_comp
Definition: headers.h:274
Definition: headers.h:93
struct Dav1dFrameHeader::@3 super_res
uint8_t sharpness
Definition: headers.h:419
#define DAV1D_MAX_CDEF_STRENGTHS
Definition: headers.h:39
uint8_t qm_v
Definition: headers.h:394
uint8_t present
Definition: headers.h:342
Chromaticity-derived.
Definition: headers.h:171
struct Dav1dFrameHeader::@7::@12 lf
uint8_t masked_compound
Definition: headers.h:270
uint8_t hp
Definition: headers.h:376
Definition: headers.h:124
struct Dav1dFrameHeader::@6 segmentation
uint8_t qm_u
Definition: headers.h:394
enum Dav1dTransferCharacteristics trc
transfer characteristics (av1)
Definition: headers.h:222
uint8_t separate_uv_delta_q
Definition: headers.h:284
4:2:0 planar
Definition: headers.h:110
int scaling_shift
Definition: headers.h:326
uint8_t n_bytes
Definition: headers.h:383
uint8_t refresh_context
Definition: headers.h:380
uint8_t level_y[2]
Definition: headers.h:414
uint32_t num_units_in_decoding_tick
Definition: headers.h:258
uint8_t dual_filter
Definition: headers.h:272
uint8_t skip_mode_enabled
Definition: headers.h:433
struct Dav1dFrameHeader::@8 loopfilter
uint8_t unit_size[2]
Definition: headers.h:429
Definition: headers.h:97
uint8_t temporal
Definition: headers.h:397
uint8_t have_render_size
Definition: headers.h:372
uint8_t rows
Definition: headers.h:385
Key Intra frame.
Definition: headers.h:116
int8_t skip_mode_refs[2]
Definition: headers.h:434
PQ.
Definition: headers.h:153
Definition: headers.h:172
Definition: headers.h:167
#define DAV1D_MAX_TILE_ROWS
Definition: headers.h:42
Definition: headers.h:70
#define DAV1D_MAX_OPERATING_POINTS
Definition: headers.h:40
uint8_t hbd
Definition: headers.h:232
Definition: headers.h:161
Definition: headers.h:86
uint8_t show_frame
Definition: headers.h:354
uint8_t enabled
Definition: headers.h:370
Definition: headers.h:145
Definition: headers.h:156
Definition: headers.h:149
enum Dav1dFilterMode subpel_filter_mode
Definition: headers.h:377
enum Dav1dColorPrimaries pri
color primaries (av1)
Definition: headers.h:221
int16_t delta_q
Definition: headers.h:301
uint32_t frame_id
Definition: headers.h:352
int16_t delta
Definition: headers.h:102
Dav1dRestorationType
Definition: headers.h:83
uint8_t log2_rows
Definition: headers.h:385
Definition: headers.h:300
Definition: headers.h:148
Definition: headers.h:165
Dav1dColorPrimaries
Definition: headers.h:122
uint16_t white_point[2]
24.8 fixed point
Definition: headers.h:193
int8_t vdc_delta
Definition: headers.h:393
struct Dav1dFrameHeader::Dav1dFrameHeaderOperatingPoint operating_points[DAV1D_MAX_OPERATING_POINTS]
uint8_t display_model_info_present
Definition: headers.h:261
uint8_t cdef
Definition: headers.h:280
Dav1dFilmGrainData data
Definition: headers.h:341
Definition: headers.h:170
Definition: headers.h:129
int width[2]
Definition: headers.h:345
int16_t abcd[4]
Definition: headers.h:104
uint8_t allow_screen_content_tools
Definition: headers.h:358
uint8_t decoder_model_info_present
Definition: headers.h:256
Definition: headers.h:123
Definition: headers.h:54
#define DAV1D_TOTAL_REFS_PER_FRAME
Definition: headers.h:47
int uv_offset[2]
Definition: headers.h:334
uint8_t intra_edge_filter
Definition: headers.h:268
uint8_t film_grain_present
Definition: headers.h:285
unsigned seed
Definition: headers.h:320
int8_t ref
Definition: headers.h:303
Definition: headers.h:74
int grain_scale_shift
Definition: headers.h:331
Definition: headers.h:135
Definition: headers.h:174
uint8_t existing_frame_idx
Definition: headers.h:351
uint8_t skip
Definition: headers.h:304
int8_t delta_lf_u
Definition: headers.h:302
uint64_t ar_coeff_shift
Definition: headers.h:330
Definition: headers.h:125
Definition: headers.h:85
Definition: headers.h:87
Dav1dSegmentationData d[DAV1D_MAX_SEGMENTS]
Definition: headers.h:309
int uv_luma_mult[2]
Definition: headers.h:333
uint8_t buffer_removal_delay_length
Definition: headers.h:259
Definition: headers.h:139
uint8_t switchable_motion_mode
Definition: headers.h:378
#define DAV1D_REFS_PER_FRAME
Definition: headers.h:46
Definition: headers.h:173
int render_width
Definition: headers.h:367
Definition: headers.h:72
uint8_t order_hint
Definition: headers.h:273
Inter frame.
Definition: headers.h:117
uint8_t spatial_id
spatial id of the frame for SVC
Definition: headers.h:348
int8_t ydc_delta
Definition: headers.h:392
uint8_t country_code
Definition: headers.h:201
Non key Intra frame.
Definition: headers.h:118
Definition: headers.h:314
struct Dav1dSequenceHeader::Dav1dSequenceHeaderOperatingPoint operating_points[DAV1D_MAX_OPERATING_POINTS]
Definition: headers.h:308
uint8_t skip_mode_allowed
Definition: headers.h:433
uint8_t country_code_extension_byte
Definition: headers.h:202
struct Dav1dWarpedMotionParams::@0::@1 p
Dav1dFilterMode
Definition: headers.h:67
uint8_t multi
Definition: headers.h:409
hybrid log/gamma (BT.2100 / ARIB STD-B67)
Definition: headers.h:155
sample, between two vertical samples
Definition: headers.h:179
int ar_coeff_lag
Definition: headers.h:327
uint8_t error_resilient_mode
Definition: headers.h:356
uint8_t encoder_decoder_buffer_delay_length
Definition: headers.h:257
uint8_t sb128
Definition: headers.h:266
uint8_t show_existing_frame
Definition: headers.h:350
Definition: headers.h:133
uint8_t profile
Definition: headers.h:213
int16_t beta
Definition: headers.h:102
enum Dav1dRestorationType type[3]
Definition: headers.h:428
uint8_t log2_cols
Definition: headers.h:384
int num_y_points
Definition: headers.h:321
uint8_t qm
Definition: headers.h:394
uint32_t frame_presentation_delay
Definition: headers.h:353
int8_t ar_coeffs_y[24]
Definition: headers.h:328
int16_t alpha
Definition: headers.h:102
uint8_t width_n_bits
Definition: headers.h:262
Definition: headers.h:128
uint8_t order_hint_n_bits
Definition: headers.h:278
uint8_t preskip
Definition: headers.h:310
uint8_t reduced_still_picture_header
Definition: headers.h:250
Definition: headers.h:160
Definition: headers.h:79
enum Dav1dWarpedMotionType type
Definition: headers.h:98
uint8_t frame_id_numbers_present
Definition: headers.h:263
struct Dav1dFrameHeader::@4 tiling
logarithmic (100:1 range)
Definition: headers.h:146
Definition: headers.h:200
uint8_t warp_motion
Definition: headers.h:435
4:2:2 planar
Definition: headers.h:111
struct Dav1dFrameHeader::@2 film_grain
film grain parameters
uint8_t use_ref_frame_mvs
Definition: headers.h:379
Definition: headers.h:189
Definition: headers.h:84
size_t payload_size
Definition: headers.h:203
uint8_t ref_frame_mvs
Definition: headers.h:275
uint8_t mode_ref_delta_enabled
Definition: headers.h:416
#define DAV1D_MAX_SEGMENTS
Definition: headers.h:43
Dav1dSegmentationDataSet seg_data
Definition: headers.h:398
uint8_t frame_presentation_delay_length
Definition: headers.h:260
uint8_t ss_ver
Definition: headers.h:282
uint8_t refresh_frame_flags
Definition: headers.h:366
uint8_t update_data
Definition: headers.h:397
struct Dav1dFrameHeader::@7::@11 q
Definition: headers.h:163
Definition: headers.h:152
Dav1dTxfmMode
Definition: headers.h:60
uint16_t max_content_light_level
Definition: headers.h:185
Dav1dTransferCharacteristics
Definition: headers.h:138
uint8_t warped_motion
Definition: headers.h:271
struct Dav1dFrameHeader::@10 restoration
uint8_t update_map
Definition: headers.h:397
uint8_t temporal_id
temporal id of the frame for SVC
Definition: headers.h:347
Definition: headers.h:56
uint8_t filter_intra
Definition: headers.h:267
Dav1dPixelLayout
Definition: headers.h:108
uint8_t monochrome
Definition: headers.h:282
int max_height
Definition: headers.h:219
union Dav1dWarpedMotionParams::@0 u
struct Dav1dSequenceHeader::Dav1dSequenceHeaderOperatingParameterInfo operating_parameter_info[DAV1D_MAX_OPERATING_POINTS]
uint8_t showable_frame
Definition: headers.h:355
uint8_t res_log2
Definition: headers.h:404
uint8_t update
Definition: headers.h:342
uint16_t update
Definition: headers.h:388
uint8_t switchable_comp_refs
Definition: headers.h:432
Co-located with luma(0, 0) sample.
Definition: headers.h:181
int8_t uac_delta
Definition: headers.h:393
uint8_t num_operating_points
Definition: headers.h:239
enum Dav1dAdaptiveBoolean screen_content_tools
Definition: headers.h:276
uint16_t col_start_sb[DAV1D_MAX_TILE_COLS+1]
Definition: headers.h:386
int8_t mode_delta[2]
Definition: headers.h:315
uint16_t row_start_sb[DAV1D_MAX_TILE_ROWS+1]
Definition: headers.h:387
uint8_t yac
Definition: headers.h:391
uint8_t inter_intra
Definition: headers.h:269
Dav1dWarpedMotionParams gmv[DAV1D_REFS_PER_FRAME]
Definition: headers.h:437
Definition: headers.h:94
Definition: headers.h:53
uint8_t y_strength[DAV1D_MAX_CDEF_STRENGTHS]
Definition: headers.h:424
Definition: headers.h:69
Definition: headers.h:91
int max_width
Definition: headers.h:219
Definition: headers.h:132
uint8_t frame_id_n_bits
Definition: headers.h:265
int8_t last_active_segid
Definition: headers.h:311
int8_t delta_lf_y_v
Definition: headers.h:302
uint8_t timing_info_present
Definition: headers.h:251
enum Dav1dFrameType frame_type
type of the picture
Definition: headers.h:344
uint8_t all_lossless
Definition: headers.h:412
Definition: headers.h:141
Definition: headers.h:169
int chroma_scaling_from_luma
Definition: headers.h:323