xref: /rockchip-linux_mpp/mpp/common/avs2d_syntax.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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