vivox-sdk-node 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,627 @@
1
+ /* Copyright (c) 2019 Unity Technologies.
2
+ *
3
+ * This software is subject to, and made available under, the Unity Terms of Service (see Unity Terms of Service).
4
+ * Your use of this software constitutes your acceptance of such terms.
5
+
6
+ * Unless expressly provided otherwise, the software under this license is made available strictly on an "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
7
+ * Please review the Terms of Service for details on these and other terms and conditions.”
8
+ */
9
+ #pragma once
10
+
11
+ #include <time.h>
12
+
13
+ #pragma pack(push)
14
+ #pragma pack(8)
15
+
16
+ #ifdef __cplusplus
17
+ extern "C" {
18
+ #endif
19
+
20
+ /**
21
+ * SDK logging levels.
22
+ */
23
+ typedef enum {
24
+ log_none = -1,
25
+ /**
26
+ * Errors only.
27
+ */
28
+ log_error = 0,
29
+ /**
30
+ * Warnings only.
31
+ */
32
+ log_warning = 1,
33
+ /**
34
+ * Generic information.
35
+ */
36
+ log_info = 2,
37
+ /**
38
+ * Detailed debugging information. Likely to have performance implications.
39
+ */
40
+ log_debug = 3,
41
+ /**
42
+ * The most verbose logging level. Likely to have performance implications.
43
+ */
44
+ log_trace = 4,
45
+ /**
46
+ * Log almost everything. Very likely to have performance implications.
47
+ */
48
+ log_all = 5
49
+ } vx_log_level;
50
+
51
+ /**
52
+ * Values for the backend type.
53
+ */
54
+ typedef enum {
55
+ backend_type_unknown = -1,
56
+ backend_type_sip = 0,
57
+ backend_type_xmpp = 1
58
+ } vx_backend_type;
59
+
60
+ /**
61
+ * Values for the UDP packet type.
62
+ */
63
+ typedef enum {
64
+ vx_frame_type_rtp = 0,
65
+ vx_frame_type_rtcp = 1,
66
+ vx_frame_type_sip_message = 2,
67
+ vx_frame_type_sip_keepalive = 3
68
+ } vx_udp_frame_type;
69
+
70
+
71
+ /**
72
+ * A struct that holds per-participant data for a callback.
73
+ */
74
+ typedef struct {
75
+ const char *participant_uri;
76
+ short *pcm_frames;
77
+ int pcm_frame_count;
78
+ int audio_frame_rate;
79
+ int channels_per_frame;
80
+ const char *session_uri;
81
+ } vx_before_recv_audio_mixed_participant_data_t;
82
+
83
+ /**
84
+ * Called before any UDP frame is transmitted.
85
+ * This callback must be a non-blocking callback.
86
+ * It is recommended that this callback complete in less than 1 millisecond.
87
+ */
88
+ typedef void (*pf_on_before_udp_frame_transmitted_t)(
89
+ void *callback_handle, // The handle passed in the vx_sdk_config_t structure
90
+ vx_udp_frame_type frame_type, // The UDP packet type
91
+ void *payload_data, // The data to be transmitted to the network
92
+ int payload_data_len, // The len of the data to be transmitted to the network
93
+ void **header_out, // Callback set - a pointer to header data (NULL if no header)
94
+ int *header_len_out, // Callback set - the length of the header data (0 if no header)
95
+ void **trailer_out, // Callback set - a pointer to trailer data (NULL if no trailer)
96
+ int *trailer_len_out // Callback set - the length of the trailer data (0 if no trailer)
97
+ );
98
+
99
+ /**
100
+ * Called after any UDP frame is transmitted.
101
+ * The application can use this callback to deallocate the header and trailer, if necessary.
102
+ */
103
+ typedef void (*pf_on_after_udp_frame_transmitted_t)(
104
+ void *callback_handle, // The handle passed in the vx_sdk_config_t structure
105
+ vx_udp_frame_type frame_type, // The UDP packet type
106
+ void *payload_data, // The data to be transmitted to the network
107
+ int payload_data_len, // The len of the data to be transmitted to the network
108
+ void *header, // The header data passed in pf_on_before_udp_frame_transmitted
109
+ int header_len, // The length of the header data
110
+ void *trailer, // The trailer data passed in pf_on_before_udp_frame_transmitted
111
+ int trailer_len, // The length of the trailer data
112
+ int sent_bytes // The total number of bytes transmitted - < 0 indicates an error
113
+ );
114
+
115
+ /**
116
+ * Called after a thread is created.
117
+ * The application can use this callback to monitor and profile thread creation.
118
+ */
119
+ typedef void (*pf_on_thread_created_t)(void *callback_handle, const char *thread_name);
120
+
121
+ /**
122
+ * Called before a thread is destructed.
123
+ * The application can use this callback to monitor and profile thread destruction.
124
+ */
125
+ typedef void (*pf_on_thread_exit_t)(void *callback_handle);
126
+
127
+ /**
128
+ * Called when an audio processing unit is started in the audio processing thread.
129
+ * No blocking operations should occur on this callback.
130
+ */
131
+ typedef void (*pf_on_audio_unit_started_t)(void *callback_handle, const char *session_group_handle, const char *initial_target_uri);
132
+
133
+ /**
134
+ * Called when an audio processing unit is stopped in the audio processing thread.
135
+ * No blocking operations should occur on this callback.
136
+ */
137
+ typedef void (*pf_on_audio_unit_stopped_t)(void *callback_handle, const char *session_group_handle, const char *initial_target_uri);
138
+
139
+ /**
140
+ * Called after audio is read from the capture device.
141
+ * No blocking operations should occur on this callback.
142
+ */
143
+ typedef void (*pf_on_audio_unit_after_capture_audio_read_t)(
144
+ void *callback_handle,
145
+ const char *session_group_handle,
146
+ const char *initial_target_uri,
147
+ short *pcm_frames,
148
+ int pcm_frame_count,
149
+ int audio_frame_rate,
150
+ int channels_per_frame
151
+ );
152
+
153
+ /**
154
+ * Called when an audio processing unit is about to send captured audio to the network from the audio processing thread.
155
+ * No blocking operations should occur on this callback.
156
+ */
157
+ typedef void (*pf_on_audio_unit_before_capture_audio_sent_t)(
158
+ void *callback_handle,
159
+ const char *session_group_handle,
160
+ const char *initial_target_uri,
161
+ short *pcm_frames,
162
+ int pcm_frame_count,
163
+ int audio_frame_rate,
164
+ int channels_per_frame,
165
+ int is_speaking
166
+ );
167
+
168
+ /**
169
+ * Called before an audio processing unit mixes the per-participant audio data to a single stream in the audio processing thread.
170
+ * No blocking operations should occur on this callback.
171
+ */
172
+ typedef void (*pf_on_audio_unit_before_recv_audio_mixed_t)(
173
+ void *callback_handle,
174
+ const char *session_group_handle,
175
+ const char *session_uri,
176
+ vx_before_recv_audio_mixed_participant_data_t *participants_data,
177
+ size_t num_participants);
178
+
179
+ /**
180
+ * Called when an audio processing unit is about to write received audio to the render device in the audio processing thread.
181
+ * No blocking operations should occur on this callback.
182
+ */
183
+ typedef void (*pf_on_audio_unit_before_recv_audio_rendered_t)(
184
+ void *callback_handle,
185
+ const char *session_group_handle,
186
+ const char *initial_target_uri,
187
+ short *pcm_frames,
188
+ int pcm_frame_count,
189
+ int audio_frame_rate,
190
+ int channels_per_frame,
191
+ int is_silence
192
+ );
193
+
194
+ /**
195
+ * Called before an audio processing unit informs its acoustic echo canceller about what audio is being output by the device.
196
+ * Mix application audio into pcm_frames so acoustic echo cancellation can attempt to remove it from the microphone capture signal.
197
+ * If the application is rendering Vivox voices instead of the Vivox SDK and the application is modifying the voice signals, ...
198
+ * then write the application audio mixed with the modified voice signals into pcm_frames, overwriting its previous contents.
199
+ * No blocking operations should occur on this callback.
200
+ */
201
+ typedef void (*pf_on_audio_unit_requesting_final_mix_for_echo_canceller_analysis_t)(
202
+ void *callback_handle,
203
+ const char *session_group_handle,
204
+ const char *initial_target_uri,
205
+ short *pcm_frames,
206
+ int pcm_frame_count,
207
+ int audio_frame_rate,
208
+ int channels_per_frame
209
+ );
210
+
211
+ typedef enum {
212
+ vx_bluetooth_profile_a2dp = 0,
213
+ vx_bluetooth_profile_hfp = 1
214
+ } vx_bluetooth_profile;
215
+
216
+ typedef enum {
217
+ vx_audio_stream_category_normal = 0,
218
+ vx_audio_stream_category_game_chat,
219
+ vx_audio_stream_category_communications,
220
+ vx_audio_stream_category_max
221
+ } vx_audio_stream_category;
222
+
223
+ /**
224
+ * Called when the capture device status changes.
225
+ * No blocking operations should occur on this callback.
226
+ */
227
+ typedef void (*pf_on_audio_unit_capture_device_status_changed_t)(int);
228
+
229
+ /**
230
+ * Called when an unexpected situation is encountered in the SDK.
231
+ */
232
+ typedef void (*pf_on_assert_t)(int fatal);
233
+
234
+ /**
235
+ * Configuration options that are passed to vx_initialize3().
236
+ * \ingroup initialization
237
+ */
238
+ typedef struct vx_sdk_config {
239
+ /**
240
+ * \deprecated Do not use this parameter, because it has no effect.
241
+ * The number of threads used for encoding and decoding audio.
242
+ * \note For client SDKs, this number must be 1.
243
+ */
244
+ int num_codec_threads;
245
+
246
+ /**
247
+ * \deprecated Do not use this parameter, because it has no effect.
248
+ * The number of threads used for voice processing.
249
+ * \note For client SDKs, this number must be 1.
250
+ */
251
+ int num_voice_threads;
252
+
253
+ /**
254
+ * \deprecated Do not use this parameter, because it has no effect.
255
+ * The number of threads used for web requests.
256
+ * \note For client SDKs, this number must be 1.
257
+ */
258
+ int num_web_threads;
259
+ /**
260
+ * The render source maximum queue depth.
261
+ */
262
+ int render_source_queue_depth_max;
263
+
264
+ /**
265
+ * The render source initial buffer count.
266
+ */
267
+ int render_source_initial_buffer_count;
268
+
269
+ /**
270
+ * The upstream jitter frame count.
271
+ */
272
+ int upstream_jitter_frame_count;
273
+
274
+ /**
275
+ * Indicate whether to allow shared capture devices (shared in the Vivox context only).
276
+ */
277
+ int allow_shared_capture_devices;
278
+
279
+ /**
280
+ * The maximum number of logins per user.
281
+ */
282
+ int max_logins_per_user;
283
+
284
+ /**
285
+ * A three-letter app ID.
286
+ * \attention Do not set this value. For more information, contact your Vivox representative.
287
+ */
288
+ char app_id[3];
289
+
290
+ /**
291
+ * The certificate data directory where the certificate bundle is located.
292
+ */
293
+ char cert_data_dir[256];
294
+
295
+ /**
296
+ * A pointer to a function that is used to allocate memory.
297
+ */
298
+ void * (*pf_malloc_func)(size_t bytes);
299
+
300
+ /**
301
+ * A pointer to a function that is used to free memory.
302
+ */
303
+ void (*pf_free_func)(void *memory);
304
+
305
+ /**
306
+ * A pointer to a function that is used to reallocate memory.
307
+ */
308
+ void * (*pf_realloc_func)(void *memory, size_t bytes);
309
+
310
+ /**
311
+ * A pointer to a function that is used to allocate zeroed-out memory.
312
+ */
313
+ void * (*pf_calloc_func)(size_t num, size_t bytes);
314
+
315
+ /**
316
+ * A pointer to a function that is used to allocate aligned memory.
317
+ */
318
+ void *(*pf_malloc_aligned_func)(size_t alignment, size_t size);
319
+
320
+ /**
321
+ * A pointer to a function that is used to free aligned memory.
322
+ */
323
+ void (*pf_free_aligned_func)(void *memory);
324
+
325
+ /**
326
+ * Reserved for future use.
327
+ */
328
+ int reserved;
329
+
330
+ /**
331
+ * A handle for use in SPURS job queue functions.
332
+ */
333
+ void *job_queue_handle;
334
+
335
+ /**
336
+ * A function to synchronously queue a job to SPURS.
337
+ * The job argument is a pointer CellSpursJobHeader structure.
338
+ */
339
+ int (*pf_queue_job_sync)(void *job_queue_handle, void *job, size_t size);
340
+
341
+ /**
342
+ * A function to asynchronously queue a job to SPURS.
343
+ * The job argument is a pointer CellSpursJobHeader structure.
344
+ */
345
+ int (*pf_queue_job_async)(void *job_queue_handle, void *job, size_t size);
346
+
347
+ /**
348
+ * A processor affinity mask for SDK threads.
349
+ * \note For more information, consult your documentation or contact your Vivox representative.
350
+ */
351
+ long long processor_affinity_mask;
352
+
353
+ /**
354
+ * A callback handle for message and logging notifications.
355
+ */
356
+ void *callback_handle;
357
+
358
+ /**
359
+ * Ensure that you are prepared to receive a logging callback immediately after calling vx_initialize3().
360
+ */
361
+ void (*pf_logging_callback)(void *callback_handle, vx_log_level level, const char *source, const char *message);
362
+
363
+ /**
364
+ * When the SDK message callback is called, call vx_get_message() until there are no more messages.
365
+ */
366
+ void (*pf_sdk_message_callback)(void *callback_handle);
367
+
368
+ /**
369
+ * The initial log level.
370
+ */
371
+ vx_log_level initial_log_level;
372
+
373
+ /**
374
+ * Disable audio device polling by using a timer.
375
+ */
376
+ int disable_device_polling;
377
+
378
+ /**
379
+ * For diagnostic purposes only.
380
+ */
381
+ int force_capture_silence;
382
+
383
+ /**
384
+ * \deprecated Do not use this parameter, because it has no effect.
385
+ * Enable advanced automatic setting of audio levels.
386
+ * @deprecated
387
+ *
388
+ */
389
+ int enable_advanced_auto_levels;
390
+
391
+ /**
392
+ * Called when an audio processing unit is started in the audio processing thread.
393
+ * No blocking operations should occur on this callback.
394
+ */
395
+ pf_on_audio_unit_started_t pf_on_audio_unit_started;
396
+
397
+ /**
398
+ * Called when an audio processing unit is stopped in the audio processing thread.
399
+ * No blocking operations should occur on this callback.
400
+ */
401
+ pf_on_audio_unit_stopped_t pf_on_audio_unit_stopped;
402
+
403
+ /**
404
+ * Called after audio is read from the capture device.
405
+ * No blocking operations should occur on this callback.
406
+ */
407
+ pf_on_audio_unit_after_capture_audio_read_t pf_on_audio_unit_after_capture_audio_read;
408
+
409
+ /**
410
+ * Called when an audio processing unit is about to send captured audio to the network from the audio processing thread.
411
+ * No blocking operations should occur on this callback.
412
+ */
413
+ pf_on_audio_unit_before_capture_audio_sent_t pf_on_audio_unit_before_capture_audio_sent;
414
+
415
+ /**
416
+ * Called before an audio processing unit mixes the per-participant audio data to a single stream in the audio processing thread.
417
+ * No blocking operations should occur on this callback.
418
+ */
419
+ pf_on_audio_unit_before_recv_audio_mixed_t pf_on_audio_unit_before_recv_audio_mixed;
420
+
421
+ /**
422
+ * Called when an audio processing unit is about to write received audio to the render device in the audio processing thread.
423
+ * No blocking operations should occur on this callback.
424
+ */
425
+ pf_on_audio_unit_before_recv_audio_rendered_t pf_on_audio_unit_before_recv_audio_rendered;
426
+
427
+ /**
428
+ * The number of 20 millisecond buffers for the capture device.
429
+ */
430
+ int capture_device_buffer_size_intervals;
431
+
432
+ /**
433
+ * The number of 20 millisecond buffers for the render device.
434
+ */
435
+ int render_device_buffer_size_intervals;
436
+
437
+ /**
438
+ * \note Only applicable to the iOS platform.
439
+ */
440
+ int disable_audio_ducking;
441
+ /**
442
+ * Vivox Access Tokens (VAT) are a more scalable, usable, and extensible replacement
443
+ * to the use of Access Control Lists for controlling access to Vivox resources.
444
+ * This security token is generated by the game server and then validated by the Vivox system
445
+ * to authorize certain Vivox operations at the time which those operations are to be performed.
446
+ */
447
+ int use_access_tokens;
448
+
449
+ /**
450
+ * If use_access_tokens is 1 and multiparty text is being used, set this to 1.
451
+ * This can also be controlled by setting the VIVOX_ENABLE_MULTIPARTY_TEXT environment variable.
452
+ */
453
+ int enable_multiparty_text;
454
+
455
+ /**
456
+ * \attention Changes to this value must be coordinated with Vivox.
457
+ * For most platforms, this uses a default of 1.
458
+ */
459
+ int enable_dtx;
460
+
461
+ /**
462
+ * The default codec mask that is used to initialize a connector's configured_codecs.
463
+ */
464
+ unsigned int default_codecs_mask;
465
+
466
+ /**
467
+ * Called before any UDP frame is transmitted.
468
+ * This callback must be a non-blocking callback.
469
+ * It is recommended that this callback complete in less than 1 millisecond.
470
+ */
471
+ pf_on_before_udp_frame_transmitted_t pf_on_before_udp_frame_transmitted;
472
+
473
+ /**
474
+ * Called after any UDP frame is transmitted.
475
+ * The application can use this callback to deallocate the header and trailer, if necessary.
476
+ */
477
+ pf_on_after_udp_frame_transmitted_t pf_on_after_udp_frame_transmitted;
478
+
479
+ /**
480
+ * Enable fast network change detection.
481
+ * The default value is 0.
482
+ */
483
+ int enable_fast_network_change_detection;
484
+
485
+ /**
486
+ * Use the operating system-configured proxy settings.
487
+ * - The default value is 0.
488
+ * - The value is 1 if the environment variable "VIVOX_USE_OS_PROXY_SETTINGS" is set.
489
+ * \note Only applicable to the Windows platform.
490
+ */
491
+ int use_os_proxy_settings;
492
+
493
+ /**
494
+ * \attention Before changing this value, contact your developer support representative.
495
+ * Enable persistent connections.
496
+ * - The default value is 0.
497
+ * - If the environment variable "VIVOX_ENABLE_PERSISTENT_HTTP" is set, the value is 1.
498
+ * The use of proxies can interfere with any behavior that is controlled by this setting.
499
+ * \note Only applicable to the Windows platform.
500
+ */
501
+ int enable_persistent_http;
502
+
503
+ /**
504
+ * \deprecated Do not use this parameter, because it has no effect.
505
+ * The preferred server SIP port.
506
+ * Set this parameter by using the environment variable "VIVOX_PREFERRED_SIP_PORT".
507
+ * For development purposes, setting this parameter to a value of 0 will use the network configuration.
508
+ * \note Setting this parameter to an incorrect value could result in delays in logging in or joining channels.
509
+ * @deprecated
510
+ */
511
+ int preferred_sip_port;
512
+
513
+ /**
514
+ * \deprecated Do not use this parameter, because it has no effect.
515
+ * By default, audio output goes to the mobile device's speakers, unless the value is set to 1.
516
+ * On the iOS platform, when the audio session is set to the category "PlayAndRecord", the receiver,
517
+ * which is the mobile device speaker that is put to your ear for voice calls, is used.
518
+ * @deprecated
519
+ */
520
+ int default_render_to_receiver;
521
+
522
+ /**
523
+ * \deprecated Do not use this parameter, because it has no effect.
524
+ * For platforms with soft mics, apply linear gain in dB before processing.
525
+ * @deprecated
526
+ */
527
+ float mic_makeup_gain;
528
+
529
+ /**
530
+ * Called after a thread is created.
531
+ * The application can use this callback to monitor and profile thread creation.
532
+ */
533
+ pf_on_thread_created_t pf_on_thread_created;
534
+
535
+ /**
536
+ * Called before a thread is destructed.
537
+ * The application can use this callback to monitor and profile thread destruction.
538
+ */
539
+ pf_on_thread_exit_t pf_on_thread_exit;
540
+
541
+ /**
542
+ * \deprecated This function pointer is unused and is never called.
543
+ * @deprecated
544
+ */
545
+ int (*pf_request_permission_for_network)(void);
546
+
547
+ /**
548
+ * Enable dynamic voice processing switching.
549
+ * If enabled, the SDK automatically switches between hardware and software AECs.
550
+ * - The default value is 1.
551
+ * - To disable this capability, set the value to 0.
552
+ */
553
+ int dynamic_voice_processing_switching;
554
+
555
+ /**
556
+ * Configure how the VoiceProcessingIO unit should be used on iOS
557
+ * By default, the value is 1, meaning the voiceProcessingIO unit will only be used when the speakerphone is used for render and capture.
558
+ * Other configurations are possible:
559
+ * - Set the value to 2 to to always use the voiceProcessingIO unit.
560
+ * - Set the value to 0 to never use the voiceProcessingIO unit.
561
+ */
562
+ int ios_voice_processing_io_mode;
563
+
564
+ /**
565
+ * \attention This function is only called on specific platforms. For more information, contact Vivox.
566
+ * If set, this function is called when the active capture device status is updated.
567
+ */
568
+ pf_on_audio_unit_capture_device_status_changed_t pf_on_audio_unit_capture_device_status_changed;
569
+
570
+ /**
571
+ * The number of millseconds to wait before disconnecting audio due to RTP timeout at the initial call time.
572
+ * A zero or negative value turns off the guard, which is not recommended.
573
+ */
574
+ int never_rtp_timeout_ms;
575
+
576
+ /**
577
+ * The number of millseconds to wait before disconnecting audio due to RTP timeout after the call has been established.
578
+ * A zero or negative value turns off the guard, which is not recommended.
579
+ */
580
+ int lost_rtp_timeout_ms;
581
+
582
+ /**
583
+ * \attention This value is only used on iOS and Android.
584
+ * \attention This value will only have an effect if dynamic_voice_processing_switching is enabled.
585
+ * The Bluetooth profile that is in use when Vivox is accessing the microphone.
586
+ * - The default value is vx_bluetooth_profile_hfp.
587
+ */
588
+ vx_bluetooth_profile bluetooth_profile;
589
+
590
+ /**
591
+ * \attention This value is only used on Android.
592
+ * Enable mobile recording conflicts avoidance.
593
+ * If Vivox detects that there is more than one recorder, Vivox disables its recorder to allow for others to record.
594
+ * Real call dialer app, Voip apps, Voice recognition apps are all prioritized to use the recorder over Vivox if this field is set to 1.
595
+ * - The default value is 0.
596
+ * - To enable this capability, set the value to 1.
597
+ */
598
+ int mobile_recording_conflicts_avoidance;
599
+
600
+ /**
601
+ * Called when an unexpected situation is encountered in the SDK.
602
+ */
603
+ pf_on_assert_t pf_on_assert;
604
+
605
+ /**
606
+ * Called before an audio processing unit informs its acoustic echo canceller about what audio is being output by the device.
607
+ * Mix application audio into pcm_frames so acoustic echo cancellation can attempt to remove it from the microphone capture signal.
608
+ * If the application is rendering Vivox voices instead of the Vivox SDK and the application is modifying the voice signals, ...
609
+ * then write the application audio mixed with the modified voice signals into pcm_frames, overwriting its previous contents.
610
+ * No blocking operations should occur on this callback.
611
+ */
612
+ pf_on_audio_unit_requesting_final_mix_for_echo_canceller_analysis_t pf_on_audio_unit_requesting_final_mix_for_echo_canceller_analysis;
613
+
614
+ /**
615
+ * \attention This value is only used on Windows 10 and later, and only if the application's manifest explicitly states support for Windows 10 or later.
616
+ * Specify the capture audio stream's category to enable or disable system-provided audio enhancements (if available).
617
+ * The default value is `vx_audio_stream_category_game_chat`.
618
+ * To disable system-provided audio enhancements for capture audio devices, set this value to `vx_audio_stream_category_normal`.
619
+ */
620
+ vx_audio_stream_category capture_audio_stream_category;
621
+ } vx_sdk_config_t;
622
+
623
+ #ifdef __cplusplus
624
+ }
625
+ #endif
626
+
627
+ #pragma pack(pop)
@@ -0,0 +1,19 @@
1
+ /* Copyright (c) 2019 Unity Technologies.
2
+ *
3
+ * This software is subject to, and made available under, the Unity Terms of Service (see Unity Terms of Service).
4
+ * Your use of this software constitutes your acceptance of such terms.
5
+
6
+ * Unless expressly provided otherwise, the software under this license is made available strictly on an "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
7
+ * Please review the Terms of Service for details on these and other terms and conditions.”
8
+ */
9
+
10
+ #pragma once
11
+ #define SDK_VERSION "5.27.1.33971.8937049b"
12
+ #define SDK_BRANCH ""
13
+
14
+ #define VERSION_MAJOR 5
15
+ #define VERSION_MINOR 27
16
+ #define VERSION_MICRO 1
17
+ #define VERSION_DESCR ""
18
+ #define VERSION_BUILD 33971
19
+ #define VERSION_HASH "8937049b"
Binary file
Binary file