mirror of https://github.com/PCSX2/pcsx2.git
152 lines
5.3 KiB
C
152 lines
5.3 KiB
C
#ifndef VULKAN_VIDEO_CODEC_VP9STD_H_
|
|
#define VULKAN_VIDEO_CODEC_VP9STD_H_ 1
|
|
|
|
/*
|
|
** Copyright 2015-2025 The Khronos Group Inc.
|
|
**
|
|
** SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/*
|
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
|
**
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
// vulkan_video_codec_vp9std is a preprocessor guard. Do not pass it to API calls.
|
|
#define vulkan_video_codec_vp9std 1
|
|
#include "vulkan_video_codecs_common.h"
|
|
#define STD_VIDEO_VP9_NUM_REF_FRAMES 8
|
|
#define STD_VIDEO_VP9_REFS_PER_FRAME 3
|
|
#define STD_VIDEO_VP9_MAX_REF_FRAMES 4
|
|
#define STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS 2
|
|
#define STD_VIDEO_VP9_MAX_SEGMENTS 8
|
|
#define STD_VIDEO_VP9_SEG_LVL_MAX 4
|
|
#define STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS 7
|
|
#define STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB 3
|
|
|
|
typedef enum StdVideoVP9Profile {
|
|
STD_VIDEO_VP9_PROFILE_0 = 0,
|
|
STD_VIDEO_VP9_PROFILE_1 = 1,
|
|
STD_VIDEO_VP9_PROFILE_2 = 2,
|
|
STD_VIDEO_VP9_PROFILE_3 = 3,
|
|
STD_VIDEO_VP9_PROFILE_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_PROFILE_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9Profile;
|
|
|
|
typedef enum StdVideoVP9Level {
|
|
STD_VIDEO_VP9_LEVEL_1_0 = 0,
|
|
STD_VIDEO_VP9_LEVEL_1_1 = 1,
|
|
STD_VIDEO_VP9_LEVEL_2_0 = 2,
|
|
STD_VIDEO_VP9_LEVEL_2_1 = 3,
|
|
STD_VIDEO_VP9_LEVEL_3_0 = 4,
|
|
STD_VIDEO_VP9_LEVEL_3_1 = 5,
|
|
STD_VIDEO_VP9_LEVEL_4_0 = 6,
|
|
STD_VIDEO_VP9_LEVEL_4_1 = 7,
|
|
STD_VIDEO_VP9_LEVEL_5_0 = 8,
|
|
STD_VIDEO_VP9_LEVEL_5_1 = 9,
|
|
STD_VIDEO_VP9_LEVEL_5_2 = 10,
|
|
STD_VIDEO_VP9_LEVEL_6_0 = 11,
|
|
STD_VIDEO_VP9_LEVEL_6_1 = 12,
|
|
STD_VIDEO_VP9_LEVEL_6_2 = 13,
|
|
STD_VIDEO_VP9_LEVEL_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_LEVEL_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9Level;
|
|
|
|
typedef enum StdVideoVP9FrameType {
|
|
STD_VIDEO_VP9_FRAME_TYPE_KEY = 0,
|
|
STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1,
|
|
STD_VIDEO_VP9_FRAME_TYPE_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9FrameType;
|
|
|
|
typedef enum StdVideoVP9ReferenceName {
|
|
STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0,
|
|
STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1,
|
|
STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2,
|
|
STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3,
|
|
STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9ReferenceName;
|
|
|
|
typedef enum StdVideoVP9InterpolationFilter {
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9InterpolationFilter;
|
|
|
|
typedef enum StdVideoVP9ColorSpace {
|
|
STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0,
|
|
STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1,
|
|
STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2,
|
|
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3,
|
|
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4,
|
|
STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5,
|
|
STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6,
|
|
STD_VIDEO_VP9_COLOR_SPACE_RGB = 7,
|
|
STD_VIDEO_VP9_COLOR_SPACE_INVALID = 0x7FFFFFFF,
|
|
STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 0x7FFFFFFF
|
|
} StdVideoVP9ColorSpace;
|
|
typedef struct StdVideoVP9ColorConfigFlags {
|
|
uint32_t color_range : 1;
|
|
uint32_t reserved : 31;
|
|
} StdVideoVP9ColorConfigFlags;
|
|
|
|
typedef struct StdVideoVP9ColorConfig {
|
|
StdVideoVP9ColorConfigFlags flags;
|
|
uint8_t BitDepth;
|
|
uint8_t subsampling_x;
|
|
uint8_t subsampling_y;
|
|
uint8_t reserved1;
|
|
StdVideoVP9ColorSpace color_space;
|
|
} StdVideoVP9ColorConfig;
|
|
|
|
typedef struct StdVideoVP9LoopFilterFlags {
|
|
uint32_t loop_filter_delta_enabled : 1;
|
|
uint32_t loop_filter_delta_update : 1;
|
|
uint32_t reserved : 30;
|
|
} StdVideoVP9LoopFilterFlags;
|
|
|
|
typedef struct StdVideoVP9LoopFilter {
|
|
StdVideoVP9LoopFilterFlags flags;
|
|
uint8_t loop_filter_level;
|
|
uint8_t loop_filter_sharpness;
|
|
uint8_t update_ref_delta;
|
|
int8_t loop_filter_ref_deltas[STD_VIDEO_VP9_MAX_REF_FRAMES];
|
|
uint8_t update_mode_delta;
|
|
int8_t loop_filter_mode_deltas[STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS];
|
|
} StdVideoVP9LoopFilter;
|
|
|
|
typedef struct StdVideoVP9SegmentationFlags {
|
|
uint32_t segmentation_update_map : 1;
|
|
uint32_t segmentation_temporal_update : 1;
|
|
uint32_t segmentation_update_data : 1;
|
|
uint32_t segmentation_abs_or_delta_update : 1;
|
|
uint32_t reserved : 28;
|
|
} StdVideoVP9SegmentationFlags;
|
|
|
|
typedef struct StdVideoVP9Segmentation {
|
|
StdVideoVP9SegmentationFlags flags;
|
|
uint8_t segmentation_tree_probs[STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS];
|
|
uint8_t segmentation_pred_prob[STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB];
|
|
uint8_t FeatureEnabled[STD_VIDEO_VP9_MAX_SEGMENTS];
|
|
int16_t FeatureData[STD_VIDEO_VP9_MAX_SEGMENTS][STD_VIDEO_VP9_SEG_LVL_MAX];
|
|
} StdVideoVP9Segmentation;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|