1 #ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 2 #define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1 3 4 /* 5 ** Copyright 2015-2022 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_h264std_encode 1 23 typedef struct StdVideoEncodeH264SliceHeaderFlags { 24 uint32_t direct_spatial_mv_pred_flag : 1; 25 uint32_t num_ref_idx_active_override_flag : 1; 26 uint32_t no_output_of_prior_pics_flag : 1; 27 uint32_t adaptive_ref_pic_marking_mode_flag : 1; 28 uint32_t no_prior_references_available_flag : 1; 29 } StdVideoEncodeH264SliceHeaderFlags; 30 31 typedef struct StdVideoEncodeH264PictureInfoFlags { 32 uint32_t idr_flag : 1; 33 uint32_t is_reference_flag : 1; 34 uint32_t long_term_reference_flag : 1; 35 } StdVideoEncodeH264PictureInfoFlags; 36 37 typedef struct StdVideoEncodeH264ReferenceInfoFlags { 38 uint32_t is_long_term : 1; 39 } StdVideoEncodeH264ReferenceInfoFlags; 40 41 typedef struct StdVideoEncodeH264RefMgmtFlags { 42 uint32_t ref_pic_list_modification_l0_flag : 1; 43 uint32_t ref_pic_list_modification_l1_flag : 1; 44 } StdVideoEncodeH264RefMgmtFlags; 45 46 typedef struct StdVideoEncodeH264RefListModEntry { 47 StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc; 48 uint16_t abs_diff_pic_num_minus1; 49 uint16_t long_term_pic_num; 50 } StdVideoEncodeH264RefListModEntry; 51 52 typedef struct StdVideoEncodeH264RefPicMarkingEntry { 53 StdVideoH264MemMgmtControlOp operation; 54 uint16_t difference_of_pic_nums_minus1; 55 uint16_t long_term_pic_num; 56 uint16_t long_term_frame_idx; 57 uint16_t max_long_term_frame_idx_plus1; 58 } StdVideoEncodeH264RefPicMarkingEntry; 59 60 typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations { 61 StdVideoEncodeH264RefMgmtFlags flags; 62 uint8_t refList0ModOpCount; 63 StdVideoEncodeH264RefListModEntry* pRefList0ModOperations; 64 uint8_t refList1ModOpCount; 65 StdVideoEncodeH264RefListModEntry* pRefList1ModOperations; 66 uint8_t refPicMarkingOpCount; 67 StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations; 68 } StdVideoEncodeH264RefMemMgmtCtrlOperations; 69 70 typedef struct StdVideoEncodeH264PictureInfo { 71 StdVideoEncodeH264PictureInfoFlags flags; 72 StdVideoH264PictureType pictureType; 73 uint32_t frame_num; 74 int32_t PicOrderCnt; 75 } StdVideoEncodeH264PictureInfo; 76 77 typedef struct StdVideoEncodeH264ReferenceInfo { 78 StdVideoEncodeH264ReferenceInfoFlags flags; 79 uint32_t FrameNum; 80 int32_t PicOrderCnt; 81 uint16_t long_term_pic_num; 82 uint16_t long_term_frame_idx; 83 } StdVideoEncodeH264ReferenceInfo; 84 85 typedef struct StdVideoEncodeH264SliceHeader { 86 StdVideoEncodeH264SliceHeaderFlags flags; 87 uint32_t first_mb_in_slice; 88 StdVideoH264SliceType slice_type; 89 uint8_t seq_parameter_set_id; 90 uint8_t pic_parameter_set_id; 91 uint16_t idr_pic_id; 92 uint8_t num_ref_idx_l0_active_minus1; 93 uint8_t num_ref_idx_l1_active_minus1; 94 StdVideoH264CabacInitIdc cabac_init_idc; 95 StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc; 96 int8_t slice_alpha_c0_offset_div2; 97 int8_t slice_beta_offset_div2; 98 } StdVideoEncodeH264SliceHeader; 99 100 101 #ifdef __cplusplus 102 } 103 #endif 104 105 #endif 106