1*bbecb9d1SAndroid Build Coastguard Worker /************************************************************************** 2*bbecb9d1SAndroid Build Coastguard Worker * 3*bbecb9d1SAndroid Build Coastguard Worker * Copyright (C) 2022 Kylin Software Co., Ltd. 4*bbecb9d1SAndroid Build Coastguard Worker * 5*bbecb9d1SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 6*bbecb9d1SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 7*bbecb9d1SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 8*bbecb9d1SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9*bbecb9d1SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 10*bbecb9d1SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 11*bbecb9d1SAndroid Build Coastguard Worker * 12*bbecb9d1SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included 13*bbecb9d1SAndroid Build Coastguard Worker * in all copies or substantial portions of the Software. 14*bbecb9d1SAndroid Build Coastguard Worker * 15*bbecb9d1SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16*bbecb9d1SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*bbecb9d1SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*bbecb9d1SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19*bbecb9d1SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20*bbecb9d1SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21*bbecb9d1SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 22*bbecb9d1SAndroid Build Coastguard Worker * 23*bbecb9d1SAndroid Build Coastguard Worker **************************************************************************/ 24*bbecb9d1SAndroid Build Coastguard Worker 25*bbecb9d1SAndroid Build Coastguard Worker /** 26*bbecb9d1SAndroid Build Coastguard Worker * @file 27*bbecb9d1SAndroid Build Coastguard Worker * Data structure definition of video hardware layer. 28*bbecb9d1SAndroid Build Coastguard Worker * 29*bbecb9d1SAndroid Build Coastguard Worker * These structures are used for communication between host and guest, and 30*bbecb9d1SAndroid Build Coastguard Worker * they are 4-byte aligned. 31*bbecb9d1SAndroid Build Coastguard Worker * 32*bbecb9d1SAndroid Build Coastguard Worker * 'virgl_picture_desc' and other related structures mainly describe sequence 33*bbecb9d1SAndroid Build Coastguard Worker * parameters, picture parameters, slice parameters, etc., as well as some 34*bbecb9d1SAndroid Build Coastguard Worker * context information for encoding and decoding. The video backend needs them 35*bbecb9d1SAndroid Build Coastguard Worker * to reconstruct VA-API calls. 36*bbecb9d1SAndroid Build Coastguard Worker * 37*bbecb9d1SAndroid Build Coastguard Worker * @author Feng Jiang <[email protected]> 38*bbecb9d1SAndroid Build Coastguard Worker */ 39*bbecb9d1SAndroid Build Coastguard Worker 40*bbecb9d1SAndroid Build Coastguard Worker #ifndef VIRGL_VIDEO_HW_H 41*bbecb9d1SAndroid Build Coastguard Worker #define VIRGL_VIDEO_HW_H 42*bbecb9d1SAndroid Build Coastguard Worker 43*bbecb9d1SAndroid Build Coastguard Worker #include <stdint.h> 44*bbecb9d1SAndroid Build Coastguard Worker 45*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc { 46*bbecb9d1SAndroid Build Coastguard Worker uint16_t profile; /* enum pipe_video_profile */ 47*bbecb9d1SAndroid Build Coastguard Worker uint8_t entry_point; /* enum pipe_video_entrypoint */ 48*bbecb9d1SAndroid Build Coastguard Worker uint8_t protected_playback; 49*bbecb9d1SAndroid Build Coastguard Worker uint8_t decrypt_key[256]; 50*bbecb9d1SAndroid Build Coastguard Worker uint32_t key_size; 51*bbecb9d1SAndroid Build Coastguard Worker 52*bbecb9d1SAndroid Build Coastguard Worker }; 53*bbecb9d1SAndroid Build Coastguard Worker 54*bbecb9d1SAndroid Build Coastguard Worker struct virgl_enc_quality_modes { 55*bbecb9d1SAndroid Build Coastguard Worker uint32_t level; 56*bbecb9d1SAndroid Build Coastguard Worker uint32_t preset_mode; 57*bbecb9d1SAndroid Build Coastguard Worker uint32_t pre_encode_mode; 58*bbecb9d1SAndroid Build Coastguard Worker uint32_t vbaq_mode; 59*bbecb9d1SAndroid Build Coastguard Worker }; 60*bbecb9d1SAndroid Build Coastguard Worker 61*bbecb9d1SAndroid Build Coastguard Worker /* H.264 sequence parameter set */ 62*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_sps { 63*bbecb9d1SAndroid Build Coastguard Worker uint8_t level_idc; 64*bbecb9d1SAndroid Build Coastguard Worker uint8_t chroma_format_idc; 65*bbecb9d1SAndroid Build Coastguard Worker uint8_t separate_colour_plane_flag; 66*bbecb9d1SAndroid Build Coastguard Worker uint8_t bit_depth_luma_minus8; 67*bbecb9d1SAndroid Build Coastguard Worker 68*bbecb9d1SAndroid Build Coastguard Worker uint8_t bit_depth_chroma_minus8; 69*bbecb9d1SAndroid Build Coastguard Worker uint8_t seq_scaling_matrix_present_flag; 70*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList4x4[6][16]; 71*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList8x8[6][64]; 72*bbecb9d1SAndroid Build Coastguard Worker 73*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_max_frame_num_minus4; 74*bbecb9d1SAndroid Build Coastguard Worker uint8_t pic_order_cnt_type; 75*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_max_pic_order_cnt_lsb_minus4; 76*bbecb9d1SAndroid Build Coastguard Worker uint8_t delta_pic_order_always_zero_flag; 77*bbecb9d1SAndroid Build Coastguard Worker 78*bbecb9d1SAndroid Build Coastguard Worker int32_t offset_for_non_ref_pic; 79*bbecb9d1SAndroid Build Coastguard Worker int32_t offset_for_top_to_bottom_field; 80*bbecb9d1SAndroid Build Coastguard Worker int32_t offset_for_ref_frame[256]; 81*bbecb9d1SAndroid Build Coastguard Worker 82*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_frames_in_pic_order_cnt_cycle; 83*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_num_ref_frames; 84*bbecb9d1SAndroid Build Coastguard Worker uint8_t frame_mbs_only_flag; 85*bbecb9d1SAndroid Build Coastguard Worker uint8_t mb_adaptive_frame_field_flag; 86*bbecb9d1SAndroid Build Coastguard Worker 87*bbecb9d1SAndroid Build Coastguard Worker uint8_t direct_8x8_inference_flag; 88*bbecb9d1SAndroid Build Coastguard Worker uint8_t MinLumaBiPredSize8x8; 89*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[2]; 90*bbecb9d1SAndroid Build Coastguard Worker }; 91*bbecb9d1SAndroid Build Coastguard Worker 92*bbecb9d1SAndroid Build Coastguard Worker /* H.264 picture parameter set */ 93*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_pps { 94*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_sps sps; /* Seq Param Set */ 95*bbecb9d1SAndroid Build Coastguard Worker 96*bbecb9d1SAndroid Build Coastguard Worker uint8_t entropy_coding_mode_flag; 97*bbecb9d1SAndroid Build Coastguard Worker uint8_t bottom_field_pic_order_in_frame_present_flag; 98*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_slice_groups_minus1; 99*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_group_map_type; 100*bbecb9d1SAndroid Build Coastguard Worker 101*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_group_change_rate_minus1; 102*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l0_default_active_minus1; 103*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l1_default_active_minus1; 104*bbecb9d1SAndroid Build Coastguard Worker uint8_t weighted_pred_flag; 105*bbecb9d1SAndroid Build Coastguard Worker 106*bbecb9d1SAndroid Build Coastguard Worker uint8_t weighted_bipred_idc; 107*bbecb9d1SAndroid Build Coastguard Worker int8_t pic_init_qp_minus26; 108*bbecb9d1SAndroid Build Coastguard Worker int8_t pic_init_qs_minus26; 109*bbecb9d1SAndroid Build Coastguard Worker int8_t chroma_qp_index_offset; 110*bbecb9d1SAndroid Build Coastguard Worker 111*bbecb9d1SAndroid Build Coastguard Worker uint8_t deblocking_filter_control_present_flag; 112*bbecb9d1SAndroid Build Coastguard Worker uint8_t constrained_intra_pred_flag; 113*bbecb9d1SAndroid Build Coastguard Worker uint8_t redundant_pic_cnt_present_flag; 114*bbecb9d1SAndroid Build Coastguard Worker uint8_t transform_8x8_mode_flag; 115*bbecb9d1SAndroid Build Coastguard Worker 116*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList4x4[6][16]; 117*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList8x8[6][64]; 118*bbecb9d1SAndroid Build Coastguard Worker 119*bbecb9d1SAndroid Build Coastguard Worker int8_t second_chroma_qp_index_offset; 120*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 121*bbecb9d1SAndroid Build Coastguard Worker }; 122*bbecb9d1SAndroid Build Coastguard Worker 123*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_picture_desc { 124*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 125*bbecb9d1SAndroid Build Coastguard Worker 126*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_pps pps; /* Picture Param Set */ 127*bbecb9d1SAndroid Build Coastguard Worker 128*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_num; 129*bbecb9d1SAndroid Build Coastguard Worker 130*bbecb9d1SAndroid Build Coastguard Worker uint8_t field_pic_flag; 131*bbecb9d1SAndroid Build Coastguard Worker uint8_t bottom_field_flag; 132*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l0_active_minus1; 133*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l1_active_minus1; 134*bbecb9d1SAndroid Build Coastguard Worker 135*bbecb9d1SAndroid Build Coastguard Worker uint32_t slice_count; 136*bbecb9d1SAndroid Build Coastguard Worker int32_t field_order_cnt[2]; 137*bbecb9d1SAndroid Build Coastguard Worker 138*bbecb9d1SAndroid Build Coastguard Worker uint8_t is_long_term[16]; 139*bbecb9d1SAndroid Build Coastguard Worker uint8_t top_is_reference[16]; 140*bbecb9d1SAndroid Build Coastguard Worker uint8_t bottom_is_reference[16]; 141*bbecb9d1SAndroid Build Coastguard Worker uint32_t field_order_cnt_list[16][2]; 142*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_num_list[16]; 143*bbecb9d1SAndroid Build Coastguard Worker uint32_t buffer_id[16]; 144*bbecb9d1SAndroid Build Coastguard Worker 145*bbecb9d1SAndroid Build Coastguard Worker uint8_t is_reference; 146*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_frames; 147*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[2]; 148*bbecb9d1SAndroid Build Coastguard Worker }; 149*bbecb9d1SAndroid Build Coastguard Worker 150*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_seq_param 151*bbecb9d1SAndroid Build Coastguard Worker { 152*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_constraint_set_flags; 153*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_frame_cropping_flag; 154*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_frame_crop_left_offset; 155*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_frame_crop_right_offset; 156*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_frame_crop_top_offset; 157*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_frame_crop_bottom_offset; 158*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_order_cnt_type; 159*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_temporal_layers; 160*bbecb9d1SAndroid Build Coastguard Worker uint32_t vui_parameters_present_flag; 161*bbecb9d1SAndroid Build Coastguard Worker struct { 162*bbecb9d1SAndroid Build Coastguard Worker uint32_t aspect_ratio_info_present_flag: 1; 163*bbecb9d1SAndroid Build Coastguard Worker uint32_t timing_info_present_flag: 1; 164*bbecb9d1SAndroid Build Coastguard Worker uint32_t reserved:30; 165*bbecb9d1SAndroid Build Coastguard Worker } vui_flags; 166*bbecb9d1SAndroid Build Coastguard Worker uint32_t aspect_ratio_idc; 167*bbecb9d1SAndroid Build Coastguard Worker uint32_t sar_width; 168*bbecb9d1SAndroid Build Coastguard Worker uint32_t sar_height; 169*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_units_in_tick; 170*bbecb9d1SAndroid Build Coastguard Worker uint32_t time_scale; 171*bbecb9d1SAndroid Build Coastguard Worker }; 172*bbecb9d1SAndroid Build Coastguard Worker 173*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_rate_control 174*bbecb9d1SAndroid Build Coastguard Worker { 175*bbecb9d1SAndroid Build Coastguard Worker uint32_t target_bitrate; 176*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bitrate; 177*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_rate_num; 178*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_rate_den; 179*bbecb9d1SAndroid Build Coastguard Worker uint32_t vbv_buffer_size; 180*bbecb9d1SAndroid Build Coastguard Worker uint32_t vbv_buf_lv; 181*bbecb9d1SAndroid Build Coastguard Worker uint32_t target_bits_picture; 182*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bits_picture_integer; 183*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bits_picture_fraction; 184*bbecb9d1SAndroid Build Coastguard Worker uint32_t fill_data_enable; 185*bbecb9d1SAndroid Build Coastguard Worker uint32_t skip_frame_enable; 186*bbecb9d1SAndroid Build Coastguard Worker uint32_t enforce_hrd; 187*bbecb9d1SAndroid Build Coastguard Worker uint32_t max_au_size; 188*bbecb9d1SAndroid Build Coastguard Worker uint32_t max_qp; 189*bbecb9d1SAndroid Build Coastguard Worker uint32_t min_qp; 190*bbecb9d1SAndroid Build Coastguard Worker 191*bbecb9d1SAndroid Build Coastguard Worker uint8_t rate_ctrl_method; /* see enum pipe_h2645_enc_rate_control_method */ 192*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 193*bbecb9d1SAndroid Build Coastguard Worker }; 194*bbecb9d1SAndroid Build Coastguard Worker 195*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_motion_estimation 196*bbecb9d1SAndroid Build Coastguard Worker { 197*bbecb9d1SAndroid Build Coastguard Worker uint32_t motion_est_quarter_pixel; 198*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_disable_sub_mode; 199*bbecb9d1SAndroid Build Coastguard Worker uint32_t lsmvert; 200*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_en_ime_overw_dis_subm; 201*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_ime_overw_dis_subm_no; 202*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_ime2_search_range_x; 203*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_ime2_search_range_y; 204*bbecb9d1SAndroid Build Coastguard Worker }; 205*bbecb9d1SAndroid Build Coastguard Worker 206*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_pic_control 207*bbecb9d1SAndroid Build Coastguard Worker { 208*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_cabac_enable; 209*bbecb9d1SAndroid Build Coastguard Worker uint32_t enc_cabac_init_idc; 210*bbecb9d1SAndroid Build Coastguard Worker }; 211*bbecb9d1SAndroid Build Coastguard Worker 212*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_slice_descriptor 213*bbecb9d1SAndroid Build Coastguard Worker { 214*bbecb9d1SAndroid Build Coastguard Worker uint32_t macroblock_address; 215*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_macroblocks; 216*bbecb9d1SAndroid Build Coastguard Worker 217*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_type; /* see enum pipe_h264_slice_type */ 218*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 219*bbecb9d1SAndroid Build Coastguard Worker }; 220*bbecb9d1SAndroid Build Coastguard Worker 221*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_picture_desc 222*bbecb9d1SAndroid Build Coastguard Worker { 223*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 224*bbecb9d1SAndroid Build Coastguard Worker 225*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_seq_param seq; 226*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_rate_control rate_ctrl[4]; 227*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_motion_estimation motion_est; 228*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_pic_control pic_ctrl; 229*bbecb9d1SAndroid Build Coastguard Worker 230*bbecb9d1SAndroid Build Coastguard Worker uint32_t intra_idr_period; 231*bbecb9d1SAndroid Build Coastguard Worker 232*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_i_frames; 233*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_p_frames; 234*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_b_frames; 235*bbecb9d1SAndroid Build Coastguard Worker 236*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_num; 237*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_num_cnt; 238*bbecb9d1SAndroid Build Coastguard Worker uint32_t p_remain; 239*bbecb9d1SAndroid Build Coastguard Worker uint32_t i_remain; 240*bbecb9d1SAndroid Build Coastguard Worker uint32_t idr_pic_id; 241*bbecb9d1SAndroid Build Coastguard Worker uint32_t gop_cnt; 242*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_order_cnt; 243*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_ref_idx_l0_active_minus1; 244*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_ref_idx_l1_active_minus1; 245*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref_idx_l0_list[32]; 246*bbecb9d1SAndroid Build Coastguard Worker uint8_t l0_is_long_term[32]; 247*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref_idx_l1_list[32]; 248*bbecb9d1SAndroid Build Coastguard Worker uint8_t l1_is_long_term[32]; 249*bbecb9d1SAndroid Build Coastguard Worker uint32_t gop_size; 250*bbecb9d1SAndroid Build Coastguard Worker struct virgl_enc_quality_modes quality_modes; 251*bbecb9d1SAndroid Build Coastguard Worker 252*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_slice_descriptors; 253*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_slice_descriptor slices_descriptors[128]; 254*bbecb9d1SAndroid Build Coastguard Worker 255*bbecb9d1SAndroid Build Coastguard Worker uint8_t picture_type; /* see enum pipe_h2645_enc_picture_type */ 256*bbecb9d1SAndroid Build Coastguard Worker uint8_t not_referenced; 257*bbecb9d1SAndroid Build Coastguard Worker uint8_t is_ltr; 258*bbecb9d1SAndroid Build Coastguard Worker uint8_t enable_vui; 259*bbecb9d1SAndroid Build Coastguard Worker 260*bbecb9d1SAndroid Build Coastguard Worker uint32_t ltr_index; 261*bbecb9d1SAndroid Build Coastguard Worker }; 262*bbecb9d1SAndroid Build Coastguard Worker 263*bbecb9d1SAndroid Build Coastguard Worker 264*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_sps 265*bbecb9d1SAndroid Build Coastguard Worker { 266*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_width_in_luma_samples; 267*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_height_in_luma_samples; 268*bbecb9d1SAndroid Build Coastguard Worker 269*bbecb9d1SAndroid Build Coastguard Worker uint8_t chroma_format_idc; 270*bbecb9d1SAndroid Build Coastguard Worker uint8_t separate_colour_plane_flag; 271*bbecb9d1SAndroid Build Coastguard Worker uint8_t bit_depth_luma_minus8; 272*bbecb9d1SAndroid Build Coastguard Worker uint8_t bit_depth_chroma_minus8; 273*bbecb9d1SAndroid Build Coastguard Worker 274*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_max_pic_order_cnt_lsb_minus4; 275*bbecb9d1SAndroid Build Coastguard Worker uint8_t sps_max_dec_pic_buffering_minus1; 276*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_min_luma_coding_block_size_minus3; 277*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_diff_max_min_luma_coding_block_size; 278*bbecb9d1SAndroid Build Coastguard Worker 279*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_min_transform_block_size_minus2; 280*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_diff_max_min_transform_block_size; 281*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_transform_hierarchy_depth_inter; 282*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_transform_hierarchy_depth_intra; 283*bbecb9d1SAndroid Build Coastguard Worker 284*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList4x4[6][16]; 285*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList8x8[6][64]; 286*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList16x16[6][64]; 287*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingList32x32[2][64]; 288*bbecb9d1SAndroid Build Coastguard Worker 289*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingListDCCoeff16x16[6]; 290*bbecb9d1SAndroid Build Coastguard Worker uint8_t ScalingListDCCoeff32x32[2]; 291*bbecb9d1SAndroid Build Coastguard Worker 292*bbecb9d1SAndroid Build Coastguard Worker uint8_t scaling_list_enabled_flag; 293*bbecb9d1SAndroid Build Coastguard Worker uint8_t amp_enabled_flag; 294*bbecb9d1SAndroid Build Coastguard Worker uint8_t sample_adaptive_offset_enabled_flag; 295*bbecb9d1SAndroid Build Coastguard Worker uint8_t pcm_enabled_flag; 296*bbecb9d1SAndroid Build Coastguard Worker 297*bbecb9d1SAndroid Build Coastguard Worker uint8_t pcm_sample_bit_depth_luma_minus1; 298*bbecb9d1SAndroid Build Coastguard Worker uint8_t pcm_sample_bit_depth_chroma_minus1; 299*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_min_pcm_luma_coding_block_size_minus3; 300*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_diff_max_min_pcm_luma_coding_block_size; 301*bbecb9d1SAndroid Build Coastguard Worker 302*bbecb9d1SAndroid Build Coastguard Worker uint8_t pcm_loop_filter_disabled_flag; 303*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_short_term_ref_pic_sets; 304*bbecb9d1SAndroid Build Coastguard Worker uint8_t long_term_ref_pics_present_flag; 305*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_long_term_ref_pics_sps; 306*bbecb9d1SAndroid Build Coastguard Worker 307*bbecb9d1SAndroid Build Coastguard Worker uint8_t sps_temporal_mvp_enabled_flag; 308*bbecb9d1SAndroid Build Coastguard Worker uint8_t strong_intra_smoothing_enabled_flag; 309*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[2]; 310*bbecb9d1SAndroid Build Coastguard Worker }; 311*bbecb9d1SAndroid Build Coastguard Worker 312*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_pps 313*bbecb9d1SAndroid Build Coastguard Worker { 314*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_sps sps; 315*bbecb9d1SAndroid Build Coastguard Worker 316*bbecb9d1SAndroid Build Coastguard Worker uint8_t dependent_slice_segments_enabled_flag; 317*bbecb9d1SAndroid Build Coastguard Worker uint8_t output_flag_present_flag; 318*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_extra_slice_header_bits; 319*bbecb9d1SAndroid Build Coastguard Worker uint8_t sign_data_hiding_enabled_flag; 320*bbecb9d1SAndroid Build Coastguard Worker 321*bbecb9d1SAndroid Build Coastguard Worker uint8_t cabac_init_present_flag; 322*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l0_default_active_minus1; 323*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_ref_idx_l1_default_active_minus1; 324*bbecb9d1SAndroid Build Coastguard Worker int8_t init_qp_minus26; 325*bbecb9d1SAndroid Build Coastguard Worker 326*bbecb9d1SAndroid Build Coastguard Worker uint8_t constrained_intra_pred_flag; 327*bbecb9d1SAndroid Build Coastguard Worker uint8_t transform_skip_enabled_flag; 328*bbecb9d1SAndroid Build Coastguard Worker uint8_t cu_qp_delta_enabled_flag; 329*bbecb9d1SAndroid Build Coastguard Worker uint8_t diff_cu_qp_delta_depth; 330*bbecb9d1SAndroid Build Coastguard Worker 331*bbecb9d1SAndroid Build Coastguard Worker int8_t pps_cb_qp_offset; 332*bbecb9d1SAndroid Build Coastguard Worker int8_t pps_cr_qp_offset; 333*bbecb9d1SAndroid Build Coastguard Worker uint8_t pps_slice_chroma_qp_offsets_present_flag; 334*bbecb9d1SAndroid Build Coastguard Worker uint8_t weighted_pred_flag; 335*bbecb9d1SAndroid Build Coastguard Worker 336*bbecb9d1SAndroid Build Coastguard Worker uint8_t weighted_bipred_flag; 337*bbecb9d1SAndroid Build Coastguard Worker uint8_t transquant_bypass_enabled_flag; 338*bbecb9d1SAndroid Build Coastguard Worker uint8_t tiles_enabled_flag; 339*bbecb9d1SAndroid Build Coastguard Worker uint8_t entropy_coding_sync_enabled_flag; 340*bbecb9d1SAndroid Build Coastguard Worker 341*bbecb9d1SAndroid Build Coastguard Worker uint16_t column_width_minus1[20]; 342*bbecb9d1SAndroid Build Coastguard Worker uint16_t row_height_minus1[22]; 343*bbecb9d1SAndroid Build Coastguard Worker 344*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_tile_columns_minus1; 345*bbecb9d1SAndroid Build Coastguard Worker uint8_t num_tile_rows_minus1; 346*bbecb9d1SAndroid Build Coastguard Worker uint8_t uniform_spacing_flag; 347*bbecb9d1SAndroid Build Coastguard Worker uint8_t loop_filter_across_tiles_enabled_flag; 348*bbecb9d1SAndroid Build Coastguard Worker 349*bbecb9d1SAndroid Build Coastguard Worker uint8_t pps_loop_filter_across_slices_enabled_flag; 350*bbecb9d1SAndroid Build Coastguard Worker uint8_t deblocking_filter_control_present_flag; 351*bbecb9d1SAndroid Build Coastguard Worker uint8_t deblocking_filter_override_enabled_flag; 352*bbecb9d1SAndroid Build Coastguard Worker uint8_t pps_deblocking_filter_disabled_flag; 353*bbecb9d1SAndroid Build Coastguard Worker 354*bbecb9d1SAndroid Build Coastguard Worker int8_t pps_beta_offset_div2; 355*bbecb9d1SAndroid Build Coastguard Worker int8_t pps_tc_offset_div2; 356*bbecb9d1SAndroid Build Coastguard Worker uint8_t lists_modification_present_flag; 357*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_parallel_merge_level_minus2; 358*bbecb9d1SAndroid Build Coastguard Worker 359*bbecb9d1SAndroid Build Coastguard Worker uint16_t st_rps_bits; 360*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_segment_header_extension_present_flag; 361*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved; 362*bbecb9d1SAndroid Build Coastguard Worker }; 363*bbecb9d1SAndroid Build Coastguard Worker 364*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_picture_desc 365*bbecb9d1SAndroid Build Coastguard Worker { 366*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 367*bbecb9d1SAndroid Build Coastguard Worker 368*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_pps pps; 369*bbecb9d1SAndroid Build Coastguard Worker 370*bbecb9d1SAndroid Build Coastguard Worker int32_t CurrPicOrderCntVal; 371*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref[16]; 372*bbecb9d1SAndroid Build Coastguard Worker int32_t PicOrderCntVal[16]; 373*bbecb9d1SAndroid Build Coastguard Worker 374*bbecb9d1SAndroid Build Coastguard Worker uint32_t NumPocTotalCurr; 375*bbecb9d1SAndroid Build Coastguard Worker uint32_t NumDeltaPocsOfRefRpsIdx; 376*bbecb9d1SAndroid Build Coastguard Worker uint32_t NumShortTermPictureSliceHeaderBits; 377*bbecb9d1SAndroid Build Coastguard Worker uint32_t NumLongTermPictureSliceHeaderBits; 378*bbecb9d1SAndroid Build Coastguard Worker 379*bbecb9d1SAndroid Build Coastguard Worker uint8_t IsLongTerm[16]; 380*bbecb9d1SAndroid Build Coastguard Worker 381*bbecb9d1SAndroid Build Coastguard Worker uint8_t IDRPicFlag; 382*bbecb9d1SAndroid Build Coastguard Worker uint8_t RAPPicFlag; 383*bbecb9d1SAndroid Build Coastguard Worker uint8_t CurrRpsIdx; 384*bbecb9d1SAndroid Build Coastguard Worker uint8_t NumPocStCurrBefore; 385*bbecb9d1SAndroid Build Coastguard Worker 386*bbecb9d1SAndroid Build Coastguard Worker uint8_t NumPocStCurrAfter; 387*bbecb9d1SAndroid Build Coastguard Worker uint8_t NumPocLtCurr; 388*bbecb9d1SAndroid Build Coastguard Worker uint8_t UseRefPicList; 389*bbecb9d1SAndroid Build Coastguard Worker uint8_t UseStRpsBits; 390*bbecb9d1SAndroid Build Coastguard Worker 391*bbecb9d1SAndroid Build Coastguard Worker uint8_t RefPicSetStCurrBefore[8]; 392*bbecb9d1SAndroid Build Coastguard Worker uint8_t RefPicSetStCurrAfter[8]; 393*bbecb9d1SAndroid Build Coastguard Worker uint8_t RefPicSetLtCurr[8]; 394*bbecb9d1SAndroid Build Coastguard Worker 395*bbecb9d1SAndroid Build Coastguard Worker uint8_t RefPicList[2][15]; 396*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[2]; 397*bbecb9d1SAndroid Build Coastguard Worker }; 398*bbecb9d1SAndroid Build Coastguard Worker 399*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_seq_param 400*bbecb9d1SAndroid Build Coastguard Worker { 401*bbecb9d1SAndroid Build Coastguard Worker uint8_t general_profile_idc; 402*bbecb9d1SAndroid Build Coastguard Worker uint8_t general_level_idc; 403*bbecb9d1SAndroid Build Coastguard Worker uint8_t general_tier_flag; 404*bbecb9d1SAndroid Build Coastguard Worker uint8_t strong_intra_smoothing_enabled_flag; 405*bbecb9d1SAndroid Build Coastguard Worker 406*bbecb9d1SAndroid Build Coastguard Worker uint32_t intra_period; 407*bbecb9d1SAndroid Build Coastguard Worker uint32_t ip_period; 408*bbecb9d1SAndroid Build Coastguard Worker 409*bbecb9d1SAndroid Build Coastguard Worker uint16_t pic_width_in_luma_samples; 410*bbecb9d1SAndroid Build Coastguard Worker uint16_t pic_height_in_luma_samples; 411*bbecb9d1SAndroid Build Coastguard Worker 412*bbecb9d1SAndroid Build Coastguard Worker uint32_t chroma_format_idc; 413*bbecb9d1SAndroid Build Coastguard Worker uint32_t bit_depth_luma_minus8; 414*bbecb9d1SAndroid Build Coastguard Worker uint32_t bit_depth_chroma_minus8; 415*bbecb9d1SAndroid Build Coastguard Worker 416*bbecb9d1SAndroid Build Coastguard Worker uint8_t amp_enabled_flag; 417*bbecb9d1SAndroid Build Coastguard Worker uint8_t sample_adaptive_offset_enabled_flag; 418*bbecb9d1SAndroid Build Coastguard Worker uint8_t pcm_enabled_flag; 419*bbecb9d1SAndroid Build Coastguard Worker uint8_t sps_temporal_mvp_enabled_flag; 420*bbecb9d1SAndroid Build Coastguard Worker 421*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_min_luma_coding_block_size_minus3; 422*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_diff_max_min_luma_coding_block_size; 423*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_min_transform_block_size_minus2; 424*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_diff_max_min_transform_block_size; 425*bbecb9d1SAndroid Build Coastguard Worker 426*bbecb9d1SAndroid Build Coastguard Worker uint16_t conf_win_left_offset; 427*bbecb9d1SAndroid Build Coastguard Worker uint16_t conf_win_right_offset; 428*bbecb9d1SAndroid Build Coastguard Worker uint16_t conf_win_top_offset; 429*bbecb9d1SAndroid Build Coastguard Worker uint16_t conf_win_bottom_offset; 430*bbecb9d1SAndroid Build Coastguard Worker 431*bbecb9d1SAndroid Build Coastguard Worker uint32_t vui_parameters_present_flag; 432*bbecb9d1SAndroid Build Coastguard Worker struct { 433*bbecb9d1SAndroid Build Coastguard Worker uint32_t aspect_ratio_info_present_flag: 1; 434*bbecb9d1SAndroid Build Coastguard Worker uint32_t timing_info_present_flag: 1; 435*bbecb9d1SAndroid Build Coastguard Worker uint32_t reserved:30; 436*bbecb9d1SAndroid Build Coastguard Worker } vui_flags; 437*bbecb9d1SAndroid Build Coastguard Worker uint32_t aspect_ratio_idc; 438*bbecb9d1SAndroid Build Coastguard Worker uint32_t sar_width; 439*bbecb9d1SAndroid Build Coastguard Worker uint32_t sar_height; 440*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_units_in_tick; 441*bbecb9d1SAndroid Build Coastguard Worker uint32_t time_scale; 442*bbecb9d1SAndroid Build Coastguard Worker 443*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_transform_hierarchy_depth_inter; 444*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_transform_hierarchy_depth_intra; 445*bbecb9d1SAndroid Build Coastguard Worker uint8_t conformance_window_flag; 446*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved; 447*bbecb9d1SAndroid Build Coastguard Worker }; 448*bbecb9d1SAndroid Build Coastguard Worker 449*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_pic_param 450*bbecb9d1SAndroid Build Coastguard Worker { 451*bbecb9d1SAndroid Build Coastguard Worker uint8_t log2_parallel_merge_level_minus2; 452*bbecb9d1SAndroid Build Coastguard Worker uint8_t nal_unit_type; 453*bbecb9d1SAndroid Build Coastguard Worker uint8_t constrained_intra_pred_flag; 454*bbecb9d1SAndroid Build Coastguard Worker uint8_t pps_loop_filter_across_slices_enabled_flag; 455*bbecb9d1SAndroid Build Coastguard Worker 456*bbecb9d1SAndroid Build Coastguard Worker uint8_t transform_skip_enabled_flag; 457*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 458*bbecb9d1SAndroid Build Coastguard Worker }; 459*bbecb9d1SAndroid Build Coastguard Worker 460*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_slice_param 461*bbecb9d1SAndroid Build Coastguard Worker { 462*bbecb9d1SAndroid Build Coastguard Worker uint8_t max_num_merge_cand; 463*bbecb9d1SAndroid Build Coastguard Worker int8_t slice_cb_qp_offset; 464*bbecb9d1SAndroid Build Coastguard Worker int8_t slice_cr_qp_offset; 465*bbecb9d1SAndroid Build Coastguard Worker int8_t slice_beta_offset_div2; 466*bbecb9d1SAndroid Build Coastguard Worker 467*bbecb9d1SAndroid Build Coastguard Worker uint32_t slice_deblocking_filter_disabled_flag; 468*bbecb9d1SAndroid Build Coastguard Worker 469*bbecb9d1SAndroid Build Coastguard Worker int8_t slice_tc_offset_div2; 470*bbecb9d1SAndroid Build Coastguard Worker uint8_t cabac_init_flag; 471*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_loop_filter_across_slices_enabled_flag; 472*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved; 473*bbecb9d1SAndroid Build Coastguard Worker }; 474*bbecb9d1SAndroid Build Coastguard Worker 475*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_rate_control 476*bbecb9d1SAndroid Build Coastguard Worker { 477*bbecb9d1SAndroid Build Coastguard Worker uint32_t target_bitrate; 478*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bitrate; 479*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_rate_num; 480*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_rate_den; 481*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_i_frames; 482*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_p_frames; 483*bbecb9d1SAndroid Build Coastguard Worker uint32_t quant_b_frames; 484*bbecb9d1SAndroid Build Coastguard Worker uint32_t vbv_buffer_size; 485*bbecb9d1SAndroid Build Coastguard Worker uint32_t vbv_buf_lv; 486*bbecb9d1SAndroid Build Coastguard Worker uint32_t target_bits_picture; 487*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bits_picture_integer; 488*bbecb9d1SAndroid Build Coastguard Worker uint32_t peak_bits_picture_fraction; 489*bbecb9d1SAndroid Build Coastguard Worker uint32_t fill_data_enable; 490*bbecb9d1SAndroid Build Coastguard Worker uint32_t skip_frame_enable; 491*bbecb9d1SAndroid Build Coastguard Worker uint32_t enforce_hrd; 492*bbecb9d1SAndroid Build Coastguard Worker uint32_t max_au_size; 493*bbecb9d1SAndroid Build Coastguard Worker uint32_t max_qp; 494*bbecb9d1SAndroid Build Coastguard Worker uint32_t min_qp; 495*bbecb9d1SAndroid Build Coastguard Worker 496*bbecb9d1SAndroid Build Coastguard Worker uint8_t rate_ctrl_method; /* see enum pipe_h2645_enc_rate_control_method */ 497*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 498*bbecb9d1SAndroid Build Coastguard Worker }; 499*bbecb9d1SAndroid Build Coastguard Worker 500*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_slice_descriptor 501*bbecb9d1SAndroid Build Coastguard Worker { 502*bbecb9d1SAndroid Build Coastguard Worker uint32_t slice_segment_address; 503*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_ctu_in_slice; 504*bbecb9d1SAndroid Build Coastguard Worker 505*bbecb9d1SAndroid Build Coastguard Worker uint8_t slice_type; /* see enum pipe_h265_slice_type */ 506*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 507*bbecb9d1SAndroid Build Coastguard Worker }; 508*bbecb9d1SAndroid Build Coastguard Worker 509*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_picture_desc 510*bbecb9d1SAndroid Build Coastguard Worker { 511*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 512*bbecb9d1SAndroid Build Coastguard Worker 513*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_seq_param seq; 514*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_pic_param pic; 515*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_slice_param slice; 516*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_rate_control rc; 517*bbecb9d1SAndroid Build Coastguard Worker 518*bbecb9d1SAndroid Build Coastguard Worker uint32_t decoded_curr_pic; 519*bbecb9d1SAndroid Build Coastguard Worker uint32_t reference_frames[16]; 520*bbecb9d1SAndroid Build Coastguard Worker uint32_t frame_num; 521*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_order_cnt; 522*bbecb9d1SAndroid Build Coastguard Worker uint32_t pic_order_cnt_type; 523*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_ref_idx_l0_active_minus1; 524*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_ref_idx_l1_active_minus1; 525*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref_idx_l0_list[15]; 526*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref_idx_l1_list[15]; 527*bbecb9d1SAndroid Build Coastguard Worker uint32_t num_slice_descriptors; 528*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_slice_descriptor slices_descriptors[128]; 529*bbecb9d1SAndroid Build Coastguard Worker struct virgl_enc_quality_modes quality_modes; 530*bbecb9d1SAndroid Build Coastguard Worker 531*bbecb9d1SAndroid Build Coastguard Worker uint8_t picture_type; /* see enum pipe_h2645_enc_picture_type */ 532*bbecb9d1SAndroid Build Coastguard Worker uint8_t not_referenced; 533*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[2]; 534*bbecb9d1SAndroid Build Coastguard Worker }; 535*bbecb9d1SAndroid Build Coastguard Worker 536*bbecb9d1SAndroid Build Coastguard Worker struct virgl_mpeg4_picture_desc 537*bbecb9d1SAndroid Build Coastguard Worker { 538*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 539*bbecb9d1SAndroid Build Coastguard Worker 540*bbecb9d1SAndroid Build Coastguard Worker int32_t trd[2]; 541*bbecb9d1SAndroid Build Coastguard Worker int32_t trb[2]; 542*bbecb9d1SAndroid Build Coastguard Worker uint16_t vop_time_increment_resolution; 543*bbecb9d1SAndroid Build Coastguard Worker uint8_t vop_coding_type; 544*bbecb9d1SAndroid Build Coastguard Worker uint8_t vop_fcode_forward; 545*bbecb9d1SAndroid Build Coastguard Worker uint8_t vop_fcode_backward; 546*bbecb9d1SAndroid Build Coastguard Worker uint8_t resync_marker_disable; 547*bbecb9d1SAndroid Build Coastguard Worker uint8_t interlaced; 548*bbecb9d1SAndroid Build Coastguard Worker uint8_t quant_type; 549*bbecb9d1SAndroid Build Coastguard Worker uint8_t quarter_sample; 550*bbecb9d1SAndroid Build Coastguard Worker uint8_t short_video_header; 551*bbecb9d1SAndroid Build Coastguard Worker uint8_t rounding_control; 552*bbecb9d1SAndroid Build Coastguard Worker uint8_t alternate_vertical_scan_flag; 553*bbecb9d1SAndroid Build Coastguard Worker uint8_t top_field_first; 554*bbecb9d1SAndroid Build Coastguard Worker 555*bbecb9d1SAndroid Build Coastguard Worker uint8_t intra_matrix[64]; 556*bbecb9d1SAndroid Build Coastguard Worker uint8_t non_intra_matrix[64]; 557*bbecb9d1SAndroid Build Coastguard Worker 558*bbecb9d1SAndroid Build Coastguard Worker uint32_t ref[2]; 559*bbecb9d1SAndroid Build Coastguard Worker }; 560*bbecb9d1SAndroid Build Coastguard Worker 561*bbecb9d1SAndroid Build Coastguard Worker union virgl_picture_desc { 562*bbecb9d1SAndroid Build Coastguard Worker struct virgl_base_picture_desc base; 563*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_picture_desc h264; 564*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_picture_desc h265; 565*bbecb9d1SAndroid Build Coastguard Worker struct virgl_mpeg4_picture_desc mpeg4; 566*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h264_enc_picture_desc h264_enc; 567*bbecb9d1SAndroid Build Coastguard Worker struct virgl_h265_enc_picture_desc h265_enc; 568*bbecb9d1SAndroid Build Coastguard Worker }; 569*bbecb9d1SAndroid Build Coastguard Worker 570*bbecb9d1SAndroid Build Coastguard Worker enum virgl_video_encode_stat { 571*bbecb9d1SAndroid Build Coastguard Worker VIRGL_VIDEO_ENCODE_STAT_NOT_STARTED = 0, 572*bbecb9d1SAndroid Build Coastguard Worker VIRGL_VIDEO_ENCODE_STAT_IN_PROGRESS, 573*bbecb9d1SAndroid Build Coastguard Worker VIRGL_VIDEO_ENCODE_STAT_SUCCESS, 574*bbecb9d1SAndroid Build Coastguard Worker VIRGL_VIDEO_ENCODE_STAT_FAILURE, 575*bbecb9d1SAndroid Build Coastguard Worker }; 576*bbecb9d1SAndroid Build Coastguard Worker 577*bbecb9d1SAndroid Build Coastguard Worker struct virgl_video_encode_feedback { 578*bbecb9d1SAndroid Build Coastguard Worker uint8_t stat; /* see enum virgl_video_encode_stat */ 579*bbecb9d1SAndroid Build Coastguard Worker uint8_t reserved[3]; 580*bbecb9d1SAndroid Build Coastguard Worker 581*bbecb9d1SAndroid Build Coastguard Worker uint32_t coded_size; /* size of encoded data in bytes */ 582*bbecb9d1SAndroid Build Coastguard Worker }; 583*bbecb9d1SAndroid Build Coastguard Worker 584*bbecb9d1SAndroid Build Coastguard Worker #endif /* VIRGL_VIDEO_HW_H */ 585*bbecb9d1SAndroid Build Coastguard Worker 586