Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/dep/vulkan/include/vk_video/vulkan_video_codec_vp9std.h
7200 views
1
#ifndef VULKAN_VIDEO_CODEC_VP9STD_H_
2
#define VULKAN_VIDEO_CODEC_VP9STD_H_ 1
3
4
/*
5
** Copyright 2015-2025 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
// vulkan_video_codec_vp9std is a preprocessor guard. Do not pass it to API calls.
23
#define vulkan_video_codec_vp9std 1
24
#include "vulkan_video_codecs_common.h"
25
#define STD_VIDEO_VP9_NUM_REF_FRAMES 8U
26
#define STD_VIDEO_VP9_REFS_PER_FRAME 3U
27
#define STD_VIDEO_VP9_MAX_REF_FRAMES 4U
28
#define STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS 2U
29
#define STD_VIDEO_VP9_MAX_SEGMENTS 8U
30
#define STD_VIDEO_VP9_SEG_LVL_MAX 4U
31
#define STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS 7U
32
#define STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB 3U
33
34
typedef enum StdVideoVP9Profile {
35
STD_VIDEO_VP9_PROFILE_0 = 0,
36
STD_VIDEO_VP9_PROFILE_1 = 1,
37
STD_VIDEO_VP9_PROFILE_2 = 2,
38
STD_VIDEO_VP9_PROFILE_3 = 3,
39
STD_VIDEO_VP9_PROFILE_INVALID = 0x7FFFFFFF,
40
STD_VIDEO_VP9_PROFILE_MAX_ENUM = 0x7FFFFFFF
41
} StdVideoVP9Profile;
42
43
typedef enum StdVideoVP9Level {
44
STD_VIDEO_VP9_LEVEL_1_0 = 0,
45
STD_VIDEO_VP9_LEVEL_1_1 = 1,
46
STD_VIDEO_VP9_LEVEL_2_0 = 2,
47
STD_VIDEO_VP9_LEVEL_2_1 = 3,
48
STD_VIDEO_VP9_LEVEL_3_0 = 4,
49
STD_VIDEO_VP9_LEVEL_3_1 = 5,
50
STD_VIDEO_VP9_LEVEL_4_0 = 6,
51
STD_VIDEO_VP9_LEVEL_4_1 = 7,
52
STD_VIDEO_VP9_LEVEL_5_0 = 8,
53
STD_VIDEO_VP9_LEVEL_5_1 = 9,
54
STD_VIDEO_VP9_LEVEL_5_2 = 10,
55
STD_VIDEO_VP9_LEVEL_6_0 = 11,
56
STD_VIDEO_VP9_LEVEL_6_1 = 12,
57
STD_VIDEO_VP9_LEVEL_6_2 = 13,
58
STD_VIDEO_VP9_LEVEL_INVALID = 0x7FFFFFFF,
59
STD_VIDEO_VP9_LEVEL_MAX_ENUM = 0x7FFFFFFF
60
} StdVideoVP9Level;
61
62
typedef enum StdVideoVP9FrameType {
63
STD_VIDEO_VP9_FRAME_TYPE_KEY = 0,
64
STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1,
65
STD_VIDEO_VP9_FRAME_TYPE_INVALID = 0x7FFFFFFF,
66
STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF
67
} StdVideoVP9FrameType;
68
69
typedef enum StdVideoVP9ReferenceName {
70
STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0,
71
STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1,
72
STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2,
73
STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3,
74
STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 0x7FFFFFFF,
75
STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF
76
} StdVideoVP9ReferenceName;
77
78
typedef enum StdVideoVP9InterpolationFilter {
79
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0,
80
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
81
STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
82
STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3,
83
STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4,
84
STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,
85
STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF
86
} StdVideoVP9InterpolationFilter;
87
88
typedef enum StdVideoVP9ColorSpace {
89
STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0,
90
STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1,
91
STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2,
92
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3,
93
STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4,
94
STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5,
95
STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6,
96
STD_VIDEO_VP9_COLOR_SPACE_RGB = 7,
97
STD_VIDEO_VP9_COLOR_SPACE_INVALID = 0x7FFFFFFF,
98
STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 0x7FFFFFFF
99
} StdVideoVP9ColorSpace;
100
typedef struct StdVideoVP9ColorConfigFlags {
101
uint32_t color_range : 1;
102
uint32_t reserved : 31;
103
} StdVideoVP9ColorConfigFlags;
104
105
typedef struct StdVideoVP9ColorConfig {
106
StdVideoVP9ColorConfigFlags flags;
107
uint8_t BitDepth;
108
uint8_t subsampling_x;
109
uint8_t subsampling_y;
110
uint8_t reserved1;
111
StdVideoVP9ColorSpace color_space;
112
} StdVideoVP9ColorConfig;
113
114
typedef struct StdVideoVP9LoopFilterFlags {
115
uint32_t loop_filter_delta_enabled : 1;
116
uint32_t loop_filter_delta_update : 1;
117
uint32_t reserved : 30;
118
} StdVideoVP9LoopFilterFlags;
119
120
typedef struct StdVideoVP9LoopFilter {
121
StdVideoVP9LoopFilterFlags flags;
122
uint8_t loop_filter_level;
123
uint8_t loop_filter_sharpness;
124
uint8_t update_ref_delta;
125
int8_t loop_filter_ref_deltas[STD_VIDEO_VP9_MAX_REF_FRAMES];
126
uint8_t update_mode_delta;
127
int8_t loop_filter_mode_deltas[STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS];
128
} StdVideoVP9LoopFilter;
129
130
typedef struct StdVideoVP9SegmentationFlags {
131
uint32_t segmentation_update_map : 1;
132
uint32_t segmentation_temporal_update : 1;
133
uint32_t segmentation_update_data : 1;
134
uint32_t segmentation_abs_or_delta_update : 1;
135
uint32_t reserved : 28;
136
} StdVideoVP9SegmentationFlags;
137
138
typedef struct StdVideoVP9Segmentation {
139
StdVideoVP9SegmentationFlags flags;
140
uint8_t segmentation_tree_probs[STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS];
141
uint8_t segmentation_pred_prob[STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB];
142
uint8_t FeatureEnabled[STD_VIDEO_VP9_MAX_SEGMENTS];
143
int16_t FeatureData[STD_VIDEO_VP9_MAX_SEGMENTS][STD_VIDEO_VP9_SEG_LVL_MAX];
144
} StdVideoVP9Segmentation;
145
146
147
#ifdef __cplusplus
148
}
149
#endif
150
151
#endif
152
153