procedural-3d-engine/external/vk_video/vulkan_video_codec_h264std_encode.h

133 lines
5.8 KiB
C
Raw Normal View History

2022-01-20 07:29:38 +01:00
#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
2021-11-06 18:06:20 +01:00
/*
2022-04-03 12:05:09 +02:00
** Copyright 2015-2022 The Khronos Group Inc.
2021-11-06 18:06:20 +01:00
**
** SPDX-License-Identifier: Apache-2.0
*/
2022-01-20 07:29:38 +01:00
/*
** This header is generated from the Khronos Vulkan XML API Registry.
**
*/
2021-11-06 18:06:20 +01:00
#ifdef __cplusplus
extern "C" {
#endif
2022-01-20 07:29:38 +01:00
#define vulkan_video_codec_h264std_encode 1
2022-04-03 12:05:09 +02:00
// Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
2023-02-11 14:55:58 +01:00
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8)
2022-04-03 12:05:09 +02:00
2022-10-02 15:08:15 +02:00
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8
2022-04-03 12:05:09 +02:00
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
typedef struct StdVideoEncodeH264WeightTableFlags {
uint32_t luma_weight_l0_flag;
uint32_t chroma_weight_l0_flag;
uint32_t luma_weight_l1_flag;
uint32_t chroma_weight_l1_flag;
} StdVideoEncodeH264WeightTableFlags;
typedef struct StdVideoEncodeH264WeightTable {
StdVideoEncodeH264WeightTableFlags flags;
uint8_t luma_log2_weight_denom;
uint8_t chroma_log2_weight_denom;
int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
} StdVideoEncodeH264WeightTable;
2021-11-06 18:06:20 +01:00
typedef struct StdVideoEncodeH264SliceHeaderFlags {
2022-04-03 12:05:09 +02:00
uint32_t direct_spatial_mv_pred_flag : 1;
2022-01-20 07:29:38 +01:00
uint32_t num_ref_idx_active_override_flag : 1;
uint32_t no_output_of_prior_pics_flag : 1;
uint32_t adaptive_ref_pic_marking_mode_flag : 1;
uint32_t no_prior_references_available_flag : 1;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264SliceHeaderFlags;
typedef struct StdVideoEncodeH264PictureInfoFlags {
2022-01-20 07:29:38 +01:00
uint32_t idr_flag : 1;
uint32_t is_reference_flag : 1;
2022-04-03 12:05:09 +02:00
uint32_t used_for_long_term_reference : 1;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264PictureInfoFlags;
2022-04-03 12:05:09 +02:00
typedef struct StdVideoEncodeH264ReferenceInfoFlags {
uint32_t used_for_long_term_reference : 1;
} StdVideoEncodeH264ReferenceInfoFlags;
2021-11-06 18:06:20 +01:00
typedef struct StdVideoEncodeH264RefMgmtFlags {
2022-01-20 07:29:38 +01:00
uint32_t ref_pic_list_modification_l0_flag : 1;
uint32_t ref_pic_list_modification_l1_flag : 1;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264RefMgmtFlags;
typedef struct StdVideoEncodeH264RefListModEntry {
2022-01-20 07:29:38 +01:00
StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
uint16_t abs_diff_pic_num_minus1;
uint16_t long_term_pic_num;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264RefListModEntry;
typedef struct StdVideoEncodeH264RefPicMarkingEntry {
2022-01-20 07:29:38 +01:00
StdVideoH264MemMgmtControlOp operation;
uint16_t difference_of_pic_nums_minus1;
uint16_t long_term_pic_num;
uint16_t long_term_frame_idx;
uint16_t max_long_term_frame_idx_plus1;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264RefPicMarkingEntry;
typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
2022-04-03 12:05:09 +02:00
StdVideoEncodeH264RefMgmtFlags flags;
uint8_t refList0ModOpCount;
const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
uint8_t refList1ModOpCount;
const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
uint8_t refPicMarkingOpCount;
const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264RefMemMgmtCtrlOperations;
typedef struct StdVideoEncodeH264PictureInfo {
2022-01-20 07:29:38 +01:00
StdVideoEncodeH264PictureInfoFlags flags;
2022-04-03 12:05:09 +02:00
uint8_t seq_parameter_set_id;
uint8_t pic_parameter_set_id;
2022-01-20 07:29:38 +01:00
StdVideoH264PictureType pictureType;
2022-04-03 12:05:09 +02:00
uint32_t frame_num;
int32_t PicOrderCnt;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264PictureInfo;
2022-04-03 12:05:09 +02:00
typedef struct StdVideoEncodeH264ReferenceInfo {
StdVideoEncodeH264ReferenceInfoFlags flags;
uint32_t FrameNum;
int32_t PicOrderCnt;
uint16_t long_term_pic_num;
uint16_t long_term_frame_idx;
} StdVideoEncodeH264ReferenceInfo;
2021-11-06 18:06:20 +01:00
typedef struct StdVideoEncodeH264SliceHeader {
2022-04-03 12:05:09 +02:00
StdVideoEncodeH264SliceHeaderFlags flags;
uint32_t first_mb_in_slice;
StdVideoH264SliceType slice_type;
uint16_t idr_pic_id;
uint8_t num_ref_idx_l0_active_minus1;
uint8_t num_ref_idx_l1_active_minus1;
StdVideoH264CabacInitIdc cabac_init_idc;
StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
int8_t slice_alpha_c0_offset_div2;
int8_t slice_beta_offset_div2;
const StdVideoEncodeH264WeightTable* pWeightTable;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264SliceHeader;
#ifdef __cplusplus
}
#endif
2022-01-20 07:29:38 +01:00
#endif