mpp-nyanmisaka/mpp/common/avs2d_syntax.h
Hongjin Li 13915219f3 feat[vdpu383]: Add vdpu383 avs2 module
Support FBC, tile4x4, 420

Signed-off-by: Hongjin Li <vic.hong@rock-chips.com>
Change-Id: I31b13dd1a672adc0ba6b35fd31aa039ef1579eb0
2024-02-29 20:20:13 +08:00

91 lines
3.4 KiB
C

/*
* Copyright 2021 Rockchip Electronics Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __AVS2D_SYNTAX_H__
#define __AVS2D_SYNTAX_H__
#include "rk_type.h"
//!< avs2 decoder picture parameters structure
typedef struct _DXVA_PicParams_AVS2 {
//!< sequence header
RK_U32 chroma_format_idc : 2;
RK_U32 pic_width_in_luma_samples : 16;
RK_U32 pic_height_in_luma_samples : 16;
RK_U32 bit_depth_luma_minus8 : 3;
RK_U32 bit_depth_chroma_minus8 : 3;
RK_U32 lcu_size : 3;
RK_U32 progressive_sequence : 1;
RK_U32 field_coded_sequence : 1;
RK_U32 multi_hypothesis_skip_enable_flag : 1;
RK_U32 dual_hypothesis_prediction_enable_flag : 1;
RK_U32 weighted_skip_enable_flag : 1;
RK_U32 asymmetrc_motion_partitions_enable_flag : 1;
RK_U32 nonsquare_quadtree_transform_enable_flag : 1;
RK_U32 nonsquare_intra_prediction_enable_flag : 1;
RK_U32 secondary_transform_enable_flag : 1;
RK_U32 sample_adaptive_offset_enable_flag : 1;
RK_U32 adaptive_loop_filter_enable_flag : 1;
RK_U32 pmvr_enable_flag : 1;
RK_U32 cross_slice_loopfilter_enable_flag : 1;
//!< picture header
RK_U32 picture_type : 3;
RK_U32 scene_reference_enable_flag : 1;
RK_U32 bottom_field_picture_flag : 1;
RK_U32 fixed_picture_qp : 1;
RK_U32 picture_qp : 7;
RK_U32 loop_filter_disable_flag : 1;
RK_S8 alpha_c_offset; //!< 5bits signed
RK_S8 beta_offset; //!< 5bits signed
RK_S32 cur_poc;
} PicParams_Avs2d, *LP_PicParams_Avs2d;
typedef struct _DXVA_RefParams_AVS2 {
RK_U8 ref_pic_num;
RK_S32 ref_poc_list[32];
RK_S32 scene_ref_slot_idx;
RK_S32 scene_ref_enable;
RK_S32 scene_ref_replace_pos;
} RefParams_Avs2d, *LP_RefParams_Avs2d;
typedef struct _DXVA_AlfParams_AVS2 {
RK_U8 enable_pic_alf_y; //!< 1bits
RK_U8 enable_pic_alf_cb; //!< 1bits
RK_U8 enable_pic_alf_cr; //!< 1bits
RK_U8 alf_filter_num_minus1; //!< 4bits
RK_U8 alf_coeff_idx_tab[16];
RK_S32 alf_coeff_y[16][9];
RK_S32 alf_coeff_cb[9];
RK_S32 alf_coeff_cr[9];
} AlfParams_Avs2d, *LP_AlfParams_Avs2d;
typedef struct _DXVA_WqmParams_AVS2 {
RK_U8 pic_weight_quant_enable_flag;
RK_S8 chroma_quant_param_delta_cb; //!< 6bits
RK_S8 chroma_quant_param_delta_cr; //!< 6bits
RK_U32 wq_matrix[2][64];
} WqmParams_Avs2d, *LP_WqmParams_Avs2d;
typedef struct avs2d_syntax_t {
PicParams_Avs2d pp;
RefParams_Avs2d refp;
AlfParams_Avs2d alfp;
WqmParams_Avs2d wqmp;
RK_U8 *bitstream;
RK_U32 bitstream_size;
} Avs2dSyntax_t;
#endif /*__AVS2D_SYNTAX_H__*/