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
17extern "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
34typedef 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
43typedef 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
62typedef 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
69typedef 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
78typedef 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
88typedef 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;
100typedef struct StdVideoVP9ColorConfigFlags {
101 uint32_t color_range : 1;
102 uint32_t reserved : 31;
103} StdVideoVP9ColorConfigFlags;
104
105typedef 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
114typedef 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
120typedef 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
130typedef 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
138typedef 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