libobs/
bindings_win.rs

1/* automatically generated by rust-bindgen 0.72.1 */
2
3#[doc = " If Bindgen could only determine the size and alignment of a"]
4#[doc = " type, it is represented like this."]
5#[derive(PartialEq, Copy, Clone, Debug, Hash)]
6#[repr(C)]
7pub struct __BindgenOpaqueArray<T: Copy, const N: usize>(pub [T; N]);
8impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray<T, N> {
9    fn default() -> Self {
10        Self([<T as Default>::default(); N])
11    }
12}
13#[derive(PartialEq, Copy, Clone, Hash, Debug, Default)]
14#[repr(transparent)]
15pub struct __BindgenFloat16(pub u16);
16#[repr(C)]
17pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
18impl<T> __BindgenUnionField<T> {
19    #[inline]
20    pub const fn new() -> Self {
21        __BindgenUnionField(::std::marker::PhantomData)
22    }
23    #[inline]
24    pub unsafe fn as_ref(&self) -> &T {
25        ::std::mem::transmute(self)
26    }
27    #[inline]
28    pub unsafe fn as_mut(&mut self) -> &mut T {
29        ::std::mem::transmute(self)
30    }
31}
32impl<T> ::std::default::Default for __BindgenUnionField<T> {
33    #[inline]
34    fn default() -> Self {
35        Self::new()
36    }
37}
38impl<T> ::std::clone::Clone for __BindgenUnionField<T> {
39    #[inline]
40    fn clone(&self) -> Self {
41        *self
42    }
43}
44impl<T> ::std::marker::Copy for __BindgenUnionField<T> {}
45impl<T> ::std::fmt::Debug for __BindgenUnionField<T> {
46    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
47        fmt.write_str("__BindgenUnionField")
48    }
49}
50impl<T> ::std::hash::Hash for __BindgenUnionField<T> {
51    fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {}
52}
53impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
54    fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
55        true
56    }
57}
58impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
59pub const _CRT_PACKING: u32 = 8;
60pub const __bool_true_false_are_defined: u32 = 1;
61pub const true_: u32 = 1;
62pub const false_: u32 = 0;
63pub const __SAVE_GPRBX: &[u8; 30] = b"mov {%%rbx, %%rax |rax, rbx};\0";
64pub const __RESTORE_GPRBX: &[u8; 30] = b"mov {%%rax, %%rbx |rbx, rax};\0";
65pub const __TMPGPR: &[u8; 4] = b"rax\0";
66pub const _MM_HINT_ET0: u32 = 7;
67pub const _MM_HINT_ET1: u32 = 6;
68pub const _MM_HINT_T0: u32 = 3;
69pub const _MM_HINT_T1: u32 = 2;
70pub const _MM_HINT_T2: u32 = 1;
71pub const _MM_HINT_NTA: u32 = 0;
72pub const _CMP_EQ_OQ: u32 = 0;
73pub const _CMP_LT_OS: u32 = 1;
74pub const _CMP_LE_OS: u32 = 2;
75pub const _CMP_UNORD_Q: u32 = 3;
76pub const _CMP_NEQ_UQ: u32 = 4;
77pub const _CMP_NLT_US: u32 = 5;
78pub const _CMP_NLE_US: u32 = 6;
79pub const _CMP_ORD_Q: u32 = 7;
80pub const _MM_EXCEPT_INVALID: u32 = 1;
81pub const _MM_EXCEPT_DENORM: u32 = 2;
82pub const _MM_EXCEPT_DIV_ZERO: u32 = 4;
83pub const _MM_EXCEPT_OVERFLOW: u32 = 8;
84pub const _MM_EXCEPT_UNDERFLOW: u32 = 16;
85pub const _MM_EXCEPT_INEXACT: u32 = 32;
86pub const _MM_EXCEPT_MASK: u32 = 63;
87pub const _MM_MASK_INVALID: u32 = 128;
88pub const _MM_MASK_DENORM: u32 = 256;
89pub const _MM_MASK_DIV_ZERO: u32 = 512;
90pub const _MM_MASK_OVERFLOW: u32 = 1024;
91pub const _MM_MASK_UNDERFLOW: u32 = 2048;
92pub const _MM_MASK_INEXACT: u32 = 4096;
93pub const _MM_MASK_MASK: u32 = 8064;
94pub const _MM_ROUND_NEAREST: u32 = 0;
95pub const _MM_ROUND_DOWN: u32 = 8192;
96pub const _MM_ROUND_UP: u32 = 16384;
97pub const _MM_ROUND_TOWARD_ZERO: u32 = 24576;
98pub const _MM_ROUND_MASK: u32 = 24576;
99pub const _MM_FLUSH_ZERO_MASK: u32 = 32768;
100pub const _MM_FLUSH_ZERO_ON: u32 = 32768;
101pub const _MM_FLUSH_ZERO_OFF: u32 = 0;
102pub const _MM_DENORMALS_ZERO_ON: u32 = 64;
103pub const _MM_DENORMALS_ZERO_OFF: u32 = 0;
104pub const _MM_DENORMALS_ZERO_MASK: u32 = 64;
105pub const _MM_FROUND_TO_NEAREST_INT: u32 = 0;
106pub const _MM_FROUND_TO_NEG_INF: u32 = 1;
107pub const _MM_FROUND_TO_POS_INF: u32 = 2;
108pub const _MM_FROUND_TO_ZERO: u32 = 3;
109pub const _MM_FROUND_CUR_DIRECTION: u32 = 4;
110pub const _MM_FROUND_RAISE_EXC: u32 = 0;
111pub const _MM_FROUND_NO_EXC: u32 = 8;
112pub const _MM_FROUND_NINT: u32 = 0;
113pub const _MM_FROUND_FLOOR: u32 = 1;
114pub const _MM_FROUND_CEIL: u32 = 2;
115pub const _MM_FROUND_TRUNC: u32 = 3;
116pub const _MM_FROUND_RINT: u32 = 4;
117pub const _MM_FROUND_NEARBYINT: u32 = 12;
118pub const _SIDD_UBYTE_OPS: u32 = 0;
119pub const _SIDD_UWORD_OPS: u32 = 1;
120pub const _SIDD_SBYTE_OPS: u32 = 2;
121pub const _SIDD_SWORD_OPS: u32 = 3;
122pub const _SIDD_CMP_EQUAL_ANY: u32 = 0;
123pub const _SIDD_CMP_RANGES: u32 = 4;
124pub const _SIDD_CMP_EQUAL_EACH: u32 = 8;
125pub const _SIDD_CMP_EQUAL_ORDERED: u32 = 12;
126pub const _SIDD_POSITIVE_POLARITY: u32 = 0;
127pub const _SIDD_NEGATIVE_POLARITY: u32 = 16;
128pub const _SIDD_MASKED_POSITIVE_POLARITY: u32 = 32;
129pub const _SIDD_MASKED_NEGATIVE_POLARITY: u32 = 48;
130pub const _SIDD_LEAST_SIGNIFICANT: u32 = 0;
131pub const _SIDD_MOST_SIGNIFICANT: u32 = 64;
132pub const _SIDD_BIT_MASK: u32 = 0;
133pub const _SIDD_UNIT_MASK: u32 = 64;
134pub const _CMP_EQ_UQ: u32 = 8;
135pub const _CMP_NGE_US: u32 = 9;
136pub const _CMP_NGT_US: u32 = 10;
137pub const _CMP_FALSE_OQ: u32 = 11;
138pub const _CMP_NEQ_OQ: u32 = 12;
139pub const _CMP_GE_OS: u32 = 13;
140pub const _CMP_GT_OS: u32 = 14;
141pub const _CMP_TRUE_UQ: u32 = 15;
142pub const _CMP_EQ_OS: u32 = 16;
143pub const _CMP_LT_OQ: u32 = 17;
144pub const _CMP_LE_OQ: u32 = 18;
145pub const _CMP_UNORD_S: u32 = 19;
146pub const _CMP_NEQ_US: u32 = 20;
147pub const _CMP_NLT_UQ: u32 = 21;
148pub const _CMP_NLE_UQ: u32 = 22;
149pub const _CMP_ORD_S: u32 = 23;
150pub const _CMP_EQ_US: u32 = 24;
151pub const _CMP_NGE_UQ: u32 = 25;
152pub const _CMP_NGT_UQ: u32 = 26;
153pub const _CMP_FALSE_OS: u32 = 27;
154pub const _CMP_NEQ_OS: u32 = 28;
155pub const _CMP_GE_OQ: u32 = 29;
156pub const _CMP_GT_OQ: u32 = 30;
157pub const _CMP_TRUE_US: u32 = 31;
158pub const _XBEGIN_STARTED: i32 = -1;
159pub const _XABORT_EXPLICIT: u32 = 1;
160pub const _XABORT_RETRY: u32 = 2;
161pub const _XABORT_CONFLICT: u32 = 4;
162pub const _XABORT_CAPACITY: u32 = 8;
163pub const _XABORT_DEBUG: u32 = 16;
164pub const _XABORT_NESTED: u32 = 32;
165pub const _XCR_XFEATURE_ENABLED_MASK: u32 = 0;
166pub const __PCONFIG_KEY_PROGRAM: u32 = 1;
167pub const _MM_PCOMCTRL_LT: u32 = 0;
168pub const _MM_PCOMCTRL_LE: u32 = 1;
169pub const _MM_PCOMCTRL_GT: u32 = 2;
170pub const _MM_PCOMCTRL_GE: u32 = 3;
171pub const _MM_PCOMCTRL_EQ: u32 = 4;
172pub const _MM_PCOMCTRL_NEQ: u32 = 5;
173pub const _MM_PCOMCTRL_FALSE: u32 = 6;
174pub const _MM_PCOMCTRL_TRUE: u32 = 7;
175pub const __RDPRU_MPERF: u32 = 0;
176pub const __RDPRU_APERF: u32 = 1;
177pub const GS_MAX_TEXTURES: u32 = 8;
178pub const GS_BUILD_MIPMAPS: u32 = 1;
179pub const GS_DYNAMIC: u32 = 2;
180pub const GS_RENDER_TARGET: u32 = 4;
181pub const GS_GL_DUMMYTEX: u32 = 8;
182pub const GS_DUP_BUFFER: u32 = 16;
183pub const GS_SHARED_TEX: u32 = 32;
184pub const GS_SHARED_KM_TEX: u32 = 64;
185pub const GS_SUCCESS: u32 = 0;
186pub const GS_ERROR_FAIL: i32 = -1;
187pub const GS_ERROR_MODULE_NOT_FOUND: i32 = -2;
188pub const GS_ERROR_NOT_SUPPORTED: i32 = -3;
189pub const GS_DEVICE_OPENGL: u32 = 1;
190pub const GS_DEVICE_DIRECT3D_11: u32 = 2;
191pub const GS_DEVICE_METAL: u32 = 3;
192pub const GS_FLIP_U: u32 = 1;
193pub const GS_FLIP_V: u32 = 2;
194pub const GS_CLEAR_COLOR: u32 = 1;
195pub const GS_CLEAR_DEPTH: u32 = 2;
196pub const GS_CLEAR_STENCIL: u32 = 4;
197pub const GS_USE_DEBUG_MARKERS: u32 = 0;
198pub const M_PI: f64 = 3.141592653589793;
199pub const LARGE_EPSILON: f64 = 0.01;
200pub const EPSILON: f64 = 0.0001;
201pub const TINY_EPSILON: f64 = 0.00001;
202pub const MAX_AV_PLANES: u32 = 8;
203pub const MAX_AUDIO_MIXES: u32 = 6;
204pub const MAX_AUDIO_CHANNELS: u32 = 8;
205pub const MAX_DEVICE_INPUT_CHANNELS: u32 = 64;
206pub const AUDIO_OUTPUT_FRAMES: u32 = 1024;
207pub const AUDIO_OUTPUT_SUCCESS: u32 = 0;
208pub const AUDIO_OUTPUT_INVALIDPARAM: i32 = -1;
209pub const AUDIO_OUTPUT_FAIL: i32 = -2;
210pub const VIDEO_OUTPUT_SUCCESS: u32 = 0;
211pub const VIDEO_OUTPUT_INVALIDPARAM: i32 = -1;
212pub const VIDEO_OUTPUT_FAIL: i32 = -2;
213pub const CALL_PARAM_IN: u32 = 1;
214pub const CALL_PARAM_OUT: u32 = 2;
215pub const LIBOBS_API_MAJOR_VER: u32 = 32;
216pub const LIBOBS_API_MINOR_VER: u32 = 0;
217pub const LIBOBS_API_PATCH_VER: u32 = 2;
218pub const OBS_VERSION: &[u8; 8] = b"unknown\0";
219pub const OBS_DATA_PATH: &[u8; 11] = b"../../data\0";
220pub const OBS_INSTALL_PREFIX: &[u8; 1] = b"\0";
221pub const OBS_PLUGIN_DESTINATION: &[u8; 12] = b"obs-plugins\0";
222pub const OBS_RELATIVE_PREFIX: &[u8; 7] = b"../../\0";
223pub const OBS_RELEASE_CANDIDATE: u32 = 0;
224pub const OBS_BETA: u32 = 0;
225pub const OBS_INSTALL_DATA_PATH: &[u8; 12] = b"/../../data\0";
226pub const MAX_CHANNELS: u32 = 64;
227pub const OBS_ALIGN_CENTER: u32 = 0;
228pub const OBS_ALIGN_LEFT: u32 = 1;
229pub const OBS_ALIGN_RIGHT: u32 = 2;
230pub const OBS_ALIGN_TOP: u32 = 4;
231pub const OBS_ALIGN_BOTTOM: u32 = 8;
232pub const MODULE_SUCCESS: u32 = 0;
233pub const MODULE_ERROR: i32 = -1;
234pub const MODULE_FAILED_TO_OPEN: i32 = -2;
235pub const MODULE_FILE_NOT_FOUND: i32 = -2;
236pub const MODULE_MISSING_EXPORTS: i32 = -3;
237pub const MODULE_INCOMPATIBLE_VER: i32 = -4;
238pub const MODULE_HARDCODED_SKIP: i32 = -5;
239pub const OBS_OUTPUT_SUCCESS: u32 = 0;
240pub const OBS_OUTPUT_BAD_PATH: i32 = -1;
241pub const OBS_OUTPUT_CONNECT_FAILED: i32 = -2;
242pub const OBS_OUTPUT_INVALID_STREAM: i32 = -3;
243pub const OBS_OUTPUT_ERROR: i32 = -4;
244pub const OBS_OUTPUT_DISCONNECTED: i32 = -5;
245pub const OBS_OUTPUT_UNSUPPORTED: i32 = -6;
246pub const OBS_OUTPUT_NO_SPACE: i32 = -7;
247pub const OBS_OUTPUT_ENCODE_ERROR: i32 = -8;
248pub const OBS_OUTPUT_HDR_DISABLED: i32 = -9;
249pub const OBS_VIDEO_SUCCESS: u32 = 0;
250pub const OBS_VIDEO_FAIL: i32 = -1;
251pub const OBS_VIDEO_NOT_SUPPORTED: i32 = -2;
252pub const OBS_VIDEO_INVALID_PARAM: i32 = -3;
253pub const OBS_VIDEO_CURRENTLY_ACTIVE: i32 = -4;
254pub const OBS_VIDEO_MODULE_NOT_FOUND: i32 = -5;
255pub const OBS_PROPERTIES_DEFER_UPDATE: u32 = 1;
256pub const OBS_FONT_BOLD: u32 = 1;
257pub const OBS_FONT_ITALIC: u32 = 2;
258pub const OBS_FONT_UNDERLINE: u32 = 4;
259pub const OBS_FONT_STRIKEOUT: u32 = 8;
260pub const OBS_SOURCE_VIDEO: u32 = 1;
261pub const OBS_SOURCE_AUDIO: u32 = 2;
262pub const OBS_SOURCE_ASYNC: u32 = 4;
263pub const OBS_SOURCE_ASYNC_VIDEO: u32 = 5;
264pub const OBS_SOURCE_CUSTOM_DRAW: u32 = 8;
265pub const OBS_SOURCE_INTERACTION: u32 = 32;
266pub const OBS_SOURCE_COMPOSITE: u32 = 64;
267pub const OBS_SOURCE_DO_NOT_DUPLICATE: u32 = 128;
268pub const OBS_SOURCE_DEPRECATED: u32 = 256;
269pub const OBS_SOURCE_DO_NOT_SELF_MONITOR: u32 = 512;
270pub const OBS_SOURCE_CAP_DISABLED: u32 = 1024;
271pub const OBS_SOURCE_CAP_OBSOLETE: u32 = 1024;
272pub const OBS_SOURCE_MONITOR_BY_DEFAULT: u32 = 2048;
273pub const OBS_SOURCE_SUBMIX: u32 = 4096;
274pub const OBS_SOURCE_CONTROLLABLE_MEDIA: u32 = 8192;
275pub const OBS_SOURCE_CEA_708: u32 = 16384;
276pub const OBS_SOURCE_SRGB: u32 = 32768;
277pub const OBS_SOURCE_CAP_DONT_SHOW_PROPERTIES: u32 = 65536;
278pub const OBS_SOURCE_REQUIRES_CANVAS: u32 = 131072;
279pub const OBS_ENCODER_CAP_DEPRECATED: u32 = 1;
280pub const OBS_ENCODER_CAP_PASS_TEXTURE: u32 = 2;
281pub const OBS_ENCODER_CAP_DYN_BITRATE: u32 = 4;
282pub const OBS_ENCODER_CAP_INTERNAL: u32 = 8;
283pub const OBS_ENCODER_CAP_ROI: u32 = 16;
284pub const OBS_ENCODER_CAP_SCALING: u32 = 32;
285pub const OBS_OUTPUT_VIDEO: u32 = 1;
286pub const OBS_OUTPUT_AUDIO: u32 = 2;
287pub const OBS_OUTPUT_AV: u32 = 3;
288pub const OBS_OUTPUT_ENCODED: u32 = 4;
289pub const OBS_OUTPUT_SERVICE: u32 = 8;
290pub const OBS_OUTPUT_MULTI_TRACK: u32 = 16;
291pub const OBS_OUTPUT_CAN_PAUSE: u32 = 32;
292pub const OBS_OUTPUT_MULTI_TRACK_AUDIO: u32 = 16;
293pub const OBS_OUTPUT_MULTI_TRACK_VIDEO: u32 = 64;
294pub const OBS_OUTPUT_MULTI_TRACK_AV: u32 = 80;
295pub const MAX_OUTPUT_AUDIO_ENCODERS: u32 = 6;
296pub const MAX_OUTPUT_VIDEO_ENCODERS: u32 = 10;
297pub const XINPUT_MOUSE_LEN: u32 = 33;
298pub const OBS_MOUSE_BUTTON_DEFAULT: u32 = 1;
299pub const OBS_SOURCE_FRAME_LINEAR_ALPHA: u32 = 1;
300pub const OBS_SOURCE_FLAG_UNUSED_1: u32 = 1;
301pub const OBS_SOURCE_FLAG_FORCE_MONO: u32 = 2;
302pub const OBS_OUTPUT_DELAY_PRESERVE: u32 = 1;
303pub type wchar_t = ::std::os::raw::c_ushort;
304pub type max_align_t = f64;
305pub type va_list = *mut ::std::os::raw::c_char;
306pub type __gnuc_va_list = __builtin_va_list;
307#[doc = " Use if there's a problem that can potentially affect the program,\n but isn't enough to require termination of the program.\n\n Use in creation functions and core subsystem functions.  Places that\n should definitely not fail."]
308pub const LOG_ERROR: _bindgen_ty_1 = 100;
309#[doc = " Use if a problem occurs that doesn't affect the program and is\n recoverable.\n\n Use in places where failure isn't entirely unexpected, and can\n be handled safely."]
310pub const LOG_WARNING: _bindgen_ty_1 = 200;
311#[doc = " Informative message to be displayed in the log."]
312pub const LOG_INFO: _bindgen_ty_1 = 300;
313#[doc = " Debug message to be used mostly by developers."]
314pub const LOG_DEBUG: _bindgen_ty_1 = 400;
315pub type _bindgen_ty_1 = ::std::os::raw::c_int;
316pub type log_handler_t = ::std::option::Option<
317    unsafe extern "C" fn(
318        lvl: ::std::os::raw::c_int,
319        msg: *const ::std::os::raw::c_char,
320        args: va_list,
321        p: *mut ::std::os::raw::c_void,
322    ),
323>;
324#[repr(C)]
325#[derive(Debug, Copy, Clone)]
326pub struct __uintr_frame {
327    pub rip: ::std::os::raw::c_ulonglong,
328    pub rflags: ::std::os::raw::c_ulonglong,
329    pub rsp: ::std::os::raw::c_ulonglong,
330}
331#[allow(clippy::unnecessary_operation, clippy::identity_op)]
332const _: () = {
333    ["Size of __uintr_frame"][::std::mem::size_of::<__uintr_frame>() - 24usize];
334    ["Alignment of __uintr_frame"][::std::mem::align_of::<__uintr_frame>() - 8usize];
335    ["Offset of field: __uintr_frame::rip"][::std::mem::offset_of!(__uintr_frame, rip) - 0usize];
336    ["Offset of field: __uintr_frame::rflags"]
337        [::std::mem::offset_of!(__uintr_frame, rflags) - 8usize];
338    ["Offset of field: __uintr_frame::rsp"][::std::mem::offset_of!(__uintr_frame, rsp) - 16usize];
339};
340pub const _CMPCCX_ENUM__CMPCCX_O: _CMPCCX_ENUM = 0;
341pub const _CMPCCX_ENUM__CMPCCX_NO: _CMPCCX_ENUM = 1;
342pub const _CMPCCX_ENUM__CMPCCX_B: _CMPCCX_ENUM = 2;
343pub const _CMPCCX_ENUM__CMPCCX_NB: _CMPCCX_ENUM = 3;
344pub const _CMPCCX_ENUM__CMPCCX_Z: _CMPCCX_ENUM = 4;
345pub const _CMPCCX_ENUM__CMPCCX_NZ: _CMPCCX_ENUM = 5;
346pub const _CMPCCX_ENUM__CMPCCX_BE: _CMPCCX_ENUM = 6;
347pub const _CMPCCX_ENUM__CMPCCX_NBE: _CMPCCX_ENUM = 7;
348pub const _CMPCCX_ENUM__CMPCCX_S: _CMPCCX_ENUM = 8;
349pub const _CMPCCX_ENUM__CMPCCX_NS: _CMPCCX_ENUM = 9;
350pub const _CMPCCX_ENUM__CMPCCX_P: _CMPCCX_ENUM = 10;
351pub const _CMPCCX_ENUM__CMPCCX_NP: _CMPCCX_ENUM = 11;
352pub const _CMPCCX_ENUM__CMPCCX_L: _CMPCCX_ENUM = 12;
353pub const _CMPCCX_ENUM__CMPCCX_NL: _CMPCCX_ENUM = 13;
354pub const _CMPCCX_ENUM__CMPCCX_LE: _CMPCCX_ENUM = 14;
355pub const _CMPCCX_ENUM__CMPCCX_NLE: _CMPCCX_ENUM = 15;
356pub type _CMPCCX_ENUM = ::std::os::raw::c_int;
357pub type __m64 = [::std::os::raw::c_longlong; 1usize];
358pub type __v1di = [::std::os::raw::c_longlong; 1usize];
359pub type __v2si = [::std::os::raw::c_int; 2usize];
360pub type __v4hi = [::std::os::raw::c_short; 4usize];
361pub type __v8qi = [::std::os::raw::c_char; 8usize];
362pub type __v1du = [::std::os::raw::c_ulonglong; 1usize];
363pub type __v2su = [::std::os::raw::c_uint; 2usize];
364pub type __v4hu = [::std::os::raw::c_ushort; 4usize];
365pub type __v8qu = [::std::os::raw::c_uchar; 8usize];
366pub type __v8qs = [::std::os::raw::c_schar; 8usize];
367pub type __m128i = [::std::os::raw::c_longlong; 2usize];
368pub type __v2di = [::std::os::raw::c_longlong; 2usize];
369pub type __v4si = [::std::os::raw::c_int; 4usize];
370pub type __v8hi = [::std::os::raw::c_short; 8usize];
371pub type __v16qi = [::std::os::raw::c_char; 16usize];
372pub type __v4sf = [f32; 4usize];
373pub type __m128 = [f32; 4usize];
374pub type __m128_u = [f32; 4usize];
375pub type __v4su = [::std::os::raw::c_uint; 4usize];
376pub type __m128d = [f64; 2usize];
377pub type __m128d_u = [f64; 2usize];
378pub type __m128i_u = [::std::os::raw::c_longlong; 2usize];
379pub type __v2df = [f64; 2usize];
380pub type __v2du = [::std::os::raw::c_ulonglong; 2usize];
381pub type __v8hu = [::std::os::raw::c_ushort; 8usize];
382pub type __v16qu = [::std::os::raw::c_uchar; 16usize];
383pub type __v16qs = [::std::os::raw::c_schar; 16usize];
384pub type __v8hf = [__BindgenFloat16; 8usize];
385pub type __m128h = [__BindgenFloat16; 8usize];
386pub type __m128h_u = [__BindgenFloat16; 8usize];
387pub type __v8bf = u128;
388pub type __m128bh = u128;
389pub type __v4df = [f64; 4usize];
390pub type __v8sf = [f32; 8usize];
391pub type __v4di = [::std::os::raw::c_longlong; 4usize];
392pub type __v8si = [::std::os::raw::c_int; 8usize];
393pub type __v16hi = [::std::os::raw::c_short; 16usize];
394pub type __v32qi = [::std::os::raw::c_char; 32usize];
395pub type __v4du = [::std::os::raw::c_ulonglong; 4usize];
396pub type __v8su = [::std::os::raw::c_uint; 8usize];
397pub type __v16hu = [::std::os::raw::c_ushort; 16usize];
398pub type __v32qu = [::std::os::raw::c_uchar; 32usize];
399pub type __v32qs = [::std::os::raw::c_schar; 32usize];
400pub type __m256 = [f32; 8usize];
401pub type __m256d = [f64; 4usize];
402pub type __m256i = [::std::os::raw::c_longlong; 4usize];
403pub type __m256_u = [f32; 8usize];
404pub type __m256d_u = [f64; 4usize];
405pub type __m256i_u = [::std::os::raw::c_longlong; 4usize];
406pub type __v16hf = [__BindgenFloat16; 16usize];
407pub type __m256h = [__BindgenFloat16; 16usize];
408pub type __m256h_u = [__BindgenFloat16; 16usize];
409pub type __v16bf = __BindgenOpaqueArray<u8, 32usize>;
410pub type __m256bh = __BindgenOpaqueArray<u8, 32usize>;
411pub type __v64qi = [::std::os::raw::c_char; 64usize];
412pub type __v32hi = [::std::os::raw::c_short; 32usize];
413pub type __v8df = [f64; 8usize];
414pub type __v16sf = [f32; 16usize];
415pub type __v8di = [::std::os::raw::c_longlong; 8usize];
416pub type __v16si = [::std::os::raw::c_int; 16usize];
417pub type __v64qu = [::std::os::raw::c_uchar; 64usize];
418pub type __v32hu = [::std::os::raw::c_ushort; 32usize];
419pub type __v8du = [::std::os::raw::c_ulonglong; 8usize];
420pub type __v16su = [::std::os::raw::c_uint; 16usize];
421pub type __v64qs = [::std::os::raw::c_schar; 64usize];
422pub type __m512 = [f32; 16usize];
423pub type __m512d = [f64; 8usize];
424pub type __m512i = [::std::os::raw::c_longlong; 8usize];
425pub type __m512_u = [f32; 16usize];
426pub type __m512d_u = [f64; 8usize];
427pub type __m512i_u = [::std::os::raw::c_longlong; 8usize];
428pub type __mmask8 = ::std::os::raw::c_uchar;
429pub type __mmask16 = ::std::os::raw::c_ushort;
430pub const _MM_CMPINT_ENUM__MM_CMPINT_EQ: _MM_CMPINT_ENUM = 0;
431pub const _MM_CMPINT_ENUM__MM_CMPINT_LT: _MM_CMPINT_ENUM = 1;
432pub const _MM_CMPINT_ENUM__MM_CMPINT_LE: _MM_CMPINT_ENUM = 2;
433pub const _MM_CMPINT_ENUM__MM_CMPINT_UNUSED: _MM_CMPINT_ENUM = 3;
434pub const _MM_CMPINT_ENUM__MM_CMPINT_NE: _MM_CMPINT_ENUM = 4;
435pub const _MM_CMPINT_ENUM__MM_CMPINT_NLT: _MM_CMPINT_ENUM = 5;
436pub const _MM_CMPINT_ENUM__MM_CMPINT_NLE: _MM_CMPINT_ENUM = 6;
437pub type _MM_CMPINT_ENUM = ::std::os::raw::c_int;
438pub const _MM_PERM_ENUM__MM_PERM_AAAA: _MM_PERM_ENUM = 0;
439pub const _MM_PERM_ENUM__MM_PERM_AAAB: _MM_PERM_ENUM = 1;
440pub const _MM_PERM_ENUM__MM_PERM_AAAC: _MM_PERM_ENUM = 2;
441pub const _MM_PERM_ENUM__MM_PERM_AAAD: _MM_PERM_ENUM = 3;
442pub const _MM_PERM_ENUM__MM_PERM_AABA: _MM_PERM_ENUM = 4;
443pub const _MM_PERM_ENUM__MM_PERM_AABB: _MM_PERM_ENUM = 5;
444pub const _MM_PERM_ENUM__MM_PERM_AABC: _MM_PERM_ENUM = 6;
445pub const _MM_PERM_ENUM__MM_PERM_AABD: _MM_PERM_ENUM = 7;
446pub const _MM_PERM_ENUM__MM_PERM_AACA: _MM_PERM_ENUM = 8;
447pub const _MM_PERM_ENUM__MM_PERM_AACB: _MM_PERM_ENUM = 9;
448pub const _MM_PERM_ENUM__MM_PERM_AACC: _MM_PERM_ENUM = 10;
449pub const _MM_PERM_ENUM__MM_PERM_AACD: _MM_PERM_ENUM = 11;
450pub const _MM_PERM_ENUM__MM_PERM_AADA: _MM_PERM_ENUM = 12;
451pub const _MM_PERM_ENUM__MM_PERM_AADB: _MM_PERM_ENUM = 13;
452pub const _MM_PERM_ENUM__MM_PERM_AADC: _MM_PERM_ENUM = 14;
453pub const _MM_PERM_ENUM__MM_PERM_AADD: _MM_PERM_ENUM = 15;
454pub const _MM_PERM_ENUM__MM_PERM_ABAA: _MM_PERM_ENUM = 16;
455pub const _MM_PERM_ENUM__MM_PERM_ABAB: _MM_PERM_ENUM = 17;
456pub const _MM_PERM_ENUM__MM_PERM_ABAC: _MM_PERM_ENUM = 18;
457pub const _MM_PERM_ENUM__MM_PERM_ABAD: _MM_PERM_ENUM = 19;
458pub const _MM_PERM_ENUM__MM_PERM_ABBA: _MM_PERM_ENUM = 20;
459pub const _MM_PERM_ENUM__MM_PERM_ABBB: _MM_PERM_ENUM = 21;
460pub const _MM_PERM_ENUM__MM_PERM_ABBC: _MM_PERM_ENUM = 22;
461pub const _MM_PERM_ENUM__MM_PERM_ABBD: _MM_PERM_ENUM = 23;
462pub const _MM_PERM_ENUM__MM_PERM_ABCA: _MM_PERM_ENUM = 24;
463pub const _MM_PERM_ENUM__MM_PERM_ABCB: _MM_PERM_ENUM = 25;
464pub const _MM_PERM_ENUM__MM_PERM_ABCC: _MM_PERM_ENUM = 26;
465pub const _MM_PERM_ENUM__MM_PERM_ABCD: _MM_PERM_ENUM = 27;
466pub const _MM_PERM_ENUM__MM_PERM_ABDA: _MM_PERM_ENUM = 28;
467pub const _MM_PERM_ENUM__MM_PERM_ABDB: _MM_PERM_ENUM = 29;
468pub const _MM_PERM_ENUM__MM_PERM_ABDC: _MM_PERM_ENUM = 30;
469pub const _MM_PERM_ENUM__MM_PERM_ABDD: _MM_PERM_ENUM = 31;
470pub const _MM_PERM_ENUM__MM_PERM_ACAA: _MM_PERM_ENUM = 32;
471pub const _MM_PERM_ENUM__MM_PERM_ACAB: _MM_PERM_ENUM = 33;
472pub const _MM_PERM_ENUM__MM_PERM_ACAC: _MM_PERM_ENUM = 34;
473pub const _MM_PERM_ENUM__MM_PERM_ACAD: _MM_PERM_ENUM = 35;
474pub const _MM_PERM_ENUM__MM_PERM_ACBA: _MM_PERM_ENUM = 36;
475pub const _MM_PERM_ENUM__MM_PERM_ACBB: _MM_PERM_ENUM = 37;
476pub const _MM_PERM_ENUM__MM_PERM_ACBC: _MM_PERM_ENUM = 38;
477pub const _MM_PERM_ENUM__MM_PERM_ACBD: _MM_PERM_ENUM = 39;
478pub const _MM_PERM_ENUM__MM_PERM_ACCA: _MM_PERM_ENUM = 40;
479pub const _MM_PERM_ENUM__MM_PERM_ACCB: _MM_PERM_ENUM = 41;
480pub const _MM_PERM_ENUM__MM_PERM_ACCC: _MM_PERM_ENUM = 42;
481pub const _MM_PERM_ENUM__MM_PERM_ACCD: _MM_PERM_ENUM = 43;
482pub const _MM_PERM_ENUM__MM_PERM_ACDA: _MM_PERM_ENUM = 44;
483pub const _MM_PERM_ENUM__MM_PERM_ACDB: _MM_PERM_ENUM = 45;
484pub const _MM_PERM_ENUM__MM_PERM_ACDC: _MM_PERM_ENUM = 46;
485pub const _MM_PERM_ENUM__MM_PERM_ACDD: _MM_PERM_ENUM = 47;
486pub const _MM_PERM_ENUM__MM_PERM_ADAA: _MM_PERM_ENUM = 48;
487pub const _MM_PERM_ENUM__MM_PERM_ADAB: _MM_PERM_ENUM = 49;
488pub const _MM_PERM_ENUM__MM_PERM_ADAC: _MM_PERM_ENUM = 50;
489pub const _MM_PERM_ENUM__MM_PERM_ADAD: _MM_PERM_ENUM = 51;
490pub const _MM_PERM_ENUM__MM_PERM_ADBA: _MM_PERM_ENUM = 52;
491pub const _MM_PERM_ENUM__MM_PERM_ADBB: _MM_PERM_ENUM = 53;
492pub const _MM_PERM_ENUM__MM_PERM_ADBC: _MM_PERM_ENUM = 54;
493pub const _MM_PERM_ENUM__MM_PERM_ADBD: _MM_PERM_ENUM = 55;
494pub const _MM_PERM_ENUM__MM_PERM_ADCA: _MM_PERM_ENUM = 56;
495pub const _MM_PERM_ENUM__MM_PERM_ADCB: _MM_PERM_ENUM = 57;
496pub const _MM_PERM_ENUM__MM_PERM_ADCC: _MM_PERM_ENUM = 58;
497pub const _MM_PERM_ENUM__MM_PERM_ADCD: _MM_PERM_ENUM = 59;
498pub const _MM_PERM_ENUM__MM_PERM_ADDA: _MM_PERM_ENUM = 60;
499pub const _MM_PERM_ENUM__MM_PERM_ADDB: _MM_PERM_ENUM = 61;
500pub const _MM_PERM_ENUM__MM_PERM_ADDC: _MM_PERM_ENUM = 62;
501pub const _MM_PERM_ENUM__MM_PERM_ADDD: _MM_PERM_ENUM = 63;
502pub const _MM_PERM_ENUM__MM_PERM_BAAA: _MM_PERM_ENUM = 64;
503pub const _MM_PERM_ENUM__MM_PERM_BAAB: _MM_PERM_ENUM = 65;
504pub const _MM_PERM_ENUM__MM_PERM_BAAC: _MM_PERM_ENUM = 66;
505pub const _MM_PERM_ENUM__MM_PERM_BAAD: _MM_PERM_ENUM = 67;
506pub const _MM_PERM_ENUM__MM_PERM_BABA: _MM_PERM_ENUM = 68;
507pub const _MM_PERM_ENUM__MM_PERM_BABB: _MM_PERM_ENUM = 69;
508pub const _MM_PERM_ENUM__MM_PERM_BABC: _MM_PERM_ENUM = 70;
509pub const _MM_PERM_ENUM__MM_PERM_BABD: _MM_PERM_ENUM = 71;
510pub const _MM_PERM_ENUM__MM_PERM_BACA: _MM_PERM_ENUM = 72;
511pub const _MM_PERM_ENUM__MM_PERM_BACB: _MM_PERM_ENUM = 73;
512pub const _MM_PERM_ENUM__MM_PERM_BACC: _MM_PERM_ENUM = 74;
513pub const _MM_PERM_ENUM__MM_PERM_BACD: _MM_PERM_ENUM = 75;
514pub const _MM_PERM_ENUM__MM_PERM_BADA: _MM_PERM_ENUM = 76;
515pub const _MM_PERM_ENUM__MM_PERM_BADB: _MM_PERM_ENUM = 77;
516pub const _MM_PERM_ENUM__MM_PERM_BADC: _MM_PERM_ENUM = 78;
517pub const _MM_PERM_ENUM__MM_PERM_BADD: _MM_PERM_ENUM = 79;
518pub const _MM_PERM_ENUM__MM_PERM_BBAA: _MM_PERM_ENUM = 80;
519pub const _MM_PERM_ENUM__MM_PERM_BBAB: _MM_PERM_ENUM = 81;
520pub const _MM_PERM_ENUM__MM_PERM_BBAC: _MM_PERM_ENUM = 82;
521pub const _MM_PERM_ENUM__MM_PERM_BBAD: _MM_PERM_ENUM = 83;
522pub const _MM_PERM_ENUM__MM_PERM_BBBA: _MM_PERM_ENUM = 84;
523pub const _MM_PERM_ENUM__MM_PERM_BBBB: _MM_PERM_ENUM = 85;
524pub const _MM_PERM_ENUM__MM_PERM_BBBC: _MM_PERM_ENUM = 86;
525pub const _MM_PERM_ENUM__MM_PERM_BBBD: _MM_PERM_ENUM = 87;
526pub const _MM_PERM_ENUM__MM_PERM_BBCA: _MM_PERM_ENUM = 88;
527pub const _MM_PERM_ENUM__MM_PERM_BBCB: _MM_PERM_ENUM = 89;
528pub const _MM_PERM_ENUM__MM_PERM_BBCC: _MM_PERM_ENUM = 90;
529pub const _MM_PERM_ENUM__MM_PERM_BBCD: _MM_PERM_ENUM = 91;
530pub const _MM_PERM_ENUM__MM_PERM_BBDA: _MM_PERM_ENUM = 92;
531pub const _MM_PERM_ENUM__MM_PERM_BBDB: _MM_PERM_ENUM = 93;
532pub const _MM_PERM_ENUM__MM_PERM_BBDC: _MM_PERM_ENUM = 94;
533pub const _MM_PERM_ENUM__MM_PERM_BBDD: _MM_PERM_ENUM = 95;
534pub const _MM_PERM_ENUM__MM_PERM_BCAA: _MM_PERM_ENUM = 96;
535pub const _MM_PERM_ENUM__MM_PERM_BCAB: _MM_PERM_ENUM = 97;
536pub const _MM_PERM_ENUM__MM_PERM_BCAC: _MM_PERM_ENUM = 98;
537pub const _MM_PERM_ENUM__MM_PERM_BCAD: _MM_PERM_ENUM = 99;
538pub const _MM_PERM_ENUM__MM_PERM_BCBA: _MM_PERM_ENUM = 100;
539pub const _MM_PERM_ENUM__MM_PERM_BCBB: _MM_PERM_ENUM = 101;
540pub const _MM_PERM_ENUM__MM_PERM_BCBC: _MM_PERM_ENUM = 102;
541pub const _MM_PERM_ENUM__MM_PERM_BCBD: _MM_PERM_ENUM = 103;
542pub const _MM_PERM_ENUM__MM_PERM_BCCA: _MM_PERM_ENUM = 104;
543pub const _MM_PERM_ENUM__MM_PERM_BCCB: _MM_PERM_ENUM = 105;
544pub const _MM_PERM_ENUM__MM_PERM_BCCC: _MM_PERM_ENUM = 106;
545pub const _MM_PERM_ENUM__MM_PERM_BCCD: _MM_PERM_ENUM = 107;
546pub const _MM_PERM_ENUM__MM_PERM_BCDA: _MM_PERM_ENUM = 108;
547pub const _MM_PERM_ENUM__MM_PERM_BCDB: _MM_PERM_ENUM = 109;
548pub const _MM_PERM_ENUM__MM_PERM_BCDC: _MM_PERM_ENUM = 110;
549pub const _MM_PERM_ENUM__MM_PERM_BCDD: _MM_PERM_ENUM = 111;
550pub const _MM_PERM_ENUM__MM_PERM_BDAA: _MM_PERM_ENUM = 112;
551pub const _MM_PERM_ENUM__MM_PERM_BDAB: _MM_PERM_ENUM = 113;
552pub const _MM_PERM_ENUM__MM_PERM_BDAC: _MM_PERM_ENUM = 114;
553pub const _MM_PERM_ENUM__MM_PERM_BDAD: _MM_PERM_ENUM = 115;
554pub const _MM_PERM_ENUM__MM_PERM_BDBA: _MM_PERM_ENUM = 116;
555pub const _MM_PERM_ENUM__MM_PERM_BDBB: _MM_PERM_ENUM = 117;
556pub const _MM_PERM_ENUM__MM_PERM_BDBC: _MM_PERM_ENUM = 118;
557pub const _MM_PERM_ENUM__MM_PERM_BDBD: _MM_PERM_ENUM = 119;
558pub const _MM_PERM_ENUM__MM_PERM_BDCA: _MM_PERM_ENUM = 120;
559pub const _MM_PERM_ENUM__MM_PERM_BDCB: _MM_PERM_ENUM = 121;
560pub const _MM_PERM_ENUM__MM_PERM_BDCC: _MM_PERM_ENUM = 122;
561pub const _MM_PERM_ENUM__MM_PERM_BDCD: _MM_PERM_ENUM = 123;
562pub const _MM_PERM_ENUM__MM_PERM_BDDA: _MM_PERM_ENUM = 124;
563pub const _MM_PERM_ENUM__MM_PERM_BDDB: _MM_PERM_ENUM = 125;
564pub const _MM_PERM_ENUM__MM_PERM_BDDC: _MM_PERM_ENUM = 126;
565pub const _MM_PERM_ENUM__MM_PERM_BDDD: _MM_PERM_ENUM = 127;
566pub const _MM_PERM_ENUM__MM_PERM_CAAA: _MM_PERM_ENUM = 128;
567pub const _MM_PERM_ENUM__MM_PERM_CAAB: _MM_PERM_ENUM = 129;
568pub const _MM_PERM_ENUM__MM_PERM_CAAC: _MM_PERM_ENUM = 130;
569pub const _MM_PERM_ENUM__MM_PERM_CAAD: _MM_PERM_ENUM = 131;
570pub const _MM_PERM_ENUM__MM_PERM_CABA: _MM_PERM_ENUM = 132;
571pub const _MM_PERM_ENUM__MM_PERM_CABB: _MM_PERM_ENUM = 133;
572pub const _MM_PERM_ENUM__MM_PERM_CABC: _MM_PERM_ENUM = 134;
573pub const _MM_PERM_ENUM__MM_PERM_CABD: _MM_PERM_ENUM = 135;
574pub const _MM_PERM_ENUM__MM_PERM_CACA: _MM_PERM_ENUM = 136;
575pub const _MM_PERM_ENUM__MM_PERM_CACB: _MM_PERM_ENUM = 137;
576pub const _MM_PERM_ENUM__MM_PERM_CACC: _MM_PERM_ENUM = 138;
577pub const _MM_PERM_ENUM__MM_PERM_CACD: _MM_PERM_ENUM = 139;
578pub const _MM_PERM_ENUM__MM_PERM_CADA: _MM_PERM_ENUM = 140;
579pub const _MM_PERM_ENUM__MM_PERM_CADB: _MM_PERM_ENUM = 141;
580pub const _MM_PERM_ENUM__MM_PERM_CADC: _MM_PERM_ENUM = 142;
581pub const _MM_PERM_ENUM__MM_PERM_CADD: _MM_PERM_ENUM = 143;
582pub const _MM_PERM_ENUM__MM_PERM_CBAA: _MM_PERM_ENUM = 144;
583pub const _MM_PERM_ENUM__MM_PERM_CBAB: _MM_PERM_ENUM = 145;
584pub const _MM_PERM_ENUM__MM_PERM_CBAC: _MM_PERM_ENUM = 146;
585pub const _MM_PERM_ENUM__MM_PERM_CBAD: _MM_PERM_ENUM = 147;
586pub const _MM_PERM_ENUM__MM_PERM_CBBA: _MM_PERM_ENUM = 148;
587pub const _MM_PERM_ENUM__MM_PERM_CBBB: _MM_PERM_ENUM = 149;
588pub const _MM_PERM_ENUM__MM_PERM_CBBC: _MM_PERM_ENUM = 150;
589pub const _MM_PERM_ENUM__MM_PERM_CBBD: _MM_PERM_ENUM = 151;
590pub const _MM_PERM_ENUM__MM_PERM_CBCA: _MM_PERM_ENUM = 152;
591pub const _MM_PERM_ENUM__MM_PERM_CBCB: _MM_PERM_ENUM = 153;
592pub const _MM_PERM_ENUM__MM_PERM_CBCC: _MM_PERM_ENUM = 154;
593pub const _MM_PERM_ENUM__MM_PERM_CBCD: _MM_PERM_ENUM = 155;
594pub const _MM_PERM_ENUM__MM_PERM_CBDA: _MM_PERM_ENUM = 156;
595pub const _MM_PERM_ENUM__MM_PERM_CBDB: _MM_PERM_ENUM = 157;
596pub const _MM_PERM_ENUM__MM_PERM_CBDC: _MM_PERM_ENUM = 158;
597pub const _MM_PERM_ENUM__MM_PERM_CBDD: _MM_PERM_ENUM = 159;
598pub const _MM_PERM_ENUM__MM_PERM_CCAA: _MM_PERM_ENUM = 160;
599pub const _MM_PERM_ENUM__MM_PERM_CCAB: _MM_PERM_ENUM = 161;
600pub const _MM_PERM_ENUM__MM_PERM_CCAC: _MM_PERM_ENUM = 162;
601pub const _MM_PERM_ENUM__MM_PERM_CCAD: _MM_PERM_ENUM = 163;
602pub const _MM_PERM_ENUM__MM_PERM_CCBA: _MM_PERM_ENUM = 164;
603pub const _MM_PERM_ENUM__MM_PERM_CCBB: _MM_PERM_ENUM = 165;
604pub const _MM_PERM_ENUM__MM_PERM_CCBC: _MM_PERM_ENUM = 166;
605pub const _MM_PERM_ENUM__MM_PERM_CCBD: _MM_PERM_ENUM = 167;
606pub const _MM_PERM_ENUM__MM_PERM_CCCA: _MM_PERM_ENUM = 168;
607pub const _MM_PERM_ENUM__MM_PERM_CCCB: _MM_PERM_ENUM = 169;
608pub const _MM_PERM_ENUM__MM_PERM_CCCC: _MM_PERM_ENUM = 170;
609pub const _MM_PERM_ENUM__MM_PERM_CCCD: _MM_PERM_ENUM = 171;
610pub const _MM_PERM_ENUM__MM_PERM_CCDA: _MM_PERM_ENUM = 172;
611pub const _MM_PERM_ENUM__MM_PERM_CCDB: _MM_PERM_ENUM = 173;
612pub const _MM_PERM_ENUM__MM_PERM_CCDC: _MM_PERM_ENUM = 174;
613pub const _MM_PERM_ENUM__MM_PERM_CCDD: _MM_PERM_ENUM = 175;
614pub const _MM_PERM_ENUM__MM_PERM_CDAA: _MM_PERM_ENUM = 176;
615pub const _MM_PERM_ENUM__MM_PERM_CDAB: _MM_PERM_ENUM = 177;
616pub const _MM_PERM_ENUM__MM_PERM_CDAC: _MM_PERM_ENUM = 178;
617pub const _MM_PERM_ENUM__MM_PERM_CDAD: _MM_PERM_ENUM = 179;
618pub const _MM_PERM_ENUM__MM_PERM_CDBA: _MM_PERM_ENUM = 180;
619pub const _MM_PERM_ENUM__MM_PERM_CDBB: _MM_PERM_ENUM = 181;
620pub const _MM_PERM_ENUM__MM_PERM_CDBC: _MM_PERM_ENUM = 182;
621pub const _MM_PERM_ENUM__MM_PERM_CDBD: _MM_PERM_ENUM = 183;
622pub const _MM_PERM_ENUM__MM_PERM_CDCA: _MM_PERM_ENUM = 184;
623pub const _MM_PERM_ENUM__MM_PERM_CDCB: _MM_PERM_ENUM = 185;
624pub const _MM_PERM_ENUM__MM_PERM_CDCC: _MM_PERM_ENUM = 186;
625pub const _MM_PERM_ENUM__MM_PERM_CDCD: _MM_PERM_ENUM = 187;
626pub const _MM_PERM_ENUM__MM_PERM_CDDA: _MM_PERM_ENUM = 188;
627pub const _MM_PERM_ENUM__MM_PERM_CDDB: _MM_PERM_ENUM = 189;
628pub const _MM_PERM_ENUM__MM_PERM_CDDC: _MM_PERM_ENUM = 190;
629pub const _MM_PERM_ENUM__MM_PERM_CDDD: _MM_PERM_ENUM = 191;
630pub const _MM_PERM_ENUM__MM_PERM_DAAA: _MM_PERM_ENUM = 192;
631pub const _MM_PERM_ENUM__MM_PERM_DAAB: _MM_PERM_ENUM = 193;
632pub const _MM_PERM_ENUM__MM_PERM_DAAC: _MM_PERM_ENUM = 194;
633pub const _MM_PERM_ENUM__MM_PERM_DAAD: _MM_PERM_ENUM = 195;
634pub const _MM_PERM_ENUM__MM_PERM_DABA: _MM_PERM_ENUM = 196;
635pub const _MM_PERM_ENUM__MM_PERM_DABB: _MM_PERM_ENUM = 197;
636pub const _MM_PERM_ENUM__MM_PERM_DABC: _MM_PERM_ENUM = 198;
637pub const _MM_PERM_ENUM__MM_PERM_DABD: _MM_PERM_ENUM = 199;
638pub const _MM_PERM_ENUM__MM_PERM_DACA: _MM_PERM_ENUM = 200;
639pub const _MM_PERM_ENUM__MM_PERM_DACB: _MM_PERM_ENUM = 201;
640pub const _MM_PERM_ENUM__MM_PERM_DACC: _MM_PERM_ENUM = 202;
641pub const _MM_PERM_ENUM__MM_PERM_DACD: _MM_PERM_ENUM = 203;
642pub const _MM_PERM_ENUM__MM_PERM_DADA: _MM_PERM_ENUM = 204;
643pub const _MM_PERM_ENUM__MM_PERM_DADB: _MM_PERM_ENUM = 205;
644pub const _MM_PERM_ENUM__MM_PERM_DADC: _MM_PERM_ENUM = 206;
645pub const _MM_PERM_ENUM__MM_PERM_DADD: _MM_PERM_ENUM = 207;
646pub const _MM_PERM_ENUM__MM_PERM_DBAA: _MM_PERM_ENUM = 208;
647pub const _MM_PERM_ENUM__MM_PERM_DBAB: _MM_PERM_ENUM = 209;
648pub const _MM_PERM_ENUM__MM_PERM_DBAC: _MM_PERM_ENUM = 210;
649pub const _MM_PERM_ENUM__MM_PERM_DBAD: _MM_PERM_ENUM = 211;
650pub const _MM_PERM_ENUM__MM_PERM_DBBA: _MM_PERM_ENUM = 212;
651pub const _MM_PERM_ENUM__MM_PERM_DBBB: _MM_PERM_ENUM = 213;
652pub const _MM_PERM_ENUM__MM_PERM_DBBC: _MM_PERM_ENUM = 214;
653pub const _MM_PERM_ENUM__MM_PERM_DBBD: _MM_PERM_ENUM = 215;
654pub const _MM_PERM_ENUM__MM_PERM_DBCA: _MM_PERM_ENUM = 216;
655pub const _MM_PERM_ENUM__MM_PERM_DBCB: _MM_PERM_ENUM = 217;
656pub const _MM_PERM_ENUM__MM_PERM_DBCC: _MM_PERM_ENUM = 218;
657pub const _MM_PERM_ENUM__MM_PERM_DBCD: _MM_PERM_ENUM = 219;
658pub const _MM_PERM_ENUM__MM_PERM_DBDA: _MM_PERM_ENUM = 220;
659pub const _MM_PERM_ENUM__MM_PERM_DBDB: _MM_PERM_ENUM = 221;
660pub const _MM_PERM_ENUM__MM_PERM_DBDC: _MM_PERM_ENUM = 222;
661pub const _MM_PERM_ENUM__MM_PERM_DBDD: _MM_PERM_ENUM = 223;
662pub const _MM_PERM_ENUM__MM_PERM_DCAA: _MM_PERM_ENUM = 224;
663pub const _MM_PERM_ENUM__MM_PERM_DCAB: _MM_PERM_ENUM = 225;
664pub const _MM_PERM_ENUM__MM_PERM_DCAC: _MM_PERM_ENUM = 226;
665pub const _MM_PERM_ENUM__MM_PERM_DCAD: _MM_PERM_ENUM = 227;
666pub const _MM_PERM_ENUM__MM_PERM_DCBA: _MM_PERM_ENUM = 228;
667pub const _MM_PERM_ENUM__MM_PERM_DCBB: _MM_PERM_ENUM = 229;
668pub const _MM_PERM_ENUM__MM_PERM_DCBC: _MM_PERM_ENUM = 230;
669pub const _MM_PERM_ENUM__MM_PERM_DCBD: _MM_PERM_ENUM = 231;
670pub const _MM_PERM_ENUM__MM_PERM_DCCA: _MM_PERM_ENUM = 232;
671pub const _MM_PERM_ENUM__MM_PERM_DCCB: _MM_PERM_ENUM = 233;
672pub const _MM_PERM_ENUM__MM_PERM_DCCC: _MM_PERM_ENUM = 234;
673pub const _MM_PERM_ENUM__MM_PERM_DCCD: _MM_PERM_ENUM = 235;
674pub const _MM_PERM_ENUM__MM_PERM_DCDA: _MM_PERM_ENUM = 236;
675pub const _MM_PERM_ENUM__MM_PERM_DCDB: _MM_PERM_ENUM = 237;
676pub const _MM_PERM_ENUM__MM_PERM_DCDC: _MM_PERM_ENUM = 238;
677pub const _MM_PERM_ENUM__MM_PERM_DCDD: _MM_PERM_ENUM = 239;
678pub const _MM_PERM_ENUM__MM_PERM_DDAA: _MM_PERM_ENUM = 240;
679pub const _MM_PERM_ENUM__MM_PERM_DDAB: _MM_PERM_ENUM = 241;
680pub const _MM_PERM_ENUM__MM_PERM_DDAC: _MM_PERM_ENUM = 242;
681pub const _MM_PERM_ENUM__MM_PERM_DDAD: _MM_PERM_ENUM = 243;
682pub const _MM_PERM_ENUM__MM_PERM_DDBA: _MM_PERM_ENUM = 244;
683pub const _MM_PERM_ENUM__MM_PERM_DDBB: _MM_PERM_ENUM = 245;
684pub const _MM_PERM_ENUM__MM_PERM_DDBC: _MM_PERM_ENUM = 246;
685pub const _MM_PERM_ENUM__MM_PERM_DDBD: _MM_PERM_ENUM = 247;
686pub const _MM_PERM_ENUM__MM_PERM_DDCA: _MM_PERM_ENUM = 248;
687pub const _MM_PERM_ENUM__MM_PERM_DDCB: _MM_PERM_ENUM = 249;
688pub const _MM_PERM_ENUM__MM_PERM_DDCC: _MM_PERM_ENUM = 250;
689pub const _MM_PERM_ENUM__MM_PERM_DDCD: _MM_PERM_ENUM = 251;
690pub const _MM_PERM_ENUM__MM_PERM_DDDA: _MM_PERM_ENUM = 252;
691pub const _MM_PERM_ENUM__MM_PERM_DDDB: _MM_PERM_ENUM = 253;
692pub const _MM_PERM_ENUM__MM_PERM_DDDC: _MM_PERM_ENUM = 254;
693pub const _MM_PERM_ENUM__MM_PERM_DDDD: _MM_PERM_ENUM = 255;
694pub type _MM_PERM_ENUM = ::std::os::raw::c_int;
695pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_1_2: _MM_MANTISSA_NORM_ENUM = 0;
696pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p5_2: _MM_MANTISSA_NORM_ENUM = 1;
697pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p5_1: _MM_MANTISSA_NORM_ENUM = 2;
698pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p75_1p5: _MM_MANTISSA_NORM_ENUM = 3;
699pub type _MM_MANTISSA_NORM_ENUM = ::std::os::raw::c_int;
700pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_src: _MM_MANTISSA_SIGN_ENUM = 0;
701pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_zero: _MM_MANTISSA_SIGN_ENUM = 1;
702pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_nan: _MM_MANTISSA_SIGN_ENUM = 2;
703pub type _MM_MANTISSA_SIGN_ENUM = ::std::os::raw::c_int;
704pub const _MM_TERNLOG_ENUM__MM_TERNLOG_A: _MM_TERNLOG_ENUM = 240;
705pub const _MM_TERNLOG_ENUM__MM_TERNLOG_B: _MM_TERNLOG_ENUM = 204;
706pub const _MM_TERNLOG_ENUM__MM_TERNLOG_C: _MM_TERNLOG_ENUM = 170;
707pub type _MM_TERNLOG_ENUM = ::std::os::raw::c_int;
708pub type __v2hi = [::std::os::raw::c_short; 2usize];
709pub type __v4qi = [::std::os::raw::c_char; 4usize];
710pub type __v2qi = [::std::os::raw::c_char; 2usize];
711pub type __mmask32 = ::std::os::raw::c_uint;
712pub type __mmask64 = ::std::os::raw::c_ulonglong;
713pub type __v32hf = [__BindgenFloat16; 32usize];
714pub type __m512h = [__BindgenFloat16; 32usize];
715pub type __m512h_u = [__BindgenFloat16; 32usize];
716pub type __v32bf = __BindgenOpaqueArray<u8, 64usize>;
717pub type __m512bh = __BindgenOpaqueArray<u8, 64usize>;
718pub type __bfloat16 = u16;
719pub type _tile1024i = [::std::os::raw::c_int; 256usize];
720pub type _tile1024i_1024a = [::std::os::raw::c_int; 256usize];
721#[repr(C)]
722#[repr(align(1024))]
723#[derive(Debug, Copy, Clone)]
724pub struct __tile1024i_str {
725    pub row: ::std::os::raw::c_ushort,
726    pub col: ::std::os::raw::c_ushort,
727    pub __bindgen_padding_0: [u64; 127usize],
728    pub tile: _tile1024i,
729}
730#[allow(clippy::unnecessary_operation, clippy::identity_op)]
731const _: () = {
732    ["Size of __tile1024i_str"][::std::mem::size_of::<__tile1024i_str>() - 2048usize];
733    ["Alignment of __tile1024i_str"][::std::mem::align_of::<__tile1024i_str>() - 1024usize];
734    ["Offset of field: __tile1024i_str::row"]
735        [::std::mem::offset_of!(__tile1024i_str, row) - 0usize];
736    ["Offset of field: __tile1024i_str::col"]
737        [::std::mem::offset_of!(__tile1024i_str, col) - 2usize];
738    ["Offset of field: __tile1024i_str::tile"]
739        [::std::mem::offset_of!(__tile1024i_str, tile) - 1024usize];
740};
741pub type __tile1024i = __tile1024i_str;
742pub type __m128bh_u = u128;
743pub type __m256bh_u = __BindgenOpaqueArray<u8, 32usize>;
744pub type __m512bh_u = __BindgenOpaqueArray<u8, 64usize>;
745#[repr(C)]
746#[derive(Debug, Copy, Clone)]
747pub struct base_allocator {
748    pub malloc:
749        ::std::option::Option<unsafe extern "C" fn(arg1: usize) -> *mut ::std::os::raw::c_void>,
750    pub realloc: ::std::option::Option<
751        unsafe extern "C" fn(
752            arg1: *mut ::std::os::raw::c_void,
753            arg2: usize,
754        ) -> *mut ::std::os::raw::c_void,
755    >,
756    pub free: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
757}
758#[allow(clippy::unnecessary_operation, clippy::identity_op)]
759const _: () = {
760    ["Size of base_allocator"][::std::mem::size_of::<base_allocator>() - 24usize];
761    ["Alignment of base_allocator"][::std::mem::align_of::<base_allocator>() - 8usize];
762    ["Offset of field: base_allocator::malloc"]
763        [::std::mem::offset_of!(base_allocator, malloc) - 0usize];
764    ["Offset of field: base_allocator::realloc"]
765        [::std::mem::offset_of!(base_allocator, realloc) - 8usize];
766    ["Offset of field: base_allocator::free"]
767        [::std::mem::offset_of!(base_allocator, free) - 16usize];
768};
769#[repr(C)]
770pub struct darray {
771    pub array: *mut ::std::os::raw::c_void,
772    pub num: usize,
773    pub capacity: usize,
774}
775#[allow(clippy::unnecessary_operation, clippy::identity_op)]
776const _: () = {
777    ["Size of darray"][::std::mem::size_of::<darray>() - 24usize];
778    ["Alignment of darray"][::std::mem::align_of::<darray>() - 8usize];
779    ["Offset of field: darray::array"][::std::mem::offset_of!(darray, array) - 0usize];
780    ["Offset of field: darray::num"][::std::mem::offset_of!(darray, num) - 8usize];
781    ["Offset of field: darray::capacity"][::std::mem::offset_of!(darray, capacity) - 16usize];
782};
783#[repr(C)]
784#[derive(Debug, Copy, Clone)]
785pub struct profiler_snapshot {
786    _unused: [u8; 0],
787}
788pub type profiler_snapshot_t = profiler_snapshot;
789#[repr(C)]
790#[derive(Debug, Copy, Clone)]
791pub struct profiler_snapshot_entry {
792    _unused: [u8; 0],
793}
794pub type profiler_snapshot_entry_t = profiler_snapshot_entry;
795pub type profiler_time_entry_t = profiler_time_entry;
796#[repr(C)]
797#[derive(Debug, Copy, Clone)]
798pub struct profiler_name_store {
799    _unused: [u8; 0],
800}
801pub type profiler_name_store_t = profiler_name_store;
802#[repr(C)]
803pub struct profiler_time_entry {
804    pub time_delta: u64,
805    pub count: u64,
806}
807#[allow(clippy::unnecessary_operation, clippy::identity_op)]
808const _: () = {
809    ["Size of profiler_time_entry"][::std::mem::size_of::<profiler_time_entry>() - 16usize];
810    ["Alignment of profiler_time_entry"][::std::mem::align_of::<profiler_time_entry>() - 8usize];
811    ["Offset of field: profiler_time_entry::time_delta"]
812        [::std::mem::offset_of!(profiler_time_entry, time_delta) - 0usize];
813    ["Offset of field: profiler_time_entry::count"]
814        [::std::mem::offset_of!(profiler_time_entry, count) - 8usize];
815};
816#[repr(C)]
817pub struct profiler_time_entries_t {
818    pub da: __BindgenUnionField<darray>,
819    pub __bindgen_anon_1: __BindgenUnionField<profiler_time_entries_t__bindgen_ty_1>,
820    pub bindgen_union_field: [u64; 3usize],
821}
822#[repr(C)]
823pub struct profiler_time_entries_t__bindgen_ty_1 {
824    pub array: *mut profiler_time_entry_t,
825    pub num: usize,
826    pub capacity: usize,
827}
828#[allow(clippy::unnecessary_operation, clippy::identity_op)]
829const _: () = {
830    ["Size of profiler_time_entries_t__bindgen_ty_1"]
831        [::std::mem::size_of::<profiler_time_entries_t__bindgen_ty_1>() - 24usize];
832    ["Alignment of profiler_time_entries_t__bindgen_ty_1"]
833        [::std::mem::align_of::<profiler_time_entries_t__bindgen_ty_1>() - 8usize];
834    ["Offset of field: profiler_time_entries_t__bindgen_ty_1::array"]
835        [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, array) - 0usize];
836    ["Offset of field: profiler_time_entries_t__bindgen_ty_1::num"]
837        [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, num) - 8usize];
838    ["Offset of field: profiler_time_entries_t__bindgen_ty_1::capacity"]
839        [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, capacity) - 16usize];
840};
841#[allow(clippy::unnecessary_operation, clippy::identity_op)]
842const _: () = {
843    ["Size of profiler_time_entries_t"][::std::mem::size_of::<profiler_time_entries_t>() - 24usize];
844    ["Alignment of profiler_time_entries_t"]
845        [::std::mem::align_of::<profiler_time_entries_t>() - 8usize];
846    ["Offset of field: profiler_time_entries_t::da"]
847        [::std::mem::offset_of!(profiler_time_entries_t, da) - 0usize];
848};
849pub type profiler_entry_enum_func = ::std::option::Option<
850    unsafe extern "C" fn(
851        context: *mut ::std::os::raw::c_void,
852        entry: *mut profiler_snapshot_entry_t,
853    ) -> bool,
854>;
855pub type profiler_name_filter_func = ::std::option::Option<
856    unsafe extern "C" fn(
857        data: *mut ::std::os::raw::c_void,
858        name: *const ::std::os::raw::c_char,
859        remove: *mut bool,
860    ) -> bool,
861>;
862#[repr(C)]
863#[derive(Debug, Copy, Clone)]
864pub struct text_lookup {
865    _unused: [u8; 0],
866}
867pub type lookup_t = text_lookup;
868#[repr(C)]
869#[derive(Debug, Copy, Clone)]
870pub struct input_subsystem {
871    _unused: [u8; 0],
872}
873pub type input_t = input_subsystem;
874#[repr(C)]
875#[derive(Debug, Copy, Clone)]
876pub struct quat {
877    _unused: [u8; 0],
878}
879#[repr(C)]
880#[derive(Debug, Copy, Clone)]
881pub struct axisang {
882    _unused: [u8; 0],
883}
884#[repr(C)]
885#[derive(Debug, Copy, Clone)]
886pub struct plane {
887    _unused: [u8; 0],
888}
889#[repr(C)]
890#[derive(Debug, Copy, Clone)]
891pub struct matrix3 {
892    _unused: [u8; 0],
893}
894#[repr(C)]
895#[derive(Debug, Copy, Clone)]
896pub struct matrix4 {
897    _unused: [u8; 0],
898}
899pub const gs_draw_mode_GS_POINTS: gs_draw_mode = 0;
900pub const gs_draw_mode_GS_LINES: gs_draw_mode = 1;
901pub const gs_draw_mode_GS_LINESTRIP: gs_draw_mode = 2;
902pub const gs_draw_mode_GS_TRIS: gs_draw_mode = 3;
903pub const gs_draw_mode_GS_TRISTRIP: gs_draw_mode = 4;
904pub type gs_draw_mode = ::std::os::raw::c_int;
905pub const gs_color_format_GS_UNKNOWN: gs_color_format = 0;
906pub const gs_color_format_GS_A8: gs_color_format = 1;
907pub const gs_color_format_GS_R8: gs_color_format = 2;
908pub const gs_color_format_GS_RGBA: gs_color_format = 3;
909pub const gs_color_format_GS_BGRX: gs_color_format = 4;
910pub const gs_color_format_GS_BGRA: gs_color_format = 5;
911pub const gs_color_format_GS_R10G10B10A2: gs_color_format = 6;
912pub const gs_color_format_GS_RGBA16: gs_color_format = 7;
913pub const gs_color_format_GS_R16: gs_color_format = 8;
914pub const gs_color_format_GS_RGBA16F: gs_color_format = 9;
915pub const gs_color_format_GS_RGBA32F: gs_color_format = 10;
916pub const gs_color_format_GS_RG16F: gs_color_format = 11;
917pub const gs_color_format_GS_RG32F: gs_color_format = 12;
918pub const gs_color_format_GS_R16F: gs_color_format = 13;
919pub const gs_color_format_GS_R32F: gs_color_format = 14;
920pub const gs_color_format_GS_DXT1: gs_color_format = 15;
921pub const gs_color_format_GS_DXT3: gs_color_format = 16;
922pub const gs_color_format_GS_DXT5: gs_color_format = 17;
923pub const gs_color_format_GS_R8G8: gs_color_format = 18;
924pub const gs_color_format_GS_RGBA_UNORM: gs_color_format = 19;
925pub const gs_color_format_GS_BGRX_UNORM: gs_color_format = 20;
926pub const gs_color_format_GS_BGRA_UNORM: gs_color_format = 21;
927pub const gs_color_format_GS_RG16: gs_color_format = 22;
928pub type gs_color_format = ::std::os::raw::c_int;
929pub const gs_color_space_GS_CS_SRGB: gs_color_space = 0;
930pub const gs_color_space_GS_CS_SRGB_16F: gs_color_space = 1;
931pub const gs_color_space_GS_CS_709_EXTENDED: gs_color_space = 2;
932pub const gs_color_space_GS_CS_709_SCRGB: gs_color_space = 3;
933pub type gs_color_space = ::std::os::raw::c_int;
934pub const gs_zstencil_format_GS_ZS_NONE: gs_zstencil_format = 0;
935pub const gs_zstencil_format_GS_Z16: gs_zstencil_format = 1;
936pub const gs_zstencil_format_GS_Z24_S8: gs_zstencil_format = 2;
937pub const gs_zstencil_format_GS_Z32F: gs_zstencil_format = 3;
938pub const gs_zstencil_format_GS_Z32F_S8X24: gs_zstencil_format = 4;
939pub type gs_zstencil_format = ::std::os::raw::c_int;
940pub const gs_index_type_GS_UNSIGNED_SHORT: gs_index_type = 0;
941pub const gs_index_type_GS_UNSIGNED_LONG: gs_index_type = 1;
942pub type gs_index_type = ::std::os::raw::c_int;
943pub const gs_cull_mode_GS_BACK: gs_cull_mode = 0;
944pub const gs_cull_mode_GS_FRONT: gs_cull_mode = 1;
945pub const gs_cull_mode_GS_NEITHER: gs_cull_mode = 2;
946pub type gs_cull_mode = ::std::os::raw::c_int;
947pub const gs_blend_type_GS_BLEND_ZERO: gs_blend_type = 0;
948pub const gs_blend_type_GS_BLEND_ONE: gs_blend_type = 1;
949pub const gs_blend_type_GS_BLEND_SRCCOLOR: gs_blend_type = 2;
950pub const gs_blend_type_GS_BLEND_INVSRCCOLOR: gs_blend_type = 3;
951pub const gs_blend_type_GS_BLEND_SRCALPHA: gs_blend_type = 4;
952pub const gs_blend_type_GS_BLEND_INVSRCALPHA: gs_blend_type = 5;
953pub const gs_blend_type_GS_BLEND_DSTCOLOR: gs_blend_type = 6;
954pub const gs_blend_type_GS_BLEND_INVDSTCOLOR: gs_blend_type = 7;
955pub const gs_blend_type_GS_BLEND_DSTALPHA: gs_blend_type = 8;
956pub const gs_blend_type_GS_BLEND_INVDSTALPHA: gs_blend_type = 9;
957pub const gs_blend_type_GS_BLEND_SRCALPHASAT: gs_blend_type = 10;
958pub type gs_blend_type = ::std::os::raw::c_int;
959pub const gs_blend_op_type_GS_BLEND_OP_ADD: gs_blend_op_type = 0;
960pub const gs_blend_op_type_GS_BLEND_OP_SUBTRACT: gs_blend_op_type = 1;
961pub const gs_blend_op_type_GS_BLEND_OP_REVERSE_SUBTRACT: gs_blend_op_type = 2;
962pub const gs_blend_op_type_GS_BLEND_OP_MIN: gs_blend_op_type = 3;
963pub const gs_blend_op_type_GS_BLEND_OP_MAX: gs_blend_op_type = 4;
964pub type gs_blend_op_type = ::std::os::raw::c_int;
965pub const gs_depth_test_GS_NEVER: gs_depth_test = 0;
966pub const gs_depth_test_GS_LESS: gs_depth_test = 1;
967pub const gs_depth_test_GS_LEQUAL: gs_depth_test = 2;
968pub const gs_depth_test_GS_EQUAL: gs_depth_test = 3;
969pub const gs_depth_test_GS_GEQUAL: gs_depth_test = 4;
970pub const gs_depth_test_GS_GREATER: gs_depth_test = 5;
971pub const gs_depth_test_GS_NOTEQUAL: gs_depth_test = 6;
972pub const gs_depth_test_GS_ALWAYS: gs_depth_test = 7;
973pub type gs_depth_test = ::std::os::raw::c_int;
974pub const gs_stencil_side_GS_STENCIL_FRONT: gs_stencil_side = 1;
975pub const gs_stencil_side_GS_STENCIL_BACK: gs_stencil_side = 2;
976pub const gs_stencil_side_GS_STENCIL_BOTH: gs_stencil_side = 3;
977pub type gs_stencil_side = ::std::os::raw::c_int;
978pub const gs_stencil_op_type_GS_KEEP: gs_stencil_op_type = 0;
979pub const gs_stencil_op_type_GS_ZERO: gs_stencil_op_type = 1;
980pub const gs_stencil_op_type_GS_REPLACE: gs_stencil_op_type = 2;
981pub const gs_stencil_op_type_GS_INCR: gs_stencil_op_type = 3;
982pub const gs_stencil_op_type_GS_DECR: gs_stencil_op_type = 4;
983pub const gs_stencil_op_type_GS_INVERT: gs_stencil_op_type = 5;
984pub type gs_stencil_op_type = ::std::os::raw::c_int;
985pub const gs_cube_sides_GS_POSITIVE_X: gs_cube_sides = 0;
986pub const gs_cube_sides_GS_NEGATIVE_X: gs_cube_sides = 1;
987pub const gs_cube_sides_GS_POSITIVE_Y: gs_cube_sides = 2;
988pub const gs_cube_sides_GS_NEGATIVE_Y: gs_cube_sides = 3;
989pub const gs_cube_sides_GS_POSITIVE_Z: gs_cube_sides = 4;
990pub const gs_cube_sides_GS_NEGATIVE_Z: gs_cube_sides = 5;
991pub type gs_cube_sides = ::std::os::raw::c_int;
992pub const gs_sample_filter_GS_FILTER_POINT: gs_sample_filter = 0;
993pub const gs_sample_filter_GS_FILTER_LINEAR: gs_sample_filter = 1;
994pub const gs_sample_filter_GS_FILTER_ANISOTROPIC: gs_sample_filter = 2;
995pub const gs_sample_filter_GS_FILTER_MIN_MAG_POINT_MIP_LINEAR: gs_sample_filter = 3;
996pub const gs_sample_filter_GS_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT: gs_sample_filter = 4;
997pub const gs_sample_filter_GS_FILTER_MIN_POINT_MAG_MIP_LINEAR: gs_sample_filter = 5;
998pub const gs_sample_filter_GS_FILTER_MIN_LINEAR_MAG_MIP_POINT: gs_sample_filter = 6;
999pub const gs_sample_filter_GS_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR: gs_sample_filter = 7;
1000pub const gs_sample_filter_GS_FILTER_MIN_MAG_LINEAR_MIP_POINT: gs_sample_filter = 8;
1001pub type gs_sample_filter = ::std::os::raw::c_int;
1002pub const gs_address_mode_GS_ADDRESS_CLAMP: gs_address_mode = 0;
1003pub const gs_address_mode_GS_ADDRESS_WRAP: gs_address_mode = 1;
1004pub const gs_address_mode_GS_ADDRESS_MIRROR: gs_address_mode = 2;
1005pub const gs_address_mode_GS_ADDRESS_BORDER: gs_address_mode = 3;
1006pub const gs_address_mode_GS_ADDRESS_MIRRORONCE: gs_address_mode = 4;
1007pub type gs_address_mode = ::std::os::raw::c_int;
1008pub const gs_texture_type_GS_TEXTURE_2D: gs_texture_type = 0;
1009pub const gs_texture_type_GS_TEXTURE_3D: gs_texture_type = 1;
1010pub const gs_texture_type_GS_TEXTURE_CUBE: gs_texture_type = 2;
1011pub type gs_texture_type = ::std::os::raw::c_int;
1012#[repr(C)]
1013#[derive(Debug, Copy, Clone)]
1014pub struct gs_device_loss {
1015    pub device_loss_release:
1016        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
1017    pub device_loss_rebuild: ::std::option::Option<
1018        unsafe extern "C" fn(
1019            device: *mut ::std::os::raw::c_void,
1020            data: *mut ::std::os::raw::c_void,
1021        ),
1022    >,
1023    pub data: *mut ::std::os::raw::c_void,
1024}
1025#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1026const _: () = {
1027    ["Size of gs_device_loss"][::std::mem::size_of::<gs_device_loss>() - 24usize];
1028    ["Alignment of gs_device_loss"][::std::mem::align_of::<gs_device_loss>() - 8usize];
1029    ["Offset of field: gs_device_loss::device_loss_release"]
1030        [::std::mem::offset_of!(gs_device_loss, device_loss_release) - 0usize];
1031    ["Offset of field: gs_device_loss::device_loss_rebuild"]
1032        [::std::mem::offset_of!(gs_device_loss, device_loss_rebuild) - 8usize];
1033    ["Offset of field: gs_device_loss::data"]
1034        [::std::mem::offset_of!(gs_device_loss, data) - 16usize];
1035};
1036#[repr(C)]
1037#[derive(Debug, Copy, Clone)]
1038pub struct gs_monitor_info {
1039    pub rotation_degrees: ::std::os::raw::c_int,
1040    pub x: ::std::os::raw::c_long,
1041    pub y: ::std::os::raw::c_long,
1042    pub cx: ::std::os::raw::c_long,
1043    pub cy: ::std::os::raw::c_long,
1044}
1045#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1046const _: () = {
1047    ["Size of gs_monitor_info"][::std::mem::size_of::<gs_monitor_info>() - 20usize];
1048    ["Alignment of gs_monitor_info"][::std::mem::align_of::<gs_monitor_info>() - 4usize];
1049    ["Offset of field: gs_monitor_info::rotation_degrees"]
1050        [::std::mem::offset_of!(gs_monitor_info, rotation_degrees) - 0usize];
1051    ["Offset of field: gs_monitor_info::x"][::std::mem::offset_of!(gs_monitor_info, x) - 4usize];
1052    ["Offset of field: gs_monitor_info::y"][::std::mem::offset_of!(gs_monitor_info, y) - 8usize];
1053    ["Offset of field: gs_monitor_info::cx"][::std::mem::offset_of!(gs_monitor_info, cx) - 12usize];
1054    ["Offset of field: gs_monitor_info::cy"][::std::mem::offset_of!(gs_monitor_info, cy) - 16usize];
1055};
1056#[repr(C)]
1057pub struct gs_tvertarray {
1058    pub width: usize,
1059    pub array: *mut ::std::os::raw::c_void,
1060}
1061#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1062const _: () = {
1063    ["Size of gs_tvertarray"][::std::mem::size_of::<gs_tvertarray>() - 16usize];
1064    ["Alignment of gs_tvertarray"][::std::mem::align_of::<gs_tvertarray>() - 8usize];
1065    ["Offset of field: gs_tvertarray::width"]
1066        [::std::mem::offset_of!(gs_tvertarray, width) - 0usize];
1067    ["Offset of field: gs_tvertarray::array"]
1068        [::std::mem::offset_of!(gs_tvertarray, array) - 8usize];
1069};
1070#[repr(C)]
1071pub struct gs_vb_data {
1072    pub num: usize,
1073    pub points: *mut vec3,
1074    pub normals: *mut vec3,
1075    pub tangents: *mut vec3,
1076    pub colors: *mut u32,
1077    pub num_tex: usize,
1078    pub tvarray: *mut gs_tvertarray,
1079}
1080#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1081const _: () = {
1082    ["Size of gs_vb_data"][::std::mem::size_of::<gs_vb_data>() - 56usize];
1083    ["Alignment of gs_vb_data"][::std::mem::align_of::<gs_vb_data>() - 8usize];
1084    ["Offset of field: gs_vb_data::num"][::std::mem::offset_of!(gs_vb_data, num) - 0usize];
1085    ["Offset of field: gs_vb_data::points"][::std::mem::offset_of!(gs_vb_data, points) - 8usize];
1086    ["Offset of field: gs_vb_data::normals"][::std::mem::offset_of!(gs_vb_data, normals) - 16usize];
1087    ["Offset of field: gs_vb_data::tangents"]
1088        [::std::mem::offset_of!(gs_vb_data, tangents) - 24usize];
1089    ["Offset of field: gs_vb_data::colors"][::std::mem::offset_of!(gs_vb_data, colors) - 32usize];
1090    ["Offset of field: gs_vb_data::num_tex"][::std::mem::offset_of!(gs_vb_data, num_tex) - 40usize];
1091    ["Offset of field: gs_vb_data::tvarray"][::std::mem::offset_of!(gs_vb_data, tvarray) - 48usize];
1092};
1093#[repr(C)]
1094pub struct gs_sampler_info {
1095    pub filter: gs_sample_filter,
1096    pub address_u: gs_address_mode,
1097    pub address_v: gs_address_mode,
1098    pub address_w: gs_address_mode,
1099    pub max_anisotropy: ::std::os::raw::c_int,
1100    pub border_color: u32,
1101}
1102#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1103const _: () = {
1104    ["Size of gs_sampler_info"][::std::mem::size_of::<gs_sampler_info>() - 24usize];
1105    ["Alignment of gs_sampler_info"][::std::mem::align_of::<gs_sampler_info>() - 4usize];
1106    ["Offset of field: gs_sampler_info::filter"]
1107        [::std::mem::offset_of!(gs_sampler_info, filter) - 0usize];
1108    ["Offset of field: gs_sampler_info::address_u"]
1109        [::std::mem::offset_of!(gs_sampler_info, address_u) - 4usize];
1110    ["Offset of field: gs_sampler_info::address_v"]
1111        [::std::mem::offset_of!(gs_sampler_info, address_v) - 8usize];
1112    ["Offset of field: gs_sampler_info::address_w"]
1113        [::std::mem::offset_of!(gs_sampler_info, address_w) - 12usize];
1114    ["Offset of field: gs_sampler_info::max_anisotropy"]
1115        [::std::mem::offset_of!(gs_sampler_info, max_anisotropy) - 16usize];
1116    ["Offset of field: gs_sampler_info::border_color"]
1117        [::std::mem::offset_of!(gs_sampler_info, border_color) - 20usize];
1118};
1119#[repr(C)]
1120pub struct gs_display_mode {
1121    pub width: u32,
1122    pub height: u32,
1123    pub bits: u32,
1124    pub freq: u32,
1125}
1126#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1127const _: () = {
1128    ["Size of gs_display_mode"][::std::mem::size_of::<gs_display_mode>() - 16usize];
1129    ["Alignment of gs_display_mode"][::std::mem::align_of::<gs_display_mode>() - 4usize];
1130    ["Offset of field: gs_display_mode::width"]
1131        [::std::mem::offset_of!(gs_display_mode, width) - 0usize];
1132    ["Offset of field: gs_display_mode::height"]
1133        [::std::mem::offset_of!(gs_display_mode, height) - 4usize];
1134    ["Offset of field: gs_display_mode::bits"]
1135        [::std::mem::offset_of!(gs_display_mode, bits) - 8usize];
1136    ["Offset of field: gs_display_mode::freq"]
1137        [::std::mem::offset_of!(gs_display_mode, freq) - 12usize];
1138};
1139#[repr(C)]
1140#[derive(Debug, Copy, Clone)]
1141pub struct gs_rect {
1142    pub x: ::std::os::raw::c_int,
1143    pub y: ::std::os::raw::c_int,
1144    pub cx: ::std::os::raw::c_int,
1145    pub cy: ::std::os::raw::c_int,
1146}
1147#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1148const _: () = {
1149    ["Size of gs_rect"][::std::mem::size_of::<gs_rect>() - 16usize];
1150    ["Alignment of gs_rect"][::std::mem::align_of::<gs_rect>() - 4usize];
1151    ["Offset of field: gs_rect::x"][::std::mem::offset_of!(gs_rect, x) - 0usize];
1152    ["Offset of field: gs_rect::y"][::std::mem::offset_of!(gs_rect, y) - 4usize];
1153    ["Offset of field: gs_rect::cx"][::std::mem::offset_of!(gs_rect, cx) - 8usize];
1154    ["Offset of field: gs_rect::cy"][::std::mem::offset_of!(gs_rect, cy) - 12usize];
1155};
1156#[repr(C)]
1157#[derive(Debug, Copy, Clone)]
1158pub struct gs_texture {
1159    _unused: [u8; 0],
1160}
1161#[repr(C)]
1162#[derive(Debug, Copy, Clone)]
1163pub struct gs_stage_surface {
1164    _unused: [u8; 0],
1165}
1166#[repr(C)]
1167#[derive(Debug, Copy, Clone)]
1168pub struct gs_zstencil_buffer {
1169    _unused: [u8; 0],
1170}
1171#[repr(C)]
1172#[derive(Debug, Copy, Clone)]
1173pub struct gs_vertex_buffer {
1174    _unused: [u8; 0],
1175}
1176#[repr(C)]
1177#[derive(Debug, Copy, Clone)]
1178pub struct gs_index_buffer {
1179    _unused: [u8; 0],
1180}
1181#[repr(C)]
1182#[derive(Debug, Copy, Clone)]
1183pub struct gs_sampler_state {
1184    _unused: [u8; 0],
1185}
1186#[repr(C)]
1187#[derive(Debug, Copy, Clone)]
1188pub struct gs_shader {
1189    _unused: [u8; 0],
1190}
1191#[repr(C)]
1192#[derive(Debug, Copy, Clone)]
1193pub struct gs_swap_chain {
1194    _unused: [u8; 0],
1195}
1196#[repr(C)]
1197#[derive(Debug, Copy, Clone)]
1198pub struct gs_timer {
1199    _unused: [u8; 0],
1200}
1201#[repr(C)]
1202#[derive(Debug, Copy, Clone)]
1203pub struct gs_texrender {
1204    _unused: [u8; 0],
1205}
1206#[repr(C)]
1207#[derive(Debug, Copy, Clone)]
1208pub struct gs_shader_param {
1209    _unused: [u8; 0],
1210}
1211#[repr(C)]
1212#[derive(Debug, Copy, Clone)]
1213pub struct gs_effect {
1214    _unused: [u8; 0],
1215}
1216#[repr(C)]
1217#[derive(Debug, Copy, Clone)]
1218pub struct gs_effect_technique {
1219    _unused: [u8; 0],
1220}
1221#[repr(C)]
1222#[derive(Debug, Copy, Clone)]
1223pub struct gs_effect_pass {
1224    _unused: [u8; 0],
1225}
1226#[repr(C)]
1227#[derive(Debug, Copy, Clone)]
1228pub struct gs_effect_param {
1229    _unused: [u8; 0],
1230}
1231#[repr(C)]
1232#[derive(Debug, Copy, Clone)]
1233pub struct gs_device {
1234    _unused: [u8; 0],
1235}
1236#[repr(C)]
1237#[derive(Debug, Copy, Clone)]
1238pub struct graphics_subsystem {
1239    _unused: [u8; 0],
1240}
1241pub type gs_texture_t = gs_texture;
1242pub type gs_stagesurf_t = gs_stage_surface;
1243pub type gs_zstencil_t = gs_zstencil_buffer;
1244pub type gs_vertbuffer_t = gs_vertex_buffer;
1245pub type gs_indexbuffer_t = gs_index_buffer;
1246pub type gs_samplerstate_t = gs_sampler_state;
1247pub type gs_swapchain_t = gs_swap_chain;
1248pub type gs_timer_t = gs_timer;
1249#[repr(C)]
1250#[derive(Debug, Copy, Clone)]
1251pub struct gs_timer_range {
1252    _unused: [u8; 0],
1253}
1254pub type gs_timer_range_t = gs_timer_range;
1255#[repr(C)]
1256#[derive(Debug, Copy, Clone)]
1257pub struct gs_texture_render {
1258    _unused: [u8; 0],
1259}
1260pub type gs_texrender_t = gs_texture_render;
1261pub type gs_shader_t = gs_shader;
1262pub type gs_sparam_t = gs_shader_param;
1263pub type gs_effect_t = gs_effect;
1264pub type gs_technique_t = gs_effect_technique;
1265pub type gs_epass_t = gs_effect_pass;
1266pub type gs_eparam_t = gs_effect_param;
1267pub type gs_device_t = gs_device;
1268pub type gs_sync_t = ::std::os::raw::c_void;
1269pub type graphics_t = graphics_subsystem;
1270pub const gs_shader_param_type_GS_SHADER_PARAM_UNKNOWN: gs_shader_param_type = 0;
1271pub const gs_shader_param_type_GS_SHADER_PARAM_BOOL: gs_shader_param_type = 1;
1272pub const gs_shader_param_type_GS_SHADER_PARAM_FLOAT: gs_shader_param_type = 2;
1273pub const gs_shader_param_type_GS_SHADER_PARAM_INT: gs_shader_param_type = 3;
1274pub const gs_shader_param_type_GS_SHADER_PARAM_STRING: gs_shader_param_type = 4;
1275pub const gs_shader_param_type_GS_SHADER_PARAM_VEC2: gs_shader_param_type = 5;
1276pub const gs_shader_param_type_GS_SHADER_PARAM_VEC3: gs_shader_param_type = 6;
1277pub const gs_shader_param_type_GS_SHADER_PARAM_VEC4: gs_shader_param_type = 7;
1278pub const gs_shader_param_type_GS_SHADER_PARAM_INT2: gs_shader_param_type = 8;
1279pub const gs_shader_param_type_GS_SHADER_PARAM_INT3: gs_shader_param_type = 9;
1280pub const gs_shader_param_type_GS_SHADER_PARAM_INT4: gs_shader_param_type = 10;
1281pub const gs_shader_param_type_GS_SHADER_PARAM_MATRIX4X4: gs_shader_param_type = 11;
1282pub const gs_shader_param_type_GS_SHADER_PARAM_TEXTURE: gs_shader_param_type = 12;
1283pub type gs_shader_param_type = ::std::os::raw::c_int;
1284#[repr(C)]
1285#[derive(Debug, Copy, Clone)]
1286pub struct gs_shader_texture {
1287    pub tex: *mut gs_texture_t,
1288    pub srgb: bool,
1289}
1290#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1291const _: () = {
1292    ["Size of gs_shader_texture"][::std::mem::size_of::<gs_shader_texture>() - 16usize];
1293    ["Alignment of gs_shader_texture"][::std::mem::align_of::<gs_shader_texture>() - 8usize];
1294    ["Offset of field: gs_shader_texture::tex"]
1295        [::std::mem::offset_of!(gs_shader_texture, tex) - 0usize];
1296    ["Offset of field: gs_shader_texture::srgb"]
1297        [::std::mem::offset_of!(gs_shader_texture, srgb) - 8usize];
1298};
1299#[repr(C)]
1300#[derive(Debug, Copy, Clone)]
1301pub struct gs_shader_param_info {
1302    pub type_: gs_shader_param_type,
1303    pub name: *const ::std::os::raw::c_char,
1304}
1305#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1306const _: () = {
1307    ["Size of gs_shader_param_info"][::std::mem::size_of::<gs_shader_param_info>() - 16usize];
1308    ["Alignment of gs_shader_param_info"][::std::mem::align_of::<gs_shader_param_info>() - 8usize];
1309    ["Offset of field: gs_shader_param_info::type_"]
1310        [::std::mem::offset_of!(gs_shader_param_info, type_) - 0usize];
1311    ["Offset of field: gs_shader_param_info::name"]
1312        [::std::mem::offset_of!(gs_shader_param_info, name) - 8usize];
1313};
1314pub const gs_shader_type_GS_SHADER_VERTEX: gs_shader_type = 0;
1315pub const gs_shader_type_GS_SHADER_PIXEL: gs_shader_type = 1;
1316pub type gs_shader_type = ::std::os::raw::c_int;
1317#[repr(C)]
1318#[derive(Debug, Copy, Clone)]
1319pub struct gs_effect_param_info {
1320    pub name: *const ::std::os::raw::c_char,
1321    pub type_: gs_shader_param_type,
1322}
1323#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1324const _: () = {
1325    ["Size of gs_effect_param_info"][::std::mem::size_of::<gs_effect_param_info>() - 16usize];
1326    ["Alignment of gs_effect_param_info"][::std::mem::align_of::<gs_effect_param_info>() - 8usize];
1327    ["Offset of field: gs_effect_param_info::name"]
1328        [::std::mem::offset_of!(gs_effect_param_info, name) - 0usize];
1329    ["Offset of field: gs_effect_param_info::type_"]
1330        [::std::mem::offset_of!(gs_effect_param_info, type_) - 8usize];
1331};
1332#[repr(C)]
1333#[derive(Debug, Copy, Clone)]
1334pub struct gs_window {
1335    pub hwnd: *mut ::std::os::raw::c_void,
1336}
1337#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1338const _: () = {
1339    ["Size of gs_window"][::std::mem::size_of::<gs_window>() - 8usize];
1340    ["Alignment of gs_window"][::std::mem::align_of::<gs_window>() - 8usize];
1341    ["Offset of field: gs_window::hwnd"][::std::mem::offset_of!(gs_window, hwnd) - 0usize];
1342};
1343#[repr(C)]
1344pub struct gs_init_data {
1345    pub window: gs_window,
1346    pub cx: u32,
1347    pub cy: u32,
1348    pub num_backbuffers: u32,
1349    pub format: gs_color_format,
1350    pub zsformat: gs_zstencil_format,
1351    pub adapter: u32,
1352}
1353#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1354const _: () = {
1355    ["Size of gs_init_data"][::std::mem::size_of::<gs_init_data>() - 32usize];
1356    ["Alignment of gs_init_data"][::std::mem::align_of::<gs_init_data>() - 8usize];
1357    ["Offset of field: gs_init_data::window"]
1358        [::std::mem::offset_of!(gs_init_data, window) - 0usize];
1359    ["Offset of field: gs_init_data::cx"][::std::mem::offset_of!(gs_init_data, cx) - 8usize];
1360    ["Offset of field: gs_init_data::cy"][::std::mem::offset_of!(gs_init_data, cy) - 12usize];
1361    ["Offset of field: gs_init_data::num_backbuffers"]
1362        [::std::mem::offset_of!(gs_init_data, num_backbuffers) - 16usize];
1363    ["Offset of field: gs_init_data::format"]
1364        [::std::mem::offset_of!(gs_init_data, format) - 20usize];
1365    ["Offset of field: gs_init_data::zsformat"]
1366        [::std::mem::offset_of!(gs_init_data, zsformat) - 24usize];
1367    ["Offset of field: gs_init_data::adapter"]
1368        [::std::mem::offset_of!(gs_init_data, adapter) - 28usize];
1369};
1370pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_STRAIGHT: gs_image_alpha_mode = 0;
1371pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_PREMULTIPLY_SRGB: gs_image_alpha_mode = 1;
1372pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_PREMULTIPLY: gs_image_alpha_mode = 2;
1373pub type gs_image_alpha_mode = ::std::os::raw::c_int;
1374#[repr(C)]
1375#[derive(Debug, Copy, Clone)]
1376pub struct gs_duplicator {
1377    _unused: [u8; 0],
1378}
1379pub type gs_duplicator_t = gs_duplicator;
1380#[repr(C)]
1381#[derive(Copy, Clone)]
1382pub struct vec2 {
1383    pub __bindgen_anon_1: vec2__bindgen_ty_1,
1384}
1385#[repr(C)]
1386#[derive(Copy, Clone)]
1387pub union vec2__bindgen_ty_1 {
1388    pub __bindgen_anon_1: vec2__bindgen_ty_1__bindgen_ty_1,
1389    pub ptr: [f32; 2usize],
1390}
1391#[repr(C)]
1392#[derive(Debug, Copy, Clone)]
1393pub struct vec2__bindgen_ty_1__bindgen_ty_1 {
1394    pub x: f32,
1395    pub y: f32,
1396}
1397#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1398const _: () = {
1399    ["Size of vec2__bindgen_ty_1__bindgen_ty_1"]
1400        [::std::mem::size_of::<vec2__bindgen_ty_1__bindgen_ty_1>() - 8usize];
1401    ["Alignment of vec2__bindgen_ty_1__bindgen_ty_1"]
1402        [::std::mem::align_of::<vec2__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1403    ["Offset of field: vec2__bindgen_ty_1__bindgen_ty_1::x"]
1404        [::std::mem::offset_of!(vec2__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1405    ["Offset of field: vec2__bindgen_ty_1__bindgen_ty_1::y"]
1406        [::std::mem::offset_of!(vec2__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1407};
1408#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1409const _: () = {
1410    ["Size of vec2__bindgen_ty_1"][::std::mem::size_of::<vec2__bindgen_ty_1>() - 8usize];
1411    ["Alignment of vec2__bindgen_ty_1"][::std::mem::align_of::<vec2__bindgen_ty_1>() - 4usize];
1412    ["Offset of field: vec2__bindgen_ty_1::ptr"]
1413        [::std::mem::offset_of!(vec2__bindgen_ty_1, ptr) - 0usize];
1414};
1415#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1416const _: () = {
1417    ["Size of vec2"][::std::mem::size_of::<vec2>() - 8usize];
1418    ["Alignment of vec2"][::std::mem::align_of::<vec2>() - 4usize];
1419};
1420#[repr(C)]
1421#[repr(align(16))]
1422#[derive(Copy, Clone)]
1423pub struct vec4 {
1424    pub __bindgen_anon_1: vec4__bindgen_ty_1,
1425}
1426#[repr(C)]
1427#[repr(align(16))]
1428#[derive(Copy, Clone)]
1429pub union vec4__bindgen_ty_1 {
1430    pub __bindgen_anon_1: vec4__bindgen_ty_1__bindgen_ty_1,
1431    pub ptr: [f32; 4usize],
1432    pub m: __m128,
1433}
1434#[repr(C)]
1435#[derive(Debug, Copy, Clone)]
1436pub struct vec4__bindgen_ty_1__bindgen_ty_1 {
1437    pub x: f32,
1438    pub y: f32,
1439    pub z: f32,
1440    pub w: f32,
1441}
1442#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1443const _: () = {
1444    ["Size of vec4__bindgen_ty_1__bindgen_ty_1"]
1445        [::std::mem::size_of::<vec4__bindgen_ty_1__bindgen_ty_1>() - 16usize];
1446    ["Alignment of vec4__bindgen_ty_1__bindgen_ty_1"]
1447        [::std::mem::align_of::<vec4__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1448    ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::x"]
1449        [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1450    ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::y"]
1451        [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1452    ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::z"]
1453        [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, z) - 8usize];
1454    ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::w"]
1455        [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, w) - 12usize];
1456};
1457#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1458const _: () = {
1459    ["Size of vec4__bindgen_ty_1"][::std::mem::size_of::<vec4__bindgen_ty_1>() - 16usize];
1460    ["Alignment of vec4__bindgen_ty_1"][::std::mem::align_of::<vec4__bindgen_ty_1>() - 16usize];
1461    ["Offset of field: vec4__bindgen_ty_1::ptr"]
1462        [::std::mem::offset_of!(vec4__bindgen_ty_1, ptr) - 0usize];
1463    ["Offset of field: vec4__bindgen_ty_1::m"]
1464        [::std::mem::offset_of!(vec4__bindgen_ty_1, m) - 0usize];
1465};
1466#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1467const _: () = {
1468    ["Size of vec4"][::std::mem::size_of::<vec4>() - 16usize];
1469    ["Alignment of vec4"][::std::mem::align_of::<vec4>() - 16usize];
1470};
1471#[repr(C)]
1472#[repr(align(16))]
1473#[derive(Copy, Clone)]
1474pub struct vec3 {
1475    pub __bindgen_anon_1: vec3__bindgen_ty_1,
1476}
1477#[repr(C)]
1478#[repr(align(16))]
1479#[derive(Copy, Clone)]
1480pub union vec3__bindgen_ty_1 {
1481    pub __bindgen_anon_1: vec3__bindgen_ty_1__bindgen_ty_1,
1482    pub ptr: [f32; 4usize],
1483    pub m: __m128,
1484}
1485#[repr(C)]
1486#[derive(Debug, Copy, Clone)]
1487pub struct vec3__bindgen_ty_1__bindgen_ty_1 {
1488    pub x: f32,
1489    pub y: f32,
1490    pub z: f32,
1491    pub w: f32,
1492}
1493#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1494const _: () = {
1495    ["Size of vec3__bindgen_ty_1__bindgen_ty_1"]
1496        [::std::mem::size_of::<vec3__bindgen_ty_1__bindgen_ty_1>() - 16usize];
1497    ["Alignment of vec3__bindgen_ty_1__bindgen_ty_1"]
1498        [::std::mem::align_of::<vec3__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1499    ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::x"]
1500        [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1501    ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::y"]
1502        [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1503    ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::z"]
1504        [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, z) - 8usize];
1505    ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::w"]
1506        [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, w) - 12usize];
1507};
1508#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1509const _: () = {
1510    ["Size of vec3__bindgen_ty_1"][::std::mem::size_of::<vec3__bindgen_ty_1>() - 16usize];
1511    ["Alignment of vec3__bindgen_ty_1"][::std::mem::align_of::<vec3__bindgen_ty_1>() - 16usize];
1512    ["Offset of field: vec3__bindgen_ty_1::ptr"]
1513        [::std::mem::offset_of!(vec3__bindgen_ty_1, ptr) - 0usize];
1514    ["Offset of field: vec3__bindgen_ty_1::m"]
1515        [::std::mem::offset_of!(vec3__bindgen_ty_1, m) - 0usize];
1516};
1517#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1518const _: () = {
1519    ["Size of vec3"][::std::mem::size_of::<vec3>() - 16usize];
1520    ["Alignment of vec3"][::std::mem::align_of::<vec3>() - 16usize];
1521};
1522#[repr(C)]
1523#[derive(Debug, Copy, Clone)]
1524pub struct audio_output {
1525    _unused: [u8; 0],
1526}
1527pub type audio_t = audio_output;
1528pub const audio_format_AUDIO_FORMAT_UNKNOWN: audio_format = 0;
1529pub const audio_format_AUDIO_FORMAT_U8BIT: audio_format = 1;
1530pub const audio_format_AUDIO_FORMAT_16BIT: audio_format = 2;
1531pub const audio_format_AUDIO_FORMAT_32BIT: audio_format = 3;
1532pub const audio_format_AUDIO_FORMAT_FLOAT: audio_format = 4;
1533pub const audio_format_AUDIO_FORMAT_U8BIT_PLANAR: audio_format = 5;
1534pub const audio_format_AUDIO_FORMAT_16BIT_PLANAR: audio_format = 6;
1535pub const audio_format_AUDIO_FORMAT_32BIT_PLANAR: audio_format = 7;
1536pub const audio_format_AUDIO_FORMAT_FLOAT_PLANAR: audio_format = 8;
1537pub type audio_format = ::std::os::raw::c_int;
1538#[doc = "< Unknown setting, fallback is stereo."]
1539pub const speaker_layout_SPEAKERS_UNKNOWN: speaker_layout = 0;
1540#[doc = "< Channels: MONO"]
1541pub const speaker_layout_SPEAKERS_MONO: speaker_layout = 1;
1542#[doc = "< Channels: FL, FR"]
1543pub const speaker_layout_SPEAKERS_STEREO: speaker_layout = 2;
1544#[doc = "< Channels: FL, FR, LFE"]
1545pub const speaker_layout_SPEAKERS_2POINT1: speaker_layout = 3;
1546#[doc = "< Channels: FL, FR, FC, RC"]
1547pub const speaker_layout_SPEAKERS_4POINT0: speaker_layout = 4;
1548#[doc = "< Channels: FL, FR, FC, LFE, RC"]
1549pub const speaker_layout_SPEAKERS_4POINT1: speaker_layout = 5;
1550#[doc = "< Channels: FL, FR, FC, LFE, RL, RR"]
1551pub const speaker_layout_SPEAKERS_5POINT1: speaker_layout = 6;
1552#[doc = "< Channels: FL, FR, FC, LFE, RL, RR, SL, SR"]
1553pub const speaker_layout_SPEAKERS_7POINT1: speaker_layout = 8;
1554#[doc = " The speaker layout describes where the speakers are located in the room.\n For OBS it dictates:\n  *  how many channels are available and\n  *  which channels are used for which speakers.\n\n Standard channel layouts where retrieved from ffmpeg documentation at:\n     https://trac.ffmpeg.org/wiki/AudioChannelManipulation"]
1555pub type speaker_layout = ::std::os::raw::c_int;
1556#[repr(C)]
1557pub struct audio_data {
1558    pub data: [*mut u8; 8usize],
1559    pub frames: u32,
1560    pub timestamp: u64,
1561}
1562#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1563const _: () = {
1564    ["Size of audio_data"][::std::mem::size_of::<audio_data>() - 80usize];
1565    ["Alignment of audio_data"][::std::mem::align_of::<audio_data>() - 8usize];
1566    ["Offset of field: audio_data::data"][::std::mem::offset_of!(audio_data, data) - 0usize];
1567    ["Offset of field: audio_data::frames"][::std::mem::offset_of!(audio_data, frames) - 64usize];
1568    ["Offset of field: audio_data::timestamp"]
1569        [::std::mem::offset_of!(audio_data, timestamp) - 72usize];
1570};
1571#[repr(C)]
1572#[derive(Debug, Copy, Clone)]
1573pub struct audio_output_data {
1574    pub data: [*mut f32; 8usize],
1575}
1576#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1577const _: () = {
1578    ["Size of audio_output_data"][::std::mem::size_of::<audio_output_data>() - 64usize];
1579    ["Alignment of audio_output_data"][::std::mem::align_of::<audio_output_data>() - 8usize];
1580    ["Offset of field: audio_output_data::data"]
1581        [::std::mem::offset_of!(audio_output_data, data) - 0usize];
1582};
1583pub type audio_input_callback_t = ::std::option::Option<
1584    unsafe extern "C" fn(
1585        param: *mut ::std::os::raw::c_void,
1586        start_ts: u64,
1587        end_ts: u64,
1588        new_ts: *mut u64,
1589        active_mixers: u32,
1590        mixes: *mut audio_output_data,
1591    ) -> bool,
1592>;
1593#[repr(C)]
1594pub struct audio_output_info {
1595    pub name: *const ::std::os::raw::c_char,
1596    pub samples_per_sec: u32,
1597    pub format: audio_format,
1598    pub speakers: speaker_layout,
1599    pub input_callback: audio_input_callback_t,
1600    pub input_param: *mut ::std::os::raw::c_void,
1601}
1602#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1603const _: () = {
1604    ["Size of audio_output_info"][::std::mem::size_of::<audio_output_info>() - 40usize];
1605    ["Alignment of audio_output_info"][::std::mem::align_of::<audio_output_info>() - 8usize];
1606    ["Offset of field: audio_output_info::name"]
1607        [::std::mem::offset_of!(audio_output_info, name) - 0usize];
1608    ["Offset of field: audio_output_info::samples_per_sec"]
1609        [::std::mem::offset_of!(audio_output_info, samples_per_sec) - 8usize];
1610    ["Offset of field: audio_output_info::format"]
1611        [::std::mem::offset_of!(audio_output_info, format) - 12usize];
1612    ["Offset of field: audio_output_info::speakers"]
1613        [::std::mem::offset_of!(audio_output_info, speakers) - 16usize];
1614    ["Offset of field: audio_output_info::input_callback"]
1615        [::std::mem::offset_of!(audio_output_info, input_callback) - 24usize];
1616    ["Offset of field: audio_output_info::input_param"]
1617        [::std::mem::offset_of!(audio_output_info, input_param) - 32usize];
1618};
1619#[repr(C)]
1620pub struct audio_convert_info {
1621    pub samples_per_sec: u32,
1622    pub format: audio_format,
1623    pub speakers: speaker_layout,
1624    pub allow_clipping: bool,
1625}
1626#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1627const _: () = {
1628    ["Size of audio_convert_info"][::std::mem::size_of::<audio_convert_info>() - 16usize];
1629    ["Alignment of audio_convert_info"][::std::mem::align_of::<audio_convert_info>() - 4usize];
1630    ["Offset of field: audio_convert_info::samples_per_sec"]
1631        [::std::mem::offset_of!(audio_convert_info, samples_per_sec) - 0usize];
1632    ["Offset of field: audio_convert_info::format"]
1633        [::std::mem::offset_of!(audio_convert_info, format) - 4usize];
1634    ["Offset of field: audio_convert_info::speakers"]
1635        [::std::mem::offset_of!(audio_convert_info, speakers) - 8usize];
1636    ["Offset of field: audio_convert_info::allow_clipping"]
1637        [::std::mem::offset_of!(audio_convert_info, allow_clipping) - 12usize];
1638};
1639pub type audio_output_callback_t = ::std::option::Option<
1640    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, mix_idx: usize, data: *mut audio_data),
1641>;
1642#[repr(C)]
1643#[derive(Debug, Copy, Clone)]
1644pub struct video_frame {
1645    _unused: [u8; 0],
1646}
1647#[repr(C)]
1648#[derive(Debug, Copy, Clone)]
1649pub struct video_output {
1650    _unused: [u8; 0],
1651}
1652pub type video_t = video_output;
1653pub const video_format_VIDEO_FORMAT_NONE: video_format = 0;
1654pub const video_format_VIDEO_FORMAT_I420: video_format = 1;
1655pub const video_format_VIDEO_FORMAT_NV12: video_format = 2;
1656pub const video_format_VIDEO_FORMAT_YVYU: video_format = 3;
1657pub const video_format_VIDEO_FORMAT_YUY2: video_format = 4;
1658pub const video_format_VIDEO_FORMAT_UYVY: video_format = 5;
1659pub const video_format_VIDEO_FORMAT_RGBA: video_format = 6;
1660pub const video_format_VIDEO_FORMAT_BGRA: video_format = 7;
1661pub const video_format_VIDEO_FORMAT_BGRX: video_format = 8;
1662pub const video_format_VIDEO_FORMAT_Y800: video_format = 9;
1663pub const video_format_VIDEO_FORMAT_I444: video_format = 10;
1664pub const video_format_VIDEO_FORMAT_BGR3: video_format = 11;
1665pub const video_format_VIDEO_FORMAT_I422: video_format = 12;
1666pub const video_format_VIDEO_FORMAT_I40A: video_format = 13;
1667pub const video_format_VIDEO_FORMAT_I42A: video_format = 14;
1668pub const video_format_VIDEO_FORMAT_YUVA: video_format = 15;
1669pub const video_format_VIDEO_FORMAT_AYUV: video_format = 16;
1670pub const video_format_VIDEO_FORMAT_I010: video_format = 17;
1671pub const video_format_VIDEO_FORMAT_P010: video_format = 18;
1672pub const video_format_VIDEO_FORMAT_I210: video_format = 19;
1673pub const video_format_VIDEO_FORMAT_I412: video_format = 20;
1674pub const video_format_VIDEO_FORMAT_YA2L: video_format = 21;
1675pub const video_format_VIDEO_FORMAT_P216: video_format = 22;
1676pub const video_format_VIDEO_FORMAT_P416: video_format = 23;
1677pub const video_format_VIDEO_FORMAT_V210: video_format = 24;
1678pub const video_format_VIDEO_FORMAT_R10L: video_format = 25;
1679pub type video_format = ::std::os::raw::c_int;
1680pub const video_trc_VIDEO_TRC_DEFAULT: video_trc = 0;
1681pub const video_trc_VIDEO_TRC_SRGB: video_trc = 1;
1682pub const video_trc_VIDEO_TRC_PQ: video_trc = 2;
1683pub const video_trc_VIDEO_TRC_HLG: video_trc = 3;
1684pub type video_trc = ::std::os::raw::c_int;
1685pub const video_colorspace_VIDEO_CS_DEFAULT: video_colorspace = 0;
1686pub const video_colorspace_VIDEO_CS_601: video_colorspace = 1;
1687pub const video_colorspace_VIDEO_CS_709: video_colorspace = 2;
1688pub const video_colorspace_VIDEO_CS_SRGB: video_colorspace = 3;
1689pub const video_colorspace_VIDEO_CS_2100_PQ: video_colorspace = 4;
1690pub const video_colorspace_VIDEO_CS_2100_HLG: video_colorspace = 5;
1691pub type video_colorspace = ::std::os::raw::c_int;
1692pub const video_range_type_VIDEO_RANGE_DEFAULT: video_range_type = 0;
1693pub const video_range_type_VIDEO_RANGE_PARTIAL: video_range_type = 1;
1694pub const video_range_type_VIDEO_RANGE_FULL: video_range_type = 2;
1695pub type video_range_type = ::std::os::raw::c_int;
1696#[repr(C)]
1697pub struct video_data {
1698    pub data: [*mut u8; 8usize],
1699    pub linesize: [u32; 8usize],
1700    pub timestamp: u64,
1701}
1702#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1703const _: () = {
1704    ["Size of video_data"][::std::mem::size_of::<video_data>() - 104usize];
1705    ["Alignment of video_data"][::std::mem::align_of::<video_data>() - 8usize];
1706    ["Offset of field: video_data::data"][::std::mem::offset_of!(video_data, data) - 0usize];
1707    ["Offset of field: video_data::linesize"]
1708        [::std::mem::offset_of!(video_data, linesize) - 64usize];
1709    ["Offset of field: video_data::timestamp"]
1710        [::std::mem::offset_of!(video_data, timestamp) - 96usize];
1711};
1712#[repr(C)]
1713pub struct video_output_info {
1714    pub name: *const ::std::os::raw::c_char,
1715    pub format: video_format,
1716    pub fps_num: u32,
1717    pub fps_den: u32,
1718    pub width: u32,
1719    pub height: u32,
1720    pub cache_size: usize,
1721    pub colorspace: video_colorspace,
1722    pub range: video_range_type,
1723}
1724#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1725const _: () = {
1726    ["Size of video_output_info"][::std::mem::size_of::<video_output_info>() - 48usize];
1727    ["Alignment of video_output_info"][::std::mem::align_of::<video_output_info>() - 8usize];
1728    ["Offset of field: video_output_info::name"]
1729        [::std::mem::offset_of!(video_output_info, name) - 0usize];
1730    ["Offset of field: video_output_info::format"]
1731        [::std::mem::offset_of!(video_output_info, format) - 8usize];
1732    ["Offset of field: video_output_info::fps_num"]
1733        [::std::mem::offset_of!(video_output_info, fps_num) - 12usize];
1734    ["Offset of field: video_output_info::fps_den"]
1735        [::std::mem::offset_of!(video_output_info, fps_den) - 16usize];
1736    ["Offset of field: video_output_info::width"]
1737        [::std::mem::offset_of!(video_output_info, width) - 20usize];
1738    ["Offset of field: video_output_info::height"]
1739        [::std::mem::offset_of!(video_output_info, height) - 24usize];
1740    ["Offset of field: video_output_info::cache_size"]
1741        [::std::mem::offset_of!(video_output_info, cache_size) - 32usize];
1742    ["Offset of field: video_output_info::colorspace"]
1743        [::std::mem::offset_of!(video_output_info, colorspace) - 40usize];
1744    ["Offset of field: video_output_info::range"]
1745        [::std::mem::offset_of!(video_output_info, range) - 44usize];
1746};
1747pub const video_scale_type_VIDEO_SCALE_DEFAULT: video_scale_type = 0;
1748pub const video_scale_type_VIDEO_SCALE_POINT: video_scale_type = 1;
1749pub const video_scale_type_VIDEO_SCALE_FAST_BILINEAR: video_scale_type = 2;
1750pub const video_scale_type_VIDEO_SCALE_BILINEAR: video_scale_type = 3;
1751pub const video_scale_type_VIDEO_SCALE_BICUBIC: video_scale_type = 4;
1752pub type video_scale_type = ::std::os::raw::c_int;
1753#[repr(C)]
1754pub struct video_scale_info {
1755    pub format: video_format,
1756    pub width: u32,
1757    pub height: u32,
1758    pub range: video_range_type,
1759    pub colorspace: video_colorspace,
1760}
1761#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1762const _: () = {
1763    ["Size of video_scale_info"][::std::mem::size_of::<video_scale_info>() - 20usize];
1764    ["Alignment of video_scale_info"][::std::mem::align_of::<video_scale_info>() - 4usize];
1765    ["Offset of field: video_scale_info::format"]
1766        [::std::mem::offset_of!(video_scale_info, format) - 0usize];
1767    ["Offset of field: video_scale_info::width"]
1768        [::std::mem::offset_of!(video_scale_info, width) - 4usize];
1769    ["Offset of field: video_scale_info::height"]
1770        [::std::mem::offset_of!(video_scale_info, height) - 8usize];
1771    ["Offset of field: video_scale_info::range"]
1772        [::std::mem::offset_of!(video_scale_info, range) - 12usize];
1773    ["Offset of field: video_scale_info::colorspace"]
1774        [::std::mem::offset_of!(video_scale_info, colorspace) - 16usize];
1775};
1776pub const call_param_type_CALL_PARAM_TYPE_VOID: call_param_type = 0;
1777pub const call_param_type_CALL_PARAM_TYPE_INT: call_param_type = 1;
1778pub const call_param_type_CALL_PARAM_TYPE_FLOAT: call_param_type = 2;
1779pub const call_param_type_CALL_PARAM_TYPE_BOOL: call_param_type = 3;
1780pub const call_param_type_CALL_PARAM_TYPE_PTR: call_param_type = 4;
1781pub const call_param_type_CALL_PARAM_TYPE_STRING: call_param_type = 5;
1782pub type call_param_type = ::std::os::raw::c_int;
1783#[repr(C)]
1784pub struct calldata {
1785    pub stack: *mut u8,
1786    pub size: usize,
1787    pub capacity: usize,
1788    pub fixed: bool,
1789}
1790#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1791const _: () = {
1792    ["Size of calldata"][::std::mem::size_of::<calldata>() - 32usize];
1793    ["Alignment of calldata"][::std::mem::align_of::<calldata>() - 8usize];
1794    ["Offset of field: calldata::stack"][::std::mem::offset_of!(calldata, stack) - 0usize];
1795    ["Offset of field: calldata::size"][::std::mem::offset_of!(calldata, size) - 8usize];
1796    ["Offset of field: calldata::capacity"][::std::mem::offset_of!(calldata, capacity) - 16usize];
1797    ["Offset of field: calldata::fixed"][::std::mem::offset_of!(calldata, fixed) - 24usize];
1798};
1799pub type calldata_t = calldata;
1800#[repr(C)]
1801#[derive(Debug, Copy, Clone)]
1802pub struct signal_handler {
1803    _unused: [u8; 0],
1804}
1805pub type signal_handler_t = signal_handler;
1806pub type global_signal_callback_t = ::std::option::Option<
1807    unsafe extern "C" fn(
1808        arg1: *mut ::std::os::raw::c_void,
1809        arg2: *const ::std::os::raw::c_char,
1810        arg3: *mut calldata_t,
1811    ),
1812>;
1813pub type signal_callback_t = ::std::option::Option<
1814    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut calldata_t),
1815>;
1816#[repr(C)]
1817#[derive(Debug, Copy, Clone)]
1818pub struct proc_handler {
1819    _unused: [u8; 0],
1820}
1821pub type proc_handler_t = proc_handler;
1822pub type proc_handler_proc_t = ::std::option::Option<
1823    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut calldata_t),
1824>;
1825#[repr(C)]
1826pub struct media_frames_per_second {
1827    pub numerator: u32,
1828    pub denominator: u32,
1829}
1830#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1831const _: () = {
1832    ["Size of media_frames_per_second"][::std::mem::size_of::<media_frames_per_second>() - 8usize];
1833    ["Alignment of media_frames_per_second"]
1834        [::std::mem::align_of::<media_frames_per_second>() - 4usize];
1835    ["Offset of field: media_frames_per_second::numerator"]
1836        [::std::mem::offset_of!(media_frames_per_second, numerator) - 0usize];
1837    ["Offset of field: media_frames_per_second::denominator"]
1838        [::std::mem::offset_of!(media_frames_per_second, denominator) - 4usize];
1839};
1840#[repr(C)]
1841#[derive(Debug, Copy, Clone)]
1842pub struct obs_data {
1843    _unused: [u8; 0],
1844}
1845#[repr(C)]
1846#[derive(Debug, Copy, Clone)]
1847pub struct obs_data_item {
1848    _unused: [u8; 0],
1849}
1850#[repr(C)]
1851#[derive(Debug, Copy, Clone)]
1852pub struct obs_data_array {
1853    _unused: [u8; 0],
1854}
1855pub type obs_data_t = obs_data;
1856pub type obs_data_item_t = obs_data_item;
1857pub type obs_data_array_t = obs_data_array;
1858pub const obs_data_type_OBS_DATA_NULL: obs_data_type = 0;
1859pub const obs_data_type_OBS_DATA_STRING: obs_data_type = 1;
1860pub const obs_data_type_OBS_DATA_NUMBER: obs_data_type = 2;
1861pub const obs_data_type_OBS_DATA_BOOLEAN: obs_data_type = 3;
1862pub const obs_data_type_OBS_DATA_OBJECT: obs_data_type = 4;
1863pub const obs_data_type_OBS_DATA_ARRAY: obs_data_type = 5;
1864pub type obs_data_type = ::std::os::raw::c_int;
1865pub const obs_data_number_type_OBS_DATA_NUM_INVALID: obs_data_number_type = 0;
1866pub const obs_data_number_type_OBS_DATA_NUM_INT: obs_data_number_type = 1;
1867pub const obs_data_number_type_OBS_DATA_NUM_DOUBLE: obs_data_number_type = 2;
1868pub type obs_data_number_type = ::std::os::raw::c_int;
1869pub const obs_property_type_OBS_PROPERTY_INVALID: obs_property_type = 0;
1870pub const obs_property_type_OBS_PROPERTY_BOOL: obs_property_type = 1;
1871pub const obs_property_type_OBS_PROPERTY_INT: obs_property_type = 2;
1872pub const obs_property_type_OBS_PROPERTY_FLOAT: obs_property_type = 3;
1873pub const obs_property_type_OBS_PROPERTY_TEXT: obs_property_type = 4;
1874pub const obs_property_type_OBS_PROPERTY_PATH: obs_property_type = 5;
1875pub const obs_property_type_OBS_PROPERTY_LIST: obs_property_type = 6;
1876pub const obs_property_type_OBS_PROPERTY_COLOR: obs_property_type = 7;
1877pub const obs_property_type_OBS_PROPERTY_BUTTON: obs_property_type = 8;
1878pub const obs_property_type_OBS_PROPERTY_FONT: obs_property_type = 9;
1879pub const obs_property_type_OBS_PROPERTY_EDITABLE_LIST: obs_property_type = 10;
1880pub const obs_property_type_OBS_PROPERTY_FRAME_RATE: obs_property_type = 11;
1881pub const obs_property_type_OBS_PROPERTY_GROUP: obs_property_type = 12;
1882pub const obs_property_type_OBS_PROPERTY_COLOR_ALPHA: obs_property_type = 13;
1883pub type obs_property_type = ::std::os::raw::c_int;
1884pub const obs_combo_format_OBS_COMBO_FORMAT_INVALID: obs_combo_format = 0;
1885pub const obs_combo_format_OBS_COMBO_FORMAT_INT: obs_combo_format = 1;
1886pub const obs_combo_format_OBS_COMBO_FORMAT_FLOAT: obs_combo_format = 2;
1887pub const obs_combo_format_OBS_COMBO_FORMAT_STRING: obs_combo_format = 3;
1888pub const obs_combo_format_OBS_COMBO_FORMAT_BOOL: obs_combo_format = 4;
1889pub type obs_combo_format = ::std::os::raw::c_int;
1890pub const obs_combo_type_OBS_COMBO_TYPE_INVALID: obs_combo_type = 0;
1891pub const obs_combo_type_OBS_COMBO_TYPE_EDITABLE: obs_combo_type = 1;
1892pub const obs_combo_type_OBS_COMBO_TYPE_LIST: obs_combo_type = 2;
1893pub const obs_combo_type_OBS_COMBO_TYPE_RADIO: obs_combo_type = 3;
1894pub type obs_combo_type = ::std::os::raw::c_int;
1895pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_STRINGS: obs_editable_list_type = 0;
1896pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_FILES: obs_editable_list_type = 1;
1897pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_FILES_AND_URLS: obs_editable_list_type = 2;
1898pub type obs_editable_list_type = ::std::os::raw::c_int;
1899pub const obs_path_type_OBS_PATH_FILE: obs_path_type = 0;
1900pub const obs_path_type_OBS_PATH_FILE_SAVE: obs_path_type = 1;
1901pub const obs_path_type_OBS_PATH_DIRECTORY: obs_path_type = 2;
1902pub type obs_path_type = ::std::os::raw::c_int;
1903pub const obs_text_type_OBS_TEXT_DEFAULT: obs_text_type = 0;
1904pub const obs_text_type_OBS_TEXT_PASSWORD: obs_text_type = 1;
1905pub const obs_text_type_OBS_TEXT_MULTILINE: obs_text_type = 2;
1906pub const obs_text_type_OBS_TEXT_INFO: obs_text_type = 3;
1907pub type obs_text_type = ::std::os::raw::c_int;
1908pub const obs_text_info_type_OBS_TEXT_INFO_NORMAL: obs_text_info_type = 0;
1909pub const obs_text_info_type_OBS_TEXT_INFO_WARNING: obs_text_info_type = 1;
1910pub const obs_text_info_type_OBS_TEXT_INFO_ERROR: obs_text_info_type = 2;
1911pub type obs_text_info_type = ::std::os::raw::c_int;
1912pub const obs_number_type_OBS_NUMBER_SCROLLER: obs_number_type = 0;
1913pub const obs_number_type_OBS_NUMBER_SLIDER: obs_number_type = 1;
1914pub type obs_number_type = ::std::os::raw::c_int;
1915pub const obs_group_type_OBS_COMBO_INVALID: obs_group_type = 0;
1916pub const obs_group_type_OBS_GROUP_NORMAL: obs_group_type = 1;
1917pub const obs_group_type_OBS_GROUP_CHECKABLE: obs_group_type = 2;
1918pub type obs_group_type = ::std::os::raw::c_int;
1919pub const obs_button_type_OBS_BUTTON_DEFAULT: obs_button_type = 0;
1920pub const obs_button_type_OBS_BUTTON_URL: obs_button_type = 1;
1921pub type obs_button_type = ::std::os::raw::c_int;
1922#[repr(C)]
1923#[derive(Debug, Copy, Clone)]
1924pub struct obs_properties {
1925    _unused: [u8; 0],
1926}
1927#[repr(C)]
1928#[derive(Debug, Copy, Clone)]
1929pub struct obs_property {
1930    _unused: [u8; 0],
1931}
1932pub type obs_properties_t = obs_properties;
1933pub type obs_property_t = obs_property;
1934#[doc = " Callback for when a button property is clicked.  If the properties\n need to be refreshed due to changes to the property layout, return true,\n otherwise return false."]
1935pub type obs_property_clicked_t = ::std::option::Option<
1936    unsafe extern "C" fn(
1937        props: *mut obs_properties_t,
1938        property: *mut obs_property_t,
1939        data: *mut ::std::os::raw::c_void,
1940    ) -> bool,
1941>;
1942#[doc = " Optional callback for when a property is modified.  If the properties\n need to be refreshed due to changes to the property layout, return true,\n otherwise return false."]
1943pub type obs_property_modified_t = ::std::option::Option<
1944    unsafe extern "C" fn(
1945        props: *mut obs_properties_t,
1946        property: *mut obs_property_t,
1947        settings: *mut obs_data_t,
1948    ) -> bool,
1949>;
1950pub type obs_property_modified2_t = ::std::option::Option<
1951    unsafe extern "C" fn(
1952        priv_: *mut ::std::os::raw::c_void,
1953        props: *mut obs_properties_t,
1954        property: *mut obs_property_t,
1955        settings: *mut obs_data_t,
1956    ) -> bool,
1957>;
1958pub const obs_interaction_flags_INTERACT_NONE: obs_interaction_flags = 0;
1959pub const obs_interaction_flags_INTERACT_CAPS_KEY: obs_interaction_flags = 1;
1960pub const obs_interaction_flags_INTERACT_SHIFT_KEY: obs_interaction_flags = 2;
1961pub const obs_interaction_flags_INTERACT_CONTROL_KEY: obs_interaction_flags = 4;
1962pub const obs_interaction_flags_INTERACT_ALT_KEY: obs_interaction_flags = 8;
1963pub const obs_interaction_flags_INTERACT_MOUSE_LEFT: obs_interaction_flags = 16;
1964pub const obs_interaction_flags_INTERACT_MOUSE_MIDDLE: obs_interaction_flags = 32;
1965pub const obs_interaction_flags_INTERACT_MOUSE_RIGHT: obs_interaction_flags = 64;
1966pub const obs_interaction_flags_INTERACT_COMMAND_KEY: obs_interaction_flags = 128;
1967pub const obs_interaction_flags_INTERACT_NUMLOCK_KEY: obs_interaction_flags = 256;
1968pub const obs_interaction_flags_INTERACT_IS_KEY_PAD: obs_interaction_flags = 512;
1969pub const obs_interaction_flags_INTERACT_IS_LEFT: obs_interaction_flags = 1024;
1970pub const obs_interaction_flags_INTERACT_IS_RIGHT: obs_interaction_flags = 2048;
1971pub type obs_interaction_flags = ::std::os::raw::c_int;
1972pub const obs_mouse_button_type_MOUSE_LEFT: obs_mouse_button_type = 0;
1973pub const obs_mouse_button_type_MOUSE_MIDDLE: obs_mouse_button_type = 1;
1974pub const obs_mouse_button_type_MOUSE_RIGHT: obs_mouse_button_type = 2;
1975pub type obs_mouse_button_type = ::std::os::raw::c_int;
1976#[repr(C)]
1977pub struct obs_mouse_event {
1978    pub modifiers: u32,
1979    pub x: i32,
1980    pub y: i32,
1981}
1982#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1983const _: () = {
1984    ["Size of obs_mouse_event"][::std::mem::size_of::<obs_mouse_event>() - 12usize];
1985    ["Alignment of obs_mouse_event"][::std::mem::align_of::<obs_mouse_event>() - 4usize];
1986    ["Offset of field: obs_mouse_event::modifiers"]
1987        [::std::mem::offset_of!(obs_mouse_event, modifiers) - 0usize];
1988    ["Offset of field: obs_mouse_event::x"][::std::mem::offset_of!(obs_mouse_event, x) - 4usize];
1989    ["Offset of field: obs_mouse_event::y"][::std::mem::offset_of!(obs_mouse_event, y) - 8usize];
1990};
1991#[repr(C)]
1992pub struct obs_key_event {
1993    pub modifiers: u32,
1994    pub text: *mut ::std::os::raw::c_char,
1995    pub native_modifiers: u32,
1996    pub native_scancode: u32,
1997    pub native_vkey: u32,
1998}
1999#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2000const _: () = {
2001    ["Size of obs_key_event"][::std::mem::size_of::<obs_key_event>() - 32usize];
2002    ["Alignment of obs_key_event"][::std::mem::align_of::<obs_key_event>() - 8usize];
2003    ["Offset of field: obs_key_event::modifiers"]
2004        [::std::mem::offset_of!(obs_key_event, modifiers) - 0usize];
2005    ["Offset of field: obs_key_event::text"][::std::mem::offset_of!(obs_key_event, text) - 8usize];
2006    ["Offset of field: obs_key_event::native_modifiers"]
2007        [::std::mem::offset_of!(obs_key_event, native_modifiers) - 16usize];
2008    ["Offset of field: obs_key_event::native_scancode"]
2009        [::std::mem::offset_of!(obs_key_event, native_scancode) - 20usize];
2010    ["Offset of field: obs_key_event::native_vkey"]
2011        [::std::mem::offset_of!(obs_key_event, native_vkey) - 24usize];
2012};
2013#[repr(C)]
2014#[derive(Debug, Copy, Clone)]
2015pub struct obs_context_data {
2016    _unused: [u8; 0],
2017}
2018#[repr(C)]
2019#[derive(Debug, Copy, Clone)]
2020pub struct obs_display {
2021    _unused: [u8; 0],
2022}
2023#[repr(C)]
2024#[derive(Debug, Copy, Clone)]
2025pub struct obs_view {
2026    _unused: [u8; 0],
2027}
2028#[repr(C)]
2029#[derive(Debug, Copy, Clone)]
2030pub struct obs_source {
2031    _unused: [u8; 0],
2032}
2033#[repr(C)]
2034#[derive(Debug, Copy, Clone)]
2035pub struct obs_scene {
2036    _unused: [u8; 0],
2037}
2038#[repr(C)]
2039#[derive(Debug, Copy, Clone)]
2040pub struct obs_scene_item {
2041    _unused: [u8; 0],
2042}
2043#[repr(C)]
2044#[derive(Debug, Copy, Clone)]
2045pub struct obs_output {
2046    _unused: [u8; 0],
2047}
2048#[repr(C)]
2049#[derive(Debug, Copy, Clone)]
2050pub struct obs_encoder {
2051    _unused: [u8; 0],
2052}
2053#[repr(C)]
2054#[derive(Debug, Copy, Clone)]
2055pub struct obs_encoder_group {
2056    _unused: [u8; 0],
2057}
2058#[repr(C)]
2059#[derive(Debug, Copy, Clone)]
2060pub struct obs_service {
2061    _unused: [u8; 0],
2062}
2063#[repr(C)]
2064#[derive(Debug, Copy, Clone)]
2065pub struct obs_module {
2066    _unused: [u8; 0],
2067}
2068#[repr(C)]
2069#[derive(Debug, Copy, Clone)]
2070pub struct obs_module_metadata {
2071    _unused: [u8; 0],
2072}
2073#[repr(C)]
2074#[derive(Debug, Copy, Clone)]
2075pub struct obs_fader {
2076    _unused: [u8; 0],
2077}
2078#[repr(C)]
2079#[derive(Debug, Copy, Clone)]
2080pub struct obs_volmeter {
2081    _unused: [u8; 0],
2082}
2083#[repr(C)]
2084#[derive(Debug, Copy, Clone)]
2085pub struct obs_canvas {
2086    _unused: [u8; 0],
2087}
2088pub type obs_object_t = obs_context_data;
2089pub type obs_display_t = obs_display;
2090pub type obs_view_t = obs_view;
2091pub type obs_source_t = obs_source;
2092pub type obs_scene_t = obs_scene;
2093pub type obs_sceneitem_t = obs_scene_item;
2094pub type obs_output_t = obs_output;
2095pub type obs_encoder_t = obs_encoder;
2096pub type obs_encoder_group_t = obs_encoder_group;
2097pub type obs_service_t = obs_service;
2098pub type obs_module_t = obs_module;
2099pub type obs_module_metadata_t = obs_module_metadata;
2100pub type obs_fader_t = obs_fader;
2101pub type obs_volmeter_t = obs_volmeter;
2102pub type obs_canvas_t = obs_canvas;
2103#[repr(C)]
2104#[derive(Debug, Copy, Clone)]
2105pub struct obs_weak_object {
2106    _unused: [u8; 0],
2107}
2108pub type obs_weak_object_t = obs_weak_object;
2109#[repr(C)]
2110#[derive(Debug, Copy, Clone)]
2111pub struct obs_weak_source {
2112    _unused: [u8; 0],
2113}
2114pub type obs_weak_source_t = obs_weak_source;
2115#[repr(C)]
2116#[derive(Debug, Copy, Clone)]
2117pub struct obs_weak_output {
2118    _unused: [u8; 0],
2119}
2120pub type obs_weak_output_t = obs_weak_output;
2121#[repr(C)]
2122#[derive(Debug, Copy, Clone)]
2123pub struct obs_weak_encoder {
2124    _unused: [u8; 0],
2125}
2126pub type obs_weak_encoder_t = obs_weak_encoder;
2127#[repr(C)]
2128#[derive(Debug, Copy, Clone)]
2129pub struct obs_weak_service {
2130    _unused: [u8; 0],
2131}
2132pub type obs_weak_service_t = obs_weak_service;
2133#[repr(C)]
2134#[derive(Debug, Copy, Clone)]
2135pub struct obs_weak_canvas {
2136    _unused: [u8; 0],
2137}
2138pub type obs_weak_canvas_t = obs_weak_canvas;
2139pub type obs_missing_file_cb = ::std::option::Option<
2140    unsafe extern "C" fn(
2141        src: *mut ::std::os::raw::c_void,
2142        new_path: *const ::std::os::raw::c_char,
2143        data: *mut ::std::os::raw::c_void,
2144    ),
2145>;
2146#[repr(C)]
2147#[derive(Debug, Copy, Clone)]
2148pub struct obs_missing_file {
2149    _unused: [u8; 0],
2150}
2151#[repr(C)]
2152#[derive(Debug, Copy, Clone)]
2153pub struct obs_missing_files {
2154    _unused: [u8; 0],
2155}
2156pub type obs_missing_file_t = obs_missing_file;
2157pub type obs_missing_files_t = obs_missing_files;
2158pub const obs_missing_file_src_OBS_MISSING_FILE_SOURCE: obs_missing_file_src = 0;
2159pub const obs_missing_file_src_OBS_MISSING_FILE_SCRIPT: obs_missing_file_src = 1;
2160pub type obs_missing_file_src = ::std::os::raw::c_int;
2161pub const obs_source_type_OBS_SOURCE_TYPE_INPUT: obs_source_type = 0;
2162pub const obs_source_type_OBS_SOURCE_TYPE_FILTER: obs_source_type = 1;
2163pub const obs_source_type_OBS_SOURCE_TYPE_TRANSITION: obs_source_type = 2;
2164pub const obs_source_type_OBS_SOURCE_TYPE_SCENE: obs_source_type = 3;
2165pub type obs_source_type = ::std::os::raw::c_int;
2166pub const obs_balance_type_OBS_BALANCE_TYPE_SINE_LAW: obs_balance_type = 0;
2167pub const obs_balance_type_OBS_BALANCE_TYPE_SQUARE_LAW: obs_balance_type = 1;
2168pub const obs_balance_type_OBS_BALANCE_TYPE_LINEAR: obs_balance_type = 2;
2169pub type obs_balance_type = ::std::os::raw::c_int;
2170pub const obs_icon_type_OBS_ICON_TYPE_UNKNOWN: obs_icon_type = 0;
2171pub const obs_icon_type_OBS_ICON_TYPE_IMAGE: obs_icon_type = 1;
2172pub const obs_icon_type_OBS_ICON_TYPE_COLOR: obs_icon_type = 2;
2173pub const obs_icon_type_OBS_ICON_TYPE_SLIDESHOW: obs_icon_type = 3;
2174pub const obs_icon_type_OBS_ICON_TYPE_AUDIO_INPUT: obs_icon_type = 4;
2175pub const obs_icon_type_OBS_ICON_TYPE_AUDIO_OUTPUT: obs_icon_type = 5;
2176pub const obs_icon_type_OBS_ICON_TYPE_DESKTOP_CAPTURE: obs_icon_type = 6;
2177pub const obs_icon_type_OBS_ICON_TYPE_WINDOW_CAPTURE: obs_icon_type = 7;
2178pub const obs_icon_type_OBS_ICON_TYPE_GAME_CAPTURE: obs_icon_type = 8;
2179pub const obs_icon_type_OBS_ICON_TYPE_CAMERA: obs_icon_type = 9;
2180pub const obs_icon_type_OBS_ICON_TYPE_TEXT: obs_icon_type = 10;
2181pub const obs_icon_type_OBS_ICON_TYPE_MEDIA: obs_icon_type = 11;
2182pub const obs_icon_type_OBS_ICON_TYPE_BROWSER: obs_icon_type = 12;
2183pub const obs_icon_type_OBS_ICON_TYPE_CUSTOM: obs_icon_type = 13;
2184pub const obs_icon_type_OBS_ICON_TYPE_PROCESS_AUDIO_OUTPUT: obs_icon_type = 14;
2185pub type obs_icon_type = ::std::os::raw::c_int;
2186pub const obs_media_state_OBS_MEDIA_STATE_NONE: obs_media_state = 0;
2187pub const obs_media_state_OBS_MEDIA_STATE_PLAYING: obs_media_state = 1;
2188pub const obs_media_state_OBS_MEDIA_STATE_OPENING: obs_media_state = 2;
2189pub const obs_media_state_OBS_MEDIA_STATE_BUFFERING: obs_media_state = 3;
2190pub const obs_media_state_OBS_MEDIA_STATE_PAUSED: obs_media_state = 4;
2191pub const obs_media_state_OBS_MEDIA_STATE_STOPPED: obs_media_state = 5;
2192pub const obs_media_state_OBS_MEDIA_STATE_ENDED: obs_media_state = 6;
2193pub const obs_media_state_OBS_MEDIA_STATE_ERROR: obs_media_state = 7;
2194pub type obs_media_state = ::std::os::raw::c_int;
2195#[doc = " @}"]
2196pub type obs_source_enum_proc_t = ::std::option::Option<
2197    unsafe extern "C" fn(
2198        parent: *mut obs_source_t,
2199        child: *mut obs_source_t,
2200        param: *mut ::std::os::raw::c_void,
2201    ),
2202>;
2203#[repr(C)]
2204#[derive(Debug, Copy, Clone)]
2205pub struct obs_source_audio_mix {
2206    pub output: [audio_output_data; 6usize],
2207}
2208#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2209const _: () = {
2210    ["Size of obs_source_audio_mix"][::std::mem::size_of::<obs_source_audio_mix>() - 384usize];
2211    ["Alignment of obs_source_audio_mix"][::std::mem::align_of::<obs_source_audio_mix>() - 8usize];
2212    ["Offset of field: obs_source_audio_mix::output"]
2213        [::std::mem::offset_of!(obs_source_audio_mix, output) - 0usize];
2214};
2215#[doc = " Source definition structure"]
2216#[repr(C)]
2217pub struct obs_source_info {
2218#[doc = " Unique string identifier for the source"]
2219    pub id: *const ::std::os::raw::c_char,
2220#[doc = " Type of source.\n\n OBS_SOURCE_TYPE_INPUT for input sources,\n OBS_SOURCE_TYPE_FILTER for filter sources, and\n OBS_SOURCE_TYPE_TRANSITION for transition sources."]
2221    pub type_: obs_source_type,
2222#[doc = " Source output flags"]
2223    pub output_flags: u32,
2224#[doc = " Get the translated name of the source type\n\n @param  type_data  The type_data variable of this structure\n @return               The translated name of the source type"]
2225    pub get_name: ::std::option::Option<
2226        unsafe extern "C" fn(
2227            type_data: *mut ::std::os::raw::c_void,
2228        ) -> *const ::std::os::raw::c_char,
2229    >,
2230#[doc = " Creates the source data for the source\n\n @param  settings  Settings to initialize the source with\n @param  source    Source that this data is associated with\n @return           The data associated with this source"]
2231    pub create: ::std::option::Option<
2232        unsafe extern "C" fn(
2233            settings: *mut obs_data_t,
2234            source: *mut obs_source_t,
2235        ) -> *mut ::std::os::raw::c_void,
2236    >,
2237#[doc = " Destroys the private data for the source\n\n Async sources must not call obs_source_output_video after returning\n from destroy"]
2238    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2239#[doc = " Returns the width of the source.  Required if this is an input\n source and has non-async video"]
2240    pub get_width:
2241        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u32>,
2242#[doc = " Returns the height of the source.  Required if this is an input\n source and has non-async video"]
2243    pub get_height:
2244        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u32>,
2245#[doc = " Gets the default settings for this source\n\n @param\\[out\\]  settings  Data to assign default settings to\n @deprecated            Use get_defaults2 if type_data is needed"]
2246    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2247#[doc = " Gets the property information of this source\n\n @return         The properties data\n @deprecated     Use get_properties2 if type_data is needed"]
2248    pub get_properties: ::std::option::Option<
2249        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2250    >,
2251#[doc = " Updates the settings for this source\n\n @param data      Source data\n @param settings  New settings for this source"]
2252    pub update: ::std::option::Option<
2253        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2254    >,
2255#[doc = " Called when the source has been activated in the main view"]
2256    pub activate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2257#[doc = " Called when the source has been deactivated from the main view\n (no longer being played/displayed)"]
2258    pub deactivate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2259#[doc = " Called when the source is visible"]
2260    pub show: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2261#[doc = " Called when the source is no longer visible"]
2262    pub hide: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2263#[doc = " Called each video frame with the time elapsed\n\n @param  data     Source data\n @param  seconds  Seconds elapsed since the last frame"]
2264    pub video_tick: ::std::option::Option<
2265        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, seconds: f32),
2266    >,
2267#[doc = " Called when rendering the source with the graphics subsystem.\n\n If this is an input/transition source, this is called to draw the\n source texture with the graphics subsystem using the specified\n effect.\n\n If this is a filter source, it wraps source draw calls (for\n example applying a custom effect with custom parameters to a\n source).  In this case, it's highly recommended to use the\n obs_source_process_filter function to automatically handle\n effect-based filter processing.  However, you can implement custom\n draw handling as desired as well.\n\n If the source output flags do not include SOURCE_CUSTOM_DRAW, all\n a source needs to do is set the \"image\" parameter of the effect to\n the desired texture, and then draw.  If the output flags include\n SOURCE_COLOR_MATRIX, you may optionally set the \"color_matrix\"\n parameter of the effect to a custom 4x4 conversion matrix (by\n default it will be set to an YUV->RGB conversion matrix)\n\n @param data    Source data\n @param effect  Effect to be used with this source.  If the source\n                output flags include SOURCE_CUSTOM_DRAW, this will\n                be NULL, and the source is expected to process with\n                an effect manually."]
2268    pub video_render: ::std::option::Option<
2269        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, effect: *mut gs_effect_t),
2270    >,
2271#[doc = " Called to filter raw async video data.\n\n @note          This function is only used with filter sources.\n\n @param  data   Filter data\n @param  frame  Video frame to filter\n @return        New video frame data.  This can defer video data to\n                be drawn later if time is needed for processing"]
2272    pub filter_video: ::std::option::Option<
2273        unsafe extern "C" fn(
2274            data: *mut ::std::os::raw::c_void,
2275            frame: *mut obs_source_frame,
2276        ) -> *mut obs_source_frame,
2277    >,
2278#[doc = " Called to filter raw audio data.\n\n @note          This function is only used with filter sources.\n\n @param  data   Filter data\n @param  audio  Audio data to filter.\n @return        Modified or new audio data.  You can directly modify\n                the data passed and return it, or you can defer audio\n                data for later if time is needed for processing.  If\n                you are returning new data, that data must exist\n                until the next call to the filter_audio callback or\n                until the filter is removed/destroyed."]
2279    pub filter_audio: ::std::option::Option<
2280        unsafe extern "C" fn(
2281            data: *mut ::std::os::raw::c_void,
2282            audio: *mut obs_audio_data,
2283        ) -> *mut obs_audio_data,
2284    >,
2285#[doc = " Called to enumerate all active sources being used within this\n source.  If the source has children that render audio/video it must\n implement this callback.\n\n @param  data           Filter data\n @param  enum_callback  Enumeration callback\n @param  param          User data to pass to callback"]
2286    pub enum_active_sources: ::std::option::Option<
2287        unsafe extern "C" fn(
2288            data: *mut ::std::os::raw::c_void,
2289            enum_callback: obs_source_enum_proc_t,
2290            param: *mut ::std::os::raw::c_void,
2291        ),
2292    >,
2293#[doc = " Called when saving a source.  This is a separate function because\n sometimes a source needs to know when it is being saved so it\n doesn't always have to update the current settings until a certain\n point.\n\n @param  data      Source data\n @param  settings  Settings"]
2294    pub save: ::std::option::Option<
2295        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2296    >,
2297#[doc = " Called when loading a source from saved data.  This should be called\n after all the loading sources have actually been created because\n sometimes there are sources that depend on each other.\n\n @param  data      Source data\n @param  settings  Settings"]
2298    pub load: ::std::option::Option<
2299        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2300    >,
2301#[doc = " Called when interacting with a source and a mouse-down or mouse-up\n occurs.\n\n @param data         Source data\n @param event        Mouse event properties\n @param type         Mouse button pushed\n @param mouse_up     Mouse event type (true if mouse-up)\n @param click_count  Mouse click count (1 for single click, etc.)"]
2302    pub mouse_click: ::std::option::Option<
2303        unsafe extern "C" fn(
2304            data: *mut ::std::os::raw::c_void,
2305            event: *const obs_mouse_event,
2306            type_: i32,
2307            mouse_up: bool,
2308            click_count: u32,
2309        ),
2310    >,
2311#[doc = " Called when interacting with a source and a mouse-move occurs.\n\n @param data         Source data\n @param event        Mouse event properties\n @param mouse_leave  Mouse leave state (true if mouse left source)"]
2312    pub mouse_move: ::std::option::Option<
2313        unsafe extern "C" fn(
2314            data: *mut ::std::os::raw::c_void,
2315            event: *const obs_mouse_event,
2316            mouse_leave: bool,
2317        ),
2318    >,
2319#[doc = " Called when interacting with a source and a mouse-wheel occurs.\n\n @param data         Source data\n @param event        Mouse event properties\n @param x_delta      Movement delta in the horizontal direction\n @param y_delta      Movement delta in the vertical direction"]
2320    pub mouse_wheel: ::std::option::Option<
2321        unsafe extern "C" fn(
2322            data: *mut ::std::os::raw::c_void,
2323            event: *const obs_mouse_event,
2324            x_delta: ::std::os::raw::c_int,
2325            y_delta: ::std::os::raw::c_int,
2326        ),
2327    >,
2328#[doc = " Called when interacting with a source and gain focus/lost focus event\n occurs.\n\n @param data         Source data\n @param focus        Focus state (true if focus gained)"]
2329    pub focus:
2330        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, focus: bool)>,
2331#[doc = " Called when interacting with a source and a key-up or key-down\n occurs.\n\n @param data         Source data\n @param event        Key event properties\n @param focus        Key event type (true if mouse-up)"]
2332    pub key_click: ::std::option::Option<
2333        unsafe extern "C" fn(
2334            data: *mut ::std::os::raw::c_void,
2335            event: *const obs_key_event,
2336            key_up: bool,
2337        ),
2338    >,
2339#[doc = " Called when the filter is removed from a source\n\n @param  data    Filter data\n @param  source  Source that the filter being removed from"]
2340    pub filter_remove: ::std::option::Option<
2341        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
2342    >,
2343#[doc = " Private data associated with this entry"]
2344    pub type_data: *mut ::std::os::raw::c_void,
2345#[doc = " If defined, called to free private data on shutdown"]
2346    pub free_type_data:
2347        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2348    pub audio_render: ::std::option::Option<
2349        unsafe extern "C" fn(
2350            data: *mut ::std::os::raw::c_void,
2351            ts_out: *mut u64,
2352            audio_output: *mut obs_source_audio_mix,
2353            mixers: u32,
2354            channels: usize,
2355            sample_rate: usize,
2356        ) -> bool,
2357    >,
2358#[doc = " Called to enumerate all active and inactive sources being used\n within this source.  If this callback isn't implemented,\n enum_active_sources will be called instead.\n\n This is typically used if a source can have inactive child sources.\n\n @param  data           Filter data\n @param  enum_callback  Enumeration callback\n @param  param          User data to pass to callback"]
2359    pub enum_all_sources: ::std::option::Option<
2360        unsafe extern "C" fn(
2361            data: *mut ::std::os::raw::c_void,
2362            enum_callback: obs_source_enum_proc_t,
2363            param: *mut ::std::os::raw::c_void,
2364        ),
2365    >,
2366    pub transition_start:
2367        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2368    pub transition_stop:
2369        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2370#[doc = " Gets the default settings for this source\n\n If get_defaults is also defined both will be called, and the first\n call will be to get_defaults, then to get_defaults2.\n\n @param       type_data The type_data variable of this structure\n @param\\[out\\]  settings  Data to assign default settings to"]
2371    pub get_defaults2: ::std::option::Option<
2372        unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2373    >,
2374#[doc = " Gets the property information of this source\n\n @param data      Source data\n @param type_data The type_data variable of this structure\n @return          The properties data"]
2375    pub get_properties2: ::std::option::Option<
2376        unsafe extern "C" fn(
2377            data: *mut ::std::os::raw::c_void,
2378            type_data: *mut ::std::os::raw::c_void,
2379        ) -> *mut obs_properties_t,
2380    >,
2381    pub audio_mix: ::std::option::Option<
2382        unsafe extern "C" fn(
2383            data: *mut ::std::os::raw::c_void,
2384            ts_out: *mut u64,
2385            audio_output: *mut audio_output_data,
2386            channels: usize,
2387            sample_rate: usize,
2388        ) -> bool,
2389    >,
2390#[doc = " Icon type for the source"]
2391    pub icon_type: obs_icon_type,
2392#[doc = " Media controls"]
2393    pub media_play_pause:
2394        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, pause: bool)>,
2395    pub media_restart:
2396        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2397    pub media_stop: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2398    pub media_next: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2399    pub media_previous:
2400        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2401    pub media_get_duration:
2402        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> i64>,
2403    pub media_get_time:
2404        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> i64>,
2405    pub media_set_time: ::std::option::Option<
2406        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, miliseconds: i64),
2407    >,
2408    pub media_get_state: ::std::option::Option<
2409        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> obs_media_state,
2410    >,
2411    pub version: u32,
2412    pub unversioned_id: *const ::std::os::raw::c_char,
2413#[doc = " Missing files"]
2414    pub missing_files: ::std::option::Option<
2415        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_missing_files_t,
2416    >,
2417#[doc = " Get color space"]
2418    pub video_get_color_space: ::std::option::Option<
2419        unsafe extern "C" fn(
2420            data: *mut ::std::os::raw::c_void,
2421            count: usize,
2422            preferred_spaces: *const gs_color_space,
2423        ) -> gs_color_space,
2424    >,
2425#[doc = " Called when the filter is added to a source\n\n @param  data    Filter data\n @param  source  Source that the filter is being added to"]
2426    pub filter_add: ::std::option::Option<
2427        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
2428    >,
2429}
2430#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2431const _: () = {
2432    ["Size of obs_source_info"][::std::mem::size_of::<obs_source_info>() - 408usize];
2433    ["Alignment of obs_source_info"][::std::mem::align_of::<obs_source_info>() - 8usize];
2434    ["Offset of field: obs_source_info::id"][::std::mem::offset_of!(obs_source_info, id) - 0usize];
2435    ["Offset of field: obs_source_info::type_"]
2436        [::std::mem::offset_of!(obs_source_info, type_) - 8usize];
2437    ["Offset of field: obs_source_info::output_flags"]
2438        [::std::mem::offset_of!(obs_source_info, output_flags) - 12usize];
2439    ["Offset of field: obs_source_info::get_name"]
2440        [::std::mem::offset_of!(obs_source_info, get_name) - 16usize];
2441    ["Offset of field: obs_source_info::create"]
2442        [::std::mem::offset_of!(obs_source_info, create) - 24usize];
2443    ["Offset of field: obs_source_info::destroy"]
2444        [::std::mem::offset_of!(obs_source_info, destroy) - 32usize];
2445    ["Offset of field: obs_source_info::get_width"]
2446        [::std::mem::offset_of!(obs_source_info, get_width) - 40usize];
2447    ["Offset of field: obs_source_info::get_height"]
2448        [::std::mem::offset_of!(obs_source_info, get_height) - 48usize];
2449    ["Offset of field: obs_source_info::get_defaults"]
2450        [::std::mem::offset_of!(obs_source_info, get_defaults) - 56usize];
2451    ["Offset of field: obs_source_info::get_properties"]
2452        [::std::mem::offset_of!(obs_source_info, get_properties) - 64usize];
2453    ["Offset of field: obs_source_info::update"]
2454        [::std::mem::offset_of!(obs_source_info, update) - 72usize];
2455    ["Offset of field: obs_source_info::activate"]
2456        [::std::mem::offset_of!(obs_source_info, activate) - 80usize];
2457    ["Offset of field: obs_source_info::deactivate"]
2458        [::std::mem::offset_of!(obs_source_info, deactivate) - 88usize];
2459    ["Offset of field: obs_source_info::show"]
2460        [::std::mem::offset_of!(obs_source_info, show) - 96usize];
2461    ["Offset of field: obs_source_info::hide"]
2462        [::std::mem::offset_of!(obs_source_info, hide) - 104usize];
2463    ["Offset of field: obs_source_info::video_tick"]
2464        [::std::mem::offset_of!(obs_source_info, video_tick) - 112usize];
2465    ["Offset of field: obs_source_info::video_render"]
2466        [::std::mem::offset_of!(obs_source_info, video_render) - 120usize];
2467    ["Offset of field: obs_source_info::filter_video"]
2468        [::std::mem::offset_of!(obs_source_info, filter_video) - 128usize];
2469    ["Offset of field: obs_source_info::filter_audio"]
2470        [::std::mem::offset_of!(obs_source_info, filter_audio) - 136usize];
2471    ["Offset of field: obs_source_info::enum_active_sources"]
2472        [::std::mem::offset_of!(obs_source_info, enum_active_sources) - 144usize];
2473    ["Offset of field: obs_source_info::save"]
2474        [::std::mem::offset_of!(obs_source_info, save) - 152usize];
2475    ["Offset of field: obs_source_info::load"]
2476        [::std::mem::offset_of!(obs_source_info, load) - 160usize];
2477    ["Offset of field: obs_source_info::mouse_click"]
2478        [::std::mem::offset_of!(obs_source_info, mouse_click) - 168usize];
2479    ["Offset of field: obs_source_info::mouse_move"]
2480        [::std::mem::offset_of!(obs_source_info, mouse_move) - 176usize];
2481    ["Offset of field: obs_source_info::mouse_wheel"]
2482        [::std::mem::offset_of!(obs_source_info, mouse_wheel) - 184usize];
2483    ["Offset of field: obs_source_info::focus"]
2484        [::std::mem::offset_of!(obs_source_info, focus) - 192usize];
2485    ["Offset of field: obs_source_info::key_click"]
2486        [::std::mem::offset_of!(obs_source_info, key_click) - 200usize];
2487    ["Offset of field: obs_source_info::filter_remove"]
2488        [::std::mem::offset_of!(obs_source_info, filter_remove) - 208usize];
2489    ["Offset of field: obs_source_info::type_data"]
2490        [::std::mem::offset_of!(obs_source_info, type_data) - 216usize];
2491    ["Offset of field: obs_source_info::free_type_data"]
2492        [::std::mem::offset_of!(obs_source_info, free_type_data) - 224usize];
2493    ["Offset of field: obs_source_info::audio_render"]
2494        [::std::mem::offset_of!(obs_source_info, audio_render) - 232usize];
2495    ["Offset of field: obs_source_info::enum_all_sources"]
2496        [::std::mem::offset_of!(obs_source_info, enum_all_sources) - 240usize];
2497    ["Offset of field: obs_source_info::transition_start"]
2498        [::std::mem::offset_of!(obs_source_info, transition_start) - 248usize];
2499    ["Offset of field: obs_source_info::transition_stop"]
2500        [::std::mem::offset_of!(obs_source_info, transition_stop) - 256usize];
2501    ["Offset of field: obs_source_info::get_defaults2"]
2502        [::std::mem::offset_of!(obs_source_info, get_defaults2) - 264usize];
2503    ["Offset of field: obs_source_info::get_properties2"]
2504        [::std::mem::offset_of!(obs_source_info, get_properties2) - 272usize];
2505    ["Offset of field: obs_source_info::audio_mix"]
2506        [::std::mem::offset_of!(obs_source_info, audio_mix) - 280usize];
2507    ["Offset of field: obs_source_info::icon_type"]
2508        [::std::mem::offset_of!(obs_source_info, icon_type) - 288usize];
2509    ["Offset of field: obs_source_info::media_play_pause"]
2510        [::std::mem::offset_of!(obs_source_info, media_play_pause) - 296usize];
2511    ["Offset of field: obs_source_info::media_restart"]
2512        [::std::mem::offset_of!(obs_source_info, media_restart) - 304usize];
2513    ["Offset of field: obs_source_info::media_stop"]
2514        [::std::mem::offset_of!(obs_source_info, media_stop) - 312usize];
2515    ["Offset of field: obs_source_info::media_next"]
2516        [::std::mem::offset_of!(obs_source_info, media_next) - 320usize];
2517    ["Offset of field: obs_source_info::media_previous"]
2518        [::std::mem::offset_of!(obs_source_info, media_previous) - 328usize];
2519    ["Offset of field: obs_source_info::media_get_duration"]
2520        [::std::mem::offset_of!(obs_source_info, media_get_duration) - 336usize];
2521    ["Offset of field: obs_source_info::media_get_time"]
2522        [::std::mem::offset_of!(obs_source_info, media_get_time) - 344usize];
2523    ["Offset of field: obs_source_info::media_set_time"]
2524        [::std::mem::offset_of!(obs_source_info, media_set_time) - 352usize];
2525    ["Offset of field: obs_source_info::media_get_state"]
2526        [::std::mem::offset_of!(obs_source_info, media_get_state) - 360usize];
2527    ["Offset of field: obs_source_info::version"]
2528        [::std::mem::offset_of!(obs_source_info, version) - 368usize];
2529    ["Offset of field: obs_source_info::unversioned_id"]
2530        [::std::mem::offset_of!(obs_source_info, unversioned_id) - 376usize];
2531    ["Offset of field: obs_source_info::missing_files"]
2532        [::std::mem::offset_of!(obs_source_info, missing_files) - 384usize];
2533    ["Offset of field: obs_source_info::video_get_color_space"]
2534        [::std::mem::offset_of!(obs_source_info, video_get_color_space) - 392usize];
2535    ["Offset of field: obs_source_info::filter_add"]
2536        [::std::mem::offset_of!(obs_source_info, filter_add) - 400usize];
2537};
2538#[doc = "< The encoder provides an audio codec"]
2539pub const obs_encoder_type_OBS_ENCODER_AUDIO: obs_encoder_type = 0;
2540#[doc = "< The encoder provides a video codec"]
2541pub const obs_encoder_type_OBS_ENCODER_VIDEO: obs_encoder_type = 1;
2542#[doc = " Specifies the encoder type"]
2543pub type obs_encoder_type = ::std::os::raw::c_int;
2544#[repr(C)]
2545pub struct encoder_packet_time {
2546    pub pts: i64,
2547    pub cts: u64,
2548    pub fer: u64,
2549    pub ferc: u64,
2550    pub pir: u64,
2551}
2552#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2553const _: () = {
2554    ["Size of encoder_packet_time"][::std::mem::size_of::<encoder_packet_time>() - 40usize];
2555    ["Alignment of encoder_packet_time"][::std::mem::align_of::<encoder_packet_time>() - 8usize];
2556    ["Offset of field: encoder_packet_time::pts"]
2557        [::std::mem::offset_of!(encoder_packet_time, pts) - 0usize];
2558    ["Offset of field: encoder_packet_time::cts"]
2559        [::std::mem::offset_of!(encoder_packet_time, cts) - 8usize];
2560    ["Offset of field: encoder_packet_time::fer"]
2561        [::std::mem::offset_of!(encoder_packet_time, fer) - 16usize];
2562    ["Offset of field: encoder_packet_time::ferc"]
2563        [::std::mem::offset_of!(encoder_packet_time, ferc) - 24usize];
2564    ["Offset of field: encoder_packet_time::pir"]
2565        [::std::mem::offset_of!(encoder_packet_time, pir) - 32usize];
2566};
2567#[doc = " Encoder output packet"]
2568#[repr(C)]
2569pub struct encoder_packet {
2570#[doc = "< Packet data"]
2571    pub data: *mut u8,
2572#[doc = "< Packet size"]
2573    pub size: usize,
2574#[doc = "< Presentation timestamp"]
2575    pub pts: i64,
2576#[doc = "< Decode timestamp"]
2577    pub dts: i64,
2578#[doc = "< Timebase numerator"]
2579    pub timebase_num: i32,
2580#[doc = "< Timebase denominator"]
2581    pub timebase_den: i32,
2582#[doc = "< Encoder type"]
2583    pub type_: obs_encoder_type,
2584#[doc = "< Is a keyframe"]
2585    pub keyframe: bool,
2586    pub dts_usec: i64,
2587    pub sys_dts_usec: i64,
2588#[doc = " Packet priority\n\n This is generally use by video encoders to specify the priority\n of the packet."]
2589    pub priority: ::std::os::raw::c_int,
2590#[doc = " Dropped packet priority\n\n If this packet needs to be dropped, the next packet must be of this\n priority or higher to continue transmission."]
2591    pub drop_priority: ::std::os::raw::c_int,
2592#[doc = " Audio track index (used with outputs)"]
2593    pub track_idx: usize,
2594#[doc = " Encoder from which the track originated from"]
2595    pub encoder: *mut obs_encoder_t,
2596}
2597#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2598const _: () = {
2599    ["Size of encoder_packet"][::std::mem::size_of::<encoder_packet>() - 88usize];
2600    ["Alignment of encoder_packet"][::std::mem::align_of::<encoder_packet>() - 8usize];
2601    ["Offset of field: encoder_packet::data"]
2602        [::std::mem::offset_of!(encoder_packet, data) - 0usize];
2603    ["Offset of field: encoder_packet::size"]
2604        [::std::mem::offset_of!(encoder_packet, size) - 8usize];
2605    ["Offset of field: encoder_packet::pts"][::std::mem::offset_of!(encoder_packet, pts) - 16usize];
2606    ["Offset of field: encoder_packet::dts"][::std::mem::offset_of!(encoder_packet, dts) - 24usize];
2607    ["Offset of field: encoder_packet::timebase_num"]
2608        [::std::mem::offset_of!(encoder_packet, timebase_num) - 32usize];
2609    ["Offset of field: encoder_packet::timebase_den"]
2610        [::std::mem::offset_of!(encoder_packet, timebase_den) - 36usize];
2611    ["Offset of field: encoder_packet::type_"]
2612        [::std::mem::offset_of!(encoder_packet, type_) - 40usize];
2613    ["Offset of field: encoder_packet::keyframe"]
2614        [::std::mem::offset_of!(encoder_packet, keyframe) - 44usize];
2615    ["Offset of field: encoder_packet::dts_usec"]
2616        [::std::mem::offset_of!(encoder_packet, dts_usec) - 48usize];
2617    ["Offset of field: encoder_packet::sys_dts_usec"]
2618        [::std::mem::offset_of!(encoder_packet, sys_dts_usec) - 56usize];
2619    ["Offset of field: encoder_packet::priority"]
2620        [::std::mem::offset_of!(encoder_packet, priority) - 64usize];
2621    ["Offset of field: encoder_packet::drop_priority"]
2622        [::std::mem::offset_of!(encoder_packet, drop_priority) - 68usize];
2623    ["Offset of field: encoder_packet::track_idx"]
2624        [::std::mem::offset_of!(encoder_packet, track_idx) - 72usize];
2625    ["Offset of field: encoder_packet::encoder"]
2626        [::std::mem::offset_of!(encoder_packet, encoder) - 80usize];
2627};
2628#[doc = " Encoder input frame"]
2629#[repr(C)]
2630pub struct encoder_frame {
2631#[doc = " Data for the frame/audio"]
2632    pub data: [*mut u8; 8usize],
2633#[doc = " size of each plane"]
2634    pub linesize: [u32; 8usize],
2635#[doc = " Number of frames (audio only)"]
2636    pub frames: u32,
2637#[doc = " Presentation timestamp"]
2638    pub pts: i64,
2639}
2640#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2641const _: () = {
2642    ["Size of encoder_frame"][::std::mem::size_of::<encoder_frame>() - 112usize];
2643    ["Alignment of encoder_frame"][::std::mem::align_of::<encoder_frame>() - 8usize];
2644    ["Offset of field: encoder_frame::data"][::std::mem::offset_of!(encoder_frame, data) - 0usize];
2645    ["Offset of field: encoder_frame::linesize"]
2646        [::std::mem::offset_of!(encoder_frame, linesize) - 64usize];
2647    ["Offset of field: encoder_frame::frames"]
2648        [::std::mem::offset_of!(encoder_frame, frames) - 96usize];
2649    ["Offset of field: encoder_frame::pts"][::std::mem::offset_of!(encoder_frame, pts) - 104usize];
2650};
2651#[doc = " Encoder region of interest"]
2652#[repr(C)]
2653pub struct obs_encoder_roi {
2654    pub top: u32,
2655    pub bottom: u32,
2656    pub left: u32,
2657    pub right: u32,
2658    pub priority: f32,
2659}
2660#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2661const _: () = {
2662    ["Size of obs_encoder_roi"][::std::mem::size_of::<obs_encoder_roi>() - 20usize];
2663    ["Alignment of obs_encoder_roi"][::std::mem::align_of::<obs_encoder_roi>() - 4usize];
2664    ["Offset of field: obs_encoder_roi::top"]
2665        [::std::mem::offset_of!(obs_encoder_roi, top) - 0usize];
2666    ["Offset of field: obs_encoder_roi::bottom"]
2667        [::std::mem::offset_of!(obs_encoder_roi, bottom) - 4usize];
2668    ["Offset of field: obs_encoder_roi::left"]
2669        [::std::mem::offset_of!(obs_encoder_roi, left) - 8usize];
2670    ["Offset of field: obs_encoder_roi::right"]
2671        [::std::mem::offset_of!(obs_encoder_roi, right) - 12usize];
2672    ["Offset of field: obs_encoder_roi::priority"]
2673        [::std::mem::offset_of!(obs_encoder_roi, priority) - 16usize];
2674};
2675#[doc = " Encoder input texture"]
2676#[repr(C)]
2677pub struct encoder_texture {
2678#[doc = " Shared texture handle, only set on Windows"]
2679    pub handle: u32,
2680#[doc = " Textures, length determined by format"]
2681    pub tex: [*mut gs_texture; 4usize],
2682}
2683#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2684const _: () = {
2685    ["Size of encoder_texture"][::std::mem::size_of::<encoder_texture>() - 40usize];
2686    ["Alignment of encoder_texture"][::std::mem::align_of::<encoder_texture>() - 8usize];
2687    ["Offset of field: encoder_texture::handle"]
2688        [::std::mem::offset_of!(encoder_texture, handle) - 0usize];
2689    ["Offset of field: encoder_texture::tex"]
2690        [::std::mem::offset_of!(encoder_texture, tex) - 8usize];
2691};
2692#[doc = " Encoder interface\n\n Encoders have a limited usage with OBS.  You are not generally supposed to\n implement every encoder out there.  Generally, these are limited or specific\n encoders for h264/aac for streaming and recording.  It doesn't have to be\n *just* h264 or aac of course, but generally those are the expected encoders.\n\n That being said, other encoders will be kept in mind for future use."]
2693#[repr(C)]
2694pub struct obs_encoder_info {
2695#[doc = " Specifies the named identifier of this encoder"]
2696    pub id: *const ::std::os::raw::c_char,
2697#[doc = " Specifies the encoder type (video or audio)"]
2698    pub type_: obs_encoder_type,
2699#[doc = " Specifies the codec"]
2700    pub codec: *const ::std::os::raw::c_char,
2701#[doc = " Gets the full translated name of this encoder\n\n @param  type_data  The type_data variable of this structure\n @return            Translated name of the encoder"]
2702    pub get_name: ::std::option::Option<
2703        unsafe extern "C" fn(
2704            type_data: *mut ::std::os::raw::c_void,
2705        ) -> *const ::std::os::raw::c_char,
2706    >,
2707#[doc = " Creates the encoder with the specified settings\n\n @param  settings  Settings for the encoder\n @param  encoder   OBS encoder context\n @return           Data associated with this encoder context, or\n                   NULL if initialization failed."]
2708    pub create: ::std::option::Option<
2709        unsafe extern "C" fn(
2710            settings: *mut obs_data_t,
2711            encoder: *mut obs_encoder_t,
2712        ) -> *mut ::std::os::raw::c_void,
2713    >,
2714#[doc = " Destroys the encoder data\n\n @param  data  Data associated with this encoder context"]
2715    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2716#[doc = " Encodes frame(s), and outputs encoded packets as they become\n available.\n\n @param       data             Data associated with this encoder\n                               context\n @param\\[in\\]   frame            Raw audio/video data to encode\n @param\\[out\\]  packet           Encoder packet output, if any\n @param\\[out\\]  received_packet  Set to true if a packet was received,\n                               false otherwise\n @return                       true if successful, false otherwise."]
2717    pub encode: ::std::option::Option<
2718        unsafe extern "C" fn(
2719            data: *mut ::std::os::raw::c_void,
2720            frame: *mut encoder_frame,
2721            packet: *mut encoder_packet,
2722            received_packet: *mut bool,
2723        ) -> bool,
2724    >,
2725#[doc = " Audio encoder only:  Returns the frame size for this encoder"]
2726    pub get_frame_size:
2727        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> usize>,
2728#[doc = " Gets the default settings for this encoder\n\n @param\\[out\\]  settings  Data to assign default settings to"]
2729    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2730#[doc = " Gets the property information of this encoder\n\n @return         The properties data"]
2731    pub get_properties: ::std::option::Option<
2732        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2733    >,
2734#[doc = " Updates the settings for this encoder (usually used for things like\n changing bitrate while active)\n\n @param  data      Data associated with this encoder context\n @param  settings  New settings for this encoder\n @return           true if successful, false otherwise"]
2735    pub update: ::std::option::Option<
2736        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t) -> bool,
2737    >,
2738#[doc = " Returns extra data associated with this encoder (usually header)\n\n @param  data             Data associated with this encoder context\n @param\\[out\\]  extra_data  Pointer to receive the extra data\n @param\\[out\\]  size        Pointer to receive the size of the extra\n                          data\n @return                  true if extra data available, false\n                          otherwise"]
2739    pub get_extra_data: ::std::option::Option<
2740        unsafe extern "C" fn(
2741            data: *mut ::std::os::raw::c_void,
2742            extra_data: *mut *mut u8,
2743            size: *mut usize,
2744        ) -> bool,
2745    >,
2746#[doc = " Gets the SEI data, if any\n\n @param       data      Data associated with this encoder context\n @param\\[out\\]  sei_data  Pointer to receive the SEI data\n @param\\[out\\]  size      Pointer to receive the SEI data size\n @return                true if SEI data available, false otherwise"]
2747    pub get_sei_data: ::std::option::Option<
2748        unsafe extern "C" fn(
2749            data: *mut ::std::os::raw::c_void,
2750            sei_data: *mut *mut u8,
2751            size: *mut usize,
2752        ) -> bool,
2753    >,
2754#[doc = " Returns desired audio format and sample information\n\n @param          data  Data associated with this encoder context\n @param\\[in/out\\]  info  Audio format information"]
2755    pub get_audio_info: ::std::option::Option<
2756        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, info: *mut audio_convert_info),
2757    >,
2758#[doc = " Returns desired video format information\n\n @param          data  Data associated with this encoder context\n @param\\[in/out\\]  info  Video format information"]
2759    pub get_video_info: ::std::option::Option<
2760        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, info: *mut video_scale_info),
2761    >,
2762    pub type_data: *mut ::std::os::raw::c_void,
2763    pub free_type_data:
2764        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2765    pub caps: u32,
2766#[doc = " Gets the default settings for this encoder\n\n If get_defaults is also defined both will be called, and the first\n call will be to get_defaults, then to get_defaults2.\n\n @param\\[out\\]  settings  Data to assign default settings to\n @param\\[in\\]   typedata  Type Data"]
2767    pub get_defaults2: ::std::option::Option<
2768        unsafe extern "C" fn(settings: *mut obs_data_t, type_data: *mut ::std::os::raw::c_void),
2769    >,
2770#[doc = " Gets the property information of this encoder\n\n @param\\[in\\]   data      Pointer from create (or null)\n @param\\[in\\]   typedata  Type Data\n @return                The properties data"]
2771    pub get_properties2: ::std::option::Option<
2772        unsafe extern "C" fn(
2773            data: *mut ::std::os::raw::c_void,
2774            type_data: *mut ::std::os::raw::c_void,
2775        ) -> *mut obs_properties_t,
2776    >,
2777    pub encode_texture: ::std::option::Option<
2778        unsafe extern "C" fn(
2779            data: *mut ::std::os::raw::c_void,
2780            handle: u32,
2781            pts: i64,
2782            lock_key: u64,
2783            next_key: *mut u64,
2784            packet: *mut encoder_packet,
2785            received_packet: *mut bool,
2786        ) -> bool,
2787    >,
2788    pub encode_texture2: ::std::option::Option<
2789        unsafe extern "C" fn(
2790            data: *mut ::std::os::raw::c_void,
2791            texture: *mut encoder_texture,
2792            pts: i64,
2793            lock_key: u64,
2794            next_key: *mut u64,
2795            packet: *mut encoder_packet,
2796            received_packet: *mut bool,
2797        ) -> bool,
2798    >,
2799}
2800#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2801const _: () = {
2802    ["Size of obs_encoder_info"][::std::mem::size_of::<obs_encoder_info>() - 176usize];
2803    ["Alignment of obs_encoder_info"][::std::mem::align_of::<obs_encoder_info>() - 8usize];
2804    ["Offset of field: obs_encoder_info::id"]
2805        [::std::mem::offset_of!(obs_encoder_info, id) - 0usize];
2806    ["Offset of field: obs_encoder_info::type_"]
2807        [::std::mem::offset_of!(obs_encoder_info, type_) - 8usize];
2808    ["Offset of field: obs_encoder_info::codec"]
2809        [::std::mem::offset_of!(obs_encoder_info, codec) - 16usize];
2810    ["Offset of field: obs_encoder_info::get_name"]
2811        [::std::mem::offset_of!(obs_encoder_info, get_name) - 24usize];
2812    ["Offset of field: obs_encoder_info::create"]
2813        [::std::mem::offset_of!(obs_encoder_info, create) - 32usize];
2814    ["Offset of field: obs_encoder_info::destroy"]
2815        [::std::mem::offset_of!(obs_encoder_info, destroy) - 40usize];
2816    ["Offset of field: obs_encoder_info::encode"]
2817        [::std::mem::offset_of!(obs_encoder_info, encode) - 48usize];
2818    ["Offset of field: obs_encoder_info::get_frame_size"]
2819        [::std::mem::offset_of!(obs_encoder_info, get_frame_size) - 56usize];
2820    ["Offset of field: obs_encoder_info::get_defaults"]
2821        [::std::mem::offset_of!(obs_encoder_info, get_defaults) - 64usize];
2822    ["Offset of field: obs_encoder_info::get_properties"]
2823        [::std::mem::offset_of!(obs_encoder_info, get_properties) - 72usize];
2824    ["Offset of field: obs_encoder_info::update"]
2825        [::std::mem::offset_of!(obs_encoder_info, update) - 80usize];
2826    ["Offset of field: obs_encoder_info::get_extra_data"]
2827        [::std::mem::offset_of!(obs_encoder_info, get_extra_data) - 88usize];
2828    ["Offset of field: obs_encoder_info::get_sei_data"]
2829        [::std::mem::offset_of!(obs_encoder_info, get_sei_data) - 96usize];
2830    ["Offset of field: obs_encoder_info::get_audio_info"]
2831        [::std::mem::offset_of!(obs_encoder_info, get_audio_info) - 104usize];
2832    ["Offset of field: obs_encoder_info::get_video_info"]
2833        [::std::mem::offset_of!(obs_encoder_info, get_video_info) - 112usize];
2834    ["Offset of field: obs_encoder_info::type_data"]
2835        [::std::mem::offset_of!(obs_encoder_info, type_data) - 120usize];
2836    ["Offset of field: obs_encoder_info::free_type_data"]
2837        [::std::mem::offset_of!(obs_encoder_info, free_type_data) - 128usize];
2838    ["Offset of field: obs_encoder_info::caps"]
2839        [::std::mem::offset_of!(obs_encoder_info, caps) - 136usize];
2840    ["Offset of field: obs_encoder_info::get_defaults2"]
2841        [::std::mem::offset_of!(obs_encoder_info, get_defaults2) - 144usize];
2842    ["Offset of field: obs_encoder_info::get_properties2"]
2843        [::std::mem::offset_of!(obs_encoder_info, get_properties2) - 152usize];
2844    ["Offset of field: obs_encoder_info::encode_texture"]
2845        [::std::mem::offset_of!(obs_encoder_info, encode_texture) - 160usize];
2846    ["Offset of field: obs_encoder_info::encode_texture2"]
2847        [::std::mem::offset_of!(obs_encoder_info, encode_texture2) - 168usize];
2848};
2849#[repr(C)]
2850pub struct obs_output_info {
2851    pub id: *const ::std::os::raw::c_char,
2852    pub flags: u32,
2853    pub get_name: ::std::option::Option<
2854        unsafe extern "C" fn(
2855            type_data: *mut ::std::os::raw::c_void,
2856        ) -> *const ::std::os::raw::c_char,
2857    >,
2858    pub create: ::std::option::Option<
2859        unsafe extern "C" fn(
2860            settings: *mut obs_data_t,
2861            output: *mut obs_output_t,
2862        ) -> *mut ::std::os::raw::c_void,
2863    >,
2864    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2865    pub start:
2866        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
2867    pub stop:
2868        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, ts: u64)>,
2869    pub raw_video: ::std::option::Option<
2870        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frame: *mut video_data),
2871    >,
2872    pub raw_audio: ::std::option::Option<
2873        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frames: *mut audio_data),
2874    >,
2875    pub encoded_packet: ::std::option::Option<
2876        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, packet: *mut encoder_packet),
2877    >,
2878    pub update: ::std::option::Option<
2879        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2880    >,
2881    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2882    pub get_properties: ::std::option::Option<
2883        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2884    >,
2885    pub unused1: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2886    pub get_total_bytes:
2887        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u64>,
2888    pub get_dropped_frames: ::std::option::Option<
2889        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2890    >,
2891    pub type_data: *mut ::std::os::raw::c_void,
2892    pub free_type_data:
2893        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2894    pub get_congestion:
2895        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> f32>,
2896    pub get_connect_time_ms: ::std::option::Option<
2897        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2898    >,
2899    pub encoded_video_codecs: *const ::std::os::raw::c_char,
2900    pub encoded_audio_codecs: *const ::std::os::raw::c_char,
2901    pub raw_audio2: ::std::option::Option<
2902        unsafe extern "C" fn(
2903            data: *mut ::std::os::raw::c_void,
2904            idx: usize,
2905            frames: *mut audio_data,
2906        ),
2907    >,
2908    pub protocols: *const ::std::os::raw::c_char,
2909}
2910#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2911const _: () = {
2912    ["Size of obs_output_info"][::std::mem::size_of::<obs_output_info>() - 192usize];
2913    ["Alignment of obs_output_info"][::std::mem::align_of::<obs_output_info>() - 8usize];
2914    ["Offset of field: obs_output_info::id"][::std::mem::offset_of!(obs_output_info, id) - 0usize];
2915    ["Offset of field: obs_output_info::flags"]
2916        [::std::mem::offset_of!(obs_output_info, flags) - 8usize];
2917    ["Offset of field: obs_output_info::get_name"]
2918        [::std::mem::offset_of!(obs_output_info, get_name) - 16usize];
2919    ["Offset of field: obs_output_info::create"]
2920        [::std::mem::offset_of!(obs_output_info, create) - 24usize];
2921    ["Offset of field: obs_output_info::destroy"]
2922        [::std::mem::offset_of!(obs_output_info, destroy) - 32usize];
2923    ["Offset of field: obs_output_info::start"]
2924        [::std::mem::offset_of!(obs_output_info, start) - 40usize];
2925    ["Offset of field: obs_output_info::stop"]
2926        [::std::mem::offset_of!(obs_output_info, stop) - 48usize];
2927    ["Offset of field: obs_output_info::raw_video"]
2928        [::std::mem::offset_of!(obs_output_info, raw_video) - 56usize];
2929    ["Offset of field: obs_output_info::raw_audio"]
2930        [::std::mem::offset_of!(obs_output_info, raw_audio) - 64usize];
2931    ["Offset of field: obs_output_info::encoded_packet"]
2932        [::std::mem::offset_of!(obs_output_info, encoded_packet) - 72usize];
2933    ["Offset of field: obs_output_info::update"]
2934        [::std::mem::offset_of!(obs_output_info, update) - 80usize];
2935    ["Offset of field: obs_output_info::get_defaults"]
2936        [::std::mem::offset_of!(obs_output_info, get_defaults) - 88usize];
2937    ["Offset of field: obs_output_info::get_properties"]
2938        [::std::mem::offset_of!(obs_output_info, get_properties) - 96usize];
2939    ["Offset of field: obs_output_info::unused1"]
2940        [::std::mem::offset_of!(obs_output_info, unused1) - 104usize];
2941    ["Offset of field: obs_output_info::get_total_bytes"]
2942        [::std::mem::offset_of!(obs_output_info, get_total_bytes) - 112usize];
2943    ["Offset of field: obs_output_info::get_dropped_frames"]
2944        [::std::mem::offset_of!(obs_output_info, get_dropped_frames) - 120usize];
2945    ["Offset of field: obs_output_info::type_data"]
2946        [::std::mem::offset_of!(obs_output_info, type_data) - 128usize];
2947    ["Offset of field: obs_output_info::free_type_data"]
2948        [::std::mem::offset_of!(obs_output_info, free_type_data) - 136usize];
2949    ["Offset of field: obs_output_info::get_congestion"]
2950        [::std::mem::offset_of!(obs_output_info, get_congestion) - 144usize];
2951    ["Offset of field: obs_output_info::get_connect_time_ms"]
2952        [::std::mem::offset_of!(obs_output_info, get_connect_time_ms) - 152usize];
2953    ["Offset of field: obs_output_info::encoded_video_codecs"]
2954        [::std::mem::offset_of!(obs_output_info, encoded_video_codecs) - 160usize];
2955    ["Offset of field: obs_output_info::encoded_audio_codecs"]
2956        [::std::mem::offset_of!(obs_output_info, encoded_audio_codecs) - 168usize];
2957    ["Offset of field: obs_output_info::raw_audio2"]
2958        [::std::mem::offset_of!(obs_output_info, raw_audio2) - 176usize];
2959    ["Offset of field: obs_output_info::protocols"]
2960        [::std::mem::offset_of!(obs_output_info, protocols) - 184usize];
2961};
2962#[repr(C)]
2963#[derive(Debug, Copy, Clone)]
2964pub struct obs_service_resolution {
2965    pub cx: ::std::os::raw::c_int,
2966    pub cy: ::std::os::raw::c_int,
2967}
2968#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2969const _: () = {
2970    ["Size of obs_service_resolution"][::std::mem::size_of::<obs_service_resolution>() - 8usize];
2971    ["Alignment of obs_service_resolution"]
2972        [::std::mem::align_of::<obs_service_resolution>() - 4usize];
2973    ["Offset of field: obs_service_resolution::cx"]
2974        [::std::mem::offset_of!(obs_service_resolution, cx) - 0usize];
2975    ["Offset of field: obs_service_resolution::cy"]
2976        [::std::mem::offset_of!(obs_service_resolution, cy) - 4usize];
2977};
2978pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_SERVER_URL: obs_service_connect_info =
2979    0;
2980pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_ID: obs_service_connect_info = 2;
2981pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_KEY: obs_service_connect_info =
2982    2;
2983pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_USERNAME: obs_service_connect_info = 4;
2984pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_PASSWORD: obs_service_connect_info = 6;
2985pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_ENCRYPT_PASSPHRASE:
2986    obs_service_connect_info = 8;
2987pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_BEARER_TOKEN: obs_service_connect_info =
2988    10;
2989pub type obs_service_connect_info = ::std::os::raw::c_int;
2990#[repr(C)]
2991#[derive(Debug, Copy, Clone)]
2992pub struct obs_service_info {
2993    pub id: *const ::std::os::raw::c_char,
2994    pub get_name: ::std::option::Option<
2995        unsafe extern "C" fn(
2996            type_data: *mut ::std::os::raw::c_void,
2997        ) -> *const ::std::os::raw::c_char,
2998    >,
2999    pub create: ::std::option::Option<
3000        unsafe extern "C" fn(
3001            settings: *mut obs_data_t,
3002            service: *mut obs_service_t,
3003        ) -> *mut ::std::os::raw::c_void,
3004    >,
3005    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3006    pub activate: ::std::option::Option<
3007        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3008    >,
3009    pub deactivate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3010    pub update: ::std::option::Option<
3011        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3012    >,
3013    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
3014    pub get_properties: ::std::option::Option<
3015        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
3016    >,
3017#[doc = " Called when getting ready to start up an output, before the encoders\n and output are initialized\n\n @param  data    Internal service data\n @param  output  Output context\n @return         true to allow the output to start up,\n                 false to prevent output from starting up"]
3018    pub initialize: ::std::option::Option<
3019        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, output: *mut obs_output_t) -> bool,
3020    >,
3021    pub get_url: ::std::option::Option<
3022        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3023    >,
3024    pub get_key: ::std::option::Option<
3025        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3026    >,
3027    pub get_username: ::std::option::Option<
3028        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3029    >,
3030    pub get_password: ::std::option::Option<
3031        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3032    >,
3033    pub deprecated_1: ::std::option::Option<unsafe extern "C" fn() -> bool>,
3034    pub apply_encoder_settings: ::std::option::Option<
3035        unsafe extern "C" fn(
3036            data: *mut ::std::os::raw::c_void,
3037            video_encoder_settings: *mut obs_data_t,
3038            audio_encoder_settings: *mut obs_data_t,
3039        ),
3040    >,
3041    pub type_data: *mut ::std::os::raw::c_void,
3042    pub free_type_data:
3043        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
3044    pub get_output_type: ::std::option::Option<
3045        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3046    >,
3047    pub get_supported_resolutions: ::std::option::Option<
3048        unsafe extern "C" fn(
3049            data: *mut ::std::os::raw::c_void,
3050            resolutions: *mut *mut obs_service_resolution,
3051            count: *mut usize,
3052        ),
3053    >,
3054    pub get_max_fps: ::std::option::Option<
3055        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, fps: *mut ::std::os::raw::c_int),
3056    >,
3057    pub get_max_bitrate: ::std::option::Option<
3058        unsafe extern "C" fn(
3059            data: *mut ::std::os::raw::c_void,
3060            video_bitrate: *mut ::std::os::raw::c_int,
3061            audio_bitrate: *mut ::std::os::raw::c_int,
3062        ),
3063    >,
3064    pub get_supported_video_codecs: ::std::option::Option<
3065        unsafe extern "C" fn(
3066            data: *mut ::std::os::raw::c_void,
3067        ) -> *mut *const ::std::os::raw::c_char,
3068    >,
3069    pub get_protocol: ::std::option::Option<
3070        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3071    >,
3072    pub get_supported_audio_codecs: ::std::option::Option<
3073        unsafe extern "C" fn(
3074            data: *mut ::std::os::raw::c_void,
3075        ) -> *mut *const ::std::os::raw::c_char,
3076    >,
3077    pub get_connect_info: ::std::option::Option<
3078        unsafe extern "C" fn(
3079            data: *mut ::std::os::raw::c_void,
3080            type_: u32,
3081        ) -> *const ::std::os::raw::c_char,
3082    >,
3083    pub can_try_to_connect:
3084        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
3085}
3086#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3087const _: () = {
3088    ["Size of obs_service_info"][::std::mem::size_of::<obs_service_info>() - 216usize];
3089    ["Alignment of obs_service_info"][::std::mem::align_of::<obs_service_info>() - 8usize];
3090    ["Offset of field: obs_service_info::id"]
3091        [::std::mem::offset_of!(obs_service_info, id) - 0usize];
3092    ["Offset of field: obs_service_info::get_name"]
3093        [::std::mem::offset_of!(obs_service_info, get_name) - 8usize];
3094    ["Offset of field: obs_service_info::create"]
3095        [::std::mem::offset_of!(obs_service_info, create) - 16usize];
3096    ["Offset of field: obs_service_info::destroy"]
3097        [::std::mem::offset_of!(obs_service_info, destroy) - 24usize];
3098    ["Offset of field: obs_service_info::activate"]
3099        [::std::mem::offset_of!(obs_service_info, activate) - 32usize];
3100    ["Offset of field: obs_service_info::deactivate"]
3101        [::std::mem::offset_of!(obs_service_info, deactivate) - 40usize];
3102    ["Offset of field: obs_service_info::update"]
3103        [::std::mem::offset_of!(obs_service_info, update) - 48usize];
3104    ["Offset of field: obs_service_info::get_defaults"]
3105        [::std::mem::offset_of!(obs_service_info, get_defaults) - 56usize];
3106    ["Offset of field: obs_service_info::get_properties"]
3107        [::std::mem::offset_of!(obs_service_info, get_properties) - 64usize];
3108    ["Offset of field: obs_service_info::initialize"]
3109        [::std::mem::offset_of!(obs_service_info, initialize) - 72usize];
3110    ["Offset of field: obs_service_info::get_url"]
3111        [::std::mem::offset_of!(obs_service_info, get_url) - 80usize];
3112    ["Offset of field: obs_service_info::get_key"]
3113        [::std::mem::offset_of!(obs_service_info, get_key) - 88usize];
3114    ["Offset of field: obs_service_info::get_username"]
3115        [::std::mem::offset_of!(obs_service_info, get_username) - 96usize];
3116    ["Offset of field: obs_service_info::get_password"]
3117        [::std::mem::offset_of!(obs_service_info, get_password) - 104usize];
3118    ["Offset of field: obs_service_info::deprecated_1"]
3119        [::std::mem::offset_of!(obs_service_info, deprecated_1) - 112usize];
3120    ["Offset of field: obs_service_info::apply_encoder_settings"]
3121        [::std::mem::offset_of!(obs_service_info, apply_encoder_settings) - 120usize];
3122    ["Offset of field: obs_service_info::type_data"]
3123        [::std::mem::offset_of!(obs_service_info, type_data) - 128usize];
3124    ["Offset of field: obs_service_info::free_type_data"]
3125        [::std::mem::offset_of!(obs_service_info, free_type_data) - 136usize];
3126    ["Offset of field: obs_service_info::get_output_type"]
3127        [::std::mem::offset_of!(obs_service_info, get_output_type) - 144usize];
3128    ["Offset of field: obs_service_info::get_supported_resolutions"]
3129        [::std::mem::offset_of!(obs_service_info, get_supported_resolutions) - 152usize];
3130    ["Offset of field: obs_service_info::get_max_fps"]
3131        [::std::mem::offset_of!(obs_service_info, get_max_fps) - 160usize];
3132    ["Offset of field: obs_service_info::get_max_bitrate"]
3133        [::std::mem::offset_of!(obs_service_info, get_max_bitrate) - 168usize];
3134    ["Offset of field: obs_service_info::get_supported_video_codecs"]
3135        [::std::mem::offset_of!(obs_service_info, get_supported_video_codecs) - 176usize];
3136    ["Offset of field: obs_service_info::get_protocol"]
3137        [::std::mem::offset_of!(obs_service_info, get_protocol) - 184usize];
3138    ["Offset of field: obs_service_info::get_supported_audio_codecs"]
3139        [::std::mem::offset_of!(obs_service_info, get_supported_audio_codecs) - 192usize];
3140    ["Offset of field: obs_service_info::get_connect_info"]
3141        [::std::mem::offset_of!(obs_service_info, get_connect_info) - 200usize];
3142    ["Offset of field: obs_service_info::can_try_to_connect"]
3143        [::std::mem::offset_of!(obs_service_info, can_try_to_connect) - 208usize];
3144};
3145#[doc = " @brief A simple cubic fader for controlling audio levels\n\n This is a very common type of software fader since it yields good\n results while being quite performant.\n The input value is mapped to mul values with the simple formula x^3."]
3146pub const obs_fader_type_OBS_FADER_CUBIC: obs_fader_type = 0;
3147#[doc = " @brief A fader compliant to IEC 60-268-18\n\n This type of fader has several segments with different slopes that\n map deflection linearly to dB values. The segments are defined as\n in the following table:\n\n@code\nDeflection           | Volume\n------------------------------------------\n\\[ 100   %, 75   % \\]  | \\[   0 dB,   -9 dB \\]\n\\[  75   %, 50   % \\]  | \\[  -9 dB,  -20 dB \\]\n\\[  50   %, 30   % \\]  | \\[ -20 dB,  -30 dB \\]\n\\[  30   %, 15   % \\]  | \\[ -30 dB,  -40 dB \\]\n\\[  15   %,  7.5 % \\]  | \\[ -40 dB,  -50 dB \\]\n\\[   7.5 %,  2.5 % \\]  | \\[ -50 dB,  -60 dB \\]\n\\[   2.5 %,  0   % \\]  | \\[ -60 dB, -inf dB \\]\n@endcode"]
3148pub const obs_fader_type_OBS_FADER_IEC: obs_fader_type = 1;
3149#[doc = " @brief Logarithmic fader"]
3150pub const obs_fader_type_OBS_FADER_LOG: obs_fader_type = 2;
3151#[doc = " @brief Fader types"]
3152pub type obs_fader_type = ::std::os::raw::c_int;
3153#[doc = " @brief A simple peak meter measuring the maximum of all samples.\n\n This was a very common type of peak meter used for audio, but\n is not very accurate with regards to further audio processing."]
3154pub const obs_peak_meter_type_SAMPLE_PEAK_METER: obs_peak_meter_type = 0;
3155#[doc = " @brief An accurate peak meter measure the maximum of inter-samples.\n\n This meter is more computational intensive due to 4x oversampling\n to determine the true peak to an accuracy of +/- 0.5 dB."]
3156pub const obs_peak_meter_type_TRUE_PEAK_METER: obs_peak_meter_type = 1;
3157#[doc = " @brief Peak meter types"]
3158pub type obs_peak_meter_type = ::std::os::raw::c_int;
3159pub type obs_fader_changed_t =
3160    ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, db: f32)>;
3161pub type obs_volmeter_updated_t = ::std::option::Option<
3162    unsafe extern "C" fn(
3163        param: *mut ::std::os::raw::c_void,
3164        magnitude: *const f32,
3165        peak: *const f32,
3166        input_peak: *const f32,
3167    ),
3168>;
3169pub type obs_fader_conversion_t = ::std::option::Option<unsafe extern "C" fn(val: f32) -> f32>;
3170pub type obs_hotkey_id = usize;
3171pub type obs_hotkey_pair_id = usize;
3172pub const obs_key_OBS_KEY_NONE: obs_key = 0;
3173pub const obs_key_OBS_KEY_RETURN: obs_key = 1;
3174pub const obs_key_OBS_KEY_ENTER: obs_key = 2;
3175pub const obs_key_OBS_KEY_ESCAPE: obs_key = 3;
3176pub const obs_key_OBS_KEY_TAB: obs_key = 4;
3177pub const obs_key_OBS_KEY_BACKTAB: obs_key = 5;
3178pub const obs_key_OBS_KEY_BACKSPACE: obs_key = 6;
3179pub const obs_key_OBS_KEY_INSERT: obs_key = 7;
3180pub const obs_key_OBS_KEY_DELETE: obs_key = 8;
3181pub const obs_key_OBS_KEY_PAUSE: obs_key = 9;
3182pub const obs_key_OBS_KEY_PRINT: obs_key = 10;
3183pub const obs_key_OBS_KEY_SYSREQ: obs_key = 11;
3184pub const obs_key_OBS_KEY_CLEAR: obs_key = 12;
3185pub const obs_key_OBS_KEY_HOME: obs_key = 13;
3186pub const obs_key_OBS_KEY_END: obs_key = 14;
3187pub const obs_key_OBS_KEY_LEFT: obs_key = 15;
3188pub const obs_key_OBS_KEY_UP: obs_key = 16;
3189pub const obs_key_OBS_KEY_RIGHT: obs_key = 17;
3190pub const obs_key_OBS_KEY_DOWN: obs_key = 18;
3191pub const obs_key_OBS_KEY_PAGEUP: obs_key = 19;
3192pub const obs_key_OBS_KEY_PAGEDOWN: obs_key = 20;
3193pub const obs_key_OBS_KEY_SHIFT: obs_key = 21;
3194pub const obs_key_OBS_KEY_CONTROL: obs_key = 22;
3195pub const obs_key_OBS_KEY_META: obs_key = 23;
3196pub const obs_key_OBS_KEY_ALT: obs_key = 24;
3197pub const obs_key_OBS_KEY_ALTGR: obs_key = 25;
3198pub const obs_key_OBS_KEY_CAPSLOCK: obs_key = 26;
3199pub const obs_key_OBS_KEY_NUMLOCK: obs_key = 27;
3200pub const obs_key_OBS_KEY_SCROLLLOCK: obs_key = 28;
3201pub const obs_key_OBS_KEY_F1: obs_key = 29;
3202pub const obs_key_OBS_KEY_F2: obs_key = 30;
3203pub const obs_key_OBS_KEY_F3: obs_key = 31;
3204pub const obs_key_OBS_KEY_F4: obs_key = 32;
3205pub const obs_key_OBS_KEY_F5: obs_key = 33;
3206pub const obs_key_OBS_KEY_F6: obs_key = 34;
3207pub const obs_key_OBS_KEY_F7: obs_key = 35;
3208pub const obs_key_OBS_KEY_F8: obs_key = 36;
3209pub const obs_key_OBS_KEY_F9: obs_key = 37;
3210pub const obs_key_OBS_KEY_F10: obs_key = 38;
3211pub const obs_key_OBS_KEY_F11: obs_key = 39;
3212pub const obs_key_OBS_KEY_F12: obs_key = 40;
3213pub const obs_key_OBS_KEY_F13: obs_key = 41;
3214pub const obs_key_OBS_KEY_F14: obs_key = 42;
3215pub const obs_key_OBS_KEY_F15: obs_key = 43;
3216pub const obs_key_OBS_KEY_F16: obs_key = 44;
3217pub const obs_key_OBS_KEY_F17: obs_key = 45;
3218pub const obs_key_OBS_KEY_F18: obs_key = 46;
3219pub const obs_key_OBS_KEY_F19: obs_key = 47;
3220pub const obs_key_OBS_KEY_F20: obs_key = 48;
3221pub const obs_key_OBS_KEY_F21: obs_key = 49;
3222pub const obs_key_OBS_KEY_F22: obs_key = 50;
3223pub const obs_key_OBS_KEY_F23: obs_key = 51;
3224pub const obs_key_OBS_KEY_F24: obs_key = 52;
3225pub const obs_key_OBS_KEY_F25: obs_key = 53;
3226pub const obs_key_OBS_KEY_F26: obs_key = 54;
3227pub const obs_key_OBS_KEY_F27: obs_key = 55;
3228pub const obs_key_OBS_KEY_F28: obs_key = 56;
3229pub const obs_key_OBS_KEY_F29: obs_key = 57;
3230pub const obs_key_OBS_KEY_F30: obs_key = 58;
3231pub const obs_key_OBS_KEY_F31: obs_key = 59;
3232pub const obs_key_OBS_KEY_F32: obs_key = 60;
3233pub const obs_key_OBS_KEY_F33: obs_key = 61;
3234pub const obs_key_OBS_KEY_F34: obs_key = 62;
3235pub const obs_key_OBS_KEY_F35: obs_key = 63;
3236pub const obs_key_OBS_KEY_MENU: obs_key = 64;
3237pub const obs_key_OBS_KEY_HYPER_L: obs_key = 65;
3238pub const obs_key_OBS_KEY_HYPER_R: obs_key = 66;
3239pub const obs_key_OBS_KEY_HELP: obs_key = 67;
3240pub const obs_key_OBS_KEY_DIRECTION_L: obs_key = 68;
3241pub const obs_key_OBS_KEY_DIRECTION_R: obs_key = 69;
3242pub const obs_key_OBS_KEY_SPACE: obs_key = 70;
3243pub const obs_key_OBS_KEY_EXCLAM: obs_key = 71;
3244pub const obs_key_OBS_KEY_QUOTEDBL: obs_key = 72;
3245pub const obs_key_OBS_KEY_NUMBERSIGN: obs_key = 73;
3246pub const obs_key_OBS_KEY_DOLLAR: obs_key = 74;
3247pub const obs_key_OBS_KEY_PERCENT: obs_key = 75;
3248pub const obs_key_OBS_KEY_AMPERSAND: obs_key = 76;
3249pub const obs_key_OBS_KEY_APOSTROPHE: obs_key = 77;
3250pub const obs_key_OBS_KEY_PARENLEFT: obs_key = 78;
3251pub const obs_key_OBS_KEY_PARENRIGHT: obs_key = 79;
3252pub const obs_key_OBS_KEY_ASTERISK: obs_key = 80;
3253pub const obs_key_OBS_KEY_PLUS: obs_key = 81;
3254pub const obs_key_OBS_KEY_COMMA: obs_key = 82;
3255pub const obs_key_OBS_KEY_MINUS: obs_key = 83;
3256pub const obs_key_OBS_KEY_PERIOD: obs_key = 84;
3257pub const obs_key_OBS_KEY_SLASH: obs_key = 85;
3258pub const obs_key_OBS_KEY_0: obs_key = 86;
3259pub const obs_key_OBS_KEY_1: obs_key = 87;
3260pub const obs_key_OBS_KEY_2: obs_key = 88;
3261pub const obs_key_OBS_KEY_3: obs_key = 89;
3262pub const obs_key_OBS_KEY_4: obs_key = 90;
3263pub const obs_key_OBS_KEY_5: obs_key = 91;
3264pub const obs_key_OBS_KEY_6: obs_key = 92;
3265pub const obs_key_OBS_KEY_7: obs_key = 93;
3266pub const obs_key_OBS_KEY_8: obs_key = 94;
3267pub const obs_key_OBS_KEY_9: obs_key = 95;
3268pub const obs_key_OBS_KEY_NUMEQUAL: obs_key = 96;
3269pub const obs_key_OBS_KEY_NUMASTERISK: obs_key = 97;
3270pub const obs_key_OBS_KEY_NUMPLUS: obs_key = 98;
3271pub const obs_key_OBS_KEY_NUMCOMMA: obs_key = 99;
3272pub const obs_key_OBS_KEY_NUMMINUS: obs_key = 100;
3273pub const obs_key_OBS_KEY_NUMPERIOD: obs_key = 101;
3274pub const obs_key_OBS_KEY_NUMSLASH: obs_key = 102;
3275pub const obs_key_OBS_KEY_NUM0: obs_key = 103;
3276pub const obs_key_OBS_KEY_NUM1: obs_key = 104;
3277pub const obs_key_OBS_KEY_NUM2: obs_key = 105;
3278pub const obs_key_OBS_KEY_NUM3: obs_key = 106;
3279pub const obs_key_OBS_KEY_NUM4: obs_key = 107;
3280pub const obs_key_OBS_KEY_NUM5: obs_key = 108;
3281pub const obs_key_OBS_KEY_NUM6: obs_key = 109;
3282pub const obs_key_OBS_KEY_NUM7: obs_key = 110;
3283pub const obs_key_OBS_KEY_NUM8: obs_key = 111;
3284pub const obs_key_OBS_KEY_NUM9: obs_key = 112;
3285pub const obs_key_OBS_KEY_COLON: obs_key = 113;
3286pub const obs_key_OBS_KEY_SEMICOLON: obs_key = 114;
3287pub const obs_key_OBS_KEY_QUOTE: obs_key = 115;
3288pub const obs_key_OBS_KEY_LESS: obs_key = 116;
3289pub const obs_key_OBS_KEY_EQUAL: obs_key = 117;
3290pub const obs_key_OBS_KEY_GREATER: obs_key = 118;
3291pub const obs_key_OBS_KEY_QUESTION: obs_key = 119;
3292pub const obs_key_OBS_KEY_AT: obs_key = 120;
3293pub const obs_key_OBS_KEY_A: obs_key = 121;
3294pub const obs_key_OBS_KEY_B: obs_key = 122;
3295pub const obs_key_OBS_KEY_C: obs_key = 123;
3296pub const obs_key_OBS_KEY_D: obs_key = 124;
3297pub const obs_key_OBS_KEY_E: obs_key = 125;
3298pub const obs_key_OBS_KEY_F: obs_key = 126;
3299pub const obs_key_OBS_KEY_G: obs_key = 127;
3300pub const obs_key_OBS_KEY_H: obs_key = 128;
3301pub const obs_key_OBS_KEY_I: obs_key = 129;
3302pub const obs_key_OBS_KEY_J: obs_key = 130;
3303pub const obs_key_OBS_KEY_K: obs_key = 131;
3304pub const obs_key_OBS_KEY_L: obs_key = 132;
3305pub const obs_key_OBS_KEY_M: obs_key = 133;
3306pub const obs_key_OBS_KEY_N: obs_key = 134;
3307pub const obs_key_OBS_KEY_O: obs_key = 135;
3308pub const obs_key_OBS_KEY_P: obs_key = 136;
3309pub const obs_key_OBS_KEY_Q: obs_key = 137;
3310pub const obs_key_OBS_KEY_R: obs_key = 138;
3311pub const obs_key_OBS_KEY_S: obs_key = 139;
3312pub const obs_key_OBS_KEY_T: obs_key = 140;
3313pub const obs_key_OBS_KEY_U: obs_key = 141;
3314pub const obs_key_OBS_KEY_V: obs_key = 142;
3315pub const obs_key_OBS_KEY_W: obs_key = 143;
3316pub const obs_key_OBS_KEY_X: obs_key = 144;
3317pub const obs_key_OBS_KEY_Y: obs_key = 145;
3318pub const obs_key_OBS_KEY_Z: obs_key = 146;
3319pub const obs_key_OBS_KEY_BRACKETLEFT: obs_key = 147;
3320pub const obs_key_OBS_KEY_BACKSLASH: obs_key = 148;
3321pub const obs_key_OBS_KEY_BRACKETRIGHT: obs_key = 149;
3322pub const obs_key_OBS_KEY_ASCIICIRCUM: obs_key = 150;
3323pub const obs_key_OBS_KEY_UNDERSCORE: obs_key = 151;
3324pub const obs_key_OBS_KEY_QUOTELEFT: obs_key = 152;
3325pub const obs_key_OBS_KEY_BRACELEFT: obs_key = 153;
3326pub const obs_key_OBS_KEY_BAR: obs_key = 154;
3327pub const obs_key_OBS_KEY_BRACERIGHT: obs_key = 155;
3328pub const obs_key_OBS_KEY_ASCIITILDE: obs_key = 156;
3329pub const obs_key_OBS_KEY_NOBREAKSPACE: obs_key = 157;
3330pub const obs_key_OBS_KEY_EXCLAMDOWN: obs_key = 158;
3331pub const obs_key_OBS_KEY_CENT: obs_key = 159;
3332pub const obs_key_OBS_KEY_STERLING: obs_key = 160;
3333pub const obs_key_OBS_KEY_CURRENCY: obs_key = 161;
3334pub const obs_key_OBS_KEY_YEN: obs_key = 162;
3335pub const obs_key_OBS_KEY_BROKENBAR: obs_key = 163;
3336pub const obs_key_OBS_KEY_SECTION: obs_key = 164;
3337pub const obs_key_OBS_KEY_DIAERESIS: obs_key = 165;
3338pub const obs_key_OBS_KEY_COPYRIGHT: obs_key = 166;
3339pub const obs_key_OBS_KEY_ORDFEMININE: obs_key = 167;
3340pub const obs_key_OBS_KEY_GUILLEMOTLEFT: obs_key = 168;
3341pub const obs_key_OBS_KEY_NOTSIGN: obs_key = 169;
3342pub const obs_key_OBS_KEY_HYPHEN: obs_key = 170;
3343pub const obs_key_OBS_KEY_REGISTERED: obs_key = 171;
3344pub const obs_key_OBS_KEY_MACRON: obs_key = 172;
3345pub const obs_key_OBS_KEY_DEGREE: obs_key = 173;
3346pub const obs_key_OBS_KEY_PLUSMINUS: obs_key = 174;
3347pub const obs_key_OBS_KEY_TWOSUPERIOR: obs_key = 175;
3348pub const obs_key_OBS_KEY_THREESUPERIOR: obs_key = 176;
3349pub const obs_key_OBS_KEY_ACUTE: obs_key = 177;
3350pub const obs_key_OBS_KEY_MU: obs_key = 178;
3351pub const obs_key_OBS_KEY_PARAGRAPH: obs_key = 179;
3352pub const obs_key_OBS_KEY_PERIODCENTERED: obs_key = 180;
3353pub const obs_key_OBS_KEY_CEDILLA: obs_key = 181;
3354pub const obs_key_OBS_KEY_ONESUPERIOR: obs_key = 182;
3355pub const obs_key_OBS_KEY_MASCULINE: obs_key = 183;
3356pub const obs_key_OBS_KEY_GUILLEMOTRIGHT: obs_key = 184;
3357pub const obs_key_OBS_KEY_ONEQUARTER: obs_key = 185;
3358pub const obs_key_OBS_KEY_ONEHALF: obs_key = 186;
3359pub const obs_key_OBS_KEY_THREEQUARTERS: obs_key = 187;
3360pub const obs_key_OBS_KEY_QUESTIONDOWN: obs_key = 188;
3361pub const obs_key_OBS_KEY_AGRAVE: obs_key = 189;
3362pub const obs_key_OBS_KEY_AACUTE: obs_key = 190;
3363pub const obs_key_OBS_KEY_ACIRCUMFLEX: obs_key = 191;
3364pub const obs_key_OBS_KEY_ATILDE: obs_key = 192;
3365pub const obs_key_OBS_KEY_ADIAERESIS: obs_key = 193;
3366pub const obs_key_OBS_KEY_ARING: obs_key = 194;
3367pub const obs_key_OBS_KEY_AE: obs_key = 195;
3368pub const obs_key_OBS_KEY_CCEDILLA: obs_key = 196;
3369pub const obs_key_OBS_KEY_EGRAVE: obs_key = 197;
3370pub const obs_key_OBS_KEY_EACUTE: obs_key = 198;
3371pub const obs_key_OBS_KEY_ECIRCUMFLEX: obs_key = 199;
3372pub const obs_key_OBS_KEY_EDIAERESIS: obs_key = 200;
3373pub const obs_key_OBS_KEY_IGRAVE: obs_key = 201;
3374pub const obs_key_OBS_KEY_IACUTE: obs_key = 202;
3375pub const obs_key_OBS_KEY_ICIRCUMFLEX: obs_key = 203;
3376pub const obs_key_OBS_KEY_IDIAERESIS: obs_key = 204;
3377pub const obs_key_OBS_KEY_ETH: obs_key = 205;
3378pub const obs_key_OBS_KEY_NTILDE: obs_key = 206;
3379pub const obs_key_OBS_KEY_OGRAVE: obs_key = 207;
3380pub const obs_key_OBS_KEY_OACUTE: obs_key = 208;
3381pub const obs_key_OBS_KEY_OCIRCUMFLEX: obs_key = 209;
3382pub const obs_key_OBS_KEY_OTILDE: obs_key = 210;
3383pub const obs_key_OBS_KEY_ODIAERESIS: obs_key = 211;
3384pub const obs_key_OBS_KEY_MULTIPLY: obs_key = 212;
3385pub const obs_key_OBS_KEY_OOBLIQUE: obs_key = 213;
3386pub const obs_key_OBS_KEY_UGRAVE: obs_key = 214;
3387pub const obs_key_OBS_KEY_UACUTE: obs_key = 215;
3388pub const obs_key_OBS_KEY_UCIRCUMFLEX: obs_key = 216;
3389pub const obs_key_OBS_KEY_UDIAERESIS: obs_key = 217;
3390pub const obs_key_OBS_KEY_YACUTE: obs_key = 218;
3391pub const obs_key_OBS_KEY_THORN: obs_key = 219;
3392pub const obs_key_OBS_KEY_SSHARP: obs_key = 220;
3393pub const obs_key_OBS_KEY_DIVISION: obs_key = 221;
3394pub const obs_key_OBS_KEY_YDIAERESIS: obs_key = 222;
3395pub const obs_key_OBS_KEY_MULTI_KEY: obs_key = 223;
3396pub const obs_key_OBS_KEY_CODEINPUT: obs_key = 224;
3397pub const obs_key_OBS_KEY_SINGLECANDIDATE: obs_key = 225;
3398pub const obs_key_OBS_KEY_MULTIPLECANDIDATE: obs_key = 226;
3399pub const obs_key_OBS_KEY_PREVIOUSCANDIDATE: obs_key = 227;
3400pub const obs_key_OBS_KEY_MODE_SWITCH: obs_key = 228;
3401pub const obs_key_OBS_KEY_KANJI: obs_key = 229;
3402pub const obs_key_OBS_KEY_MUHENKAN: obs_key = 230;
3403pub const obs_key_OBS_KEY_HENKAN: obs_key = 231;
3404pub const obs_key_OBS_KEY_ROMAJI: obs_key = 232;
3405pub const obs_key_OBS_KEY_HIRAGANA: obs_key = 233;
3406pub const obs_key_OBS_KEY_KATAKANA: obs_key = 234;
3407pub const obs_key_OBS_KEY_HIRAGANA_KATAKANA: obs_key = 235;
3408pub const obs_key_OBS_KEY_ZENKAKU: obs_key = 236;
3409pub const obs_key_OBS_KEY_HANKAKU: obs_key = 237;
3410pub const obs_key_OBS_KEY_ZENKAKU_HANKAKU: obs_key = 238;
3411pub const obs_key_OBS_KEY_TOUROKU: obs_key = 239;
3412pub const obs_key_OBS_KEY_MASSYO: obs_key = 240;
3413pub const obs_key_OBS_KEY_KANA_LOCK: obs_key = 241;
3414pub const obs_key_OBS_KEY_KANA_SHIFT: obs_key = 242;
3415pub const obs_key_OBS_KEY_EISU_SHIFT: obs_key = 243;
3416pub const obs_key_OBS_KEY_EISU_TOGGLE: obs_key = 244;
3417pub const obs_key_OBS_KEY_HANGUL: obs_key = 245;
3418pub const obs_key_OBS_KEY_HANGUL_START: obs_key = 246;
3419pub const obs_key_OBS_KEY_HANGUL_END: obs_key = 247;
3420pub const obs_key_OBS_KEY_HANGUL_HANJA: obs_key = 248;
3421pub const obs_key_OBS_KEY_HANGUL_JAMO: obs_key = 249;
3422pub const obs_key_OBS_KEY_HANGUL_ROMAJA: obs_key = 250;
3423pub const obs_key_OBS_KEY_HANGUL_JEONJA: obs_key = 251;
3424pub const obs_key_OBS_KEY_HANGUL_BANJA: obs_key = 252;
3425pub const obs_key_OBS_KEY_HANGUL_PREHANJA: obs_key = 253;
3426pub const obs_key_OBS_KEY_HANGUL_POSTHANJA: obs_key = 254;
3427pub const obs_key_OBS_KEY_HANGUL_SPECIAL: obs_key = 255;
3428pub const obs_key_OBS_KEY_DEAD_GRAVE: obs_key = 256;
3429pub const obs_key_OBS_KEY_DEAD_ACUTE: obs_key = 257;
3430pub const obs_key_OBS_KEY_DEAD_CIRCUMFLEX: obs_key = 258;
3431pub const obs_key_OBS_KEY_DEAD_TILDE: obs_key = 259;
3432pub const obs_key_OBS_KEY_DEAD_MACRON: obs_key = 260;
3433pub const obs_key_OBS_KEY_DEAD_BREVE: obs_key = 261;
3434pub const obs_key_OBS_KEY_DEAD_ABOVEDOT: obs_key = 262;
3435pub const obs_key_OBS_KEY_DEAD_DIAERESIS: obs_key = 263;
3436pub const obs_key_OBS_KEY_DEAD_ABOVERING: obs_key = 264;
3437pub const obs_key_OBS_KEY_DEAD_DOUBLEACUTE: obs_key = 265;
3438pub const obs_key_OBS_KEY_DEAD_CARON: obs_key = 266;
3439pub const obs_key_OBS_KEY_DEAD_CEDILLA: obs_key = 267;
3440pub const obs_key_OBS_KEY_DEAD_OGONEK: obs_key = 268;
3441pub const obs_key_OBS_KEY_DEAD_IOTA: obs_key = 269;
3442pub const obs_key_OBS_KEY_DEAD_VOICED_SOUND: obs_key = 270;
3443pub const obs_key_OBS_KEY_DEAD_SEMIVOICED_SOUND: obs_key = 271;
3444pub const obs_key_OBS_KEY_DEAD_BELOWDOT: obs_key = 272;
3445pub const obs_key_OBS_KEY_DEAD_HOOK: obs_key = 273;
3446pub const obs_key_OBS_KEY_DEAD_HORN: obs_key = 274;
3447pub const obs_key_OBS_KEY_BACK: obs_key = 275;
3448pub const obs_key_OBS_KEY_FORWARD: obs_key = 276;
3449pub const obs_key_OBS_KEY_STOP: obs_key = 277;
3450pub const obs_key_OBS_KEY_REFRESH: obs_key = 278;
3451pub const obs_key_OBS_KEY_VOLUMEDOWN: obs_key = 279;
3452pub const obs_key_OBS_KEY_VOLUMEMUTE: obs_key = 280;
3453pub const obs_key_OBS_KEY_VOLUMEUP: obs_key = 281;
3454pub const obs_key_OBS_KEY_BASSBOOST: obs_key = 282;
3455pub const obs_key_OBS_KEY_BASSUP: obs_key = 283;
3456pub const obs_key_OBS_KEY_BASSDOWN: obs_key = 284;
3457pub const obs_key_OBS_KEY_TREBLEUP: obs_key = 285;
3458pub const obs_key_OBS_KEY_TREBLEDOWN: obs_key = 286;
3459pub const obs_key_OBS_KEY_MEDIAPLAY: obs_key = 287;
3460pub const obs_key_OBS_KEY_MEDIASTOP: obs_key = 288;
3461pub const obs_key_OBS_KEY_MEDIAPREVIOUS: obs_key = 289;
3462pub const obs_key_OBS_KEY_MEDIANEXT: obs_key = 290;
3463pub const obs_key_OBS_KEY_MEDIARECORD: obs_key = 291;
3464pub const obs_key_OBS_KEY_MEDIAPAUSE: obs_key = 292;
3465pub const obs_key_OBS_KEY_MEDIATOGGLEPLAYPAUSE: obs_key = 293;
3466pub const obs_key_OBS_KEY_HOMEPAGE: obs_key = 294;
3467pub const obs_key_OBS_KEY_FAVORITES: obs_key = 295;
3468pub const obs_key_OBS_KEY_SEARCH: obs_key = 296;
3469pub const obs_key_OBS_KEY_STANDBY: obs_key = 297;
3470pub const obs_key_OBS_KEY_OPENURL: obs_key = 298;
3471pub const obs_key_OBS_KEY_LAUNCHMAIL: obs_key = 299;
3472pub const obs_key_OBS_KEY_LAUNCHMEDIA: obs_key = 300;
3473pub const obs_key_OBS_KEY_LAUNCH0: obs_key = 301;
3474pub const obs_key_OBS_KEY_LAUNCH1: obs_key = 302;
3475pub const obs_key_OBS_KEY_LAUNCH2: obs_key = 303;
3476pub const obs_key_OBS_KEY_LAUNCH3: obs_key = 304;
3477pub const obs_key_OBS_KEY_LAUNCH4: obs_key = 305;
3478pub const obs_key_OBS_KEY_LAUNCH5: obs_key = 306;
3479pub const obs_key_OBS_KEY_LAUNCH6: obs_key = 307;
3480pub const obs_key_OBS_KEY_LAUNCH7: obs_key = 308;
3481pub const obs_key_OBS_KEY_LAUNCH8: obs_key = 309;
3482pub const obs_key_OBS_KEY_LAUNCH9: obs_key = 310;
3483pub const obs_key_OBS_KEY_LAUNCHA: obs_key = 311;
3484pub const obs_key_OBS_KEY_LAUNCHB: obs_key = 312;
3485pub const obs_key_OBS_KEY_LAUNCHC: obs_key = 313;
3486pub const obs_key_OBS_KEY_LAUNCHD: obs_key = 314;
3487pub const obs_key_OBS_KEY_LAUNCHE: obs_key = 315;
3488pub const obs_key_OBS_KEY_LAUNCHF: obs_key = 316;
3489pub const obs_key_OBS_KEY_LAUNCHG: obs_key = 317;
3490pub const obs_key_OBS_KEY_LAUNCHH: obs_key = 318;
3491pub const obs_key_OBS_KEY_MONBRIGHTNESSUP: obs_key = 319;
3492pub const obs_key_OBS_KEY_MONBRIGHTNESSDOWN: obs_key = 320;
3493pub const obs_key_OBS_KEY_KEYBOARDLIGHTONOFF: obs_key = 321;
3494pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSUP: obs_key = 322;
3495pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSDOWN: obs_key = 323;
3496pub const obs_key_OBS_KEY_POWEROFF: obs_key = 324;
3497pub const obs_key_OBS_KEY_WAKEUP: obs_key = 325;
3498pub const obs_key_OBS_KEY_EJECT: obs_key = 326;
3499pub const obs_key_OBS_KEY_SCREENSAVER: obs_key = 327;
3500pub const obs_key_OBS_KEY_WWW: obs_key = 328;
3501pub const obs_key_OBS_KEY_MEMO: obs_key = 329;
3502pub const obs_key_OBS_KEY_LIGHTBULB: obs_key = 330;
3503pub const obs_key_OBS_KEY_SHOP: obs_key = 331;
3504pub const obs_key_OBS_KEY_HISTORY: obs_key = 332;
3505pub const obs_key_OBS_KEY_ADDFAVORITE: obs_key = 333;
3506pub const obs_key_OBS_KEY_HOTLINKS: obs_key = 334;
3507pub const obs_key_OBS_KEY_BRIGHTNESSADJUST: obs_key = 335;
3508pub const obs_key_OBS_KEY_FINANCE: obs_key = 336;
3509pub const obs_key_OBS_KEY_COMMUNITY: obs_key = 337;
3510pub const obs_key_OBS_KEY_AUDIOREWIND: obs_key = 338;
3511pub const obs_key_OBS_KEY_BACKFORWARD: obs_key = 339;
3512pub const obs_key_OBS_KEY_APPLICATIONLEFT: obs_key = 340;
3513pub const obs_key_OBS_KEY_APPLICATIONRIGHT: obs_key = 341;
3514pub const obs_key_OBS_KEY_BOOK: obs_key = 342;
3515pub const obs_key_OBS_KEY_CD: obs_key = 343;
3516pub const obs_key_OBS_KEY_CALCULATOR: obs_key = 344;
3517pub const obs_key_OBS_KEY_TODOLIST: obs_key = 345;
3518pub const obs_key_OBS_KEY_CLEARGRAB: obs_key = 346;
3519pub const obs_key_OBS_KEY_CLOSE: obs_key = 347;
3520pub const obs_key_OBS_KEY_COPY: obs_key = 348;
3521pub const obs_key_OBS_KEY_CUT: obs_key = 349;
3522pub const obs_key_OBS_KEY_DISPLAY: obs_key = 350;
3523pub const obs_key_OBS_KEY_DOS: obs_key = 351;
3524pub const obs_key_OBS_KEY_DOCUMENTS: obs_key = 352;
3525pub const obs_key_OBS_KEY_EXCEL: obs_key = 353;
3526pub const obs_key_OBS_KEY_EXPLORER: obs_key = 354;
3527pub const obs_key_OBS_KEY_GAME: obs_key = 355;
3528pub const obs_key_OBS_KEY_GO: obs_key = 356;
3529pub const obs_key_OBS_KEY_ITOUCH: obs_key = 357;
3530pub const obs_key_OBS_KEY_LOGOFF: obs_key = 358;
3531pub const obs_key_OBS_KEY_MARKET: obs_key = 359;
3532pub const obs_key_OBS_KEY_MEETING: obs_key = 360;
3533pub const obs_key_OBS_KEY_MENUKB: obs_key = 361;
3534pub const obs_key_OBS_KEY_MENUPB: obs_key = 362;
3535pub const obs_key_OBS_KEY_MYSITES: obs_key = 363;
3536pub const obs_key_OBS_KEY_NEWS: obs_key = 364;
3537pub const obs_key_OBS_KEY_OFFICEHOME: obs_key = 365;
3538pub const obs_key_OBS_KEY_OPTION: obs_key = 366;
3539pub const obs_key_OBS_KEY_PASTE: obs_key = 367;
3540pub const obs_key_OBS_KEY_PHONE: obs_key = 368;
3541pub const obs_key_OBS_KEY_CALENDAR: obs_key = 369;
3542pub const obs_key_OBS_KEY_REPLY: obs_key = 370;
3543pub const obs_key_OBS_KEY_RELOAD: obs_key = 371;
3544pub const obs_key_OBS_KEY_ROTATEWINDOWS: obs_key = 372;
3545pub const obs_key_OBS_KEY_ROTATIONPB: obs_key = 373;
3546pub const obs_key_OBS_KEY_ROTATIONKB: obs_key = 374;
3547pub const obs_key_OBS_KEY_SAVE: obs_key = 375;
3548pub const obs_key_OBS_KEY_SEND: obs_key = 376;
3549pub const obs_key_OBS_KEY_SPELL: obs_key = 377;
3550pub const obs_key_OBS_KEY_SPLITSCREEN: obs_key = 378;
3551pub const obs_key_OBS_KEY_SUPPORT: obs_key = 379;
3552pub const obs_key_OBS_KEY_TASKPANE: obs_key = 380;
3553pub const obs_key_OBS_KEY_TERMINAL: obs_key = 381;
3554pub const obs_key_OBS_KEY_TOOLS: obs_key = 382;
3555pub const obs_key_OBS_KEY_TRAVEL: obs_key = 383;
3556pub const obs_key_OBS_KEY_VIDEO: obs_key = 384;
3557pub const obs_key_OBS_KEY_WORD: obs_key = 385;
3558pub const obs_key_OBS_KEY_XFER: obs_key = 386;
3559pub const obs_key_OBS_KEY_ZOOMIN: obs_key = 387;
3560pub const obs_key_OBS_KEY_ZOOMOUT: obs_key = 388;
3561pub const obs_key_OBS_KEY_AWAY: obs_key = 389;
3562pub const obs_key_OBS_KEY_MESSENGER: obs_key = 390;
3563pub const obs_key_OBS_KEY_WEBCAM: obs_key = 391;
3564pub const obs_key_OBS_KEY_MAILFORWARD: obs_key = 392;
3565pub const obs_key_OBS_KEY_PICTURES: obs_key = 393;
3566pub const obs_key_OBS_KEY_MUSIC: obs_key = 394;
3567pub const obs_key_OBS_KEY_BATTERY: obs_key = 395;
3568pub const obs_key_OBS_KEY_BLUETOOTH: obs_key = 396;
3569pub const obs_key_OBS_KEY_WLAN: obs_key = 397;
3570pub const obs_key_OBS_KEY_UWB: obs_key = 398;
3571pub const obs_key_OBS_KEY_AUDIOFORWARD: obs_key = 399;
3572pub const obs_key_OBS_KEY_AUDIOREPEAT: obs_key = 400;
3573pub const obs_key_OBS_KEY_AUDIORANDOMPLAY: obs_key = 401;
3574pub const obs_key_OBS_KEY_SUBTITLE: obs_key = 402;
3575pub const obs_key_OBS_KEY_AUDIOCYCLETRACK: obs_key = 403;
3576pub const obs_key_OBS_KEY_TIME: obs_key = 404;
3577pub const obs_key_OBS_KEY_HIBERNATE: obs_key = 405;
3578pub const obs_key_OBS_KEY_VIEW: obs_key = 406;
3579pub const obs_key_OBS_KEY_TOPMENU: obs_key = 407;
3580pub const obs_key_OBS_KEY_POWERDOWN: obs_key = 408;
3581pub const obs_key_OBS_KEY_SUSPEND: obs_key = 409;
3582pub const obs_key_OBS_KEY_CONTRASTADJUST: obs_key = 410;
3583pub const obs_key_OBS_KEY_MEDIALAST: obs_key = 411;
3584pub const obs_key_OBS_KEY_CALL: obs_key = 412;
3585pub const obs_key_OBS_KEY_CAMERA: obs_key = 413;
3586pub const obs_key_OBS_KEY_CAMERAFOCUS: obs_key = 414;
3587pub const obs_key_OBS_KEY_CONTEXT1: obs_key = 415;
3588pub const obs_key_OBS_KEY_CONTEXT2: obs_key = 416;
3589pub const obs_key_OBS_KEY_CONTEXT3: obs_key = 417;
3590pub const obs_key_OBS_KEY_CONTEXT4: obs_key = 418;
3591pub const obs_key_OBS_KEY_FLIP: obs_key = 419;
3592pub const obs_key_OBS_KEY_HANGUP: obs_key = 420;
3593pub const obs_key_OBS_KEY_NO: obs_key = 421;
3594pub const obs_key_OBS_KEY_SELECT: obs_key = 422;
3595pub const obs_key_OBS_KEY_YES: obs_key = 423;
3596pub const obs_key_OBS_KEY_TOGGLECALLHANGUP: obs_key = 424;
3597pub const obs_key_OBS_KEY_VOICEDIAL: obs_key = 425;
3598pub const obs_key_OBS_KEY_LASTNUMBERREDIAL: obs_key = 426;
3599pub const obs_key_OBS_KEY_EXECUTE: obs_key = 427;
3600pub const obs_key_OBS_KEY_PRINTER: obs_key = 428;
3601pub const obs_key_OBS_KEY_PLAY: obs_key = 429;
3602pub const obs_key_OBS_KEY_SLEEP: obs_key = 430;
3603pub const obs_key_OBS_KEY_ZOOM: obs_key = 431;
3604pub const obs_key_OBS_KEY_CANCEL: obs_key = 432;
3605pub const obs_key_OBS_KEY_MOUSE1: obs_key = 433;
3606pub const obs_key_OBS_KEY_MOUSE2: obs_key = 434;
3607pub const obs_key_OBS_KEY_MOUSE3: obs_key = 435;
3608pub const obs_key_OBS_KEY_MOUSE4: obs_key = 436;
3609pub const obs_key_OBS_KEY_MOUSE5: obs_key = 437;
3610pub const obs_key_OBS_KEY_MOUSE6: obs_key = 438;
3611pub const obs_key_OBS_KEY_MOUSE7: obs_key = 439;
3612pub const obs_key_OBS_KEY_MOUSE8: obs_key = 440;
3613pub const obs_key_OBS_KEY_MOUSE9: obs_key = 441;
3614pub const obs_key_OBS_KEY_MOUSE10: obs_key = 442;
3615pub const obs_key_OBS_KEY_MOUSE11: obs_key = 443;
3616pub const obs_key_OBS_KEY_MOUSE12: obs_key = 444;
3617pub const obs_key_OBS_KEY_MOUSE13: obs_key = 445;
3618pub const obs_key_OBS_KEY_MOUSE14: obs_key = 446;
3619pub const obs_key_OBS_KEY_MOUSE15: obs_key = 447;
3620pub const obs_key_OBS_KEY_MOUSE16: obs_key = 448;
3621pub const obs_key_OBS_KEY_MOUSE17: obs_key = 449;
3622pub const obs_key_OBS_KEY_MOUSE18: obs_key = 450;
3623pub const obs_key_OBS_KEY_MOUSE19: obs_key = 451;
3624pub const obs_key_OBS_KEY_MOUSE20: obs_key = 452;
3625pub const obs_key_OBS_KEY_MOUSE21: obs_key = 453;
3626pub const obs_key_OBS_KEY_MOUSE22: obs_key = 454;
3627pub const obs_key_OBS_KEY_MOUSE23: obs_key = 455;
3628pub const obs_key_OBS_KEY_MOUSE24: obs_key = 456;
3629pub const obs_key_OBS_KEY_MOUSE25: obs_key = 457;
3630pub const obs_key_OBS_KEY_MOUSE26: obs_key = 458;
3631pub const obs_key_OBS_KEY_MOUSE27: obs_key = 459;
3632pub const obs_key_OBS_KEY_MOUSE28: obs_key = 460;
3633pub const obs_key_OBS_KEY_MOUSE29: obs_key = 461;
3634pub const obs_key_OBS_KEY_BACKSLASH_RT102: obs_key = 462;
3635pub const obs_key_OBS_KEY_OPEN: obs_key = 463;
3636pub const obs_key_OBS_KEY_FIND: obs_key = 464;
3637pub const obs_key_OBS_KEY_REDO: obs_key = 465;
3638pub const obs_key_OBS_KEY_UNDO: obs_key = 466;
3639pub const obs_key_OBS_KEY_FRONT: obs_key = 467;
3640pub const obs_key_OBS_KEY_PROPS: obs_key = 468;
3641pub const obs_key_OBS_KEY_VK_CANCEL: obs_key = 469;
3642pub const obs_key_OBS_KEY_0x07: obs_key = 470;
3643pub const obs_key_OBS_KEY_0x0A: obs_key = 471;
3644pub const obs_key_OBS_KEY_0x0B: obs_key = 472;
3645pub const obs_key_OBS_KEY_0x0E: obs_key = 473;
3646pub const obs_key_OBS_KEY_0x0F: obs_key = 474;
3647pub const obs_key_OBS_KEY_0x16: obs_key = 475;
3648pub const obs_key_OBS_KEY_VK_JUNJA: obs_key = 476;
3649pub const obs_key_OBS_KEY_VK_FINAL: obs_key = 477;
3650pub const obs_key_OBS_KEY_0x1A: obs_key = 478;
3651pub const obs_key_OBS_KEY_VK_ACCEPT: obs_key = 479;
3652pub const obs_key_OBS_KEY_VK_MODECHANGE: obs_key = 480;
3653pub const obs_key_OBS_KEY_VK_SELECT: obs_key = 481;
3654pub const obs_key_OBS_KEY_VK_PRINT: obs_key = 482;
3655pub const obs_key_OBS_KEY_VK_EXECUTE: obs_key = 483;
3656pub const obs_key_OBS_KEY_VK_HELP: obs_key = 484;
3657pub const obs_key_OBS_KEY_0x30: obs_key = 485;
3658pub const obs_key_OBS_KEY_0x31: obs_key = 486;
3659pub const obs_key_OBS_KEY_0x32: obs_key = 487;
3660pub const obs_key_OBS_KEY_0x33: obs_key = 488;
3661pub const obs_key_OBS_KEY_0x34: obs_key = 489;
3662pub const obs_key_OBS_KEY_0x35: obs_key = 490;
3663pub const obs_key_OBS_KEY_0x36: obs_key = 491;
3664pub const obs_key_OBS_KEY_0x37: obs_key = 492;
3665pub const obs_key_OBS_KEY_0x38: obs_key = 493;
3666pub const obs_key_OBS_KEY_0x39: obs_key = 494;
3667pub const obs_key_OBS_KEY_0x3A: obs_key = 495;
3668pub const obs_key_OBS_KEY_0x3B: obs_key = 496;
3669pub const obs_key_OBS_KEY_0x3C: obs_key = 497;
3670pub const obs_key_OBS_KEY_0x3D: obs_key = 498;
3671pub const obs_key_OBS_KEY_0x3E: obs_key = 499;
3672pub const obs_key_OBS_KEY_0x3F: obs_key = 500;
3673pub const obs_key_OBS_KEY_0x40: obs_key = 501;
3674pub const obs_key_OBS_KEY_0x41: obs_key = 502;
3675pub const obs_key_OBS_KEY_0x42: obs_key = 503;
3676pub const obs_key_OBS_KEY_0x43: obs_key = 504;
3677pub const obs_key_OBS_KEY_0x44: obs_key = 505;
3678pub const obs_key_OBS_KEY_0x45: obs_key = 506;
3679pub const obs_key_OBS_KEY_0x46: obs_key = 507;
3680pub const obs_key_OBS_KEY_0x47: obs_key = 508;
3681pub const obs_key_OBS_KEY_0x48: obs_key = 509;
3682pub const obs_key_OBS_KEY_0x49: obs_key = 510;
3683pub const obs_key_OBS_KEY_0x4A: obs_key = 511;
3684pub const obs_key_OBS_KEY_0x4B: obs_key = 512;
3685pub const obs_key_OBS_KEY_0x4C: obs_key = 513;
3686pub const obs_key_OBS_KEY_0x4D: obs_key = 514;
3687pub const obs_key_OBS_KEY_0x4E: obs_key = 515;
3688pub const obs_key_OBS_KEY_0x4F: obs_key = 516;
3689pub const obs_key_OBS_KEY_0x50: obs_key = 517;
3690pub const obs_key_OBS_KEY_0x51: obs_key = 518;
3691pub const obs_key_OBS_KEY_0x52: obs_key = 519;
3692pub const obs_key_OBS_KEY_0x53: obs_key = 520;
3693pub const obs_key_OBS_KEY_0x54: obs_key = 521;
3694pub const obs_key_OBS_KEY_0x55: obs_key = 522;
3695pub const obs_key_OBS_KEY_0x56: obs_key = 523;
3696pub const obs_key_OBS_KEY_0x57: obs_key = 524;
3697pub const obs_key_OBS_KEY_0x58: obs_key = 525;
3698pub const obs_key_OBS_KEY_0x59: obs_key = 526;
3699pub const obs_key_OBS_KEY_0x5A: obs_key = 527;
3700pub const obs_key_OBS_KEY_VK_LWIN: obs_key = 528;
3701pub const obs_key_OBS_KEY_VK_RWIN: obs_key = 529;
3702pub const obs_key_OBS_KEY_VK_APPS: obs_key = 530;
3703pub const obs_key_OBS_KEY_0x5E: obs_key = 531;
3704pub const obs_key_OBS_KEY_VK_SLEEP: obs_key = 532;
3705pub const obs_key_OBS_KEY_VK_SEPARATOR: obs_key = 533;
3706pub const obs_key_OBS_KEY_0x88: obs_key = 534;
3707pub const obs_key_OBS_KEY_0x89: obs_key = 535;
3708pub const obs_key_OBS_KEY_0x8A: obs_key = 536;
3709pub const obs_key_OBS_KEY_0x8B: obs_key = 537;
3710pub const obs_key_OBS_KEY_0x8C: obs_key = 538;
3711pub const obs_key_OBS_KEY_0x8D: obs_key = 539;
3712pub const obs_key_OBS_KEY_0x8E: obs_key = 540;
3713pub const obs_key_OBS_KEY_0x8F: obs_key = 541;
3714pub const obs_key_OBS_KEY_VK_OEM_FJ_JISHO: obs_key = 542;
3715pub const obs_key_OBS_KEY_VK_OEM_FJ_LOYA: obs_key = 543;
3716pub const obs_key_OBS_KEY_VK_OEM_FJ_ROYA: obs_key = 544;
3717pub const obs_key_OBS_KEY_0x97: obs_key = 545;
3718pub const obs_key_OBS_KEY_0x98: obs_key = 546;
3719pub const obs_key_OBS_KEY_0x99: obs_key = 547;
3720pub const obs_key_OBS_KEY_0x9A: obs_key = 548;
3721pub const obs_key_OBS_KEY_0x9B: obs_key = 549;
3722pub const obs_key_OBS_KEY_0x9C: obs_key = 550;
3723pub const obs_key_OBS_KEY_0x9D: obs_key = 551;
3724pub const obs_key_OBS_KEY_0x9E: obs_key = 552;
3725pub const obs_key_OBS_KEY_0x9F: obs_key = 553;
3726pub const obs_key_OBS_KEY_VK_LSHIFT: obs_key = 554;
3727pub const obs_key_OBS_KEY_VK_RSHIFT: obs_key = 555;
3728pub const obs_key_OBS_KEY_VK_LCONTROL: obs_key = 556;
3729pub const obs_key_OBS_KEY_VK_RCONTROL: obs_key = 557;
3730pub const obs_key_OBS_KEY_VK_LMENU: obs_key = 558;
3731pub const obs_key_OBS_KEY_VK_RMENU: obs_key = 559;
3732pub const obs_key_OBS_KEY_VK_BROWSER_BACK: obs_key = 560;
3733pub const obs_key_OBS_KEY_VK_BROWSER_FORWARD: obs_key = 561;
3734pub const obs_key_OBS_KEY_VK_BROWSER_REFRESH: obs_key = 562;
3735pub const obs_key_OBS_KEY_VK_BROWSER_STOP: obs_key = 563;
3736pub const obs_key_OBS_KEY_VK_BROWSER_SEARCH: obs_key = 564;
3737pub const obs_key_OBS_KEY_VK_BROWSER_FAVORITES: obs_key = 565;
3738pub const obs_key_OBS_KEY_VK_BROWSER_HOME: obs_key = 566;
3739pub const obs_key_OBS_KEY_VK_VOLUME_MUTE: obs_key = 567;
3740pub const obs_key_OBS_KEY_VK_VOLUME_DOWN: obs_key = 568;
3741pub const obs_key_OBS_KEY_VK_VOLUME_UP: obs_key = 569;
3742pub const obs_key_OBS_KEY_VK_MEDIA_NEXT_TRACK: obs_key = 570;
3743pub const obs_key_OBS_KEY_VK_MEDIA_PREV_TRACK: obs_key = 571;
3744pub const obs_key_OBS_KEY_VK_MEDIA_STOP: obs_key = 572;
3745pub const obs_key_OBS_KEY_VK_MEDIA_PLAY_PAUSE: obs_key = 573;
3746pub const obs_key_OBS_KEY_VK_LAUNCH_MAIL: obs_key = 574;
3747pub const obs_key_OBS_KEY_VK_LAUNCH_MEDIA_SELECT: obs_key = 575;
3748pub const obs_key_OBS_KEY_VK_LAUNCH_APP1: obs_key = 576;
3749pub const obs_key_OBS_KEY_VK_LAUNCH_APP2: obs_key = 577;
3750pub const obs_key_OBS_KEY_0xB8: obs_key = 578;
3751pub const obs_key_OBS_KEY_0xB9: obs_key = 579;
3752pub const obs_key_OBS_KEY_0xC1: obs_key = 580;
3753pub const obs_key_OBS_KEY_0xC2: obs_key = 581;
3754pub const obs_key_OBS_KEY_0xC3: obs_key = 582;
3755pub const obs_key_OBS_KEY_0xC4: obs_key = 583;
3756pub const obs_key_OBS_KEY_0xC5: obs_key = 584;
3757pub const obs_key_OBS_KEY_0xC6: obs_key = 585;
3758pub const obs_key_OBS_KEY_0xC7: obs_key = 586;
3759pub const obs_key_OBS_KEY_0xC8: obs_key = 587;
3760pub const obs_key_OBS_KEY_0xC9: obs_key = 588;
3761pub const obs_key_OBS_KEY_0xCA: obs_key = 589;
3762pub const obs_key_OBS_KEY_0xCB: obs_key = 590;
3763pub const obs_key_OBS_KEY_0xCC: obs_key = 591;
3764pub const obs_key_OBS_KEY_0xCD: obs_key = 592;
3765pub const obs_key_OBS_KEY_0xCE: obs_key = 593;
3766pub const obs_key_OBS_KEY_0xCF: obs_key = 594;
3767pub const obs_key_OBS_KEY_0xD0: obs_key = 595;
3768pub const obs_key_OBS_KEY_0xD1: obs_key = 596;
3769pub const obs_key_OBS_KEY_0xD2: obs_key = 597;
3770pub const obs_key_OBS_KEY_0xD3: obs_key = 598;
3771pub const obs_key_OBS_KEY_0xD4: obs_key = 599;
3772pub const obs_key_OBS_KEY_0xD5: obs_key = 600;
3773pub const obs_key_OBS_KEY_0xD6: obs_key = 601;
3774pub const obs_key_OBS_KEY_0xD7: obs_key = 602;
3775pub const obs_key_OBS_KEY_0xD8: obs_key = 603;
3776pub const obs_key_OBS_KEY_0xD9: obs_key = 604;
3777pub const obs_key_OBS_KEY_0xDA: obs_key = 605;
3778pub const obs_key_OBS_KEY_VK_OEM_8: obs_key = 606;
3779pub const obs_key_OBS_KEY_0xE0: obs_key = 607;
3780pub const obs_key_OBS_KEY_VK_OEM_AX: obs_key = 608;
3781pub const obs_key_OBS_KEY_VK_ICO_HELP: obs_key = 609;
3782pub const obs_key_OBS_KEY_VK_ICO_00: obs_key = 610;
3783pub const obs_key_OBS_KEY_VK_PROCESSKEY: obs_key = 611;
3784pub const obs_key_OBS_KEY_VK_ICO_CLEAR: obs_key = 612;
3785pub const obs_key_OBS_KEY_VK_PACKET: obs_key = 613;
3786pub const obs_key_OBS_KEY_0xE8: obs_key = 614;
3787pub const obs_key_OBS_KEY_VK_OEM_RESET: obs_key = 615;
3788pub const obs_key_OBS_KEY_VK_OEM_JUMP: obs_key = 616;
3789pub const obs_key_OBS_KEY_VK_OEM_PA1: obs_key = 617;
3790pub const obs_key_OBS_KEY_VK_OEM_PA2: obs_key = 618;
3791pub const obs_key_OBS_KEY_VK_OEM_PA3: obs_key = 619;
3792pub const obs_key_OBS_KEY_VK_OEM_WSCTRL: obs_key = 620;
3793pub const obs_key_OBS_KEY_VK_OEM_CUSEL: obs_key = 621;
3794pub const obs_key_OBS_KEY_VK_OEM_ATTN: obs_key = 622;
3795pub const obs_key_OBS_KEY_VK_OEM_FINISH: obs_key = 623;
3796pub const obs_key_OBS_KEY_VK_OEM_COPY: obs_key = 624;
3797pub const obs_key_OBS_KEY_VK_OEM_AUTO: obs_key = 625;
3798pub const obs_key_OBS_KEY_VK_OEM_ENLW: obs_key = 626;
3799pub const obs_key_OBS_KEY_VK_ATTN: obs_key = 627;
3800pub const obs_key_OBS_KEY_VK_CRSEL: obs_key = 628;
3801pub const obs_key_OBS_KEY_VK_EXSEL: obs_key = 629;
3802pub const obs_key_OBS_KEY_VK_EREOF: obs_key = 630;
3803pub const obs_key_OBS_KEY_VK_PLAY: obs_key = 631;
3804pub const obs_key_OBS_KEY_VK_ZOOM: obs_key = 632;
3805pub const obs_key_OBS_KEY_VK_NONAME: obs_key = 633;
3806pub const obs_key_OBS_KEY_VK_PA1: obs_key = 634;
3807pub const obs_key_OBS_KEY_VK_OEM_CLEAR: obs_key = 635;
3808pub const obs_key_OBS_KEY_LAST_VALUE: obs_key = 636;
3809pub type obs_key = ::std::os::raw::c_int;
3810pub use self::obs_key as obs_key_t;
3811#[repr(C)]
3812pub struct obs_key_combination {
3813    pub modifiers: u32,
3814    pub key: obs_key_t,
3815}
3816#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3817const _: () = {
3818    ["Size of obs_key_combination"][::std::mem::size_of::<obs_key_combination>() - 8usize];
3819    ["Alignment of obs_key_combination"][::std::mem::align_of::<obs_key_combination>() - 4usize];
3820    ["Offset of field: obs_key_combination::modifiers"]
3821        [::std::mem::offset_of!(obs_key_combination, modifiers) - 0usize];
3822    ["Offset of field: obs_key_combination::key"]
3823        [::std::mem::offset_of!(obs_key_combination, key) - 4usize];
3824};
3825pub type obs_key_combination_t = obs_key_combination;
3826#[repr(C)]
3827#[derive(Debug, Copy, Clone)]
3828pub struct obs_hotkey {
3829    _unused: [u8; 0],
3830}
3831pub type obs_hotkey_t = obs_hotkey;
3832#[repr(C)]
3833#[derive(Debug, Copy, Clone)]
3834pub struct obs_hotkey_binding {
3835    _unused: [u8; 0],
3836}
3837pub type obs_hotkey_binding_t = obs_hotkey_binding;
3838pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_FRONTEND: obs_hotkey_registerer_type = 0;
3839pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SOURCE: obs_hotkey_registerer_type = 1;
3840pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_OUTPUT: obs_hotkey_registerer_type = 2;
3841pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_ENCODER: obs_hotkey_registerer_type = 3;
3842pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SERVICE: obs_hotkey_registerer_type = 4;
3843pub type obs_hotkey_registerer_type = ::std::os::raw::c_int;
3844pub use self::obs_hotkey_registerer_type as obs_hotkey_registerer_t;
3845#[repr(C)]
3846#[derive(Debug, Copy, Clone)]
3847pub struct obs_hotkeys_translations {
3848    pub insert: *const ::std::os::raw::c_char,
3849    pub del: *const ::std::os::raw::c_char,
3850    pub home: *const ::std::os::raw::c_char,
3851    pub end: *const ::std::os::raw::c_char,
3852    pub page_up: *const ::std::os::raw::c_char,
3853    pub page_down: *const ::std::os::raw::c_char,
3854    pub num_lock: *const ::std::os::raw::c_char,
3855    pub scroll_lock: *const ::std::os::raw::c_char,
3856    pub caps_lock: *const ::std::os::raw::c_char,
3857    pub backspace: *const ::std::os::raw::c_char,
3858    pub tab: *const ::std::os::raw::c_char,
3859    pub print: *const ::std::os::raw::c_char,
3860    pub pause: *const ::std::os::raw::c_char,
3861    pub left: *const ::std::os::raw::c_char,
3862    pub right: *const ::std::os::raw::c_char,
3863    pub up: *const ::std::os::raw::c_char,
3864    pub down: *const ::std::os::raw::c_char,
3865    pub shift: *const ::std::os::raw::c_char,
3866    pub alt: *const ::std::os::raw::c_char,
3867    pub control: *const ::std::os::raw::c_char,
3868    pub meta: *const ::std::os::raw::c_char,
3869    pub menu: *const ::std::os::raw::c_char,
3870    pub space: *const ::std::os::raw::c_char,
3871    pub numpad_num: *const ::std::os::raw::c_char,
3872    pub numpad_divide: *const ::std::os::raw::c_char,
3873    pub numpad_multiply: *const ::std::os::raw::c_char,
3874    pub numpad_minus: *const ::std::os::raw::c_char,
3875    pub numpad_plus: *const ::std::os::raw::c_char,
3876    pub numpad_decimal: *const ::std::os::raw::c_char,
3877    pub apple_keypad_num: *const ::std::os::raw::c_char,
3878    pub apple_keypad_divide: *const ::std::os::raw::c_char,
3879    pub apple_keypad_multiply: *const ::std::os::raw::c_char,
3880    pub apple_keypad_minus: *const ::std::os::raw::c_char,
3881    pub apple_keypad_plus: *const ::std::os::raw::c_char,
3882    pub apple_keypad_decimal: *const ::std::os::raw::c_char,
3883    pub apple_keypad_equal: *const ::std::os::raw::c_char,
3884    pub mouse_num: *const ::std::os::raw::c_char,
3885    pub escape: *const ::std::os::raw::c_char,
3886}
3887#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3888const _: () = {
3889    ["Size of obs_hotkeys_translations"]
3890        [::std::mem::size_of::<obs_hotkeys_translations>() - 304usize];
3891    ["Alignment of obs_hotkeys_translations"]
3892        [::std::mem::align_of::<obs_hotkeys_translations>() - 8usize];
3893    ["Offset of field: obs_hotkeys_translations::insert"]
3894        [::std::mem::offset_of!(obs_hotkeys_translations, insert) - 0usize];
3895    ["Offset of field: obs_hotkeys_translations::del"]
3896        [::std::mem::offset_of!(obs_hotkeys_translations, del) - 8usize];
3897    ["Offset of field: obs_hotkeys_translations::home"]
3898        [::std::mem::offset_of!(obs_hotkeys_translations, home) - 16usize];
3899    ["Offset of field: obs_hotkeys_translations::end"]
3900        [::std::mem::offset_of!(obs_hotkeys_translations, end) - 24usize];
3901    ["Offset of field: obs_hotkeys_translations::page_up"]
3902        [::std::mem::offset_of!(obs_hotkeys_translations, page_up) - 32usize];
3903    ["Offset of field: obs_hotkeys_translations::page_down"]
3904        [::std::mem::offset_of!(obs_hotkeys_translations, page_down) - 40usize];
3905    ["Offset of field: obs_hotkeys_translations::num_lock"]
3906        [::std::mem::offset_of!(obs_hotkeys_translations, num_lock) - 48usize];
3907    ["Offset of field: obs_hotkeys_translations::scroll_lock"]
3908        [::std::mem::offset_of!(obs_hotkeys_translations, scroll_lock) - 56usize];
3909    ["Offset of field: obs_hotkeys_translations::caps_lock"]
3910        [::std::mem::offset_of!(obs_hotkeys_translations, caps_lock) - 64usize];
3911    ["Offset of field: obs_hotkeys_translations::backspace"]
3912        [::std::mem::offset_of!(obs_hotkeys_translations, backspace) - 72usize];
3913    ["Offset of field: obs_hotkeys_translations::tab"]
3914        [::std::mem::offset_of!(obs_hotkeys_translations, tab) - 80usize];
3915    ["Offset of field: obs_hotkeys_translations::print"]
3916        [::std::mem::offset_of!(obs_hotkeys_translations, print) - 88usize];
3917    ["Offset of field: obs_hotkeys_translations::pause"]
3918        [::std::mem::offset_of!(obs_hotkeys_translations, pause) - 96usize];
3919    ["Offset of field: obs_hotkeys_translations::left"]
3920        [::std::mem::offset_of!(obs_hotkeys_translations, left) - 104usize];
3921    ["Offset of field: obs_hotkeys_translations::right"]
3922        [::std::mem::offset_of!(obs_hotkeys_translations, right) - 112usize];
3923    ["Offset of field: obs_hotkeys_translations::up"]
3924        [::std::mem::offset_of!(obs_hotkeys_translations, up) - 120usize];
3925    ["Offset of field: obs_hotkeys_translations::down"]
3926        [::std::mem::offset_of!(obs_hotkeys_translations, down) - 128usize];
3927    ["Offset of field: obs_hotkeys_translations::shift"]
3928        [::std::mem::offset_of!(obs_hotkeys_translations, shift) - 136usize];
3929    ["Offset of field: obs_hotkeys_translations::alt"]
3930        [::std::mem::offset_of!(obs_hotkeys_translations, alt) - 144usize];
3931    ["Offset of field: obs_hotkeys_translations::control"]
3932        [::std::mem::offset_of!(obs_hotkeys_translations, control) - 152usize];
3933    ["Offset of field: obs_hotkeys_translations::meta"]
3934        [::std::mem::offset_of!(obs_hotkeys_translations, meta) - 160usize];
3935    ["Offset of field: obs_hotkeys_translations::menu"]
3936        [::std::mem::offset_of!(obs_hotkeys_translations, menu) - 168usize];
3937    ["Offset of field: obs_hotkeys_translations::space"]
3938        [::std::mem::offset_of!(obs_hotkeys_translations, space) - 176usize];
3939    ["Offset of field: obs_hotkeys_translations::numpad_num"]
3940        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_num) - 184usize];
3941    ["Offset of field: obs_hotkeys_translations::numpad_divide"]
3942        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_divide) - 192usize];
3943    ["Offset of field: obs_hotkeys_translations::numpad_multiply"]
3944        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_multiply) - 200usize];
3945    ["Offset of field: obs_hotkeys_translations::numpad_minus"]
3946        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_minus) - 208usize];
3947    ["Offset of field: obs_hotkeys_translations::numpad_plus"]
3948        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_plus) - 216usize];
3949    ["Offset of field: obs_hotkeys_translations::numpad_decimal"]
3950        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_decimal) - 224usize];
3951    ["Offset of field: obs_hotkeys_translations::apple_keypad_num"]
3952        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_num) - 232usize];
3953    ["Offset of field: obs_hotkeys_translations::apple_keypad_divide"]
3954        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_divide) - 240usize];
3955    ["Offset of field: obs_hotkeys_translations::apple_keypad_multiply"]
3956        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_multiply) - 248usize];
3957    ["Offset of field: obs_hotkeys_translations::apple_keypad_minus"]
3958        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_minus) - 256usize];
3959    ["Offset of field: obs_hotkeys_translations::apple_keypad_plus"]
3960        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_plus) - 264usize];
3961    ["Offset of field: obs_hotkeys_translations::apple_keypad_decimal"]
3962        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_decimal) - 272usize];
3963    ["Offset of field: obs_hotkeys_translations::apple_keypad_equal"]
3964        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_equal) - 280usize];
3965    ["Offset of field: obs_hotkeys_translations::mouse_num"]
3966        [::std::mem::offset_of!(obs_hotkeys_translations, mouse_num) - 288usize];
3967    ["Offset of field: obs_hotkeys_translations::escape"]
3968        [::std::mem::offset_of!(obs_hotkeys_translations, escape) - 296usize];
3969};
3970pub type obs_hotkey_func = ::std::option::Option<
3971    unsafe extern "C" fn(
3972        data: *mut ::std::os::raw::c_void,
3973        id: obs_hotkey_id,
3974        hotkey: *mut obs_hotkey_t,
3975        pressed: bool,
3976    ),
3977>;
3978pub type obs_hotkey_active_func = ::std::option::Option<
3979    unsafe extern "C" fn(
3980        data: *mut ::std::os::raw::c_void,
3981        id: obs_hotkey_pair_id,
3982        hotkey: *mut obs_hotkey_t,
3983        pressed: bool,
3984    ) -> bool,
3985>;
3986pub type obs_hotkey_enum_func = ::std::option::Option<
3987    unsafe extern "C" fn(
3988        data: *mut ::std::os::raw::c_void,
3989        id: obs_hotkey_id,
3990        key: *mut obs_hotkey_t,
3991    ) -> bool,
3992>;
3993pub type obs_hotkey_binding_enum_func = ::std::option::Option<
3994    unsafe extern "C" fn(
3995        data: *mut ::std::os::raw::c_void,
3996        idx: usize,
3997        binding: *mut obs_hotkey_binding_t,
3998    ) -> bool,
3999>;
4000pub type obs_hotkey_callback_router_func = ::std::option::Option<
4001    unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, id: obs_hotkey_id, pressed: bool),
4002>;
4003pub type obs_hotkey_atomic_update_func =
4004    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
4005#[repr(C)]
4006#[derive(Debug, Copy, Clone)]
4007pub struct dstr {
4008    _unused: [u8; 0],
4009}
4010pub const obs_order_movement_OBS_ORDER_MOVE_UP: obs_order_movement = 0;
4011pub const obs_order_movement_OBS_ORDER_MOVE_DOWN: obs_order_movement = 1;
4012pub const obs_order_movement_OBS_ORDER_MOVE_TOP: obs_order_movement = 2;
4013pub const obs_order_movement_OBS_ORDER_MOVE_BOTTOM: obs_order_movement = 3;
4014#[doc = " Used for changing the order of items (for example, filters in a source,\n or items in a scene)"]
4015pub type obs_order_movement = ::std::os::raw::c_int;
4016pub const obs_allow_direct_render_OBS_NO_DIRECT_RENDERING: obs_allow_direct_render = 0;
4017pub const obs_allow_direct_render_OBS_ALLOW_DIRECT_RENDERING: obs_allow_direct_render = 1;
4018#[doc = " Used with obs_source_process_filter to specify whether the filter should\n render the source directly with the specified effect, or whether it should\n render it to a texture"]
4019pub type obs_allow_direct_render = ::std::os::raw::c_int;
4020pub const obs_scale_type_OBS_SCALE_DISABLE: obs_scale_type = 0;
4021pub const obs_scale_type_OBS_SCALE_POINT: obs_scale_type = 1;
4022pub const obs_scale_type_OBS_SCALE_BICUBIC: obs_scale_type = 2;
4023pub const obs_scale_type_OBS_SCALE_BILINEAR: obs_scale_type = 3;
4024pub const obs_scale_type_OBS_SCALE_LANCZOS: obs_scale_type = 4;
4025pub const obs_scale_type_OBS_SCALE_AREA: obs_scale_type = 5;
4026pub type obs_scale_type = ::std::os::raw::c_int;
4027pub const obs_blending_method_OBS_BLEND_METHOD_DEFAULT: obs_blending_method = 0;
4028pub const obs_blending_method_OBS_BLEND_METHOD_SRGB_OFF: obs_blending_method = 1;
4029pub type obs_blending_method = ::std::os::raw::c_int;
4030pub const obs_blending_type_OBS_BLEND_NORMAL: obs_blending_type = 0;
4031pub const obs_blending_type_OBS_BLEND_ADDITIVE: obs_blending_type = 1;
4032pub const obs_blending_type_OBS_BLEND_SUBTRACT: obs_blending_type = 2;
4033pub const obs_blending_type_OBS_BLEND_SCREEN: obs_blending_type = 3;
4034pub const obs_blending_type_OBS_BLEND_MULTIPLY: obs_blending_type = 4;
4035pub const obs_blending_type_OBS_BLEND_LIGHTEN: obs_blending_type = 5;
4036pub const obs_blending_type_OBS_BLEND_DARKEN: obs_blending_type = 6;
4037pub type obs_blending_type = ::std::os::raw::c_int;
4038#[doc = "< no bounds"]
4039pub const obs_bounds_type_OBS_BOUNDS_NONE: obs_bounds_type = 0;
4040#[doc = "< stretch (ignores base scale)"]
4041pub const obs_bounds_type_OBS_BOUNDS_STRETCH: obs_bounds_type = 1;
4042#[doc = "< scales to inner rectangle"]
4043pub const obs_bounds_type_OBS_BOUNDS_SCALE_INNER: obs_bounds_type = 2;
4044#[doc = "< scales to outer rectangle"]
4045pub const obs_bounds_type_OBS_BOUNDS_SCALE_OUTER: obs_bounds_type = 3;
4046#[doc = "< scales to the width"]
4047pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_WIDTH: obs_bounds_type = 4;
4048#[doc = "< scales to the height"]
4049pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_HEIGHT: obs_bounds_type = 5;
4050#[doc = "< no scaling, maximum size only"]
4051pub const obs_bounds_type_OBS_BOUNDS_MAX_ONLY: obs_bounds_type = 6;
4052#[doc = " Used with scene items to indicate the type of bounds to use for scene items.\n Mostly determines how the image will be scaled within those bounds, or\n whether to use bounds at all."]
4053pub type obs_bounds_type = ::std::os::raw::c_int;
4054pub const obs_module_load_state_OBS_MODULE_INVALID: obs_module_load_state = 0;
4055pub const obs_module_load_state_OBS_MODULE_ENABLED: obs_module_load_state = 1;
4056pub const obs_module_load_state_OBS_MODULE_MISSING: obs_module_load_state = 2;
4057pub const obs_module_load_state_OBS_MODULE_DISABLED: obs_module_load_state = 3;
4058pub const obs_module_load_state_OBS_MODULE_DISABLED_SAFE: obs_module_load_state = 4;
4059pub const obs_module_load_state_OBS_MODULE_FAILED_TO_OPEN: obs_module_load_state = 5;
4060pub const obs_module_load_state_OBS_MODULE_FAILED_TO_INITIALIZE: obs_module_load_state = 6;
4061#[doc = " Used by libobs to define the state of a plugin/module."]
4062pub type obs_module_load_state = ::std::os::raw::c_int;
4063#[repr(C)]
4064pub struct obs_transform_info {
4065    pub pos: vec2,
4066    pub rot: f32,
4067    pub scale: vec2,
4068    pub alignment: u32,
4069    pub bounds_type: obs_bounds_type,
4070    pub bounds_alignment: u32,
4071    pub bounds: vec2,
4072    pub crop_to_bounds: bool,
4073}
4074#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4075const _: () = {
4076    ["Size of obs_transform_info"][::std::mem::size_of::<obs_transform_info>() - 44usize];
4077    ["Alignment of obs_transform_info"][::std::mem::align_of::<obs_transform_info>() - 4usize];
4078    ["Offset of field: obs_transform_info::pos"]
4079        [::std::mem::offset_of!(obs_transform_info, pos) - 0usize];
4080    ["Offset of field: obs_transform_info::rot"]
4081        [::std::mem::offset_of!(obs_transform_info, rot) - 8usize];
4082    ["Offset of field: obs_transform_info::scale"]
4083        [::std::mem::offset_of!(obs_transform_info, scale) - 12usize];
4084    ["Offset of field: obs_transform_info::alignment"]
4085        [::std::mem::offset_of!(obs_transform_info, alignment) - 20usize];
4086    ["Offset of field: obs_transform_info::bounds_type"]
4087        [::std::mem::offset_of!(obs_transform_info, bounds_type) - 24usize];
4088    ["Offset of field: obs_transform_info::bounds_alignment"]
4089        [::std::mem::offset_of!(obs_transform_info, bounds_alignment) - 28usize];
4090    ["Offset of field: obs_transform_info::bounds"]
4091        [::std::mem::offset_of!(obs_transform_info, bounds) - 32usize];
4092    ["Offset of field: obs_transform_info::crop_to_bounds"]
4093        [::std::mem::offset_of!(obs_transform_info, crop_to_bounds) - 40usize];
4094};
4095#[doc = " Video initialization structure"]
4096#[repr(C)]
4097pub struct obs_video_info {
4098#[doc = " Graphics module to use (usually \"libobs-opengl\" or \"libobs-d3d11\")"]
4099    pub graphics_module: *const ::std::os::raw::c_char,
4100#[doc = "< Output FPS numerator"]
4101    pub fps_num: u32,
4102#[doc = "< Output FPS denominator"]
4103    pub fps_den: u32,
4104#[doc = "< Base compositing width"]
4105    pub base_width: u32,
4106#[doc = "< Base compositing height"]
4107    pub base_height: u32,
4108#[doc = "< Output width"]
4109    pub output_width: u32,
4110#[doc = "< Output height"]
4111    pub output_height: u32,
4112#[doc = "< Output format"]
4113    pub output_format: video_format,
4114#[doc = " Video adapter index to use (NOTE: avoid for optimus laptops)"]
4115    pub adapter: u32,
4116#[doc = " Use shaders to convert to different color formats"]
4117    pub gpu_conversion: bool,
4118#[doc = "< YUV type (if YUV)"]
4119    pub colorspace: video_colorspace,
4120#[doc = "< YUV range (if YUV)"]
4121    pub range: video_range_type,
4122#[doc = "< How to scale if scaling"]
4123    pub scale_type: obs_scale_type,
4124}
4125#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4126const _: () = {
4127    ["Size of obs_video_info"][::std::mem::size_of::<obs_video_info>() - 56usize];
4128    ["Alignment of obs_video_info"][::std::mem::align_of::<obs_video_info>() - 8usize];
4129    ["Offset of field: obs_video_info::graphics_module"]
4130        [::std::mem::offset_of!(obs_video_info, graphics_module) - 0usize];
4131    ["Offset of field: obs_video_info::fps_num"]
4132        [::std::mem::offset_of!(obs_video_info, fps_num) - 8usize];
4133    ["Offset of field: obs_video_info::fps_den"]
4134        [::std::mem::offset_of!(obs_video_info, fps_den) - 12usize];
4135    ["Offset of field: obs_video_info::base_width"]
4136        [::std::mem::offset_of!(obs_video_info, base_width) - 16usize];
4137    ["Offset of field: obs_video_info::base_height"]
4138        [::std::mem::offset_of!(obs_video_info, base_height) - 20usize];
4139    ["Offset of field: obs_video_info::output_width"]
4140        [::std::mem::offset_of!(obs_video_info, output_width) - 24usize];
4141    ["Offset of field: obs_video_info::output_height"]
4142        [::std::mem::offset_of!(obs_video_info, output_height) - 28usize];
4143    ["Offset of field: obs_video_info::output_format"]
4144        [::std::mem::offset_of!(obs_video_info, output_format) - 32usize];
4145    ["Offset of field: obs_video_info::adapter"]
4146        [::std::mem::offset_of!(obs_video_info, adapter) - 36usize];
4147    ["Offset of field: obs_video_info::gpu_conversion"]
4148        [::std::mem::offset_of!(obs_video_info, gpu_conversion) - 40usize];
4149    ["Offset of field: obs_video_info::colorspace"]
4150        [::std::mem::offset_of!(obs_video_info, colorspace) - 44usize];
4151    ["Offset of field: obs_video_info::range"]
4152        [::std::mem::offset_of!(obs_video_info, range) - 48usize];
4153    ["Offset of field: obs_video_info::scale_type"]
4154        [::std::mem::offset_of!(obs_video_info, scale_type) - 52usize];
4155};
4156#[doc = " Audio initialization structure"]
4157#[repr(C)]
4158pub struct obs_audio_info {
4159    pub samples_per_sec: u32,
4160    pub speakers: speaker_layout,
4161}
4162#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4163const _: () = {
4164    ["Size of obs_audio_info"][::std::mem::size_of::<obs_audio_info>() - 8usize];
4165    ["Alignment of obs_audio_info"][::std::mem::align_of::<obs_audio_info>() - 4usize];
4166    ["Offset of field: obs_audio_info::samples_per_sec"]
4167        [::std::mem::offset_of!(obs_audio_info, samples_per_sec) - 0usize];
4168    ["Offset of field: obs_audio_info::speakers"]
4169        [::std::mem::offset_of!(obs_audio_info, speakers) - 4usize];
4170};
4171#[repr(C)]
4172pub struct obs_audio_info2 {
4173    pub samples_per_sec: u32,
4174    pub speakers: speaker_layout,
4175    pub max_buffering_ms: u32,
4176    pub fixed_buffering: bool,
4177}
4178#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4179const _: () = {
4180    ["Size of obs_audio_info2"][::std::mem::size_of::<obs_audio_info2>() - 16usize];
4181    ["Alignment of obs_audio_info2"][::std::mem::align_of::<obs_audio_info2>() - 4usize];
4182    ["Offset of field: obs_audio_info2::samples_per_sec"]
4183        [::std::mem::offset_of!(obs_audio_info2, samples_per_sec) - 0usize];
4184    ["Offset of field: obs_audio_info2::speakers"]
4185        [::std::mem::offset_of!(obs_audio_info2, speakers) - 4usize];
4186    ["Offset of field: obs_audio_info2::max_buffering_ms"]
4187        [::std::mem::offset_of!(obs_audio_info2, max_buffering_ms) - 8usize];
4188    ["Offset of field: obs_audio_info2::fixed_buffering"]
4189        [::std::mem::offset_of!(obs_audio_info2, fixed_buffering) - 12usize];
4190};
4191#[doc = " Sent to source filters via the filter_audio callback to allow filtering of\n audio data"]
4192#[repr(C)]
4193pub struct obs_audio_data {
4194    pub data: [*mut u8; 8usize],
4195    pub frames: u32,
4196    pub timestamp: u64,
4197}
4198#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4199const _: () = {
4200    ["Size of obs_audio_data"][::std::mem::size_of::<obs_audio_data>() - 80usize];
4201    ["Alignment of obs_audio_data"][::std::mem::align_of::<obs_audio_data>() - 8usize];
4202    ["Offset of field: obs_audio_data::data"]
4203        [::std::mem::offset_of!(obs_audio_data, data) - 0usize];
4204    ["Offset of field: obs_audio_data::frames"]
4205        [::std::mem::offset_of!(obs_audio_data, frames) - 64usize];
4206    ["Offset of field: obs_audio_data::timestamp"]
4207        [::std::mem::offset_of!(obs_audio_data, timestamp) - 72usize];
4208};
4209#[doc = " Source audio output structure.  Used with obs_source_output_audio to output\n source audio.  Audio is automatically resampled and remixed as necessary."]
4210#[repr(C)]
4211pub struct obs_source_audio {
4212    pub data: [*const u8; 8usize],
4213    pub frames: u32,
4214    pub speakers: speaker_layout,
4215    pub format: audio_format,
4216    pub samples_per_sec: u32,
4217    pub timestamp: u64,
4218}
4219#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4220const _: () = {
4221    ["Size of obs_source_audio"][::std::mem::size_of::<obs_source_audio>() - 88usize];
4222    ["Alignment of obs_source_audio"][::std::mem::align_of::<obs_source_audio>() - 8usize];
4223    ["Offset of field: obs_source_audio::data"]
4224        [::std::mem::offset_of!(obs_source_audio, data) - 0usize];
4225    ["Offset of field: obs_source_audio::frames"]
4226        [::std::mem::offset_of!(obs_source_audio, frames) - 64usize];
4227    ["Offset of field: obs_source_audio::speakers"]
4228        [::std::mem::offset_of!(obs_source_audio, speakers) - 68usize];
4229    ["Offset of field: obs_source_audio::format"]
4230        [::std::mem::offset_of!(obs_source_audio, format) - 72usize];
4231    ["Offset of field: obs_source_audio::samples_per_sec"]
4232        [::std::mem::offset_of!(obs_source_audio, samples_per_sec) - 76usize];
4233    ["Offset of field: obs_source_audio::timestamp"]
4234        [::std::mem::offset_of!(obs_source_audio, timestamp) - 80usize];
4235};
4236#[repr(C)]
4237pub struct obs_source_cea_708 {
4238    pub data: *const u8,
4239    pub packets: u32,
4240    pub timestamp: u64,
4241}
4242#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4243const _: () = {
4244    ["Size of obs_source_cea_708"][::std::mem::size_of::<obs_source_cea_708>() - 24usize];
4245    ["Alignment of obs_source_cea_708"][::std::mem::align_of::<obs_source_cea_708>() - 8usize];
4246    ["Offset of field: obs_source_cea_708::data"]
4247        [::std::mem::offset_of!(obs_source_cea_708, data) - 0usize];
4248    ["Offset of field: obs_source_cea_708::packets"]
4249        [::std::mem::offset_of!(obs_source_cea_708, packets) - 8usize];
4250    ["Offset of field: obs_source_cea_708::timestamp"]
4251        [::std::mem::offset_of!(obs_source_cea_708, timestamp) - 16usize];
4252};
4253#[doc = " Source asynchronous video output structure.  Used with\n obs_source_output_video to output asynchronous video.  Video is buffered as\n necessary to play according to timestamps.  When used with audio output,\n audio is synced to video as it is played.\n\n If a YUV format is specified, it will be automatically upsampled and\n converted to RGB via shader on the graphics processor.\n\n NOTE: Non-YUV formats will always be treated as full range with this\n structure!  Use obs_source_frame2 along with obs_source_output_video2\n instead if partial range support is desired for non-YUV video formats."]
4254#[repr(C)]
4255pub struct obs_source_frame {
4256    pub data: [*mut u8; 8usize],
4257    pub linesize: [u32; 8usize],
4258    pub width: u32,
4259    pub height: u32,
4260    pub timestamp: u64,
4261    pub format: video_format,
4262    pub color_matrix: [f32; 16usize],
4263    pub full_range: bool,
4264    pub max_luminance: u16,
4265    pub color_range_min: [f32; 3usize],
4266    pub color_range_max: [f32; 3usize],
4267    pub flip: bool,
4268    pub flags: u8,
4269    pub trc: u8,
4270    pub refs: ::std::os::raw::c_long,
4271    pub prev_frame: bool,
4272}
4273#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4274const _: () = {
4275    ["Size of obs_source_frame"][::std::mem::size_of::<obs_source_frame>() - 224usize];
4276    ["Alignment of obs_source_frame"][::std::mem::align_of::<obs_source_frame>() - 8usize];
4277    ["Offset of field: obs_source_frame::data"]
4278        [::std::mem::offset_of!(obs_source_frame, data) - 0usize];
4279    ["Offset of field: obs_source_frame::linesize"]
4280        [::std::mem::offset_of!(obs_source_frame, linesize) - 64usize];
4281    ["Offset of field: obs_source_frame::width"]
4282        [::std::mem::offset_of!(obs_source_frame, width) - 96usize];
4283    ["Offset of field: obs_source_frame::height"]
4284        [::std::mem::offset_of!(obs_source_frame, height) - 100usize];
4285    ["Offset of field: obs_source_frame::timestamp"]
4286        [::std::mem::offset_of!(obs_source_frame, timestamp) - 104usize];
4287    ["Offset of field: obs_source_frame::format"]
4288        [::std::mem::offset_of!(obs_source_frame, format) - 112usize];
4289    ["Offset of field: obs_source_frame::color_matrix"]
4290        [::std::mem::offset_of!(obs_source_frame, color_matrix) - 116usize];
4291    ["Offset of field: obs_source_frame::full_range"]
4292        [::std::mem::offset_of!(obs_source_frame, full_range) - 180usize];
4293    ["Offset of field: obs_source_frame::max_luminance"]
4294        [::std::mem::offset_of!(obs_source_frame, max_luminance) - 182usize];
4295    ["Offset of field: obs_source_frame::color_range_min"]
4296        [::std::mem::offset_of!(obs_source_frame, color_range_min) - 184usize];
4297    ["Offset of field: obs_source_frame::color_range_max"]
4298        [::std::mem::offset_of!(obs_source_frame, color_range_max) - 196usize];
4299    ["Offset of field: obs_source_frame::flip"]
4300        [::std::mem::offset_of!(obs_source_frame, flip) - 208usize];
4301    ["Offset of field: obs_source_frame::flags"]
4302        [::std::mem::offset_of!(obs_source_frame, flags) - 209usize];
4303    ["Offset of field: obs_source_frame::trc"]
4304        [::std::mem::offset_of!(obs_source_frame, trc) - 210usize];
4305    ["Offset of field: obs_source_frame::refs"]
4306        [::std::mem::offset_of!(obs_source_frame, refs) - 212usize];
4307    ["Offset of field: obs_source_frame::prev_frame"]
4308        [::std::mem::offset_of!(obs_source_frame, prev_frame) - 216usize];
4309};
4310#[repr(C)]
4311pub struct obs_source_frame2 {
4312    pub data: [*mut u8; 8usize],
4313    pub linesize: [u32; 8usize],
4314    pub width: u32,
4315    pub height: u32,
4316    pub timestamp: u64,
4317    pub format: video_format,
4318    pub range: video_range_type,
4319    pub color_matrix: [f32; 16usize],
4320    pub color_range_min: [f32; 3usize],
4321    pub color_range_max: [f32; 3usize],
4322    pub flip: bool,
4323    pub flags: u8,
4324    pub trc: u8,
4325}
4326#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4327const _: () = {
4328    ["Size of obs_source_frame2"][::std::mem::size_of::<obs_source_frame2>() - 216usize];
4329    ["Alignment of obs_source_frame2"][::std::mem::align_of::<obs_source_frame2>() - 8usize];
4330    ["Offset of field: obs_source_frame2::data"]
4331        [::std::mem::offset_of!(obs_source_frame2, data) - 0usize];
4332    ["Offset of field: obs_source_frame2::linesize"]
4333        [::std::mem::offset_of!(obs_source_frame2, linesize) - 64usize];
4334    ["Offset of field: obs_source_frame2::width"]
4335        [::std::mem::offset_of!(obs_source_frame2, width) - 96usize];
4336    ["Offset of field: obs_source_frame2::height"]
4337        [::std::mem::offset_of!(obs_source_frame2, height) - 100usize];
4338    ["Offset of field: obs_source_frame2::timestamp"]
4339        [::std::mem::offset_of!(obs_source_frame2, timestamp) - 104usize];
4340    ["Offset of field: obs_source_frame2::format"]
4341        [::std::mem::offset_of!(obs_source_frame2, format) - 112usize];
4342    ["Offset of field: obs_source_frame2::range"]
4343        [::std::mem::offset_of!(obs_source_frame2, range) - 116usize];
4344    ["Offset of field: obs_source_frame2::color_matrix"]
4345        [::std::mem::offset_of!(obs_source_frame2, color_matrix) - 120usize];
4346    ["Offset of field: obs_source_frame2::color_range_min"]
4347        [::std::mem::offset_of!(obs_source_frame2, color_range_min) - 184usize];
4348    ["Offset of field: obs_source_frame2::color_range_max"]
4349        [::std::mem::offset_of!(obs_source_frame2, color_range_max) - 196usize];
4350    ["Offset of field: obs_source_frame2::flip"]
4351        [::std::mem::offset_of!(obs_source_frame2, flip) - 208usize];
4352    ["Offset of field: obs_source_frame2::flags"]
4353        [::std::mem::offset_of!(obs_source_frame2, flags) - 209usize];
4354    ["Offset of field: obs_source_frame2::trc"]
4355        [::std::mem::offset_of!(obs_source_frame2, trc) - 210usize];
4356};
4357#[doc = " Access to the argc/argv used to start OBS. What you see is what you get."]
4358#[repr(C)]
4359#[derive(Debug, Copy, Clone)]
4360pub struct obs_cmdline_args {
4361    pub argc: ::std::os::raw::c_int,
4362    pub argv: *mut *mut ::std::os::raw::c_char,
4363}
4364#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4365const _: () = {
4366    ["Size of obs_cmdline_args"][::std::mem::size_of::<obs_cmdline_args>() - 16usize];
4367    ["Alignment of obs_cmdline_args"][::std::mem::align_of::<obs_cmdline_args>() - 8usize];
4368    ["Offset of field: obs_cmdline_args::argc"]
4369        [::std::mem::offset_of!(obs_cmdline_args, argc) - 0usize];
4370    ["Offset of field: obs_cmdline_args::argv"]
4371        [::std::mem::offset_of!(obs_cmdline_args, argv) - 8usize];
4372};
4373#[repr(C)]
4374pub struct obs_module_failure_info {
4375    pub failed_modules: *mut *mut ::std::os::raw::c_char,
4376    pub count: usize,
4377}
4378#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4379const _: () = {
4380    ["Size of obs_module_failure_info"][::std::mem::size_of::<obs_module_failure_info>() - 16usize];
4381    ["Alignment of obs_module_failure_info"]
4382        [::std::mem::align_of::<obs_module_failure_info>() - 8usize];
4383    ["Offset of field: obs_module_failure_info::failed_modules"]
4384        [::std::mem::offset_of!(obs_module_failure_info, failed_modules) - 0usize];
4385    ["Offset of field: obs_module_failure_info::count"]
4386        [::std::mem::offset_of!(obs_module_failure_info, count) - 8usize];
4387};
4388#[repr(C)]
4389#[derive(Debug, Copy, Clone)]
4390pub struct obs_module_info {
4391    pub bin_path: *const ::std::os::raw::c_char,
4392    pub data_path: *const ::std::os::raw::c_char,
4393}
4394#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4395const _: () = {
4396    ["Size of obs_module_info"][::std::mem::size_of::<obs_module_info>() - 16usize];
4397    ["Alignment of obs_module_info"][::std::mem::align_of::<obs_module_info>() - 8usize];
4398    ["Offset of field: obs_module_info::bin_path"]
4399        [::std::mem::offset_of!(obs_module_info, bin_path) - 0usize];
4400    ["Offset of field: obs_module_info::data_path"]
4401        [::std::mem::offset_of!(obs_module_info, data_path) - 8usize];
4402};
4403pub type obs_find_module_callback_t = ::std::option::Option<
4404    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info),
4405>;
4406#[repr(C)]
4407#[derive(Debug, Copy, Clone)]
4408pub struct obs_module_info2 {
4409    pub bin_path: *const ::std::os::raw::c_char,
4410    pub data_path: *const ::std::os::raw::c_char,
4411    pub name: *const ::std::os::raw::c_char,
4412}
4413#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4414const _: () = {
4415    ["Size of obs_module_info2"][::std::mem::size_of::<obs_module_info2>() - 24usize];
4416    ["Alignment of obs_module_info2"][::std::mem::align_of::<obs_module_info2>() - 8usize];
4417    ["Offset of field: obs_module_info2::bin_path"]
4418        [::std::mem::offset_of!(obs_module_info2, bin_path) - 0usize];
4419    ["Offset of field: obs_module_info2::data_path"]
4420        [::std::mem::offset_of!(obs_module_info2, data_path) - 8usize];
4421    ["Offset of field: obs_module_info2::name"]
4422        [::std::mem::offset_of!(obs_module_info2, name) - 16usize];
4423};
4424pub type obs_find_module_callback2_t = ::std::option::Option<
4425    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info2),
4426>;
4427pub type obs_enum_module_callback_t = ::std::option::Option<
4428    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, module: *mut obs_module_t),
4429>;
4430#[doc = "< RGB/YUV"]
4431pub const obs_base_effect_OBS_EFFECT_DEFAULT: obs_base_effect = 0;
4432#[doc = "< RGB/YUV (using texture_rect)"]
4433pub const obs_base_effect_OBS_EFFECT_DEFAULT_RECT: obs_base_effect = 1;
4434#[doc = "< RGB/YUV (alpha set to 1.0)"]
4435pub const obs_base_effect_OBS_EFFECT_OPAQUE: obs_base_effect = 2;
4436#[doc = "< RGB/YUV (solid color only)"]
4437pub const obs_base_effect_OBS_EFFECT_SOLID: obs_base_effect = 3;
4438#[doc = "< Bicubic downscale"]
4439pub const obs_base_effect_OBS_EFFECT_BICUBIC: obs_base_effect = 4;
4440#[doc = "< Lanczos downscale"]
4441pub const obs_base_effect_OBS_EFFECT_LANCZOS: obs_base_effect = 5;
4442#[doc = "< Bilinear low resolution downscale"]
4443pub const obs_base_effect_OBS_EFFECT_BILINEAR_LOWRES: obs_base_effect = 6;
4444#[doc = "< Premultiplied alpha"]
4445pub const obs_base_effect_OBS_EFFECT_PREMULTIPLIED_ALPHA: obs_base_effect = 7;
4446#[doc = "< RGB/YUV (repeating)"]
4447pub const obs_base_effect_OBS_EFFECT_REPEAT: obs_base_effect = 8;
4448#[doc = "< Area rescale"]
4449pub const obs_base_effect_OBS_EFFECT_AREA: obs_base_effect = 9;
4450pub type obs_base_effect = ::std::os::raw::c_int;
4451pub type obs_load_source_cb = ::std::option::Option<
4452    unsafe extern "C" fn(private_data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
4453>;
4454pub type obs_save_source_filter_cb = ::std::option::Option<
4455    unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t) -> bool,
4456>;
4457pub const obs_obj_type_OBS_OBJ_TYPE_INVALID: obs_obj_type = 0;
4458pub const obs_obj_type_OBS_OBJ_TYPE_SOURCE: obs_obj_type = 1;
4459pub const obs_obj_type_OBS_OBJ_TYPE_OUTPUT: obs_obj_type = 2;
4460pub const obs_obj_type_OBS_OBJ_TYPE_ENCODER: obs_obj_type = 3;
4461pub const obs_obj_type_OBS_OBJ_TYPE_SERVICE: obs_obj_type = 4;
4462pub const obs_obj_type_OBS_OBJ_TYPE_CANVAS: obs_obj_type = 5;
4463pub type obs_obj_type = ::std::os::raw::c_int;
4464pub type obs_enum_audio_device_cb = ::std::option::Option<
4465    unsafe extern "C" fn(
4466        data: *mut ::std::os::raw::c_void,
4467        name: *const ::std::os::raw::c_char,
4468        id: *const ::std::os::raw::c_char,
4469    ) -> bool,
4470>;
4471pub type obs_task_t =
4472    ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>;
4473pub const obs_task_type_OBS_TASK_UI: obs_task_type = 0;
4474pub const obs_task_type_OBS_TASK_GRAPHICS: obs_task_type = 1;
4475pub const obs_task_type_OBS_TASK_AUDIO: obs_task_type = 2;
4476pub const obs_task_type_OBS_TASK_DESTROY: obs_task_type = 3;
4477pub type obs_task_type = ::std::os::raw::c_int;
4478pub type obs_task_handler_t = ::std::option::Option<
4479    unsafe extern "C" fn(task: obs_task_t, param: *mut ::std::os::raw::c_void, wait: bool),
4480>;
4481pub type obs_source_audio_capture_t = ::std::option::Option<
4482    unsafe extern "C" fn(
4483        param: *mut ::std::os::raw::c_void,
4484        source: *mut obs_source_t,
4485        audio_data: *const audio_data,
4486        muted: bool,
4487    ),
4488>;
4489pub type obs_source_caption_t = ::std::option::Option<
4490    unsafe extern "C" fn(
4491        param: *mut ::std::os::raw::c_void,
4492        source: *mut obs_source_t,
4493        captions: *const obs_source_cea_708,
4494    ),
4495>;
4496pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISABLE: obs_deinterlace_mode = 0;
4497pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISCARD: obs_deinterlace_mode = 1;
4498pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_RETRO: obs_deinterlace_mode = 2;
4499pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND: obs_deinterlace_mode = 3;
4500pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND_2X: obs_deinterlace_mode = 4;
4501pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR: obs_deinterlace_mode = 5;
4502pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR_2X: obs_deinterlace_mode = 6;
4503pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF: obs_deinterlace_mode = 7;
4504pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF_2X: obs_deinterlace_mode = 8;
4505pub type obs_deinterlace_mode = ::std::os::raw::c_int;
4506pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_TOP: obs_deinterlace_field_order =
4507    0;
4508pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_BOTTOM:
4509    obs_deinterlace_field_order = 1;
4510pub type obs_deinterlace_field_order = ::std::os::raw::c_int;
4511pub const obs_monitoring_type_OBS_MONITORING_TYPE_NONE: obs_monitoring_type = 0;
4512pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_ONLY: obs_monitoring_type = 1;
4513pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT: obs_monitoring_type = 2;
4514pub type obs_monitoring_type = ::std::os::raw::c_int;
4515pub const obs_transition_target_OBS_TRANSITION_SOURCE_A: obs_transition_target = 0;
4516pub const obs_transition_target_OBS_TRANSITION_SOURCE_B: obs_transition_target = 1;
4517pub type obs_transition_target = ::std::os::raw::c_int;
4518pub const obs_transition_mode_OBS_TRANSITION_MODE_AUTO: obs_transition_mode = 0;
4519pub const obs_transition_mode_OBS_TRANSITION_MODE_MANUAL: obs_transition_mode = 1;
4520pub type obs_transition_mode = ::std::os::raw::c_int;
4521pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_MAX_ONLY: obs_transition_scale_type = 0;
4522pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_ASPECT: obs_transition_scale_type = 1;
4523pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_STRETCH: obs_transition_scale_type = 2;
4524pub type obs_transition_scale_type = ::std::os::raw::c_int;
4525pub type obs_transition_video_render_callback_t = ::std::option::Option<
4526    unsafe extern "C" fn(
4527        data: *mut ::std::os::raw::c_void,
4528        a: *mut gs_texture_t,
4529        b: *mut gs_texture_t,
4530        t: f32,
4531        cx: u32,
4532        cy: u32,
4533    ),
4534>;
4535pub type obs_transition_audio_mix_callback_t =
4536    ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, t: f32) -> f32>;
4537#[doc = "< Source refs only"]
4538pub const obs_scene_duplicate_type_OBS_SCENE_DUP_REFS: obs_scene_duplicate_type = 0;
4539#[doc = "< Fully duplicate"]
4540pub const obs_scene_duplicate_type_OBS_SCENE_DUP_COPY: obs_scene_duplicate_type = 1;
4541#[doc = "< Source refs only (as private)"]
4542pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_REFS: obs_scene_duplicate_type = 2;
4543#[doc = "< Fully duplicate (as private)"]
4544pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_COPY: obs_scene_duplicate_type = 3;
4545pub type obs_scene_duplicate_type = ::std::os::raw::c_int;
4546#[repr(C)]
4547#[derive(Debug, Copy, Clone)]
4548pub struct obs_sceneitem_order_info {
4549    pub group: *mut obs_sceneitem_t,
4550    pub item: *mut obs_sceneitem_t,
4551}
4552#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4553const _: () = {
4554    ["Size of obs_sceneitem_order_info"]
4555        [::std::mem::size_of::<obs_sceneitem_order_info>() - 16usize];
4556    ["Alignment of obs_sceneitem_order_info"]
4557        [::std::mem::align_of::<obs_sceneitem_order_info>() - 8usize];
4558    ["Offset of field: obs_sceneitem_order_info::group"]
4559        [::std::mem::offset_of!(obs_sceneitem_order_info, group) - 0usize];
4560    ["Offset of field: obs_sceneitem_order_info::item"]
4561        [::std::mem::offset_of!(obs_sceneitem_order_info, item) - 8usize];
4562};
4563pub type obs_scene_atomic_update_func = ::std::option::Option<
4564    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, scene: *mut obs_scene_t),
4565>;
4566#[repr(C)]
4567#[derive(Debug, Copy, Clone)]
4568pub struct obs_sceneitem_crop {
4569    pub left: ::std::os::raw::c_int,
4570    pub top: ::std::os::raw::c_int,
4571    pub right: ::std::os::raw::c_int,
4572    pub bottom: ::std::os::raw::c_int,
4573}
4574#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4575const _: () = {
4576    ["Size of obs_sceneitem_crop"][::std::mem::size_of::<obs_sceneitem_crop>() - 16usize];
4577    ["Alignment of obs_sceneitem_crop"][::std::mem::align_of::<obs_sceneitem_crop>() - 4usize];
4578    ["Offset of field: obs_sceneitem_crop::left"]
4579        [::std::mem::offset_of!(obs_sceneitem_crop, left) - 0usize];
4580    ["Offset of field: obs_sceneitem_crop::top"]
4581        [::std::mem::offset_of!(obs_sceneitem_crop, top) - 4usize];
4582    ["Offset of field: obs_sceneitem_crop::right"]
4583        [::std::mem::offset_of!(obs_sceneitem_crop, right) - 8usize];
4584    ["Offset of field: obs_sceneitem_crop::bottom"]
4585        [::std::mem::offset_of!(obs_sceneitem_crop, bottom) - 12usize];
4586};
4587pub const obs_canvas_flags_MAIN: obs_canvas_flags = 1;
4588pub const obs_canvas_flags_ACTIVATE: obs_canvas_flags = 2;
4589pub const obs_canvas_flags_MIX_AUDIO: obs_canvas_flags = 4;
4590pub const obs_canvas_flags_SCENE_REF: obs_canvas_flags = 8;
4591pub const obs_canvas_flags_EPHEMERAL: obs_canvas_flags = 16;
4592pub const obs_canvas_flags_PROGRAM: obs_canvas_flags = 14;
4593pub const obs_canvas_flags_PREVIEW: obs_canvas_flags = 16;
4594pub const obs_canvas_flags_DEVICE: obs_canvas_flags = 18;
4595pub type obs_canvas_flags = ::std::os::raw::c_int;
4596pub const display_capture_method_DISPLAY_METHOD_AUTO: display_capture_method = 0;
4597pub const display_capture_method_DISPLAY_METHOD_DXGI: display_capture_method = 1;
4598pub const display_capture_method_DISPLAY_METHOD_WGC: display_capture_method = 2;
4599pub type display_capture_method = ::std::os::raw::c_int;
4600pub const capture_mode_CAPTURE_MODE_ANY: capture_mode = 0;
4601pub const capture_mode_CAPTURE_MODE_WINDOW: capture_mode = 1;
4602pub const capture_mode_CAPTURE_MODE_HOTKEY: capture_mode = 2;
4603pub type capture_mode = ::std::os::raw::c_int;
4604pub const hook_rate_HOOK_RATE_SLOW: hook_rate = 0;
4605pub const hook_rate_HOOK_RATE_NORMAL: hook_rate = 1;
4606pub const hook_rate_HOOK_RATE_FAST: hook_rate = 2;
4607pub const hook_rate_HOOK_RATE_FASTEST: hook_rate = 3;
4608pub type hook_rate = ::std::os::raw::c_int;
4609pub const window_priority_WINDOW_PRIORITY_CLASS: window_priority = 0;
4610pub const window_priority_WINDOW_PRIORITY_TITLE: window_priority = 1;
4611pub const window_priority_WINDOW_PRIORITY_EXE: window_priority = 2;
4612pub type window_priority = ::std::os::raw::c_int;
4613pub const window_search_mode_INCLUDE_MINIMIZED: window_search_mode = 0;
4614pub const window_search_mode_EXCLUDE_MINIMIZED: window_search_mode = 1;
4615pub type window_search_mode = ::std::os::raw::c_int;
4616pub const window_capture_method_METHOD_AUTO: window_capture_method = 0;
4617pub const window_capture_method_METHOD_BITBLT: window_capture_method = 1;
4618pub const window_capture_method_METHOD_WGC: window_capture_method = 2;
4619pub type window_capture_method = ::std::os::raw::c_int;
4620pub type __builtin_va_list = *mut ::std::os::raw::c_char;
4621unsafe extern "C" {
4622    pub fn base_get_log_handler(
4623        handler: *mut log_handler_t,
4624        param: *mut *mut ::std::os::raw::c_void,
4625    );
4626    pub fn base_set_log_handler(handler: log_handler_t, param: *mut ::std::os::raw::c_void);
4627    pub fn base_set_crash_handler(
4628        handler: ::std::option::Option<
4629            unsafe extern "C" fn(
4630                arg1: *const ::std::os::raw::c_char,
4631                arg2: va_list,
4632                arg3: *mut ::std::os::raw::c_void,
4633            ),
4634        >,
4635        param: *mut ::std::os::raw::c_void,
4636    );
4637    pub fn blog(log_level: ::std::os::raw::c_int, format: *const ::std::os::raw::c_char, ...);
4638    pub fn bcrash(format: *const ::std::os::raw::c_char, ...) -> !;
4639    pub fn bmalloc(size: usize) -> *mut ::std::os::raw::c_void;
4640    pub fn brealloc(ptr: *mut ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4641    pub fn bfree(ptr: *mut ::std::os::raw::c_void);
4642    pub fn base_get_alignment() -> ::std::os::raw::c_int;
4643    pub fn bnum_allocs() -> ::std::os::raw::c_long;
4644    pub fn bmemdup(ptr: *const ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4645    pub fn profile_register_root(
4646        name: *const ::std::os::raw::c_char,
4647        expected_time_between_calls: u64,
4648    );
4649    pub fn profile_start(name: *const ::std::os::raw::c_char);
4650    pub fn profile_end(name: *const ::std::os::raw::c_char);
4651    pub fn profile_reenable_thread();
4652    pub fn profiler_start();
4653    pub fn profiler_stop();
4654    pub fn profiler_print(snap: *mut profiler_snapshot_t);
4655    pub fn profiler_print_time_between_calls(snap: *mut profiler_snapshot_t);
4656    pub fn profiler_free();
4657    pub fn profiler_name_store_create() -> *mut profiler_name_store_t;
4658    pub fn profiler_name_store_free(store: *mut profiler_name_store_t);
4659    pub fn profile_store_name(
4660        store: *mut profiler_name_store_t,
4661        format: *const ::std::os::raw::c_char,
4662        ...
4663    ) -> *const ::std::os::raw::c_char;
4664    pub fn profile_snapshot_create() -> *mut profiler_snapshot_t;
4665    pub fn profile_snapshot_free(snap: *mut profiler_snapshot_t);
4666    pub fn profiler_snapshot_dump_csv(
4667        snap: *const profiler_snapshot_t,
4668        filename: *const ::std::os::raw::c_char,
4669    ) -> bool;
4670    pub fn profiler_snapshot_dump_csv_gz(
4671        snap: *const profiler_snapshot_t,
4672        filename: *const ::std::os::raw::c_char,
4673    ) -> bool;
4674    pub fn profiler_snapshot_num_roots(snap: *mut profiler_snapshot_t) -> usize;
4675    pub fn profiler_snapshot_enumerate_roots(
4676        snap: *mut profiler_snapshot_t,
4677        func: profiler_entry_enum_func,
4678        context: *mut ::std::os::raw::c_void,
4679    );
4680    pub fn profiler_snapshot_filter_roots(
4681        snap: *mut profiler_snapshot_t,
4682        func: profiler_name_filter_func,
4683        data: *mut ::std::os::raw::c_void,
4684    );
4685    pub fn profiler_snapshot_num_children(entry: *mut profiler_snapshot_entry_t) -> usize;
4686    pub fn profiler_snapshot_enumerate_children(
4687        entry: *mut profiler_snapshot_entry_t,
4688        func: profiler_entry_enum_func,
4689        context: *mut ::std::os::raw::c_void,
4690    );
4691    pub fn profiler_snapshot_entry_name(
4692        entry: *mut profiler_snapshot_entry_t,
4693    ) -> *const ::std::os::raw::c_char;
4694    pub fn profiler_snapshot_entry_times(
4695        entry: *mut profiler_snapshot_entry_t,
4696    ) -> *mut profiler_time_entries_t;
4697    pub fn profiler_snapshot_entry_min_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4698    pub fn profiler_snapshot_entry_max_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4699    pub fn profiler_snapshot_entry_overall_count(entry: *mut profiler_snapshot_entry_t) -> u64;
4700    pub fn profiler_snapshot_entry_times_between_calls(
4701        entry: *mut profiler_snapshot_entry_t,
4702    ) -> *mut profiler_time_entries_t;
4703    pub fn profiler_snapshot_entry_expected_time_between_calls(
4704        entry: *mut profiler_snapshot_entry_t,
4705    ) -> u64;
4706    pub fn profiler_snapshot_entry_min_time_between_calls(
4707        entry: *mut profiler_snapshot_entry_t,
4708    ) -> u64;
4709    pub fn profiler_snapshot_entry_max_time_between_calls(
4710        entry: *mut profiler_snapshot_entry_t,
4711    ) -> u64;
4712    pub fn profiler_snapshot_entry_overall_between_calls_count(
4713        entry: *mut profiler_snapshot_entry_t,
4714    ) -> u64;
4715    pub fn text_lookup_create(path: *const ::std::os::raw::c_char) -> *mut lookup_t;
4716    pub fn text_lookup_add(lookup: *mut lookup_t, path: *const ::std::os::raw::c_char) -> bool;
4717    pub fn text_lookup_destroy(lookup: *mut lookup_t);
4718    pub fn text_lookup_getstr(
4719        lookup: *mut lookup_t,
4720        lookup_val: *const ::std::os::raw::c_char,
4721        out: *mut *const ::std::os::raw::c_char,
4722    ) -> bool;
4723    pub fn input_getbuttonstate(input: *mut input_t, button: u32) -> ::std::os::raw::c_int;
4724    pub fn gs_shader_destroy(shader: *mut gs_shader_t);
4725    pub fn gs_shader_get_num_params(shader: *const gs_shader_t) -> ::std::os::raw::c_int;
4726    pub fn gs_shader_get_param_by_idx(shader: *mut gs_shader_t, param: u32) -> *mut gs_sparam_t;
4727    pub fn gs_shader_get_param_by_name(
4728        shader: *mut gs_shader_t,
4729        name: *const ::std::os::raw::c_char,
4730    ) -> *mut gs_sparam_t;
4731    pub fn gs_shader_get_viewproj_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4732    pub fn gs_shader_get_world_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4733    pub fn gs_shader_get_param_info(param: *const gs_sparam_t, info: *mut gs_shader_param_info);
4734    pub fn gs_shader_set_bool(param: *mut gs_sparam_t, val: bool);
4735    pub fn gs_shader_set_float(param: *mut gs_sparam_t, val: f32);
4736    pub fn gs_shader_set_int(param: *mut gs_sparam_t, val: ::std::os::raw::c_int);
4737    pub fn gs_shader_set_matrix3(param: *mut gs_sparam_t, val: *const matrix3);
4738    pub fn gs_shader_set_matrix4(param: *mut gs_sparam_t, val: *const matrix4);
4739    pub fn gs_shader_set_vec2(param: *mut gs_sparam_t, val: *const vec2);
4740    pub fn gs_shader_set_vec3(param: *mut gs_sparam_t, val: *const vec3);
4741    pub fn gs_shader_set_vec4(param: *mut gs_sparam_t, val: *const vec4);
4742    pub fn gs_shader_set_texture(param: *mut gs_sparam_t, val: *mut gs_texture_t);
4743    pub fn gs_shader_set_val(
4744        param: *mut gs_sparam_t,
4745        val: *const ::std::os::raw::c_void,
4746        size: usize,
4747    );
4748    pub fn gs_shader_set_default(param: *mut gs_sparam_t);
4749    pub fn gs_shader_set_next_sampler(param: *mut gs_sparam_t, sampler: *mut gs_samplerstate_t);
4750    pub fn gs_effect_destroy(effect: *mut gs_effect_t);
4751    pub fn gs_effect_get_technique(
4752        effect: *const gs_effect_t,
4753        name: *const ::std::os::raw::c_char,
4754    ) -> *mut gs_technique_t;
4755    pub fn gs_effect_get_current_technique(effect: *const gs_effect_t) -> *mut gs_technique_t;
4756    pub fn gs_technique_begin(technique: *mut gs_technique_t) -> usize;
4757    pub fn gs_technique_end(technique: *mut gs_technique_t);
4758    pub fn gs_technique_begin_pass(technique: *mut gs_technique_t, pass: usize) -> bool;
4759    pub fn gs_technique_begin_pass_by_name(
4760        technique: *mut gs_technique_t,
4761        name: *const ::std::os::raw::c_char,
4762    ) -> bool;
4763    pub fn gs_technique_end_pass(technique: *mut gs_technique_t);
4764    pub fn gs_technique_get_pass_by_idx(
4765        technique: *const gs_technique_t,
4766        pass: usize,
4767    ) -> *mut gs_epass_t;
4768    pub fn gs_technique_get_pass_by_name(
4769        technique: *const gs_technique_t,
4770        name: *const ::std::os::raw::c_char,
4771    ) -> *mut gs_epass_t;
4772    pub fn gs_effect_get_num_params(effect: *const gs_effect_t) -> usize;
4773    pub fn gs_effect_get_param_by_idx(effect: *const gs_effect_t, param: usize)
4774    -> *mut gs_eparam_t;
4775    pub fn gs_effect_get_param_by_name(
4776        effect: *const gs_effect_t,
4777        name: *const ::std::os::raw::c_char,
4778    ) -> *mut gs_eparam_t;
4779    pub fn gs_param_get_num_annotations(param: *const gs_eparam_t) -> usize;
4780    pub fn gs_param_get_annotation_by_idx(
4781        param: *const gs_eparam_t,
4782        annotation: usize,
4783    ) -> *mut gs_eparam_t;
4784    pub fn gs_param_get_annotation_by_name(
4785        param: *const gs_eparam_t,
4786        name: *const ::std::os::raw::c_char,
4787    ) -> *mut gs_eparam_t;
4788#[doc = " Helper function to simplify effect usage.  Use with a while loop that\n contains drawing functions.  Automatically handles techniques, passes, and\n unloading."]
4789    pub fn gs_effect_loop(effect: *mut gs_effect_t, name: *const ::std::os::raw::c_char) -> bool;
4790#[doc = " used internally"]
4791    pub fn gs_effect_update_params(effect: *mut gs_effect_t);
4792    pub fn gs_effect_get_viewproj_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4793    pub fn gs_effect_get_world_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4794    pub fn gs_effect_get_param_info(param: *const gs_eparam_t, info: *mut gs_effect_param_info);
4795    pub fn gs_effect_set_bool(param: *mut gs_eparam_t, val: bool);
4796    pub fn gs_effect_set_float(param: *mut gs_eparam_t, val: f32);
4797    pub fn gs_effect_set_int(param: *mut gs_eparam_t, val: ::std::os::raw::c_int);
4798    pub fn gs_effect_set_matrix4(param: *mut gs_eparam_t, val: *const matrix4);
4799    pub fn gs_effect_set_vec2(param: *mut gs_eparam_t, val: *const vec2);
4800    pub fn gs_effect_set_vec3(param: *mut gs_eparam_t, val: *const vec3);
4801    pub fn gs_effect_set_vec4(param: *mut gs_eparam_t, val: *const vec4);
4802    pub fn gs_effect_set_texture(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4803    pub fn gs_effect_set_texture_srgb(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4804    pub fn gs_effect_set_val(
4805        param: *mut gs_eparam_t,
4806        val: *const ::std::os::raw::c_void,
4807        size: usize,
4808    );
4809    pub fn gs_effect_set_default(param: *mut gs_eparam_t);
4810    pub fn gs_effect_get_val_size(param: *mut gs_eparam_t) -> usize;
4811    pub fn gs_effect_get_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4812    pub fn gs_effect_get_default_val_size(param: *mut gs_eparam_t) -> usize;
4813    pub fn gs_effect_get_default_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4814    pub fn gs_effect_set_next_sampler(param: *mut gs_eparam_t, sampler: *mut gs_samplerstate_t);
4815    pub fn gs_effect_set_color(param: *mut gs_eparam_t, argb: u32);
4816    pub fn gs_texrender_create(
4817        format: gs_color_format,
4818        zsformat: gs_zstencil_format,
4819    ) -> *mut gs_texrender_t;
4820    pub fn gs_texrender_destroy(texrender: *mut gs_texrender_t);
4821    pub fn gs_texrender_begin(texrender: *mut gs_texrender_t, cx: u32, cy: u32) -> bool;
4822    pub fn gs_texrender_begin_with_color_space(
4823        texrender: *mut gs_texrender_t,
4824        cx: u32,
4825        cy: u32,
4826        space: gs_color_space,
4827    ) -> bool;
4828    pub fn gs_texrender_end(texrender: *mut gs_texrender_t);
4829    pub fn gs_texrender_reset(texrender: *mut gs_texrender_t);
4830    pub fn gs_texrender_get_texture(texrender: *const gs_texrender_t) -> *mut gs_texture_t;
4831    pub fn gs_texrender_get_format(texrender: *const gs_texrender_t) -> gs_color_format;
4832    pub fn gs_get_device_name() -> *const ::std::os::raw::c_char;
4833    pub fn gs_get_driver_version() -> *const ::std::os::raw::c_char;
4834    pub fn gs_get_renderer() -> *const ::std::os::raw::c_char;
4835    pub fn gs_get_gpu_dmem() -> u64;
4836    pub fn gs_get_gpu_smem() -> u64;
4837    pub fn gs_get_device_type() -> ::std::os::raw::c_int;
4838    pub fn gs_get_adapter_count() -> u32;
4839    pub fn gs_enum_adapters(
4840        callback: ::std::option::Option<
4841            unsafe extern "C" fn(
4842                param: *mut ::std::os::raw::c_void,
4843                name: *const ::std::os::raw::c_char,
4844                id: u32,
4845            ) -> bool,
4846        >,
4847        param: *mut ::std::os::raw::c_void,
4848    );
4849    pub fn gs_create(
4850        graphics: *mut *mut graphics_t,
4851        module: *const ::std::os::raw::c_char,
4852        adapter: u32,
4853    ) -> ::std::os::raw::c_int;
4854    pub fn gs_destroy(graphics: *mut graphics_t);
4855    pub fn gs_enter_context(graphics: *mut graphics_t);
4856    pub fn gs_leave_context();
4857    pub fn gs_get_context() -> *mut graphics_t;
4858    pub fn gs_get_device_obj() -> *mut ::std::os::raw::c_void;
4859    pub fn gs_matrix_push();
4860    pub fn gs_matrix_pop();
4861    pub fn gs_matrix_identity();
4862    pub fn gs_matrix_transpose();
4863    pub fn gs_matrix_set(matrix: *const matrix4);
4864    pub fn gs_matrix_get(dst: *mut matrix4);
4865    pub fn gs_matrix_mul(matrix: *const matrix4);
4866    pub fn gs_matrix_rotquat(rot: *const quat);
4867    pub fn gs_matrix_rotaa(rot: *const axisang);
4868    pub fn gs_matrix_translate(pos: *const vec3);
4869    pub fn gs_matrix_scale(scale: *const vec3);
4870    pub fn gs_matrix_rotaa4f(x: f32, y: f32, z: f32, angle: f32);
4871    pub fn gs_matrix_translate3f(x: f32, y: f32, z: f32);
4872    pub fn gs_matrix_scale3f(x: f32, y: f32, z: f32);
4873    pub fn gs_render_start(b_new: bool);
4874    pub fn gs_render_stop(mode: gs_draw_mode);
4875    pub fn gs_render_save() -> *mut gs_vertbuffer_t;
4876    pub fn gs_vertex2f(x: f32, y: f32);
4877    pub fn gs_vertex3f(x: f32, y: f32, z: f32);
4878    pub fn gs_normal3f(x: f32, y: f32, z: f32);
4879    pub fn gs_color(color: u32);
4880    pub fn gs_texcoord(x: f32, y: f32, unit: ::std::os::raw::c_int);
4881    pub fn gs_vertex2v(v: *const vec2);
4882    pub fn gs_vertex3v(v: *const vec3);
4883    pub fn gs_normal3v(v: *const vec3);
4884    pub fn gs_color4v(v: *const vec4);
4885    pub fn gs_texcoord2v(v: *const vec2, unit: ::std::os::raw::c_int);
4886    pub fn gs_get_input() -> *mut input_t;
4887    pub fn gs_get_effect() -> *mut gs_effect_t;
4888    pub fn gs_effect_create_from_file(
4889        file: *const ::std::os::raw::c_char,
4890        error_string: *mut *mut ::std::os::raw::c_char,
4891    ) -> *mut gs_effect_t;
4892    pub fn gs_effect_create(
4893        effect_string: *const ::std::os::raw::c_char,
4894        filename: *const ::std::os::raw::c_char,
4895        error_string: *mut *mut ::std::os::raw::c_char,
4896    ) -> *mut gs_effect_t;
4897    pub fn gs_vertexshader_create_from_file(
4898        file: *const ::std::os::raw::c_char,
4899        error_string: *mut *mut ::std::os::raw::c_char,
4900    ) -> *mut gs_shader_t;
4901    pub fn gs_pixelshader_create_from_file(
4902        file: *const ::std::os::raw::c_char,
4903        error_string: *mut *mut ::std::os::raw::c_char,
4904    ) -> *mut gs_shader_t;
4905    pub fn gs_texture_create_from_file(file: *const ::std::os::raw::c_char) -> *mut gs_texture_t;
4906    pub fn gs_create_texture_file_data(
4907        file: *const ::std::os::raw::c_char,
4908        format: *mut gs_color_format,
4909        cx: *mut u32,
4910        cy: *mut u32,
4911    ) -> *mut u8;
4912    pub fn gs_create_texture_file_data2(
4913        file: *const ::std::os::raw::c_char,
4914        alpha_mode: gs_image_alpha_mode,
4915        format: *mut gs_color_format,
4916        cx: *mut u32,
4917        cy: *mut u32,
4918    ) -> *mut u8;
4919    pub fn gs_create_texture_file_data3(
4920        file: *const ::std::os::raw::c_char,
4921        alpha_mode: gs_image_alpha_mode,
4922        format: *mut gs_color_format,
4923        cx: *mut u32,
4924        cy: *mut u32,
4925        space: *mut gs_color_space,
4926    ) -> *mut u8;
4927#[doc = " Draws a 2D sprite\n\n   If width or height is 0, the width or height of the texture will be used.\n The flip value specifies whether the texture should be flipped on the U or V\n axis with GS_FLIP_U and GS_FLIP_V."]
4928    pub fn gs_draw_sprite(tex: *mut gs_texture_t, flip: u32, width: u32, height: u32);
4929    pub fn gs_draw_quadf(tex: *mut gs_texture_t, flip: u32, width: f32, height: f32);
4930    pub fn gs_draw_sprite_subregion(
4931        tex: *mut gs_texture_t,
4932        flip: u32,
4933        x: u32,
4934        y: u32,
4935        cx: u32,
4936        cy: u32,
4937    );
4938    pub fn gs_draw_cube_backdrop(
4939        cubetex: *mut gs_texture_t,
4940        rot: *const quat,
4941        left: f32,
4942        right: f32,
4943        top: f32,
4944        bottom: f32,
4945        znear: f32,
4946    );
4947#[doc = " sets the viewport to current swap chain size"]
4948    pub fn gs_reset_viewport();
4949#[doc = " sets default screen-sized orthographic mode"]
4950    pub fn gs_set_2d_mode();
4951#[doc = " sets default screen-sized perspective mode"]
4952    pub fn gs_set_3d_mode(fovy: f64, znear: f64, zvar: f64);
4953    pub fn gs_viewport_push();
4954    pub fn gs_viewport_pop();
4955    pub fn gs_texture_set_image(
4956        tex: *mut gs_texture_t,
4957        data: *const u8,
4958        linesize: u32,
4959        invert: bool,
4960    );
4961    pub fn gs_cubetexture_set_image(
4962        cubetex: *mut gs_texture_t,
4963        side: u32,
4964        data: *const ::std::os::raw::c_void,
4965        linesize: u32,
4966        invert: bool,
4967    );
4968    pub fn gs_perspective(fovy: f32, aspect: f32, znear: f32, zfar: f32);
4969    pub fn gs_blend_state_push();
4970    pub fn gs_blend_state_pop();
4971    pub fn gs_reset_blend_state();
4972    pub fn gs_swapchain_create(data: *const gs_init_data) -> *mut gs_swapchain_t;
4973    pub fn gs_resize(x: u32, y: u32);
4974    pub fn gs_update_color_space();
4975    pub fn gs_get_size(x: *mut u32, y: *mut u32);
4976    pub fn gs_get_width() -> u32;
4977    pub fn gs_get_height() -> u32;
4978    pub fn gs_texture_create(
4979        width: u32,
4980        height: u32,
4981        color_format: gs_color_format,
4982        levels: u32,
4983        data: *mut *const u8,
4984        flags: u32,
4985    ) -> *mut gs_texture_t;
4986    pub fn gs_cubetexture_create(
4987        size: u32,
4988        color_format: gs_color_format,
4989        levels: u32,
4990        data: *mut *const u8,
4991        flags: u32,
4992    ) -> *mut gs_texture_t;
4993    pub fn gs_voltexture_create(
4994        width: u32,
4995        height: u32,
4996        depth: u32,
4997        color_format: gs_color_format,
4998        levels: u32,
4999        data: *mut *const u8,
5000        flags: u32,
5001    ) -> *mut gs_texture_t;
5002    pub fn gs_zstencil_create(
5003        width: u32,
5004        height: u32,
5005        format: gs_zstencil_format,
5006    ) -> *mut gs_zstencil_t;
5007    pub fn gs_stagesurface_create(
5008        width: u32,
5009        height: u32,
5010        color_format: gs_color_format,
5011    ) -> *mut gs_stagesurf_t;
5012    pub fn gs_samplerstate_create(info: *const gs_sampler_info) -> *mut gs_samplerstate_t;
5013    pub fn gs_vertexshader_create(
5014        shader: *const ::std::os::raw::c_char,
5015        file: *const ::std::os::raw::c_char,
5016        error_string: *mut *mut ::std::os::raw::c_char,
5017    ) -> *mut gs_shader_t;
5018    pub fn gs_pixelshader_create(
5019        shader: *const ::std::os::raw::c_char,
5020        file: *const ::std::os::raw::c_char,
5021        error_string: *mut *mut ::std::os::raw::c_char,
5022    ) -> *mut gs_shader_t;
5023    pub fn gs_vertexbuffer_create(data: *mut gs_vb_data, flags: u32) -> *mut gs_vertbuffer_t;
5024    pub fn gs_indexbuffer_create(
5025        type_: gs_index_type,
5026        indices: *mut ::std::os::raw::c_void,
5027        num: usize,
5028        flags: u32,
5029    ) -> *mut gs_indexbuffer_t;
5030    pub fn gs_timer_create() -> *mut gs_timer_t;
5031    pub fn gs_timer_range_create() -> *mut gs_timer_range_t;
5032    pub fn gs_get_texture_type(texture: *const gs_texture_t) -> gs_texture_type;
5033    pub fn gs_load_vertexbuffer(vertbuffer: *mut gs_vertbuffer_t);
5034    pub fn gs_load_indexbuffer(indexbuffer: *mut gs_indexbuffer_t);
5035    pub fn gs_load_texture(tex: *mut gs_texture_t, unit: ::std::os::raw::c_int);
5036    pub fn gs_load_samplerstate(samplerstate: *mut gs_samplerstate_t, unit: ::std::os::raw::c_int);
5037    pub fn gs_load_vertexshader(vertshader: *mut gs_shader_t);
5038    pub fn gs_load_pixelshader(pixelshader: *mut gs_shader_t);
5039    pub fn gs_load_default_samplerstate(b_3d: bool, unit: ::std::os::raw::c_int);
5040    pub fn gs_get_vertex_shader() -> *mut gs_shader_t;
5041    pub fn gs_get_pixel_shader() -> *mut gs_shader_t;
5042    pub fn gs_get_color_space() -> gs_color_space;
5043    pub fn gs_get_render_target() -> *mut gs_texture_t;
5044    pub fn gs_get_zstencil_target() -> *mut gs_zstencil_t;
5045    pub fn gs_set_render_target(tex: *mut gs_texture_t, zstencil: *mut gs_zstencil_t);
5046    pub fn gs_set_render_target_with_color_space(
5047        tex: *mut gs_texture_t,
5048        zstencil: *mut gs_zstencil_t,
5049        space: gs_color_space,
5050    );
5051    pub fn gs_set_cube_render_target(
5052        cubetex: *mut gs_texture_t,
5053        side: ::std::os::raw::c_int,
5054        zstencil: *mut gs_zstencil_t,
5055    );
5056    pub fn gs_enable_framebuffer_srgb(enable: bool);
5057    pub fn gs_framebuffer_srgb_enabled() -> bool;
5058    pub fn gs_get_linear_srgb() -> bool;
5059    pub fn gs_set_linear_srgb(linear_srgb: bool) -> bool;
5060    pub fn gs_copy_texture(dst: *mut gs_texture_t, src: *mut gs_texture_t);
5061    pub fn gs_copy_texture_region(
5062        dst: *mut gs_texture_t,
5063        dst_x: u32,
5064        dst_y: u32,
5065        src: *mut gs_texture_t,
5066        src_x: u32,
5067        src_y: u32,
5068        src_w: u32,
5069        src_h: u32,
5070    );
5071    pub fn gs_stage_texture(dst: *mut gs_stagesurf_t, src: *mut gs_texture_t);
5072    pub fn gs_begin_frame();
5073    pub fn gs_begin_scene();
5074    pub fn gs_draw(draw_mode: gs_draw_mode, start_vert: u32, num_verts: u32);
5075    pub fn gs_end_scene();
5076    pub fn gs_load_swapchain(swapchain: *mut gs_swapchain_t);
5077    pub fn gs_clear(clear_flags: u32, color: *const vec4, depth: f32, stencil: u8);
5078    pub fn gs_is_present_ready() -> bool;
5079    pub fn gs_present();
5080    pub fn gs_flush();
5081    pub fn gs_set_cull_mode(mode: gs_cull_mode);
5082    pub fn gs_get_cull_mode() -> gs_cull_mode;
5083    pub fn gs_enable_blending(enable: bool);
5084    pub fn gs_enable_depth_test(enable: bool);
5085    pub fn gs_enable_stencil_test(enable: bool);
5086    pub fn gs_enable_stencil_write(enable: bool);
5087    pub fn gs_enable_color(red: bool, green: bool, blue: bool, alpha: bool);
5088    pub fn gs_blend_function(src: gs_blend_type, dest: gs_blend_type);
5089    pub fn gs_blend_function_separate(
5090        src_c: gs_blend_type,
5091        dest_c: gs_blend_type,
5092        src_a: gs_blend_type,
5093        dest_a: gs_blend_type,
5094    );
5095    pub fn gs_blend_op(op: gs_blend_op_type);
5096    pub fn gs_depth_function(test: gs_depth_test);
5097    pub fn gs_stencil_function(side: gs_stencil_side, test: gs_depth_test);
5098    pub fn gs_stencil_op(
5099        side: gs_stencil_side,
5100        fail: gs_stencil_op_type,
5101        zfail: gs_stencil_op_type,
5102        zpass: gs_stencil_op_type,
5103    );
5104    pub fn gs_set_viewport(
5105        x: ::std::os::raw::c_int,
5106        y: ::std::os::raw::c_int,
5107        width: ::std::os::raw::c_int,
5108        height: ::std::os::raw::c_int,
5109    );
5110    pub fn gs_get_viewport(rect: *mut gs_rect);
5111    pub fn gs_set_scissor_rect(rect: *const gs_rect);
5112    pub fn gs_ortho(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5113    pub fn gs_frustum(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5114    pub fn gs_projection_push();
5115    pub fn gs_projection_pop();
5116    pub fn gs_swapchain_destroy(swapchain: *mut gs_swapchain_t);
5117    pub fn gs_texture_destroy(tex: *mut gs_texture_t);
5118    pub fn gs_texture_get_width(tex: *const gs_texture_t) -> u32;
5119    pub fn gs_texture_get_height(tex: *const gs_texture_t) -> u32;
5120    pub fn gs_texture_get_color_format(tex: *const gs_texture_t) -> gs_color_format;
5121    pub fn gs_texture_map(tex: *mut gs_texture_t, ptr: *mut *mut u8, linesize: *mut u32) -> bool;
5122    pub fn gs_texture_unmap(tex: *mut gs_texture_t);
5123#[doc = " special-case function (GL only) - specifies whether the texture is a\n GL_TEXTURE_RECTANGLE type, which doesn't use normalized texture\n coordinates, doesn't support mipmapping, and requires address clamping"]
5124    pub fn gs_texture_is_rect(tex: *const gs_texture_t) -> bool;
5125#[doc = " Gets a pointer to the context-specific object associated with the texture.\n For example, for GL, this is a GLuint*.  For D3D11, ID3D11Texture2D*."]
5126    pub fn gs_texture_get_obj(tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5127    pub fn gs_cubetexture_destroy(cubetex: *mut gs_texture_t);
5128    pub fn gs_cubetexture_get_size(cubetex: *const gs_texture_t) -> u32;
5129    pub fn gs_cubetexture_get_color_format(cubetex: *const gs_texture_t) -> gs_color_format;
5130    pub fn gs_voltexture_destroy(voltex: *mut gs_texture_t);
5131    pub fn gs_voltexture_get_width(voltex: *const gs_texture_t) -> u32;
5132    pub fn gs_voltexture_get_height(voltex: *const gs_texture_t) -> u32;
5133    pub fn gs_voltexture_get_depth(voltex: *const gs_texture_t) -> u32;
5134    pub fn gs_voltexture_get_color_format(voltex: *const gs_texture_t) -> gs_color_format;
5135    pub fn gs_stagesurface_destroy(stagesurf: *mut gs_stagesurf_t);
5136    pub fn gs_stagesurface_get_width(stagesurf: *const gs_stagesurf_t) -> u32;
5137    pub fn gs_stagesurface_get_height(stagesurf: *const gs_stagesurf_t) -> u32;
5138    pub fn gs_stagesurface_get_color_format(stagesurf: *const gs_stagesurf_t) -> gs_color_format;
5139    pub fn gs_stagesurface_map(
5140        stagesurf: *mut gs_stagesurf_t,
5141        data: *mut *mut u8,
5142        linesize: *mut u32,
5143    ) -> bool;
5144    pub fn gs_stagesurface_unmap(stagesurf: *mut gs_stagesurf_t);
5145    pub fn gs_zstencil_destroy(zstencil: *mut gs_zstencil_t);
5146    pub fn gs_samplerstate_destroy(samplerstate: *mut gs_samplerstate_t);
5147    pub fn gs_vertexbuffer_destroy(vertbuffer: *mut gs_vertbuffer_t);
5148    pub fn gs_vertexbuffer_flush(vertbuffer: *mut gs_vertbuffer_t);
5149    pub fn gs_vertexbuffer_flush_direct(vertbuffer: *mut gs_vertbuffer_t, data: *const gs_vb_data);
5150    pub fn gs_vertexbuffer_get_data(vertbuffer: *const gs_vertbuffer_t) -> *mut gs_vb_data;
5151    pub fn gs_indexbuffer_destroy(indexbuffer: *mut gs_indexbuffer_t);
5152    pub fn gs_indexbuffer_flush(indexbuffer: *mut gs_indexbuffer_t);
5153    pub fn gs_indexbuffer_flush_direct(
5154        indexbuffer: *mut gs_indexbuffer_t,
5155        data: *const ::std::os::raw::c_void,
5156    );
5157    pub fn gs_indexbuffer_get_data(
5158        indexbuffer: *const gs_indexbuffer_t,
5159    ) -> *mut ::std::os::raw::c_void;
5160    pub fn gs_indexbuffer_get_num_indices(indexbuffer: *const gs_indexbuffer_t) -> usize;
5161    pub fn gs_indexbuffer_get_type(indexbuffer: *const gs_indexbuffer_t) -> gs_index_type;
5162    pub fn gs_timer_destroy(timer: *mut gs_timer_t);
5163    pub fn gs_timer_begin(timer: *mut gs_timer_t);
5164    pub fn gs_timer_end(timer: *mut gs_timer_t);
5165    pub fn gs_timer_get_data(timer: *mut gs_timer_t, ticks: *mut u64) -> bool;
5166    pub fn gs_timer_range_destroy(timer: *mut gs_timer_range_t);
5167    pub fn gs_timer_range_begin(range: *mut gs_timer_range_t);
5168    pub fn gs_timer_range_end(range: *mut gs_timer_range_t);
5169    pub fn gs_timer_range_get_data(
5170        range: *mut gs_timer_range_t,
5171        disjoint: *mut bool,
5172        frequency: *mut u64,
5173    ) -> bool;
5174    pub fn gs_nv12_available() -> bool;
5175    pub fn gs_p010_available() -> bool;
5176    pub fn gs_texture_create_nv12(
5177        tex_y: *mut *mut gs_texture_t,
5178        tex_uv: *mut *mut gs_texture_t,
5179        width: u32,
5180        height: u32,
5181        flags: u32,
5182    ) -> bool;
5183    pub fn gs_texture_create_p010(
5184        tex_y: *mut *mut gs_texture_t,
5185        tex_uv: *mut *mut gs_texture_t,
5186        width: u32,
5187        height: u32,
5188        flags: u32,
5189    ) -> bool;
5190    pub fn gs_is_monitor_hdr(monitor: *mut ::std::os::raw::c_void) -> bool;
5191    pub fn gs_debug_marker_begin(color: *const f32, markername: *const ::std::os::raw::c_char);
5192    pub fn gs_debug_marker_begin_format(
5193        color: *const f32,
5194        format: *const ::std::os::raw::c_char,
5195        ...
5196    );
5197    pub fn gs_debug_marker_end();
5198    pub fn gs_gdi_texture_available() -> bool;
5199    pub fn gs_shared_texture_available() -> bool;
5200#[doc = " Gets information about the monitor at the specific index, returns false\n when there is no monitor at the specified index"]
5201    pub fn gs_get_duplicator_monitor_info(
5202        monitor_idx: ::std::os::raw::c_int,
5203        monitor_info: *mut gs_monitor_info,
5204    ) -> bool;
5205    pub fn gs_duplicator_get_monitor_index(
5206        monitor: *mut ::std::os::raw::c_void,
5207    ) -> ::std::os::raw::c_int;
5208#[doc = " creates a windows 8+ output duplicator (monitor capture)"]
5209    pub fn gs_duplicator_create(monitor_idx: ::std::os::raw::c_int) -> *mut gs_duplicator_t;
5210    pub fn gs_duplicator_destroy(duplicator: *mut gs_duplicator_t);
5211    pub fn gs_duplicator_update_frame(duplicator: *mut gs_duplicator_t) -> bool;
5212    pub fn gs_duplicator_get_texture(duplicator: *mut gs_duplicator_t) -> *mut gs_texture_t;
5213    pub fn gs_duplicator_get_color_space(duplicator: *mut gs_duplicator_t) -> gs_color_space;
5214    pub fn gs_duplicator_get_sdr_white_level(duplicator: *mut gs_duplicator_t) -> f32;
5215    pub fn gs_can_adapter_fast_clear() -> bool;
5216#[doc = " creates a windows GDI-lockable texture"]
5217    pub fn gs_texture_create_gdi(width: u32, height: u32) -> *mut gs_texture_t;
5218    pub fn gs_texture_get_dc(gdi_tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5219    pub fn gs_texture_release_dc(gdi_tex: *mut gs_texture_t);
5220#[doc = " creates a windows shared texture from a texture handle"]
5221    pub fn gs_texture_open_shared(handle: u32) -> *mut gs_texture_t;
5222    pub fn gs_texture_open_nt_shared(handle: u32) -> *mut gs_texture_t;
5223    pub fn gs_texture_get_shared_handle(tex: *mut gs_texture_t) -> u32;
5224    pub fn gs_texture_wrap_obj(obj: *mut ::std::os::raw::c_void) -> *mut gs_texture_t;
5225#[doc = " acquires a lock on a keyed mutex texture.\n returns -1 on generic failure, ETIMEDOUT if timed out"]
5226    pub fn gs_texture_acquire_sync(
5227        tex: *mut gs_texture_t,
5228        key: u64,
5229        ms: u32,
5230    ) -> ::std::os::raw::c_int;
5231#[doc = " releases a lock on a keyed mutex texture to another device.\n return 0 on success, -1 on error"]
5232    pub fn gs_texture_release_sync(tex: *mut gs_texture_t, key: u64) -> ::std::os::raw::c_int;
5233    pub fn gs_stagesurface_create_nv12(width: u32, height: u32) -> *mut gs_stagesurf_t;
5234    pub fn gs_stagesurface_create_p010(width: u32, height: u32) -> *mut gs_stagesurf_t;
5235    pub fn gs_register_loss_callbacks(callbacks: *const gs_device_loss);
5236    pub fn gs_unregister_loss_callbacks(data: *mut ::std::os::raw::c_void);
5237    pub fn vec2_abs(dst: *mut vec2, v: *const vec2);
5238    pub fn vec2_floor(dst: *mut vec2, v: *const vec2);
5239    pub fn vec2_ceil(dst: *mut vec2, v: *const vec2);
5240    pub fn vec2_close(v1: *const vec2, v2: *const vec2, epsilon: f32) -> ::std::os::raw::c_int;
5241    pub fn vec2_norm(dst: *mut vec2, v: *const vec2);
5242    pub fn vec4_from_vec3(dst: *mut vec4, v: *const vec3);
5243    pub fn vec4_transform(dst: *mut vec4, v: *const vec4, m: *const matrix4);
5244    pub fn vec3_from_vec4(dst: *mut vec3, v: *const vec4);
5245    pub fn vec3_plane_dist(v: *const vec3, p: *const plane) -> f32;
5246    pub fn vec3_transform(dst: *mut vec3, v: *const vec3, m: *const matrix4);
5247    pub fn vec3_rotate(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5248    pub fn vec3_transform3x4(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5249    pub fn vec3_mirror(dst: *mut vec3, v: *const vec3, p: *const plane);
5250    pub fn vec3_mirrorv(dst: *mut vec3, v: *const vec3, vec: *const vec3);
5251    pub fn vec3_rand(dst: *mut vec3, positive_only: ::std::os::raw::c_int);
5252    pub fn audio_output_open(
5253        audio: *mut *mut audio_t,
5254        info: *mut audio_output_info,
5255    ) -> ::std::os::raw::c_int;
5256    pub fn audio_output_close(audio: *mut audio_t);
5257    pub fn audio_output_connect(
5258        video: *mut audio_t,
5259        mix_idx: usize,
5260        conversion: *const audio_convert_info,
5261        callback: audio_output_callback_t,
5262        param: *mut ::std::os::raw::c_void,
5263    ) -> bool;
5264    pub fn audio_output_disconnect(
5265        video: *mut audio_t,
5266        mix_idx: usize,
5267        callback: audio_output_callback_t,
5268        param: *mut ::std::os::raw::c_void,
5269    );
5270    pub fn audio_output_active(audio: *const audio_t) -> bool;
5271    pub fn audio_output_get_block_size(audio: *const audio_t) -> usize;
5272    pub fn audio_output_get_planes(audio: *const audio_t) -> usize;
5273    pub fn audio_output_get_channels(audio: *const audio_t) -> usize;
5274    pub fn audio_output_get_sample_rate(audio: *const audio_t) -> u32;
5275    pub fn audio_output_get_info(audio: *const audio_t) -> *const audio_output_info;
5276    pub fn video_format_from_fourcc(fourcc: u32) -> video_format;
5277    pub fn video_format_get_parameters(
5278        color_space: video_colorspace,
5279        range: video_range_type,
5280        matrix: *mut f32,
5281        min_range: *mut f32,
5282        max_range: *mut f32,
5283    ) -> bool;
5284    pub fn video_format_get_parameters_for_format(
5285        color_space: video_colorspace,
5286        range: video_range_type,
5287        format: video_format,
5288        matrix: *mut f32,
5289        min_range: *mut f32,
5290        max_range: *mut f32,
5291    ) -> bool;
5292    pub fn video_output_open(
5293        video: *mut *mut video_t,
5294        info: *mut video_output_info,
5295    ) -> ::std::os::raw::c_int;
5296    pub fn video_output_close(video: *mut video_t);
5297    pub fn video_output_connect(
5298        video: *mut video_t,
5299        conversion: *const video_scale_info,
5300        callback: ::std::option::Option<
5301            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5302        >,
5303        param: *mut ::std::os::raw::c_void,
5304    ) -> bool;
5305    pub fn video_output_connect2(
5306        video: *mut video_t,
5307        conversion: *const video_scale_info,
5308        frame_rate_divisor: u32,
5309        callback: ::std::option::Option<
5310            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5311        >,
5312        param: *mut ::std::os::raw::c_void,
5313    ) -> bool;
5314    pub fn video_output_disconnect(
5315        video: *mut video_t,
5316        callback: ::std::option::Option<
5317            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5318        >,
5319        param: *mut ::std::os::raw::c_void,
5320    );
5321    pub fn video_output_disconnect2(
5322        video: *mut video_t,
5323        callback: ::std::option::Option<
5324            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5325        >,
5326        param: *mut ::std::os::raw::c_void,
5327    ) -> bool;
5328    pub fn video_output_active(video: *const video_t) -> bool;
5329    pub fn video_output_get_info(video: *const video_t) -> *const video_output_info;
5330    pub fn video_output_lock_frame(
5331        video: *mut video_t,
5332        frame: *mut video_frame,
5333        count: ::std::os::raw::c_int,
5334        timestamp: u64,
5335    ) -> bool;
5336    pub fn video_output_unlock_frame(video: *mut video_t);
5337    pub fn video_output_get_frame_time(video: *const video_t) -> u64;
5338    pub fn video_output_stop(video: *mut video_t);
5339    pub fn video_output_stopped(video: *mut video_t) -> bool;
5340    pub fn video_output_get_format(video: *const video_t) -> video_format;
5341    pub fn video_output_get_width(video: *const video_t) -> u32;
5342    pub fn video_output_get_height(video: *const video_t) -> u32;
5343    pub fn video_output_get_frame_rate(video: *const video_t) -> f64;
5344    pub fn video_output_get_skipped_frames(video: *const video_t) -> u32;
5345    pub fn video_output_get_total_frames(video: *const video_t) -> u32;
5346    pub fn video_output_inc_texture_encoders(video: *mut video_t);
5347    pub fn video_output_dec_texture_encoders(video: *mut video_t);
5348    pub fn video_output_inc_texture_frames(video: *mut video_t);
5349    pub fn video_output_inc_texture_skipped_frames(video: *mut video_t);
5350    pub fn video_output_create_with_frame_rate_divisor(
5351        video: *mut video_t,
5352        divisor: u32,
5353    ) -> *mut video_t;
5354    pub fn video_output_free_frame_rate_divisor(video: *mut video_t);
5355    pub fn calldata_get_data(
5356        data: *const calldata_t,
5357        name: *const ::std::os::raw::c_char,
5358        out: *mut ::std::os::raw::c_void,
5359        size: usize,
5360    ) -> bool;
5361    pub fn calldata_set_data(
5362        data: *mut calldata_t,
5363        name: *const ::std::os::raw::c_char,
5364        in_: *const ::std::os::raw::c_void,
5365        new_size: usize,
5366    );
5367    pub fn calldata_get_string(
5368        data: *const calldata_t,
5369        name: *const ::std::os::raw::c_char,
5370        str_: *mut *const ::std::os::raw::c_char,
5371    ) -> bool;
5372    pub fn signal_handler_create() -> *mut signal_handler_t;
5373    pub fn signal_handler_destroy(handler: *mut signal_handler_t);
5374    pub fn signal_handler_add(
5375        handler: *mut signal_handler_t,
5376        signal_decl: *const ::std::os::raw::c_char,
5377    ) -> bool;
5378    pub fn signal_handler_connect(
5379        handler: *mut signal_handler_t,
5380        signal: *const ::std::os::raw::c_char,
5381        callback: signal_callback_t,
5382        data: *mut ::std::os::raw::c_void,
5383    );
5384    pub fn signal_handler_connect_ref(
5385        handler: *mut signal_handler_t,
5386        signal: *const ::std::os::raw::c_char,
5387        callback: signal_callback_t,
5388        data: *mut ::std::os::raw::c_void,
5389    );
5390    pub fn signal_handler_disconnect(
5391        handler: *mut signal_handler_t,
5392        signal: *const ::std::os::raw::c_char,
5393        callback: signal_callback_t,
5394        data: *mut ::std::os::raw::c_void,
5395    );
5396    pub fn signal_handler_connect_global(
5397        handler: *mut signal_handler_t,
5398        callback: global_signal_callback_t,
5399        data: *mut ::std::os::raw::c_void,
5400    );
5401    pub fn signal_handler_disconnect_global(
5402        handler: *mut signal_handler_t,
5403        callback: global_signal_callback_t,
5404        data: *mut ::std::os::raw::c_void,
5405    );
5406    pub fn signal_handler_remove_current();
5407    pub fn signal_handler_signal(
5408        handler: *mut signal_handler_t,
5409        signal: *const ::std::os::raw::c_char,
5410        params: *mut calldata_t,
5411    );
5412    pub fn proc_handler_create() -> *mut proc_handler_t;
5413    pub fn proc_handler_destroy(handler: *mut proc_handler_t);
5414    pub fn proc_handler_add(
5415        handler: *mut proc_handler_t,
5416        decl_string: *const ::std::os::raw::c_char,
5417        proc_: proc_handler_proc_t,
5418        data: *mut ::std::os::raw::c_void,
5419    );
5420#[doc = " Calls a function in a procedure handler.  Returns false if the named\n procedure is not found."]
5421    pub fn proc_handler_call(
5422        handler: *mut proc_handler_t,
5423        name: *const ::std::os::raw::c_char,
5424        params: *mut calldata_t,
5425    ) -> bool;
5426    pub fn obs_data_create() -> *mut obs_data_t;
5427    pub fn obs_data_create_from_json(json_string: *const ::std::os::raw::c_char)
5428    -> *mut obs_data_t;
5429    pub fn obs_data_create_from_json_file(
5430        json_file: *const ::std::os::raw::c_char,
5431    ) -> *mut obs_data_t;
5432    pub fn obs_data_create_from_json_file_safe(
5433        json_file: *const ::std::os::raw::c_char,
5434        backup_ext: *const ::std::os::raw::c_char,
5435    ) -> *mut obs_data_t;
5436    pub fn obs_data_addref(data: *mut obs_data_t);
5437    pub fn obs_data_release(data: *mut obs_data_t);
5438    pub fn obs_data_get_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5439    pub fn obs_data_get_json_with_defaults(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5440    pub fn obs_data_get_json_pretty(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5441    pub fn obs_data_get_json_pretty_with_defaults(
5442        data: *mut obs_data_t,
5443    ) -> *const ::std::os::raw::c_char;
5444    pub fn obs_data_get_last_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5445    pub fn obs_data_save_json(data: *mut obs_data_t, file: *const ::std::os::raw::c_char) -> bool;
5446    pub fn obs_data_save_json_safe(
5447        data: *mut obs_data_t,
5448        file: *const ::std::os::raw::c_char,
5449        temp_ext: *const ::std::os::raw::c_char,
5450        backup_ext: *const ::std::os::raw::c_char,
5451    ) -> bool;
5452    pub fn obs_data_save_json_pretty_safe(
5453        data: *mut obs_data_t,
5454        file: *const ::std::os::raw::c_char,
5455        temp_ext: *const ::std::os::raw::c_char,
5456        backup_ext: *const ::std::os::raw::c_char,
5457    ) -> bool;
5458    pub fn obs_data_apply(target: *mut obs_data_t, apply_data: *mut obs_data_t);
5459    pub fn obs_data_erase(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5460    pub fn obs_data_clear(data: *mut obs_data_t);
5461    pub fn obs_data_set_string(
5462        data: *mut obs_data_t,
5463        name: *const ::std::os::raw::c_char,
5464        val: *const ::std::os::raw::c_char,
5465    );
5466    pub fn obs_data_set_int(
5467        data: *mut obs_data_t,
5468        name: *const ::std::os::raw::c_char,
5469        val: ::std::os::raw::c_longlong,
5470    );
5471    pub fn obs_data_set_double(
5472        data: *mut obs_data_t,
5473        name: *const ::std::os::raw::c_char,
5474        val: f64,
5475    );
5476    pub fn obs_data_set_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char, val: bool);
5477    pub fn obs_data_set_obj(
5478        data: *mut obs_data_t,
5479        name: *const ::std::os::raw::c_char,
5480        obj: *mut obs_data_t,
5481    );
5482    pub fn obs_data_set_array(
5483        data: *mut obs_data_t,
5484        name: *const ::std::os::raw::c_char,
5485        array: *mut obs_data_array_t,
5486    );
5487    pub fn obs_data_get_defaults(data: *mut obs_data_t) -> *mut obs_data_t;
5488    pub fn obs_data_set_default_string(
5489        data: *mut obs_data_t,
5490        name: *const ::std::os::raw::c_char,
5491        val: *const ::std::os::raw::c_char,
5492    );
5493    pub fn obs_data_set_default_int(
5494        data: *mut obs_data_t,
5495        name: *const ::std::os::raw::c_char,
5496        val: ::std::os::raw::c_longlong,
5497    );
5498    pub fn obs_data_set_default_double(
5499        data: *mut obs_data_t,
5500        name: *const ::std::os::raw::c_char,
5501        val: f64,
5502    );
5503    pub fn obs_data_set_default_bool(
5504        data: *mut obs_data_t,
5505        name: *const ::std::os::raw::c_char,
5506        val: bool,
5507    );
5508    pub fn obs_data_set_default_obj(
5509        data: *mut obs_data_t,
5510        name: *const ::std::os::raw::c_char,
5511        obj: *mut obs_data_t,
5512    );
5513    pub fn obs_data_set_default_array(
5514        data: *mut obs_data_t,
5515        name: *const ::std::os::raw::c_char,
5516        arr: *mut obs_data_array_t,
5517    );
5518    pub fn obs_data_set_autoselect_string(
5519        data: *mut obs_data_t,
5520        name: *const ::std::os::raw::c_char,
5521        val: *const ::std::os::raw::c_char,
5522    );
5523    pub fn obs_data_set_autoselect_int(
5524        data: *mut obs_data_t,
5525        name: *const ::std::os::raw::c_char,
5526        val: ::std::os::raw::c_longlong,
5527    );
5528    pub fn obs_data_set_autoselect_double(
5529        data: *mut obs_data_t,
5530        name: *const ::std::os::raw::c_char,
5531        val: f64,
5532    );
5533    pub fn obs_data_set_autoselect_bool(
5534        data: *mut obs_data_t,
5535        name: *const ::std::os::raw::c_char,
5536        val: bool,
5537    );
5538    pub fn obs_data_set_autoselect_obj(
5539        data: *mut obs_data_t,
5540        name: *const ::std::os::raw::c_char,
5541        obj: *mut obs_data_t,
5542    );
5543    pub fn obs_data_set_autoselect_array(
5544        data: *mut obs_data_t,
5545        name: *const ::std::os::raw::c_char,
5546        arr: *mut obs_data_array_t,
5547    );
5548    pub fn obs_data_get_string(
5549        data: *mut obs_data_t,
5550        name: *const ::std::os::raw::c_char,
5551    ) -> *const ::std::os::raw::c_char;
5552    pub fn obs_data_get_int(
5553        data: *mut obs_data_t,
5554        name: *const ::std::os::raw::c_char,
5555    ) -> ::std::os::raw::c_longlong;
5556    pub fn obs_data_get_double(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> f64;
5557    pub fn obs_data_get_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> bool;
5558    pub fn obs_data_get_obj(
5559        data: *mut obs_data_t,
5560        name: *const ::std::os::raw::c_char,
5561    ) -> *mut obs_data_t;
5562    pub fn obs_data_get_array(
5563        data: *mut obs_data_t,
5564        name: *const ::std::os::raw::c_char,
5565    ) -> *mut obs_data_array_t;
5566    pub fn obs_data_get_default_string(
5567        data: *mut obs_data_t,
5568        name: *const ::std::os::raw::c_char,
5569    ) -> *const ::std::os::raw::c_char;
5570    pub fn obs_data_get_default_int(
5571        data: *mut obs_data_t,
5572        name: *const ::std::os::raw::c_char,
5573    ) -> ::std::os::raw::c_longlong;
5574    pub fn obs_data_get_default_double(
5575        data: *mut obs_data_t,
5576        name: *const ::std::os::raw::c_char,
5577    ) -> f64;
5578    pub fn obs_data_get_default_bool(
5579        data: *mut obs_data_t,
5580        name: *const ::std::os::raw::c_char,
5581    ) -> bool;
5582    pub fn obs_data_get_default_obj(
5583        data: *mut obs_data_t,
5584        name: *const ::std::os::raw::c_char,
5585    ) -> *mut obs_data_t;
5586    pub fn obs_data_get_default_array(
5587        data: *mut obs_data_t,
5588        name: *const ::std::os::raw::c_char,
5589    ) -> *mut obs_data_array_t;
5590    pub fn obs_data_get_autoselect_string(
5591        data: *mut obs_data_t,
5592        name: *const ::std::os::raw::c_char,
5593    ) -> *const ::std::os::raw::c_char;
5594    pub fn obs_data_get_autoselect_int(
5595        data: *mut obs_data_t,
5596        name: *const ::std::os::raw::c_char,
5597    ) -> ::std::os::raw::c_longlong;
5598    pub fn obs_data_get_autoselect_double(
5599        data: *mut obs_data_t,
5600        name: *const ::std::os::raw::c_char,
5601    ) -> f64;
5602    pub fn obs_data_get_autoselect_bool(
5603        data: *mut obs_data_t,
5604        name: *const ::std::os::raw::c_char,
5605    ) -> bool;
5606    pub fn obs_data_get_autoselect_obj(
5607        data: *mut obs_data_t,
5608        name: *const ::std::os::raw::c_char,
5609    ) -> *mut obs_data_t;
5610    pub fn obs_data_get_autoselect_array(
5611        data: *mut obs_data_t,
5612        name: *const ::std::os::raw::c_char,
5613    ) -> *mut obs_data_array_t;
5614    pub fn obs_data_array_create() -> *mut obs_data_array_t;
5615    pub fn obs_data_array_addref(array: *mut obs_data_array_t);
5616    pub fn obs_data_array_release(array: *mut obs_data_array_t);
5617    pub fn obs_data_array_count(array: *mut obs_data_array_t) -> usize;
5618    pub fn obs_data_array_item(array: *mut obs_data_array_t, idx: usize) -> *mut obs_data_t;
5619    pub fn obs_data_array_push_back(array: *mut obs_data_array_t, obj: *mut obs_data_t) -> usize;
5620    pub fn obs_data_array_insert(array: *mut obs_data_array_t, idx: usize, obj: *mut obs_data_t);
5621    pub fn obs_data_array_push_back_array(
5622        array: *mut obs_data_array_t,
5623        array2: *mut obs_data_array_t,
5624    );
5625    pub fn obs_data_array_erase(array: *mut obs_data_array_t, idx: usize);
5626    pub fn obs_data_array_enum(
5627        array: *mut obs_data_array_t,
5628        cb: ::std::option::Option<
5629            unsafe extern "C" fn(data: *mut obs_data_t, param: *mut ::std::os::raw::c_void),
5630        >,
5631        param: *mut ::std::os::raw::c_void,
5632    );
5633    pub fn obs_data_has_user_value(
5634        data: *mut obs_data_t,
5635        name: *const ::std::os::raw::c_char,
5636    ) -> bool;
5637    pub fn obs_data_has_default_value(
5638        data: *mut obs_data_t,
5639        name: *const ::std::os::raw::c_char,
5640    ) -> bool;
5641    pub fn obs_data_has_autoselect_value(
5642        data: *mut obs_data_t,
5643        name: *const ::std::os::raw::c_char,
5644    ) -> bool;
5645    pub fn obs_data_item_has_user_value(data: *mut obs_data_item_t) -> bool;
5646    pub fn obs_data_item_has_default_value(data: *mut obs_data_item_t) -> bool;
5647    pub fn obs_data_item_has_autoselect_value(data: *mut obs_data_item_t) -> bool;
5648    pub fn obs_data_unset_user_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5649    pub fn obs_data_unset_default_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5650    pub fn obs_data_unset_autoselect_value(
5651        data: *mut obs_data_t,
5652        name: *const ::std::os::raw::c_char,
5653    );
5654    pub fn obs_data_item_unset_user_value(data: *mut obs_data_item_t);
5655    pub fn obs_data_item_unset_default_value(data: *mut obs_data_item_t);
5656    pub fn obs_data_item_unset_autoselect_value(data: *mut obs_data_item_t);
5657    pub fn obs_data_first(data: *mut obs_data_t) -> *mut obs_data_item_t;
5658    pub fn obs_data_item_byname(
5659        data: *mut obs_data_t,
5660        name: *const ::std::os::raw::c_char,
5661    ) -> *mut obs_data_item_t;
5662    pub fn obs_data_item_next(item: *mut *mut obs_data_item_t) -> bool;
5663    pub fn obs_data_item_release(item: *mut *mut obs_data_item_t);
5664    pub fn obs_data_item_remove(item: *mut *mut obs_data_item_t);
5665    pub fn obs_data_item_gettype(item: *mut obs_data_item_t) -> obs_data_type;
5666    pub fn obs_data_item_numtype(item: *mut obs_data_item_t) -> obs_data_number_type;
5667    pub fn obs_data_item_get_name(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5668    pub fn obs_data_item_set_string(
5669        item: *mut *mut obs_data_item_t,
5670        val: *const ::std::os::raw::c_char,
5671    );
5672    pub fn obs_data_item_set_int(item: *mut *mut obs_data_item_t, val: ::std::os::raw::c_longlong);
5673    pub fn obs_data_item_set_double(item: *mut *mut obs_data_item_t, val: f64);
5674    pub fn obs_data_item_set_bool(item: *mut *mut obs_data_item_t, val: bool);
5675    pub fn obs_data_item_set_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5676    pub fn obs_data_item_set_array(item: *mut *mut obs_data_item_t, val: *mut obs_data_array_t);
5677    pub fn obs_data_item_set_default_string(
5678        item: *mut *mut obs_data_item_t,
5679        val: *const ::std::os::raw::c_char,
5680    );
5681    pub fn obs_data_item_set_default_int(
5682        item: *mut *mut obs_data_item_t,
5683        val: ::std::os::raw::c_longlong,
5684    );
5685    pub fn obs_data_item_set_default_double(item: *mut *mut obs_data_item_t, val: f64);
5686    pub fn obs_data_item_set_default_bool(item: *mut *mut obs_data_item_t, val: bool);
5687    pub fn obs_data_item_set_default_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5688    pub fn obs_data_item_set_default_array(
5689        item: *mut *mut obs_data_item_t,
5690        val: *mut obs_data_array_t,
5691    );
5692    pub fn obs_data_item_set_autoselect_string(
5693        item: *mut *mut obs_data_item_t,
5694        val: *const ::std::os::raw::c_char,
5695    );
5696    pub fn obs_data_item_set_autoselect_int(
5697        item: *mut *mut obs_data_item_t,
5698        val: ::std::os::raw::c_longlong,
5699    );
5700    pub fn obs_data_item_set_autoselect_double(item: *mut *mut obs_data_item_t, val: f64);
5701    pub fn obs_data_item_set_autoselect_bool(item: *mut *mut obs_data_item_t, val: bool);
5702    pub fn obs_data_item_set_autoselect_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5703    pub fn obs_data_item_set_autoselect_array(
5704        item: *mut *mut obs_data_item_t,
5705        val: *mut obs_data_array_t,
5706    );
5707    pub fn obs_data_item_get_string(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5708    pub fn obs_data_item_get_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5709    pub fn obs_data_item_get_double(item: *mut obs_data_item_t) -> f64;
5710    pub fn obs_data_item_get_bool(item: *mut obs_data_item_t) -> bool;
5711    pub fn obs_data_item_get_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5712    pub fn obs_data_item_get_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5713    pub fn obs_data_item_get_default_string(
5714        item: *mut obs_data_item_t,
5715    ) -> *const ::std::os::raw::c_char;
5716    pub fn obs_data_item_get_default_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5717    pub fn obs_data_item_get_default_double(item: *mut obs_data_item_t) -> f64;
5718    pub fn obs_data_item_get_default_bool(item: *mut obs_data_item_t) -> bool;
5719    pub fn obs_data_item_get_default_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5720    pub fn obs_data_item_get_default_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5721    pub fn obs_data_item_get_autoselect_string(
5722        item: *mut obs_data_item_t,
5723    ) -> *const ::std::os::raw::c_char;
5724    pub fn obs_data_item_get_autoselect_int(
5725        item: *mut obs_data_item_t,
5726    ) -> ::std::os::raw::c_longlong;
5727    pub fn obs_data_item_get_autoselect_double(item: *mut obs_data_item_t) -> f64;
5728    pub fn obs_data_item_get_autoselect_bool(item: *mut obs_data_item_t) -> bool;
5729    pub fn obs_data_item_get_autoselect_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5730    pub fn obs_data_item_get_autoselect_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5731    pub fn obs_data_set_vec2(
5732        data: *mut obs_data_t,
5733        name: *const ::std::os::raw::c_char,
5734        val: *const vec2,
5735    );
5736    pub fn obs_data_set_vec3(
5737        data: *mut obs_data_t,
5738        name: *const ::std::os::raw::c_char,
5739        val: *const vec3,
5740    );
5741    pub fn obs_data_set_vec4(
5742        data: *mut obs_data_t,
5743        name: *const ::std::os::raw::c_char,
5744        val: *const vec4,
5745    );
5746    pub fn obs_data_set_quat(
5747        data: *mut obs_data_t,
5748        name: *const ::std::os::raw::c_char,
5749        val: *const quat,
5750    );
5751    pub fn obs_data_set_default_vec2(
5752        data: *mut obs_data_t,
5753        name: *const ::std::os::raw::c_char,
5754        val: *const vec2,
5755    );
5756    pub fn obs_data_set_default_vec3(
5757        data: *mut obs_data_t,
5758        name: *const ::std::os::raw::c_char,
5759        val: *const vec3,
5760    );
5761    pub fn obs_data_set_default_vec4(
5762        data: *mut obs_data_t,
5763        name: *const ::std::os::raw::c_char,
5764        val: *const vec4,
5765    );
5766    pub fn obs_data_set_default_quat(
5767        data: *mut obs_data_t,
5768        name: *const ::std::os::raw::c_char,
5769        val: *const quat,
5770    );
5771    pub fn obs_data_set_autoselect_vec2(
5772        data: *mut obs_data_t,
5773        name: *const ::std::os::raw::c_char,
5774        val: *const vec2,
5775    );
5776    pub fn obs_data_set_autoselect_vec3(
5777        data: *mut obs_data_t,
5778        name: *const ::std::os::raw::c_char,
5779        val: *const vec3,
5780    );
5781    pub fn obs_data_set_autoselect_vec4(
5782        data: *mut obs_data_t,
5783        name: *const ::std::os::raw::c_char,
5784        val: *const vec4,
5785    );
5786    pub fn obs_data_set_autoselect_quat(
5787        data: *mut obs_data_t,
5788        name: *const ::std::os::raw::c_char,
5789        val: *const quat,
5790    );
5791    pub fn obs_data_get_vec2(
5792        data: *mut obs_data_t,
5793        name: *const ::std::os::raw::c_char,
5794        val: *mut vec2,
5795    );
5796    pub fn obs_data_get_vec3(
5797        data: *mut obs_data_t,
5798        name: *const ::std::os::raw::c_char,
5799        val: *mut vec3,
5800    );
5801    pub fn obs_data_get_vec4(
5802        data: *mut obs_data_t,
5803        name: *const ::std::os::raw::c_char,
5804        val: *mut vec4,
5805    );
5806    pub fn obs_data_get_quat(
5807        data: *mut obs_data_t,
5808        name: *const ::std::os::raw::c_char,
5809        val: *mut quat,
5810    );
5811    pub fn obs_data_get_default_vec2(
5812        data: *mut obs_data_t,
5813        name: *const ::std::os::raw::c_char,
5814        val: *mut vec2,
5815    );
5816    pub fn obs_data_get_default_vec3(
5817        data: *mut obs_data_t,
5818        name: *const ::std::os::raw::c_char,
5819        val: *mut vec3,
5820    );
5821    pub fn obs_data_get_default_vec4(
5822        data: *mut obs_data_t,
5823        name: *const ::std::os::raw::c_char,
5824        val: *mut vec4,
5825    );
5826    pub fn obs_data_get_default_quat(
5827        data: *mut obs_data_t,
5828        name: *const ::std::os::raw::c_char,
5829        val: *mut quat,
5830    );
5831    pub fn obs_data_get_autoselect_vec2(
5832        data: *mut obs_data_t,
5833        name: *const ::std::os::raw::c_char,
5834        val: *mut vec2,
5835    );
5836    pub fn obs_data_get_autoselect_vec3(
5837        data: *mut obs_data_t,
5838        name: *const ::std::os::raw::c_char,
5839        val: *mut vec3,
5840    );
5841    pub fn obs_data_get_autoselect_vec4(
5842        data: *mut obs_data_t,
5843        name: *const ::std::os::raw::c_char,
5844        val: *mut vec4,
5845    );
5846    pub fn obs_data_get_autoselect_quat(
5847        data: *mut obs_data_t,
5848        name: *const ::std::os::raw::c_char,
5849        val: *mut quat,
5850    );
5851    pub fn obs_data_set_frames_per_second(
5852        data: *mut obs_data_t,
5853        name: *const ::std::os::raw::c_char,
5854        fps: media_frames_per_second,
5855        option: *const ::std::os::raw::c_char,
5856    );
5857    pub fn obs_data_set_default_frames_per_second(
5858        data: *mut obs_data_t,
5859        name: *const ::std::os::raw::c_char,
5860        fps: media_frames_per_second,
5861        option: *const ::std::os::raw::c_char,
5862    );
5863    pub fn obs_data_set_autoselect_frames_per_second(
5864        data: *mut obs_data_t,
5865        name: *const ::std::os::raw::c_char,
5866        fps: media_frames_per_second,
5867        option: *const ::std::os::raw::c_char,
5868    );
5869    pub fn obs_data_get_frames_per_second(
5870        data: *mut obs_data_t,
5871        name: *const ::std::os::raw::c_char,
5872        fps: *mut media_frames_per_second,
5873        option: *mut *const ::std::os::raw::c_char,
5874    ) -> bool;
5875    pub fn obs_data_get_default_frames_per_second(
5876        data: *mut obs_data_t,
5877        name: *const ::std::os::raw::c_char,
5878        fps: *mut media_frames_per_second,
5879        option: *mut *const ::std::os::raw::c_char,
5880    ) -> bool;
5881    pub fn obs_data_get_autoselect_frames_per_second(
5882        data: *mut obs_data_t,
5883        name: *const ::std::os::raw::c_char,
5884        fps: *mut media_frames_per_second,
5885        option: *mut *const ::std::os::raw::c_char,
5886    ) -> bool;
5887    pub fn obs_data_item_set_frames_per_second(
5888        item: *mut *mut obs_data_item_t,
5889        fps: media_frames_per_second,
5890        option: *const ::std::os::raw::c_char,
5891    );
5892    pub fn obs_data_item_set_default_frames_per_second(
5893        item: *mut *mut obs_data_item_t,
5894        fps: media_frames_per_second,
5895        option: *const ::std::os::raw::c_char,
5896    );
5897    pub fn obs_data_item_set_autoselect_frames_per_second(
5898        item: *mut *mut obs_data_item_t,
5899        fps: media_frames_per_second,
5900        option: *const ::std::os::raw::c_char,
5901    );
5902    pub fn obs_data_item_get_frames_per_second(
5903        item: *mut obs_data_item_t,
5904        fps: *mut media_frames_per_second,
5905        option: *mut *const ::std::os::raw::c_char,
5906    ) -> bool;
5907    pub fn obs_data_item_get_default_frames_per_second(
5908        item: *mut obs_data_item_t,
5909        fps: *mut media_frames_per_second,
5910        option: *mut *const ::std::os::raw::c_char,
5911    ) -> bool;
5912    pub fn obs_data_item_get_autoselect_frames_per_second(
5913        item: *mut obs_data_item_t,
5914        fps: *mut media_frames_per_second,
5915        option: *mut *const ::std::os::raw::c_char,
5916    ) -> bool;
5917    pub fn obs_properties_create() -> *mut obs_properties_t;
5918    pub fn obs_properties_create_param(
5919        param: *mut ::std::os::raw::c_void,
5920        destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5921    ) -> *mut obs_properties_t;
5922    pub fn obs_properties_destroy(props: *mut obs_properties_t);
5923    pub fn obs_properties_set_flags(props: *mut obs_properties_t, flags: u32);
5924    pub fn obs_properties_get_flags(props: *mut obs_properties_t) -> u32;
5925    pub fn obs_properties_set_param(
5926        props: *mut obs_properties_t,
5927        param: *mut ::std::os::raw::c_void,
5928        destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5929    );
5930    pub fn obs_properties_get_param(props: *mut obs_properties_t) -> *mut ::std::os::raw::c_void;
5931    pub fn obs_properties_first(props: *mut obs_properties_t) -> *mut obs_property_t;
5932    pub fn obs_properties_get(
5933        props: *mut obs_properties_t,
5934        property: *const ::std::os::raw::c_char,
5935    ) -> *mut obs_property_t;
5936    pub fn obs_properties_get_parent(props: *mut obs_properties_t) -> *mut obs_properties_t;
5937#[doc = " Remove a property from a properties list.\n\n Removes a property from a properties list. Only valid in either\n get_properties or modified_callback(2). modified_callback(2) must return\n true so that all UI properties are rebuilt and returning false is undefined\n behavior.\n\n @param props Properties to remove from.\n @param property Name of the property to remove."]
5938    pub fn obs_properties_remove_by_name(
5939        props: *mut obs_properties_t,
5940        property: *const ::std::os::raw::c_char,
5941    );
5942#[doc = " Applies settings to the properties by calling all the necessary\n modification callbacks"]
5943    pub fn obs_properties_apply_settings(props: *mut obs_properties_t, settings: *mut obs_data_t);
5944    pub fn obs_properties_add_bool(
5945        props: *mut obs_properties_t,
5946        name: *const ::std::os::raw::c_char,
5947        description: *const ::std::os::raw::c_char,
5948    ) -> *mut obs_property_t;
5949    pub fn obs_properties_add_int(
5950        props: *mut obs_properties_t,
5951        name: *const ::std::os::raw::c_char,
5952        description: *const ::std::os::raw::c_char,
5953        min: ::std::os::raw::c_int,
5954        max: ::std::os::raw::c_int,
5955        step: ::std::os::raw::c_int,
5956    ) -> *mut obs_property_t;
5957    pub fn obs_properties_add_float(
5958        props: *mut obs_properties_t,
5959        name: *const ::std::os::raw::c_char,
5960        description: *const ::std::os::raw::c_char,
5961        min: f64,
5962        max: f64,
5963        step: f64,
5964    ) -> *mut obs_property_t;
5965    pub fn obs_properties_add_int_slider(
5966        props: *mut obs_properties_t,
5967        name: *const ::std::os::raw::c_char,
5968        description: *const ::std::os::raw::c_char,
5969        min: ::std::os::raw::c_int,
5970        max: ::std::os::raw::c_int,
5971        step: ::std::os::raw::c_int,
5972    ) -> *mut obs_property_t;
5973    pub fn obs_properties_add_float_slider(
5974        props: *mut obs_properties_t,
5975        name: *const ::std::os::raw::c_char,
5976        description: *const ::std::os::raw::c_char,
5977        min: f64,
5978        max: f64,
5979        step: f64,
5980    ) -> *mut obs_property_t;
5981    pub fn obs_properties_add_text(
5982        props: *mut obs_properties_t,
5983        name: *const ::std::os::raw::c_char,
5984        description: *const ::std::os::raw::c_char,
5985        type_: obs_text_type,
5986    ) -> *mut obs_property_t;
5987#[doc = " Adds a 'path' property.  Can be a directory or a file.\n\n If target is a file path, the filters should be this format, separated by\n double semicolons, and extensions separated by space:\n   \"Example types 1 and 2 (*.ex1 *.ex2);;Example type 3 (*.ex3)\"\n\n @param  props        Properties object\n @param  name         Settings name\n @param  description  Description (display name) of the property\n @param  type         Type of path (directory or file)\n @param  filter       If type is a file path, then describes the file filter\n                      that the user can browse.  Items are separated via\n                      double semicolons.  If multiple file types in a\n                      filter, separate with space."]
5988    pub fn obs_properties_add_path(
5989        props: *mut obs_properties_t,
5990        name: *const ::std::os::raw::c_char,
5991        description: *const ::std::os::raw::c_char,
5992        type_: obs_path_type,
5993        filter: *const ::std::os::raw::c_char,
5994        default_path: *const ::std::os::raw::c_char,
5995    ) -> *mut obs_property_t;
5996    pub fn obs_properties_add_list(
5997        props: *mut obs_properties_t,
5998        name: *const ::std::os::raw::c_char,
5999        description: *const ::std::os::raw::c_char,
6000        type_: obs_combo_type,
6001        format: obs_combo_format,
6002    ) -> *mut obs_property_t;
6003    pub fn obs_properties_add_color(
6004        props: *mut obs_properties_t,
6005        name: *const ::std::os::raw::c_char,
6006        description: *const ::std::os::raw::c_char,
6007    ) -> *mut obs_property_t;
6008    pub fn obs_properties_add_color_alpha(
6009        props: *mut obs_properties_t,
6010        name: *const ::std::os::raw::c_char,
6011        description: *const ::std::os::raw::c_char,
6012    ) -> *mut obs_property_t;
6013    pub fn obs_properties_add_button(
6014        props: *mut obs_properties_t,
6015        name: *const ::std::os::raw::c_char,
6016        text: *const ::std::os::raw::c_char,
6017        callback: obs_property_clicked_t,
6018    ) -> *mut obs_property_t;
6019    pub fn obs_properties_add_button2(
6020        props: *mut obs_properties_t,
6021        name: *const ::std::os::raw::c_char,
6022        text: *const ::std::os::raw::c_char,
6023        callback: obs_property_clicked_t,
6024        priv_: *mut ::std::os::raw::c_void,
6025    ) -> *mut obs_property_t;
6026#[doc = " Adds a font selection property.\n\n A font is an obs_data sub-object which contains the following items:\n   face:   face name string\n   style:  style name string\n   size:   size integer\n   flags:  font flags integer (OBS_FONT_* defined above)"]
6027    pub fn obs_properties_add_font(
6028        props: *mut obs_properties_t,
6029        name: *const ::std::os::raw::c_char,
6030        description: *const ::std::os::raw::c_char,
6031    ) -> *mut obs_property_t;
6032    pub fn obs_properties_add_editable_list(
6033        props: *mut obs_properties_t,
6034        name: *const ::std::os::raw::c_char,
6035        description: *const ::std::os::raw::c_char,
6036        type_: obs_editable_list_type,
6037        filter: *const ::std::os::raw::c_char,
6038        default_path: *const ::std::os::raw::c_char,
6039    ) -> *mut obs_property_t;
6040    pub fn obs_properties_add_frame_rate(
6041        props: *mut obs_properties_t,
6042        name: *const ::std::os::raw::c_char,
6043        description: *const ::std::os::raw::c_char,
6044    ) -> *mut obs_property_t;
6045    pub fn obs_properties_add_group(
6046        props: *mut obs_properties_t,
6047        name: *const ::std::os::raw::c_char,
6048        description: *const ::std::os::raw::c_char,
6049        type_: obs_group_type,
6050        group: *mut obs_properties_t,
6051    ) -> *mut obs_property_t;
6052    pub fn obs_property_set_modified_callback(
6053        p: *mut obs_property_t,
6054        modified: obs_property_modified_t,
6055    );
6056    pub fn obs_property_set_modified_callback2(
6057        p: *mut obs_property_t,
6058        modified: obs_property_modified2_t,
6059        priv_: *mut ::std::os::raw::c_void,
6060    );
6061    pub fn obs_property_modified(p: *mut obs_property_t, settings: *mut obs_data_t) -> bool;
6062    pub fn obs_property_button_clicked(
6063        p: *mut obs_property_t,
6064        obj: *mut ::std::os::raw::c_void,
6065    ) -> bool;
6066    pub fn obs_property_set_visible(p: *mut obs_property_t, visible: bool);
6067    pub fn obs_property_set_enabled(p: *mut obs_property_t, enabled: bool);
6068    pub fn obs_property_set_description(
6069        p: *mut obs_property_t,
6070        description: *const ::std::os::raw::c_char,
6071    );
6072    pub fn obs_property_set_long_description(
6073        p: *mut obs_property_t,
6074        long_description: *const ::std::os::raw::c_char,
6075    );
6076    pub fn obs_property_name(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6077    pub fn obs_property_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6078    pub fn obs_property_long_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6079    pub fn obs_property_get_type(p: *mut obs_property_t) -> obs_property_type;
6080    pub fn obs_property_enabled(p: *mut obs_property_t) -> bool;
6081    pub fn obs_property_visible(p: *mut obs_property_t) -> bool;
6082    pub fn obs_property_next(p: *mut *mut obs_property_t) -> bool;
6083    pub fn obs_property_int_min(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6084    pub fn obs_property_int_max(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6085    pub fn obs_property_int_step(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6086    pub fn obs_property_int_type(p: *mut obs_property_t) -> obs_number_type;
6087    pub fn obs_property_int_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6088    pub fn obs_property_float_min(p: *mut obs_property_t) -> f64;
6089    pub fn obs_property_float_max(p: *mut obs_property_t) -> f64;
6090    pub fn obs_property_float_step(p: *mut obs_property_t) -> f64;
6091    pub fn obs_property_float_type(p: *mut obs_property_t) -> obs_number_type;
6092    pub fn obs_property_float_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6093    pub fn obs_property_text_type(p: *mut obs_property_t) -> obs_text_type;
6094    pub fn obs_property_text_monospace(p: *mut obs_property_t) -> bool;
6095    pub fn obs_property_text_info_type(p: *mut obs_property_t) -> obs_text_info_type;
6096    pub fn obs_property_text_info_word_wrap(p: *mut obs_property_t) -> bool;
6097    pub fn obs_property_path_type(p: *mut obs_property_t) -> obs_path_type;
6098    pub fn obs_property_path_filter(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6099    pub fn obs_property_path_default_path(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6100    pub fn obs_property_list_type(p: *mut obs_property_t) -> obs_combo_type;
6101    pub fn obs_property_list_format(p: *mut obs_property_t) -> obs_combo_format;
6102    pub fn obs_property_int_set_limits(
6103        p: *mut obs_property_t,
6104        min: ::std::os::raw::c_int,
6105        max: ::std::os::raw::c_int,
6106        step: ::std::os::raw::c_int,
6107    );
6108    pub fn obs_property_float_set_limits(p: *mut obs_property_t, min: f64, max: f64, step: f64);
6109    pub fn obs_property_int_set_suffix(
6110        p: *mut obs_property_t,
6111        suffix: *const ::std::os::raw::c_char,
6112    );
6113    pub fn obs_property_float_set_suffix(
6114        p: *mut obs_property_t,
6115        suffix: *const ::std::os::raw::c_char,
6116    );
6117    pub fn obs_property_text_set_monospace(p: *mut obs_property_t, monospace: bool);
6118    pub fn obs_property_text_set_info_type(p: *mut obs_property_t, type_: obs_text_info_type);
6119    pub fn obs_property_text_set_info_word_wrap(p: *mut obs_property_t, word_wrap: bool);
6120    pub fn obs_property_button_set_type(p: *mut obs_property_t, type_: obs_button_type);
6121    pub fn obs_property_button_set_url(p: *mut obs_property_t, url: *mut ::std::os::raw::c_char);
6122    pub fn obs_property_list_clear(p: *mut obs_property_t);
6123    pub fn obs_property_list_add_string(
6124        p: *mut obs_property_t,
6125        name: *const ::std::os::raw::c_char,
6126        val: *const ::std::os::raw::c_char,
6127    ) -> usize;
6128    pub fn obs_property_list_add_int(
6129        p: *mut obs_property_t,
6130        name: *const ::std::os::raw::c_char,
6131        val: ::std::os::raw::c_longlong,
6132    ) -> usize;
6133    pub fn obs_property_list_add_float(
6134        p: *mut obs_property_t,
6135        name: *const ::std::os::raw::c_char,
6136        val: f64,
6137    ) -> usize;
6138    pub fn obs_property_list_add_bool(
6139        p: *mut obs_property_t,
6140        name: *const ::std::os::raw::c_char,
6141        val: bool,
6142    ) -> usize;
6143    pub fn obs_property_list_insert_string(
6144        p: *mut obs_property_t,
6145        idx: usize,
6146        name: *const ::std::os::raw::c_char,
6147        val: *const ::std::os::raw::c_char,
6148    );
6149    pub fn obs_property_list_insert_int(
6150        p: *mut obs_property_t,
6151        idx: usize,
6152        name: *const ::std::os::raw::c_char,
6153        val: ::std::os::raw::c_longlong,
6154    );
6155    pub fn obs_property_list_insert_float(
6156        p: *mut obs_property_t,
6157        idx: usize,
6158        name: *const ::std::os::raw::c_char,
6159        val: f64,
6160    );
6161    pub fn obs_property_list_insert_bool(
6162        p: *mut obs_property_t,
6163        idx: usize,
6164        name: *const ::std::os::raw::c_char,
6165        val: bool,
6166    );
6167    pub fn obs_property_list_item_disable(p: *mut obs_property_t, idx: usize, disabled: bool);
6168    pub fn obs_property_list_item_disabled(p: *mut obs_property_t, idx: usize) -> bool;
6169    pub fn obs_property_list_item_remove(p: *mut obs_property_t, idx: usize);
6170    pub fn obs_property_list_item_count(p: *mut obs_property_t) -> usize;
6171    pub fn obs_property_list_item_name(
6172        p: *mut obs_property_t,
6173        idx: usize,
6174    ) -> *const ::std::os::raw::c_char;
6175    pub fn obs_property_list_item_string(
6176        p: *mut obs_property_t,
6177        idx: usize,
6178    ) -> *const ::std::os::raw::c_char;
6179    pub fn obs_property_list_item_int(
6180        p: *mut obs_property_t,
6181        idx: usize,
6182    ) -> ::std::os::raw::c_longlong;
6183    pub fn obs_property_list_item_float(p: *mut obs_property_t, idx: usize) -> f64;
6184    pub fn obs_property_list_item_bool(p: *mut obs_property_t, idx: usize) -> bool;
6185    pub fn obs_property_editable_list_type(p: *mut obs_property_t) -> obs_editable_list_type;
6186    pub fn obs_property_editable_list_filter(
6187        p: *mut obs_property_t,
6188    ) -> *const ::std::os::raw::c_char;
6189    pub fn obs_property_editable_list_default_path(
6190        p: *mut obs_property_t,
6191    ) -> *const ::std::os::raw::c_char;
6192    pub fn obs_property_frame_rate_clear(p: *mut obs_property_t);
6193    pub fn obs_property_frame_rate_options_clear(p: *mut obs_property_t);
6194    pub fn obs_property_frame_rate_fps_ranges_clear(p: *mut obs_property_t);
6195    pub fn obs_property_frame_rate_option_add(
6196        p: *mut obs_property_t,
6197        name: *const ::std::os::raw::c_char,
6198        description: *const ::std::os::raw::c_char,
6199    ) -> usize;
6200    pub fn obs_property_frame_rate_fps_range_add(
6201        p: *mut obs_property_t,
6202        min: media_frames_per_second,
6203        max: media_frames_per_second,
6204    ) -> usize;
6205    pub fn obs_property_frame_rate_option_insert(
6206        p: *mut obs_property_t,
6207        idx: usize,
6208        name: *const ::std::os::raw::c_char,
6209        description: *const ::std::os::raw::c_char,
6210    );
6211    pub fn obs_property_frame_rate_fps_range_insert(
6212        p: *mut obs_property_t,
6213        idx: usize,
6214        min: media_frames_per_second,
6215        max: media_frames_per_second,
6216    );
6217    pub fn obs_property_frame_rate_options_count(p: *mut obs_property_t) -> usize;
6218    pub fn obs_property_frame_rate_option_name(
6219        p: *mut obs_property_t,
6220        idx: usize,
6221    ) -> *const ::std::os::raw::c_char;
6222    pub fn obs_property_frame_rate_option_description(
6223        p: *mut obs_property_t,
6224        idx: usize,
6225    ) -> *const ::std::os::raw::c_char;
6226    pub fn obs_property_frame_rate_fps_ranges_count(p: *mut obs_property_t) -> usize;
6227    pub fn obs_property_frame_rate_fps_range_min(
6228        p: *mut obs_property_t,
6229        idx: usize,
6230    ) -> media_frames_per_second;
6231    pub fn obs_property_frame_rate_fps_range_max(
6232        p: *mut obs_property_t,
6233        idx: usize,
6234    ) -> media_frames_per_second;
6235    pub fn obs_property_group_type(p: *mut obs_property_t) -> obs_group_type;
6236    pub fn obs_property_group_content(p: *mut obs_property_t) -> *mut obs_properties_t;
6237    pub fn obs_property_button_type(p: *mut obs_property_t) -> obs_button_type;
6238    pub fn obs_property_button_url(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6239    pub fn obs_missing_files_create() -> *mut obs_missing_files_t;
6240    pub fn obs_missing_file_create(
6241        path: *const ::std::os::raw::c_char,
6242        callback: obs_missing_file_cb,
6243        src_type: ::std::os::raw::c_int,
6244        src: *mut ::std::os::raw::c_void,
6245        data: *mut ::std::os::raw::c_void,
6246    ) -> *mut obs_missing_file_t;
6247    pub fn obs_missing_files_add_file(
6248        files: *mut obs_missing_files_t,
6249        file: *mut obs_missing_file_t,
6250    );
6251    pub fn obs_missing_files_count(files: *mut obs_missing_files_t) -> usize;
6252    pub fn obs_missing_files_get_file(
6253        files: *mut obs_missing_files_t,
6254        idx: ::std::os::raw::c_int,
6255    ) -> *mut obs_missing_file_t;
6256    pub fn obs_missing_files_destroy(files: *mut obs_missing_files_t);
6257    pub fn obs_missing_files_append(dst: *mut obs_missing_files_t, src: *mut obs_missing_files_t);
6258    pub fn obs_missing_file_issue_callback(
6259        file: *mut obs_missing_file_t,
6260        new_path: *const ::std::os::raw::c_char,
6261    );
6262    pub fn obs_missing_file_get_path(
6263        file: *mut obs_missing_file_t,
6264    ) -> *const ::std::os::raw::c_char;
6265    pub fn obs_missing_file_get_source_name(
6266        file: *mut obs_missing_file_t,
6267    ) -> *const ::std::os::raw::c_char;
6268    pub fn obs_missing_file_release(file: *mut obs_missing_file_t);
6269    pub fn obs_missing_file_destroy(file: *mut obs_missing_file_t);
6270    pub fn obs_register_source_s(info: *const obs_source_info, size: usize);
6271    pub fn obs_register_encoder_s(info: *const obs_encoder_info, size: usize);
6272    pub fn obs_register_output_s(info: *const obs_output_info, size: usize);
6273    pub fn obs_register_service_s(info: *const obs_service_info, size: usize);
6274#[doc = " @brief Create a fader\n @param type the type of the fader\n @return pointer to the fader object\n\n A fader object is used to map input values from a gui element to dB and\n subsequently multiplier values used by libobs to mix audio.\n The current \"position\" of the fader is internally stored as dB value."]
6275    pub fn obs_fader_create(type_: obs_fader_type) -> *mut obs_fader_t;
6276#[doc = " @brief Destroy a fader\n @param fader pointer to the fader object\n\n Destroy the fader and free all related data"]
6277    pub fn obs_fader_destroy(fader: *mut obs_fader_t);
6278#[doc = " @brief Set the fader dB value\n @param fader pointer to the fader object\n @param db new dB value\n @return true if value was set without clamping"]
6279    pub fn obs_fader_set_db(fader: *mut obs_fader_t, db: f32) -> bool;
6280#[doc = " @brief Get the current fader dB value\n @param fader pointer to the fader object\n @return current fader dB value"]
6281    pub fn obs_fader_get_db(fader: *mut obs_fader_t) -> f32;
6282#[doc = " @brief Set the fader value from deflection\n @param fader pointer to the fader object\n @param def new deflection\n @return true if value was set without clamping\n\n This sets the new fader value from the supplied deflection, in case the\n resulting value was clamped due to limits this function will return false.\n The deflection is typically in the range \\[0.0, 1.0\\] but may be higher in\n order to provide some amplification. In order for this to work the high dB\n limit has to be set."]
6283    pub fn obs_fader_set_deflection(fader: *mut obs_fader_t, def: f32) -> bool;
6284#[doc = " @brief Get the current fader deflection\n @param fader pointer to the fader object\n @return current fader deflection"]
6285    pub fn obs_fader_get_deflection(fader: *mut obs_fader_t) -> f32;
6286#[doc = " @brief Set the fader value from multiplier\n @param fader pointer to the fader object\n @return true if the value was set without clamping"]
6287    pub fn obs_fader_set_mul(fader: *mut obs_fader_t, mul: f32) -> bool;
6288#[doc = " @brief Get the current fader multiplier value\n @param fader pointer to the fader object\n @return current fader multiplier"]
6289    pub fn obs_fader_get_mul(fader: *mut obs_fader_t) -> f32;
6290#[doc = " @brief Attach the fader to a source\n @param fader pointer to the fader object\n @param source pointer to the source object\n @return true on success\n\n When the fader is attached to a source it will automatically sync it's state\n to the volume of the source."]
6291    pub fn obs_fader_attach_source(fader: *mut obs_fader_t, source: *mut obs_source_t) -> bool;
6292#[doc = " @brief Detach the fader from the currently attached source\n @param fader pointer to the fader object"]
6293    pub fn obs_fader_detach_source(fader: *mut obs_fader_t);
6294    pub fn obs_fader_add_callback(
6295        fader: *mut obs_fader_t,
6296        callback: obs_fader_changed_t,
6297        param: *mut ::std::os::raw::c_void,
6298    );
6299    pub fn obs_fader_remove_callback(
6300        fader: *mut obs_fader_t,
6301        callback: obs_fader_changed_t,
6302        param: *mut ::std::os::raw::c_void,
6303    );
6304#[doc = " @brief Create a volume meter\n @param type the mapping type to use for the volume meter\n @return pointer to the volume meter object\n\n A volume meter object is used to prepare the sound levels reported by audio\n sources for display in a GUI.\n It will automatically take source volume into account and map the levels\n to a range \\[0.0f, 1.0f\\]."]
6305    pub fn obs_volmeter_create(type_: obs_fader_type) -> *mut obs_volmeter_t;
6306#[doc = " @brief Destroy a volume meter\n @param volmeter pointer to the volmeter object\n\n Destroy the volume meter and free all related data"]
6307    pub fn obs_volmeter_destroy(volmeter: *mut obs_volmeter_t);
6308#[doc = " @brief Attach the volume meter to a source\n @param volmeter pointer to the volume meter object\n @param source pointer to the source object\n @return true on success\n\n When the volume meter is attached to a source it will start to listen to\n volume updates on the source and after preparing the data emit its own\n signal."]
6309    pub fn obs_volmeter_attach_source(
6310        volmeter: *mut obs_volmeter_t,
6311        source: *mut obs_source_t,
6312    ) -> bool;
6313#[doc = " @brief Detach the volume meter from the currently attached source\n @param volmeter pointer to the volume meter object"]
6314    pub fn obs_volmeter_detach_source(volmeter: *mut obs_volmeter_t);
6315#[doc = " @brief Set the peak meter type for the volume meter\n @param volmeter pointer to the volume meter object\n @param peak_meter_type set if true-peak needs to be measured."]
6316    pub fn obs_volmeter_set_peak_meter_type(
6317        volmeter: *mut obs_volmeter_t,
6318        peak_meter_type: obs_peak_meter_type,
6319    );
6320#[doc = " @brief Get the number of channels which are configured for this source.\n @param volmeter pointer to the volume meter object"]
6321    pub fn obs_volmeter_get_nr_channels(volmeter: *mut obs_volmeter_t) -> ::std::os::raw::c_int;
6322    pub fn obs_volmeter_add_callback(
6323        volmeter: *mut obs_volmeter_t,
6324        callback: obs_volmeter_updated_t,
6325        param: *mut ::std::os::raw::c_void,
6326    );
6327    pub fn obs_volmeter_remove_callback(
6328        volmeter: *mut obs_volmeter_t,
6329        callback: obs_volmeter_updated_t,
6330        param: *mut ::std::os::raw::c_void,
6331    );
6332    pub fn obs_mul_to_db(mul: f32) -> f32;
6333    pub fn obs_db_to_mul(db: f32) -> f32;
6334    pub fn obs_fader_db_to_def(fader: *mut obs_fader_t) -> obs_fader_conversion_t;
6335    pub fn obs_hotkey_get_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6336    pub fn obs_hotkey_get_name(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6337    pub fn obs_hotkey_get_description(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6338    pub fn obs_hotkey_get_registerer_type(key: *const obs_hotkey_t) -> obs_hotkey_registerer_t;
6339    pub fn obs_hotkey_get_registerer(key: *const obs_hotkey_t) -> *mut ::std::os::raw::c_void;
6340    pub fn obs_hotkey_get_pair_partner_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6341    pub fn obs_hotkey_binding_get_key_combination(
6342        binding: *mut obs_hotkey_binding_t,
6343    ) -> obs_key_combination_t;
6344    pub fn obs_hotkey_binding_get_hotkey_id(binding: *mut obs_hotkey_binding_t) -> obs_hotkey_id;
6345    pub fn obs_hotkey_binding_get_hotkey(binding: *mut obs_hotkey_binding_t) -> *mut obs_hotkey_t;
6346    pub fn obs_hotkey_set_name(id: obs_hotkey_id, name: *const ::std::os::raw::c_char);
6347    pub fn obs_hotkey_set_description(id: obs_hotkey_id, desc: *const ::std::os::raw::c_char);
6348    pub fn obs_hotkey_pair_set_names(
6349        id: obs_hotkey_pair_id,
6350        name0: *const ::std::os::raw::c_char,
6351        name1: *const ::std::os::raw::c_char,
6352    );
6353    pub fn obs_hotkey_pair_set_descriptions(
6354        id: obs_hotkey_pair_id,
6355        desc0: *const ::std::os::raw::c_char,
6356        desc1: *const ::std::os::raw::c_char,
6357    );
6358    pub fn obs_hotkeys_set_translations_s(translations: *mut obs_hotkeys_translations, size: usize);
6359    pub fn obs_hotkeys_set_audio_hotkeys_translations(
6360        mute: *const ::std::os::raw::c_char,
6361        unmute: *const ::std::os::raw::c_char,
6362        push_to_mute: *const ::std::os::raw::c_char,
6363        push_to_talk: *const ::std::os::raw::c_char,
6364    );
6365    pub fn obs_hotkeys_set_sceneitem_hotkeys_translations(
6366        show: *const ::std::os::raw::c_char,
6367        hide: *const ::std::os::raw::c_char,
6368    );
6369    pub fn obs_hotkey_register_frontend(
6370        name: *const ::std::os::raw::c_char,
6371        description: *const ::std::os::raw::c_char,
6372        func: obs_hotkey_func,
6373        data: *mut ::std::os::raw::c_void,
6374    ) -> obs_hotkey_id;
6375    pub fn obs_hotkey_register_encoder(
6376        encoder: *mut obs_encoder_t,
6377        name: *const ::std::os::raw::c_char,
6378        description: *const ::std::os::raw::c_char,
6379        func: obs_hotkey_func,
6380        data: *mut ::std::os::raw::c_void,
6381    ) -> obs_hotkey_id;
6382    pub fn obs_hotkey_register_output(
6383        output: *mut obs_output_t,
6384        name: *const ::std::os::raw::c_char,
6385        description: *const ::std::os::raw::c_char,
6386        func: obs_hotkey_func,
6387        data: *mut ::std::os::raw::c_void,
6388    ) -> obs_hotkey_id;
6389    pub fn obs_hotkey_register_service(
6390        service: *mut obs_service_t,
6391        name: *const ::std::os::raw::c_char,
6392        description: *const ::std::os::raw::c_char,
6393        func: obs_hotkey_func,
6394        data: *mut ::std::os::raw::c_void,
6395    ) -> obs_hotkey_id;
6396    pub fn obs_hotkey_register_source(
6397        source: *mut obs_source_t,
6398        name: *const ::std::os::raw::c_char,
6399        description: *const ::std::os::raw::c_char,
6400        func: obs_hotkey_func,
6401        data: *mut ::std::os::raw::c_void,
6402    ) -> obs_hotkey_id;
6403    pub fn obs_hotkey_pair_register_frontend(
6404        name0: *const ::std::os::raw::c_char,
6405        description0: *const ::std::os::raw::c_char,
6406        name1: *const ::std::os::raw::c_char,
6407        description1: *const ::std::os::raw::c_char,
6408        func0: obs_hotkey_active_func,
6409        func1: obs_hotkey_active_func,
6410        data0: *mut ::std::os::raw::c_void,
6411        data1: *mut ::std::os::raw::c_void,
6412    ) -> obs_hotkey_pair_id;
6413    pub fn obs_hotkey_pair_register_encoder(
6414        encoder: *mut obs_encoder_t,
6415        name0: *const ::std::os::raw::c_char,
6416        description0: *const ::std::os::raw::c_char,
6417        name1: *const ::std::os::raw::c_char,
6418        description1: *const ::std::os::raw::c_char,
6419        func0: obs_hotkey_active_func,
6420        func1: obs_hotkey_active_func,
6421        data0: *mut ::std::os::raw::c_void,
6422        data1: *mut ::std::os::raw::c_void,
6423    ) -> obs_hotkey_pair_id;
6424    pub fn obs_hotkey_pair_register_output(
6425        output: *mut obs_output_t,
6426        name0: *const ::std::os::raw::c_char,
6427        description0: *const ::std::os::raw::c_char,
6428        name1: *const ::std::os::raw::c_char,
6429        description1: *const ::std::os::raw::c_char,
6430        func0: obs_hotkey_active_func,
6431        func1: obs_hotkey_active_func,
6432        data0: *mut ::std::os::raw::c_void,
6433        data1: *mut ::std::os::raw::c_void,
6434    ) -> obs_hotkey_pair_id;
6435    pub fn obs_hotkey_pair_register_service(
6436        service: *mut obs_service_t,
6437        name0: *const ::std::os::raw::c_char,
6438        description0: *const ::std::os::raw::c_char,
6439        name1: *const ::std::os::raw::c_char,
6440        description1: *const ::std::os::raw::c_char,
6441        func0: obs_hotkey_active_func,
6442        func1: obs_hotkey_active_func,
6443        data0: *mut ::std::os::raw::c_void,
6444        data1: *mut ::std::os::raw::c_void,
6445    ) -> obs_hotkey_pair_id;
6446    pub fn obs_hotkey_pair_register_source(
6447        source: *mut obs_source_t,
6448        name0: *const ::std::os::raw::c_char,
6449        description0: *const ::std::os::raw::c_char,
6450        name1: *const ::std::os::raw::c_char,
6451        description1: *const ::std::os::raw::c_char,
6452        func0: obs_hotkey_active_func,
6453        func1: obs_hotkey_active_func,
6454        data0: *mut ::std::os::raw::c_void,
6455        data1: *mut ::std::os::raw::c_void,
6456    ) -> obs_hotkey_pair_id;
6457    pub fn obs_hotkey_unregister(id: obs_hotkey_id);
6458    pub fn obs_hotkey_pair_unregister(id: obs_hotkey_pair_id);
6459    pub fn obs_hotkey_load_bindings(
6460        id: obs_hotkey_id,
6461        combinations: *mut obs_key_combination_t,
6462        num: usize,
6463    );
6464    pub fn obs_hotkey_load(id: obs_hotkey_id, data: *mut obs_data_array_t);
6465    pub fn obs_hotkeys_load_encoder(encoder: *mut obs_encoder_t, hotkeys: *mut obs_data_t);
6466    pub fn obs_hotkeys_load_output(output: *mut obs_output_t, hotkeys: *mut obs_data_t);
6467    pub fn obs_hotkeys_load_service(service: *mut obs_service_t, hotkeys: *mut obs_data_t);
6468    pub fn obs_hotkeys_load_source(source: *mut obs_source_t, hotkeys: *mut obs_data_t);
6469    pub fn obs_hotkey_pair_load(
6470        id: obs_hotkey_pair_id,
6471        data0: *mut obs_data_array_t,
6472        data1: *mut obs_data_array_t,
6473    );
6474    pub fn obs_hotkey_save(id: obs_hotkey_id) -> *mut obs_data_array_t;
6475    pub fn obs_hotkey_pair_save(
6476        id: obs_hotkey_pair_id,
6477        p_data0: *mut *mut obs_data_array_t,
6478        p_data1: *mut *mut obs_data_array_t,
6479    );
6480    pub fn obs_hotkeys_save_encoder(encoder: *mut obs_encoder_t) -> *mut obs_data_t;
6481    pub fn obs_hotkeys_save_output(output: *mut obs_output_t) -> *mut obs_data_t;
6482    pub fn obs_hotkeys_save_service(service: *mut obs_service_t) -> *mut obs_data_t;
6483    pub fn obs_hotkeys_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6484    pub fn obs_enum_hotkeys(func: obs_hotkey_enum_func, data: *mut ::std::os::raw::c_void);
6485    pub fn obs_enum_hotkey_bindings(
6486        func: obs_hotkey_binding_enum_func,
6487        data: *mut ::std::os::raw::c_void,
6488    );
6489    pub fn obs_hotkey_inject_event(hotkey: obs_key_combination_t, pressed: bool);
6490    pub fn obs_hotkey_enable_background_press(enable: bool);
6491    pub fn obs_hotkey_set_callback_routing_func(
6492        func: obs_hotkey_callback_router_func,
6493        data: *mut ::std::os::raw::c_void,
6494    );
6495    pub fn obs_hotkey_trigger_routed_callback(id: obs_hotkey_id, pressed: bool);
6496    pub fn obs_hotkey_enable_callback_rerouting(enable: bool);
6497    pub fn obs_hotkey_update_atomic(
6498        func: obs_hotkey_atomic_update_func,
6499        data: *mut ::std::os::raw::c_void,
6500    );
6501    pub fn obs_key_to_str(key: obs_key_t, str_: *mut dstr);
6502    pub fn obs_key_combination_to_str(key: obs_key_combination_t, str_: *mut dstr);
6503    pub fn obs_key_from_virtual_key(code: ::std::os::raw::c_int) -> obs_key_t;
6504    pub fn obs_key_to_virtual_key(key: obs_key_t) -> ::std::os::raw::c_int;
6505    pub fn obs_key_to_name(key: obs_key_t) -> *const ::std::os::raw::c_char;
6506    pub fn obs_key_from_name(name: *const ::std::os::raw::c_char) -> obs_key_t;
6507#[doc = " Find a core libobs data file\n @param path name of the base file\n @return A string containing the full path to the file.\n          Use bfree after use."]
6508    pub fn obs_find_data_file(file: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
6509#[doc = " Add a path to search libobs data files in.\n @param path Full path to directory to look in.\n             The string is copied."]
6510    pub fn obs_add_data_path(path: *const ::std::os::raw::c_char);
6511#[doc = " Remove a path from libobs core data paths.\n @param path The path to compare to currently set paths.\n             It does not need to be the same pointer, but\n             the path string must match an entry fully.\n @return Whether or not the path was successfully removed.\n         If false, the path could not be found."]
6512    pub fn obs_remove_data_path(path: *const ::std::os::raw::c_char) -> bool;
6513#[doc = " Initializes OBS\n\n @param  locale              The locale to use for modules\n @param  module_config_path  Path to module config storage directory\n                             (or NULL if none)\n @param  store               The profiler name store for OBS to use or NULL"]
6514    pub fn obs_startup(
6515        locale: *const ::std::os::raw::c_char,
6516        module_config_path: *const ::std::os::raw::c_char,
6517        store: *mut profiler_name_store_t,
6518    ) -> bool;
6519#[doc = " Releases all data associated with OBS and terminates the OBS context"]
6520    pub fn obs_shutdown();
6521#[doc = " @return true if the main OBS context has been initialized"]
6522    pub fn obs_initialized() -> bool;
6523#[doc = " @return The current core version"]
6524    pub fn obs_get_version() -> u32;
6525#[doc = " @return The current core version string"]
6526    pub fn obs_get_version_string() -> *const ::std::os::raw::c_char;
6527#[doc = " Sets things up for calls to obs_get_cmdline_args. Called only once at startup\n and safely copies argv/argc from main(). Subsequent calls do nothing.\n\n @param  argc  The count of command line arguments, from main()\n @param  argv  An array of command line arguments, copied from main() and ends\n               with NULL."]
6528    pub fn obs_set_cmdline_args(
6529        argc: ::std::os::raw::c_int,
6530        argv: *const *const ::std::os::raw::c_char,
6531    );
6532#[doc = " Get the argc/argv used to start OBS\n\n @return  The command line arguments used for main(). Don't modify this or\n          you'll mess things up for other callers."]
6533    pub fn obs_get_cmdline_args() -> obs_cmdline_args;
6534#[doc = " Sets a new locale to use for modules.  This will call obs_module_set_locale\n for each module with the new locale.\n\n @param  locale  The locale to use for modules"]
6535    pub fn obs_set_locale(locale: *const ::std::os::raw::c_char);
6536#[doc = " @return the current locale"]
6537    pub fn obs_get_locale() -> *const ::std::os::raw::c_char;
6538    pub fn obs_init_win32_crash_handler();
6539#[doc = " Returns the profiler name store (see util/profiler.h) used by OBS, which is\n either a name store passed to obs_startup, an internal name store, or NULL\n in case obs_initialized() returns false."]
6540    pub fn obs_get_profiler_name_store() -> *mut profiler_name_store_t;
6541#[doc = " Sets base video output base resolution/fps/format.\n\n @note This data cannot be changed if an output is currently active.\n @note The graphics module cannot be changed without fully destroying the\n       OBS context.\n\n @param   ovi  Pointer to an obs_video_info structure containing the\n               specification of the graphics subsystem,\n @return       OBS_VIDEO_SUCCESS if successful\n               OBS_VIDEO_NOT_SUPPORTED if the adapter lacks capabilities\n               OBS_VIDEO_INVALID_PARAM if a parameter is invalid\n               OBS_VIDEO_CURRENTLY_ACTIVE if video is currently active\n               OBS_VIDEO_MODULE_NOT_FOUND if the graphics module is not found\n               OBS_VIDEO_FAIL for generic failure"]
6542    pub fn obs_reset_video(ovi: *mut obs_video_info) -> ::std::os::raw::c_int;
6543#[doc = " Sets base audio output format/channels/samples/etc\n\n @note Cannot reset base audio if an output is currently active."]
6544    pub fn obs_reset_audio(oai: *const obs_audio_info) -> bool;
6545    pub fn obs_reset_audio2(oai: *const obs_audio_info2) -> bool;
6546#[doc = " Gets the current video settings, returns false if no video"]
6547    pub fn obs_get_video_info(ovi: *mut obs_video_info) -> bool;
6548#[doc = " Gets the SDR white level, returns 300.f if no video"]
6549    pub fn obs_get_video_sdr_white_level() -> f32;
6550#[doc = " Gets the HDR nominal peak level, returns 1000.f if no video"]
6551    pub fn obs_get_video_hdr_nominal_peak_level() -> f32;
6552#[doc = " Sets the video levels"]
6553    pub fn obs_set_video_levels(sdr_white_level: f32, hdr_nominal_peak_level: f32);
6554#[doc = " Gets the current audio settings, returns false if no audio"]
6555    pub fn obs_get_audio_info(oai: *mut obs_audio_info) -> bool;
6556#[doc = " Gets the v2 audio settings that includes buffering information.\n Returns false if no audio."]
6557    pub fn obs_get_audio_info2(oai2: *mut obs_audio_info2) -> bool;
6558#[doc = " Opens a plugin module directly from a specific path.\n\n If the module already exists then the function will return successful, and\n the module parameter will be given the pointer to the existing module.\n\n This does not initialize the module, it only loads the module image.  To\n initialize the module, call obs_init_module.\n\n @param  module     The pointer to the created module.\n @param  path       Specifies the path to the module library file.  If the\n                    extension is not specified, it will use the extension\n                    appropriate to the operating system.\n @param  data_path  Specifies the path to the directory where the module's\n                    data files are stored.\n @returns           MODULE_SUCCESS if successful\n                    MODULE_ERROR if a generic error occurred\n                    MODULE_FAILED_TO_OPEN if the module failed to open, e.g. because it was not found or had missing symbols\n                    MODULE_MISSING_EXPORTS if required exports are missing\n                    MODULE_INCOMPATIBLE_VER if incompatible version"]
6559    pub fn obs_open_module(
6560        module: *mut *mut obs_module_t,
6561        path: *const ::std::os::raw::c_char,
6562        data_path: *const ::std::os::raw::c_char,
6563    ) -> ::std::os::raw::c_int;
6564    pub fn obs_create_disabled_module(
6565        module: *mut *mut obs_module_t,
6566        path: *const ::std::os::raw::c_char,
6567        data_path: *const ::std::os::raw::c_char,
6568        state: obs_module_load_state,
6569    ) -> bool;
6570#[doc = " Initializes the module, which calls its obs_module_load export.  If the\n module is already loaded, then this function does nothing and returns\n successful."]
6571    pub fn obs_init_module(module: *mut obs_module_t) -> bool;
6572#[doc = " Returns a module based upon its name, or NULL if not found"]
6573    pub fn obs_get_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6574#[doc = " Returns a module if it is disabled, or NULL if not found in the disabled list"]
6575    pub fn obs_get_disabled_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6576#[doc = " Gets library of module"]
6577    pub fn obs_get_module_lib(module: *mut obs_module_t) -> *mut ::std::os::raw::c_void;
6578#[doc = " Returns locale text from a specific module"]
6579    pub fn obs_module_get_locale_string(
6580        mod_: *const obs_module_t,
6581        lookup_string: *const ::std::os::raw::c_char,
6582        translated_string: *mut *const ::std::os::raw::c_char,
6583    ) -> bool;
6584    pub fn obs_module_get_locale_text(
6585        mod_: *const obs_module_t,
6586        text: *const ::std::os::raw::c_char,
6587    ) -> *const ::std::os::raw::c_char;
6588#[doc = " Logs loaded modules"]
6589    pub fn obs_log_loaded_modules();
6590#[doc = " Returns the module file name"]
6591    pub fn obs_get_module_file_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6592#[doc = " Returns the module full name"]
6593    pub fn obs_get_module_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6594#[doc = " Returns the module author(s)"]
6595    pub fn obs_get_module_author(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6596#[doc = " Returns the module description"]
6597    pub fn obs_get_module_description(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6598#[doc = " Returns the module binary path"]
6599    pub fn obs_get_module_binary_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6600#[doc = " Returns the module data path"]
6601    pub fn obs_get_module_data_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6602#[doc = " Adds a source type id to the module provided sources list"]
6603    pub fn obs_module_add_source(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6604#[doc = " Adds an output type id to the module provided outputs list"]
6605    pub fn obs_module_add_output(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6606#[doc = " Adds an encoder type id to the module provided encoders list"]
6607    pub fn obs_module_add_encoder(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6608#[doc = " Adds an encoder service id to the module provided services list"]
6609    pub fn obs_module_add_service(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6610#[doc = " Adds a module search path to be used with obs_find_modules.  If the search\n path strings contain %module%, that text will be replaced with the module\n name when used.\n\n @param  bin   Specifies the module's binary directory search path.\n @param  data  Specifies the module's data directory search path."]
6611    pub fn obs_add_module_path(
6612        bin: *const ::std::os::raw::c_char,
6613        data: *const ::std::os::raw::c_char,
6614    );
6615#[doc = " Adds a module to the list of modules allowed to load in Safe Mode.\n If the list is empty, all modules are allowed.\n\n @param  name  Specifies the module's name (filename sans extension)."]
6616    pub fn obs_add_safe_module(name: *const ::std::os::raw::c_char);
6617#[doc = " Adds a module to the list of core modules (which cannot be disabled).\n If the list is empty, all modules are allowed.\n\n @param  name  Specifies the module's name (filename sans extension)."]
6618    pub fn obs_add_core_module(name: *const ::std::os::raw::c_char);
6619#[doc = " Automatically loads all modules from module paths (convenience function)"]
6620    pub fn obs_load_all_modules();
6621    pub fn obs_module_failure_info_free(mfi: *mut obs_module_failure_info);
6622    pub fn obs_load_all_modules2(mfi: *mut obs_module_failure_info);
6623#[doc = " Notifies modules that all modules have been loaded.  This function should\n be called after all modules have been loaded."]
6624    pub fn obs_post_load_modules();
6625#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6626    pub fn obs_find_modules(
6627        callback: obs_find_module_callback_t,
6628        param: *mut ::std::os::raw::c_void,
6629    );
6630#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6631    pub fn obs_find_modules2(
6632        callback: obs_find_module_callback2_t,
6633        param: *mut ::std::os::raw::c_void,
6634    );
6635#[doc = " Enumerates all loaded modules"]
6636    pub fn obs_enum_modules(
6637        callback: obs_enum_module_callback_t,
6638        param: *mut ::std::os::raw::c_void,
6639    );
6640#[doc = " Helper function for using default module locale"]
6641    pub fn obs_module_load_locale(
6642        module: *mut obs_module_t,
6643        default_locale: *const ::std::os::raw::c_char,
6644        locale: *const ::std::os::raw::c_char,
6645    ) -> *mut lookup_t;
6646#[doc = " Returns the location of a plugin module data file.\n\n @note   Modules should use obs_module_file function defined in obs-module.h\n         as a more elegant means of getting their files without having to\n         specify the module parameter.\n\n @param  module  The module associated with the file to locate\n @param  file    The file to locate\n @return         Path string, or NULL if not found.  Use bfree to free string."]
6647    pub fn obs_find_module_file(
6648        module: *mut obs_module_t,
6649        file: *const ::std::os::raw::c_char,
6650    ) -> *mut ::std::os::raw::c_char;
6651#[doc = " Adds a module name to the disabled modules list.\n\n @param  name    The name of the module to disable"]
6652    pub fn obs_add_disabled_module(name: *const ::std::os::raw::c_char);
6653#[doc = " Returns if a module can be disabled.\n\n @param  name    The name of the module to check\n @return         Boolean to indicate if module can be disabled"]
6654    pub fn obs_get_module_allow_disable(name: *const ::std::os::raw::c_char) -> bool;
6655#[doc = " Returns the path of a plugin module config file (whether it exists or not)\n\n @note   Modules should use obs_module_config_path function defined in\n         obs-module.h as a more elegant means of getting their files without\n         having to specify the module parameter.\n\n @param  module  The module associated with the path\n @param  file    The file to get a path to\n @return         Path string, or NULL if not found.  Use bfree to free string."]
6656    pub fn obs_module_get_config_path(
6657        module: *mut obs_module_t,
6658        file: *const ::std::os::raw::c_char,
6659    ) -> *mut ::std::os::raw::c_char;
6660#[doc = " Enumerates all source types (inputs, filters, transitions, etc)."]
6661    pub fn obs_enum_source_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6662#[doc = " Enumerates all available inputs source types.\n\n   Inputs are general source inputs (such as capture sources, device sources,\n etc)."]
6663    pub fn obs_enum_input_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6664    pub fn obs_enum_input_types2(
6665        idx: usize,
6666        id: *mut *const ::std::os::raw::c_char,
6667        unversioned_id: *mut *const ::std::os::raw::c_char,
6668    ) -> bool;
6669    pub fn obs_get_latest_input_type_id(
6670        unversioned_id: *const ::std::os::raw::c_char,
6671    ) -> *const ::std::os::raw::c_char;
6672#[doc = " Enumerates all available filter source types.\n\n   Filters are sources that are used to modify the video/audio output of\n other sources."]
6673    pub fn obs_enum_filter_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6674#[doc = " Enumerates all available transition source types.\n\n   Transitions are sources used to transition between two or more other\n sources."]
6675    pub fn obs_enum_transition_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6676#[doc = " Enumerates all available output types."]
6677    pub fn obs_enum_output_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6678#[doc = " Enumerates all available encoder types."]
6679    pub fn obs_enum_encoder_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6680#[doc = " Enumerates all available service types."]
6681    pub fn obs_enum_service_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6682#[doc = " Helper function for entering the OBS graphics context"]
6683    pub fn obs_enter_graphics();
6684#[doc = " Helper function for leaving the OBS graphics context"]
6685    pub fn obs_leave_graphics();
6686#[doc = " Gets the main audio output handler for this OBS context"]
6687    pub fn obs_get_audio() -> *mut audio_t;
6688#[doc = " Gets the main video output handler for this OBS context"]
6689    pub fn obs_get_video() -> *mut video_t;
6690#[doc = " Returns true if video is active, false otherwise"]
6691    pub fn obs_video_active() -> bool;
6692#[doc = " Sets the primary output source for a channel."]
6693    pub fn obs_set_output_source(channel: u32, source: *mut obs_source_t);
6694#[doc = " Gets the primary output source for a channel and increments the reference\n counter for that source.  Use obs_source_release to release."]
6695    pub fn obs_get_output_source(channel: u32) -> *mut obs_source_t;
6696#[doc = " Enumerates all input sources\n\n   Callback function returns true to continue enumeration, or false to end\n enumeration.\n\n   Use obs_source_get_ref or obs_source_get_weak_source if you want to retain\n a reference after obs_enum_sources finishes"]
6697    pub fn obs_enum_sources(
6698        enum_proc: ::std::option::Option<
6699            unsafe extern "C" fn(
6700                arg1: *mut ::std::os::raw::c_void,
6701                arg2: *mut obs_source_t,
6702            ) -> bool,
6703        >,
6704        param: *mut ::std::os::raw::c_void,
6705    );
6706#[doc = " Enumerates scenes"]
6707    pub fn obs_enum_scenes(
6708        enum_proc: ::std::option::Option<
6709            unsafe extern "C" fn(
6710                arg1: *mut ::std::os::raw::c_void,
6711                arg2: *mut obs_source_t,
6712            ) -> bool,
6713        >,
6714        param: *mut ::std::os::raw::c_void,
6715    );
6716#[doc = " Enumerates all sources (regardless of type)"]
6717    pub fn obs_enum_all_sources(
6718        enum_proc: ::std::option::Option<
6719            unsafe extern "C" fn(
6720                arg1: *mut ::std::os::raw::c_void,
6721                arg2: *mut obs_source_t,
6722            ) -> bool,
6723        >,
6724        param: *mut ::std::os::raw::c_void,
6725    );
6726#[doc = " Enumerates outputs"]
6727    pub fn obs_enum_outputs(
6728        enum_proc: ::std::option::Option<
6729            unsafe extern "C" fn(
6730                arg1: *mut ::std::os::raw::c_void,
6731                arg2: *mut obs_output_t,
6732            ) -> bool,
6733        >,
6734        param: *mut ::std::os::raw::c_void,
6735    );
6736#[doc = " Enumerates encoders"]
6737    pub fn obs_enum_encoders(
6738        enum_proc: ::std::option::Option<
6739            unsafe extern "C" fn(
6740                arg1: *mut ::std::os::raw::c_void,
6741                arg2: *mut obs_encoder_t,
6742            ) -> bool,
6743        >,
6744        param: *mut ::std::os::raw::c_void,
6745    );
6746#[doc = " Enumerates encoders"]
6747    pub fn obs_enum_services(
6748        enum_proc: ::std::option::Option<
6749            unsafe extern "C" fn(
6750                arg1: *mut ::std::os::raw::c_void,
6751                arg2: *mut obs_service_t,
6752            ) -> bool,
6753        >,
6754        param: *mut ::std::os::raw::c_void,
6755    );
6756#[doc = " Enumerates canvases"]
6757    pub fn obs_enum_canvases(
6758        enum_proc: ::std::option::Option<
6759            unsafe extern "C" fn(
6760                arg1: *mut ::std::os::raw::c_void,
6761                arg2: *mut obs_canvas_t,
6762            ) -> bool,
6763        >,
6764        param: *mut ::std::os::raw::c_void,
6765    );
6766#[doc = " Gets a source by its name.\n\n   Increments the source reference counter, use obs_source_release to\n release it when complete."]
6767    pub fn obs_get_source_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6768#[doc = " Gets a source by its UUID.\n\n   Increments the source reference counter, use obs_source_release to\n release it when complete."]
6769    pub fn obs_get_source_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6770#[doc = " Get a transition source by its name."]
6771    pub fn obs_get_transition_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6772#[doc = " Get a transition source by its UUID."]
6773    pub fn obs_get_transition_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6774#[doc = " Gets an output by its name."]
6775    pub fn obs_get_output_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_output_t;
6776#[doc = " Gets an encoder by its name."]
6777    pub fn obs_get_encoder_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_encoder_t;
6778#[doc = " Gets an service by its name."]
6779    pub fn obs_get_service_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_service_t;
6780#[doc = " Get a canvas by its name."]
6781    pub fn obs_get_canvas_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6782#[doc = " Get a canvas by its UUID."]
6783    pub fn obs_get_canvas_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6784#[doc = " Returns a commonly used base effect"]
6785    pub fn obs_get_base_effect(effect: obs_base_effect) -> *mut gs_effect_t;
6786#[doc = " Returns the primary obs signal handler"]
6787    pub fn obs_get_signal_handler() -> *mut signal_handler_t;
6788#[doc = " Returns the primary obs procedure handler"]
6789    pub fn obs_get_proc_handler() -> *mut proc_handler_t;
6790#[doc = " Renders the last main output texture"]
6791    pub fn obs_render_main_texture();
6792#[doc = " Renders the last main output texture ignoring background color"]
6793    pub fn obs_render_main_texture_src_color_only();
6794#[doc = " Renders the last canvas output texture"]
6795    pub fn obs_render_canvas_texture(canvas: *mut obs_canvas_t);
6796#[doc = " Renders the last main output texture ignoring background color"]
6797    pub fn obs_render_canvas_texture_src_color_only(canvas: *mut obs_canvas_t);
6798#[doc = " Returns the last main output texture.  This can return NULL if the texture\n is unavailable."]
6799    pub fn obs_get_main_texture() -> *mut gs_texture_t;
6800#[doc = " Saves a source to settings data"]
6801    pub fn obs_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6802#[doc = " Loads a source from settings data"]
6803    pub fn obs_load_source(data: *mut obs_data_t) -> *mut obs_source_t;
6804#[doc = " Loads a private source from settings data"]
6805    pub fn obs_load_private_source(data: *mut obs_data_t) -> *mut obs_source_t;
6806#[doc = " Send a save signal to sources"]
6807    pub fn obs_source_save(source: *mut obs_source_t);
6808#[doc = " Send a load signal to sources (soft deprecated; does not load filters)"]
6809    pub fn obs_source_load(source: *mut obs_source_t);
6810#[doc = " Send a load signal to sources"]
6811    pub fn obs_source_load2(source: *mut obs_source_t);
6812#[doc = " Loads sources from a data array"]
6813    pub fn obs_load_sources(
6814        array: *mut obs_data_array_t,
6815        cb: obs_load_source_cb,
6816        private_data: *mut ::std::os::raw::c_void,
6817    );
6818#[doc = " Saves sources to a data array"]
6819    pub fn obs_save_sources() -> *mut obs_data_array_t;
6820    pub fn obs_save_sources_filtered(
6821        cb: obs_save_source_filter_cb,
6822        data: *mut ::std::os::raw::c_void,
6823    ) -> *mut obs_data_array_t;
6824#[doc = " Reset source UUIDs. NOTE: this function is only to be used by the UI and\n  will be removed in a future version!"]
6825    pub fn obs_reset_source_uuids();
6826    pub fn obs_obj_get_type(obj: *mut ::std::os::raw::c_void) -> obs_obj_type;
6827    pub fn obs_obj_get_id(obj: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char;
6828    pub fn obs_obj_invalid(obj: *mut ::std::os::raw::c_void) -> bool;
6829    pub fn obs_obj_get_data(obj: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void;
6830    pub fn obs_obj_is_private(obj: *mut ::std::os::raw::c_void) -> bool;
6831    pub fn obs_audio_monitoring_available() -> bool;
6832    pub fn obs_reset_audio_monitoring();
6833    pub fn obs_enum_audio_monitoring_devices(
6834        cb: obs_enum_audio_device_cb,
6835        data: *mut ::std::os::raw::c_void,
6836    );
6837    pub fn obs_set_audio_monitoring_device(
6838        name: *const ::std::os::raw::c_char,
6839        id: *const ::std::os::raw::c_char,
6840    ) -> bool;
6841    pub fn obs_get_audio_monitoring_device(
6842        name: *mut *const ::std::os::raw::c_char,
6843        id: *mut *const ::std::os::raw::c_char,
6844    );
6845    pub fn obs_add_tick_callback(
6846        tick: ::std::option::Option<
6847            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, seconds: f32),
6848        >,
6849        param: *mut ::std::os::raw::c_void,
6850    );
6851    pub fn obs_remove_tick_callback(
6852        tick: ::std::option::Option<
6853            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, seconds: f32),
6854        >,
6855        param: *mut ::std::os::raw::c_void,
6856    );
6857    pub fn obs_add_main_render_callback(
6858        draw: ::std::option::Option<
6859            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6860        >,
6861        param: *mut ::std::os::raw::c_void,
6862    );
6863    pub fn obs_remove_main_render_callback(
6864        draw: ::std::option::Option<
6865            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6866        >,
6867        param: *mut ::std::os::raw::c_void,
6868    );
6869    pub fn obs_add_main_rendered_callback(
6870        rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6871        param: *mut ::std::os::raw::c_void,
6872    );
6873    pub fn obs_remove_main_rendered_callback(
6874        rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6875        param: *mut ::std::os::raw::c_void,
6876    );
6877    pub fn obs_add_raw_video_callback(
6878        conversion: *const video_scale_info,
6879        callback: ::std::option::Option<
6880            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6881        >,
6882        param: *mut ::std::os::raw::c_void,
6883    );
6884    pub fn obs_add_raw_video_callback2(
6885        conversion: *const video_scale_info,
6886        frame_rate_divisor: u32,
6887        callback: ::std::option::Option<
6888            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6889        >,
6890        param: *mut ::std::os::raw::c_void,
6891    );
6892    pub fn obs_remove_raw_video_callback(
6893        callback: ::std::option::Option<
6894            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6895        >,
6896        param: *mut ::std::os::raw::c_void,
6897    );
6898    pub fn obs_add_raw_audio_callback(
6899        mix_idx: usize,
6900        conversion: *const audio_convert_info,
6901        callback: audio_output_callback_t,
6902        param: *mut ::std::os::raw::c_void,
6903    );
6904    pub fn obs_remove_raw_audio_callback(
6905        mix_idx: usize,
6906        callback: audio_output_callback_t,
6907        param: *mut ::std::os::raw::c_void,
6908    );
6909    pub fn obs_get_video_frame_time() -> u64;
6910    pub fn obs_get_active_fps() -> f64;
6911    pub fn obs_get_average_frame_time_ns() -> u64;
6912    pub fn obs_get_frame_interval_ns() -> u64;
6913    pub fn obs_get_total_frames() -> u32;
6914    pub fn obs_get_lagged_frames() -> u32;
6915    pub fn obs_nv12_tex_active() -> bool;
6916    pub fn obs_p010_tex_active() -> bool;
6917    pub fn obs_apply_private_data(settings: *mut obs_data_t);
6918    pub fn obs_set_private_data(settings: *mut obs_data_t);
6919    pub fn obs_get_private_data() -> *mut obs_data_t;
6920    pub fn obs_queue_task(
6921        type_: obs_task_type,
6922        task: obs_task_t,
6923        param: *mut ::std::os::raw::c_void,
6924        wait: bool,
6925    );
6926    pub fn obs_in_task_thread(type_: obs_task_type) -> bool;
6927    pub fn obs_wait_for_destroy_queue() -> bool;
6928    pub fn obs_set_ui_task_handler(handler: obs_task_handler_t);
6929    pub fn obs_object_get_ref(object: *mut obs_object_t) -> *mut obs_object_t;
6930    pub fn obs_object_release(object: *mut obs_object_t);
6931    pub fn obs_weak_object_addref(weak: *mut obs_weak_object_t);
6932    pub fn obs_weak_object_release(weak: *mut obs_weak_object_t);
6933    pub fn obs_object_get_weak_object(object: *mut obs_object_t) -> *mut obs_weak_object_t;
6934    pub fn obs_weak_object_get_object(weak: *mut obs_weak_object_t) -> *mut obs_object_t;
6935    pub fn obs_weak_object_expired(weak: *mut obs_weak_object_t) -> bool;
6936    pub fn obs_weak_object_references_object(
6937        weak: *mut obs_weak_object_t,
6938        object: *mut obs_object_t,
6939    ) -> bool;
6940#[doc = " Creates a view context.\n\n   A view can be used for things like separate previews, or drawing\n sources separately."]
6941    pub fn obs_view_create() -> *mut obs_view_t;
6942#[doc = " Destroys this view context"]
6943    pub fn obs_view_destroy(view: *mut obs_view_t);
6944#[doc = " Sets the source to be used for this view context."]
6945    pub fn obs_view_set_source(view: *mut obs_view_t, channel: u32, source: *mut obs_source_t);
6946#[doc = " Gets the source currently in use for this view context"]
6947    pub fn obs_view_get_source(view: *mut obs_view_t, channel: u32) -> *mut obs_source_t;
6948#[doc = " Renders the sources of this view context"]
6949    pub fn obs_view_render(view: *mut obs_view_t);
6950#[doc = " Adds a view to the main render loop, with current obs_get_video_info state"]
6951    pub fn obs_view_add(view: *mut obs_view_t) -> *mut video_t;
6952#[doc = " Adds a view to the main render loop, with custom video settings"]
6953    pub fn obs_view_add2(view: *mut obs_view_t, ovi: *mut obs_video_info) -> *mut video_t;
6954#[doc = " Removes a view from the main render loop"]
6955    pub fn obs_view_remove(view: *mut obs_view_t);
6956#[doc = " Enumerate the video info of all mixes using the specified view context"]
6957    pub fn obs_view_enum_video_info(
6958        view: *mut obs_view_t,
6959        enum_proc: ::std::option::Option<
6960            unsafe extern "C" fn(
6961                arg1: *mut ::std::os::raw::c_void,
6962                arg2: *mut obs_video_info,
6963            ) -> bool,
6964        >,
6965        param: *mut ::std::os::raw::c_void,
6966    );
6967#[doc = " Adds a new window display linked to the main render pipeline.  This creates\n a new swap chain which updates every frame.\n\n @param  graphics_data  The swap chain initialization data.\n @return                The new display context, or NULL if failed."]
6968    pub fn obs_display_create(
6969        graphics_data: *const gs_init_data,
6970        backround_color: u32,
6971    ) -> *mut obs_display_t;
6972#[doc = " Destroys a display context"]
6973    pub fn obs_display_destroy(display: *mut obs_display_t);
6974#[doc = " Changes the size of this display"]
6975    pub fn obs_display_resize(display: *mut obs_display_t, cx: u32, cy: u32);
6976#[doc = " Updates the color space of this display"]
6977    pub fn obs_display_update_color_space(display: *mut obs_display_t);
6978#[doc = " Adds a draw callback for this display context\n\n @param  display  The display context.\n @param  draw     The draw callback which is called each time a frame\n                  updates.\n @param  param    The user data to be associated with this draw callback."]
6979    pub fn obs_display_add_draw_callback(
6980        display: *mut obs_display_t,
6981        draw: ::std::option::Option<
6982            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6983        >,
6984        param: *mut ::std::os::raw::c_void,
6985    );
6986#[doc = " Removes a draw callback for this display context"]
6987    pub fn obs_display_remove_draw_callback(
6988        display: *mut obs_display_t,
6989        draw: ::std::option::Option<
6990            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6991        >,
6992        param: *mut ::std::os::raw::c_void,
6993    );
6994    pub fn obs_display_set_enabled(display: *mut obs_display_t, enable: bool);
6995    pub fn obs_display_enabled(display: *mut obs_display_t) -> bool;
6996    pub fn obs_display_set_background_color(display: *mut obs_display_t, color: u32);
6997    pub fn obs_display_size(display: *mut obs_display_t, width: *mut u32, height: *mut u32);
6998#[doc = " Returns the translated display name of a source"]
6999    pub fn obs_source_get_display_name(
7000        id: *const ::std::os::raw::c_char,
7001    ) -> *const ::std::os::raw::c_char;
7002#[doc = " Returns a pointer to the module which provides the source"]
7003    pub fn obs_source_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7004#[doc = " Returns the load state of a source's module given the id"]
7005    pub fn obs_source_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7006#[doc = " Creates a source of the specified type with the specified settings.\n\n   The \"source\" context is used for anything related to presenting\n or modifying video/audio.  Use obs_source_release to release it."]
7007    pub fn obs_source_create(
7008        id: *const ::std::os::raw::c_char,
7009        name: *const ::std::os::raw::c_char,
7010        settings: *mut obs_data_t,
7011        hotkey_data: *mut obs_data_t,
7012    ) -> *mut obs_source_t;
7013    pub fn obs_source_create_private(
7014        id: *const ::std::os::raw::c_char,
7015        name: *const ::std::os::raw::c_char,
7016        settings: *mut obs_data_t,
7017    ) -> *mut obs_source_t;
7018    pub fn obs_source_duplicate(
7019        source: *mut obs_source_t,
7020        desired_name: *const ::std::os::raw::c_char,
7021        create_private: bool,
7022    ) -> *mut obs_source_t;
7023#[doc = " Adds/releases a reference to a source.  When the last reference is\n released, the source is destroyed."]
7024    pub fn obs_source_release(source: *mut obs_source_t);
7025    pub fn obs_weak_source_addref(weak: *mut obs_weak_source_t);
7026    pub fn obs_weak_source_release(weak: *mut obs_weak_source_t);
7027    pub fn obs_source_get_ref(source: *mut obs_source_t) -> *mut obs_source_t;
7028    pub fn obs_source_get_weak_source(source: *mut obs_source_t) -> *mut obs_weak_source_t;
7029    pub fn obs_weak_source_get_source(weak: *mut obs_weak_source_t) -> *mut obs_source_t;
7030    pub fn obs_weak_source_expired(weak: *mut obs_weak_source_t) -> bool;
7031    pub fn obs_weak_source_references_source(
7032        weak: *mut obs_weak_source_t,
7033        source: *mut obs_source_t,
7034    ) -> bool;
7035#[doc = " Notifies all references that the source should be released"]
7036    pub fn obs_source_remove(source: *mut obs_source_t);
7037#[doc = " Returns true if the source should be released"]
7038    pub fn obs_source_removed(source: *const obs_source_t) -> bool;
7039#[doc = " The 'hidden' flag is not the same as a sceneitem's visibility. It is a\n property the determines if it can be found through searches. **/\n/** Simply sets a 'hidden' flag when the source is still alive but shouldn't be found"]
7040    pub fn obs_source_set_hidden(source: *mut obs_source_t, hidden: bool);
7041#[doc = " Returns the current 'hidden' state on the source"]
7042    pub fn obs_source_is_hidden(source: *mut obs_source_t) -> bool;
7043#[doc = " Returns capability flags of a source"]
7044    pub fn obs_source_get_output_flags(source: *const obs_source_t) -> u32;
7045#[doc = " Returns capability flags of a source type"]
7046    pub fn obs_get_source_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7047#[doc = " Gets the default settings for a source type"]
7048    pub fn obs_get_source_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7049#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
7050    pub fn obs_get_source_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7051    pub fn obs_source_get_missing_files(source: *const obs_source_t) -> *mut obs_missing_files_t;
7052    pub fn obs_source_replace_missing_file(
7053        cb: obs_missing_file_cb,
7054        source: *mut obs_source_t,
7055        new_path: *const ::std::os::raw::c_char,
7056        data: *mut ::std::os::raw::c_void,
7057    );
7058#[doc = " Returns whether the source has custom properties or not"]
7059    pub fn obs_is_source_configurable(id: *const ::std::os::raw::c_char) -> bool;
7060    pub fn obs_source_configurable(source: *const obs_source_t) -> bool;
7061#[doc = " Returns the properties list for a specific existing source.  Free with\n obs_properties_destroy"]
7062    pub fn obs_source_properties(source: *const obs_source_t) -> *mut obs_properties_t;
7063#[doc = " Updates settings for this source"]
7064    pub fn obs_source_update(source: *mut obs_source_t, settings: *mut obs_data_t);
7065    pub fn obs_source_reset_settings(source: *mut obs_source_t, settings: *mut obs_data_t);
7066#[doc = " Renders a video source."]
7067    pub fn obs_source_video_render(source: *mut obs_source_t);
7068#[doc = " Gets the width of a source (if it has video)"]
7069    pub fn obs_source_get_width(source: *mut obs_source_t) -> u32;
7070#[doc = " Gets the height of a source (if it has video)"]
7071    pub fn obs_source_get_height(source: *mut obs_source_t) -> u32;
7072#[doc = " Gets the color space of a source (if it has video)"]
7073    pub fn obs_source_get_color_space(
7074        source: *mut obs_source_t,
7075        count: usize,
7076        preferred_spaces: *const gs_color_space,
7077    ) -> gs_color_space;
7078#[doc = " Hints whether or not the source will blend texels"]
7079    pub fn obs_source_get_texcoords_centered(source: *mut obs_source_t) -> bool;
7080#[doc = " If the source is a filter, returns the parent source of the filter.  Only\n guaranteed to be valid inside of the video_render, filter_audio,\n filter_video, and filter_remove callbacks."]
7081    pub fn obs_filter_get_parent(filter: *const obs_source_t) -> *mut obs_source_t;
7082#[doc = " If the source is a filter, returns the target source of the filter.  Only\n guaranteed to be valid inside of the video_render, filter_audio,\n filter_video, and filter_remove callbacks."]
7083    pub fn obs_filter_get_target(filter: *const obs_source_t) -> *mut obs_source_t;
7084#[doc = " Used to directly render a non-async source without any filter processing"]
7085    pub fn obs_source_default_render(source: *mut obs_source_t);
7086#[doc = " Adds a filter to the source (which is used whenever the source is used)"]
7087    pub fn obs_source_filter_add(source: *mut obs_source_t, filter: *mut obs_source_t);
7088#[doc = " Removes a filter from the source"]
7089    pub fn obs_source_filter_remove(source: *mut obs_source_t, filter: *mut obs_source_t);
7090#[doc = " Modifies the order of a specific filter"]
7091    pub fn obs_source_filter_set_order(
7092        source: *mut obs_source_t,
7093        filter: *mut obs_source_t,
7094        movement: obs_order_movement,
7095    );
7096#[doc = " Gets filter index"]
7097    pub fn obs_source_filter_get_index(
7098        source: *mut obs_source_t,
7099        filter: *mut obs_source_t,
7100    ) -> ::std::os::raw::c_int;
7101#[doc = " Sets filter index"]
7102    pub fn obs_source_filter_set_index(
7103        source: *mut obs_source_t,
7104        filter: *mut obs_source_t,
7105        index: usize,
7106    );
7107#[doc = " Gets the settings string for a source"]
7108    pub fn obs_source_get_settings(source: *const obs_source_t) -> *mut obs_data_t;
7109#[doc = " Gets the name of a source"]
7110    pub fn obs_source_get_name(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7111#[doc = " Sets the name of a source"]
7112    pub fn obs_source_set_name(source: *mut obs_source_t, name: *const ::std::os::raw::c_char);
7113#[doc = " Gets the UUID of a source"]
7114    pub fn obs_source_get_uuid(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7115#[doc = " Gets the source type"]
7116    pub fn obs_source_get_type(source: *const obs_source_t) -> obs_source_type;
7117#[doc = " Gets the source identifier"]
7118    pub fn obs_source_get_id(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7119    pub fn obs_source_get_unversioned_id(
7120        source: *const obs_source_t,
7121    ) -> *const ::std::os::raw::c_char;
7122#[doc = " Returns the signal handler for a source"]
7123    pub fn obs_source_get_signal_handler(source: *const obs_source_t) -> *mut signal_handler_t;
7124#[doc = " Returns the procedure handler for a source"]
7125    pub fn obs_source_get_proc_handler(source: *const obs_source_t) -> *mut proc_handler_t;
7126#[doc = " Sets the user volume for a source that has audio output"]
7127    pub fn obs_source_set_volume(source: *mut obs_source_t, volume: f32);
7128#[doc = " Gets the user volume for a source that has audio output"]
7129    pub fn obs_source_get_volume(source: *const obs_source_t) -> f32;
7130    pub fn obs_source_get_speaker_layout(source: *mut obs_source_t) -> speaker_layout;
7131#[doc = " Sets the balance value for a stereo audio source"]
7132    pub fn obs_source_set_balance_value(source: *mut obs_source_t, balance: f32);
7133#[doc = " Gets the balance value for a stereo audio source"]
7134    pub fn obs_source_get_balance_value(source: *const obs_source_t) -> f32;
7135#[doc = " Sets the audio sync offset (in nanoseconds) for a source"]
7136    pub fn obs_source_set_sync_offset(source: *mut obs_source_t, offset: i64);
7137#[doc = " Gets the audio sync offset (in nanoseconds) for a source"]
7138    pub fn obs_source_get_sync_offset(source: *const obs_source_t) -> i64;
7139#[doc = " Enumerates active child sources used by this source"]
7140    pub fn obs_source_enum_active_sources(
7141        source: *mut obs_source_t,
7142        enum_callback: obs_source_enum_proc_t,
7143        param: *mut ::std::os::raw::c_void,
7144    );
7145#[doc = " Enumerates the entire active child source tree used by this source"]
7146    pub fn obs_source_enum_active_tree(
7147        source: *mut obs_source_t,
7148        enum_callback: obs_source_enum_proc_t,
7149        param: *mut ::std::os::raw::c_void,
7150    );
7151    pub fn obs_source_enum_full_tree(
7152        source: *mut obs_source_t,
7153        enum_callback: obs_source_enum_proc_t,
7154        param: *mut ::std::os::raw::c_void,
7155    );
7156#[doc = " Returns true if active, false if not"]
7157    pub fn obs_source_active(source: *const obs_source_t) -> bool;
7158#[doc = " Returns true if currently displayed somewhere (active or not), false if not"]
7159    pub fn obs_source_showing(source: *const obs_source_t) -> bool;
7160#[doc = " Sets source flags.  Note that these are different from the main output\n flags.  These are generally things that can be set by the source or user,\n while the output flags are more used to determine capabilities of a source."]
7161    pub fn obs_source_set_flags(source: *mut obs_source_t, flags: u32);
7162#[doc = " Gets source flags."]
7163    pub fn obs_source_get_flags(source: *const obs_source_t) -> u32;
7164#[doc = " Sets audio mixer flags.  These flags are used to specify which mixers\n the source's audio should be applied to."]
7165    pub fn obs_source_set_audio_mixers(source: *mut obs_source_t, mixers: u32);
7166#[doc = " Gets audio mixer flags"]
7167    pub fn obs_source_get_audio_mixers(source: *const obs_source_t) -> u32;
7168#[doc = " Increments the 'showing' reference counter to indicate that the source is\n being shown somewhere.  If the reference counter was 0, will call the 'show'\n callback."]
7169    pub fn obs_source_inc_showing(source: *mut obs_source_t);
7170#[doc = " Increments the 'active' reference counter to indicate that the source is\n fully active.  If the reference counter was 0, will call the 'activate'\n callback.\n\n Unlike obs_source_inc_showing, this will cause children of this source to be\n considered showing as well (currently used by transition previews to make\n the stinger transition show correctly).  obs_source_inc_showing should\n generally be used instead."]
7171    pub fn obs_source_inc_active(source: *mut obs_source_t);
7172#[doc = " Decrements the 'showing' reference counter to indicate that the source is\n no longer being shown somewhere.  If the reference counter is set to 0,\n will call the 'hide' callback"]
7173    pub fn obs_source_dec_showing(source: *mut obs_source_t);
7174#[doc = " Decrements the 'active' reference counter to indicate that the source is no\n longer fully active.  If the reference counter is set to 0, will call the\n 'deactivate' callback\n\n Unlike obs_source_dec_showing, this will cause children of this source to be\n considered not showing as well.  obs_source_dec_showing should generally be\n used instead."]
7175    pub fn obs_source_dec_active(source: *mut obs_source_t);
7176#[doc = " Enumerates filters assigned to the source"]
7177    pub fn obs_source_enum_filters(
7178        source: *mut obs_source_t,
7179        callback: obs_source_enum_proc_t,
7180        param: *mut ::std::os::raw::c_void,
7181    );
7182#[doc = " Gets a filter of a source by its display name."]
7183    pub fn obs_source_get_filter_by_name(
7184        source: *mut obs_source_t,
7185        name: *const ::std::os::raw::c_char,
7186    ) -> *mut obs_source_t;
7187#[doc = " Gets the number of filters the source has."]
7188    pub fn obs_source_filter_count(source: *const obs_source_t) -> usize;
7189    pub fn obs_source_copy_filters(dst: *mut obs_source_t, src: *mut obs_source_t);
7190    pub fn obs_source_copy_single_filter(dst: *mut obs_source_t, filter: *mut obs_source_t);
7191    pub fn obs_source_enabled(source: *const obs_source_t) -> bool;
7192    pub fn obs_source_set_enabled(source: *mut obs_source_t, enabled: bool);
7193    pub fn obs_source_muted(source: *const obs_source_t) -> bool;
7194    pub fn obs_source_set_muted(source: *mut obs_source_t, muted: bool);
7195    pub fn obs_source_push_to_mute_enabled(source: *mut obs_source_t) -> bool;
7196    pub fn obs_source_enable_push_to_mute(source: *mut obs_source_t, enabled: bool);
7197    pub fn obs_source_get_push_to_mute_delay(source: *mut obs_source_t) -> u64;
7198    pub fn obs_source_set_push_to_mute_delay(source: *mut obs_source_t, delay: u64);
7199    pub fn obs_source_push_to_talk_enabled(source: *mut obs_source_t) -> bool;
7200    pub fn obs_source_enable_push_to_talk(source: *mut obs_source_t, enabled: bool);
7201    pub fn obs_source_get_push_to_talk_delay(source: *mut obs_source_t) -> u64;
7202    pub fn obs_source_set_push_to_talk_delay(source: *mut obs_source_t, delay: u64);
7203    pub fn obs_source_add_audio_pause_callback(
7204        source: *mut obs_source_t,
7205        callback: signal_callback_t,
7206        param: *mut ::std::os::raw::c_void,
7207    );
7208    pub fn obs_source_remove_audio_pause_callback(
7209        source: *mut obs_source_t,
7210        callback: signal_callback_t,
7211        param: *mut ::std::os::raw::c_void,
7212    );
7213    pub fn obs_source_add_audio_capture_callback(
7214        source: *mut obs_source_t,
7215        callback: obs_source_audio_capture_t,
7216        param: *mut ::std::os::raw::c_void,
7217    );
7218    pub fn obs_source_remove_audio_capture_callback(
7219        source: *mut obs_source_t,
7220        callback: obs_source_audio_capture_t,
7221        param: *mut ::std::os::raw::c_void,
7222    );
7223    pub fn obs_source_add_caption_callback(
7224        source: *mut obs_source_t,
7225        callback: obs_source_caption_t,
7226        param: *mut ::std::os::raw::c_void,
7227    );
7228    pub fn obs_source_remove_caption_callback(
7229        source: *mut obs_source_t,
7230        callback: obs_source_caption_t,
7231        param: *mut ::std::os::raw::c_void,
7232    );
7233    pub fn obs_source_set_deinterlace_mode(source: *mut obs_source_t, mode: obs_deinterlace_mode);
7234    pub fn obs_source_get_deinterlace_mode(source: *const obs_source_t) -> obs_deinterlace_mode;
7235    pub fn obs_source_set_deinterlace_field_order(
7236        source: *mut obs_source_t,
7237        field_order: obs_deinterlace_field_order,
7238    );
7239    pub fn obs_source_get_deinterlace_field_order(
7240        source: *const obs_source_t,
7241    ) -> obs_deinterlace_field_order;
7242    pub fn obs_source_set_monitoring_type(source: *mut obs_source_t, type_: obs_monitoring_type);
7243    pub fn obs_source_get_monitoring_type(source: *const obs_source_t) -> obs_monitoring_type;
7244#[doc = " Gets private front-end settings data.  This data is saved/loaded\n automatically.  Returns an incremented reference."]
7245    pub fn obs_source_get_private_settings(item: *mut obs_source_t) -> *mut obs_data_t;
7246    pub fn obs_source_backup_filters(source: *mut obs_source_t) -> *mut obs_data_array_t;
7247    pub fn obs_source_restore_filters(source: *mut obs_source_t, array: *mut obs_data_array_t);
7248    pub fn obs_source_get_type_data(source: *mut obs_source_t) -> *mut ::std::os::raw::c_void;
7249#[doc = " Helper function to set the color matrix information when drawing the source.\n\n @param  color_matrix     The color matrix.  Assigns to the 'color_matrix'\n                          effect variable.\n @param  color_range_min  The minimum color range.  Assigns to the\n                          'color_range_min' effect variable.  If NULL,\n                          {0.0f, 0.0f, 0.0f} is used.\n @param  color_range_max  The maximum color range.  Assigns to the\n                          'color_range_max' effect variable.  If NULL,\n                          {1.0f, 1.0f, 1.0f} is used."]
7250    pub fn obs_source_draw_set_color_matrix(
7251        color_matrix: *const matrix4,
7252        color_range_min: *const vec3,
7253        color_range_max: *const vec3,
7254    );
7255#[doc = " Helper function to draw sprites for a source (synchronous video).\n\n @param  image   The sprite texture to draw.  Assigns to the 'image' variable\n                 of the current effect.\n @param  x       X position of the sprite.\n @param  y       Y position of the sprite.\n @param  cx      Width of the sprite.  If 0, uses the texture width.\n @param  cy      Height of the sprite.  If 0, uses the texture height.\n @param  flip    Specifies whether to flip the image vertically."]
7256    pub fn obs_source_draw(
7257        image: *mut gs_texture_t,
7258        x: ::std::os::raw::c_int,
7259        y: ::std::os::raw::c_int,
7260        cx: u32,
7261        cy: u32,
7262        flip: bool,
7263    );
7264#[doc = " Outputs asynchronous video data.  Set to NULL to deactivate the texture\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function!  Use obs_source_output_video2 instead if partial range support is\n desired for non-YUV video formats."]
7265    pub fn obs_source_output_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7266    pub fn obs_source_output_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7267    pub fn obs_source_set_async_rotation(
7268        source: *mut obs_source_t,
7269        rotation: ::std::os::raw::c_long,
7270    );
7271    pub fn obs_source_output_cea708(source: *mut obs_source_t, captions: *const obs_source_cea_708);
7272#[doc = " Preloads asynchronous video data to allow instantaneous playback\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function!  Use obs_source_preload_video2 instead if partial range support is\n desired for non-YUV video formats."]
7273    pub fn obs_source_preload_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7274    pub fn obs_source_preload_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7275#[doc = " Shows any preloaded video data"]
7276    pub fn obs_source_show_preloaded_video(source: *mut obs_source_t);
7277#[doc = " Sets current async video frame immediately\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function!  Use obs_source_preload_video2 instead if partial range support is\n desired for non-YUV video formats."]
7278    pub fn obs_source_set_video_frame(source: *mut obs_source_t, frame: *const obs_source_frame);
7279    pub fn obs_source_set_video_frame2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7280#[doc = " Outputs audio data (always asynchronous)"]
7281    pub fn obs_source_output_audio(source: *mut obs_source_t, audio: *const obs_source_audio);
7282#[doc = " Signal an update to any currently used properties via 'update_properties'"]
7283    pub fn obs_source_update_properties(source: *mut obs_source_t);
7284#[doc = " Gets the current async video frame"]
7285    pub fn obs_source_get_frame(source: *mut obs_source_t) -> *mut obs_source_frame;
7286#[doc = " Releases the current async video frame"]
7287    pub fn obs_source_release_frame(source: *mut obs_source_t, frame: *mut obs_source_frame);
7288#[doc = " Default RGB filter handler for generic effect filters.  Processes the\n filter chain and renders them to texture if needed, then the filter is\n drawn with\n\n After calling this, set your parameters for the effect, then call\n obs_source_process_filter_end to draw the filter.\n\n Returns true if filtering should continue, false if the filter is bypassed\n for whatever reason."]
7289    pub fn obs_source_process_filter_begin(
7290        filter: *mut obs_source_t,
7291        format: gs_color_format,
7292        allow_direct: obs_allow_direct_render,
7293    ) -> bool;
7294    pub fn obs_source_process_filter_begin_with_color_space(
7295        filter: *mut obs_source_t,
7296        format: gs_color_format,
7297        space: gs_color_space,
7298        allow_direct: obs_allow_direct_render,
7299    ) -> bool;
7300#[doc = " Draws the filter.\n\n Before calling this function, first call obs_source_process_filter_begin and\n then set the effect parameters, and then call this function to finalize the\n filter."]
7301    pub fn obs_source_process_filter_end(
7302        filter: *mut obs_source_t,
7303        effect: *mut gs_effect_t,
7304        width: u32,
7305        height: u32,
7306    );
7307#[doc = " Draws the filter with a specific technique.\n\n Before calling this function, first call obs_source_process_filter_begin and\n then set the effect parameters, and then call this function to finalize the\n filter."]
7308    pub fn obs_source_process_filter_tech_end(
7309        filter: *mut obs_source_t,
7310        effect: *mut gs_effect_t,
7311        width: u32,
7312        height: u32,
7313        tech_name: *const ::std::os::raw::c_char,
7314    );
7315#[doc = " Skips the filter if the filter is invalid and cannot be rendered"]
7316    pub fn obs_source_skip_video_filter(filter: *mut obs_source_t);
7317#[doc = " Adds an active child source.  Must be called by parent sources on child\n sources when the child is added and active.  This ensures that the source is\n properly activated if the parent is active.\n\n @returns true if source can be added, false if it causes recursion"]
7318    pub fn obs_source_add_active_child(parent: *mut obs_source_t, child: *mut obs_source_t)
7319    -> bool;
7320#[doc = " Removes an active child source.  Must be called by parent sources on child\n sources when the child is removed or inactive.  This ensures that the source\n is properly deactivated if the parent is no longer active."]
7321    pub fn obs_source_remove_active_child(parent: *mut obs_source_t, child: *mut obs_source_t);
7322#[doc = " Sends a mouse down/up event to a source"]
7323    pub fn obs_source_send_mouse_click(
7324        source: *mut obs_source_t,
7325        event: *const obs_mouse_event,
7326        type_: i32,
7327        mouse_up: bool,
7328        click_count: u32,
7329    );
7330#[doc = " Sends a mouse move event to a source."]
7331    pub fn obs_source_send_mouse_move(
7332        source: *mut obs_source_t,
7333        event: *const obs_mouse_event,
7334        mouse_leave: bool,
7335    );
7336#[doc = " Sends a mouse wheel event to a source"]
7337    pub fn obs_source_send_mouse_wheel(
7338        source: *mut obs_source_t,
7339        event: *const obs_mouse_event,
7340        x_delta: ::std::os::raw::c_int,
7341        y_delta: ::std::os::raw::c_int,
7342    );
7343#[doc = " Sends a got-focus or lost-focus event to a source"]
7344    pub fn obs_source_send_focus(source: *mut obs_source_t, focus: bool);
7345#[doc = " Sends a key up/down event to a source"]
7346    pub fn obs_source_send_key_click(
7347        source: *mut obs_source_t,
7348        event: *const obs_key_event,
7349        key_up: bool,
7350    );
7351#[doc = " Sets the default source flags."]
7352    pub fn obs_source_set_default_flags(source: *mut obs_source_t, flags: u32);
7353#[doc = " Gets the base width for a source (not taking in to account filtering)"]
7354    pub fn obs_source_get_base_width(source: *mut obs_source_t) -> u32;
7355#[doc = " Gets the base height for a source (not taking in to account filtering)"]
7356    pub fn obs_source_get_base_height(source: *mut obs_source_t) -> u32;
7357    pub fn obs_source_audio_pending(source: *const obs_source_t) -> bool;
7358    pub fn obs_source_get_audio_timestamp(source: *const obs_source_t) -> u64;
7359    pub fn obs_source_get_audio_mix(source: *const obs_source_t, audio: *mut obs_source_audio_mix);
7360    pub fn obs_source_set_async_unbuffered(source: *mut obs_source_t, unbuffered: bool);
7361    pub fn obs_source_async_unbuffered(source: *const obs_source_t) -> bool;
7362#[doc = " Used to decouple audio from video so that audio doesn't attempt to sync up\n with video.  I.E. Audio acts independently.  Only works when in unbuffered\n mode."]
7363    pub fn obs_source_set_async_decoupled(source: *mut obs_source_t, decouple: bool);
7364    pub fn obs_source_async_decoupled(source: *const obs_source_t) -> bool;
7365    pub fn obs_source_set_audio_active(source: *mut obs_source_t, show: bool);
7366    pub fn obs_source_audio_active(source: *const obs_source_t) -> bool;
7367    pub fn obs_source_get_last_obs_version(source: *const obs_source_t) -> u32;
7368#[doc = " Media controls"]
7369    pub fn obs_source_media_play_pause(source: *mut obs_source_t, pause: bool);
7370    pub fn obs_source_media_restart(source: *mut obs_source_t);
7371    pub fn obs_source_media_stop(source: *mut obs_source_t);
7372    pub fn obs_source_media_next(source: *mut obs_source_t);
7373    pub fn obs_source_media_previous(source: *mut obs_source_t);
7374    pub fn obs_source_media_get_duration(source: *mut obs_source_t) -> i64;
7375    pub fn obs_source_media_get_time(source: *mut obs_source_t) -> i64;
7376    pub fn obs_source_media_set_time(source: *mut obs_source_t, ms: i64);
7377    pub fn obs_source_media_get_state(source: *mut obs_source_t) -> obs_media_state;
7378    pub fn obs_source_media_started(source: *mut obs_source_t);
7379    pub fn obs_source_media_ended(source: *mut obs_source_t);
7380#[doc = " Get canvas this source belongs to (reference incremented)"]
7381    pub fn obs_source_get_canvas(source: *const obs_source_t) -> *mut obs_canvas_t;
7382    pub fn obs_transition_get_source(
7383        transition: *mut obs_source_t,
7384        target: obs_transition_target,
7385    ) -> *mut obs_source_t;
7386    pub fn obs_transition_clear(transition: *mut obs_source_t);
7387    pub fn obs_transition_get_active_source(transition: *mut obs_source_t) -> *mut obs_source_t;
7388    pub fn obs_transition_start(
7389        transition: *mut obs_source_t,
7390        mode: obs_transition_mode,
7391        duration_ms: u32,
7392        dest: *mut obs_source_t,
7393    ) -> bool;
7394    pub fn obs_transition_set(transition: *mut obs_source_t, source: *mut obs_source_t);
7395    pub fn obs_transition_set_manual_time(transition: *mut obs_source_t, t: f32);
7396    pub fn obs_transition_set_manual_torque(transition: *mut obs_source_t, torque: f32, clamp: f32);
7397    pub fn obs_transition_set_scale_type(
7398        transition: *mut obs_source_t,
7399        type_: obs_transition_scale_type,
7400    );
7401    pub fn obs_transition_get_scale_type(
7402        transition: *const obs_source_t,
7403    ) -> obs_transition_scale_type;
7404    pub fn obs_transition_set_alignment(transition: *mut obs_source_t, alignment: u32);
7405    pub fn obs_transition_get_alignment(transition: *const obs_source_t) -> u32;
7406    pub fn obs_transition_set_size(transition: *mut obs_source_t, cx: u32, cy: u32);
7407    pub fn obs_transition_get_size(transition: *const obs_source_t, cx: *mut u32, cy: *mut u32);
7408#[doc = " Enables fixed transitions (videos or specific types of transitions that\n are of fixed duration and linearly interpolated"]
7409    pub fn obs_transition_enable_fixed(
7410        transition: *mut obs_source_t,
7411        enable: bool,
7412        duration_ms: u32,
7413    );
7414    pub fn obs_transition_fixed(transition: *mut obs_source_t) -> bool;
7415    pub fn obs_transition_get_time(transition: *mut obs_source_t) -> f32;
7416    pub fn obs_transition_force_stop(transition: *mut obs_source_t);
7417    pub fn obs_transition_video_render(
7418        transition: *mut obs_source_t,
7419        callback: obs_transition_video_render_callback_t,
7420    );
7421    pub fn obs_transition_video_render2(
7422        transition: *mut obs_source_t,
7423        callback: obs_transition_video_render_callback_t,
7424        placeholder_texture: *mut gs_texture_t,
7425    );
7426    pub fn obs_transition_video_get_color_space(transition: *mut obs_source_t) -> gs_color_space;
7427#[doc = " Directly renders its sub-source instead of to texture.  Returns false if no\n longer transitioning"]
7428    pub fn obs_transition_video_render_direct(
7429        transition: *mut obs_source_t,
7430        target: obs_transition_target,
7431    ) -> bool;
7432    pub fn obs_transition_audio_render(
7433        transition: *mut obs_source_t,
7434        ts_out: *mut u64,
7435        audio: *mut obs_source_audio_mix,
7436        mixers: u32,
7437        channels: usize,
7438        sample_rate: usize,
7439        mix_a_callback: obs_transition_audio_mix_callback_t,
7440        mix_b_callback: obs_transition_audio_mix_callback_t,
7441    ) -> bool;
7442    pub fn obs_transition_swap_begin(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7443    pub fn obs_transition_swap_end(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7444#[doc = " Creates a scene.\n\n   A scene is a source which is a container of other sources with specific\n display orientations.  Scenes can also be used like any other source."]
7445    pub fn obs_scene_create(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7446    pub fn obs_scene_create_private(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7447#[doc = " Duplicates a scene."]
7448    pub fn obs_scene_duplicate(
7449        scene: *mut obs_scene_t,
7450        name: *const ::std::os::raw::c_char,
7451        type_: obs_scene_duplicate_type,
7452    ) -> *mut obs_scene_t;
7453    pub fn obs_scene_release(scene: *mut obs_scene_t);
7454    pub fn obs_scene_get_ref(scene: *mut obs_scene_t) -> *mut obs_scene_t;
7455#[doc = " Gets the scene's source context"]
7456    pub fn obs_scene_get_source(scene: *const obs_scene_t) -> *mut obs_source_t;
7457#[doc = " Gets the scene from its source, or NULL if not a scene"]
7458    pub fn obs_scene_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7459#[doc = " Determines whether a source is within a scene"]
7460    pub fn obs_scene_find_source(
7461        scene: *mut obs_scene_t,
7462        name: *const ::std::os::raw::c_char,
7463    ) -> *mut obs_sceneitem_t;
7464    pub fn obs_scene_find_source_recursive(
7465        scene: *mut obs_scene_t,
7466        name: *const ::std::os::raw::c_char,
7467    ) -> *mut obs_sceneitem_t;
7468    pub fn obs_scene_find_sceneitem_by_id(scene: *mut obs_scene_t, id: i64)
7469    -> *mut obs_sceneitem_t;
7470#[doc = " Enumerates sources within a scene"]
7471    pub fn obs_scene_enum_items(
7472        scene: *mut obs_scene_t,
7473        callback: ::std::option::Option<
7474            unsafe extern "C" fn(
7475                arg1: *mut obs_scene_t,
7476                arg2: *mut obs_sceneitem_t,
7477                arg3: *mut ::std::os::raw::c_void,
7478            ) -> bool,
7479        >,
7480        param: *mut ::std::os::raw::c_void,
7481    );
7482    pub fn obs_scene_reorder_items(
7483        scene: *mut obs_scene_t,
7484        item_order: *const *mut obs_sceneitem_t,
7485        item_order_size: usize,
7486    ) -> bool;
7487    pub fn obs_scene_reorder_items2(
7488        scene: *mut obs_scene_t,
7489        item_order: *mut obs_sceneitem_order_info,
7490        item_order_size: usize,
7491    ) -> bool;
7492    pub fn obs_source_is_scene(source: *const obs_source_t) -> bool;
7493    pub fn obs_source_type_is_scene(id: *const ::std::os::raw::c_char) -> bool;
7494#[doc = " Adds/creates a new scene item for a source"]
7495    pub fn obs_scene_add(
7496        scene: *mut obs_scene_t,
7497        source: *mut obs_source_t,
7498    ) -> *mut obs_sceneitem_t;
7499    pub fn obs_scene_atomic_update(
7500        scene: *mut obs_scene_t,
7501        func: obs_scene_atomic_update_func,
7502        data: *mut ::std::os::raw::c_void,
7503    );
7504    pub fn obs_sceneitem_addref(item: *mut obs_sceneitem_t);
7505    pub fn obs_sceneitem_release(item: *mut obs_sceneitem_t);
7506#[doc = " Removes a scene item."]
7507    pub fn obs_sceneitem_remove(item: *mut obs_sceneitem_t);
7508#[doc = " Adds a scene item."]
7509    pub fn obs_sceneitems_add(scene: *mut obs_scene_t, data: *mut obs_data_array_t);
7510#[doc = " Saves Sceneitem into an array, arr"]
7511    pub fn obs_sceneitem_save(item: *mut obs_sceneitem_t, arr: *mut obs_data_array_t);
7512#[doc = " Set the ID of a sceneitem"]
7513    pub fn obs_sceneitem_set_id(sceneitem: *mut obs_sceneitem_t, id: i64);
7514#[doc = " Save all the transform states for a current scene's sceneitems"]
7515    pub fn obs_scene_save_transform_states(
7516        scene: *mut obs_scene_t,
7517        all_items: bool,
7518    ) -> *mut obs_data_t;
7519#[doc = " Load all the transform states of sceneitems in that scene"]
7520    pub fn obs_scene_load_transform_states(state: *const ::std::os::raw::c_char);
7521#[doc = "  Gets a sceneitem's order in its scene"]
7522    pub fn obs_sceneitem_get_order_position(item: *mut obs_sceneitem_t) -> ::std::os::raw::c_int;
7523#[doc = " Gets the scene parent associated with the scene item."]
7524    pub fn obs_sceneitem_get_scene(item: *const obs_sceneitem_t) -> *mut obs_scene_t;
7525#[doc = " Gets the source of a scene item."]
7526    pub fn obs_sceneitem_get_source(item: *const obs_sceneitem_t) -> *mut obs_source_t;
7527    pub fn obs_sceneitem_select(item: *mut obs_sceneitem_t, select: bool);
7528    pub fn obs_sceneitem_selected(item: *const obs_sceneitem_t) -> bool;
7529    pub fn obs_sceneitem_locked(item: *const obs_sceneitem_t) -> bool;
7530    pub fn obs_sceneitem_set_locked(item: *mut obs_sceneitem_t, lock: bool) -> bool;
7531    pub fn obs_sceneitem_set_pos(item: *mut obs_sceneitem_t, pos: *const vec2);
7532    pub fn obs_sceneitem_set_rot(item: *mut obs_sceneitem_t, rot_deg: f32);
7533    pub fn obs_sceneitem_set_scale(item: *mut obs_sceneitem_t, scale: *const vec2);
7534    pub fn obs_sceneitem_set_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7535    pub fn obs_sceneitem_set_order(item: *mut obs_sceneitem_t, movement: obs_order_movement);
7536    pub fn obs_sceneitem_set_order_position(
7537        item: *mut obs_sceneitem_t,
7538        position: ::std::os::raw::c_int,
7539    );
7540    pub fn obs_sceneitem_set_bounds_type(item: *mut obs_sceneitem_t, type_: obs_bounds_type);
7541    pub fn obs_sceneitem_set_bounds_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7542    pub fn obs_sceneitem_set_bounds_crop(item: *mut obs_sceneitem_t, crop: bool);
7543    pub fn obs_sceneitem_set_bounds(item: *mut obs_sceneitem_t, bounds: *const vec2);
7544    pub fn obs_sceneitem_get_id(item: *const obs_sceneitem_t) -> i64;
7545    pub fn obs_sceneitem_get_pos(item: *const obs_sceneitem_t, pos: *mut vec2);
7546    pub fn obs_sceneitem_get_rot(item: *const obs_sceneitem_t) -> f32;
7547    pub fn obs_sceneitem_get_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7548    pub fn obs_sceneitem_get_alignment(item: *const obs_sceneitem_t) -> u32;
7549    pub fn obs_sceneitem_get_bounds_type(item: *const obs_sceneitem_t) -> obs_bounds_type;
7550    pub fn obs_sceneitem_get_bounds_alignment(item: *const obs_sceneitem_t) -> u32;
7551    pub fn obs_sceneitem_get_bounds_crop(item: *const obs_sceneitem_t) -> bool;
7552    pub fn obs_sceneitem_get_bounds(item: *const obs_sceneitem_t, bounds: *mut vec2);
7553    pub fn obs_sceneitem_get_info2(item: *const obs_sceneitem_t, info: *mut obs_transform_info);
7554    pub fn obs_sceneitem_set_info2(item: *mut obs_sceneitem_t, info: *const obs_transform_info);
7555    pub fn obs_sceneitem_get_draw_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7556    pub fn obs_sceneitem_get_box_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7557    pub fn obs_sceneitem_get_box_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7558    pub fn obs_sceneitem_visible(item: *const obs_sceneitem_t) -> bool;
7559    pub fn obs_sceneitem_set_visible(item: *mut obs_sceneitem_t, visible: bool) -> bool;
7560    pub fn obs_sceneitem_set_crop(item: *mut obs_sceneitem_t, crop: *const obs_sceneitem_crop);
7561    pub fn obs_sceneitem_get_crop(item: *const obs_sceneitem_t, crop: *mut obs_sceneitem_crop);
7562    pub fn obs_sceneitem_set_scale_filter(item: *mut obs_sceneitem_t, filter: obs_scale_type);
7563    pub fn obs_sceneitem_get_scale_filter(item: *mut obs_sceneitem_t) -> obs_scale_type;
7564    pub fn obs_sceneitem_set_blending_method(
7565        item: *mut obs_sceneitem_t,
7566        method: obs_blending_method,
7567    );
7568    pub fn obs_sceneitem_get_blending_method(item: *mut obs_sceneitem_t) -> obs_blending_method;
7569    pub fn obs_sceneitem_set_blending_mode(item: *mut obs_sceneitem_t, type_: obs_blending_type);
7570    pub fn obs_sceneitem_get_blending_mode(item: *mut obs_sceneitem_t) -> obs_blending_type;
7571    pub fn obs_sceneitem_force_update_transform(item: *mut obs_sceneitem_t);
7572    pub fn obs_sceneitem_defer_update_begin(item: *mut obs_sceneitem_t);
7573    pub fn obs_sceneitem_defer_update_end(item: *mut obs_sceneitem_t);
7574#[doc = " Gets private front-end settings data.  This data is saved/loaded\n automatically.  Returns an incremented reference."]
7575    pub fn obs_sceneitem_get_private_settings(item: *mut obs_sceneitem_t) -> *mut obs_data_t;
7576    pub fn obs_scene_add_group(
7577        scene: *mut obs_scene_t,
7578        name: *const ::std::os::raw::c_char,
7579    ) -> *mut obs_sceneitem_t;
7580    pub fn obs_scene_insert_group(
7581        scene: *mut obs_scene_t,
7582        name: *const ::std::os::raw::c_char,
7583        items: *mut *mut obs_sceneitem_t,
7584        count: usize,
7585    ) -> *mut obs_sceneitem_t;
7586    pub fn obs_scene_add_group2(
7587        scene: *mut obs_scene_t,
7588        name: *const ::std::os::raw::c_char,
7589        signal: bool,
7590    ) -> *mut obs_sceneitem_t;
7591    pub fn obs_scene_insert_group2(
7592        scene: *mut obs_scene_t,
7593        name: *const ::std::os::raw::c_char,
7594        items: *mut *mut obs_sceneitem_t,
7595        count: usize,
7596        signal: bool,
7597    ) -> *mut obs_sceneitem_t;
7598    pub fn obs_scene_get_group(
7599        scene: *mut obs_scene_t,
7600        name: *const ::std::os::raw::c_char,
7601    ) -> *mut obs_sceneitem_t;
7602    pub fn obs_sceneitem_is_group(item: *mut obs_sceneitem_t) -> bool;
7603    pub fn obs_sceneitem_group_get_scene(group: *const obs_sceneitem_t) -> *mut obs_scene_t;
7604    pub fn obs_sceneitem_group_ungroup(group: *mut obs_sceneitem_t);
7605    pub fn obs_sceneitem_group_ungroup2(group: *mut obs_sceneitem_t, signal: bool);
7606    pub fn obs_sceneitem_group_add_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7607    pub fn obs_sceneitem_group_remove_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7608    pub fn obs_sceneitem_get_group(
7609        scene: *mut obs_scene_t,
7610        item: *mut obs_sceneitem_t,
7611    ) -> *mut obs_sceneitem_t;
7612    pub fn obs_source_is_group(source: *const obs_source_t) -> bool;
7613    pub fn obs_source_type_is_group(id: *const ::std::os::raw::c_char) -> bool;
7614    pub fn obs_scene_is_group(scene: *const obs_scene_t) -> bool;
7615    pub fn obs_sceneitem_group_enum_items(
7616        group: *mut obs_sceneitem_t,
7617        callback: ::std::option::Option<
7618            unsafe extern "C" fn(
7619                arg1: *mut obs_scene_t,
7620                arg2: *mut obs_sceneitem_t,
7621                arg3: *mut ::std::os::raw::c_void,
7622            ) -> bool,
7623        >,
7624        param: *mut ::std::os::raw::c_void,
7625    );
7626#[doc = " Gets the group from its source, or NULL if not a group"]
7627    pub fn obs_group_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7628    pub fn obs_sceneitem_defer_group_resize_begin(item: *mut obs_sceneitem_t);
7629    pub fn obs_sceneitem_defer_group_resize_end(item: *mut obs_sceneitem_t);
7630    pub fn obs_sceneitem_set_transition(
7631        item: *mut obs_sceneitem_t,
7632        show: bool,
7633        transition: *mut obs_source_t,
7634    );
7635    pub fn obs_sceneitem_get_transition(
7636        item: *mut obs_sceneitem_t,
7637        show: bool,
7638    ) -> *mut obs_source_t;
7639    pub fn obs_sceneitem_set_transition_duration(
7640        item: *mut obs_sceneitem_t,
7641        show: bool,
7642        duration_ms: u32,
7643    );
7644    pub fn obs_sceneitem_get_transition_duration(item: *mut obs_sceneitem_t, show: bool) -> u32;
7645    pub fn obs_sceneitem_do_transition(item: *mut obs_sceneitem_t, visible: bool);
7646    pub fn obs_sceneitem_transition_load(
7647        item: *mut obs_scene_item,
7648        data: *mut obs_data_t,
7649        show: bool,
7650    );
7651    pub fn obs_sceneitem_transition_save(item: *mut obs_scene_item, show: bool) -> *mut obs_data_t;
7652    pub fn obs_scene_prune_sources(scene: *mut obs_scene_t);
7653    pub fn obs_output_get_display_name(
7654        id: *const ::std::os::raw::c_char,
7655    ) -> *const ::std::os::raw::c_char;
7656#[doc = " Returns a pointer to the module which provides the output"]
7657    pub fn obs_output_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7658#[doc = " Returns the load state of a output's module given the id"]
7659    pub fn obs_output_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7660#[doc = " Creates an output.\n\n   Outputs allow outputting to file, outputting to network, outputting to\n directshow, or other custom outputs."]
7661    pub fn obs_output_create(
7662        id: *const ::std::os::raw::c_char,
7663        name: *const ::std::os::raw::c_char,
7664        settings: *mut obs_data_t,
7665        hotkey_data: *mut obs_data_t,
7666    ) -> *mut obs_output_t;
7667#[doc = " Adds/releases a reference to an output.  When the last reference is\n released, the output is destroyed."]
7668    pub fn obs_output_release(output: *mut obs_output_t);
7669    pub fn obs_weak_output_addref(weak: *mut obs_weak_output_t);
7670    pub fn obs_weak_output_release(weak: *mut obs_weak_output_t);
7671    pub fn obs_output_get_ref(output: *mut obs_output_t) -> *mut obs_output_t;
7672    pub fn obs_output_get_weak_output(output: *mut obs_output_t) -> *mut obs_weak_output_t;
7673    pub fn obs_weak_output_get_output(weak: *mut obs_weak_output_t) -> *mut obs_output_t;
7674    pub fn obs_weak_output_references_output(
7675        weak: *mut obs_weak_output_t,
7676        output: *mut obs_output_t,
7677    ) -> bool;
7678    pub fn obs_output_get_name(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7679#[doc = " Starts the output."]
7680    pub fn obs_output_start(output: *mut obs_output_t) -> bool;
7681#[doc = " Stops the output."]
7682    pub fn obs_output_stop(output: *mut obs_output_t);
7683#[doc = " Sets the current output delay, in seconds (if the output supports delay).\n\n If delay is currently active, it will set the delay value, but will not\n affect the current delay, it will only affect the next time the output is\n activated."]
7684    pub fn obs_output_set_delay(output: *mut obs_output_t, delay_sec: u32, flags: u32);
7685#[doc = " Gets the currently set delay value, in seconds."]
7686    pub fn obs_output_get_delay(output: *const obs_output_t) -> u32;
7687#[doc = " If delay is active, gets the currently active delay value, in seconds."]
7688    pub fn obs_output_get_active_delay(output: *const obs_output_t) -> u32;
7689#[doc = " Forces the output to stop.  Usually only used with delay."]
7690    pub fn obs_output_force_stop(output: *mut obs_output_t);
7691#[doc = " Returns whether the output is active"]
7692    pub fn obs_output_active(output: *const obs_output_t) -> bool;
7693#[doc = " Returns output capability flags"]
7694    pub fn obs_output_get_flags(output: *const obs_output_t) -> u32;
7695#[doc = " Returns output capability flags"]
7696    pub fn obs_get_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7697#[doc = " Gets the default settings for an output type"]
7698    pub fn obs_output_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7699#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
7700    pub fn obs_get_output_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7701#[doc = " Returns the property list of an existing output, if any.  Free with\n obs_properties_destroy"]
7702    pub fn obs_output_properties(output: *const obs_output_t) -> *mut obs_properties_t;
7703#[doc = " Updates the settings for this output context"]
7704    pub fn obs_output_update(output: *mut obs_output_t, settings: *mut obs_data_t);
7705#[doc = " Specifies whether the output can be paused"]
7706    pub fn obs_output_can_pause(output: *const obs_output_t) -> bool;
7707#[doc = " Pauses the output (if the functionality is allowed by the output"]
7708    pub fn obs_output_pause(output: *mut obs_output_t, pause: bool) -> bool;
7709#[doc = " Returns whether output is paused"]
7710    pub fn obs_output_paused(output: *const obs_output_t) -> bool;
7711    pub fn obs_output_get_settings(output: *const obs_output_t) -> *mut obs_data_t;
7712#[doc = " Returns the signal handler for an output"]
7713    pub fn obs_output_get_signal_handler(output: *const obs_output_t) -> *mut signal_handler_t;
7714#[doc = " Returns the procedure handler for an output"]
7715    pub fn obs_output_get_proc_handler(output: *const obs_output_t) -> *mut proc_handler_t;
7716#[doc = " Sets the current audio/video media contexts associated with this output,\n required for non-encoded outputs.  Can be null."]
7717    pub fn obs_output_set_media(
7718        output: *mut obs_output_t,
7719        video: *mut video_t,
7720        audio: *mut audio_t,
7721    );
7722#[doc = " Returns the video media context associated with this output"]
7723    pub fn obs_output_video(output: *const obs_output_t) -> *mut video_t;
7724#[doc = " Returns the audio media context associated with this output"]
7725    pub fn obs_output_audio(output: *const obs_output_t) -> *mut audio_t;
7726#[doc = " Sets the current audio mixer for non-encoded outputs"]
7727    pub fn obs_output_set_mixer(output: *mut obs_output_t, mixer_idx: usize);
7728#[doc = " Gets the current audio mixer for non-encoded outputs"]
7729    pub fn obs_output_get_mixer(output: *const obs_output_t) -> usize;
7730#[doc = " Sets the current audio mixes (mask) for a non-encoded multi-track output"]
7731    pub fn obs_output_set_mixers(output: *mut obs_output_t, mixers: usize);
7732#[doc = " Gets the current audio mixes (mask) for a non-encoded multi-track output"]
7733    pub fn obs_output_get_mixers(output: *const obs_output_t) -> usize;
7734#[doc = " Sets the current video encoder associated with this output,\n required for encoded outputs"]
7735    pub fn obs_output_set_video_encoder(output: *mut obs_output_t, encoder: *mut obs_encoder_t);
7736#[doc = " Sets the current video encoder associated with this output,\n required for encoded outputs.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored."]
7737    pub fn obs_output_set_video_encoder2(
7738        output: *mut obs_output_t,
7739        encoder: *mut obs_encoder_t,
7740        idx: usize,
7741    );
7742#[doc = " Sets the current audio encoder associated with this output,\n required for encoded outputs.\n\n The idx parameter specifies the audio encoder index to set the encoder to.\n Only used with outputs that have multiple audio outputs (RTMP typically),\n otherwise the parameter is ignored."]
7743    pub fn obs_output_set_audio_encoder(
7744        output: *mut obs_output_t,
7745        encoder: *mut obs_encoder_t,
7746        idx: usize,
7747    );
7748#[doc = " Returns the current video encoder associated with this output"]
7749    pub fn obs_output_get_video_encoder(output: *const obs_output_t) -> *mut obs_encoder_t;
7750#[doc = " Returns the current video encoder associated with this output.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise specifying an idx > 0 returns a NULL."]
7751    pub fn obs_output_get_video_encoder2(
7752        output: *const obs_output_t,
7753        idx: usize,
7754    ) -> *mut obs_encoder_t;
7755#[doc = " Returns the current audio encoder associated with this output\n\n The idx parameter specifies the audio encoder index.  Only used with\n outputs that have multiple audio outputs, otherwise the parameter is\n ignored."]
7756    pub fn obs_output_get_audio_encoder(
7757        output: *const obs_output_t,
7758        idx: usize,
7759    ) -> *mut obs_encoder_t;
7760#[doc = " Sets the current service associated with this output."]
7761    pub fn obs_output_set_service(output: *mut obs_output_t, service: *mut obs_service_t);
7762#[doc = " Gets the current service associated with this output."]
7763    pub fn obs_output_get_service(output: *const obs_output_t) -> *mut obs_service_t;
7764#[doc = " Sets the reconnect settings.  Set retry_count to 0 to disable reconnecting."]
7765    pub fn obs_output_set_reconnect_settings(
7766        output: *mut obs_output_t,
7767        retry_count: ::std::os::raw::c_int,
7768        retry_sec: ::std::os::raw::c_int,
7769    );
7770    pub fn obs_output_get_total_bytes(output: *const obs_output_t) -> u64;
7771    pub fn obs_output_get_frames_dropped(output: *const obs_output_t) -> ::std::os::raw::c_int;
7772    pub fn obs_output_get_total_frames(output: *const obs_output_t) -> ::std::os::raw::c_int;
7773#[doc = " Sets the preferred scaled resolution for this output.  Set width and height\n to 0 to disable scaling.\n\n If this output uses an encoder, it will call obs_encoder_set_scaled_size on\n the encoder before the stream is started.  If the encoder is already active,\n then this function will trigger a warning and do nothing."]
7774    pub fn obs_output_set_preferred_size(output: *mut obs_output_t, width: u32, height: u32);
7775#[doc = " Sets the preferred scaled resolution for this output.  Set width and height\n to 0 to disable scaling.\n\n If this output uses an encoder, it will call obs_encoder_set_scaled_size on\n the encoder before the stream is started.  If the encoder is already active,\n then this function will trigger a warning and do nothing.\n\n The idx parameter specifies the video encoder index to apply the scaling to.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored."]
7776    pub fn obs_output_set_preferred_size2(
7777        output: *mut obs_output_t,
7778        width: u32,
7779        height: u32,
7780        idx: usize,
7781    );
7782#[doc = " For video outputs, returns the width of the encoded image"]
7783    pub fn obs_output_get_width(output: *const obs_output_t) -> u32;
7784#[doc = " For video outputs, returns the width of the encoded image.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored and returns 0."]
7785    pub fn obs_output_get_width2(output: *const obs_output_t, idx: usize) -> u32;
7786#[doc = " For video outputs, returns the height of the encoded image"]
7787    pub fn obs_output_get_height(output: *const obs_output_t) -> u32;
7788#[doc = " For video outputs, returns the height of the encoded image.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored and returns 0."]
7789    pub fn obs_output_get_height2(output: *const obs_output_t, idx: usize) -> u32;
7790    pub fn obs_output_get_id(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7791    pub fn obs_output_caption(output: *mut obs_output_t, captions: *const obs_source_cea_708);
7792    pub fn obs_output_output_caption_text1(
7793        output: *mut obs_output_t,
7794        text: *const ::std::os::raw::c_char,
7795    );
7796    pub fn obs_output_output_caption_text2(
7797        output: *mut obs_output_t,
7798        text: *const ::std::os::raw::c_char,
7799        display_duration: f64,
7800    );
7801    pub fn obs_output_get_congestion(output: *mut obs_output_t) -> f32;
7802    pub fn obs_output_get_connect_time_ms(output: *mut obs_output_t) -> ::std::os::raw::c_int;
7803    pub fn obs_output_reconnecting(output: *const obs_output_t) -> bool;
7804#[doc = " Pass a string of the last output error, for UI use"]
7805    pub fn obs_output_set_last_error(
7806        output: *mut obs_output_t,
7807        message: *const ::std::os::raw::c_char,
7808    );
7809    pub fn obs_output_get_last_error(output: *mut obs_output_t) -> *const ::std::os::raw::c_char;
7810    pub fn obs_output_get_supported_video_codecs(
7811        output: *const obs_output_t,
7812    ) -> *const ::std::os::raw::c_char;
7813    pub fn obs_output_get_supported_audio_codecs(
7814        output: *const obs_output_t,
7815    ) -> *const ::std::os::raw::c_char;
7816    pub fn obs_output_get_protocols(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7817    pub fn obs_is_output_protocol_registered(protocol: *const ::std::os::raw::c_char) -> bool;
7818    pub fn obs_enum_output_protocols(
7819        idx: usize,
7820        protocol: *mut *mut ::std::os::raw::c_char,
7821    ) -> bool;
7822    pub fn obs_enum_output_types_with_protocol(
7823        protocol: *const ::std::os::raw::c_char,
7824        data: *mut ::std::os::raw::c_void,
7825        enum_cb: ::std::option::Option<
7826            unsafe extern "C" fn(
7827                data: *mut ::std::os::raw::c_void,
7828                id: *const ::std::os::raw::c_char,
7829            ) -> bool,
7830        >,
7831    );
7832    pub fn obs_get_output_supported_video_codecs(
7833        id: *const ::std::os::raw::c_char,
7834    ) -> *const ::std::os::raw::c_char;
7835    pub fn obs_get_output_supported_audio_codecs(
7836        id: *const ::std::os::raw::c_char,
7837    ) -> *const ::std::os::raw::c_char;
7838    pub fn obs_output_add_packet_callback(
7839        output: *mut obs_output_t,
7840        packet_cb: ::std::option::Option<
7841            unsafe extern "C" fn(
7842                output: *mut obs_output_t,
7843                pkt: *mut encoder_packet,
7844                pkt_time: *mut encoder_packet_time,
7845                param: *mut ::std::os::raw::c_void,
7846            ),
7847        >,
7848        param: *mut ::std::os::raw::c_void,
7849    );
7850    pub fn obs_output_remove_packet_callback(
7851        output: *mut obs_output_t,
7852        packet_cb: ::std::option::Option<
7853            unsafe extern "C" fn(
7854                output: *mut obs_output_t,
7855                pkt: *mut encoder_packet,
7856                pkt_time: *mut encoder_packet_time,
7857                param: *mut ::std::os::raw::c_void,
7858            ),
7859        >,
7860        param: *mut ::std::os::raw::c_void,
7861    );
7862    pub fn obs_output_set_reconnect_callback(
7863        output: *mut obs_output_t,
7864        reconnect_cb: ::std::option::Option<
7865            unsafe extern "C" fn(
7866                data: *mut ::std::os::raw::c_void,
7867                output: *mut obs_output_t,
7868                code: ::std::os::raw::c_int,
7869            ) -> bool,
7870        >,
7871        param: *mut ::std::os::raw::c_void,
7872    );
7873    pub fn obs_output_get_type_data(output: *mut obs_output_t) -> *mut ::std::os::raw::c_void;
7874#[doc = " Gets the video conversion info.  Used only for raw output"]
7875    pub fn obs_output_get_video_conversion(output: *mut obs_output_t) -> *const video_scale_info;
7876#[doc = " Optionally sets the video conversion info.  Used only for raw output"]
7877    pub fn obs_output_set_video_conversion(
7878        output: *mut obs_output_t,
7879        conversion: *const video_scale_info,
7880    );
7881#[doc = " Optionally sets the audio conversion info.  Used only for raw output"]
7882    pub fn obs_output_set_audio_conversion(
7883        output: *mut obs_output_t,
7884        conversion: *const audio_convert_info,
7885    );
7886#[doc = " Returns whether data capture can begin"]
7887    pub fn obs_output_can_begin_data_capture(output: *const obs_output_t, flags: u32) -> bool;
7888#[doc = " Initializes encoders (if any)"]
7889    pub fn obs_output_initialize_encoders(output: *mut obs_output_t, flags: u32) -> bool;
7890#[doc = " Begins data capture from media/encoders.\n\n @param  output  Output context\n @return         true if successful, false otherwise."]
7891    pub fn obs_output_begin_data_capture(output: *mut obs_output_t, flags: u32) -> bool;
7892#[doc = " Ends data capture from media/encoders"]
7893    pub fn obs_output_end_data_capture(output: *mut obs_output_t);
7894#[doc = " Signals that the output has stopped itself.\n\n @param  output  Output context\n @param  code    Error code (or OBS_OUTPUT_SUCCESS if not an error)"]
7895    pub fn obs_output_signal_stop(output: *mut obs_output_t, code: ::std::os::raw::c_int);
7896    pub fn obs_output_get_pause_offset(output: *mut obs_output_t) -> u64;
7897    pub fn obs_encoder_get_display_name(
7898        id: *const ::std::os::raw::c_char,
7899    ) -> *const ::std::os::raw::c_char;
7900#[doc = " Returns a pointer to the module which provides the encoder"]
7901    pub fn obs_encoder_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7902#[doc = " Returns the load state of an encoder's module given the id"]
7903    pub fn obs_encoder_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7904#[doc = " Creates a video encoder context\n\n @param  id        Video encoder ID\n @param  name      Name to assign to this context\n @param  settings  Settings\n @return           The video encoder context, or NULL if failed or not found."]
7905    pub fn obs_video_encoder_create(
7906        id: *const ::std::os::raw::c_char,
7907        name: *const ::std::os::raw::c_char,
7908        settings: *mut obs_data_t,
7909        hotkey_data: *mut obs_data_t,
7910    ) -> *mut obs_encoder_t;
7911#[doc = " Creates an audio encoder context\n\n @param  id        Audio Encoder ID\n @param  name      Name to assign to this context\n @param  settings  Settings\n @param  mixer_idx Index of the mixer to use for this audio encoder\n @return           The video encoder context, or NULL if failed or not found."]
7912    pub fn obs_audio_encoder_create(
7913        id: *const ::std::os::raw::c_char,
7914        name: *const ::std::os::raw::c_char,
7915        settings: *mut obs_data_t,
7916        mixer_idx: usize,
7917        hotkey_data: *mut obs_data_t,
7918    ) -> *mut obs_encoder_t;
7919#[doc = " Adds/releases a reference to an encoder.  When the last reference is\n released, the encoder is destroyed."]
7920    pub fn obs_encoder_release(encoder: *mut obs_encoder_t);
7921    pub fn obs_weak_encoder_addref(weak: *mut obs_weak_encoder_t);
7922    pub fn obs_weak_encoder_release(weak: *mut obs_weak_encoder_t);
7923    pub fn obs_encoder_get_ref(encoder: *mut obs_encoder_t) -> *mut obs_encoder_t;
7924    pub fn obs_encoder_get_weak_encoder(encoder: *mut obs_encoder_t) -> *mut obs_weak_encoder_t;
7925    pub fn obs_weak_encoder_get_encoder(weak: *mut obs_weak_encoder_t) -> *mut obs_encoder_t;
7926    pub fn obs_weak_encoder_references_encoder(
7927        weak: *mut obs_weak_encoder_t,
7928        encoder: *mut obs_encoder_t,
7929    ) -> bool;
7930    pub fn obs_encoder_set_name(encoder: *mut obs_encoder_t, name: *const ::std::os::raw::c_char);
7931    pub fn obs_encoder_get_name(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7932#[doc = " Returns the codec of an encoder by the id"]
7933    pub fn obs_get_encoder_codec(
7934        id: *const ::std::os::raw::c_char,
7935    ) -> *const ::std::os::raw::c_char;
7936#[doc = " Returns the type of an encoder by the id"]
7937    pub fn obs_get_encoder_type(id: *const ::std::os::raw::c_char) -> obs_encoder_type;
7938#[doc = " Returns the codec of the encoder"]
7939    pub fn obs_encoder_get_codec(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7940#[doc = " Returns the type of an encoder"]
7941    pub fn obs_encoder_get_type(encoder: *const obs_encoder_t) -> obs_encoder_type;
7942#[doc = " Sets the scaled resolution for a video encoder.  Set width and height to 0\n to disable scaling.  If the encoder is active, this function will trigger\n a warning, and do nothing."]
7943    pub fn obs_encoder_set_scaled_size(encoder: *mut obs_encoder_t, width: u32, height: u32);
7944#[doc = " Enable/disable GPU based scaling for a video encoder.\n OBS_SCALE_DISABLE disables GPU based scaling (default),\n any other value enables GPU based scaling. If the encoder\n is active, this function will trigger a warning, and do nothing."]
7945    pub fn obs_encoder_set_gpu_scale_type(
7946        encoder: *mut obs_encoder_t,
7947        gpu_scale_type: obs_scale_type,
7948    );
7949#[doc = " Set frame rate divisor for a video encoder. This allows recording at\n a partial frame rate compared to the base frame rate, e.g. 60 FPS with\n divisor = 2 will record at 30 FPS, with divisor = 3 at 20, etc.\n\n Can only be called on stopped encoders, changing this on the fly is not supported"]
7950    pub fn obs_encoder_set_frame_rate_divisor(encoder: *mut obs_encoder_t, divisor: u32) -> bool;
7951#[doc = " Adds region of interest (ROI) for an encoder. This allows prioritizing\n quality of regions of the frame.\n If regions overlap, regions added earlier take precedence.\n\n Returns false if the encoder does not support ROI or region is invalid."]
7952    pub fn obs_encoder_add_roi(encoder: *mut obs_encoder_t, roi: *const obs_encoder_roi) -> bool;
7953#[doc = " For video encoders, returns true if any ROIs were set"]
7954    pub fn obs_encoder_has_roi(encoder: *const obs_encoder_t) -> bool;
7955#[doc = " Clear all regions"]
7956    pub fn obs_encoder_clear_roi(encoder: *mut obs_encoder_t);
7957#[doc = " Enumerate regions with callback (reverse order of addition)"]
7958    pub fn obs_encoder_enum_roi(
7959        encoder: *mut obs_encoder_t,
7960        enum_proc: ::std::option::Option<
7961            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut obs_encoder_roi),
7962        >,
7963        param: *mut ::std::os::raw::c_void,
7964    );
7965#[doc = " Get ROI increment, encoders must rebuild their ROI map if it has changed"]
7966    pub fn obs_encoder_get_roi_increment(encoder: *const obs_encoder_t) -> u32;
7967#[doc = " For video encoders, returns true if pre-encode scaling is enabled"]
7968    pub fn obs_encoder_scaling_enabled(encoder: *const obs_encoder_t) -> bool;
7969#[doc = " For video encoders, returns the width of the encoded image"]
7970    pub fn obs_encoder_get_width(encoder: *const obs_encoder_t) -> u32;
7971#[doc = " For video encoders, returns the height of the encoded image"]
7972    pub fn obs_encoder_get_height(encoder: *const obs_encoder_t) -> u32;
7973#[doc = " For video encoders, returns whether GPU scaling is enabled"]
7974    pub fn obs_encoder_gpu_scaling_enabled(encoder: *mut obs_encoder_t) -> bool;
7975#[doc = " For video encoders, returns GPU scaling type"]
7976    pub fn obs_encoder_get_scale_type(encoder: *mut obs_encoder_t) -> obs_scale_type;
7977#[doc = " For video encoders, returns the frame rate divisor (default is 1)"]
7978    pub fn obs_encoder_get_frame_rate_divisor(encoder: *const obs_encoder_t) -> u32;
7979#[doc = " For video encoders, returns the number of frames encoded"]
7980    pub fn obs_encoder_get_encoded_frames(encoder: *const obs_encoder_t) -> u32;
7981#[doc = " For audio encoders, returns the sample rate of the audio"]
7982    pub fn obs_encoder_get_sample_rate(encoder: *const obs_encoder_t) -> u32;
7983#[doc = " For audio encoders, returns the frame size of the audio packet"]
7984    pub fn obs_encoder_get_frame_size(encoder: *const obs_encoder_t) -> usize;
7985#[doc = " For audio encoders, returns the mixer index"]
7986    pub fn obs_encoder_get_mixer_index(encoder: *const obs_encoder_t) -> usize;
7987#[doc = " Sets the preferred video format for a video encoder.  If the encoder can use\n the format specified, it will force a conversion to that format if the\n obs output format does not match the preferred format.\n\n If the format is set to VIDEO_FORMAT_NONE, will revert to the default\n functionality of converting only when absolutely necessary.\n\n If GPU scaling is enabled, conversion will happen on the GPU."]
7988    pub fn obs_encoder_set_preferred_video_format(
7989        encoder: *mut obs_encoder_t,
7990        format: video_format,
7991    );
7992    pub fn obs_encoder_get_preferred_video_format(encoder: *const obs_encoder_t) -> video_format;
7993#[doc = " Sets the preferred colorspace for an encoder, e.g., to simultaneous SDR and\n HDR output.\n\n Only supported when GPU scaling is enabled."]
7994    pub fn obs_encoder_set_preferred_color_space(
7995        encoder: *mut obs_encoder_t,
7996        colorspace: video_colorspace,
7997    );
7998    pub fn obs_encoder_get_preferred_color_space(encoder: *const obs_encoder_t)
7999    -> video_colorspace;
8000#[doc = " Sets the preferred range for an encoder.\n\n Only supported when GPU scaling is enabled."]
8001    pub fn obs_encoder_set_preferred_range(encoder: *mut obs_encoder_t, range: video_range_type);
8002    pub fn obs_encoder_get_preferred_range(encoder: *const obs_encoder_t) -> video_range_type;
8003#[doc = " Gets the default settings for an encoder type"]
8004    pub fn obs_encoder_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8005    pub fn obs_encoder_get_defaults(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8006#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
8007    pub fn obs_get_encoder_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8008#[doc = " Returns the property list of an existing encoder, if any.  Free with\n obs_properties_destroy"]
8009    pub fn obs_encoder_properties(encoder: *const obs_encoder_t) -> *mut obs_properties_t;
8010#[doc = " Updates the settings of the encoder context.  Usually used for changing\n bitrate while active"]
8011    pub fn obs_encoder_update(encoder: *mut obs_encoder_t, settings: *mut obs_data_t);
8012#[doc = " Gets extra data (headers) associated with this context"]
8013    pub fn obs_encoder_get_extra_data(
8014        encoder: *const obs_encoder_t,
8015        extra_data: *mut *mut u8,
8016        size: *mut usize,
8017    ) -> bool;
8018#[doc = " Returns the current settings for this encoder"]
8019    pub fn obs_encoder_get_settings(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8020#[doc = " Sets the video output context to be used with this encoder"]
8021    pub fn obs_encoder_set_video(encoder: *mut obs_encoder_t, video: *mut video_t);
8022#[doc = " Sets the audio output context to be used with this encoder"]
8023    pub fn obs_encoder_set_audio(encoder: *mut obs_encoder_t, audio: *mut audio_t);
8024#[doc = " Returns the video output context used with this encoder, or NULL if not\n a video context"]
8025    pub fn obs_encoder_video(encoder: *const obs_encoder_t) -> *mut video_t;
8026#[doc = " Returns the parent video output context used with this encoder, or NULL if not\n a video context. Used when an FPS divisor is set, where the original video\n context would not otherwise be gettable."]
8027    pub fn obs_encoder_parent_video(encoder: *const obs_encoder_t) -> *mut video_t;
8028#[doc = " Returns if the encoder's video output context supports shared textures for the specified video format."]
8029    pub fn obs_encoder_video_tex_active(
8030        encoder: *const obs_encoder_t,
8031        format: video_format,
8032    ) -> bool;
8033#[doc = " Returns the audio output context used with this encoder, or NULL if not\n a audio context"]
8034    pub fn obs_encoder_audio(encoder: *const obs_encoder_t) -> *mut audio_t;
8035#[doc = " Returns true if encoder is active, false otherwise"]
8036    pub fn obs_encoder_active(encoder: *const obs_encoder_t) -> bool;
8037    pub fn obs_encoder_get_type_data(encoder: *mut obs_encoder_t) -> *mut ::std::os::raw::c_void;
8038    pub fn obs_encoder_get_id(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
8039    pub fn obs_get_encoder_caps(encoder_id: *const ::std::os::raw::c_char) -> u32;
8040    pub fn obs_encoder_get_caps(encoder: *const obs_encoder_t) -> u32;
8041    pub fn obs_encoder_packet_ref(dst: *mut encoder_packet, src: *mut encoder_packet);
8042    pub fn obs_encoder_packet_release(packet: *mut encoder_packet);
8043    pub fn obs_encoder_create_rerouted(
8044        encoder: *mut obs_encoder_t,
8045        reroute_id: *const ::std::os::raw::c_char,
8046    ) -> *mut ::std::os::raw::c_void;
8047#[doc = " Returns whether encoder is paused"]
8048    pub fn obs_encoder_paused(output: *const obs_encoder_t) -> bool;
8049    pub fn obs_encoder_get_last_error(encoder: *mut obs_encoder_t)
8050    -> *const ::std::os::raw::c_char;
8051    pub fn obs_encoder_set_last_error(
8052        encoder: *mut obs_encoder_t,
8053        message: *const ::std::os::raw::c_char,
8054    );
8055    pub fn obs_encoder_get_pause_offset(encoder: *const obs_encoder_t) -> u64;
8056#[doc = " Creates an \"encoder group\", allowing synchronized startup of encoders within\n the group. Encoder groups are single owner, and hold strong references to\n encoders within the group. Calling destroy on an active group will not actually\n destroy the group until it becomes completely inactive."]
8057    pub fn obs_encoder_set_group(
8058        encoder: *mut obs_encoder_t,
8059        group: *mut obs_encoder_group_t,
8060    ) -> bool;
8061    pub fn obs_encoder_group_create() -> *mut obs_encoder_group_t;
8062    pub fn obs_encoder_group_destroy(group: *mut obs_encoder_group_t);
8063    pub fn obs_service_get_display_name(
8064        id: *const ::std::os::raw::c_char,
8065    ) -> *const ::std::os::raw::c_char;
8066#[doc = " Returns a pointer to the module which provides the service"]
8067    pub fn obs_service_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
8068#[doc = " Returns the load state of a service's module given the id"]
8069    pub fn obs_service_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
8070    pub fn obs_service_create(
8071        id: *const ::std::os::raw::c_char,
8072        name: *const ::std::os::raw::c_char,
8073        settings: *mut obs_data_t,
8074        hotkey_data: *mut obs_data_t,
8075    ) -> *mut obs_service_t;
8076    pub fn obs_service_create_private(
8077        id: *const ::std::os::raw::c_char,
8078        name: *const ::std::os::raw::c_char,
8079        settings: *mut obs_data_t,
8080    ) -> *mut obs_service_t;
8081#[doc = " Adds/releases a reference to a service.  When the last reference is\n released, the service is destroyed."]
8082    pub fn obs_service_release(service: *mut obs_service_t);
8083    pub fn obs_weak_service_addref(weak: *mut obs_weak_service_t);
8084    pub fn obs_weak_service_release(weak: *mut obs_weak_service_t);
8085    pub fn obs_service_get_ref(service: *mut obs_service_t) -> *mut obs_service_t;
8086    pub fn obs_service_get_weak_service(service: *mut obs_service_t) -> *mut obs_weak_service_t;
8087    pub fn obs_weak_service_get_service(weak: *mut obs_weak_service_t) -> *mut obs_service_t;
8088    pub fn obs_weak_service_references_service(
8089        weak: *mut obs_weak_service_t,
8090        service: *mut obs_service_t,
8091    ) -> bool;
8092    pub fn obs_service_get_name(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8093#[doc = " Gets the default settings for a service"]
8094    pub fn obs_service_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8095#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
8096    pub fn obs_get_service_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8097#[doc = " Returns the property list of an existing service context, if any.  Free with\n obs_properties_destroy"]
8098    pub fn obs_service_properties(service: *const obs_service_t) -> *mut obs_properties_t;
8099#[doc = " Gets the service type"]
8100    pub fn obs_service_get_type(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8101#[doc = " Updates the settings of the service context"]
8102    pub fn obs_service_update(service: *mut obs_service_t, settings: *mut obs_data_t);
8103#[doc = " Returns the current settings for this service"]
8104    pub fn obs_service_get_settings(service: *const obs_service_t) -> *mut obs_data_t;
8105#[doc = " Applies service-specific video encoder settings.\n\n @param  video_encoder_settings  Video encoder settings.  Optional.\n @param  audio_encoder_settings  Audio encoder settings.  Optional."]
8106    pub fn obs_service_apply_encoder_settings(
8107        service: *mut obs_service_t,
8108        video_encoder_settings: *mut obs_data_t,
8109        audio_encoder_settings: *mut obs_data_t,
8110    );
8111    pub fn obs_service_get_type_data(service: *mut obs_service_t) -> *mut ::std::os::raw::c_void;
8112    pub fn obs_service_get_id(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8113    pub fn obs_service_get_supported_resolutions(
8114        service: *const obs_service_t,
8115        resolutions: *mut *mut obs_service_resolution,
8116        count: *mut usize,
8117    );
8118    pub fn obs_service_get_max_fps(service: *const obs_service_t, fps: *mut ::std::os::raw::c_int);
8119    pub fn obs_service_get_max_bitrate(
8120        service: *const obs_service_t,
8121        video_bitrate: *mut ::std::os::raw::c_int,
8122        audio_bitrate: *mut ::std::os::raw::c_int,
8123    );
8124    pub fn obs_service_get_supported_video_codecs(
8125        service: *const obs_service_t,
8126    ) -> *mut *const ::std::os::raw::c_char;
8127    pub fn obs_service_get_supported_audio_codecs(
8128        service: *const obs_service_t,
8129    ) -> *mut *const ::std::os::raw::c_char;
8130#[doc = " Returns the protocol for this service context"]
8131    pub fn obs_service_get_protocol(service: *const obs_service_t)
8132    -> *const ::std::os::raw::c_char;
8133    pub fn obs_service_get_preferred_output_type(
8134        service: *const obs_service_t,
8135    ) -> *const ::std::os::raw::c_char;
8136    pub fn obs_service_get_connect_info(
8137        service: *const obs_service_t,
8138        type_: u32,
8139    ) -> *const ::std::os::raw::c_char;
8140    pub fn obs_service_can_try_to_connect(service: *const obs_service_t) -> bool;
8141    pub fn obs_source_frame_init(
8142        frame: *mut obs_source_frame,
8143        format: video_format,
8144        width: u32,
8145        height: u32,
8146    );
8147    pub fn obs_source_frame_copy(dst: *mut obs_source_frame, src: *const obs_source_frame);
8148    pub fn obs_source_get_icon_type(id: *const ::std::os::raw::c_char) -> obs_icon_type;
8149#[doc = " Get a strong reference to the main OBS canvas"]
8150    pub fn obs_get_main_canvas() -> *mut obs_canvas_t;
8151#[doc = " Creates a new canvas"]
8152    pub fn obs_canvas_create(
8153        name: *const ::std::os::raw::c_char,
8154        ovi: *mut obs_video_info,
8155        flags: u32,
8156    ) -> *mut obs_canvas_t;
8157#[doc = " Creates a new private canvas"]
8158    pub fn obs_canvas_create_private(
8159        name: *const ::std::os::raw::c_char,
8160        ovi: *mut obs_video_info,
8161        flags: u32,
8162    ) -> *mut obs_canvas_t;
8163#[doc = " Signal that references to canvas should be released and mark the canvas as removed."]
8164    pub fn obs_canvas_remove(canvas: *mut obs_canvas_t);
8165#[doc = " Returns if a canvas is marked as removed (i.e., should no longer be used)."]
8166    pub fn obs_canvas_removed(canvas: *mut obs_canvas_t) -> bool;
8167#[doc = " Set canvas name"]
8168    pub fn obs_canvas_set_name(canvas: *mut obs_canvas_t, name: *const ::std::os::raw::c_char);
8169#[doc = " Get canvas name"]
8170    pub fn obs_canvas_get_name(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8171#[doc = " Get canvas UUID"]
8172    pub fn obs_canvas_get_uuid(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8173#[doc = " Gets flags set on a canvas"]
8174    pub fn obs_canvas_get_flags(canvas: *const obs_canvas_t) -> u32;
8175#[doc = " Saves a canvas to settings data"]
8176    pub fn obs_save_canvas(source: *mut obs_canvas_t) -> *mut obs_data_t;
8177#[doc = " Loads a canvas from settings data"]
8178    pub fn obs_load_canvas(data: *mut obs_data_t) -> *mut obs_canvas_t;
8179#[doc = " Add strong reference"]
8180    pub fn obs_canvas_get_ref(canvas: *mut obs_canvas_t) -> *mut obs_canvas_t;
8181#[doc = " Release strong reference"]
8182    pub fn obs_canvas_release(canvas: *mut obs_canvas_t);
8183#[doc = " Add weak reference"]
8184    pub fn obs_weak_canvas_addref(weak: *mut obs_weak_canvas_t);
8185#[doc = " Release weak reference"]
8186    pub fn obs_weak_canvas_release(weak: *mut obs_weak_canvas_t);
8187#[doc = " Get weak reference from strong reference"]
8188    pub fn obs_canvas_get_weak_canvas(canvas: *mut obs_canvas_t) -> *mut obs_weak_canvas_t;
8189#[doc = " Get strong reference from weak reference"]
8190    pub fn obs_weak_canvas_get_canvas(weak: *mut obs_weak_canvas_t) -> *mut obs_canvas_t;
8191#[doc = " Returns the signal handler for a canvas"]
8192    pub fn obs_canvas_get_signal_handler(canvas: *mut obs_canvas_t) -> *mut signal_handler_t;
8193#[doc = " Sets the source to be used for this canvas."]
8194    pub fn obs_canvas_set_channel(
8195        canvas: *mut obs_canvas_t,
8196        channel: u32,
8197        source: *mut obs_source_t,
8198    );
8199#[doc = " Gets the source currently in use for this view context"]
8200    pub fn obs_canvas_get_channel(canvas: *mut obs_canvas_t, channel: u32) -> *mut obs_source_t;
8201#[doc = " Create scene attached to a canvas"]
8202    pub fn obs_canvas_scene_create(
8203        canvas: *mut obs_canvas_t,
8204        name: *const ::std::os::raw::c_char,
8205    ) -> *mut obs_scene_t;
8206#[doc = " Remove a scene from a canvas"]
8207    pub fn obs_canvas_scene_remove(scene: *mut obs_scene_t);
8208#[doc = " Move scene to another canvas, detaching it from the previous one and deduplicating the name if needed"]
8209    pub fn obs_canvas_move_scene(scene: *mut obs_scene_t, dst: *mut obs_canvas_t);
8210#[doc = " Enumerates scenes belonging to a canvas"]
8211    pub fn obs_canvas_enum_scenes(
8212        canvas: *mut obs_canvas_t,
8213        enum_proc: ::std::option::Option<
8214            unsafe extern "C" fn(
8215                arg1: *mut ::std::os::raw::c_void,
8216                arg2: *mut obs_source_t,
8217            ) -> bool,
8218        >,
8219        param: *mut ::std::os::raw::c_void,
8220    );
8221#[doc = " Get a canvas source by name"]
8222    pub fn obs_canvas_get_source_by_name(
8223        canvas: *mut obs_canvas_t,
8224        name: *const ::std::os::raw::c_char,
8225    ) -> *mut obs_source_t;
8226#[doc = " Get a canvas source by UUID"]
8227    pub fn obs_canvas_get_scene_by_name(
8228        canvas: *mut obs_canvas_t,
8229        name: *const ::std::os::raw::c_char,
8230    ) -> *mut obs_scene_t;
8231#[doc = " Reset a canvas's video mix"]
8232    pub fn obs_canvas_reset_video(canvas: *mut obs_canvas_t, ovi: *mut obs_video_info) -> bool;
8233#[doc = " Returns true if the canvas video is configured"]
8234    pub fn obs_canvas_has_video(canvas: *mut obs_canvas_t) -> bool;
8235#[doc = " Get canvas video output"]
8236    pub fn obs_canvas_get_video(canvas: *const obs_canvas_t) -> *mut video_t;
8237#[doc = " Get canvas video info (if it exists)"]
8238    pub fn obs_canvas_get_video_info(canvas: *const obs_canvas_t, ovi: *mut obs_video_info)
8239    -> bool;
8240#[doc = " Renders the sources of this canvas's view context"]
8241    pub fn obs_canvas_render(canvas: *mut obs_canvas_t);
8242}