1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2021 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __AVS2D_SYNTAX_H__ 18*437bfbebSnyanmisaka #define __AVS2D_SYNTAX_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka //!< avs2 decoder picture parameters structure 23*437bfbebSnyanmisaka typedef struct _DXVA_PicParams_AVS2 { 24*437bfbebSnyanmisaka //!< sequence header 25*437bfbebSnyanmisaka RK_U32 chroma_format_idc : 2; 26*437bfbebSnyanmisaka RK_U32 pic_width_in_luma_samples : 16; 27*437bfbebSnyanmisaka RK_U32 pic_height_in_luma_samples : 16; 28*437bfbebSnyanmisaka RK_U32 bit_depth_luma_minus8 : 3; 29*437bfbebSnyanmisaka RK_U32 bit_depth_chroma_minus8 : 3; 30*437bfbebSnyanmisaka RK_U32 lcu_size : 3; 31*437bfbebSnyanmisaka RK_U32 progressive_sequence : 1; 32*437bfbebSnyanmisaka RK_U32 field_coded_sequence : 1; 33*437bfbebSnyanmisaka RK_U32 multi_hypothesis_skip_enable_flag : 1; 34*437bfbebSnyanmisaka RK_U32 dual_hypothesis_prediction_enable_flag : 1; 35*437bfbebSnyanmisaka RK_U32 weighted_skip_enable_flag : 1; 36*437bfbebSnyanmisaka RK_U32 asymmetrc_motion_partitions_enable_flag : 1; 37*437bfbebSnyanmisaka RK_U32 nonsquare_quadtree_transform_enable_flag : 1; 38*437bfbebSnyanmisaka RK_U32 nonsquare_intra_prediction_enable_flag : 1; 39*437bfbebSnyanmisaka RK_U32 secondary_transform_enable_flag : 1; 40*437bfbebSnyanmisaka RK_U32 sample_adaptive_offset_enable_flag : 1; 41*437bfbebSnyanmisaka RK_U32 adaptive_loop_filter_enable_flag : 1; 42*437bfbebSnyanmisaka RK_U32 pmvr_enable_flag : 1; 43*437bfbebSnyanmisaka RK_U32 cross_slice_loopfilter_enable_flag : 1; 44*437bfbebSnyanmisaka //!< picture header 45*437bfbebSnyanmisaka RK_U32 picture_type : 3; 46*437bfbebSnyanmisaka RK_U32 scene_reference_enable_flag : 1; 47*437bfbebSnyanmisaka RK_U32 bottom_field_picture_flag : 1; 48*437bfbebSnyanmisaka RK_U32 fixed_picture_qp : 1; 49*437bfbebSnyanmisaka RK_U32 picture_qp : 7; 50*437bfbebSnyanmisaka RK_U32 loop_filter_disable_flag : 1; 51*437bfbebSnyanmisaka RK_S8 alpha_c_offset; //!< 5bits signed 52*437bfbebSnyanmisaka RK_S8 beta_offset; //!< 5bits signed 53*437bfbebSnyanmisaka RK_S32 cur_poc; 54*437bfbebSnyanmisaka } PicParams_Avs2d, *LP_PicParams_Avs2d; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka typedef struct _DXVA_RefParams_AVS2 { 57*437bfbebSnyanmisaka RK_U8 ref_pic_num; 58*437bfbebSnyanmisaka RK_S32 ref_poc_list[32]; 59*437bfbebSnyanmisaka RK_S32 scene_ref_slot_idx; 60*437bfbebSnyanmisaka RK_S32 scene_ref_enable; 61*437bfbebSnyanmisaka RK_S32 scene_ref_replace_pos; 62*437bfbebSnyanmisaka } RefParams_Avs2d, *LP_RefParams_Avs2d; 63*437bfbebSnyanmisaka 64*437bfbebSnyanmisaka typedef struct _DXVA_AlfParams_AVS2 { 65*437bfbebSnyanmisaka RK_U8 enable_pic_alf_y; //!< 1bits 66*437bfbebSnyanmisaka RK_U8 enable_pic_alf_cb; //!< 1bits 67*437bfbebSnyanmisaka RK_U8 enable_pic_alf_cr; //!< 1bits 68*437bfbebSnyanmisaka RK_U8 alf_filter_num_minus1; //!< 4bits 69*437bfbebSnyanmisaka RK_U8 alf_coeff_idx_tab[16]; 70*437bfbebSnyanmisaka RK_S32 alf_coeff_y[16][9]; 71*437bfbebSnyanmisaka RK_S32 alf_coeff_cb[9]; 72*437bfbebSnyanmisaka RK_S32 alf_coeff_cr[9]; 73*437bfbebSnyanmisaka } AlfParams_Avs2d, *LP_AlfParams_Avs2d; 74*437bfbebSnyanmisaka 75*437bfbebSnyanmisaka typedef struct _DXVA_WqmParams_AVS2 { 76*437bfbebSnyanmisaka RK_U8 pic_weight_quant_enable_flag; 77*437bfbebSnyanmisaka RK_S8 chroma_quant_param_delta_cb; //!< 6bits 78*437bfbebSnyanmisaka RK_S8 chroma_quant_param_delta_cr; //!< 6bits 79*437bfbebSnyanmisaka RK_U32 wq_matrix[2][64]; 80*437bfbebSnyanmisaka } WqmParams_Avs2d, *LP_WqmParams_Avs2d; 81*437bfbebSnyanmisaka 82*437bfbebSnyanmisaka typedef struct avs2d_syntax_t { 83*437bfbebSnyanmisaka PicParams_Avs2d pp; 84*437bfbebSnyanmisaka RefParams_Avs2d refp; 85*437bfbebSnyanmisaka AlfParams_Avs2d alfp; 86*437bfbebSnyanmisaka WqmParams_Avs2d wqmp; 87*437bfbebSnyanmisaka RK_U8 *bitstream; 88*437bfbebSnyanmisaka RK_U32 bitstream_size; 89*437bfbebSnyanmisaka } Avs2dSyntax_t; 90*437bfbebSnyanmisaka 91*437bfbebSnyanmisaka #endif /*__AVS2D_SYNTAX_H__*/ 92