1/*
2 * Copyright (c) 2019 Intel Corporation. All Rights Reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
14 * of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19 * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25/**
26 * \file va_dec_av1.h
27 * \brief The AV1 decoding API
28 *
29 * This file contains the \ref api_dec_av1 "AV1 decoding API".
30 */
31
32#ifndef VA_DEC_AV1_H
33#define VA_DEC_AV1_H
34
35#include <stdint.h>
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/**
42 * \defgroup api_dec_av1 AV1 decoding API
43 *
44 * This AV1 decoding API supports 8-bit/10bit 420 format only.
45 *
46 * @{
47 */
48
49/** Attribute value for VAConfigAttribDecAV1Features.
50 *
51 * This attribute decribes the supported features of a AV1
52 * decoder configuration.
53 *
54 */
55typedef union VAConfigAttribValDecAV1Features {
56 struct {
57 /** large scale tile
58 *
59 * This conveys whether AV1 large scale tile is supported by HW.
60 * 0 - unsupported, 1 - supported.
61 */
62 uint32_t lst_support : 2;
63 /* Reserved for future use. */
64 uint32_t reserved : 30;
65 } bits;
66 uint32_t value;
67} VAConfigAttribValDecAV1Features;
68
69/**
70 * \brief AV1 Decoding Picture Parameter Buffer Structure
71 *
72 * This structure conveys picture level parameters.
73 * App should send a surface with this data structure down to VAAPI once
74 * per frame.
75 *
76 */
77
78/** \brief Segmentation Information
79 */
80typedef struct _VASegmentationStructAV1 {
81 union {
82 struct {
83 /** Indicates whether segmentation map related syntax elements
84 * are present or not for current frame. If equal to 0,
85 * the segmentation map related syntax elements are
86 * not present for the current frame and the control flags of
87 * segmentation map related tables feature_data[][], and
88 * feature_mask[] are not valid and shall be ignored by accelerator.
89 */
90 uint32_t enabled : 1;
91 /** Value 1 indicates that the segmentation map are updated
92 * during the decoding of this frame.
93 * Value 0 means that the segmentation map from the previous
94 * frame is used.
95 */
96 uint32_t update_map : 1;
97 /** Value 1 indicates that the updates to the segmentation map
98 * are coded relative to the existing segmentation map.
99 * Value 0 indicates that the new segmentation map is coded
100 * without reference to the existing segmentation map.
101 */
102 uint32_t temporal_update : 1;
103 /** Value 1 indicates that new parameters are about to be
104 * specified for each segment.
105 * Value 0 indicates that the segmentation parameters
106 * should keep their existing values.
107 */
108 uint32_t update_data : 1;
109
110 /** \brief Reserved bytes for future use, must be zero */
111 uint32_t reserved : 28;
112 } bits;
113 uint32_t value;
114 } segment_info_fields;
115
116 /** \brief Segmentation parameters for current frame.
117 * feature_data[segment_id][feature_id]
118 * where segment_id has value range [0..7] indicating the segment id.
119 * and feature_id is defined as
120 typedef enum {
121 SEG_LVL_ALT_Q, // Use alternate Quantizer ....
122 SEG_LVL_ALT_LF_Y_V, // Use alternate loop filter value on y plane vertical
123 SEG_LVL_ALT_LF_Y_H, // Use alternate loop filter value on y plane horizontal
124 SEG_LVL_ALT_LF_U, // Use alternate loop filter value on u plane
125 SEG_LVL_ALT_LF_V, // Use alternate loop filter value on v plane
126 SEG_LVL_REF_FRAME, // Optional Segment reference frame
127 SEG_LVL_SKIP, // Optional Segment (0,0) + skip mode
128 SEG_LVL_GLOBALMV,
129 SEG_LVL_MAX
130 } SEG_LVL_FEATURES;
131 * feature_data[][] is equivalent to variable FeatureData[][] in spec,
132 * which is after clip3() operation.
133 * Clip3(x, y, z) = (z < x)? x : ((z > y)? y : z);
134 * The limit is defined in Segmentation_Feature_Max[ SEG_LVL_MAX ] = {
135 * 255, MAX_LOOP_FILTER, MAX_LOOP_FILTER, MAX_LOOP_FILTER, MAX_LOOP_FILTER, 7, 0, 0 }
136 */
137 int16_t feature_data[8][8];
138
139 /** \brief indicates if a feature is enabled or not.
140 * Each bit field itself is the feature_id. Index is segment_id.
141 * feature_mask[segment_id] & (1 << feature_id) equal to 1 specify that the feature of
142 * feature_id for segment of segment_id is enabled, otherwise disabled.
143 */
144 uint8_t feature_mask[8];
145
146 /** \brief Reserved bytes for future use, must be zero */
147 uint32_t va_reserved[VA_PADDING_LOW];
148
149} VASegmentationStructAV1;
150
151/** \brief Film Grain Information
152 */
153typedef struct _VAFilmGrainStructAV1 {
154 union {
155 struct {
156 /** \brief Specify whether or not film grain is applied on current frame.
157 * If set to 0, all the rest parameters should be set to zero
158 * and ignored.
159 */
160 uint32_t apply_grain : 1;
161 uint32_t chroma_scaling_from_luma : 1;
162 uint32_t grain_scaling_minus_8 : 2;
163 uint32_t ar_coeff_lag : 2;
164 uint32_t ar_coeff_shift_minus_6 : 2;
165 uint32_t grain_scale_shift : 2;
166 uint32_t overlap_flag : 1;
167 uint32_t clip_to_restricted_range : 1;
168 /** \brief Reserved bytes for future use, must be zero */
169 uint32_t reserved : 20;
170 } bits;
171 uint32_t value;
172 } film_grain_info_fields;
173
174 uint16_t grain_seed;
175 /* value range [0..14] */
176 uint8_t num_y_points;
177 uint8_t point_y_value[14];
178 uint8_t point_y_scaling[14];
179 /* value range [0..10] */
180 uint8_t num_cb_points;
181 uint8_t point_cb_value[10];
182 uint8_t point_cb_scaling[10];
183 /* value range [0..10] */
184 uint8_t num_cr_points;
185 uint8_t point_cr_value[10];
186 uint8_t point_cr_scaling[10];
187 /* value range [-128..127] */
188 int8_t ar_coeffs_y[24];
189 int8_t ar_coeffs_cb[25];
190 int8_t ar_coeffs_cr[25];
191 uint8_t cb_mult;
192 uint8_t cb_luma_mult;
193 uint16_t cb_offset;
194 uint8_t cr_mult;
195 uint8_t cr_luma_mult;
196 uint16_t cr_offset;
197
198 /** \brief Reserved bytes for future use, must be zero */
199 uint32_t va_reserved[VA_PADDING_LOW];
200
201} VAFilmGrainStructAV1;
202
203typedef enum {
204 /** identity transformation, 0-parameter */
205 VAAV1TransformationIdentity = 0,
206 /** translational motion, 2-parameter */
207 VAAV1TransformationTranslation = 1,
208 /** simplified affine with rotation + zoom only, 4-parameter */
209 VAAV1TransformationRotzoom = 2,
210 /** affine, 6-parameter */
211 VAAV1TransformationAffine = 3,
212 /** transformation count */
213 VAAV1TransformationCount
214} VAAV1TransformationType;
215
216typedef struct _VAWarpedMotionParamsAV1 {
217
218 /** \brief Specify the type of warped motion */
219 VAAV1TransformationType wmtype;
220
221 /** \brief Specify warp motion parameters
222 * wm.wmmat[] corresponds to gm_params[][] in spec.
223 * Details in AV1 spec section 5.9.24 or refer to libaom code
224 * https://aomedia.googlesource.com/aom/+/refs/heads/master/av1/decoder/decodeframe.c
225 */
226 int32_t wmmat[8];
227
228 /* valid or invalid on affine set */
229 uint8_t invalid;
230
231 /** \brief Reserved bytes for future use, must be zero */
232 uint32_t va_reserved[VA_PADDING_LOW];
233
234} VAWarpedMotionParamsAV1;
235
236/**
237 * \brief AV1 Decoding Picture Parameter Buffer Structure
238 *
239 * This structure conveys picture level parameters and should be sent once
240 * per frame.
241 *
242 */
243typedef struct _VADecPictureParameterBufferAV1 {
244 /**@{*/
245
246 /** \brief sequence level information
247 */
248
249 /** \brief AV1 bit stream profile
250 */
251 uint8_t profile;
252
253 uint8_t order_hint_bits_minus_1;
254
255 /** \brief bit depth index
256 * value range [0..2]
257 * 0 - bit depth 8;
258 * 1 - bit depth 10;
259 * 2 - bit depth 12;
260 */
261 uint8_t bit_depth_idx;
262
263 /** \brief corresponds to AV1 spec variable of the same name. */
264 uint8_t matrix_coefficients;
265
266 union {
267 struct {
268 uint32_t still_picture : 1;
269 uint32_t use_128x128_superblock : 1;
270 uint32_t enable_filter_intra : 1;
271 uint32_t enable_intra_edge_filter : 1;
272
273 /** read_compound_tools */
274 uint32_t enable_interintra_compound : 1;
275 uint32_t enable_masked_compound : 1;
276
277 uint32_t enable_dual_filter : 1;
278 uint32_t enable_order_hint : 1;
279 uint32_t enable_jnt_comp : 1;
280 uint32_t enable_cdef : 1;
281 uint32_t mono_chrome : 1;
282 uint32_t color_range : 1;
283 uint32_t subsampling_x : 1;
284 uint32_t subsampling_y : 1;
285 va_deprecated uint32_t chroma_sample_position : 1;
286 uint32_t film_grain_params_present : 1;
287 /** \brief Reserved bytes for future use, must be zero */
288 uint32_t reserved : 16;
289 } fields;
290 uint32_t value;
291 } seq_info_fields;
292
293 /** \brief Picture level information
294 */
295
296 /** \brief buffer description of decoded current picture
297 */
298 VASurfaceID current_frame;
299
300 /** \brief display buffer of current picture
301 * Used for film grain applied decoded picture.
302 * Valid only when apply_grain equals 1.
303 */
304 VASurfaceID current_display_picture;
305
306 /** \brief number of anchor frames for large scale tile
307 * This parameter gives the number of entries of anchor_frames_list[].
308 * Value range [0..128].
309 */
310 uint8_t anchor_frames_num;
311
312 /** \brief anchor frame list for large scale tile
313 * For large scale tile applications, the anchor frames could come from
314 * previously decoded frames in current sequence (aka. internal), or
315 * from external sources.
316 * For external anchor frames, application should call API
317 * vaCreateBuffer() to generate frame buffers and populate them with
318 * pixel frames. And this process may happen multiple times.
319 * The array anchor_frames_list[] is used to register all the available
320 * anchor frames from both external and internal, up to the current
321 * frame instance. If a previously registerred anchor frame is no longer
322 * needed, it should be removed from the list. But it does not prevent
323 * applications from relacing the frame buffer with new anchor frames.
324 * Please note that the internal anchor frames may not still be present
325 * in the current DPB buffer. But if it is in the anchor_frames_list[],
326 * it should not be replaced with other frames or removed from memory
327 * until it is not shown in the list.
328 * This number of entries of the list is given by parameter anchor_frames_num.
329 */
330 VASurfaceID *anchor_frames_list;
331
332 /** \brief Picture resolution minus 1
333 * Picture original resolution. If SuperRes is enabled,
334 * this is the upscaled resolution.
335 * value range [0..65535]
336 */
337 uint16_t frame_width_minus1;
338 uint16_t frame_height_minus1;
339
340 /** \brief Output frame buffer size in unit of tiles
341 * Valid only when large_scale_tile equals 1.
342 * value range [0..65535]
343 */
344 uint16_t output_frame_width_in_tiles_minus_1;
345 uint16_t output_frame_height_in_tiles_minus_1;
346
347 /** \brief Surface indices of reference frames in DPB.
348 *
349 * Contains a list of uncompressed frame buffer surface indices as references.
350 * Application needs to make sure all the entries point to valid frames
351 * except for intra frames by checking ref_frame_id[]. If missing frame
352 * is identified, application may choose to perform error recovery by
353 * pointing problematic index to an alternative frame buffer.
354 * Driver is not responsible to validate reference frames' id.
355 */
356 VASurfaceID ref_frame_map[8];
357
358 /** \brief Reference frame indices.
359 *
360 * Contains a list of indices into ref_frame_map[8].
361 * It specifies the reference frame correspondence.
362 * The indices of the array are defined as [LAST_FRAME – LAST_FRAME,
363 * LAST2_FRAME – LAST_FRAME, …, ALTREF_FRAME – LAST_FRAME], where each
364 * symbol is defined as:
365 * enum{INTRA_FRAME = 0, LAST_FRAME, LAST2_FRAME, LAST3_FRAME, GOLDEN_FRAME,
366 * BWDREF_FRAME, ALTREF2_FRAME, ALTREF_FRAME};
367 */
368 uint8_t ref_frame_idx[7];
369
370 /** \brief primary reference frame index
371 * Index into ref_frame_idx[], specifying which reference frame contains
372 * propagated info that should be loaded at the start of the frame.
373 * When value equals PRIMARY_REF_NONE (7), it indicates there is
374 * no primary reference frame.
375 * value range [0..7]
376 */
377 uint8_t primary_ref_frame;
378
379 uint8_t order_hint;
380
381 VASegmentationStructAV1 seg_info;
382 VAFilmGrainStructAV1 film_grain_info;
383
384 /** \brief tile structure
385 * When uniform_tile_spacing_flag == 1, width_in_sbs_minus_1[] and
386 * height_in_sbs_minus_1[] should be ignored, which will be generated
387 * by driver based on tile_cols and tile_rows.
388 */
389 uint8_t tile_cols;
390 uint8_t tile_rows;
391
392 /* The width/height of a tile minus 1 in units of superblocks. Though the
393 * maximum number of tiles is 64, since ones of the last tile are computed
394 * from ones of the other tiles and frame_width/height, they are not
395 * necessarily specified.
396 */
397 uint16_t width_in_sbs_minus_1[63];
398 uint16_t height_in_sbs_minus_1[63];
399
400 /** \brief number of tiles minus 1 in large scale tile list
401 * Same as AV1 semantic element.
402 * Valid only when large_scale_tiles == 1.
403 */
404 uint16_t tile_count_minus_1;
405
406 /* specify the tile index for context updating */
407 uint16_t context_update_tile_id;
408
409 union {
410 struct {
411 /** \brief flags for current picture
412 * same syntax and semantic as those in AV1 code
413 */
414
415 /** \brief Frame Type
416 * 0: KEY_FRAME;
417 * 1: INTER_FRAME;
418 * 2: INTRA_ONLY_FRAME;
419 * 3: SWITCH_FRAME
420 * For SWITCH_FRAME, application shall set error_resilient_mode = 1,
421 * refresh_frame_flags, etc. appropriately. And driver will convert it
422 * to INTER_FRAME.
423 */
424 uint32_t frame_type : 2;
425 uint32_t show_frame : 1;
426 uint32_t showable_frame : 1;
427 uint32_t error_resilient_mode : 1;
428 uint32_t disable_cdf_update : 1;
429 uint32_t allow_screen_content_tools : 1;
430 uint32_t force_integer_mv : 1;
431 uint32_t allow_intrabc : 1;
432 uint32_t use_superres : 1;
433 uint32_t allow_high_precision_mv : 1;
434 uint32_t is_motion_mode_switchable : 1;
435 uint32_t use_ref_frame_mvs : 1;
436 /* disable_frame_end_update_cdf is coded as refresh_frame_context. */
437 uint32_t disable_frame_end_update_cdf : 1;
438 uint32_t uniform_tile_spacing_flag : 1;
439 uint32_t allow_warped_motion : 1;
440 /** \brief indicate if current frame in large scale tile mode */
441 uint32_t large_scale_tile : 1;
442
443 /** \brief Reserved bytes for future use, must be zero */
444 uint32_t reserved : 15;
445 } bits;
446 uint32_t value;
447 } pic_info_fields;
448
449 /** \brief Supper resolution scale denominator.
450 * When use_superres=1, superres_scale_denominator must be in the range [9..16].
451 * When use_superres=0, superres_scale_denominator must be 8.
452 */
453 uint8_t superres_scale_denominator;
454
455 /** \brief Interpolation filter.
456 * value range [0..4]
457 */
458 uint8_t interp_filter;
459
460 /** \brief luma loop filter levels.
461 * value range [0..63].
462 */
463 uint8_t filter_level[2];
464
465 /** \brief chroma loop filter levels.
466 * value range [0..63].
467 */
468 uint8_t filter_level_u;
469 uint8_t filter_level_v;
470
471 union {
472 struct {
473 /** \brief flags for reference pictures
474 * same syntax and semantic as those in AV1 code
475 */
476 uint8_t sharpness_level : 3;
477 uint8_t mode_ref_delta_enabled : 1;
478 uint8_t mode_ref_delta_update : 1;
479
480 /** \brief Reserved bytes for future use, must be zero */
481 uint8_t reserved : 3;
482 } bits;
483 uint8_t value;
484 } loop_filter_info_fields;
485
486 /** \brief The adjustment needed for the filter level based on
487 * the chosen reference frame.
488 * value range [-64..63].
489 */
490 int8_t ref_deltas[8];
491
492 /** \brief The adjustment needed for the filter level based on
493 * the chosen mode.
494 * value range [-64..63].
495 */
496 int8_t mode_deltas[2];
497
498 /** \brief quantization
499 */
500 /** \brief Y AC index
501 * value range [0..255]
502 */
503 uint8_t base_qindex;
504 /** \brief Y DC delta from Y AC
505 * value range [-64..63]
506 */
507 int8_t y_dc_delta_q;
508 /** \brief U DC delta from Y AC
509 * value range [-64..63]
510 */
511 int8_t u_dc_delta_q;
512 /** \brief U AC delta from Y AC
513 * value range [-64..63]
514 */
515 int8_t u_ac_delta_q;
516 /** \brief V DC delta from Y AC
517 * value range [-64..63]
518 */
519 int8_t v_dc_delta_q;
520 /** \brief V AC delta from Y AC
521 * value range [-64..63]
522 */
523 int8_t v_ac_delta_q;
524
525 /** \brief quantization_matrix
526 */
527 union {
528 struct {
529 uint16_t using_qmatrix : 1;
530 /** \brief qm level
531 * value range [0..15]
532 * Invalid if using_qmatrix equals 0.
533 */
534 uint16_t qm_y : 4;
535 uint16_t qm_u : 4;
536 uint16_t qm_v : 4;
537
538 /** \brief Reserved bytes for future use, must be zero */
539 uint16_t reserved : 3;
540 } bits;
541 uint16_t value;
542 } qmatrix_fields;
543
544 union {
545 struct {
546 /** \brief delta_q parameters
547 */
548 uint32_t delta_q_present_flag : 1;
549 uint32_t log2_delta_q_res : 2;
550
551 /** \brief delta_lf parameters
552 */
553 uint32_t delta_lf_present_flag : 1;
554 uint32_t log2_delta_lf_res : 2;
555
556 /** \brief CONFIG_LOOPFILTER_LEVEL
557 */
558 uint32_t delta_lf_multi : 1;
559
560 /** \brief read_tx_mode
561 * value range [0..2]
562 */
563 uint32_t tx_mode : 2;
564
565 /* AV1 frame reference mode semantic */
566 uint32_t reference_select : 1;
567
568 uint32_t reduced_tx_set_used : 1;
569
570 uint32_t skip_mode_present : 1;
571
572 /** \brief Reserved bytes for future use, must be zero */
573 uint32_t reserved : 20;
574 } bits;
575 uint32_t value;
576 } mode_control_fields;
577
578 /** \brief CDEF parameters
579 */
580 /* value range [0..3] */
581 uint8_t cdef_damping_minus_3;
582 /* value range [0..3] */
583 uint8_t cdef_bits;
584
585 /** Encode cdef strength:
586 *
587 * The cdef_y_strengths[] and cdef_uv_strengths[] are expected to be packed
588 * with both primary and secondary strength. The secondary strength is
589 * given in the lower two bits and the primary strength is given in the next
590 * four bits.
591 *
592 * cdef_y_strengths[] & cdef_uv_strengths[] should be derived as:
593 * (cdef_y_strengths[]) = (cdef_y_pri_strength[] << 2) | (cdef_y_sec_strength[] & 0x03)
594 * (cdef_uv_strengths[]) = (cdef_uv_pri_strength[] << 2) | (cdef_uv_sec_strength[] & 0x03)
595 * In which, cdef_y_pri_strength[]/cdef_y_sec_strength[]/cdef_uv_pri_strength[]/cdef_uv_sec_strength[]
596 * are variables defined in AV1 Spec 5.9.19. The cdef_y_strengths[] & cdef_uv_strengths[]
597 * are corresponding to LIBAOM variables cm->cdef_strengths[] & cm->cdef_uv_strengths[] respectively.
598 */
599 /* value range [0..63] */
600 uint8_t cdef_y_strengths[8];
601 /* value range [0..63] */
602 uint8_t cdef_uv_strengths[8];
603
604 /** \brief loop restoration parameters
605 */
606 union {
607 struct {
608 uint16_t yframe_restoration_type : 2;
609 uint16_t cbframe_restoration_type : 2;
610 uint16_t crframe_restoration_type : 2;
611 uint16_t lr_unit_shift : 2;
612 uint16_t lr_uv_shift : 1;
613
614 /** \brief Reserved bytes for future use, must be zero */
615 uint16_t reserved : 7;
616 } bits;
617 uint16_t value;
618 } loop_restoration_fields;
619
620 /** \brief global motion
621 */
622 VAWarpedMotionParamsAV1 wm[7];
623
624 /**@}*/
625
626 /** \brief Reserved bytes for future use, must be zero */
627 uint32_t va_reserved[VA_PADDING_MEDIUM];
628} VADecPictureParameterBufferAV1;
629
630
631/**
632 * \brief AV1 Slice Parameter Buffer Structure
633 *
634 * This structure conveys parameters related to bit stream data and should be
635 * sent once per tile.
636 *
637 * It uses the name VASliceParameterBufferAV1 to be consistent with other codec,
638 * but actually means VATileParameterBufferAV1.
639 *
640 * Slice data buffer of VASliceDataBufferType is used
641 * to send the bitstream.
642 *
643 * Please note that host decoder is responsible to parse out the
644 * per tile information. And the bit stream in sent to driver in per
645 * tile granularity.
646 */
647typedef struct _VASliceParameterBufferAV1 {
648 /**@{*/
649 /** \brief The byte count of current tile in the bitstream buffer,
650 * starting from first byte of the buffer.
651 * It uses the name slice_data_size to be consistent with other codec,
652 * but actually means tile_data_size.
653 */
654 uint32_t slice_data_size;
655 /**
656 * offset to the first byte of the data buffer.
657 */
658 uint32_t slice_data_offset;
659 /**
660 * see VA_SLICE_DATA_FLAG_XXX definitions
661 */
662 uint32_t slice_data_flag;
663
664 uint16_t tile_row;
665 uint16_t tile_column;
666
667 va_deprecated uint16_t tg_start;
668 va_deprecated uint16_t tg_end;
669 /** \brief anchor frame index for large scale tile.
670 * index into an array AnchorFrames of the frames that the tile uses
671 * for prediction.
672 * valid only when large_scale_tile equals 1.
673 */
674 uint8_t anchor_frame_idx;
675
676 /** \brief tile index in the tile list.
677 * Valid only when large_scale_tile is enabled.
678 * Driver uses this field to decide the tile output location.
679 */
680 uint16_t tile_idx_in_tile_list;
681
682 /**@}*/
683
684 /** \brief Reserved bytes for future use, must be zero */
685 uint32_t va_reserved[VA_PADDING_LOW];
686} VASliceParameterBufferAV1;
687
688
689/**@}*/
690
691#ifdef __cplusplus
692}
693#endif
694
695#endif /* VA_DEC_AV1_H */
696

source code of include/va/va_dec_av1.h