16#ifndef HVTSTREAMINGAPI_H
17#define HVTSTREAMINGAPI_H
30#define HVT_DEFINE_HANDLE(name) typedef struct name##_T *name;
33#define HVT_MAKE_VERSION(major, minor, patch) \
34 ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
37#define HVT_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
40#define HVT_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)
43#define HVT_VERSION_PATCH(version) ((uint32_t)(version)&0xFFFU)
46#define HVT_HEADER_VERSION HVT_MAKE_VERSION(0, 0, 2)
51#define HVT_ENTRY_ATTR __declspec(dllimport)
58#define HVTAPI_ATTR HVT_ENTRY_ATTR
59#define HVTAPI_CALL __stdcall
60#define HVTAPI_PTR HVTAPI_CALL
62#define HVTAPI_ATTR HVT_ENTRY_ATTR
64#define HVTAPI_PTR HVTAPI_CALL
68#define VK_UUID_SIZE 16U
70#define HvtBool32 uint32_t
71#define HVT_MAX_STREAM_NAME_LENGHT 32
76 typedef enum HvtImageFormat
78 HVT_FORMAT_UNDEFINED = 0,
79 HVT_FORMAT_R5G6B5_UNORM_PACK16 = 4,
80 HVT_FORMAT_B5G6R5_UNORM_PACK16 = 5,
81 HVT_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
82 HVT_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
83 HVT_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
84 HVT_FORMAT_R8_UNORM = 9,
85 HVT_FORMAT_R8_SNORM = 10,
86 HVT_FORMAT_R8_USCALED = 11,
87 HVT_FORMAT_R8_SSCALED = 12,
88 HVT_FORMAT_R8_UINT = 13,
89 HVT_FORMAT_R8_SINT = 14,
90 HVT_FORMAT_R8_SRGB = 15,
91 HVT_FORMAT_R8G8B8_UNORM = 23,
92 HVT_FORMAT_R8G8B8_SNORM = 24,
93 HVT_FORMAT_R8G8B8_USCALED = 25,
94 HVT_FORMAT_R8G8B8_SSCALED = 26,
95 HVT_FORMAT_R8G8B8_UINT = 27,
96 HVT_FORMAT_R8G8B8_SINT = 28,
97 HVT_FORMAT_R8G8B8_SRGB = 29,
98 HVT_FORMAT_B8G8R8_UNORM = 30,
99 HVT_FORMAT_B8G8R8_SNORM = 31,
100 HVT_FORMAT_B8G8R8_USCALED = 32,
101 HVT_FORMAT_B8G8R8_SSCALED = 33,
102 HVT_FORMAT_B8G8R8_UINT = 34,
103 HVT_FORMAT_B8G8R8_SINT = 35,
104 HVT_FORMAT_B8G8R8_SRGB = 36,
105 HVT_FORMAT_R8G8B8A8_UNORM = 37,
106 HVT_FORMAT_R8G8B8A8_SNORM = 38,
107 HVT_FORMAT_R8G8B8A8_USCALED = 39,
108 HVT_FORMAT_R8G8B8A8_SSCALED = 40,
109 HVT_FORMAT_R8G8B8A8_UINT = 41,
110 HVT_FORMAT_R8G8B8A8_SINT = 42,
111 HVT_FORMAT_R8G8B8A8_SRGB = 43,
112 HVT_FORMAT_B8G8R8A8_UNORM = 44,
113 HVT_FORMAT_B8G8R8A8_SNORM = 45,
114 HVT_FORMAT_B8G8R8A8_USCALED = 46,
115 HVT_FORMAT_B8G8R8A8_SSCALED = 47,
116 HVT_FORMAT_B8G8R8A8_UINT = 48,
117 HVT_FORMAT_B8G8R8A8_SINT = 49,
118 HVT_FORMAT_B8G8R8A8_SRGB = 50,
119 HVT_FORMAT_R16_UNORM = 70,
120 HVT_FORMAT_R16_SNORM = 71,
121 HVT_FORMAT_R16_USCALED = 72,
122 HVT_FORMAT_R16_SSCALED = 73,
123 HVT_FORMAT_R16_UINT = 74,
124 HVT_FORMAT_R16_SINT = 75,
125 HVT_FORMAT_R16_SFLOAT = 76,
126 HVT_FORMAT_R16G16B16_UNORM = 84,
127 HVT_FORMAT_R16G16B16_SNORM = 85,
128 HVT_FORMAT_R16G16B16_USCALED = 86,
129 HVT_FORMAT_R16G16B16_SSCALED = 87,
130 HVT_FORMAT_R16G16B16_UINT = 88,
131 HVT_FORMAT_R16G16B16_SINT = 89,
132 HVT_FORMAT_R16G16B16_SFLOAT = 90,
133 HVT_FORMAT_R16G16B16A16_UNORM = 91,
134 HVT_FORMAT_R16G16B16A16_SNORM = 92,
135 HVT_FORMAT_R16G16B16A16_USCALED = 93,
136 HVT_FORMAT_R16G16B16A16_SSCALED = 94,
137 HVT_FORMAT_R16G16B16A16_UINT = 95,
138 HVT_FORMAT_R16G16B16A16_SINT = 96,
139 HVT_FORMAT_R16G16B16A16_SFLOAT = 97,
140 HVT_FORMAT_R32_UINT = 98,
141 HVT_FORMAT_R32_SINT = 99,
142 HVT_FORMAT_R32_SFLOAT = 100,
143 HVT_FORMAT_R32G32_UINT = 101,
144 HVT_FORMAT_R32G32_SINT = 102,
145 HVT_FORMAT_R32G32_SFLOAT = 103,
146 HVT_FORMAT_R32G32B32_UINT = 104,
147 HVT_FORMAT_R32G32B32_SINT = 105,
148 HVT_FORMAT_R32G32B32_SFLOAT = 106,
149 HVT_FORMAT_R32G32B32A32_UINT = 107,
150 HVT_FORMAT_R32G32B32A32_SINT = 108,
151 HVT_FORMAT_R32G32B32A32_SFLOAT = 109,
152 HVT_FORMAT_R64_UINT = 110,
153 HVT_FORMAT_R64_SINT = 111,
154 HVT_FORMAT_R64_SFLOAT = 112,
155 HVT_FORMAT_R64G64_UINT = 113,
156 HVT_FORMAT_R64G64_SINT = 114,
157 HVT_FORMAT_R64G64_SFLOAT = 115,
158 HVT_FORMAT_R64G64B64_UINT = 116,
159 HVT_FORMAT_R64G64B64_SINT = 117,
160 HVT_FORMAT_R64G64B64_SFLOAT = 118,
161 HVT_FORMAT_R64G64B64A64_UINT = 119,
162 HVT_FORMAT_R64G64B64A64_SINT = 120,
163 HVT_FORMAT_R64G64B64A64_SFLOAT = 121,
164 HVT_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
165 HVT_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
166 HVT_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
167 HVT_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
168 HVT_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
169 HVT_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
170 HVT_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
171 HVT_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
172 HVT_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
173 HVT_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
174 HVT_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
175 HVT_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
176 HVT_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
177 HVT_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
178 HVT_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
179 HVT_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
180 HVT_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
181 HVT_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
182 HVT_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
183 HVT_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
184 HVT_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
185 HVT_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
186 HVT_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
187 HVT_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
188 HVT_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
189 HVT_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
190 HVT_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
191 HVT_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
192 HVT_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
193 HVT_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
194 HVT_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
195 HVT_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
196 HVT_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
197 HVT_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
198 HVT_FORMAT_MAX_ENUM = 0x7FFFFFFF
204 typedef enum HvtResult
207 HVT_RESULT_TIMEOUT = 1,
208 HVT_ERROR_UNKNOWN = -1,
209 HVT_ERROR_INVALID_HANDLE = -2,
210 HVT_ERROR_WRONG_BUFFER_SIZE = -3,
211 HVT_ERROR_NOT_FOUND = -4,
212 HVT_ERROR_UNSUPPORTED_FORMAT = -5,
213 HVT_ERROR_UNSUPPORTED_MEMORY_TYPE = -6,
214 HVT_ERROR_UNSUPPORTED_SEMAPHORE_TYPE = -7,
215 HVT_ERROR_HEADER_VERSION = -8,
216 HVT_ERROR_CALL_ORDER = -9
222 typedef enum HvtImageMemoryType
224 HVT_IMAGE_MEMORY_TYPE_OPAQUE_FD_BIT = 0x00000001,
225 HVT_IMAGE_MEMORY_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
226 HVT_IMAGE_MEMORY_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
227 HVT_IMAGE_MEMORY_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
228 HVT_IMAGE_MEMORY_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
229 HVT_IMAGE_MEMORY_TYPE_D3D12_HEAP_BIT = 0x00000020,
230 HVT_IMAGE_MEMORY_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
231 HVT_IMAGE_MEMORY_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
232 HVT_IMAGE_MEMORY_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
233 HVT_IMAGE_MEMORY_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
234 HVT_IMAGE_MEMORY_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
235 HVT_IMAGE_MEMORY_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,
236 HVT_IMAGE_MEMORY_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,
237 HVT_IMAGE_MEMORY_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
238 } HvtImageMemoryType;
243 typedef enum HvtSemaphoreType
245 HVT_SEMAPHORE_TYPE_OPAQUE_FD_BIT = 0x00000001,
246 HVT_SEMAPHORE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
247 HVT_SEMAPHORE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
248 HVT_SEMAPHORE_TYPE_D3D12_FENCE_BIT = 0x00000008,
249 HVT_SEMAPHORE_TYPE_SYNC_FD_BIT = 0x00000010,
250 HVT_SEMAPHORE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080,
260 float yaw, pitch, roll;
275 typedef enum HvtProjectionType
277 HVT_PROJECTION_INVALID = 0,
278 HVT_PROJECTION_PERSPECTIVE = 1,
279 HVT_PROJECTION_EQUIRECTANGULAR = 2,
280 HVT_PROJECTION_MAX_ENUM = 0xff
313#define HVT_OPAQUE_HANDLE HANDLE
315#define HVT_OPAQUE_HANDLE int
323 char name[HVT_MAX_STREAM_NAME_LENGHT];
372 HVT_OPAQUE_HANDLE semaphore;
373 HvtSemaphoreType type;
390 HVT_DEFINE_HANDLE(HvtStreamingContext);
391 HVT_DEFINE_HANDLE(HvtSemaphore);
405#ifdef HVT_FUNCTION_PROTOTYPES
413 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtCreateStreamingContext(
const HvtStreamingContextCreateInfo* createInfo, HvtStreamingContext* outStreamingContext);
422 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtEnumerateStreamsParameters(HvtStreamingContext streamingContext, uint32_t* pStreamParameterCount,
HvtRGBDStreamParameters* pStreamParameters);
430 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtExportStreamImages(HvtStreamingContext streamingContext,
const HvtStreamImagesExportInfo* exportInfos);
439 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtExportSemaphore(HvtStreamingContext streamingContext,
const HvtSemaphoreExportInfo* exportInfo, HvtSemaphore* outSemaphore);
447 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtDestroySemaphore(HvtStreamingContext streamingContext, HvtSemaphore semaphore);
454 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtStartStreaming(HvtStreamingContext streamingContext);
462 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtAcquireStreamsFrames(HvtStreamingContext streamingContext,
const HvtAcquireStreamFramesInfo* infos);
473 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtReleaseStreamsFrames(HvtStreamingContext streamingContext, HvtSemaphore waitSemaphore);
480 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtStopStreaming(HvtStreamingContext streamingContext);
487 HVTAPI_ATTR HvtResult HVTAPI_CALL hvtDestroyStreamingContext(HvtStreamingContext streamingContext);
491 typedef HvtResult(HVTAPI_PTR* PFN_hvtCreateStreamingContext)(
const HvtStreamingContextCreateInfo* createInfo, HvtStreamingContext* outStreamingContext);
492 typedef HvtResult(HVTAPI_PTR* PFN_hvtEnumerateStreamsParameters)(HvtStreamingContext streamingContext, uint32_t* pStreamParameterCount,
HvtRGBDStreamParameters* pStreamParameters);
493 typedef HvtResult(HVTAPI_PTR* PFN_hvtExportStreamImages)(HvtStreamingContext streamingContext,
const HvtStreamImagesExportInfo* exportInfos);
494 typedef HvtResult(HVTAPI_PTR* PFN_hvtExportSemaphore)(HvtStreamingContext streamingContext,
const HvtSemaphoreExportInfo* exportInfo, HvtSemaphore* outSemaphore);
495 typedef HvtResult(HVTAPI_PTR* PFN_hvtDestroySemaphore)(HvtStreamingContext streamingContext, HvtSemaphore semaphore);
496 typedef HvtResult(HVTAPI_PTR* PFN_hvtStartStreaming)(HvtStreamingContext streamingContext);
497 typedef HvtResult(HVTAPI_PTR* PFN_hvtAcquireStreamsFrames)(HvtStreamingContext streamingContext,
const HvtAcquireStreamFramesInfo* infos);
498 typedef HvtResult(HVTAPI_PTR* PFN_hvtReleaseStreamsFrames)(HvtStreamingContext streamingContext, HvtSemaphore waitSemaphore);
499 typedef HvtResult(HVTAPI_PTR* PFN_hvtStopStreaming)(HvtStreamingContext streamingContext);
500 typedef HvtResult(HVTAPI_PTR* PFN_hvtDestroyStreamingContext)(HvtStreamingContext streamingContext);
Parameters for query of the current frames infos.
HvtSemaphore signalSemaphore
HvtStreamFrameInfo * pStreamFrameInfos
HvtExtrinsics viewerExtrinsics
Intrinsics parameters of an equirectangular projection.
Intrinsics parameters of a perspective projection.
Description of an RGBD stream.
HvtExtent2D depthResolution
HvtImageFormat colorFormat
HvtProjectionType projectionType
char name[HVT_MAX_STREAM_NAME_LENGHT]
HvtImageFormat depthFormat
HvtExtent2D colorResolution
Information about a stream frame.
Information about the memory backing an image slot.
Export info for images of a stream.
HvtImageMemoryType memoryType
HvtStreamImageMemoryInfo * pImages
Parameters for the creation of the Streaming context.
uint8_t graphicsDeviceUUID[VK_UUID_SIZE]
Union of possible intrinsics types data.