/* * 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 _AV1D_SYNTAX_H_ #define _AV1D_SYNTAX_H_ typedef unsigned long DWORD; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long ULONG; typedef unsigned short USHORT; typedef unsigned char UCHAR; typedef unsigned int UINT; typedef unsigned int UINT32; typedef signed int BOOL; typedef signed int INT; typedef signed char CHAR; typedef signed short SHORT; typedef signed long LONG; typedef void *PVOID; typedef struct _DXVA_PicEntry_AV1 { union { struct { UCHAR Index7Bits : 7; UCHAR AssociatedFlag : 1; }; UCHAR bPicEntry; }; } DXVA_PicEntry_AV1, *LPDXVA_PicEntry_AV1; typedef struct _DXVA_PicParams_AV1 { DXVA_PicEntry_AV1 CurrPic; USHORT width ; USHORT height ; USHORT max_width ; USHORT max_height ; USHORT CurrPicTextureIndex ; USHORT superres_denom ; USHORT bitdepth ; USHORT seq_profile ; union { struct { UINT32 use_128x128_superblock : 1; UINT32 intra_edge_filter : 1; UINT32 interintra_compound : 1; UINT32 masked_compound : 1; UINT32 warped_motion : 1; UINT32 dual_filter : 1; UINT32 jnt_comp : 1; UINT32 screen_content_tools : 1; UINT32 integer_mv : 2; UINT32 cdef_en : 1; UINT32 restoration : 1; UINT32 film_grain_en : 1; UINT32 intrabc : 1; UINT32 high_precision_mv : 1; UINT32 switchable_motion_mode : 1; UINT32 filter_intra : 1; UINT32 disable_frame_end_update_cdf : 1; UINT32 disable_cdf_update : 1; UINT32 reference_mode : 1; UINT32 skip_mode : 1; UINT32 reduced_tx_set : 1; UINT32 superres : 1; UINT32 tx_mode : 3; UINT32 use_ref_frame_mvs : 1; UINT32 enable_ref_frame_mvs : 1; UINT32 reference_frame_update : 1; UINT32 error_resilient_mode : 1; } coding; }; struct { USHORT cols; USHORT rows; USHORT context_update_id; USHORT widths[64]; USHORT heights[64]; UINT32 tile_offset_start[128]; UINT32 tile_offset_end[128]; UCHAR tile_sz_mag; } tiles; struct { UCHAR frame_type ; UCHAR show_frame ; UCHAR showable_frame; UCHAR subsampling_x ; UCHAR subsampling_y ; UCHAR mono_chrome ; } format; UCHAR primary_ref_frame; UCHAR order_hint; UCHAR order_hint_bits; struct { UCHAR filter_level[2] ; UCHAR filter_level_u ; UCHAR filter_level_v ; UCHAR sharpness_level ; UCHAR mode_ref_delta_enabled ; UCHAR mode_ref_delta_update ; UCHAR delta_lf_multi ; UCHAR delta_lf_present ; UCHAR delta_lf_res ; CHAR ref_deltas[8] ; CHAR mode_deltas[2] ; UCHAR frame_restoration_type[3] ; UCHAR log2_restoration_unit_size[3]; } loop_filter; struct { UCHAR delta_q_present; UCHAR delta_q_res ; UCHAR base_qindex ; CHAR y_dc_delta_q ; CHAR u_dc_delta_q ; CHAR v_dc_delta_q ; CHAR u_ac_delta_q ; CHAR v_ac_delta_q ; UCHAR qm_y ; UCHAR qm_u ; UCHAR qm_v ; } quantization; struct { UCHAR damping; UCHAR bits; struct { UCHAR primary; UCHAR secondary; } y_strengths[8]; struct { UCHAR primary; UCHAR secondary; } uv_strengths[8]; } cdef; struct { UCHAR enabled ; UCHAR update_map ; UCHAR update_data ; UCHAR temporal_update ; UCHAR feature_mask[8] ; INT feature_data[8][8]; } segmentation; struct { UCHAR apply_grain ; UCHAR scaling_shift_minus8 ; UCHAR chroma_scaling_from_luma ; UCHAR ar_coeff_lag ; UCHAR ar_coeff_shift_minus6 ; UCHAR grain_scale_shift ; UCHAR overlap_flag ; UCHAR clip_to_restricted_range ; UCHAR matrix_coeff_is_identity ; UCHAR num_y_points ; UCHAR num_cb_points ; UCHAR num_cr_points ; UCHAR scaling_points_y[14][2] ; UCHAR scaling_points_cb[10][2] ; UCHAR scaling_points_cr[10][2] ; UCHAR ar_coeffs_y[24] ; UCHAR ar_coeffs_cb[25] ; UCHAR ar_coeffs_cr[25] ; UCHAR cb_mult ; UCHAR cb_luma_mult ; UCHAR cr_mult ; UCHAR cr_luma_mult ; USHORT grain_seed ; USHORT cb_offset ; USHORT cr_offset ; } film_grain; struct { UINT32 width; UINT32 height; UINT32 order_hint; UINT32 lst_frame_offset; UINT32 lst2_frame_offset; UINT32 lst3_frame_offset; UINT32 gld_frame_offset; UINT32 bwd_frame_offset; UINT32 alt2_frame_offset; UINT32 alt_frame_offset; UINT32 is_intra_frame; UINT32 intra_only; CHAR Index; UCHAR wminvalid; UCHAR wmtype; RK_S32 wmmat[6]; USHORT alpha, beta, gamma, delta; } frame_refs[7]; UCHAR coded_lossless; UCHAR interp_filter; UCHAR RefFrameMapTextureIndex[7]; UINT32 upscaled_width; UINT32 frame_to_show_map_idx; UINT32 frame_tag_size; UINT32 offset_to_dct_parts; UCHAR skip_ref0; UCHAR skip_ref1; RK_U8 refresh_frame_flags; void *cdfs; void *cdfs_ndvc; RK_U8 tile_cols_log2; } DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1; typedef struct _DXVA_Slice_AV1_Short { UINT BSNALunitDataLocation; UINT SliceByteInBuffer; USHORT wBadSliceChopping; } DXVA_Slice_AV1_Short, *LPDXVA_Slice_AV1_Short; #endif