develop/api/rocdecode.h Source File

develop/api/rocdecode.h Source File#

rocDecode: develop/api/rocdecode.h Source File
rocdecode.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2023 - 2024 Advanced Micro Devices, Inc. All rights reserved.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is
9 furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 THE SOFTWARE.
21 */
22 
23 #ifndef ROCDECAPI
24 #if defined(_WIN32)
25 #define ROCDECAPI __stdcall // for future: only linux is supported in this version
26 #else
27 #define ROCDECAPI
28 #endif
29 #endif
30 
31 #pragma once
32 #include "hip/hip_runtime.h"
33 #include "rocdecode_version.h"
34 
43 #if defined(__cplusplus)
44 extern "C" {
45 #endif // __cplusplus
46 
47 /*********************************************************************************/
50 /*********************************************************************************/
51 
52 typedef void *rocDecDecoderHandle;
53 
54 /*********************************************************************************/
59 /*********************************************************************************/
60 typedef enum rocDecStatus_enum {
61  ROCDEC_DEVICE_INVALID = -1,
62  ROCDEC_CONTEXT_INVALID = -2,
63  ROCDEC_RUNTIME_ERROR = -3,
64  ROCDEC_OUTOF_MEMORY = -4,
65  ROCDEC_INVALID_PARAMETER = -5,
66  ROCDEC_NOT_IMPLEMENTED = -6,
67  ROCDEC_NOT_INITIALIZED = -7,
68  ROCDEC_NOT_SUPPORTED = -8,
69  ROCDEC_SUCCESS = 0,
70 } rocDecStatus;
71 
72 /*********************************************************************************/
77 /*********************************************************************************/
78 typedef enum rocDecVideoCodec_enum {
89  // Uncompressed YUV
90  rocDecVideoCodec_YUV420 = (('I' << 24) | ('Y' << 16) | ('U' << 8) | ('V')),
91  rocDecVideoCodec_YV12 = (('Y' << 24) | ('V' << 16) | ('1' << 8) | ('2')),
92  rocDecVideoCodec_NV12 = (('N' << 24) | ('V' << 16) | ('1' << 8) | ('2')),
93  rocDecVideoCodec_YUYV = (('Y' << 24) | ('U' << 16) | ('Y' << 8) | ('V')),
94  rocDecVideoCodec_UYVY = (('U' << 24) | ('Y' << 16) | ('V' << 8) | ('Y'))
95 } rocDecVideoCodec;
96 
97 /*********************************************************************************/
102 /*********************************************************************************/
110 } rocDecVideoSurfaceFormat;
111 
112 /**************************************************************************************************************/
117 /**************************************************************************************************************/
123 } rocDecVideoChromaFormat;
124 
125 /*************************************************************************/
130 /*************************************************************************/
131 typedef enum rocDecodeStatus_enum {
132  rocDecodeStatus_Invalid = 0, // Decode status is not valid
133  rocDecodeStatus_InProgress = 1, // Decode is in progress
134  rocDecodeStatus_Success = 2, // Decode is completed without any errors
135  // 3 to 7 enums are reserved for future use
136  rocDecodeStatus_Error = 8, // Decode is completed with an error (error is not concealed)
137  rocDecodeStatus_Error_Concealed = 9, // Decode is completed with an error and error is concealed
138  rocDecodeStatus_Displaying = 10, // Decode is completed, displaying in progress
139 } rocDecDecodeStatus;
140 
141 /**************************************************************************************************************/
145 /**************************************************************************************************************/
146 typedef struct _RocdecDecodeCaps {
147  uint8_t device_id;
148  rocDecVideoCodec codec_type;
149  rocDecVideoChromaFormat chroma_format;
150  uint32_t bit_depth_minus_8;
151  uint32_t reserved_1[3];
152  uint8_t is_supported;
153  uint8_t num_decoders;
155  uint32_t max_width;
156  uint32_t max_height;
157  uint16_t min_width;
158  uint16_t min_height;
159  uint32_t reserved_2[6];
161 
162 /**************************************************************************************************************/
166 /**************************************************************************************************************/
167 typedef struct _RocDecoderCreateInfo {
168  uint8_t device_id;
170  uint32_t width;
171  uint32_t height;
173  rocDecVideoCodec codec_type;
174  rocDecVideoChromaFormat chroma_format;
175  uint32_t bit_depth_minus_8;
176  uint32_t intra_decode_only;
181  uint32_t max_width;
182  uint32_t max_height;
183  struct {
184  int16_t left;
185  int16_t top;
186  int16_t right;
187  int16_t bottom;
189  rocDecVideoSurfaceFormat output_format;
190  uint32_t target_width;
191  uint32_t target_height;
193  struct {
194  int16_t left;
195  int16_t top;
196  int16_t right;
197  int16_t bottom;
198  } target_rect;
200  uint32_t reserved_2[4];
202 
203 /*********************************************************************************************************/
208 /*********************************************************************************************************/
209 typedef struct _RocdecDecodeStatus {
210  rocDecDecodeStatus decode_status;
211  uint32_t reserved[31];
212  void *p_reserved[8];
214 
215 /****************************************************/
220 /****************************************************/
222  uint32_t width;
223  uint32_t height;
224  uint32_t target_width;
225  uint32_t target_height;
227  uint32_t reserved_1[12];
228  struct {
229  int16_t left;
230  int16_t top;
231  int16_t right;
232  int16_t bottom;
234  struct {
235  int16_t left;
236  int16_t top;
237  int16_t right;
238  int16_t bottom;
239  } target_rect;
241  uint32_t reserved_2[11];
243 
244 /*********************************************************/
249 /*********************************************************/
250 typedef struct _RocdecAvcPicture {
251  int pic_idx;
252  uint32_t frame_idx;
253  uint32_t flags;
256  uint32_t reserved[4];
258 
259 /* flags in RocdecAvcPicture could be OR of the following */
260 #define RocdecAvcPicture_FLAGS_INVALID 0x00000001
261 #define RocdecAvcPicture_FLAGS_TOP_FIELD 0x00000002
262 #define RocdecAvcPicture_FLAGS_BOTTOM_FIELD 0x00000004
263 #define RocdecAvcPicture_FLAGS_SHORT_TERM_REFERENCE 0x00000008
264 #define RocdecAvcPicture_FLAGS_LONG_TERM_REFERENCE 0x00000010
265 #define RocdecAvcPicture_FLAGS_NON_EXISTING 0x00000020
266 
267 /*********************************************************/
272 /*********************************************************/
273 typedef struct _RocdecHevcPicture {
274  int pic_idx;
277 
280  int poc;
281  uint32_t flags;
282  uint32_t reserved[4];
284 
285 /* flags in RocdecHevcPicture could be OR of the following */
286 #define RocdecHevcPicture_INVALID 0x00000001
290 #define RocdecHevcPicture_FIELD_PIC 0x00000002
295 #define RocdecHevcPicture_BOTTOM_FIELD 0x00000004
297 #define RocdecHevcPicture_LONG_TERM_REFERENCE 0x00000008
312 #define RocdecHevcPicture_RPS_ST_CURR_BEFORE 0x00000010
317 #define RocdecHevcPicture_RPS_ST_CURR_AFTER 0x00000020
322 #define RocdecHevcPicture_RPS_LT_CURR 0x00000040
323 
324 /***********************************************************/
329 /***********************************************************/
330 typedef struct _RocdecJPEGPicParams {
331  int reserved;
333 
334 /***********************************************************/
339 /***********************************************************/
340 typedef struct _RocdecMpeg2QMatrix {
341  int32_t load_intra_quantiser_matrix;
342  int32_t load_non_intra_quantiser_matrix;
343  int32_t load_chroma_intra_quantiser_matrix;
344  int32_t load_chroma_non_intra_quantiser_matrix;
345  uint8_t intra_quantiser_matrix[64];
346  uint8_t non_intra_quantiser_matrix[64];
347  uint8_t chroma_intra_quantiser_matrix[64];
348  uint8_t chroma_non_intra_quantiser_matrix[64];
350 
351 /***********************************************************/
356 /***********************************************************/
357 typedef struct _RocdecMpeg2PicParams {
358  uint16_t horizontal_size;
359  uint16_t vertical_size;
360  uint32_t forward_reference_pic; // surface_id for forward reference
361  uint32_t backward_reference_picture; // surface_id for backward reference
362  /* meanings of the following fields are the same as in the standard */
363  int32_t picture_coding_type;
364  int32_t f_code; /* pack all four fcode into this */
365  union {
366  struct {
367  uint32_t intra_dc_precision : 2;
368  uint32_t picture_structure : 2;
369  uint32_t top_field_first : 1;
370  uint32_t frame_pred_frame_dct : 1;
371  uint32_t concealment_motion_vectors : 1;
372  uint32_t q_scale_type : 1;
373  uint32_t intra_vlc_format : 1;
374  uint32_t alternate_scan : 1;
375  uint32_t repeat_first_field : 1;
376  uint32_t progressive_frame : 1;
377  uint32_t is_first_field : 1; // indicate whether the current field is the first field for field picture
378  } bits;
379  uint32_t value;
380  } picture_coding_extension;
381 
382  RocdecMpeg2QMatrix q_matrix;
383  uint32_t reserved[4];
385 
386 /***********************************************************/
391 /***********************************************************/
392 typedef struct _RocdecVc1PicParams {
393  int reserved;
395 
396 /***********************************************************/
402 /***********************************************************/
403 typedef struct _RocdecAvcPicParams {
404  RocdecAvcPicture curr_pic;
405  RocdecAvcPicture ref_frames[16]; /* in DPB */
406  uint16_t picture_width_in_mbs_minus1;
407  uint16_t picture_height_in_mbs_minus1;
408  uint8_t bit_depth_luma_minus8;
409  uint8_t bit_depth_chroma_minus8;
410  uint8_t num_ref_frames;
411  union {
412  struct {
413  uint32_t chroma_format_idc : 2;
414  uint32_t residual_colour_transform_flag : 1;
415  uint32_t gaps_in_frame_num_value_allowed_flag : 1;
416  uint32_t frame_mbs_only_flag : 1;
417  uint32_t mb_adaptive_frame_field_flag : 1;
418  uint32_t direct_8x8_inference_flag : 1;
419  uint32_t MinLumaBiPredSize8x8 : 1; /* see A.3.3.2 */
420  uint32_t log2_max_frame_num_minus4 : 4;
421  uint32_t pic_order_cnt_type : 2;
422  uint32_t log2_max_pic_order_cnt_lsb_minus4 : 4;
423  uint32_t delta_pic_order_always_zero_flag : 1;
424  } bits;
425  uint32_t value;
426  } seq_fields;
427 
428  // FMO/ASO
429  uint8_t num_slice_groups_minus1;
430  uint8_t slice_group_map_type;
431  uint16_t slice_group_change_rate_minus1;
432  int8_t pic_init_qp_minus26;
433  int8_t pic_init_qs_minus26;
434  int8_t chroma_qp_index_offset;
435  int8_t second_chroma_qp_index_offset;
436  union {
437  struct {
438  uint32_t entropy_coding_mode_flag : 1;
439  uint32_t weighted_pred_flag : 1;
440  uint32_t weighted_bipred_idc : 2;
441  uint32_t transform_8x8_mode_flag : 1;
442  uint32_t field_pic_flag : 1;
443  uint32_t constrained_intra_pred_flag : 1;
444  uint32_t pic_order_present_flag : 1;
445  uint32_t deblocking_filter_control_present_flag : 1;
446  uint32_t redundant_pic_cnt_present_flag : 1;
447  uint32_t reference_pic_flag : 1; /* nal_ref_idc != 0 */
448  } bits;
449  uint32_t value;
450  } pic_fields;
451  uint16_t frame_num;
452 
453  uint32_t reserved[8];
455 
456 /***********************************************************/
461 /***********************************************************/
462 typedef struct _RocdecAvcSliceParams {
463  uint32_t slice_data_size; // slice size in bytes
464  uint32_t slice_data_offset; // byte offset of the current slice in the slice data buffer
465  uint32_t slice_data_flag; /* see VA_SLICE_DATA_FLAG_XXX defintions */
477  uint16_t first_mb_in_slice;
478  uint8_t slice_type;
479  uint8_t direct_spatial_mv_pred_flag;
480  uint8_t num_ref_idx_l0_active_minus1;
481  uint8_t num_ref_idx_l1_active_minus1;
482  uint8_t cabac_init_idc;
483  int8_t slice_qp_delta;
484  uint8_t disable_deblocking_filter_idc;
485  int8_t slice_alpha_c0_offset_div2;
486  int8_t slice_beta_offset_div2;
487  RocdecAvcPicture ref_pic_list_0[32]; // 8.2.4.2
488  RocdecAvcPicture ref_pic_list_1[32]; // 8.2.4.2
489  uint8_t luma_log2_weight_denom;
490  uint8_t chroma_log2_weight_denom;
491  uint8_t luma_weight_l0_flag;
492  int16_t luma_weight_l0[32];
493  int16_t luma_offset_l0[32];
494  uint8_t chroma_weight_l0_flag;
495  int16_t chroma_weight_l0[32][2];
496  int16_t chroma_offset_l0[32][2];
497  uint8_t luma_weight_l1_flag;
498  int16_t luma_weight_l1[32];
499  int16_t luma_offset_l1[32];
500  uint8_t chroma_weight_l1_flag;
501  int16_t chroma_weight_l1[32][2];
502  int16_t chroma_offset_l1[32][2];
503  uint32_t reserved[4];
505 
506 /***********************************************************/
511 /***********************************************************/
512 typedef struct _RocdecAvcIQMatrix {
514  uint8_t scaling_list_4x4[6][16];
516  uint8_t scaling_list_8x8[2][64];
518  uint32_t reserved[4];
520 
521 /***********************************************************/
526 /***********************************************************/
527 typedef struct _RocdecHevcPicParams {
528  RocdecHevcPicture curr_pic;
529  RocdecHevcPicture ref_frames[15]; /* reference frame list in DPB */
530  uint16_t picture_width_in_luma_samples;
531  uint16_t picture_height_in_luma_samples;
532  union {
533  struct {
535  uint32_t chroma_format_idc : 2;
536  uint32_t separate_colour_plane_flag : 1;
537  uint32_t pcm_enabled_flag : 1;
538  uint32_t scaling_list_enabled_flag : 1;
539  uint32_t transform_skip_enabled_flag : 1;
540  uint32_t amp_enabled_flag : 1;
541  uint32_t strong_intra_smoothing_enabled_flag : 1;
542  uint32_t sign_data_hiding_enabled_flag : 1;
543  uint32_t constrained_intra_pred_flag : 1;
544  uint32_t cu_qp_delta_enabled_flag : 1;
545  uint32_t weighted_pred_flag : 1;
546  uint32_t weighted_bipred_flag : 1;
547  uint32_t transquant_bypass_enabled_flag : 1;
548  uint32_t tiles_enabled_flag : 1;
549  uint32_t entropy_coding_sync_enabled_flag : 1;
550  uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
551  uint32_t loop_filter_across_tiles_enabled_flag : 1;
552  uint32_t pcm_loop_filter_disabled_flag : 1;
556  uint32_t no_bi_pred_flag : 1;
557  uint32_t reserved_bits : 11;
558  } bits;
559  uint32_t value;
560  } pic_fields;
561 
564  uint8_t bit_depth_luma_minus8;
565  uint8_t bit_depth_chroma_minus8;
566  uint8_t pcm_sample_bit_depth_luma_minus1;
567  uint8_t pcm_sample_bit_depth_chroma_minus1;
568  uint8_t log2_min_luma_coding_block_size_minus3;
569  uint8_t log2_diff_max_min_luma_coding_block_size;
570  uint8_t log2_min_transform_block_size_minus2;
571  uint8_t log2_diff_max_min_transform_block_size;
572  uint8_t log2_min_pcm_luma_coding_block_size_minus3;
573  uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
574  uint8_t max_transform_hierarchy_depth_intra;
575  uint8_t max_transform_hierarchy_depth_inter;
576  int8_t init_qp_minus26;
577  uint8_t diff_cu_qp_delta_depth;
578  int8_t pps_cb_qp_offset;
579  int8_t pps_cr_qp_offset;
580  uint8_t log2_parallel_merge_level_minus2;
581  uint8_t num_tile_columns_minus1;
582  uint8_t num_tile_rows_minus1;
587  uint16_t column_width_minus1[19];
588  uint16_t row_height_minus1[21];
589 
590  union {
591  struct {
594  uint32_t long_term_ref_pics_present_flag : 1;
595  uint32_t sps_temporal_mvp_enabled_flag : 1;
596  uint32_t cabac_init_present_flag : 1;
597  uint32_t output_flag_present_flag : 1;
598  uint32_t dependent_slice_segments_enabled_flag : 1;
599  uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
600  uint32_t sample_adaptive_offset_enabled_flag : 1;
601  uint32_t deblocking_filter_override_enabled_flag : 1;
602  uint32_t pps_disable_deblocking_filter_flag : 1;
603  uint32_t slice_segment_header_extension_present_flag : 1;
604 
606  uint32_t rap_pic_flag : 1;
608  uint32_t idr_pic_flag : 1;
610  uint32_t intra_pic_flag : 1;
611 
612  uint32_t reserved_bits : 18;
613  } bits;
614  uint32_t value;
615  } slice_parsing_fields;
616 
619  uint8_t num_short_term_ref_pic_sets;
620  uint8_t num_long_term_ref_pic_sps;
621  uint8_t num_ref_idx_l0_default_active_minus1;
622  uint8_t num_ref_idx_l1_default_active_minus1;
623  int8_t pps_beta_offset_div2;
624  int8_t pps_tc_offset_div2;
625  uint8_t num_extra_slice_header_bits;
636  uint32_t st_rps_bits;
637  uint32_t reserved[8];
639 
640 /***********************************************************/
645 /***********************************************************/
646 typedef struct _RocdecHevcSliceParams {
650  uint32_t slice_data_size;
654  uint32_t slice_data_flag;
673  uint8_t ref_pic_list[2][15];
674  union {
675  uint32_t value;
676  struct {
678  uint32_t last_slice_of_pic : 1;
681  uint32_t slice_type : 2;
682  uint32_t color_plane_id : 2;
683  uint32_t slice_sao_luma_flag : 1;
684  uint32_t slice_sao_chroma_flag : 1;
685  uint32_t mvd_l1_zero_flag : 1;
686  uint32_t cabac_init_flag : 1;
687  uint32_t slice_temporal_mvp_enabled_flag : 1;
688  uint32_t slice_deblocking_filter_disabled_flag : 1;
689  uint32_t collocated_from_l0_flag : 1;
690  uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
691  uint32_t reserved : 18;
692  } fields;
693  } long_slice_flags;
694 
697  uint8_t num_ref_idx_l0_active_minus1;
698  uint8_t num_ref_idx_l1_active_minus1;
699  int8_t slice_qp_delta;
700  int8_t slice_cb_qp_offset;
701  int8_t slice_cr_qp_offset;
702  int8_t slice_beta_offset_div2;
703  int8_t slice_tc_offset_div2;
704  uint8_t luma_log2_weight_denom;
705  int8_t delta_chroma_log2_weight_denom;
706  int8_t delta_luma_weight_l0[15];
707  int8_t luma_offset_l0[15];
708  int8_t delta_chroma_weight_l0[15][2];
710  int8_t chroma_offset_l0[15][2];
713  int8_t luma_offset_l1[15];
714  int8_t delta_chroma_weight_l1[15][2];
716  int8_t chroma_offset_l1[15][2];
719  uint16_t num_entry_point_offsets;
720  uint16_t entry_offset_to_subset_array;
723 
724  uint32_t reserved[2];
726 
727 /***********************************************************/
736 /***********************************************************/
737 typedef struct _RocdecHevcIQMatrix {
743  uint8_t scaling_list_4x4[6][16];
749  uint8_t scaling_list_8x8[6][64];
755  uint8_t scaling_list_16x16[6][64];
761  uint8_t scaling_list_32x32[2][64];
776  uint32_t reserved[4];
778 
782  union {
783  struct {
791  uint32_t enabled : 1;
797  uint32_t update_map : 1;
803  uint32_t temporal_update : 1;
809  uint32_t update_data : 1;
810 
812  uint32_t reserved : 28;
813  } bits;
814  uint32_t value;
815  } segment_info_fields;
816 
838  int16_t feature_data[8][8];
839 
845  uint8_t feature_mask[8];
846 
848  uint32_t reserved[4];
850 
854  union {
855  struct {
860  uint32_t apply_grain : 1;
861  uint32_t chroma_scaling_from_luma : 1;
862  uint32_t grain_scaling_minus_8 : 2;
863  uint32_t ar_coeff_lag : 2;
864  uint32_t ar_coeff_shift_minus_6 : 2;
865  uint32_t grain_scale_shift : 2;
866  uint32_t overlap_flag : 1;
867  uint32_t clip_to_restricted_range : 1;
869  uint32_t reserved : 20;
870  } bits;
871  uint32_t value;
872  } film_grain_info_fields;
873 
874  uint16_t grain_seed;
875  /* value range [0..14] */
876  uint8_t num_y_points;
877  uint8_t point_y_value[14];
878  uint8_t point_y_scaling[14];
879  /* value range [0..10] */
880  uint8_t num_cb_points;
881  uint8_t point_cb_value[10];
882  uint8_t point_cb_scaling[10];
883  /* value range [0..10] */
884  uint8_t num_cr_points;
885  uint8_t point_cr_value[10];
886  uint8_t point_cr_scaling[10];
887  /* value range [-128..127] */
888  int8_t ar_coeffs_y[24];
889  int8_t ar_coeffs_cb[25];
890  int8_t ar_coeffs_cr[25];
891  uint8_t cb_mult;
892  uint8_t cb_luma_mult;
893  uint16_t cb_offset;
894  uint8_t cr_mult;
895  uint8_t cr_luma_mult;
896  uint16_t cr_offset;
897 
899  uint32_t reserved[4];
901 
902 typedef enum {
914 
918 
924  int32_t wmmat[8];
925 
926  /* valid or invalid on affine set */
927  uint8_t invalid;
928 
930  uint32_t reserved[4];
932 
933 /***********************************************************/
938 /***********************************************************/
939 typedef struct _RocdecAV1PicParams {
945  uint8_t profile;
946 
947  uint8_t order_hint_bits_minus_1;
948 
955  uint8_t bit_depth_idx;
956 
959 
960  union {
961  struct {
962  uint32_t still_picture : 1;
963  uint32_t use_128x128_superblock : 1;
964  uint32_t enable_filter_intra : 1;
965  uint32_t enable_intra_edge_filter : 1;
966 
969  uint32_t enable_masked_compound : 1;
970 
971  uint32_t enable_dual_filter : 1;
972  uint32_t enable_order_hint : 1;
973  uint32_t enable_jnt_comp : 1;
974  uint32_t enable_cdef : 1;
975  uint32_t mono_chrome : 1;
976  uint32_t color_range : 1;
977  uint32_t subsampling_x : 1;
978  uint32_t subsampling_y : 1;
979  uint32_t chroma_sample_position : 1;
980  uint32_t film_grain_params_present : 1;
982  uint32_t reserved : 16;
983  } fields;
984  uint32_t value;
985  } seq_info_fields;
986 
993 
999 
1005 
1025 
1032  uint16_t frame_height_minus1;
1033 
1039  uint16_t output_frame_height_in_tiles_minus_1;
1040 
1051 
1062  uint8_t ref_frame_idx[7];
1063 
1072  uint8_t order_hint;
1073 
1074  RocdecAv1SegmentationStruct seg_info;
1075  RocdecAv1FilmGrainStruct film_grain_info;
1076 
1082  uint8_t tile_cols;
1083  uint8_t tile_rows;
1084 
1085  /* The width/height of a tile minus 1 in units of superblocks. Though the
1086  * maximum number of tiles is 64, since ones of the last tile are computed
1087  * from ones of the other tiles and frame_width/height, they are not
1088  * necessarily specified.
1089  */
1090  uint16_t width_in_sbs_minus_1[63];
1091  uint16_t height_in_sbs_minus_1[63];
1092 
1098 
1099  /* specify the tile index for context updating */
1100  uint16_t context_update_tile_id;
1101 
1102  union {
1103  struct {
1117  uint32_t frame_type : 2;
1118  uint32_t show_frame : 1;
1119  uint32_t showable_frame : 1;
1120  uint32_t error_resilient_mode : 1;
1121  uint32_t disable_cdf_update : 1;
1122  uint32_t allow_screen_content_tools : 1;
1123  uint32_t force_integer_mv : 1;
1124  uint32_t allow_intrabc : 1;
1125  uint32_t use_superres : 1;
1126  uint32_t allow_high_precision_mv : 1;
1127  uint32_t is_motion_mode_switchable : 1;
1128  uint32_t use_ref_frame_mvs : 1;
1129  /* disable_frame_end_update_cdf is coded as refresh_frame_context. */
1130  uint32_t disable_frame_end_update_cdf : 1;
1131  uint32_t uniform_tile_spacing_flag : 1;
1132  uint32_t allow_warped_motion : 1;
1134  uint32_t large_scale_tile : 1;
1135 
1137  uint32_t reserved : 15;
1138  } bits;
1139  uint32_t value;
1140  } pic_info_fields;
1141 
1147 
1151  uint8_t interp_filter;
1152 
1156  uint8_t filter_level[2];
1157 
1162  uint8_t filter_level_v;
1163 
1164  union {
1165  struct {
1169  uint8_t sharpness_level : 3;
1170  uint8_t mode_ref_delta_enabled : 1;
1171  uint8_t mode_ref_delta_update : 1;
1172 
1174  uint8_t reserved : 3;
1175  } bits;
1176  uint8_t value;
1177  } loop_filter_info_fields;
1178 
1183  int8_t ref_deltas[8];
1184 
1189  int8_t mode_deltas[2];
1190 
1196  uint8_t base_qindex;
1217 
1220  union {
1221  struct {
1222  uint16_t using_qmatrix : 1;
1227  uint16_t qm_y : 4;
1228  uint16_t qm_u : 4;
1229  uint16_t qm_v : 4;
1230 
1232  uint16_t reserved : 3;
1233  } bits;
1234  uint16_t value;
1236 
1237  union {
1238  struct {
1241  uint32_t delta_q_present_flag : 1;
1242  uint32_t log2_delta_q_res : 2;
1243 
1247  uint32_t log2_delta_lf_res : 2;
1248 
1251  uint32_t delta_lf_multi : 1;
1252 
1256  uint32_t tx_mode : 2;
1257 
1258  /* AV1 frame reference mode semantic */
1259  uint32_t reference_select : 1;
1260 
1261  uint32_t reduced_tx_set_used : 1;
1262 
1263  uint32_t skip_mode_present : 1;
1264 
1266  uint32_t reserved : 20;
1267  } bits;
1268  uint32_t value;
1269  } mode_control_fields;
1270 
1273  /* value range [0..3] */
1275  /* value range [0..3] */
1276  uint8_t cdef_bits;
1277 
1292  /* value range [0..63] */
1293  uint8_t cdef_y_strengths[8];
1294  /* value range [0..63] */
1295  uint8_t cdef_uv_strengths[8];
1296 
1299  union {
1300  struct {
1301  uint16_t yframe_restoration_type : 2;
1302  uint16_t cbframe_restoration_type : 2;
1303  uint16_t crframe_restoration_type : 2;
1304  uint16_t lr_unit_shift : 2;
1305  uint16_t lr_uv_shift : 1;
1306 
1308  uint16_t reserved : 7;
1309  } bits;
1310  uint16_t value;
1312 
1316 
1320  uint32_t reserved[8];
1322 
1323 /***********************************************************/
1331 /***********************************************************/
1332 typedef struct _RocdecAv1SliceParams {
1347 
1348  uint16_t tile_row;
1349  uint16_t tile_column;
1350 
1351  uint16_t tg_start;
1352  uint16_t tg_end;
1353 
1360 
1366 
1368  uint32_t reserved[4];
1370 
1371 /******************************************************************************************/
1377 /******************************************************************************************/
1378 typedef struct _RocdecPicParams {
1385  // Bitstream data
1387  const uint8_t *bitstream_data;
1388  uint32_t num_slices;
1392  uint32_t reserved[30];
1394  // IN: Codec-specific data
1395  union {
1397  RocdecAvcPicParams avc;
1398  RocdecHevcPicParams hevc;
1399  RocdecVc1PicParams vc1;
1400  RocdecJPEGPicParams jpeg;
1401  RocdecAv1PicParams av1;
1402  uint32_t codec_reserved[256];
1403  } pic_params;
1404 
1407  union {
1408  // Todo: Add slice params defines for other codecs.
1409  RocdecAvcSliceParams *avc;
1410  RocdecHevcSliceParams *hevc;
1411  RocdecAv1SliceParams *av1;
1413 
1414  union {
1415  // Todo: Added IQ matrix defines for other codecs.
1416  RocdecAvcIQMatrix avc;
1417  RocdecHevcIQMatrix hevc;
1418  } iq_matrix;
1419 } RocdecPicParams;
1420 
1421 /******************************************************/
1426 /******************************************************/
1427 typedef struct _RocdecProcParams {
1430  uint32_t reserved_flags[2];
1432  // The fields below are used for raw YUV input
1433  uint64_t raw_input_dptr;
1434  uint32_t raw_input_pitch;
1435  uint32_t raw_input_format;
1436  uint64_t raw_output_dptr;
1437  uint32_t raw_output_pitch;
1439  uint32_t reserved[16];
1441 
1442 /*****************************************************************************************************/
1446 /*****************************************************************************************************/
1447 extern rocDecStatus ROCDECAPI rocDecCreateDecoder(rocDecDecoderHandle *decoder_handle, RocDecoderCreateInfo *decoder_create_info);
1448 
1449 /*****************************************************************************************************/
1453 /*****************************************************************************************************/
1454 extern rocDecStatus ROCDECAPI rocDecDestroyDecoder(rocDecDecoderHandle decoder_handle);
1455 
1456 /**********************************************************************************************************************/
1463 /**********************************************************************************************************************/
1464 extern rocDecStatus ROCDECAPI rocDecGetDecoderCaps(RocdecDecodeCaps *decode_caps);
1465 
1466 /*****************************************************************************************************/
1471 /*****************************************************************************************************/
1472 extern rocDecStatus ROCDECAPI rocDecDecodeFrame(rocDecDecoderHandle decoder_handle, RocdecPicParams *pic_params);
1473 
1474 /************************************************************************************************************/
1480 /************************************************************************************************************/
1481 extern rocDecStatus ROCDECAPI rocDecGetDecodeStatus(rocDecDecoderHandle decoder_handle, int pic_idx, RocdecDecodeStatus *decode_status);
1482 
1483 /*********************************************************************************************************/
1488 /*********************************************************************************************************/
1489 extern rocDecStatus ROCDECAPI rocDecReconfigureDecoder(rocDecDecoderHandle decoder_handle, RocdecReconfigureDecoderInfo *reconfig_params);
1490 
1491 /************************************************************************************************************************/
1498 /************************************************************************************************************************/
1499 extern rocDecStatus ROCDECAPI rocDecGetVideoFrame(rocDecDecoderHandle decoder_handle, int pic_idx,
1500  void *dev_mem_ptr[3], uint32_t (&horizontal_pitch)[3],
1501  RocdecProcParams *vid_postproc_params);
1502 
1503 /*****************************************************************************************************/
1507 /*****************************************************************************************************/
1508 extern const char *ROCDECAPI rocDecGetErrorName(rocDecStatus rocdec_status);
1509 
1510 #ifdef __cplusplus
1511 }
1512 #endif
rocDecStatus ROCDECAPI rocDecCreateDecoder(rocDecDecoderHandle *decoder_handle, RocDecoderCreateInfo *decoder_create_info)
rocDecStatus ROCDECAPI rocDecReconfigureDecoder(rocDecDecoderHandle decoder_handle, RocdecReconfigureDecoderInfo *reconfig_params)
int poc
picture order count. ! in HEVC, POCs for top and bottom fields of same picture should take different ...
Definition: rocdecode.h:280
rocDecStatus ROCDECAPI rocDecDecodeFrame(rocDecDecoderHandle decoder_handle, RocdecPicParams *pic_params)
rocDecStatus ROCDECAPI rocDecDestroyDecoder(rocDecDecoderHandle decoder_handle)
const char *ROCDECAPI rocDecGetErrorName(rocDecStatus rocdec_status)
rocDecStatus ROCDECAPI rocDecGetDecodeStatus(rocDecDecoderHandle decoder_handle, int pic_idx, RocdecDecodeStatus *decode_status)
rocDecVideoCodec_enum
Definition: rocdecode.h:78
@ rocDecVideoCodec_NV12
Definition: rocdecode.h:92
@ rocDecVideoCodec_YV12
Definition: rocdecode.h:91
@ rocDecVideoCodec_YUV420
Definition: rocdecode.h:90
@ rocDecVideoCodec_UYVY
Definition: rocdecode.h:94
@ rocDecVideoCodec_YUYV
Definition: rocdecode.h:93
@ rocDecVideoCodec_AV1
Definition: rocdecode.h:84
@ rocDecVideoCodec_MPEG4
Definition: rocdecode.h:81
@ rocDecVideoCodec_HEVC
Definition: rocdecode.h:83
@ rocDecVideoCodec_MPEG1
Definition: rocdecode.h:79
@ rocDecVideoCodec_JPEG
Definition: rocdecode.h:87
@ rocDecVideoCodec_VP9
Definition: rocdecode.h:86
@ rocDecVideoCodec_AVC
Definition: rocdecode.h:82
@ rocDecVideoCodec_MPEG2
Definition: rocdecode.h:80
@ rocDecVideoCodec_VP8
Definition: rocdecode.h:85
@ rocDecVideoCodec_NumCodecs
Definition: rocdecode.h:88
struct _RocdecAv1SegmentationStruct RocdecAv1SegmentationStruct
Segmentation Information for AV1.
rocDecVideoSurfaceFormat_enum
Definition: rocdecode.h:103
@ rocDecVideoSurfaceFormat_YUV444_16Bit
Definition: rocdecode.h:108
@ rocDecVideoSurfaceFormat_P016
Definition: rocdecode.h:105
@ rocDecVideoSurfaceFormat_NV12
Definition: rocdecode.h:104
@ rocDecVideoSurfaceFormat_YUV444
Definition: rocdecode.h:107
struct _RocdecAv1FilmGrainStruct RocdecAv1FilmGrainStruct
Film Grain Information for AV1.
void * rocDecDecoderHandle
Definition: rocdecode.h:52
rocDecVideoChromaFormat_enum
Definition: rocdecode.h:118
@ rocDecVideoChromaFormat_422
Definition: rocdecode.h:121
@ rocDecVideoChromaFormat_444
Definition: rocdecode.h:122
@ rocDecVideoChromaFormat_420
Definition: rocdecode.h:120
@ rocDecVideoChromaFormat_Monochrome
Definition: rocdecode.h:119
RocdecAv1TransformationType
Definition: rocdecode.h:902
@ RocdecAv1TransformationTranslation
Definition: rocdecode.h:906
@ RocdecAv1TransformationAffine
Definition: rocdecode.h:910
@ RocdecAv1TransformationCount
Definition: rocdecode.h:912
@ RocdecAv1TransformationRotzoom
Definition: rocdecode.h:908
@ RocdecAv1TransformationIdentity
Definition: rocdecode.h:904
Definition: rocdecode.h:167
uint32_t height
Definition: rocdecode.h:171
uint32_t width
Definition: rocdecode.h:170
uint32_t target_width
Definition: rocdecode.h:190
uint32_t max_height
Definition: rocdecode.h:182
uint32_t bit_depth_minus_8
Definition: rocdecode.h:175
uint32_t num_output_surfaces
Definition: rocdecode.h:192
uint8_t device_id
Definition: rocdecode.h:168
struct _RocDecoderCreateInfo::@1 target_rect
rocDecVideoChromaFormat chroma_format
Definition: rocdecode.h:174
uint32_t num_decode_surfaces
Definition: rocdecode.h:172
rocDecVideoCodec codec_type
Definition: rocdecode.h:173
uint32_t max_width
Definition: rocdecode.h:181
rocDecVideoSurfaceFormat output_format
Definition: rocdecode.h:189
uint32_t target_height
Definition: rocdecode.h:191
struct _RocDecoderCreateInfo::@0 display_rect
uint32_t intra_decode_only
Definition: rocdecode.h:176
uint32_t reserved_2[4]
Definition: rocdecode.h:200
Definition: rocdecode.h:939
int8_t u_ac_delta_q
U AC delta from Y AC value range [-64..63].
Definition: rocdecode.h:1208
uint8_t filter_level_u
chroma loop filter levels. value range [0..63].
Definition: rocdecode.h:1161
int ref_frame_map[8]
Surface indices of reference frames in DPB.
Definition: rocdecode.h:1050
uint8_t tile_cols
tile structure When uniform_tile_spacing_flag == 1, width_in_sbs_minus_1[] and height_in_sbs_minus_1[...
Definition: rocdecode.h:1082
uint8_t matrix_coefficients
corresponds to AV1 spec variable of the same name.
Definition: rocdecode.h:958
uint8_t sharpness_level
flags for reference pictures same syntax and semantic as those in AV1 code
Definition: rocdecode.h:1169
int8_t u_dc_delta_q
U DC delta from Y AC value range [-64..63].
Definition: rocdecode.h:1204
uint16_t qm_y
qm level value range [0..15] Invalid if using_qmatrix equals 0.
Definition: rocdecode.h:1227
int8_t ref_deltas[8]
The adjustment needed for the filter level based on the chosen reference frame. value range [-64....
Definition: rocdecode.h:1183
uint8_t bit_depth_idx
bit depth index value range [0..2] 0 - bit depth 8; 1 - bit depth 10; 2 - bit depth 12;
Definition: rocdecode.h:955
uint32_t tx_mode
read_tx_mode value range [0..2]
Definition: rocdecode.h:1256
uint16_t frame_width_minus1
Picture resolution minus 1 Picture original resolution. If SuperRes is enabled, this is the upscaled ...
Definition: rocdecode.h:1031
union _RocdecAV1PicParams::@25 loop_restoration_fields
loop restoration parameters
uint8_t anchor_frames_num
number of anchor frames for large scale tile This parameter gives the number of entries of anchor_fra...
Definition: rocdecode.h:1004
uint8_t cdef_y_strengths[8]
Definition: rocdecode.h:1293
int8_t v_ac_delta_q
V AC delta from Y AC value range [-64..63].
Definition: rocdecode.h:1216
int8_t v_dc_delta_q
V DC delta from Y AC value range [-64..63].
Definition: rocdecode.h:1212
uint8_t reserved
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:1174
uint8_t primary_ref_frame
primary reference frame index Index into ref_frame_idx[], specifying which reference frame contains p...
Definition: rocdecode.h:1071
uint32_t enable_interintra_compound
Definition: rocdecode.h:968
int current_frame
Picture level information.
Definition: rocdecode.h:992
uint8_t cdef_damping_minus_3
CDEF parameters.
Definition: rocdecode.h:1274
uint8_t profile
sequence level information
Definition: rocdecode.h:945
uint8_t ref_frame_idx[7]
Reference frame indices.
Definition: rocdecode.h:1062
uint8_t filter_level[2]
luma loop filter levels. value range [0..63].
Definition: rocdecode.h:1156
uint16_t reserved
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:1232
union _RocdecAV1PicParams::@23 qmatrix_fields
quantization_matrix
uint32_t delta_q_present_flag
delta_q parameters
Definition: rocdecode.h:1241
uint16_t output_frame_width_in_tiles_minus_1
Output frame buffer size in unit of tiles Valid only when large_scale_tile equals 1....
Definition: rocdecode.h:1038
uint32_t large_scale_tile
indicate if current frame in large scale tile mode
Definition: rocdecode.h:1134
int8_t mode_deltas[2]
The adjustment needed for the filter level based on the chosen mode. value range [-64....
Definition: rocdecode.h:1189
uint8_t superres_scale_denominator
Supper resolution scale denominator. When use_superres=1, superres_scale_denominator must be in the r...
Definition: rocdecode.h:1146
uint32_t frame_type
flags for current picture same syntax and semantic as those in AV1 code
Definition: rocdecode.h:1117
uint32_t delta_lf_multi
CONFIG_LOOPFILTER_LEVEL.
Definition: rocdecode.h:1251
uint32_t delta_lf_present_flag
delta_lf parameters
Definition: rocdecode.h:1246
uint8_t base_qindex
quantization
Definition: rocdecode.h:1196
RocdecAv1WarpedMotionParams wm[7]
global motion
Definition: rocdecode.h:1315
int8_t y_dc_delta_q
Y DC delta from Y AC value range [-64..63].
Definition: rocdecode.h:1200
int current_display_picture
display buffer of current picture Used for film grain applied decoded picture. Valid only when apply_...
Definition: rocdecode.h:998
uint8_t interp_filter
Interpolation filter. value range [0..4].
Definition: rocdecode.h:1151
int * anchor_frames_list
anchor frame list for large scale tile For large scale tile applications, the anchor frames could com...
Definition: rocdecode.h:1024
uint16_t tile_count_minus_1
number of tiles minus 1 in large scale tile list Same as AV1 semantic element. Valid only when large_...
Definition: rocdecode.h:1097
uint32_t reserved
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:982
Film Grain Information for AV1.
Definition: rocdecode.h:853
uint32_t apply_grain
Specify whether or not film grain is applied on current frame. If set to 0, all the rest parameters s...
Definition: rocdecode.h:860
uint32_t reserved
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:869
Segmentation Information for AV1.
Definition: rocdecode.h:781
uint32_t enabled
Definition: rocdecode.h:791
uint32_t temporal_update
Definition: rocdecode.h:803
int16_t feature_data[8][8]
Segmentation parameters for current frame. feature_data[segment_id][feature_id] where segment_id has ...
Definition: rocdecode.h:838
uint32_t update_map
Definition: rocdecode.h:797
uint32_t reserved
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:812
uint32_t update_data
Definition: rocdecode.h:809
uint8_t feature_mask[8]
indicates if a feature is enabled or not. Each bit field itself is the feature_id....
Definition: rocdecode.h:845
Definition: rocdecode.h:1332
uint32_t slice_data_flag
Definition: rocdecode.h:1346
uint8_t anchor_frame_idx
anchor frame index for large scale tile. index into an array AnchorFrames of the frames that the tile...
Definition: rocdecode.h:1359
uint32_t slice_data_size
The byte count of current tile in the bitstream buffer, starting from first byte of the buffer....
Definition: rocdecode.h:1338
uint16_t tile_idx_in_tile_list
tile index in the tile list. Valid only when large_scale_tile is enabled. Driver uses this field to d...
Definition: rocdecode.h:1365
uint32_t slice_data_offset
Definition: rocdecode.h:1342
uint32_t reserved[4]
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:1368
Definition: rocdecode.h:915
RocdecAv1TransformationType wmtype
Specify the type of warped motion.
Definition: rocdecode.h:917
int32_t wmmat[8]
Specify warp motion parameters wm.wmmat[] corresponds to gm_params[][] in spec. Details in AV1 spec s...
Definition: rocdecode.h:924
uint32_t reserved[4]
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:930
Definition: rocdecode.h:512
uint8_t scaling_list_8x8[2][64]
8x8 scaling list, in raster scan order.
Definition: rocdecode.h:516
uint32_t reserved[4]
Reserved bytes for future use, must be zero.
Definition: rocdecode.h:518
uint8_t scaling_list_4x4[6][16]
4x4 scaling list, in raster scan order.
Definition: rocdecode.h:514
Definition: rocdecode.h:403
Definition: rocdecode.h:250
int32_t top_field_order_cnt
Definition: rocdecode.h:254
int pic_idx
Definition: rocdecode.h:251
uint32_t flags
Definition: rocdecode.h:253
int32_t bottom_field_order_cnt
Definition: rocdecode.h:255
uint32_t frame_idx
Definition: rocdecode.h:252
Definition: rocdecode.h:462
uint16_t slice_data_bit_offset
Bit offset from NAL Header Unit to the begining of slice_data().
Definition: rocdecode.h:476
Definition: rocdecode.h:146
uint16_t min_width
Definition: rocdecode.h:157
uint32_t reserved_1[3]
Definition: rocdecode.h:151
uint32_t reserved_2[6]
Definition: rocdecode.h:159
uint8_t num_decoders
Definition: rocdecode.h:153
rocDecVideoCodec codec_type
Definition: rocdecode.h:148
uint8_t device_id
Definition: rocdecode.h:147
uint16_t min_height
Definition: rocdecode.h:158
uint32_t max_width
Definition: rocdecode.h:155
rocDecVideoChromaFormat chroma_format
Definition: rocdecode.h:149
uint16_t output_format_mask
Definition: rocdecode.h:154
uint8_t is_supported
Definition: rocdecode.h:152
uint32_t max_height
Definition: rocdecode.h:156
uint32_t bit_depth_minus_8
Definition: rocdecode.h:150
Definition: rocdecode.h:209
Definition: rocdecode.h:737
uint8_t scaling_list_8x8[6][64]
8x8 scaling, correspongs i = 1, MatrixID is in the range of 0 to 5, inclusive. And j is in the range ...
Definition: rocdecode.h:749
uint8_t scaling_list_4x4[6][16]
4x4 scaling, correspongs i = 0, MatrixID is in the range of 0 to 5, inclusive. And j is in the range ...
Definition: rocdecode.h:743
uint8_t scaling_list_dc_32x32[2]
DC values of the 32x32 scaling lists, corresponds to HEVC spec syntax scaling_list_dc_coef_minus8[ si...
Definition: rocdecode.h:775
uint8_t scaling_list_16x16[6][64]
16x16 scaling, correspongs i = 2, MatrixID is in the range of 0 to 5, inclusive. And j is in the rang...
Definition: rocdecode.h:755
uint8_t scaling_list_dc_16x16[6]
DC values of the 16x16 scaling lists, corresponds to HEVC spec syntax scaling_list_dc_coef_minus8[ si...
Definition: rocdecode.h:768
uint8_t scaling_list_32x32[2][64]
32x32 scaling, correspongs i = 3, MatrixID is in the range of 0 to 1, inclusive. And j is in the rang...
Definition: rocdecode.h:761
Definition: rocdecode.h:527
uint16_t column_width_minus1[19]
Definition: rocdecode.h:587
uint32_t idr_pic_flag
Definition: rocdecode.h:608
uint32_t chroma_format_idc
Definition: rocdecode.h:535
uint32_t st_rps_bits
number of bits that structure short_term_ref_pic_set( num_short_term_ref_pic_sets ) takes in slice se...
Definition: rocdecode.h:636
uint32_t no_bi_pred_flag
Definition: rocdecode.h:556
uint32_t intra_pic_flag
Definition: rocdecode.h:610
uint8_t sps_max_dec_pic_buffering_minus1
Definition: rocdecode.h:563
uint32_t no_pic_reordering_flag
Definition: rocdecode.h:554
uint32_t lists_modification_present_flag
Definition: rocdecode.h:593
uint32_t rap_pic_flag
Definition: rocdecode.h:606
uint8_t log2_max_pic_order_cnt_lsb_minus4
Definition: rocdecode.h:618
Definition: rocdecode.h:273
uint32_t flags
Definition: rocdecode.h:281
int pic_idx
Definition: rocdecode.h:274
uint32_t reserved[4]
Definition: rocdecode.h:282
Definition: rocdecode.h:646
uint32_t slice_segment_address
Definition: rocdecode.h:667
uint32_t slice_data_flag
Slice data buffer flags. See VA_SLICE_DATA_FLAG_XXX.
Definition: rocdecode.h:654
uint8_t five_minus_max_num_merge_cand
Definition: rocdecode.h:718
uint32_t slice_data_offset
The offset to the NAL unit header for this slice.
Definition: rocdecode.h:652
uint32_t last_slice_of_pic
Definition: rocdecode.h:678
uint32_t slice_data_size
Number of bytes in the slice data buffer for this slice counting from and including NAL unit header.
Definition: rocdecode.h:650
int8_t delta_luma_weight_l1[15]
Definition: rocdecode.h:712
int8_t chroma_offset_l1[15][2]
Definition: rocdecode.h:716
int8_t chroma_offset_l0[15][2]
Definition: rocdecode.h:710
uint16_t slice_data_num_emu_prevn_bytes
Number of emulation prevention bytes in slice header.
Definition: rocdecode.h:722
uint8_t collocated_ref_idx
Definition: rocdecode.h:696
uint8_t ref_pic_list[2][15]
index into ReferenceFrames[] ref_pic_list[0][] corresponds to RefPicList0[] of HEVC variable....
Definition: rocdecode.h:673
uint32_t dependent_slice_segment_flag
Definition: rocdecode.h:680
uint32_t slice_data_byte_offset
Byte offset from NAL unit header to the begining of slice_data().
Definition: rocdecode.h:665
Definition: rocdecode.h:330
Definition: rocdecode.h:357
Definition: rocdecode.h:340
Definition: rocdecode.h:1378
uint32_t reserved[30]
Definition: rocdecode.h:1392
RocdecMpeg2PicParams mpeg2
Definition: rocdecode.h:1396
int bottom_field_flag
Definition: rocdecode.h:1383
int intra_pic_flag
Definition: rocdecode.h:1391
int pic_height
Definition: rocdecode.h:1380
union _RocdecPicParams::@33 slice_params
Variable size array. The user should allocate one slice param struct for each slice.
int ref_pic_flag
Definition: rocdecode.h:1390
const uint8_t * bitstream_data
Definition: rocdecode.h:1387
uint32_t num_slices
Definition: rocdecode.h:1388
int curr_pic_idx
Definition: rocdecode.h:1381
int field_pic_flag
Definition: rocdecode.h:1382
uint32_t bitstream_data_len
Definition: rocdecode.h:1386
int second_field
Definition: rocdecode.h:1384
int pic_width
Definition: rocdecode.h:1379
Definition: rocdecode.h:1427
uint32_t raw_input_format
Definition: rocdecode.h:1435
uint64_t raw_output_dptr
Definition: rocdecode.h:1436
uint32_t raw_output_pitch
Definition: rocdecode.h:1437
int progressive_frame
Definition: rocdecode.h:1428
uint64_t raw_input_dptr
Definition: rocdecode.h:1433
uint32_t reserved_flags[2]
Definition: rocdecode.h:1430
uint32_t raw_input_pitch
Definition: rocdecode.h:1434
uint32_t raw_output_format
Definition: rocdecode.h:1438
uint32_t reserved[16]
Definition: rocdecode.h:1439
int top_field_first
Definition: rocdecode.h:1429
Definition: rocdecode.h:221
uint32_t target_width
Definition: rocdecode.h:224
struct _RocdecReconfigureDecoderInfo::@3 target_rect
uint32_t num_decode_surfaces
Definition: rocdecode.h:226
uint32_t height
Definition: rocdecode.h:223
uint32_t width
Definition: rocdecode.h:222
struct _RocdecReconfigureDecoderInfo::@2 display_rect
uint32_t reserved_1[12]
Definition: rocdecode.h:227
uint32_t reserved_2[11]
Definition: rocdecode.h:241
uint32_t target_height
Definition: rocdecode.h:225
Definition: rocdecode.h:392