21 #ifndef NVMEDIA_COMMON_DECODE_H
22 #define NVMEDIA_COMMON_DECODE_H
31 #include "nvmedia_core.h"
35 #define MAX_REFERENCE_FRAMES 16U
195 uint32_t frameNumDecodeOrder;
258 int32_t field_order_cnt[2];
269 uint16_t not_existing;
273 #define MAX_USER_SEI_PAYLOAD 128U
283 uint8_t frame_packing_arrangement_type;
286 uint8_t quincunx_sampling_flag;
289 uint8_t content_interpretation_flag;
293 uint8_t spatial_flipping_flag;
296 uint8_t frame0_flipped_flag;
299 uint8_t field_views_flag;
301 uint8_t current_frame_is_frame0_flag;
306 uint32_t uUserSeiPayloadLength;
330 int32_t field_order_cnt[2];
335 uint16_t chroma_format_idc;
339 uint8_t field_pic_flag;
341 uint8_t bottom_field_flag;
343 uint8_t num_ref_frames;
345 uint8_t mb_adaptive_frame_field_flag;
347 uint8_t constrained_intra_pred_flag;
349 uint8_t weighted_pred_flag;
351 uint8_t weighted_bipred_idc;
353 uint8_t frame_mbs_only_flag;
355 uint8_t transform_8x8_mode_flag;
357 int8_t chroma_qp_index_offset;
359 int8_t second_chroma_qp_index_offset;
361 int8_t pic_init_qp_minus26;
363 uint8_t num_ref_idx_l0_active_minus1;
365 uint8_t num_ref_idx_l1_active_minus1;
367 uint8_t log2_max_frame_num_minus4;
369 uint8_t pic_order_cnt_type;
371 uint8_t log2_max_pic_order_cnt_lsb_minus4;
373 uint8_t delta_pic_order_always_zero_flag;
375 uint8_t direct_8x8_inference_flag;
377 uint8_t entropy_coding_mode_flag;
379 uint8_t pic_order_present_flag;
381 uint8_t deblocking_filter_control_present_flag;
383 uint8_t redundant_pic_cnt_present_flag;
385 uint8_t num_slice_groups_minus1;
387 uint8_t slice_group_map_type;
389 uint32_t slice_group_change_rate_minus1;
391 uint8_t *slice_group_map;
393 uint8_t fmo_aso_enable;
395 uint8_t scaling_matrix_present;
398 uint8_t scaling_lists_4x4[6][16];
400 uint8_t scaling_lists_8x8[2][64];
408 uint32_t *pSliceDataOffsets;
415 uint16_t num_views_minus1;
419 uint8_t inter_view_flag;
421 uint8_t num_inter_view_refs_l0;
423 uint8_t num_inter_view_refs_l1;
425 uint8_t MVCReserved8Bits;
427 uint16_t InterViewRefsL0[16];
429 uint16_t InterViewRefsL1[16];
435 uint32_t pic_width_in_mbs_minus1;
437 uint32_t pic_height_in_map_units_minus1;
443 int32_t qpprime_y_zero_transform_bypass_flag;
464 uint16_t display_primaries_x[3];
466 uint16_t display_primaries_y[3];
468 uint16_t white_point_x;
470 uint16_t white_point_y;
472 uint16_t max_display_parameter_luminance;
474 uint16_t min_display_parameter_luminance;
486 uint16_t max_content_light_level;
488 uint16_t max_pic_average_light_level;
504 uint32_t uBitstreamDataLen;
506 uint8_t *pBitstreamData;
510 uint32_t *pSliceDataOffsets;
514 uint32_t uFirstCtbAddr;
541 uint32_t pic_width_in_luma_samples;
543 uint32_t pic_height_in_luma_samples;
545 uint8_t log2_min_luma_coding_block_size_minus3;
547 uint8_t log2_diff_max_min_luma_coding_block_size;
549 uint8_t log2_min_transform_block_size_minus2;
551 uint8_t log2_diff_max_min_transform_block_size;
553 uint8_t pcm_enabled_flag;
555 uint8_t log2_min_pcm_luma_coding_block_size_minus3;
557 uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
559 uint8_t bit_depth_luma;
561 uint8_t bit_depth_chroma;
563 uint8_t pcm_sample_bit_depth_luma_minus1;
565 uint8_t pcm_sample_bit_depth_chroma_minus1;
567 uint8_t pcm_loop_filter_disabled_flag;
569 uint8_t strong_intra_smoothing_enabled_flag;
571 uint8_t max_transform_hierarchy_depth_intra;
573 uint8_t max_transform_hierarchy_depth_inter;
575 uint8_t amp_enabled_flag;
577 uint8_t separate_colour_plane_flag;
579 uint8_t log2_max_pic_order_cnt_lsb_minus4;
583 uint8_t num_short_term_ref_pic_sets;
585 uint8_t long_term_ref_pics_present_flag;
587 uint8_t num_long_term_ref_pics_sps;
589 uint8_t sps_temporal_mvp_enabled_flag;
591 uint8_t sample_adaptive_offset_enabled_flag;
593 uint8_t scaling_list_enable_flag;
595 uint8_t chroma_format_idc;
597 uint8_t reserved1[3];
601 uint8_t dependent_slice_segments_enabled_flag;
603 uint8_t slice_segment_header_extension_present_flag;
605 uint8_t sign_data_hiding_enabled_flag;
607 uint8_t cu_qp_delta_enabled_flag;
609 uint8_t diff_cu_qp_delta_depth;
611 int8_t init_qp_minus26;
613 int8_t pps_cb_qp_offset;
615 int8_t pps_cr_qp_offset;
618 uint8_t constrained_intra_pred_flag;
620 uint8_t weighted_pred_flag;
622 uint8_t weighted_bipred_flag;
624 uint8_t transform_skip_enabled_flag;
626 uint8_t transquant_bypass_enabled_flag;
628 uint8_t entropy_coding_sync_enabled_flag;
630 uint8_t log2_parallel_merge_level_minus2;
632 uint8_t num_extra_slice_header_bits;
635 uint8_t loop_filter_across_tiles_enabled_flag;
637 uint8_t loop_filter_across_slices_enabled_flag;
639 uint8_t output_flag_present_flag;
641 uint8_t num_ref_idx_l0_default_active_minus1;
643 uint8_t num_ref_idx_l1_default_active_minus1;
645 uint8_t lists_modification_present_flag;
647 uint8_t cabac_init_present_flag;
649 uint8_t pps_slice_chroma_qp_offsets_present_flag;
652 uint8_t deblocking_filter_control_present_flag;
654 uint8_t deblocking_filter_override_enabled_flag;
656 uint8_t pps_deblocking_filter_disabled_flag;
658 int8_t pps_beta_offset_div2;
660 int8_t pps_tc_offset_div2;
662 uint8_t tiles_enabled_flag;
664 uint8_t uniform_spacing_flag;
666 uint8_t num_tile_columns_minus1;
668 uint8_t num_tile_rows_minus1;
671 uint16_t column_width_minus1[22];
673 uint16_t row_height_minus1[20];
683 uint32_t NumDeltaPocsOfRefRpsIdx;
685 uint32_t NumPocTotalCurr;
687 uint32_t NumPocStCurrBefore;
689 uint32_t NumPocStCurrAfter;
691 uint32_t NumPocLtCurr;
693 uint32_t NumBitsToSkip;
695 int32_t CurrPicOrderCntVal;
701 int32_t PicOrderCntVal[16];
703 uint8_t IsLongTerm[16];
704 int8_t RefPicSetStCurrBefore[8];
705 int8_t RefPicSetStCurrAfter[8];
706 int8_t RefPicSetLtCurr[8];
710 uint8_t ScalingList4x4[6][16];
712 uint8_t ScalingList8x8[6][64];
714 uint8_t ScalingList16x16[6][64];
716 uint8_t ScalingList32x32[2][64];
718 uint8_t ScalingListDCCoeff16x16[6];
720 uint8_t ScalingListDCCoeff32x32[2];
723 uint32_t NumDeltaPocs[64];
725 uint8_t sps_range_extension_present_flag;
728 uint8_t transformSkipRotationEnableFlag;
730 uint8_t transformSkipContextEnableFlag;
732 uint8_t implicitRdpcmEnableFlag;
734 uint8_t explicitRdpcmEnableFlag;
736 uint8_t extendedPrecisionProcessingFlag;
738 uint8_t intraSmoothingDisabledFlag;
740 uint8_t highPrecisionOffsetsEnableFlag;
742 uint8_t fastRiceAdaptationEnableFlag;
744 uint8_t cabacBypassAlignmentEnableFlag;
746 uint8_t intraBlockCopyEnableFlag;
748 uint8_t pps_range_extension_present_flag;
751 uint8_t log2MaxTransformSkipSize;
753 uint8_t crossComponentPredictionEnableFlag;
755 uint8_t chromaQpAdjustmentEnableFlag;
757 uint8_t diffCuChromaQpAdjustmentDepth;
759 uint8_t chromaQpAdjustmentTableSize;
761 uint8_t log2SaoOffsetScaleLuma;
763 uint8_t log2SaoOffsetScaleChroma;
765 int8_t cb_qp_adjustment[6];
767 int8_t cr_qp_adjustment[6];
774 uint8_t masterin_display_data_present;
785 uint32_t mv_hevc_enable;
787 uint32_t nuh_layer_id;
789 uint32_t default_ref_layers_active_flag;
791 uint32_t NumDirectRefLayers;
793 uint32_t max_one_active_ref_layer_flag;
795 uint32_t NumActiveRefLayerPics;
797 uint32_t poc_lsb_not_present_flag;
799 uint32_t NumActiveRefLayerPics0;
801 uint32_t NumActiveRefLayerPics1;
803 int32_t RefPicSetInterLayer0[32];
805 int32_t RefPicSetInterLayer1[32];
842 uint8_t picture_structure;
844 uint8_t picture_coding_type;
846 uint8_t intra_dc_precision;
848 uint8_t frame_pred_frame_dct;
850 uint8_t concealment_motion_vectors;
852 uint8_t intra_vlc_format;
854 uint8_t alternate_scan;
856 uint8_t q_scale_type;
858 uint8_t top_field_first;
860 uint8_t full_pel_forward_vector;
862 uint8_t full_pel_backward_vector;
867 uint8_t f_code[2][2];
869 uint8_t intra_quantizer_matrix[64];
871 uint8_t non_intra_quantizer_matrix[64];
877 uint32_t *pSliceDataOffsets;
879 uint8_t flag_slices_across_multiple_rows;
916 uint16_t vop_time_increment_resolution;
918 uint32_t vop_time_increment_bitcount;
920 uint8_t vop_coding_type;
922 uint8_t vop_fcode_forward;
924 uint8_t vop_fcode_backward;
926 uint8_t resync_marker_disable;
932 uint8_t quarter_sample;
934 uint8_t short_video_header;
936 uint8_t rounding_control;
938 uint8_t alternate_vertical_scan_flag;
940 uint8_t top_field_first;
942 uint8_t intra_quantizer_matrix[64];
944 uint8_t non_intra_quantizer_matrix[64];
946 uint8_t data_partitioned;
948 uint8_t reversible_vlc;
953 uint32_t *pSliceDataOffsets;
956 uint16_t video_object_layer_width;
958 uint16_t video_object_layer_height;
1002 uint8_t picture_type;
1004 uint8_t frame_coding_mode;
1006 uint8_t bottom_field_flag;
1010 uint8_t postprocflag;
1018 uint8_t finterpflag;
1024 uint8_t panscan_flag;
1026 uint8_t refdist_flag;
1030 uint8_t extended_mv;
1032 uint8_t extended_dmv;
1036 uint8_t vstransform;
1042 uint8_t range_mapy_flag;
1046 uint8_t range_mapuv_flag;
1048 uint8_t range_mapuv;
1069 uint8_t rangeredfrm;
1077 uint32_t nNumSlices;
1079 uint32_t *pSliceDataOffsets;
1084 uint16_t frameWidth;
1086 uint16_t frameHeight;
1124 uint8_t segmentation_enabled;
1126 uint8_t update_mb_seg_map;
1128 uint8_t update_mb_seg_data;
1133 uint8_t update_mb_seg_abs;
1135 uint8_t filter_type;
1137 uint8_t loop_filter_level;
1139 uint8_t sharpness_level;
1141 uint8_t mode_ref_lf_delta_enabled;
1143 uint8_t mode_ref_lf_delta_update;
1145 uint8_t num_of_partitions;
1147 uint8_t dequant_index;
1152 uint8_t golden_ref_frame_sign_bias;
1154 uint8_t alt_ref_frame_sign_bias;
1156 uint8_t refresh_entropy_probs;
1158 uint8_t CbrHdrBedValue;
1160 uint8_t CbrHdrBedRange;
1162 uint8_t mb_seg_tree_probs [3];
1165 int8_t seg_feature[2][4];
1167 int8_t ref_lf_deltas[4];
1169 int8_t mode_lf_deltas[4];
1172 uint8_t BitsConsumed;
1174 uint8_t AlignByte[3];
1176 uint32_t hdr_partition_size;
1178 uint32_t hdr_start_offset;
1180 uint32_t hdr_processed_offset;
1182 uint32_t coeff_partition_size[8];
1184 uint32_t coeff_partition_start_offset[8];
1187 uint32_t nNumSlices;
1189 uint32_t *pSliceDataOffsets;
1191 uint32_t uCoeffPartitionDataLen;
1193 uint32_t uCoeffPartitionBufferHandle;
1196 uint32_t RetRefreshGoldenFrame;
1198 uint32_t RetRefreshAltFrame;
1200 uint32_t RetRefreshLastFrame;
1216 uint32_t inter_mode_counts[7][3][2];
1218 uint32_t sb_ymode_counts[4][10];
1220 uint32_t uv_mode_counts[10][10];
1222 uint32_t partition_counts[16][4];
1224 uint32_t switchable_interp_counts[4][3];
1226 uint32_t intra_inter_count[4][2];
1228 uint32_t comp_inter_count[5][2];
1230 uint32_t single_ref_count[5][2][2];
1232 uint32_t comp_ref_count[5][2];
1234 uint32_t tx32x32_count[2][4];
1236 uint32_t tx16x16_count[2][3];
1238 uint32_t tx8x8_count[2][2];
1240 uint32_t mbskip_count[3][2];
1244 uint32_t sign[2][2];
1246 uint32_t classes[2][11];
1248 uint32_t class0[2][2];
1250 uint32_t bits[2][10][2];
1252 uint32_t class0_fp[2][2][4];
1256 uint32_t class0_hp[2][2];
1260 uint32_t countCoeffs[2][2][6][6][4];
1262 uint32_t countCoeffs8x8[2][2][6][6][4];
1264 uint32_t countCoeffs16x16[2][2][6][6][4];
1266 uint32_t countCoeffs32x32[2][2][6][6][4];
1268 uint32_t countEobs[4][2][2][6][6];
1280 uint8_t kf_bmode_prob[10][10][8];
1282 uint8_t kf_bmode_probB[10][10][1];
1284 uint8_t ref_pred_probs[3];
1286 uint8_t mb_segment_tree_probs[7];
1288 uint8_t segment_pred_probs[3];
1290 uint8_t ref_scores[4];
1292 uint8_t prob_comppred[2];
1297 uint8_t kf_uv_mode_prob[10][8];
1299 uint8_t kf_uv_mode_probB[10][1];
1304 uint8_t inter_mode_prob[7][4];
1306 uint8_t intra_inter_prob[4];
1309 uint8_t uv_mode_prob[10][8];
1311 uint8_t tx8x8_prob[2][1];
1313 uint8_t tx16x16_prob[2][2];
1315 uint8_t tx32x32_prob[2][3];
1317 uint8_t sb_ymode_probB[4][1];
1319 uint8_t sb_ymode_prob[4][8];
1322 uint8_t partition_prob[2][16][4];
1325 uint8_t uv_mode_probB[10][1];
1327 uint8_t switchable_interp_prob[4][2];
1329 uint8_t comp_inter_prob[5];
1331 uint8_t mbskip_probs[3];
1340 uint8_t class0[2][1];
1344 uint8_t class0_hp[2];
1348 uint8_t classes[2][10];
1350 uint8_t class0_fp[2][2][3];
1352 uint8_t bits[2][10];
1355 uint8_t single_ref_prob[5][2];
1357 uint8_t comp_ref_prob[5];
1362 uint8_t probCoeffs[2][2][6][6][4];
1364 uint8_t probCoeffs8x8[2][2][6][6][4];
1366 uint8_t probCoeffs16x16[2][2][6][6][4];
1368 uint8_t probCoeffs32x32[2][2][6][6][4];
1391 uint32_t ref0_width;
1393 uint32_t ref0_height;
1395 uint32_t ref1_width;
1397 uint32_t ref1_height;
1399 uint32_t ref2_width;
1401 uint32_t ref2_height;
1407 uint32_t prevIsKeyFrame;
1409 uint32_t PrevShowFrame;
1411 uint32_t resolutionChange;
1413 uint32_t errorResilient;
1417 uint8_t frameContextIdx;
1419 uint8_t refFrameSignBias[4];
1421 uint32_t loopFilterLevel;
1423 uint32_t loopFilterSharpness;
1435 uint32_t transform_mode;
1437 uint32_t allow_high_precision_mv;
1439 uint32_t allow_comp_inter_inter;
1441 uint32_t mcomp_filter_type;
1443 uint32_t comp_pred_mode;
1445 uint32_t comp_fixed_ref;
1447 uint32_t comp_var_ref[2];
1449 uint32_t log2_tile_columns;
1451 uint32_t log2_tile_rows;
1453 uint32_t segmentEnabled;
1455 uint32_t segmentMapUpdate;
1457 int32_t segmentMapTemporalUpdate;
1459 uint32_t segmentFeatureMode;
1461 uint8_t segmentFeatureEnable[8][4];
1463 short segmentFeatureData[8][4];
1465 uint32_t modeRefLfEnabled;
1467 uint32_t mbRefLfDelta[4];
1469 uint32_t mbModeLfDelta[2];
1471 uint32_t offsetToDctParts;
1473 uint32_t frameTagSize;
1488 #define AV1_MAX_TILES 256 // defined in c8b0_drv.h