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