|
1501
|
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
|