1 #ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 2 #define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1 3 4 /* 5 ** Copyright 2015-2021 The Khronos Group Inc. 6 ** 7 ** SPDX-License-Identifier: Apache-2.0 8 */ 9 10 /* 11 ** This header is generated from the Khronos Vulkan XML API Registry. 12 ** 13 */ 14 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 21 22 #define vulkan_video_codec_h265std_encode 1 23 #define STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE 15 24 #define STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE 15 25 #define STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM 2 26 typedef struct StdVideoEncodeH265SliceHeaderFlags { 27 uint32_t first_slice_segment_in_pic_flag : 1; 28 uint32_t no_output_of_prior_pics_flag : 1; 29 uint32_t dependent_slice_segment_flag : 1; 30 uint32_t short_term_ref_pic_set_sps_flag : 1; 31 uint32_t slice_temporal_mvp_enable_flag : 1; 32 uint32_t slice_sao_luma_flag : 1; 33 uint32_t slice_sao_chroma_flag : 1; 34 uint32_t num_ref_idx_active_override_flag : 1; 35 uint32_t mvd_l1_zero_flag : 1; 36 uint32_t cabac_init_flag : 1; 37 uint32_t slice_deblocking_filter_disable_flag : 1; 38 uint32_t collocated_from_l0_flag : 1; 39 uint32_t slice_loop_filter_across_slices_enabled_flag : 1; 40 uint32_t bLastSliceInPic : 1; 41 uint32_t reservedBits : 18; 42 uint16_t luma_weight_l0_flag; 43 uint16_t chroma_weight_l0_flag; 44 uint16_t luma_weight_l1_flag; 45 uint16_t chroma_weight_l1_flag; 46 } StdVideoEncodeH265SliceHeaderFlags; 47 48 typedef struct StdVideoEncodeH265SliceHeader { 49 StdVideoH265SliceType slice_type; 50 uint8_t slice_pic_parameter_set_id; 51 uint8_t num_short_term_ref_pic_sets; 52 uint32_t slice_segment_address; 53 uint8_t short_term_ref_pic_set_idx; 54 uint8_t num_long_term_sps; 55 uint8_t num_long_term_pics; 56 uint8_t collocated_ref_idx; 57 uint8_t num_ref_idx_l0_active_minus1; 58 uint8_t num_ref_idx_l1_active_minus1; 59 uint8_t luma_log2_weight_denom; 60 int8_t delta_chroma_log2_weight_denom; 61 int8_t delta_luma_weight_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE]; 62 int8_t luma_offset_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE]; 63 int8_t delta_chroma_weight_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM]; 64 int8_t delta_chroma_offset_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM]; 65 int8_t delta_luma_weight_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE]; 66 int8_t luma_offset_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE]; 67 int8_t delta_chroma_weight_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM]; 68 int8_t delta_chroma_offset_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM]; 69 uint8_t MaxNumMergeCand; 70 int8_t slice_qp_delta; 71 int8_t slice_cb_qp_offset; 72 int8_t slice_cr_qp_offset; 73 int8_t slice_beta_offset_div2; 74 int8_t slice_tc_offset_div2; 75 int8_t slice_act_y_qp_offset; 76 int8_t slice_act_cb_qp_offset; 77 int8_t slice_act_cr_qp_offset; 78 StdVideoEncodeH265SliceHeaderFlags flags; 79 } StdVideoEncodeH265SliceHeader; 80 81 typedef struct StdVideoEncodeH265ReferenceModificationFlags { 82 uint32_t ref_pic_list_modification_flag_l0 : 1; 83 uint32_t ref_pic_list_modification_flag_l1 : 1; 84 } StdVideoEncodeH265ReferenceModificationFlags; 85 86 typedef struct StdVideoEncodeH265ReferenceModifications { 87 StdVideoEncodeH265ReferenceModificationFlags flags; 88 uint8_t referenceList0ModificationsCount; 89 uint8_t* pReferenceList0Modifications; 90 uint8_t referenceList1ModificationsCount; 91 uint8_t* pReferenceList1Modifications; 92 } StdVideoEncodeH265ReferenceModifications; 93 94 typedef struct StdVideoEncodeH265PictureInfoFlags { 95 uint32_t is_reference_flag : 1; 96 uint32_t IrapPicFlag : 1; 97 uint32_t long_term_flag : 1; 98 } StdVideoEncodeH265PictureInfoFlags; 99 100 typedef struct StdVideoEncodeH265PictureInfo { 101 StdVideoH265PictureType PictureType; 102 uint8_t sps_video_parameter_set_id; 103 uint8_t pps_seq_parameter_set_id; 104 int32_t PicOrderCntVal; 105 uint8_t TemporalId; 106 StdVideoEncodeH265PictureInfoFlags flags; 107 } StdVideoEncodeH265PictureInfo; 108 109 typedef struct StdVideoEncodeH265ReferenceInfoFlags { 110 uint32_t is_long_term : 1; 111 uint32_t isUsedFlag : 1; 112 } StdVideoEncodeH265ReferenceInfoFlags; 113 114 typedef struct StdVideoEncodeH265ReferenceInfo { 115 int32_t PicOrderCntVal; 116 uint8_t TemporalId; 117 StdVideoEncodeH265ReferenceInfoFlags flags; 118 } StdVideoEncodeH265ReferenceInfo; 119 120 121 #ifdef __cplusplus 122 } 123 #endif 124 125 #endif 126