1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2021 Red Hat 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*61046927SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*61046927SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*61046927SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*61046927SAndroid Build Coastguard Worker * 11*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*61046927SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*61046927SAndroid Build Coastguard Worker * Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*61046927SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*61046927SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*61046927SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20*61046927SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21*61046927SAndroid Build Coastguard Worker * IN THE SOFTWARE. 22*61046927SAndroid Build Coastguard Worker */ 23*61046927SAndroid Build Coastguard Worker #ifndef VK_VIDEO_H 24*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker #include "vk_object.h" 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 29*61046927SAndroid Build Coastguard Worker extern "C" { 30*61046927SAndroid Build Coastguard Worker #endif 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Worker struct vk_video_h264_sps { 33*61046927SAndroid Build Coastguard Worker StdVideoH264SequenceParameterSet base; 34*61046927SAndroid Build Coastguard Worker int32_t offsets_for_ref_frame[256]; 35*61046927SAndroid Build Coastguard Worker StdVideoH264ScalingLists scaling_lists; 36*61046927SAndroid Build Coastguard Worker StdVideoH264SequenceParameterSetVui vui; 37*61046927SAndroid Build Coastguard Worker StdVideoH264HrdParameters vui_hrd_parameters; 38*61046927SAndroid Build Coastguard Worker }; 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker struct vk_video_h264_pps { 41*61046927SAndroid Build Coastguard Worker StdVideoH264PictureParameterSet base; 42*61046927SAndroid Build Coastguard Worker StdVideoH264ScalingLists scaling_lists; 43*61046927SAndroid Build Coastguard Worker }; 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Worker struct vk_video_h265_vps { 46*61046927SAndroid Build Coastguard Worker StdVideoH265VideoParameterSet base; 47*61046927SAndroid Build Coastguard Worker StdVideoH265DecPicBufMgr dec_pic_buf_mgr; 48*61046927SAndroid Build Coastguard Worker StdVideoH265SubLayerHrdParameters hrd_parameters_nal; 49*61046927SAndroid Build Coastguard Worker StdVideoH265SubLayerHrdParameters hrd_parameters_vcl; 50*61046927SAndroid Build Coastguard Worker StdVideoH265HrdParameters hrd_parameters; 51*61046927SAndroid Build Coastguard Worker StdVideoH265ProfileTierLevel tier_level; 52*61046927SAndroid Build Coastguard Worker }; 53*61046927SAndroid Build Coastguard Worker 54*61046927SAndroid Build Coastguard Worker struct vk_video_h265_sps { 55*61046927SAndroid Build Coastguard Worker StdVideoH265SequenceParameterSet base; 56*61046927SAndroid Build Coastguard Worker StdVideoH265ProfileTierLevel tier_level; 57*61046927SAndroid Build Coastguard Worker StdVideoH265DecPicBufMgr dec_pic_buf_mgr; 58*61046927SAndroid Build Coastguard Worker StdVideoH265ScalingLists scaling_lists; 59*61046927SAndroid Build Coastguard Worker StdVideoH265ShortTermRefPicSet short_term_ref_pic_set; 60*61046927SAndroid Build Coastguard Worker StdVideoH265LongTermRefPicsSps long_term_ref_pics_sps; 61*61046927SAndroid Build Coastguard Worker StdVideoH265SubLayerHrdParameters hrd_parameters_nal; 62*61046927SAndroid Build Coastguard Worker StdVideoH265SubLayerHrdParameters hrd_parameters_vcl; 63*61046927SAndroid Build Coastguard Worker StdVideoH265HrdParameters hrd_parameters; 64*61046927SAndroid Build Coastguard Worker StdVideoH265SequenceParameterSetVui vui; 65*61046927SAndroid Build Coastguard Worker StdVideoH265PredictorPaletteEntries palette_entries; 66*61046927SAndroid Build Coastguard Worker }; 67*61046927SAndroid Build Coastguard Worker 68*61046927SAndroid Build Coastguard Worker struct vk_video_h265_pps { 69*61046927SAndroid Build Coastguard Worker StdVideoH265PictureParameterSet base; 70*61046927SAndroid Build Coastguard Worker StdVideoH265ScalingLists scaling_lists; 71*61046927SAndroid Build Coastguard Worker StdVideoH265PredictorPaletteEntries palette_entries; 72*61046927SAndroid Build Coastguard Worker }; 73*61046927SAndroid Build Coastguard Worker 74*61046927SAndroid Build Coastguard Worker struct vk_video_av1_seq_hdr { 75*61046927SAndroid Build Coastguard Worker StdVideoAV1SequenceHeader base; 76*61046927SAndroid Build Coastguard Worker StdVideoAV1ColorConfig color_config; 77*61046927SAndroid Build Coastguard Worker StdVideoAV1TimingInfo timing_info; 78*61046927SAndroid Build Coastguard Worker }; 79*61046927SAndroid Build Coastguard Worker 80*61046927SAndroid Build Coastguard Worker struct vk_video_session { 81*61046927SAndroid Build Coastguard Worker struct vk_object_base base; 82*61046927SAndroid Build Coastguard Worker VkVideoSessionCreateFlagsKHR flags; 83*61046927SAndroid Build Coastguard Worker VkVideoCodecOperationFlagsKHR op; 84*61046927SAndroid Build Coastguard Worker VkExtent2D max_coded; 85*61046927SAndroid Build Coastguard Worker VkFormat picture_format; 86*61046927SAndroid Build Coastguard Worker VkFormat ref_format; 87*61046927SAndroid Build Coastguard Worker uint32_t max_dpb_slots; 88*61046927SAndroid Build Coastguard Worker uint32_t max_active_ref_pics; 89*61046927SAndroid Build Coastguard Worker 90*61046927SAndroid Build Coastguard Worker struct { 91*61046927SAndroid Build Coastguard Worker VkVideoEncodeUsageFlagsKHR video_usage_hints; 92*61046927SAndroid Build Coastguard Worker VkVideoEncodeContentFlagsKHR video_content_hints; 93*61046927SAndroid Build Coastguard Worker VkVideoEncodeTuningModeKHR tuning_mode; 94*61046927SAndroid Build Coastguard Worker } enc_usage; 95*61046927SAndroid Build Coastguard Worker union { 96*61046927SAndroid Build Coastguard Worker struct { 97*61046927SAndroid Build Coastguard Worker StdVideoH264ProfileIdc profile_idc; 98*61046927SAndroid Build Coastguard Worker } h264; 99*61046927SAndroid Build Coastguard Worker struct { 100*61046927SAndroid Build Coastguard Worker StdVideoH265ProfileIdc profile_idc; 101*61046927SAndroid Build Coastguard Worker } h265; 102*61046927SAndroid Build Coastguard Worker struct { 103*61046927SAndroid Build Coastguard Worker StdVideoAV1Profile profile; 104*61046927SAndroid Build Coastguard Worker int film_grain_support; 105*61046927SAndroid Build Coastguard Worker } av1; 106*61046927SAndroid Build Coastguard Worker }; 107*61046927SAndroid Build Coastguard Worker }; 108*61046927SAndroid Build Coastguard Worker 109*61046927SAndroid Build Coastguard Worker struct vk_video_session_parameters { 110*61046927SAndroid Build Coastguard Worker struct vk_object_base base; 111*61046927SAndroid Build Coastguard Worker VkVideoCodecOperationFlagsKHR op; 112*61046927SAndroid Build Coastguard Worker union { 113*61046927SAndroid Build Coastguard Worker struct { 114*61046927SAndroid Build Coastguard Worker uint32_t max_h264_sps_count; 115*61046927SAndroid Build Coastguard Worker uint32_t max_h264_pps_count; 116*61046927SAndroid Build Coastguard Worker 117*61046927SAndroid Build Coastguard Worker uint32_t h264_sps_count; 118*61046927SAndroid Build Coastguard Worker struct vk_video_h264_sps *h264_sps; 119*61046927SAndroid Build Coastguard Worker uint32_t h264_pps_count; 120*61046927SAndroid Build Coastguard Worker struct vk_video_h264_pps *h264_pps; 121*61046927SAndroid Build Coastguard Worker } h264_dec; 122*61046927SAndroid Build Coastguard Worker 123*61046927SAndroid Build Coastguard Worker struct { 124*61046927SAndroid Build Coastguard Worker uint32_t max_h265_vps_count; 125*61046927SAndroid Build Coastguard Worker uint32_t max_h265_sps_count; 126*61046927SAndroid Build Coastguard Worker uint32_t max_h265_pps_count; 127*61046927SAndroid Build Coastguard Worker 128*61046927SAndroid Build Coastguard Worker uint32_t h265_vps_count; 129*61046927SAndroid Build Coastguard Worker struct vk_video_h265_vps *h265_vps; 130*61046927SAndroid Build Coastguard Worker uint32_t h265_sps_count; 131*61046927SAndroid Build Coastguard Worker struct vk_video_h265_sps *h265_sps; 132*61046927SAndroid Build Coastguard Worker uint32_t h265_pps_count; 133*61046927SAndroid Build Coastguard Worker struct vk_video_h265_pps *h265_pps; 134*61046927SAndroid Build Coastguard Worker } h265_dec; 135*61046927SAndroid Build Coastguard Worker 136*61046927SAndroid Build Coastguard Worker struct { 137*61046927SAndroid Build Coastguard Worker struct vk_video_av1_seq_hdr seq_hdr; 138*61046927SAndroid Build Coastguard Worker } av1_dec; 139*61046927SAndroid Build Coastguard Worker 140*61046927SAndroid Build Coastguard Worker struct { 141*61046927SAndroid Build Coastguard Worker uint32_t max_h264_sps_count; 142*61046927SAndroid Build Coastguard Worker uint32_t max_h264_pps_count; 143*61046927SAndroid Build Coastguard Worker 144*61046927SAndroid Build Coastguard Worker uint32_t h264_sps_count; 145*61046927SAndroid Build Coastguard Worker struct vk_video_h264_sps *h264_sps; 146*61046927SAndroid Build Coastguard Worker uint32_t h264_pps_count; 147*61046927SAndroid Build Coastguard Worker struct vk_video_h264_pps *h264_pps; 148*61046927SAndroid Build Coastguard Worker StdVideoH264ProfileIdc profile_idc; 149*61046927SAndroid Build Coastguard Worker } h264_enc; 150*61046927SAndroid Build Coastguard Worker 151*61046927SAndroid Build Coastguard Worker struct { 152*61046927SAndroid Build Coastguard Worker uint32_t max_h265_vps_count; 153*61046927SAndroid Build Coastguard Worker uint32_t max_h265_sps_count; 154*61046927SAndroid Build Coastguard Worker uint32_t max_h265_pps_count; 155*61046927SAndroid Build Coastguard Worker 156*61046927SAndroid Build Coastguard Worker uint32_t h265_vps_count; 157*61046927SAndroid Build Coastguard Worker struct vk_video_h265_vps *h265_vps; 158*61046927SAndroid Build Coastguard Worker uint32_t h265_sps_count; 159*61046927SAndroid Build Coastguard Worker struct vk_video_h265_sps *h265_sps; 160*61046927SAndroid Build Coastguard Worker uint32_t h265_pps_count; 161*61046927SAndroid Build Coastguard Worker struct vk_video_h265_pps *h265_pps; 162*61046927SAndroid Build Coastguard Worker } h265_enc; 163*61046927SAndroid Build Coastguard Worker }; 164*61046927SAndroid Build Coastguard Worker }; 165*61046927SAndroid Build Coastguard Worker 166*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_init(struct vk_device *device, 167*61046927SAndroid Build Coastguard Worker struct vk_video_session *vid, 168*61046927SAndroid Build Coastguard Worker const VkVideoSessionCreateInfoKHR *create_info); 169*61046927SAndroid Build Coastguard Worker 170*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_parameters_init(struct vk_device *device, 171*61046927SAndroid Build Coastguard Worker struct vk_video_session_parameters *params, 172*61046927SAndroid Build Coastguard Worker const struct vk_video_session *vid, 173*61046927SAndroid Build Coastguard Worker const struct vk_video_session_parameters *templ, 174*61046927SAndroid Build Coastguard Worker const VkVideoSessionParametersCreateInfoKHR *create_info); 175*61046927SAndroid Build Coastguard Worker 176*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_parameters_update(struct vk_video_session_parameters *params, 177*61046927SAndroid Build Coastguard Worker const VkVideoSessionParametersUpdateInfoKHR *update); 178*61046927SAndroid Build Coastguard Worker 179*61046927SAndroid Build Coastguard Worker void vk_video_session_parameters_finish(struct vk_device *device, 180*61046927SAndroid Build Coastguard Worker struct vk_video_session_parameters *params); 181*61046927SAndroid Build Coastguard Worker 182*61046927SAndroid Build Coastguard Worker void vk_video_derive_h264_scaling_list(const StdVideoH264SequenceParameterSet *sps, 183*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet *pps, 184*61046927SAndroid Build Coastguard Worker StdVideoH264ScalingLists *list); 185*61046927SAndroid Build Coastguard Worker 186*61046927SAndroid Build Coastguard Worker const StdVideoH264SequenceParameterSet * 187*61046927SAndroid Build Coastguard Worker vk_video_find_h264_dec_std_sps(const struct vk_video_session_parameters *params, 188*61046927SAndroid Build Coastguard Worker uint32_t id); 189*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet * 190*61046927SAndroid Build Coastguard Worker vk_video_find_h264_dec_std_pps(const struct vk_video_session_parameters *params, 191*61046927SAndroid Build Coastguard Worker uint32_t id); 192*61046927SAndroid Build Coastguard Worker const StdVideoH265VideoParameterSet * 193*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_vps(const struct vk_video_session_parameters *params, 194*61046927SAndroid Build Coastguard Worker uint32_t id); 195*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet * 196*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_sps(const struct vk_video_session_parameters *params, 197*61046927SAndroid Build Coastguard Worker uint32_t id); 198*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet * 199*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_pps(const struct vk_video_session_parameters *params, 200*61046927SAndroid Build Coastguard Worker uint32_t id); 201*61046927SAndroid Build Coastguard Worker 202*61046927SAndroid Build Coastguard Worker struct vk_video_h265_slice_params { 203*61046927SAndroid Build Coastguard Worker uint32_t slice_size; 204*61046927SAndroid Build Coastguard Worker 205*61046927SAndroid Build Coastguard Worker uint8_t first_slice_segment_in_pic_flag; 206*61046927SAndroid Build Coastguard Worker StdVideoH265SliceType slice_type; 207*61046927SAndroid Build Coastguard Worker uint8_t dependent_slice_segment; 208*61046927SAndroid Build Coastguard Worker uint8_t temporal_mvp_enable; 209*61046927SAndroid Build Coastguard Worker uint8_t loop_filter_across_slices_enable; 210*61046927SAndroid Build Coastguard Worker int32_t pic_order_cnt_lsb; 211*61046927SAndroid Build Coastguard Worker uint8_t sao_luma_flag; 212*61046927SAndroid Build Coastguard Worker uint8_t sao_chroma_flag; 213*61046927SAndroid Build Coastguard Worker uint8_t collocated_list; 214*61046927SAndroid Build Coastguard Worker uint32_t collocated_ref_idx; 215*61046927SAndroid Build Coastguard Worker uint8_t mvd_l1_zero_flag; 216*61046927SAndroid Build Coastguard Worker 217*61046927SAndroid Build Coastguard Worker uint8_t num_ref_idx_l0_active; 218*61046927SAndroid Build Coastguard Worker uint8_t num_ref_idx_l1_active; 219*61046927SAndroid Build Coastguard Worker uint8_t rpl_modification_flag[2]; 220*61046927SAndroid Build Coastguard Worker uint8_t cabac_init_idc; 221*61046927SAndroid Build Coastguard Worker int8_t slice_qp_delta; 222*61046927SAndroid Build Coastguard Worker int8_t slice_cb_qp_offset; 223*61046927SAndroid Build Coastguard Worker int8_t slice_cr_qp_offset; 224*61046927SAndroid Build Coastguard Worker int8_t max_num_merge_cand; 225*61046927SAndroid Build Coastguard Worker uint32_t slice_data_bytes_offset; 226*61046927SAndroid Build Coastguard Worker uint8_t disable_deblocking_filter_idc; 227*61046927SAndroid Build Coastguard Worker int8_t tc_offset_div2; 228*61046927SAndroid Build Coastguard Worker int8_t beta_offset_div2; 229*61046927SAndroid Build Coastguard Worker uint32_t slice_segment_address; 230*61046927SAndroid Build Coastguard Worker 231*61046927SAndroid Build Coastguard Worker uint8_t luma_log2_weight_denom; 232*61046927SAndroid Build Coastguard Worker uint8_t chroma_log2_weight_denom; 233*61046927SAndroid Build Coastguard Worker uint8_t luma_weight_l0_flag[16]; 234*61046927SAndroid Build Coastguard Worker int16_t luma_weight_l0[16]; 235*61046927SAndroid Build Coastguard Worker int16_t luma_offset_l0[16]; 236*61046927SAndroid Build Coastguard Worker uint8_t chroma_weight_l0_flag[16]; 237*61046927SAndroid Build Coastguard Worker int16_t chroma_weight_l0[16][2]; 238*61046927SAndroid Build Coastguard Worker int16_t chroma_offset_l0[16][2]; 239*61046927SAndroid Build Coastguard Worker uint8_t luma_weight_l1_flag[16]; 240*61046927SAndroid Build Coastguard Worker int16_t luma_weight_l1[16]; 241*61046927SAndroid Build Coastguard Worker int16_t luma_offset_l1[16]; 242*61046927SAndroid Build Coastguard Worker uint8_t chroma_weight_l1_flag[16]; 243*61046927SAndroid Build Coastguard Worker int16_t chroma_weight_l1[16][2]; 244*61046927SAndroid Build Coastguard Worker int16_t chroma_offset_l1[16][2]; 245*61046927SAndroid Build Coastguard Worker 246*61046927SAndroid Build Coastguard Worker int8_t delta_luma_weight_l0[16]; 247*61046927SAndroid Build Coastguard Worker int8_t delta_luma_weight_l1[16]; 248*61046927SAndroid Build Coastguard Worker int8_t delta_chroma_weight_l0[16][2]; 249*61046927SAndroid Build Coastguard Worker int8_t delta_chroma_weight_l1[16][2]; 250*61046927SAndroid Build Coastguard Worker int16_t delta_chroma_offset_l0[16][2]; 251*61046927SAndroid Build Coastguard Worker int16_t delta_chroma_offset_l1[16][2]; 252*61046927SAndroid Build Coastguard Worker }; 253*61046927SAndroid Build Coastguard Worker 254*61046927SAndroid Build Coastguard Worker void 255*61046927SAndroid Build Coastguard Worker vk_video_parse_h265_slice_header(const struct VkVideoDecodeInfoKHR *frame_info, 256*61046927SAndroid Build Coastguard Worker const VkVideoDecodeH265PictureInfoKHR *pic_info, 257*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet *sps, 258*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet *pps, 259*61046927SAndroid Build Coastguard Worker void *slice_data, 260*61046927SAndroid Build Coastguard Worker uint32_t slice_size, 261*61046927SAndroid Build Coastguard Worker struct vk_video_h265_slice_params *params); 262*61046927SAndroid Build Coastguard Worker 263*61046927SAndroid Build Coastguard Worker 264*61046927SAndroid Build Coastguard Worker struct vk_video_h265_reference { 265*61046927SAndroid Build Coastguard Worker const VkVideoPictureResourceInfoKHR *pPictureResource; 266*61046927SAndroid Build Coastguard Worker StdVideoDecodeH265ReferenceInfoFlags flags; 267*61046927SAndroid Build Coastguard Worker uint32_t slot_index; 268*61046927SAndroid Build Coastguard Worker int32_t pic_order_cnt; 269*61046927SAndroid Build Coastguard Worker }; 270*61046927SAndroid Build Coastguard Worker 271*61046927SAndroid Build Coastguard Worker int vk_video_h265_poc_by_slot(const struct VkVideoDecodeInfoKHR *frame_info, int slot); 272*61046927SAndroid Build Coastguard Worker 273*61046927SAndroid Build Coastguard Worker void vk_fill_video_h265_reference_info(const VkVideoDecodeInfoKHR *frame_info, 274*61046927SAndroid Build Coastguard Worker const struct VkVideoDecodeH265PictureInfoKHR *pic, 275*61046927SAndroid Build Coastguard Worker const struct vk_video_h265_slice_params *slice_params, 276*61046927SAndroid Build Coastguard Worker struct vk_video_h265_reference ref_slots[][8]); 277*61046927SAndroid Build Coastguard Worker 278*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H264_MACROBLOCK_WIDTH 16 279*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H264_MACROBLOCK_HEIGHT 16 280*61046927SAndroid Build Coastguard Worker 281*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H265_CTU_MAX_WIDTH 64 282*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H265_CTU_MAX_HEIGHT 64 283*61046927SAndroid Build Coastguard Worker 284*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_AV1_BLOCK_WIDTH 128 285*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_AV1_BLOCK_HEIGHT 128 286*61046927SAndroid Build Coastguard Worker 287*61046927SAndroid Build Coastguard Worker void 288*61046927SAndroid Build Coastguard Worker vk_video_get_profile_alignments(const VkVideoProfileListInfoKHR *profile_list, 289*61046927SAndroid Build Coastguard Worker uint32_t *width_align_out, uint32_t *height_align_out); 290*61046927SAndroid Build Coastguard Worker 291*61046927SAndroid Build Coastguard Worker uint8_t 292*61046927SAndroid Build Coastguard Worker vk_video_get_h264_level(StdVideoH264LevelIdc level); 293*61046927SAndroid Build Coastguard Worker 294*61046927SAndroid Build Coastguard Worker const StdVideoH264SequenceParameterSet * 295*61046927SAndroid Build Coastguard Worker vk_video_find_h264_enc_std_sps(const struct vk_video_session_parameters *params, 296*61046927SAndroid Build Coastguard Worker uint32_t id); 297*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet * 298*61046927SAndroid Build Coastguard Worker vk_video_find_h264_enc_std_pps(const struct vk_video_session_parameters *params, 299*61046927SAndroid Build Coastguard Worker uint32_t id); 300*61046927SAndroid Build Coastguard Worker 301*61046927SAndroid Build Coastguard Worker const StdVideoH265VideoParameterSet * 302*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_vps(const struct vk_video_session_parameters *params, 303*61046927SAndroid Build Coastguard Worker uint32_t id); 304*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet * 305*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_sps(const struct vk_video_session_parameters *params, 306*61046927SAndroid Build Coastguard Worker uint32_t id); 307*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet * 308*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_pps(const struct vk_video_session_parameters *params, 309*61046927SAndroid Build Coastguard Worker uint32_t id); 310*61046927SAndroid Build Coastguard Worker 311*61046927SAndroid Build Coastguard Worker void 312*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_sps(const StdVideoH264SequenceParameterSet *sps, 313*61046927SAndroid Build Coastguard Worker size_t size_limit, 314*61046927SAndroid Build Coastguard Worker size_t *data_size_ptr, 315*61046927SAndroid Build Coastguard Worker void *data_ptr); 316*61046927SAndroid Build Coastguard Worker 317*61046927SAndroid Build Coastguard Worker void 318*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_pps(const StdVideoH264PictureParameterSet *pps, 319*61046927SAndroid Build Coastguard Worker bool high_profile, 320*61046927SAndroid Build Coastguard Worker size_t size_limit, 321*61046927SAndroid Build Coastguard Worker size_t *data_size_ptr, 322*61046927SAndroid Build Coastguard Worker void *data_ptr); 323*61046927SAndroid Build Coastguard Worker 324*61046927SAndroid Build Coastguard Worker unsigned 325*61046927SAndroid Build Coastguard Worker vk_video_get_h265_nal_unit(const StdVideoEncodeH265PictureInfo *pic_info); 326*61046927SAndroid Build Coastguard Worker 327*61046927SAndroid Build Coastguard Worker void 328*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_vps(const StdVideoH265VideoParameterSet *vps, 329*61046927SAndroid Build Coastguard Worker size_t size_limit, 330*61046927SAndroid Build Coastguard Worker size_t *data_size, 331*61046927SAndroid Build Coastguard Worker void *data_ptr); 332*61046927SAndroid Build Coastguard Worker void 333*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_sps(const StdVideoH265SequenceParameterSet *sps, 334*61046927SAndroid Build Coastguard Worker size_t size_limit, 335*61046927SAndroid Build Coastguard Worker size_t* pDataSize, 336*61046927SAndroid Build Coastguard Worker void* pData); 337*61046927SAndroid Build Coastguard Worker 338*61046927SAndroid Build Coastguard Worker void 339*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_pps(const StdVideoH265PictureParameterSet *pps, 340*61046927SAndroid Build Coastguard Worker size_t size_limit, 341*61046927SAndroid Build Coastguard Worker size_t *data_size, 342*61046927SAndroid Build Coastguard Worker void *data_ptr); 343*61046927SAndroid Build Coastguard Worker 344*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 345*61046927SAndroid Build Coastguard Worker } 346*61046927SAndroid Build Coastguard Worker #endif 347*61046927SAndroid Build Coastguard Worker 348*61046927SAndroid Build Coastguard Worker void 349*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_slice_header(const StdVideoEncodeH264PictureInfo *pic_info, 350*61046927SAndroid Build Coastguard Worker const StdVideoH264SequenceParameterSet *sps, 351*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet *pps, 352*61046927SAndroid Build Coastguard Worker const StdVideoEncodeH264SliceHeader *slice_header, 353*61046927SAndroid Build Coastguard Worker const int8_t slice_qp_delta, 354*61046927SAndroid Build Coastguard Worker size_t *data_size_ptr, 355*61046927SAndroid Build Coastguard Worker void *data_ptr); 356*61046927SAndroid Build Coastguard Worker 357*61046927SAndroid Build Coastguard Worker void 358*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_slice_header(const StdVideoEncodeH265PictureInfo *pic_info, 359*61046927SAndroid Build Coastguard Worker const StdVideoH265VideoParameterSet *vps, 360*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet *sps, 361*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet *pps, 362*61046927SAndroid Build Coastguard Worker const StdVideoEncodeH265SliceSegmentHeader *slice_header, 363*61046927SAndroid Build Coastguard Worker const int8_t slice_qp_delta, 364*61046927SAndroid Build Coastguard Worker size_t *data_size_ptr, 365*61046927SAndroid Build Coastguard Worker void *data_ptr); 366*61046927SAndroid Build Coastguard Worker #endif 367