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

147 lines
6.7 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
/*
2023-03-25 15:27:03 +01:00
** Copyright 2015-2023 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
2023-08-01 18:07:27 +02:00
// vulkan_video_codec_h264std_encode is a preprocessor guard. Do not pass it to API calls.
2022-01-20 07:29:38 +01:00
#define vulkan_video_codec_h264std_encode 1
2023-08-01 18:07:27 +02:00
#include "vulkan_video_codec_h264std.h"
2022-04-03 12:05:09 +02:00
// Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
2023-08-01 18:07:27 +02:00
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_10 VK_MAKE_VIDEO_STD_VERSION(0, 9, 10)
2022-04-03 12:05:09 +02:00
2023-08-01 18:07:27 +02:00
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_10
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;
2023-08-01 18:07:27 +02:00
uint32_t reserved : 30;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264SliceHeaderFlags;
typedef struct StdVideoEncodeH264PictureInfoFlags {
2023-08-01 18:07:27 +02:00
uint32_t IdrPicFlag : 1;
uint32_t is_reference : 1;
uint32_t no_output_of_prior_pics_flag : 1;
uint32_t long_term_reference_flag : 1;
uint32_t adaptive_ref_pic_marking_mode_flag : 1;
uint32_t reserved : 27;
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;
2023-08-01 18:07:27 +02:00
uint32_t reserved : 31;
2022-04-03 12:05:09 +02:00
} StdVideoEncodeH264ReferenceInfoFlags;
2023-03-25 15:27:03 +01:00
typedef struct StdVideoEncodeH264ReferenceListsInfoFlags {
uint32_t ref_pic_list_modification_flag_l0 : 1;
uint32_t ref_pic_list_modification_flag_l1 : 1;
2023-08-01 18:07:27 +02:00
uint32_t reserved : 30;
2023-03-25 15:27:03 +01:00
} StdVideoEncodeH264ReferenceListsInfoFlags;
2021-11-06 18:06:20 +01:00
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;
2023-03-25 15:27:03 +01:00
typedef struct StdVideoEncodeH264ReferenceListsInfo {
StdVideoEncodeH264ReferenceListsInfoFlags flags;
2023-08-01 18:07:27 +02:00
uint8_t num_ref_idx_l0_active_minus1;
uint8_t num_ref_idx_l1_active_minus1;
uint8_t RefPicList0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
uint8_t RefPicList1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
2022-04-03 12:05:09 +02:00
uint8_t refList0ModOpCount;
uint8_t refList1ModOpCount;
uint8_t refPicMarkingOpCount;
2023-03-25 15:27:03 +01:00
uint8_t reserved1[7];
const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
2022-04-03 12:05:09 +02:00
const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
2023-03-25 15:27:03 +01:00
} StdVideoEncodeH264ReferenceListsInfo;
2021-11-06 18:06:20 +01:00
typedef struct StdVideoEncodeH264PictureInfo {
2023-08-01 18:07:27 +02:00
StdVideoEncodeH264PictureInfoFlags flags;
uint8_t seq_parameter_set_id;
uint8_t pic_parameter_set_id;
uint16_t idr_pic_id;
StdVideoH264PictureType primary_pic_type;
uint32_t frame_num;
int32_t PicOrderCnt;
uint8_t temporal_id;
uint8_t reserved1[3];
const StdVideoEncodeH264ReferenceListsInfo* pRefLists;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264PictureInfo;
2022-04-03 12:05:09 +02:00
typedef struct StdVideoEncodeH264ReferenceInfo {
StdVideoEncodeH264ReferenceInfoFlags flags;
2023-08-01 18:07:27 +02:00
StdVideoH264PictureType primary_pic_type;
2022-04-03 12:05:09 +02:00
uint32_t FrameNum;
int32_t PicOrderCnt;
uint16_t long_term_pic_num;
uint16_t long_term_frame_idx;
2023-08-01 18:07:27 +02:00
uint8_t temporal_id;
2022-04-03 12:05:09 +02:00
} 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;
int8_t slice_alpha_c0_offset_div2;
int8_t slice_beta_offset_div2;
2023-03-25 15:27:03 +01:00
uint16_t reserved1;
2023-08-01 18:07:27 +02:00
StdVideoH264CabacInitIdc cabac_init_idc;
StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
2022-04-03 12:05:09 +02:00
const StdVideoEncodeH264WeightTable* pWeightTable;
2021-11-06 18:06:20 +01:00
} StdVideoEncodeH264SliceHeader;
#ifdef __cplusplus
}
#endif
2022-01-20 07:29:38 +01:00
#endif