Skip to main content

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 = 1;
217pub const LIBOBS_API_PATCH_VER: u32 = 0;
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#[doc = " Audio encoder only: Returns padding, in samples, that must be skipped at the start of the stream."]
2800    pub get_priming_samples:
2801        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u32>,
2802}
2803#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2804const _: () = {
2805    ["Size of obs_encoder_info"][::std::mem::size_of::<obs_encoder_info>() - 184usize];
2806    ["Alignment of obs_encoder_info"][::std::mem::align_of::<obs_encoder_info>() - 8usize];
2807    ["Offset of field: obs_encoder_info::id"]
2808        [::std::mem::offset_of!(obs_encoder_info, id) - 0usize];
2809    ["Offset of field: obs_encoder_info::type_"]
2810        [::std::mem::offset_of!(obs_encoder_info, type_) - 8usize];
2811    ["Offset of field: obs_encoder_info::codec"]
2812        [::std::mem::offset_of!(obs_encoder_info, codec) - 16usize];
2813    ["Offset of field: obs_encoder_info::get_name"]
2814        [::std::mem::offset_of!(obs_encoder_info, get_name) - 24usize];
2815    ["Offset of field: obs_encoder_info::create"]
2816        [::std::mem::offset_of!(obs_encoder_info, create) - 32usize];
2817    ["Offset of field: obs_encoder_info::destroy"]
2818        [::std::mem::offset_of!(obs_encoder_info, destroy) - 40usize];
2819    ["Offset of field: obs_encoder_info::encode"]
2820        [::std::mem::offset_of!(obs_encoder_info, encode) - 48usize];
2821    ["Offset of field: obs_encoder_info::get_frame_size"]
2822        [::std::mem::offset_of!(obs_encoder_info, get_frame_size) - 56usize];
2823    ["Offset of field: obs_encoder_info::get_defaults"]
2824        [::std::mem::offset_of!(obs_encoder_info, get_defaults) - 64usize];
2825    ["Offset of field: obs_encoder_info::get_properties"]
2826        [::std::mem::offset_of!(obs_encoder_info, get_properties) - 72usize];
2827    ["Offset of field: obs_encoder_info::update"]
2828        [::std::mem::offset_of!(obs_encoder_info, update) - 80usize];
2829    ["Offset of field: obs_encoder_info::get_extra_data"]
2830        [::std::mem::offset_of!(obs_encoder_info, get_extra_data) - 88usize];
2831    ["Offset of field: obs_encoder_info::get_sei_data"]
2832        [::std::mem::offset_of!(obs_encoder_info, get_sei_data) - 96usize];
2833    ["Offset of field: obs_encoder_info::get_audio_info"]
2834        [::std::mem::offset_of!(obs_encoder_info, get_audio_info) - 104usize];
2835    ["Offset of field: obs_encoder_info::get_video_info"]
2836        [::std::mem::offset_of!(obs_encoder_info, get_video_info) - 112usize];
2837    ["Offset of field: obs_encoder_info::type_data"]
2838        [::std::mem::offset_of!(obs_encoder_info, type_data) - 120usize];
2839    ["Offset of field: obs_encoder_info::free_type_data"]
2840        [::std::mem::offset_of!(obs_encoder_info, free_type_data) - 128usize];
2841    ["Offset of field: obs_encoder_info::caps"]
2842        [::std::mem::offset_of!(obs_encoder_info, caps) - 136usize];
2843    ["Offset of field: obs_encoder_info::get_defaults2"]
2844        [::std::mem::offset_of!(obs_encoder_info, get_defaults2) - 144usize];
2845    ["Offset of field: obs_encoder_info::get_properties2"]
2846        [::std::mem::offset_of!(obs_encoder_info, get_properties2) - 152usize];
2847    ["Offset of field: obs_encoder_info::encode_texture"]
2848        [::std::mem::offset_of!(obs_encoder_info, encode_texture) - 160usize];
2849    ["Offset of field: obs_encoder_info::encode_texture2"]
2850        [::std::mem::offset_of!(obs_encoder_info, encode_texture2) - 168usize];
2851    ["Offset of field: obs_encoder_info::get_priming_samples"]
2852        [::std::mem::offset_of!(obs_encoder_info, get_priming_samples) - 176usize];
2853};
2854#[repr(C)]
2855pub struct obs_output_info {
2856    pub id: *const ::std::os::raw::c_char,
2857    pub flags: u32,
2858    pub get_name: ::std::option::Option<
2859        unsafe extern "C" fn(
2860            type_data: *mut ::std::os::raw::c_void,
2861        ) -> *const ::std::os::raw::c_char,
2862    >,
2863    pub create: ::std::option::Option<
2864        unsafe extern "C" fn(
2865            settings: *mut obs_data_t,
2866            output: *mut obs_output_t,
2867        ) -> *mut ::std::os::raw::c_void,
2868    >,
2869    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2870    pub start:
2871        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
2872    pub stop:
2873        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, ts: u64)>,
2874    pub raw_video: ::std::option::Option<
2875        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frame: *mut video_data),
2876    >,
2877    pub raw_audio: ::std::option::Option<
2878        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frames: *mut audio_data),
2879    >,
2880    pub encoded_packet: ::std::option::Option<
2881        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, packet: *mut encoder_packet),
2882    >,
2883    pub update: ::std::option::Option<
2884        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2885    >,
2886    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2887    pub get_properties: ::std::option::Option<
2888        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2889    >,
2890    pub unused1: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2891    pub get_total_bytes:
2892        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u64>,
2893    pub get_dropped_frames: ::std::option::Option<
2894        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2895    >,
2896    pub type_data: *mut ::std::os::raw::c_void,
2897    pub free_type_data:
2898        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2899    pub get_congestion:
2900        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> f32>,
2901    pub get_connect_time_ms: ::std::option::Option<
2902        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2903    >,
2904    pub encoded_video_codecs: *const ::std::os::raw::c_char,
2905    pub encoded_audio_codecs: *const ::std::os::raw::c_char,
2906    pub raw_audio2: ::std::option::Option<
2907        unsafe extern "C" fn(
2908            data: *mut ::std::os::raw::c_void,
2909            idx: usize,
2910            frames: *mut audio_data,
2911        ),
2912    >,
2913    pub protocols: *const ::std::os::raw::c_char,
2914}
2915#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2916const _: () = {
2917    ["Size of obs_output_info"][::std::mem::size_of::<obs_output_info>() - 192usize];
2918    ["Alignment of obs_output_info"][::std::mem::align_of::<obs_output_info>() - 8usize];
2919    ["Offset of field: obs_output_info::id"][::std::mem::offset_of!(obs_output_info, id) - 0usize];
2920    ["Offset of field: obs_output_info::flags"]
2921        [::std::mem::offset_of!(obs_output_info, flags) - 8usize];
2922    ["Offset of field: obs_output_info::get_name"]
2923        [::std::mem::offset_of!(obs_output_info, get_name) - 16usize];
2924    ["Offset of field: obs_output_info::create"]
2925        [::std::mem::offset_of!(obs_output_info, create) - 24usize];
2926    ["Offset of field: obs_output_info::destroy"]
2927        [::std::mem::offset_of!(obs_output_info, destroy) - 32usize];
2928    ["Offset of field: obs_output_info::start"]
2929        [::std::mem::offset_of!(obs_output_info, start) - 40usize];
2930    ["Offset of field: obs_output_info::stop"]
2931        [::std::mem::offset_of!(obs_output_info, stop) - 48usize];
2932    ["Offset of field: obs_output_info::raw_video"]
2933        [::std::mem::offset_of!(obs_output_info, raw_video) - 56usize];
2934    ["Offset of field: obs_output_info::raw_audio"]
2935        [::std::mem::offset_of!(obs_output_info, raw_audio) - 64usize];
2936    ["Offset of field: obs_output_info::encoded_packet"]
2937        [::std::mem::offset_of!(obs_output_info, encoded_packet) - 72usize];
2938    ["Offset of field: obs_output_info::update"]
2939        [::std::mem::offset_of!(obs_output_info, update) - 80usize];
2940    ["Offset of field: obs_output_info::get_defaults"]
2941        [::std::mem::offset_of!(obs_output_info, get_defaults) - 88usize];
2942    ["Offset of field: obs_output_info::get_properties"]
2943        [::std::mem::offset_of!(obs_output_info, get_properties) - 96usize];
2944    ["Offset of field: obs_output_info::unused1"]
2945        [::std::mem::offset_of!(obs_output_info, unused1) - 104usize];
2946    ["Offset of field: obs_output_info::get_total_bytes"]
2947        [::std::mem::offset_of!(obs_output_info, get_total_bytes) - 112usize];
2948    ["Offset of field: obs_output_info::get_dropped_frames"]
2949        [::std::mem::offset_of!(obs_output_info, get_dropped_frames) - 120usize];
2950    ["Offset of field: obs_output_info::type_data"]
2951        [::std::mem::offset_of!(obs_output_info, type_data) - 128usize];
2952    ["Offset of field: obs_output_info::free_type_data"]
2953        [::std::mem::offset_of!(obs_output_info, free_type_data) - 136usize];
2954    ["Offset of field: obs_output_info::get_congestion"]
2955        [::std::mem::offset_of!(obs_output_info, get_congestion) - 144usize];
2956    ["Offset of field: obs_output_info::get_connect_time_ms"]
2957        [::std::mem::offset_of!(obs_output_info, get_connect_time_ms) - 152usize];
2958    ["Offset of field: obs_output_info::encoded_video_codecs"]
2959        [::std::mem::offset_of!(obs_output_info, encoded_video_codecs) - 160usize];
2960    ["Offset of field: obs_output_info::encoded_audio_codecs"]
2961        [::std::mem::offset_of!(obs_output_info, encoded_audio_codecs) - 168usize];
2962    ["Offset of field: obs_output_info::raw_audio2"]
2963        [::std::mem::offset_of!(obs_output_info, raw_audio2) - 176usize];
2964    ["Offset of field: obs_output_info::protocols"]
2965        [::std::mem::offset_of!(obs_output_info, protocols) - 184usize];
2966};
2967#[repr(C)]
2968#[derive(Debug, Copy, Clone)]
2969pub struct obs_service_resolution {
2970    pub cx: ::std::os::raw::c_int,
2971    pub cy: ::std::os::raw::c_int,
2972}
2973#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2974const _: () = {
2975    ["Size of obs_service_resolution"][::std::mem::size_of::<obs_service_resolution>() - 8usize];
2976    ["Alignment of obs_service_resolution"]
2977        [::std::mem::align_of::<obs_service_resolution>() - 4usize];
2978    ["Offset of field: obs_service_resolution::cx"]
2979        [::std::mem::offset_of!(obs_service_resolution, cx) - 0usize];
2980    ["Offset of field: obs_service_resolution::cy"]
2981        [::std::mem::offset_of!(obs_service_resolution, cy) - 4usize];
2982};
2983pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_SERVER_URL: obs_service_connect_info =
2984    0;
2985pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_ID: obs_service_connect_info = 2;
2986pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_KEY: obs_service_connect_info =
2987    2;
2988pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_USERNAME: obs_service_connect_info = 4;
2989pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_PASSWORD: obs_service_connect_info = 6;
2990pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_ENCRYPT_PASSPHRASE:
2991    obs_service_connect_info = 8;
2992pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_BEARER_TOKEN: obs_service_connect_info =
2993    10;
2994pub type obs_service_connect_info = ::std::os::raw::c_int;
2995#[repr(C)]
2996#[derive(Debug, Copy, Clone)]
2997pub struct obs_service_info {
2998    pub id: *const ::std::os::raw::c_char,
2999    pub get_name: ::std::option::Option<
3000        unsafe extern "C" fn(
3001            type_data: *mut ::std::os::raw::c_void,
3002        ) -> *const ::std::os::raw::c_char,
3003    >,
3004    pub create: ::std::option::Option<
3005        unsafe extern "C" fn(
3006            settings: *mut obs_data_t,
3007            service: *mut obs_service_t,
3008        ) -> *mut ::std::os::raw::c_void,
3009    >,
3010    pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3011    pub activate: ::std::option::Option<
3012        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3013    >,
3014    pub deactivate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3015    pub update: ::std::option::Option<
3016        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3017    >,
3018    pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
3019    pub get_properties: ::std::option::Option<
3020        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
3021    >,
3022#[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"]
3023    pub initialize: ::std::option::Option<
3024        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, output: *mut obs_output_t) -> bool,
3025    >,
3026    pub get_url: ::std::option::Option<
3027        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3028    >,
3029    pub get_key: ::std::option::Option<
3030        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3031    >,
3032    pub get_username: ::std::option::Option<
3033        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3034    >,
3035    pub get_password: ::std::option::Option<
3036        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3037    >,
3038    pub deprecated_1: ::std::option::Option<unsafe extern "C" fn() -> bool>,
3039    pub apply_encoder_settings: ::std::option::Option<
3040        unsafe extern "C" fn(
3041            data: *mut ::std::os::raw::c_void,
3042            video_encoder_settings: *mut obs_data_t,
3043            audio_encoder_settings: *mut obs_data_t,
3044        ),
3045    >,
3046    pub type_data: *mut ::std::os::raw::c_void,
3047    pub free_type_data:
3048        ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
3049    pub get_output_type: ::std::option::Option<
3050        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3051    >,
3052    pub get_supported_resolutions: ::std::option::Option<
3053        unsafe extern "C" fn(
3054            data: *mut ::std::os::raw::c_void,
3055            resolutions: *mut *mut obs_service_resolution,
3056            count: *mut usize,
3057        ),
3058    >,
3059    pub get_max_fps: ::std::option::Option<
3060        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, fps: *mut ::std::os::raw::c_int),
3061    >,
3062    pub get_max_bitrate: ::std::option::Option<
3063        unsafe extern "C" fn(
3064            data: *mut ::std::os::raw::c_void,
3065            video_bitrate: *mut ::std::os::raw::c_int,
3066            audio_bitrate: *mut ::std::os::raw::c_int,
3067        ),
3068    >,
3069    pub get_supported_video_codecs: ::std::option::Option<
3070        unsafe extern "C" fn(
3071            data: *mut ::std::os::raw::c_void,
3072        ) -> *mut *const ::std::os::raw::c_char,
3073    >,
3074    pub get_protocol: ::std::option::Option<
3075        unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3076    >,
3077    pub get_supported_audio_codecs: ::std::option::Option<
3078        unsafe extern "C" fn(
3079            data: *mut ::std::os::raw::c_void,
3080        ) -> *mut *const ::std::os::raw::c_char,
3081    >,
3082    pub get_connect_info: ::std::option::Option<
3083        unsafe extern "C" fn(
3084            data: *mut ::std::os::raw::c_void,
3085            type_: u32,
3086        ) -> *const ::std::os::raw::c_char,
3087    >,
3088    pub can_try_to_connect:
3089        ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
3090}
3091#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3092const _: () = {
3093    ["Size of obs_service_info"][::std::mem::size_of::<obs_service_info>() - 216usize];
3094    ["Alignment of obs_service_info"][::std::mem::align_of::<obs_service_info>() - 8usize];
3095    ["Offset of field: obs_service_info::id"]
3096        [::std::mem::offset_of!(obs_service_info, id) - 0usize];
3097    ["Offset of field: obs_service_info::get_name"]
3098        [::std::mem::offset_of!(obs_service_info, get_name) - 8usize];
3099    ["Offset of field: obs_service_info::create"]
3100        [::std::mem::offset_of!(obs_service_info, create) - 16usize];
3101    ["Offset of field: obs_service_info::destroy"]
3102        [::std::mem::offset_of!(obs_service_info, destroy) - 24usize];
3103    ["Offset of field: obs_service_info::activate"]
3104        [::std::mem::offset_of!(obs_service_info, activate) - 32usize];
3105    ["Offset of field: obs_service_info::deactivate"]
3106        [::std::mem::offset_of!(obs_service_info, deactivate) - 40usize];
3107    ["Offset of field: obs_service_info::update"]
3108        [::std::mem::offset_of!(obs_service_info, update) - 48usize];
3109    ["Offset of field: obs_service_info::get_defaults"]
3110        [::std::mem::offset_of!(obs_service_info, get_defaults) - 56usize];
3111    ["Offset of field: obs_service_info::get_properties"]
3112        [::std::mem::offset_of!(obs_service_info, get_properties) - 64usize];
3113    ["Offset of field: obs_service_info::initialize"]
3114        [::std::mem::offset_of!(obs_service_info, initialize) - 72usize];
3115    ["Offset of field: obs_service_info::get_url"]
3116        [::std::mem::offset_of!(obs_service_info, get_url) - 80usize];
3117    ["Offset of field: obs_service_info::get_key"]
3118        [::std::mem::offset_of!(obs_service_info, get_key) - 88usize];
3119    ["Offset of field: obs_service_info::get_username"]
3120        [::std::mem::offset_of!(obs_service_info, get_username) - 96usize];
3121    ["Offset of field: obs_service_info::get_password"]
3122        [::std::mem::offset_of!(obs_service_info, get_password) - 104usize];
3123    ["Offset of field: obs_service_info::deprecated_1"]
3124        [::std::mem::offset_of!(obs_service_info, deprecated_1) - 112usize];
3125    ["Offset of field: obs_service_info::apply_encoder_settings"]
3126        [::std::mem::offset_of!(obs_service_info, apply_encoder_settings) - 120usize];
3127    ["Offset of field: obs_service_info::type_data"]
3128        [::std::mem::offset_of!(obs_service_info, type_data) - 128usize];
3129    ["Offset of field: obs_service_info::free_type_data"]
3130        [::std::mem::offset_of!(obs_service_info, free_type_data) - 136usize];
3131    ["Offset of field: obs_service_info::get_output_type"]
3132        [::std::mem::offset_of!(obs_service_info, get_output_type) - 144usize];
3133    ["Offset of field: obs_service_info::get_supported_resolutions"]
3134        [::std::mem::offset_of!(obs_service_info, get_supported_resolutions) - 152usize];
3135    ["Offset of field: obs_service_info::get_max_fps"]
3136        [::std::mem::offset_of!(obs_service_info, get_max_fps) - 160usize];
3137    ["Offset of field: obs_service_info::get_max_bitrate"]
3138        [::std::mem::offset_of!(obs_service_info, get_max_bitrate) - 168usize];
3139    ["Offset of field: obs_service_info::get_supported_video_codecs"]
3140        [::std::mem::offset_of!(obs_service_info, get_supported_video_codecs) - 176usize];
3141    ["Offset of field: obs_service_info::get_protocol"]
3142        [::std::mem::offset_of!(obs_service_info, get_protocol) - 184usize];
3143    ["Offset of field: obs_service_info::get_supported_audio_codecs"]
3144        [::std::mem::offset_of!(obs_service_info, get_supported_audio_codecs) - 192usize];
3145    ["Offset of field: obs_service_info::get_connect_info"]
3146        [::std::mem::offset_of!(obs_service_info, get_connect_info) - 200usize];
3147    ["Offset of field: obs_service_info::can_try_to_connect"]
3148        [::std::mem::offset_of!(obs_service_info, can_try_to_connect) - 208usize];
3149};
3150#[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."]
3151pub const obs_fader_type_OBS_FADER_CUBIC: obs_fader_type = 0;
3152#[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"]
3153pub const obs_fader_type_OBS_FADER_IEC: obs_fader_type = 1;
3154#[doc = " @brief Logarithmic fader"]
3155pub const obs_fader_type_OBS_FADER_LOG: obs_fader_type = 2;
3156#[doc = " @brief Fader types"]
3157pub type obs_fader_type = ::std::os::raw::c_int;
3158#[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."]
3159pub const obs_peak_meter_type_SAMPLE_PEAK_METER: obs_peak_meter_type = 0;
3160#[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."]
3161pub const obs_peak_meter_type_TRUE_PEAK_METER: obs_peak_meter_type = 1;
3162#[doc = " @brief Peak meter types"]
3163pub type obs_peak_meter_type = ::std::os::raw::c_int;
3164pub type obs_fader_changed_t =
3165    ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, db: f32)>;
3166pub type obs_volmeter_updated_t = ::std::option::Option<
3167    unsafe extern "C" fn(
3168        param: *mut ::std::os::raw::c_void,
3169        magnitude: *const f32,
3170        peak: *const f32,
3171        input_peak: *const f32,
3172    ),
3173>;
3174pub type obs_fader_conversion_t = ::std::option::Option<unsafe extern "C" fn(val: f32) -> f32>;
3175pub type obs_hotkey_id = usize;
3176pub type obs_hotkey_pair_id = usize;
3177pub const obs_key_OBS_KEY_NONE: obs_key = 0;
3178pub const obs_key_OBS_KEY_RETURN: obs_key = 1;
3179pub const obs_key_OBS_KEY_ENTER: obs_key = 2;
3180pub const obs_key_OBS_KEY_ESCAPE: obs_key = 3;
3181pub const obs_key_OBS_KEY_TAB: obs_key = 4;
3182pub const obs_key_OBS_KEY_BACKTAB: obs_key = 5;
3183pub const obs_key_OBS_KEY_BACKSPACE: obs_key = 6;
3184pub const obs_key_OBS_KEY_INSERT: obs_key = 7;
3185pub const obs_key_OBS_KEY_DELETE: obs_key = 8;
3186pub const obs_key_OBS_KEY_PAUSE: obs_key = 9;
3187pub const obs_key_OBS_KEY_PRINT: obs_key = 10;
3188pub const obs_key_OBS_KEY_SYSREQ: obs_key = 11;
3189pub const obs_key_OBS_KEY_CLEAR: obs_key = 12;
3190pub const obs_key_OBS_KEY_HOME: obs_key = 13;
3191pub const obs_key_OBS_KEY_END: obs_key = 14;
3192pub const obs_key_OBS_KEY_LEFT: obs_key = 15;
3193pub const obs_key_OBS_KEY_UP: obs_key = 16;
3194pub const obs_key_OBS_KEY_RIGHT: obs_key = 17;
3195pub const obs_key_OBS_KEY_DOWN: obs_key = 18;
3196pub const obs_key_OBS_KEY_PAGEUP: obs_key = 19;
3197pub const obs_key_OBS_KEY_PAGEDOWN: obs_key = 20;
3198pub const obs_key_OBS_KEY_SHIFT: obs_key = 21;
3199pub const obs_key_OBS_KEY_CONTROL: obs_key = 22;
3200pub const obs_key_OBS_KEY_META: obs_key = 23;
3201pub const obs_key_OBS_KEY_ALT: obs_key = 24;
3202pub const obs_key_OBS_KEY_ALTGR: obs_key = 25;
3203pub const obs_key_OBS_KEY_CAPSLOCK: obs_key = 26;
3204pub const obs_key_OBS_KEY_NUMLOCK: obs_key = 27;
3205pub const obs_key_OBS_KEY_SCROLLLOCK: obs_key = 28;
3206pub const obs_key_OBS_KEY_F1: obs_key = 29;
3207pub const obs_key_OBS_KEY_F2: obs_key = 30;
3208pub const obs_key_OBS_KEY_F3: obs_key = 31;
3209pub const obs_key_OBS_KEY_F4: obs_key = 32;
3210pub const obs_key_OBS_KEY_F5: obs_key = 33;
3211pub const obs_key_OBS_KEY_F6: obs_key = 34;
3212pub const obs_key_OBS_KEY_F7: obs_key = 35;
3213pub const obs_key_OBS_KEY_F8: obs_key = 36;
3214pub const obs_key_OBS_KEY_F9: obs_key = 37;
3215pub const obs_key_OBS_KEY_F10: obs_key = 38;
3216pub const obs_key_OBS_KEY_F11: obs_key = 39;
3217pub const obs_key_OBS_KEY_F12: obs_key = 40;
3218pub const obs_key_OBS_KEY_F13: obs_key = 41;
3219pub const obs_key_OBS_KEY_F14: obs_key = 42;
3220pub const obs_key_OBS_KEY_F15: obs_key = 43;
3221pub const obs_key_OBS_KEY_F16: obs_key = 44;
3222pub const obs_key_OBS_KEY_F17: obs_key = 45;
3223pub const obs_key_OBS_KEY_F18: obs_key = 46;
3224pub const obs_key_OBS_KEY_F19: obs_key = 47;
3225pub const obs_key_OBS_KEY_F20: obs_key = 48;
3226pub const obs_key_OBS_KEY_F21: obs_key = 49;
3227pub const obs_key_OBS_KEY_F22: obs_key = 50;
3228pub const obs_key_OBS_KEY_F23: obs_key = 51;
3229pub const obs_key_OBS_KEY_F24: obs_key = 52;
3230pub const obs_key_OBS_KEY_F25: obs_key = 53;
3231pub const obs_key_OBS_KEY_F26: obs_key = 54;
3232pub const obs_key_OBS_KEY_F27: obs_key = 55;
3233pub const obs_key_OBS_KEY_F28: obs_key = 56;
3234pub const obs_key_OBS_KEY_F29: obs_key = 57;
3235pub const obs_key_OBS_KEY_F30: obs_key = 58;
3236pub const obs_key_OBS_KEY_F31: obs_key = 59;
3237pub const obs_key_OBS_KEY_F32: obs_key = 60;
3238pub const obs_key_OBS_KEY_F33: obs_key = 61;
3239pub const obs_key_OBS_KEY_F34: obs_key = 62;
3240pub const obs_key_OBS_KEY_F35: obs_key = 63;
3241pub const obs_key_OBS_KEY_MENU: obs_key = 64;
3242pub const obs_key_OBS_KEY_HYPER_L: obs_key = 65;
3243pub const obs_key_OBS_KEY_HYPER_R: obs_key = 66;
3244pub const obs_key_OBS_KEY_HELP: obs_key = 67;
3245pub const obs_key_OBS_KEY_DIRECTION_L: obs_key = 68;
3246pub const obs_key_OBS_KEY_DIRECTION_R: obs_key = 69;
3247pub const obs_key_OBS_KEY_SPACE: obs_key = 70;
3248pub const obs_key_OBS_KEY_EXCLAM: obs_key = 71;
3249pub const obs_key_OBS_KEY_QUOTEDBL: obs_key = 72;
3250pub const obs_key_OBS_KEY_NUMBERSIGN: obs_key = 73;
3251pub const obs_key_OBS_KEY_DOLLAR: obs_key = 74;
3252pub const obs_key_OBS_KEY_PERCENT: obs_key = 75;
3253pub const obs_key_OBS_KEY_AMPERSAND: obs_key = 76;
3254pub const obs_key_OBS_KEY_APOSTROPHE: obs_key = 77;
3255pub const obs_key_OBS_KEY_PARENLEFT: obs_key = 78;
3256pub const obs_key_OBS_KEY_PARENRIGHT: obs_key = 79;
3257pub const obs_key_OBS_KEY_ASTERISK: obs_key = 80;
3258pub const obs_key_OBS_KEY_PLUS: obs_key = 81;
3259pub const obs_key_OBS_KEY_COMMA: obs_key = 82;
3260pub const obs_key_OBS_KEY_MINUS: obs_key = 83;
3261pub const obs_key_OBS_KEY_PERIOD: obs_key = 84;
3262pub const obs_key_OBS_KEY_SLASH: obs_key = 85;
3263pub const obs_key_OBS_KEY_0: obs_key = 86;
3264pub const obs_key_OBS_KEY_1: obs_key = 87;
3265pub const obs_key_OBS_KEY_2: obs_key = 88;
3266pub const obs_key_OBS_KEY_3: obs_key = 89;
3267pub const obs_key_OBS_KEY_4: obs_key = 90;
3268pub const obs_key_OBS_KEY_5: obs_key = 91;
3269pub const obs_key_OBS_KEY_6: obs_key = 92;
3270pub const obs_key_OBS_KEY_7: obs_key = 93;
3271pub const obs_key_OBS_KEY_8: obs_key = 94;
3272pub const obs_key_OBS_KEY_9: obs_key = 95;
3273pub const obs_key_OBS_KEY_NUMEQUAL: obs_key = 96;
3274pub const obs_key_OBS_KEY_NUMASTERISK: obs_key = 97;
3275pub const obs_key_OBS_KEY_NUMPLUS: obs_key = 98;
3276pub const obs_key_OBS_KEY_NUMCOMMA: obs_key = 99;
3277pub const obs_key_OBS_KEY_NUMMINUS: obs_key = 100;
3278pub const obs_key_OBS_KEY_NUMPERIOD: obs_key = 101;
3279pub const obs_key_OBS_KEY_NUMSLASH: obs_key = 102;
3280pub const obs_key_OBS_KEY_NUM0: obs_key = 103;
3281pub const obs_key_OBS_KEY_NUM1: obs_key = 104;
3282pub const obs_key_OBS_KEY_NUM2: obs_key = 105;
3283pub const obs_key_OBS_KEY_NUM3: obs_key = 106;
3284pub const obs_key_OBS_KEY_NUM4: obs_key = 107;
3285pub const obs_key_OBS_KEY_NUM5: obs_key = 108;
3286pub const obs_key_OBS_KEY_NUM6: obs_key = 109;
3287pub const obs_key_OBS_KEY_NUM7: obs_key = 110;
3288pub const obs_key_OBS_KEY_NUM8: obs_key = 111;
3289pub const obs_key_OBS_KEY_NUM9: obs_key = 112;
3290pub const obs_key_OBS_KEY_COLON: obs_key = 113;
3291pub const obs_key_OBS_KEY_SEMICOLON: obs_key = 114;
3292pub const obs_key_OBS_KEY_QUOTE: obs_key = 115;
3293pub const obs_key_OBS_KEY_LESS: obs_key = 116;
3294pub const obs_key_OBS_KEY_EQUAL: obs_key = 117;
3295pub const obs_key_OBS_KEY_GREATER: obs_key = 118;
3296pub const obs_key_OBS_KEY_QUESTION: obs_key = 119;
3297pub const obs_key_OBS_KEY_AT: obs_key = 120;
3298pub const obs_key_OBS_KEY_A: obs_key = 121;
3299pub const obs_key_OBS_KEY_B: obs_key = 122;
3300pub const obs_key_OBS_KEY_C: obs_key = 123;
3301pub const obs_key_OBS_KEY_D: obs_key = 124;
3302pub const obs_key_OBS_KEY_E: obs_key = 125;
3303pub const obs_key_OBS_KEY_F: obs_key = 126;
3304pub const obs_key_OBS_KEY_G: obs_key = 127;
3305pub const obs_key_OBS_KEY_H: obs_key = 128;
3306pub const obs_key_OBS_KEY_I: obs_key = 129;
3307pub const obs_key_OBS_KEY_J: obs_key = 130;
3308pub const obs_key_OBS_KEY_K: obs_key = 131;
3309pub const obs_key_OBS_KEY_L: obs_key = 132;
3310pub const obs_key_OBS_KEY_M: obs_key = 133;
3311pub const obs_key_OBS_KEY_N: obs_key = 134;
3312pub const obs_key_OBS_KEY_O: obs_key = 135;
3313pub const obs_key_OBS_KEY_P: obs_key = 136;
3314pub const obs_key_OBS_KEY_Q: obs_key = 137;
3315pub const obs_key_OBS_KEY_R: obs_key = 138;
3316pub const obs_key_OBS_KEY_S: obs_key = 139;
3317pub const obs_key_OBS_KEY_T: obs_key = 140;
3318pub const obs_key_OBS_KEY_U: obs_key = 141;
3319pub const obs_key_OBS_KEY_V: obs_key = 142;
3320pub const obs_key_OBS_KEY_W: obs_key = 143;
3321pub const obs_key_OBS_KEY_X: obs_key = 144;
3322pub const obs_key_OBS_KEY_Y: obs_key = 145;
3323pub const obs_key_OBS_KEY_Z: obs_key = 146;
3324pub const obs_key_OBS_KEY_BRACKETLEFT: obs_key = 147;
3325pub const obs_key_OBS_KEY_BACKSLASH: obs_key = 148;
3326pub const obs_key_OBS_KEY_BRACKETRIGHT: obs_key = 149;
3327pub const obs_key_OBS_KEY_ASCIICIRCUM: obs_key = 150;
3328pub const obs_key_OBS_KEY_UNDERSCORE: obs_key = 151;
3329pub const obs_key_OBS_KEY_QUOTELEFT: obs_key = 152;
3330pub const obs_key_OBS_KEY_BRACELEFT: obs_key = 153;
3331pub const obs_key_OBS_KEY_BAR: obs_key = 154;
3332pub const obs_key_OBS_KEY_BRACERIGHT: obs_key = 155;
3333pub const obs_key_OBS_KEY_ASCIITILDE: obs_key = 156;
3334pub const obs_key_OBS_KEY_NOBREAKSPACE: obs_key = 157;
3335pub const obs_key_OBS_KEY_EXCLAMDOWN: obs_key = 158;
3336pub const obs_key_OBS_KEY_CENT: obs_key = 159;
3337pub const obs_key_OBS_KEY_STERLING: obs_key = 160;
3338pub const obs_key_OBS_KEY_CURRENCY: obs_key = 161;
3339pub const obs_key_OBS_KEY_YEN: obs_key = 162;
3340pub const obs_key_OBS_KEY_BROKENBAR: obs_key = 163;
3341pub const obs_key_OBS_KEY_SECTION: obs_key = 164;
3342pub const obs_key_OBS_KEY_DIAERESIS: obs_key = 165;
3343pub const obs_key_OBS_KEY_COPYRIGHT: obs_key = 166;
3344pub const obs_key_OBS_KEY_ORDFEMININE: obs_key = 167;
3345pub const obs_key_OBS_KEY_GUILLEMOTLEFT: obs_key = 168;
3346pub const obs_key_OBS_KEY_NOTSIGN: obs_key = 169;
3347pub const obs_key_OBS_KEY_HYPHEN: obs_key = 170;
3348pub const obs_key_OBS_KEY_REGISTERED: obs_key = 171;
3349pub const obs_key_OBS_KEY_MACRON: obs_key = 172;
3350pub const obs_key_OBS_KEY_DEGREE: obs_key = 173;
3351pub const obs_key_OBS_KEY_PLUSMINUS: obs_key = 174;
3352pub const obs_key_OBS_KEY_TWOSUPERIOR: obs_key = 175;
3353pub const obs_key_OBS_KEY_THREESUPERIOR: obs_key = 176;
3354pub const obs_key_OBS_KEY_ACUTE: obs_key = 177;
3355pub const obs_key_OBS_KEY_MU: obs_key = 178;
3356pub const obs_key_OBS_KEY_PARAGRAPH: obs_key = 179;
3357pub const obs_key_OBS_KEY_PERIODCENTERED: obs_key = 180;
3358pub const obs_key_OBS_KEY_CEDILLA: obs_key = 181;
3359pub const obs_key_OBS_KEY_ONESUPERIOR: obs_key = 182;
3360pub const obs_key_OBS_KEY_MASCULINE: obs_key = 183;
3361pub const obs_key_OBS_KEY_GUILLEMOTRIGHT: obs_key = 184;
3362pub const obs_key_OBS_KEY_ONEQUARTER: obs_key = 185;
3363pub const obs_key_OBS_KEY_ONEHALF: obs_key = 186;
3364pub const obs_key_OBS_KEY_THREEQUARTERS: obs_key = 187;
3365pub const obs_key_OBS_KEY_QUESTIONDOWN: obs_key = 188;
3366pub const obs_key_OBS_KEY_AGRAVE: obs_key = 189;
3367pub const obs_key_OBS_KEY_AACUTE: obs_key = 190;
3368pub const obs_key_OBS_KEY_ACIRCUMFLEX: obs_key = 191;
3369pub const obs_key_OBS_KEY_ATILDE: obs_key = 192;
3370pub const obs_key_OBS_KEY_ADIAERESIS: obs_key = 193;
3371pub const obs_key_OBS_KEY_ARING: obs_key = 194;
3372pub const obs_key_OBS_KEY_AE: obs_key = 195;
3373pub const obs_key_OBS_KEY_CCEDILLA: obs_key = 196;
3374pub const obs_key_OBS_KEY_EGRAVE: obs_key = 197;
3375pub const obs_key_OBS_KEY_EACUTE: obs_key = 198;
3376pub const obs_key_OBS_KEY_ECIRCUMFLEX: obs_key = 199;
3377pub const obs_key_OBS_KEY_EDIAERESIS: obs_key = 200;
3378pub const obs_key_OBS_KEY_IGRAVE: obs_key = 201;
3379pub const obs_key_OBS_KEY_IACUTE: obs_key = 202;
3380pub const obs_key_OBS_KEY_ICIRCUMFLEX: obs_key = 203;
3381pub const obs_key_OBS_KEY_IDIAERESIS: obs_key = 204;
3382pub const obs_key_OBS_KEY_ETH: obs_key = 205;
3383pub const obs_key_OBS_KEY_NTILDE: obs_key = 206;
3384pub const obs_key_OBS_KEY_OGRAVE: obs_key = 207;
3385pub const obs_key_OBS_KEY_OACUTE: obs_key = 208;
3386pub const obs_key_OBS_KEY_OCIRCUMFLEX: obs_key = 209;
3387pub const obs_key_OBS_KEY_OTILDE: obs_key = 210;
3388pub const obs_key_OBS_KEY_ODIAERESIS: obs_key = 211;
3389pub const obs_key_OBS_KEY_MULTIPLY: obs_key = 212;
3390pub const obs_key_OBS_KEY_OOBLIQUE: obs_key = 213;
3391pub const obs_key_OBS_KEY_UGRAVE: obs_key = 214;
3392pub const obs_key_OBS_KEY_UACUTE: obs_key = 215;
3393pub const obs_key_OBS_KEY_UCIRCUMFLEX: obs_key = 216;
3394pub const obs_key_OBS_KEY_UDIAERESIS: obs_key = 217;
3395pub const obs_key_OBS_KEY_YACUTE: obs_key = 218;
3396pub const obs_key_OBS_KEY_THORN: obs_key = 219;
3397pub const obs_key_OBS_KEY_SSHARP: obs_key = 220;
3398pub const obs_key_OBS_KEY_DIVISION: obs_key = 221;
3399pub const obs_key_OBS_KEY_YDIAERESIS: obs_key = 222;
3400pub const obs_key_OBS_KEY_MULTI_KEY: obs_key = 223;
3401pub const obs_key_OBS_KEY_CODEINPUT: obs_key = 224;
3402pub const obs_key_OBS_KEY_SINGLECANDIDATE: obs_key = 225;
3403pub const obs_key_OBS_KEY_MULTIPLECANDIDATE: obs_key = 226;
3404pub const obs_key_OBS_KEY_PREVIOUSCANDIDATE: obs_key = 227;
3405pub const obs_key_OBS_KEY_MODE_SWITCH: obs_key = 228;
3406pub const obs_key_OBS_KEY_KANJI: obs_key = 229;
3407pub const obs_key_OBS_KEY_MUHENKAN: obs_key = 230;
3408pub const obs_key_OBS_KEY_HENKAN: obs_key = 231;
3409pub const obs_key_OBS_KEY_ROMAJI: obs_key = 232;
3410pub const obs_key_OBS_KEY_HIRAGANA: obs_key = 233;
3411pub const obs_key_OBS_KEY_KATAKANA: obs_key = 234;
3412pub const obs_key_OBS_KEY_HIRAGANA_KATAKANA: obs_key = 235;
3413pub const obs_key_OBS_KEY_ZENKAKU: obs_key = 236;
3414pub const obs_key_OBS_KEY_HANKAKU: obs_key = 237;
3415pub const obs_key_OBS_KEY_ZENKAKU_HANKAKU: obs_key = 238;
3416pub const obs_key_OBS_KEY_TOUROKU: obs_key = 239;
3417pub const obs_key_OBS_KEY_MASSYO: obs_key = 240;
3418pub const obs_key_OBS_KEY_KANA_LOCK: obs_key = 241;
3419pub const obs_key_OBS_KEY_KANA_SHIFT: obs_key = 242;
3420pub const obs_key_OBS_KEY_EISU_SHIFT: obs_key = 243;
3421pub const obs_key_OBS_KEY_EISU_TOGGLE: obs_key = 244;
3422pub const obs_key_OBS_KEY_HANGUL: obs_key = 245;
3423pub const obs_key_OBS_KEY_HANGUL_START: obs_key = 246;
3424pub const obs_key_OBS_KEY_HANGUL_END: obs_key = 247;
3425pub const obs_key_OBS_KEY_HANGUL_HANJA: obs_key = 248;
3426pub const obs_key_OBS_KEY_HANGUL_JAMO: obs_key = 249;
3427pub const obs_key_OBS_KEY_HANGUL_ROMAJA: obs_key = 250;
3428pub const obs_key_OBS_KEY_HANGUL_JEONJA: obs_key = 251;
3429pub const obs_key_OBS_KEY_HANGUL_BANJA: obs_key = 252;
3430pub const obs_key_OBS_KEY_HANGUL_PREHANJA: obs_key = 253;
3431pub const obs_key_OBS_KEY_HANGUL_POSTHANJA: obs_key = 254;
3432pub const obs_key_OBS_KEY_HANGUL_SPECIAL: obs_key = 255;
3433pub const obs_key_OBS_KEY_DEAD_GRAVE: obs_key = 256;
3434pub const obs_key_OBS_KEY_DEAD_ACUTE: obs_key = 257;
3435pub const obs_key_OBS_KEY_DEAD_CIRCUMFLEX: obs_key = 258;
3436pub const obs_key_OBS_KEY_DEAD_TILDE: obs_key = 259;
3437pub const obs_key_OBS_KEY_DEAD_MACRON: obs_key = 260;
3438pub const obs_key_OBS_KEY_DEAD_BREVE: obs_key = 261;
3439pub const obs_key_OBS_KEY_DEAD_ABOVEDOT: obs_key = 262;
3440pub const obs_key_OBS_KEY_DEAD_DIAERESIS: obs_key = 263;
3441pub const obs_key_OBS_KEY_DEAD_ABOVERING: obs_key = 264;
3442pub const obs_key_OBS_KEY_DEAD_DOUBLEACUTE: obs_key = 265;
3443pub const obs_key_OBS_KEY_DEAD_CARON: obs_key = 266;
3444pub const obs_key_OBS_KEY_DEAD_CEDILLA: obs_key = 267;
3445pub const obs_key_OBS_KEY_DEAD_OGONEK: obs_key = 268;
3446pub const obs_key_OBS_KEY_DEAD_IOTA: obs_key = 269;
3447pub const obs_key_OBS_KEY_DEAD_VOICED_SOUND: obs_key = 270;
3448pub const obs_key_OBS_KEY_DEAD_SEMIVOICED_SOUND: obs_key = 271;
3449pub const obs_key_OBS_KEY_DEAD_BELOWDOT: obs_key = 272;
3450pub const obs_key_OBS_KEY_DEAD_HOOK: obs_key = 273;
3451pub const obs_key_OBS_KEY_DEAD_HORN: obs_key = 274;
3452pub const obs_key_OBS_KEY_BACK: obs_key = 275;
3453pub const obs_key_OBS_KEY_FORWARD: obs_key = 276;
3454pub const obs_key_OBS_KEY_STOP: obs_key = 277;
3455pub const obs_key_OBS_KEY_REFRESH: obs_key = 278;
3456pub const obs_key_OBS_KEY_VOLUMEDOWN: obs_key = 279;
3457pub const obs_key_OBS_KEY_VOLUMEMUTE: obs_key = 280;
3458pub const obs_key_OBS_KEY_VOLUMEUP: obs_key = 281;
3459pub const obs_key_OBS_KEY_BASSBOOST: obs_key = 282;
3460pub const obs_key_OBS_KEY_BASSUP: obs_key = 283;
3461pub const obs_key_OBS_KEY_BASSDOWN: obs_key = 284;
3462pub const obs_key_OBS_KEY_TREBLEUP: obs_key = 285;
3463pub const obs_key_OBS_KEY_TREBLEDOWN: obs_key = 286;
3464pub const obs_key_OBS_KEY_MEDIAPLAY: obs_key = 287;
3465pub const obs_key_OBS_KEY_MEDIASTOP: obs_key = 288;
3466pub const obs_key_OBS_KEY_MEDIAPREVIOUS: obs_key = 289;
3467pub const obs_key_OBS_KEY_MEDIANEXT: obs_key = 290;
3468pub const obs_key_OBS_KEY_MEDIARECORD: obs_key = 291;
3469pub const obs_key_OBS_KEY_MEDIAPAUSE: obs_key = 292;
3470pub const obs_key_OBS_KEY_MEDIATOGGLEPLAYPAUSE: obs_key = 293;
3471pub const obs_key_OBS_KEY_HOMEPAGE: obs_key = 294;
3472pub const obs_key_OBS_KEY_FAVORITES: obs_key = 295;
3473pub const obs_key_OBS_KEY_SEARCH: obs_key = 296;
3474pub const obs_key_OBS_KEY_STANDBY: obs_key = 297;
3475pub const obs_key_OBS_KEY_OPENURL: obs_key = 298;
3476pub const obs_key_OBS_KEY_LAUNCHMAIL: obs_key = 299;
3477pub const obs_key_OBS_KEY_LAUNCHMEDIA: obs_key = 300;
3478pub const obs_key_OBS_KEY_LAUNCH0: obs_key = 301;
3479pub const obs_key_OBS_KEY_LAUNCH1: obs_key = 302;
3480pub const obs_key_OBS_KEY_LAUNCH2: obs_key = 303;
3481pub const obs_key_OBS_KEY_LAUNCH3: obs_key = 304;
3482pub const obs_key_OBS_KEY_LAUNCH4: obs_key = 305;
3483pub const obs_key_OBS_KEY_LAUNCH5: obs_key = 306;
3484pub const obs_key_OBS_KEY_LAUNCH6: obs_key = 307;
3485pub const obs_key_OBS_KEY_LAUNCH7: obs_key = 308;
3486pub const obs_key_OBS_KEY_LAUNCH8: obs_key = 309;
3487pub const obs_key_OBS_KEY_LAUNCH9: obs_key = 310;
3488pub const obs_key_OBS_KEY_LAUNCHA: obs_key = 311;
3489pub const obs_key_OBS_KEY_LAUNCHB: obs_key = 312;
3490pub const obs_key_OBS_KEY_LAUNCHC: obs_key = 313;
3491pub const obs_key_OBS_KEY_LAUNCHD: obs_key = 314;
3492pub const obs_key_OBS_KEY_LAUNCHE: obs_key = 315;
3493pub const obs_key_OBS_KEY_LAUNCHF: obs_key = 316;
3494pub const obs_key_OBS_KEY_LAUNCHG: obs_key = 317;
3495pub const obs_key_OBS_KEY_LAUNCHH: obs_key = 318;
3496pub const obs_key_OBS_KEY_MONBRIGHTNESSUP: obs_key = 319;
3497pub const obs_key_OBS_KEY_MONBRIGHTNESSDOWN: obs_key = 320;
3498pub const obs_key_OBS_KEY_KEYBOARDLIGHTONOFF: obs_key = 321;
3499pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSUP: obs_key = 322;
3500pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSDOWN: obs_key = 323;
3501pub const obs_key_OBS_KEY_POWEROFF: obs_key = 324;
3502pub const obs_key_OBS_KEY_WAKEUP: obs_key = 325;
3503pub const obs_key_OBS_KEY_EJECT: obs_key = 326;
3504pub const obs_key_OBS_KEY_SCREENSAVER: obs_key = 327;
3505pub const obs_key_OBS_KEY_WWW: obs_key = 328;
3506pub const obs_key_OBS_KEY_MEMO: obs_key = 329;
3507pub const obs_key_OBS_KEY_LIGHTBULB: obs_key = 330;
3508pub const obs_key_OBS_KEY_SHOP: obs_key = 331;
3509pub const obs_key_OBS_KEY_HISTORY: obs_key = 332;
3510pub const obs_key_OBS_KEY_ADDFAVORITE: obs_key = 333;
3511pub const obs_key_OBS_KEY_HOTLINKS: obs_key = 334;
3512pub const obs_key_OBS_KEY_BRIGHTNESSADJUST: obs_key = 335;
3513pub const obs_key_OBS_KEY_FINANCE: obs_key = 336;
3514pub const obs_key_OBS_KEY_COMMUNITY: obs_key = 337;
3515pub const obs_key_OBS_KEY_AUDIOREWIND: obs_key = 338;
3516pub const obs_key_OBS_KEY_BACKFORWARD: obs_key = 339;
3517pub const obs_key_OBS_KEY_APPLICATIONLEFT: obs_key = 340;
3518pub const obs_key_OBS_KEY_APPLICATIONRIGHT: obs_key = 341;
3519pub const obs_key_OBS_KEY_BOOK: obs_key = 342;
3520pub const obs_key_OBS_KEY_CD: obs_key = 343;
3521pub const obs_key_OBS_KEY_CALCULATOR: obs_key = 344;
3522pub const obs_key_OBS_KEY_TODOLIST: obs_key = 345;
3523pub const obs_key_OBS_KEY_CLEARGRAB: obs_key = 346;
3524pub const obs_key_OBS_KEY_CLOSE: obs_key = 347;
3525pub const obs_key_OBS_KEY_COPY: obs_key = 348;
3526pub const obs_key_OBS_KEY_CUT: obs_key = 349;
3527pub const obs_key_OBS_KEY_DISPLAY: obs_key = 350;
3528pub const obs_key_OBS_KEY_DOS: obs_key = 351;
3529pub const obs_key_OBS_KEY_DOCUMENTS: obs_key = 352;
3530pub const obs_key_OBS_KEY_EXCEL: obs_key = 353;
3531pub const obs_key_OBS_KEY_EXPLORER: obs_key = 354;
3532pub const obs_key_OBS_KEY_GAME: obs_key = 355;
3533pub const obs_key_OBS_KEY_GO: obs_key = 356;
3534pub const obs_key_OBS_KEY_ITOUCH: obs_key = 357;
3535pub const obs_key_OBS_KEY_LOGOFF: obs_key = 358;
3536pub const obs_key_OBS_KEY_MARKET: obs_key = 359;
3537pub const obs_key_OBS_KEY_MEETING: obs_key = 360;
3538pub const obs_key_OBS_KEY_MENUKB: obs_key = 361;
3539pub const obs_key_OBS_KEY_MENUPB: obs_key = 362;
3540pub const obs_key_OBS_KEY_MYSITES: obs_key = 363;
3541pub const obs_key_OBS_KEY_NEWS: obs_key = 364;
3542pub const obs_key_OBS_KEY_OFFICEHOME: obs_key = 365;
3543pub const obs_key_OBS_KEY_OPTION: obs_key = 366;
3544pub const obs_key_OBS_KEY_PASTE: obs_key = 367;
3545pub const obs_key_OBS_KEY_PHONE: obs_key = 368;
3546pub const obs_key_OBS_KEY_CALENDAR: obs_key = 369;
3547pub const obs_key_OBS_KEY_REPLY: obs_key = 370;
3548pub const obs_key_OBS_KEY_RELOAD: obs_key = 371;
3549pub const obs_key_OBS_KEY_ROTATEWINDOWS: obs_key = 372;
3550pub const obs_key_OBS_KEY_ROTATIONPB: obs_key = 373;
3551pub const obs_key_OBS_KEY_ROTATIONKB: obs_key = 374;
3552pub const obs_key_OBS_KEY_SAVE: obs_key = 375;
3553pub const obs_key_OBS_KEY_SEND: obs_key = 376;
3554pub const obs_key_OBS_KEY_SPELL: obs_key = 377;
3555pub const obs_key_OBS_KEY_SPLITSCREEN: obs_key = 378;
3556pub const obs_key_OBS_KEY_SUPPORT: obs_key = 379;
3557pub const obs_key_OBS_KEY_TASKPANE: obs_key = 380;
3558pub const obs_key_OBS_KEY_TERMINAL: obs_key = 381;
3559pub const obs_key_OBS_KEY_TOOLS: obs_key = 382;
3560pub const obs_key_OBS_KEY_TRAVEL: obs_key = 383;
3561pub const obs_key_OBS_KEY_VIDEO: obs_key = 384;
3562pub const obs_key_OBS_KEY_WORD: obs_key = 385;
3563pub const obs_key_OBS_KEY_XFER: obs_key = 386;
3564pub const obs_key_OBS_KEY_ZOOMIN: obs_key = 387;
3565pub const obs_key_OBS_KEY_ZOOMOUT: obs_key = 388;
3566pub const obs_key_OBS_KEY_AWAY: obs_key = 389;
3567pub const obs_key_OBS_KEY_MESSENGER: obs_key = 390;
3568pub const obs_key_OBS_KEY_WEBCAM: obs_key = 391;
3569pub const obs_key_OBS_KEY_MAILFORWARD: obs_key = 392;
3570pub const obs_key_OBS_KEY_PICTURES: obs_key = 393;
3571pub const obs_key_OBS_KEY_MUSIC: obs_key = 394;
3572pub const obs_key_OBS_KEY_BATTERY: obs_key = 395;
3573pub const obs_key_OBS_KEY_BLUETOOTH: obs_key = 396;
3574pub const obs_key_OBS_KEY_WLAN: obs_key = 397;
3575pub const obs_key_OBS_KEY_UWB: obs_key = 398;
3576pub const obs_key_OBS_KEY_AUDIOFORWARD: obs_key = 399;
3577pub const obs_key_OBS_KEY_AUDIOREPEAT: obs_key = 400;
3578pub const obs_key_OBS_KEY_AUDIORANDOMPLAY: obs_key = 401;
3579pub const obs_key_OBS_KEY_SUBTITLE: obs_key = 402;
3580pub const obs_key_OBS_KEY_AUDIOCYCLETRACK: obs_key = 403;
3581pub const obs_key_OBS_KEY_TIME: obs_key = 404;
3582pub const obs_key_OBS_KEY_HIBERNATE: obs_key = 405;
3583pub const obs_key_OBS_KEY_VIEW: obs_key = 406;
3584pub const obs_key_OBS_KEY_TOPMENU: obs_key = 407;
3585pub const obs_key_OBS_KEY_POWERDOWN: obs_key = 408;
3586pub const obs_key_OBS_KEY_SUSPEND: obs_key = 409;
3587pub const obs_key_OBS_KEY_CONTRASTADJUST: obs_key = 410;
3588pub const obs_key_OBS_KEY_MEDIALAST: obs_key = 411;
3589pub const obs_key_OBS_KEY_CALL: obs_key = 412;
3590pub const obs_key_OBS_KEY_CAMERA: obs_key = 413;
3591pub const obs_key_OBS_KEY_CAMERAFOCUS: obs_key = 414;
3592pub const obs_key_OBS_KEY_CONTEXT1: obs_key = 415;
3593pub const obs_key_OBS_KEY_CONTEXT2: obs_key = 416;
3594pub const obs_key_OBS_KEY_CONTEXT3: obs_key = 417;
3595pub const obs_key_OBS_KEY_CONTEXT4: obs_key = 418;
3596pub const obs_key_OBS_KEY_FLIP: obs_key = 419;
3597pub const obs_key_OBS_KEY_HANGUP: obs_key = 420;
3598pub const obs_key_OBS_KEY_NO: obs_key = 421;
3599pub const obs_key_OBS_KEY_SELECT: obs_key = 422;
3600pub const obs_key_OBS_KEY_YES: obs_key = 423;
3601pub const obs_key_OBS_KEY_TOGGLECALLHANGUP: obs_key = 424;
3602pub const obs_key_OBS_KEY_VOICEDIAL: obs_key = 425;
3603pub const obs_key_OBS_KEY_LASTNUMBERREDIAL: obs_key = 426;
3604pub const obs_key_OBS_KEY_EXECUTE: obs_key = 427;
3605pub const obs_key_OBS_KEY_PRINTER: obs_key = 428;
3606pub const obs_key_OBS_KEY_PLAY: obs_key = 429;
3607pub const obs_key_OBS_KEY_SLEEP: obs_key = 430;
3608pub const obs_key_OBS_KEY_ZOOM: obs_key = 431;
3609pub const obs_key_OBS_KEY_CANCEL: obs_key = 432;
3610pub const obs_key_OBS_KEY_MOUSE1: obs_key = 433;
3611pub const obs_key_OBS_KEY_MOUSE2: obs_key = 434;
3612pub const obs_key_OBS_KEY_MOUSE3: obs_key = 435;
3613pub const obs_key_OBS_KEY_MOUSE4: obs_key = 436;
3614pub const obs_key_OBS_KEY_MOUSE5: obs_key = 437;
3615pub const obs_key_OBS_KEY_MOUSE6: obs_key = 438;
3616pub const obs_key_OBS_KEY_MOUSE7: obs_key = 439;
3617pub const obs_key_OBS_KEY_MOUSE8: obs_key = 440;
3618pub const obs_key_OBS_KEY_MOUSE9: obs_key = 441;
3619pub const obs_key_OBS_KEY_MOUSE10: obs_key = 442;
3620pub const obs_key_OBS_KEY_MOUSE11: obs_key = 443;
3621pub const obs_key_OBS_KEY_MOUSE12: obs_key = 444;
3622pub const obs_key_OBS_KEY_MOUSE13: obs_key = 445;
3623pub const obs_key_OBS_KEY_MOUSE14: obs_key = 446;
3624pub const obs_key_OBS_KEY_MOUSE15: obs_key = 447;
3625pub const obs_key_OBS_KEY_MOUSE16: obs_key = 448;
3626pub const obs_key_OBS_KEY_MOUSE17: obs_key = 449;
3627pub const obs_key_OBS_KEY_MOUSE18: obs_key = 450;
3628pub const obs_key_OBS_KEY_MOUSE19: obs_key = 451;
3629pub const obs_key_OBS_KEY_MOUSE20: obs_key = 452;
3630pub const obs_key_OBS_KEY_MOUSE21: obs_key = 453;
3631pub const obs_key_OBS_KEY_MOUSE22: obs_key = 454;
3632pub const obs_key_OBS_KEY_MOUSE23: obs_key = 455;
3633pub const obs_key_OBS_KEY_MOUSE24: obs_key = 456;
3634pub const obs_key_OBS_KEY_MOUSE25: obs_key = 457;
3635pub const obs_key_OBS_KEY_MOUSE26: obs_key = 458;
3636pub const obs_key_OBS_KEY_MOUSE27: obs_key = 459;
3637pub const obs_key_OBS_KEY_MOUSE28: obs_key = 460;
3638pub const obs_key_OBS_KEY_MOUSE29: obs_key = 461;
3639pub const obs_key_OBS_KEY_BACKSLASH_RT102: obs_key = 462;
3640pub const obs_key_OBS_KEY_OPEN: obs_key = 463;
3641pub const obs_key_OBS_KEY_FIND: obs_key = 464;
3642pub const obs_key_OBS_KEY_REDO: obs_key = 465;
3643pub const obs_key_OBS_KEY_UNDO: obs_key = 466;
3644pub const obs_key_OBS_KEY_FRONT: obs_key = 467;
3645pub const obs_key_OBS_KEY_PROPS: obs_key = 468;
3646pub const obs_key_OBS_KEY_VK_CANCEL: obs_key = 469;
3647pub const obs_key_OBS_KEY_0x07: obs_key = 470;
3648pub const obs_key_OBS_KEY_0x0A: obs_key = 471;
3649pub const obs_key_OBS_KEY_0x0B: obs_key = 472;
3650pub const obs_key_OBS_KEY_0x0E: obs_key = 473;
3651pub const obs_key_OBS_KEY_0x0F: obs_key = 474;
3652pub const obs_key_OBS_KEY_0x16: obs_key = 475;
3653pub const obs_key_OBS_KEY_VK_JUNJA: obs_key = 476;
3654pub const obs_key_OBS_KEY_VK_FINAL: obs_key = 477;
3655pub const obs_key_OBS_KEY_0x1A: obs_key = 478;
3656pub const obs_key_OBS_KEY_VK_ACCEPT: obs_key = 479;
3657pub const obs_key_OBS_KEY_VK_MODECHANGE: obs_key = 480;
3658pub const obs_key_OBS_KEY_VK_SELECT: obs_key = 481;
3659pub const obs_key_OBS_KEY_VK_PRINT: obs_key = 482;
3660pub const obs_key_OBS_KEY_VK_EXECUTE: obs_key = 483;
3661pub const obs_key_OBS_KEY_VK_HELP: obs_key = 484;
3662pub const obs_key_OBS_KEY_0x30: obs_key = 485;
3663pub const obs_key_OBS_KEY_0x31: obs_key = 486;
3664pub const obs_key_OBS_KEY_0x32: obs_key = 487;
3665pub const obs_key_OBS_KEY_0x33: obs_key = 488;
3666pub const obs_key_OBS_KEY_0x34: obs_key = 489;
3667pub const obs_key_OBS_KEY_0x35: obs_key = 490;
3668pub const obs_key_OBS_KEY_0x36: obs_key = 491;
3669pub const obs_key_OBS_KEY_0x37: obs_key = 492;
3670pub const obs_key_OBS_KEY_0x38: obs_key = 493;
3671pub const obs_key_OBS_KEY_0x39: obs_key = 494;
3672pub const obs_key_OBS_KEY_0x3A: obs_key = 495;
3673pub const obs_key_OBS_KEY_0x3B: obs_key = 496;
3674pub const obs_key_OBS_KEY_0x3C: obs_key = 497;
3675pub const obs_key_OBS_KEY_0x3D: obs_key = 498;
3676pub const obs_key_OBS_KEY_0x3E: obs_key = 499;
3677pub const obs_key_OBS_KEY_0x3F: obs_key = 500;
3678pub const obs_key_OBS_KEY_0x40: obs_key = 501;
3679pub const obs_key_OBS_KEY_0x41: obs_key = 502;
3680pub const obs_key_OBS_KEY_0x42: obs_key = 503;
3681pub const obs_key_OBS_KEY_0x43: obs_key = 504;
3682pub const obs_key_OBS_KEY_0x44: obs_key = 505;
3683pub const obs_key_OBS_KEY_0x45: obs_key = 506;
3684pub const obs_key_OBS_KEY_0x46: obs_key = 507;
3685pub const obs_key_OBS_KEY_0x47: obs_key = 508;
3686pub const obs_key_OBS_KEY_0x48: obs_key = 509;
3687pub const obs_key_OBS_KEY_0x49: obs_key = 510;
3688pub const obs_key_OBS_KEY_0x4A: obs_key = 511;
3689pub const obs_key_OBS_KEY_0x4B: obs_key = 512;
3690pub const obs_key_OBS_KEY_0x4C: obs_key = 513;
3691pub const obs_key_OBS_KEY_0x4D: obs_key = 514;
3692pub const obs_key_OBS_KEY_0x4E: obs_key = 515;
3693pub const obs_key_OBS_KEY_0x4F: obs_key = 516;
3694pub const obs_key_OBS_KEY_0x50: obs_key = 517;
3695pub const obs_key_OBS_KEY_0x51: obs_key = 518;
3696pub const obs_key_OBS_KEY_0x52: obs_key = 519;
3697pub const obs_key_OBS_KEY_0x53: obs_key = 520;
3698pub const obs_key_OBS_KEY_0x54: obs_key = 521;
3699pub const obs_key_OBS_KEY_0x55: obs_key = 522;
3700pub const obs_key_OBS_KEY_0x56: obs_key = 523;
3701pub const obs_key_OBS_KEY_0x57: obs_key = 524;
3702pub const obs_key_OBS_KEY_0x58: obs_key = 525;
3703pub const obs_key_OBS_KEY_0x59: obs_key = 526;
3704pub const obs_key_OBS_KEY_0x5A: obs_key = 527;
3705pub const obs_key_OBS_KEY_VK_LWIN: obs_key = 528;
3706pub const obs_key_OBS_KEY_VK_RWIN: obs_key = 529;
3707pub const obs_key_OBS_KEY_VK_APPS: obs_key = 530;
3708pub const obs_key_OBS_KEY_0x5E: obs_key = 531;
3709pub const obs_key_OBS_KEY_VK_SLEEP: obs_key = 532;
3710pub const obs_key_OBS_KEY_VK_SEPARATOR: obs_key = 533;
3711pub const obs_key_OBS_KEY_0x88: obs_key = 534;
3712pub const obs_key_OBS_KEY_0x89: obs_key = 535;
3713pub const obs_key_OBS_KEY_0x8A: obs_key = 536;
3714pub const obs_key_OBS_KEY_0x8B: obs_key = 537;
3715pub const obs_key_OBS_KEY_0x8C: obs_key = 538;
3716pub const obs_key_OBS_KEY_0x8D: obs_key = 539;
3717pub const obs_key_OBS_KEY_0x8E: obs_key = 540;
3718pub const obs_key_OBS_KEY_0x8F: obs_key = 541;
3719pub const obs_key_OBS_KEY_VK_OEM_FJ_JISHO: obs_key = 542;
3720pub const obs_key_OBS_KEY_VK_OEM_FJ_LOYA: obs_key = 543;
3721pub const obs_key_OBS_KEY_VK_OEM_FJ_ROYA: obs_key = 544;
3722pub const obs_key_OBS_KEY_0x97: obs_key = 545;
3723pub const obs_key_OBS_KEY_0x98: obs_key = 546;
3724pub const obs_key_OBS_KEY_0x99: obs_key = 547;
3725pub const obs_key_OBS_KEY_0x9A: obs_key = 548;
3726pub const obs_key_OBS_KEY_0x9B: obs_key = 549;
3727pub const obs_key_OBS_KEY_0x9C: obs_key = 550;
3728pub const obs_key_OBS_KEY_0x9D: obs_key = 551;
3729pub const obs_key_OBS_KEY_0x9E: obs_key = 552;
3730pub const obs_key_OBS_KEY_0x9F: obs_key = 553;
3731pub const obs_key_OBS_KEY_VK_LSHIFT: obs_key = 554;
3732pub const obs_key_OBS_KEY_VK_RSHIFT: obs_key = 555;
3733pub const obs_key_OBS_KEY_VK_LCONTROL: obs_key = 556;
3734pub const obs_key_OBS_KEY_VK_RCONTROL: obs_key = 557;
3735pub const obs_key_OBS_KEY_VK_LMENU: obs_key = 558;
3736pub const obs_key_OBS_KEY_VK_RMENU: obs_key = 559;
3737pub const obs_key_OBS_KEY_VK_BROWSER_BACK: obs_key = 560;
3738pub const obs_key_OBS_KEY_VK_BROWSER_FORWARD: obs_key = 561;
3739pub const obs_key_OBS_KEY_VK_BROWSER_REFRESH: obs_key = 562;
3740pub const obs_key_OBS_KEY_VK_BROWSER_STOP: obs_key = 563;
3741pub const obs_key_OBS_KEY_VK_BROWSER_SEARCH: obs_key = 564;
3742pub const obs_key_OBS_KEY_VK_BROWSER_FAVORITES: obs_key = 565;
3743pub const obs_key_OBS_KEY_VK_BROWSER_HOME: obs_key = 566;
3744pub const obs_key_OBS_KEY_VK_VOLUME_MUTE: obs_key = 567;
3745pub const obs_key_OBS_KEY_VK_VOLUME_DOWN: obs_key = 568;
3746pub const obs_key_OBS_KEY_VK_VOLUME_UP: obs_key = 569;
3747pub const obs_key_OBS_KEY_VK_MEDIA_NEXT_TRACK: obs_key = 570;
3748pub const obs_key_OBS_KEY_VK_MEDIA_PREV_TRACK: obs_key = 571;
3749pub const obs_key_OBS_KEY_VK_MEDIA_STOP: obs_key = 572;
3750pub const obs_key_OBS_KEY_VK_MEDIA_PLAY_PAUSE: obs_key = 573;
3751pub const obs_key_OBS_KEY_VK_LAUNCH_MAIL: obs_key = 574;
3752pub const obs_key_OBS_KEY_VK_LAUNCH_MEDIA_SELECT: obs_key = 575;
3753pub const obs_key_OBS_KEY_VK_LAUNCH_APP1: obs_key = 576;
3754pub const obs_key_OBS_KEY_VK_LAUNCH_APP2: obs_key = 577;
3755pub const obs_key_OBS_KEY_0xB8: obs_key = 578;
3756pub const obs_key_OBS_KEY_0xB9: obs_key = 579;
3757pub const obs_key_OBS_KEY_0xC1: obs_key = 580;
3758pub const obs_key_OBS_KEY_0xC2: obs_key = 581;
3759pub const obs_key_OBS_KEY_0xC3: obs_key = 582;
3760pub const obs_key_OBS_KEY_0xC4: obs_key = 583;
3761pub const obs_key_OBS_KEY_0xC5: obs_key = 584;
3762pub const obs_key_OBS_KEY_0xC6: obs_key = 585;
3763pub const obs_key_OBS_KEY_0xC7: obs_key = 586;
3764pub const obs_key_OBS_KEY_0xC8: obs_key = 587;
3765pub const obs_key_OBS_KEY_0xC9: obs_key = 588;
3766pub const obs_key_OBS_KEY_0xCA: obs_key = 589;
3767pub const obs_key_OBS_KEY_0xCB: obs_key = 590;
3768pub const obs_key_OBS_KEY_0xCC: obs_key = 591;
3769pub const obs_key_OBS_KEY_0xCD: obs_key = 592;
3770pub const obs_key_OBS_KEY_0xCE: obs_key = 593;
3771pub const obs_key_OBS_KEY_0xCF: obs_key = 594;
3772pub const obs_key_OBS_KEY_0xD0: obs_key = 595;
3773pub const obs_key_OBS_KEY_0xD1: obs_key = 596;
3774pub const obs_key_OBS_KEY_0xD2: obs_key = 597;
3775pub const obs_key_OBS_KEY_0xD3: obs_key = 598;
3776pub const obs_key_OBS_KEY_0xD4: obs_key = 599;
3777pub const obs_key_OBS_KEY_0xD5: obs_key = 600;
3778pub const obs_key_OBS_KEY_0xD6: obs_key = 601;
3779pub const obs_key_OBS_KEY_0xD7: obs_key = 602;
3780pub const obs_key_OBS_KEY_0xD8: obs_key = 603;
3781pub const obs_key_OBS_KEY_0xD9: obs_key = 604;
3782pub const obs_key_OBS_KEY_0xDA: obs_key = 605;
3783pub const obs_key_OBS_KEY_VK_OEM_8: obs_key = 606;
3784pub const obs_key_OBS_KEY_0xE0: obs_key = 607;
3785pub const obs_key_OBS_KEY_VK_OEM_AX: obs_key = 608;
3786pub const obs_key_OBS_KEY_VK_ICO_HELP: obs_key = 609;
3787pub const obs_key_OBS_KEY_VK_ICO_00: obs_key = 610;
3788pub const obs_key_OBS_KEY_VK_PROCESSKEY: obs_key = 611;
3789pub const obs_key_OBS_KEY_VK_ICO_CLEAR: obs_key = 612;
3790pub const obs_key_OBS_KEY_VK_PACKET: obs_key = 613;
3791pub const obs_key_OBS_KEY_0xE8: obs_key = 614;
3792pub const obs_key_OBS_KEY_VK_OEM_RESET: obs_key = 615;
3793pub const obs_key_OBS_KEY_VK_OEM_JUMP: obs_key = 616;
3794pub const obs_key_OBS_KEY_VK_OEM_PA1: obs_key = 617;
3795pub const obs_key_OBS_KEY_VK_OEM_PA2: obs_key = 618;
3796pub const obs_key_OBS_KEY_VK_OEM_PA3: obs_key = 619;
3797pub const obs_key_OBS_KEY_VK_OEM_WSCTRL: obs_key = 620;
3798pub const obs_key_OBS_KEY_VK_OEM_CUSEL: obs_key = 621;
3799pub const obs_key_OBS_KEY_VK_OEM_ATTN: obs_key = 622;
3800pub const obs_key_OBS_KEY_VK_OEM_FINISH: obs_key = 623;
3801pub const obs_key_OBS_KEY_VK_OEM_COPY: obs_key = 624;
3802pub const obs_key_OBS_KEY_VK_OEM_AUTO: obs_key = 625;
3803pub const obs_key_OBS_KEY_VK_OEM_ENLW: obs_key = 626;
3804pub const obs_key_OBS_KEY_VK_ATTN: obs_key = 627;
3805pub const obs_key_OBS_KEY_VK_CRSEL: obs_key = 628;
3806pub const obs_key_OBS_KEY_VK_EXSEL: obs_key = 629;
3807pub const obs_key_OBS_KEY_VK_EREOF: obs_key = 630;
3808pub const obs_key_OBS_KEY_VK_PLAY: obs_key = 631;
3809pub const obs_key_OBS_KEY_VK_ZOOM: obs_key = 632;
3810pub const obs_key_OBS_KEY_VK_NONAME: obs_key = 633;
3811pub const obs_key_OBS_KEY_VK_PA1: obs_key = 634;
3812pub const obs_key_OBS_KEY_VK_OEM_CLEAR: obs_key = 635;
3813pub const obs_key_OBS_KEY_LAST_VALUE: obs_key = 636;
3814pub type obs_key = ::std::os::raw::c_int;
3815pub use self::obs_key as obs_key_t;
3816#[repr(C)]
3817pub struct obs_key_combination {
3818    pub modifiers: u32,
3819    pub key: obs_key_t,
3820}
3821#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3822const _: () = {
3823    ["Size of obs_key_combination"][::std::mem::size_of::<obs_key_combination>() - 8usize];
3824    ["Alignment of obs_key_combination"][::std::mem::align_of::<obs_key_combination>() - 4usize];
3825    ["Offset of field: obs_key_combination::modifiers"]
3826        [::std::mem::offset_of!(obs_key_combination, modifiers) - 0usize];
3827    ["Offset of field: obs_key_combination::key"]
3828        [::std::mem::offset_of!(obs_key_combination, key) - 4usize];
3829};
3830pub type obs_key_combination_t = obs_key_combination;
3831#[repr(C)]
3832#[derive(Debug, Copy, Clone)]
3833pub struct obs_hotkey {
3834    _unused: [u8; 0],
3835}
3836pub type obs_hotkey_t = obs_hotkey;
3837#[repr(C)]
3838#[derive(Debug, Copy, Clone)]
3839pub struct obs_hotkey_binding {
3840    _unused: [u8; 0],
3841}
3842pub type obs_hotkey_binding_t = obs_hotkey_binding;
3843pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_FRONTEND: obs_hotkey_registerer_type = 0;
3844pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SOURCE: obs_hotkey_registerer_type = 1;
3845pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_OUTPUT: obs_hotkey_registerer_type = 2;
3846pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_ENCODER: obs_hotkey_registerer_type = 3;
3847pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SERVICE: obs_hotkey_registerer_type = 4;
3848pub type obs_hotkey_registerer_type = ::std::os::raw::c_int;
3849pub use self::obs_hotkey_registerer_type as obs_hotkey_registerer_t;
3850#[repr(C)]
3851#[derive(Debug, Copy, Clone)]
3852pub struct obs_hotkeys_translations {
3853    pub insert: *const ::std::os::raw::c_char,
3854    pub del: *const ::std::os::raw::c_char,
3855    pub home: *const ::std::os::raw::c_char,
3856    pub end: *const ::std::os::raw::c_char,
3857    pub page_up: *const ::std::os::raw::c_char,
3858    pub page_down: *const ::std::os::raw::c_char,
3859    pub num_lock: *const ::std::os::raw::c_char,
3860    pub scroll_lock: *const ::std::os::raw::c_char,
3861    pub caps_lock: *const ::std::os::raw::c_char,
3862    pub backspace: *const ::std::os::raw::c_char,
3863    pub tab: *const ::std::os::raw::c_char,
3864    pub print: *const ::std::os::raw::c_char,
3865    pub pause: *const ::std::os::raw::c_char,
3866    pub left: *const ::std::os::raw::c_char,
3867    pub right: *const ::std::os::raw::c_char,
3868    pub up: *const ::std::os::raw::c_char,
3869    pub down: *const ::std::os::raw::c_char,
3870    pub shift: *const ::std::os::raw::c_char,
3871    pub alt: *const ::std::os::raw::c_char,
3872    pub control: *const ::std::os::raw::c_char,
3873    pub meta: *const ::std::os::raw::c_char,
3874    pub menu: *const ::std::os::raw::c_char,
3875    pub space: *const ::std::os::raw::c_char,
3876    pub numpad_num: *const ::std::os::raw::c_char,
3877    pub numpad_divide: *const ::std::os::raw::c_char,
3878    pub numpad_multiply: *const ::std::os::raw::c_char,
3879    pub numpad_minus: *const ::std::os::raw::c_char,
3880    pub numpad_plus: *const ::std::os::raw::c_char,
3881    pub numpad_decimal: *const ::std::os::raw::c_char,
3882    pub apple_keypad_num: *const ::std::os::raw::c_char,
3883    pub apple_keypad_divide: *const ::std::os::raw::c_char,
3884    pub apple_keypad_multiply: *const ::std::os::raw::c_char,
3885    pub apple_keypad_minus: *const ::std::os::raw::c_char,
3886    pub apple_keypad_plus: *const ::std::os::raw::c_char,
3887    pub apple_keypad_decimal: *const ::std::os::raw::c_char,
3888    pub apple_keypad_equal: *const ::std::os::raw::c_char,
3889    pub mouse_num: *const ::std::os::raw::c_char,
3890    pub escape: *const ::std::os::raw::c_char,
3891}
3892#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3893const _: () = {
3894    ["Size of obs_hotkeys_translations"]
3895        [::std::mem::size_of::<obs_hotkeys_translations>() - 304usize];
3896    ["Alignment of obs_hotkeys_translations"]
3897        [::std::mem::align_of::<obs_hotkeys_translations>() - 8usize];
3898    ["Offset of field: obs_hotkeys_translations::insert"]
3899        [::std::mem::offset_of!(obs_hotkeys_translations, insert) - 0usize];
3900    ["Offset of field: obs_hotkeys_translations::del"]
3901        [::std::mem::offset_of!(obs_hotkeys_translations, del) - 8usize];
3902    ["Offset of field: obs_hotkeys_translations::home"]
3903        [::std::mem::offset_of!(obs_hotkeys_translations, home) - 16usize];
3904    ["Offset of field: obs_hotkeys_translations::end"]
3905        [::std::mem::offset_of!(obs_hotkeys_translations, end) - 24usize];
3906    ["Offset of field: obs_hotkeys_translations::page_up"]
3907        [::std::mem::offset_of!(obs_hotkeys_translations, page_up) - 32usize];
3908    ["Offset of field: obs_hotkeys_translations::page_down"]
3909        [::std::mem::offset_of!(obs_hotkeys_translations, page_down) - 40usize];
3910    ["Offset of field: obs_hotkeys_translations::num_lock"]
3911        [::std::mem::offset_of!(obs_hotkeys_translations, num_lock) - 48usize];
3912    ["Offset of field: obs_hotkeys_translations::scroll_lock"]
3913        [::std::mem::offset_of!(obs_hotkeys_translations, scroll_lock) - 56usize];
3914    ["Offset of field: obs_hotkeys_translations::caps_lock"]
3915        [::std::mem::offset_of!(obs_hotkeys_translations, caps_lock) - 64usize];
3916    ["Offset of field: obs_hotkeys_translations::backspace"]
3917        [::std::mem::offset_of!(obs_hotkeys_translations, backspace) - 72usize];
3918    ["Offset of field: obs_hotkeys_translations::tab"]
3919        [::std::mem::offset_of!(obs_hotkeys_translations, tab) - 80usize];
3920    ["Offset of field: obs_hotkeys_translations::print"]
3921        [::std::mem::offset_of!(obs_hotkeys_translations, print) - 88usize];
3922    ["Offset of field: obs_hotkeys_translations::pause"]
3923        [::std::mem::offset_of!(obs_hotkeys_translations, pause) - 96usize];
3924    ["Offset of field: obs_hotkeys_translations::left"]
3925        [::std::mem::offset_of!(obs_hotkeys_translations, left) - 104usize];
3926    ["Offset of field: obs_hotkeys_translations::right"]
3927        [::std::mem::offset_of!(obs_hotkeys_translations, right) - 112usize];
3928    ["Offset of field: obs_hotkeys_translations::up"]
3929        [::std::mem::offset_of!(obs_hotkeys_translations, up) - 120usize];
3930    ["Offset of field: obs_hotkeys_translations::down"]
3931        [::std::mem::offset_of!(obs_hotkeys_translations, down) - 128usize];
3932    ["Offset of field: obs_hotkeys_translations::shift"]
3933        [::std::mem::offset_of!(obs_hotkeys_translations, shift) - 136usize];
3934    ["Offset of field: obs_hotkeys_translations::alt"]
3935        [::std::mem::offset_of!(obs_hotkeys_translations, alt) - 144usize];
3936    ["Offset of field: obs_hotkeys_translations::control"]
3937        [::std::mem::offset_of!(obs_hotkeys_translations, control) - 152usize];
3938    ["Offset of field: obs_hotkeys_translations::meta"]
3939        [::std::mem::offset_of!(obs_hotkeys_translations, meta) - 160usize];
3940    ["Offset of field: obs_hotkeys_translations::menu"]
3941        [::std::mem::offset_of!(obs_hotkeys_translations, menu) - 168usize];
3942    ["Offset of field: obs_hotkeys_translations::space"]
3943        [::std::mem::offset_of!(obs_hotkeys_translations, space) - 176usize];
3944    ["Offset of field: obs_hotkeys_translations::numpad_num"]
3945        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_num) - 184usize];
3946    ["Offset of field: obs_hotkeys_translations::numpad_divide"]
3947        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_divide) - 192usize];
3948    ["Offset of field: obs_hotkeys_translations::numpad_multiply"]
3949        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_multiply) - 200usize];
3950    ["Offset of field: obs_hotkeys_translations::numpad_minus"]
3951        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_minus) - 208usize];
3952    ["Offset of field: obs_hotkeys_translations::numpad_plus"]
3953        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_plus) - 216usize];
3954    ["Offset of field: obs_hotkeys_translations::numpad_decimal"]
3955        [::std::mem::offset_of!(obs_hotkeys_translations, numpad_decimal) - 224usize];
3956    ["Offset of field: obs_hotkeys_translations::apple_keypad_num"]
3957        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_num) - 232usize];
3958    ["Offset of field: obs_hotkeys_translations::apple_keypad_divide"]
3959        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_divide) - 240usize];
3960    ["Offset of field: obs_hotkeys_translations::apple_keypad_multiply"]
3961        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_multiply) - 248usize];
3962    ["Offset of field: obs_hotkeys_translations::apple_keypad_minus"]
3963        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_minus) - 256usize];
3964    ["Offset of field: obs_hotkeys_translations::apple_keypad_plus"]
3965        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_plus) - 264usize];
3966    ["Offset of field: obs_hotkeys_translations::apple_keypad_decimal"]
3967        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_decimal) - 272usize];
3968    ["Offset of field: obs_hotkeys_translations::apple_keypad_equal"]
3969        [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_equal) - 280usize];
3970    ["Offset of field: obs_hotkeys_translations::mouse_num"]
3971        [::std::mem::offset_of!(obs_hotkeys_translations, mouse_num) - 288usize];
3972    ["Offset of field: obs_hotkeys_translations::escape"]
3973        [::std::mem::offset_of!(obs_hotkeys_translations, escape) - 296usize];
3974};
3975pub type obs_hotkey_func = ::std::option::Option<
3976    unsafe extern "C" fn(
3977        data: *mut ::std::os::raw::c_void,
3978        id: obs_hotkey_id,
3979        hotkey: *mut obs_hotkey_t,
3980        pressed: bool,
3981    ),
3982>;
3983pub type obs_hotkey_active_func = ::std::option::Option<
3984    unsafe extern "C" fn(
3985        data: *mut ::std::os::raw::c_void,
3986        id: obs_hotkey_pair_id,
3987        hotkey: *mut obs_hotkey_t,
3988        pressed: bool,
3989    ) -> bool,
3990>;
3991pub type obs_hotkey_enum_func = ::std::option::Option<
3992    unsafe extern "C" fn(
3993        data: *mut ::std::os::raw::c_void,
3994        id: obs_hotkey_id,
3995        key: *mut obs_hotkey_t,
3996    ) -> bool,
3997>;
3998pub type obs_hotkey_binding_enum_func = ::std::option::Option<
3999    unsafe extern "C" fn(
4000        data: *mut ::std::os::raw::c_void,
4001        idx: usize,
4002        binding: *mut obs_hotkey_binding_t,
4003    ) -> bool,
4004>;
4005pub type obs_hotkey_callback_router_func = ::std::option::Option<
4006    unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, id: obs_hotkey_id, pressed: bool),
4007>;
4008pub type obs_hotkey_atomic_update_func =
4009    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
4010#[repr(C)]
4011#[derive(Debug, Copy, Clone)]
4012pub struct dstr {
4013    _unused: [u8; 0],
4014}
4015pub const obs_order_movement_OBS_ORDER_MOVE_UP: obs_order_movement = 0;
4016pub const obs_order_movement_OBS_ORDER_MOVE_DOWN: obs_order_movement = 1;
4017pub const obs_order_movement_OBS_ORDER_MOVE_TOP: obs_order_movement = 2;
4018pub const obs_order_movement_OBS_ORDER_MOVE_BOTTOM: obs_order_movement = 3;
4019#[doc = " Used for changing the order of items (for example, filters in a source,\n or items in a scene)"]
4020pub type obs_order_movement = ::std::os::raw::c_int;
4021pub const obs_allow_direct_render_OBS_NO_DIRECT_RENDERING: obs_allow_direct_render = 0;
4022pub const obs_allow_direct_render_OBS_ALLOW_DIRECT_RENDERING: obs_allow_direct_render = 1;
4023#[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"]
4024pub type obs_allow_direct_render = ::std::os::raw::c_int;
4025pub const obs_scale_type_OBS_SCALE_DISABLE: obs_scale_type = 0;
4026pub const obs_scale_type_OBS_SCALE_POINT: obs_scale_type = 1;
4027pub const obs_scale_type_OBS_SCALE_BICUBIC: obs_scale_type = 2;
4028pub const obs_scale_type_OBS_SCALE_BILINEAR: obs_scale_type = 3;
4029pub const obs_scale_type_OBS_SCALE_LANCZOS: obs_scale_type = 4;
4030pub const obs_scale_type_OBS_SCALE_AREA: obs_scale_type = 5;
4031pub type obs_scale_type = ::std::os::raw::c_int;
4032pub const obs_blending_method_OBS_BLEND_METHOD_DEFAULT: obs_blending_method = 0;
4033pub const obs_blending_method_OBS_BLEND_METHOD_SRGB_OFF: obs_blending_method = 1;
4034pub type obs_blending_method = ::std::os::raw::c_int;
4035pub const obs_blending_type_OBS_BLEND_NORMAL: obs_blending_type = 0;
4036pub const obs_blending_type_OBS_BLEND_ADDITIVE: obs_blending_type = 1;
4037pub const obs_blending_type_OBS_BLEND_SUBTRACT: obs_blending_type = 2;
4038pub const obs_blending_type_OBS_BLEND_SCREEN: obs_blending_type = 3;
4039pub const obs_blending_type_OBS_BLEND_MULTIPLY: obs_blending_type = 4;
4040pub const obs_blending_type_OBS_BLEND_LIGHTEN: obs_blending_type = 5;
4041pub const obs_blending_type_OBS_BLEND_DARKEN: obs_blending_type = 6;
4042pub type obs_blending_type = ::std::os::raw::c_int;
4043#[doc = "< no bounds"]
4044pub const obs_bounds_type_OBS_BOUNDS_NONE: obs_bounds_type = 0;
4045#[doc = "< stretch (ignores base scale)"]
4046pub const obs_bounds_type_OBS_BOUNDS_STRETCH: obs_bounds_type = 1;
4047#[doc = "< scales to inner rectangle"]
4048pub const obs_bounds_type_OBS_BOUNDS_SCALE_INNER: obs_bounds_type = 2;
4049#[doc = "< scales to outer rectangle"]
4050pub const obs_bounds_type_OBS_BOUNDS_SCALE_OUTER: obs_bounds_type = 3;
4051#[doc = "< scales to the width"]
4052pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_WIDTH: obs_bounds_type = 4;
4053#[doc = "< scales to the height"]
4054pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_HEIGHT: obs_bounds_type = 5;
4055#[doc = "< no scaling, maximum size only"]
4056pub const obs_bounds_type_OBS_BOUNDS_MAX_ONLY: obs_bounds_type = 6;
4057#[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."]
4058pub type obs_bounds_type = ::std::os::raw::c_int;
4059pub const obs_module_load_state_OBS_MODULE_INVALID: obs_module_load_state = 0;
4060pub const obs_module_load_state_OBS_MODULE_ENABLED: obs_module_load_state = 1;
4061pub const obs_module_load_state_OBS_MODULE_MISSING: obs_module_load_state = 2;
4062pub const obs_module_load_state_OBS_MODULE_DISABLED: obs_module_load_state = 3;
4063pub const obs_module_load_state_OBS_MODULE_DISABLED_SAFE: obs_module_load_state = 4;
4064pub const obs_module_load_state_OBS_MODULE_FAILED_TO_OPEN: obs_module_load_state = 5;
4065pub const obs_module_load_state_OBS_MODULE_FAILED_TO_INITIALIZE: obs_module_load_state = 6;
4066#[doc = " Used by libobs to define the state of a plugin/module."]
4067pub type obs_module_load_state = ::std::os::raw::c_int;
4068#[repr(C)]
4069pub struct obs_transform_info {
4070    pub pos: vec2,
4071    pub rot: f32,
4072    pub scale: vec2,
4073    pub alignment: u32,
4074    pub bounds_type: obs_bounds_type,
4075    pub bounds_alignment: u32,
4076    pub bounds: vec2,
4077    pub crop_to_bounds: bool,
4078}
4079#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4080const _: () = {
4081    ["Size of obs_transform_info"][::std::mem::size_of::<obs_transform_info>() - 44usize];
4082    ["Alignment of obs_transform_info"][::std::mem::align_of::<obs_transform_info>() - 4usize];
4083    ["Offset of field: obs_transform_info::pos"]
4084        [::std::mem::offset_of!(obs_transform_info, pos) - 0usize];
4085    ["Offset of field: obs_transform_info::rot"]
4086        [::std::mem::offset_of!(obs_transform_info, rot) - 8usize];
4087    ["Offset of field: obs_transform_info::scale"]
4088        [::std::mem::offset_of!(obs_transform_info, scale) - 12usize];
4089    ["Offset of field: obs_transform_info::alignment"]
4090        [::std::mem::offset_of!(obs_transform_info, alignment) - 20usize];
4091    ["Offset of field: obs_transform_info::bounds_type"]
4092        [::std::mem::offset_of!(obs_transform_info, bounds_type) - 24usize];
4093    ["Offset of field: obs_transform_info::bounds_alignment"]
4094        [::std::mem::offset_of!(obs_transform_info, bounds_alignment) - 28usize];
4095    ["Offset of field: obs_transform_info::bounds"]
4096        [::std::mem::offset_of!(obs_transform_info, bounds) - 32usize];
4097    ["Offset of field: obs_transform_info::crop_to_bounds"]
4098        [::std::mem::offset_of!(obs_transform_info, crop_to_bounds) - 40usize];
4099};
4100#[doc = " Video initialization structure"]
4101#[repr(C)]
4102pub struct obs_video_info {
4103#[doc = " Graphics module to use (usually \"libobs-opengl\" or \"libobs-d3d11\")"]
4104    pub graphics_module: *const ::std::os::raw::c_char,
4105#[doc = "< Output FPS numerator"]
4106    pub fps_num: u32,
4107#[doc = "< Output FPS denominator"]
4108    pub fps_den: u32,
4109#[doc = "< Base compositing width"]
4110    pub base_width: u32,
4111#[doc = "< Base compositing height"]
4112    pub base_height: u32,
4113#[doc = "< Output width"]
4114    pub output_width: u32,
4115#[doc = "< Output height"]
4116    pub output_height: u32,
4117#[doc = "< Output format"]
4118    pub output_format: video_format,
4119#[doc = " Video adapter index to use (NOTE: avoid for optimus laptops)"]
4120    pub adapter: u32,
4121#[doc = " Use shaders to convert to different color formats"]
4122    pub gpu_conversion: bool,
4123#[doc = "< YUV type (if YUV)"]
4124    pub colorspace: video_colorspace,
4125#[doc = "< YUV range (if YUV)"]
4126    pub range: video_range_type,
4127#[doc = "< How to scale if scaling"]
4128    pub scale_type: obs_scale_type,
4129}
4130#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4131const _: () = {
4132    ["Size of obs_video_info"][::std::mem::size_of::<obs_video_info>() - 56usize];
4133    ["Alignment of obs_video_info"][::std::mem::align_of::<obs_video_info>() - 8usize];
4134    ["Offset of field: obs_video_info::graphics_module"]
4135        [::std::mem::offset_of!(obs_video_info, graphics_module) - 0usize];
4136    ["Offset of field: obs_video_info::fps_num"]
4137        [::std::mem::offset_of!(obs_video_info, fps_num) - 8usize];
4138    ["Offset of field: obs_video_info::fps_den"]
4139        [::std::mem::offset_of!(obs_video_info, fps_den) - 12usize];
4140    ["Offset of field: obs_video_info::base_width"]
4141        [::std::mem::offset_of!(obs_video_info, base_width) - 16usize];
4142    ["Offset of field: obs_video_info::base_height"]
4143        [::std::mem::offset_of!(obs_video_info, base_height) - 20usize];
4144    ["Offset of field: obs_video_info::output_width"]
4145        [::std::mem::offset_of!(obs_video_info, output_width) - 24usize];
4146    ["Offset of field: obs_video_info::output_height"]
4147        [::std::mem::offset_of!(obs_video_info, output_height) - 28usize];
4148    ["Offset of field: obs_video_info::output_format"]
4149        [::std::mem::offset_of!(obs_video_info, output_format) - 32usize];
4150    ["Offset of field: obs_video_info::adapter"]
4151        [::std::mem::offset_of!(obs_video_info, adapter) - 36usize];
4152    ["Offset of field: obs_video_info::gpu_conversion"]
4153        [::std::mem::offset_of!(obs_video_info, gpu_conversion) - 40usize];
4154    ["Offset of field: obs_video_info::colorspace"]
4155        [::std::mem::offset_of!(obs_video_info, colorspace) - 44usize];
4156    ["Offset of field: obs_video_info::range"]
4157        [::std::mem::offset_of!(obs_video_info, range) - 48usize];
4158    ["Offset of field: obs_video_info::scale_type"]
4159        [::std::mem::offset_of!(obs_video_info, scale_type) - 52usize];
4160};
4161#[doc = " Audio initialization structure"]
4162#[repr(C)]
4163pub struct obs_audio_info {
4164    pub samples_per_sec: u32,
4165    pub speakers: speaker_layout,
4166}
4167#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4168const _: () = {
4169    ["Size of obs_audio_info"][::std::mem::size_of::<obs_audio_info>() - 8usize];
4170    ["Alignment of obs_audio_info"][::std::mem::align_of::<obs_audio_info>() - 4usize];
4171    ["Offset of field: obs_audio_info::samples_per_sec"]
4172        [::std::mem::offset_of!(obs_audio_info, samples_per_sec) - 0usize];
4173    ["Offset of field: obs_audio_info::speakers"]
4174        [::std::mem::offset_of!(obs_audio_info, speakers) - 4usize];
4175};
4176#[repr(C)]
4177pub struct obs_audio_info2 {
4178    pub samples_per_sec: u32,
4179    pub speakers: speaker_layout,
4180    pub max_buffering_ms: u32,
4181    pub fixed_buffering: bool,
4182}
4183#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4184const _: () = {
4185    ["Size of obs_audio_info2"][::std::mem::size_of::<obs_audio_info2>() - 16usize];
4186    ["Alignment of obs_audio_info2"][::std::mem::align_of::<obs_audio_info2>() - 4usize];
4187    ["Offset of field: obs_audio_info2::samples_per_sec"]
4188        [::std::mem::offset_of!(obs_audio_info2, samples_per_sec) - 0usize];
4189    ["Offset of field: obs_audio_info2::speakers"]
4190        [::std::mem::offset_of!(obs_audio_info2, speakers) - 4usize];
4191    ["Offset of field: obs_audio_info2::max_buffering_ms"]
4192        [::std::mem::offset_of!(obs_audio_info2, max_buffering_ms) - 8usize];
4193    ["Offset of field: obs_audio_info2::fixed_buffering"]
4194        [::std::mem::offset_of!(obs_audio_info2, fixed_buffering) - 12usize];
4195};
4196#[doc = " Sent to source filters via the filter_audio callback to allow filtering of\n audio data"]
4197#[repr(C)]
4198pub struct obs_audio_data {
4199    pub data: [*mut u8; 8usize],
4200    pub frames: u32,
4201    pub timestamp: u64,
4202}
4203#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4204const _: () = {
4205    ["Size of obs_audio_data"][::std::mem::size_of::<obs_audio_data>() - 80usize];
4206    ["Alignment of obs_audio_data"][::std::mem::align_of::<obs_audio_data>() - 8usize];
4207    ["Offset of field: obs_audio_data::data"]
4208        [::std::mem::offset_of!(obs_audio_data, data) - 0usize];
4209    ["Offset of field: obs_audio_data::frames"]
4210        [::std::mem::offset_of!(obs_audio_data, frames) - 64usize];
4211    ["Offset of field: obs_audio_data::timestamp"]
4212        [::std::mem::offset_of!(obs_audio_data, timestamp) - 72usize];
4213};
4214#[doc = " Source audio output structure.  Used with obs_source_output_audio to output\n source audio.  Audio is automatically resampled and remixed as necessary."]
4215#[repr(C)]
4216pub struct obs_source_audio {
4217    pub data: [*const u8; 8usize],
4218    pub frames: u32,
4219    pub speakers: speaker_layout,
4220    pub format: audio_format,
4221    pub samples_per_sec: u32,
4222    pub timestamp: u64,
4223}
4224#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4225const _: () = {
4226    ["Size of obs_source_audio"][::std::mem::size_of::<obs_source_audio>() - 88usize];
4227    ["Alignment of obs_source_audio"][::std::mem::align_of::<obs_source_audio>() - 8usize];
4228    ["Offset of field: obs_source_audio::data"]
4229        [::std::mem::offset_of!(obs_source_audio, data) - 0usize];
4230    ["Offset of field: obs_source_audio::frames"]
4231        [::std::mem::offset_of!(obs_source_audio, frames) - 64usize];
4232    ["Offset of field: obs_source_audio::speakers"]
4233        [::std::mem::offset_of!(obs_source_audio, speakers) - 68usize];
4234    ["Offset of field: obs_source_audio::format"]
4235        [::std::mem::offset_of!(obs_source_audio, format) - 72usize];
4236    ["Offset of field: obs_source_audio::samples_per_sec"]
4237        [::std::mem::offset_of!(obs_source_audio, samples_per_sec) - 76usize];
4238    ["Offset of field: obs_source_audio::timestamp"]
4239        [::std::mem::offset_of!(obs_source_audio, timestamp) - 80usize];
4240};
4241#[repr(C)]
4242pub struct obs_source_cea_708 {
4243    pub data: *const u8,
4244    pub packets: u32,
4245    pub timestamp: u64,
4246}
4247#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4248const _: () = {
4249    ["Size of obs_source_cea_708"][::std::mem::size_of::<obs_source_cea_708>() - 24usize];
4250    ["Alignment of obs_source_cea_708"][::std::mem::align_of::<obs_source_cea_708>() - 8usize];
4251    ["Offset of field: obs_source_cea_708::data"]
4252        [::std::mem::offset_of!(obs_source_cea_708, data) - 0usize];
4253    ["Offset of field: obs_source_cea_708::packets"]
4254        [::std::mem::offset_of!(obs_source_cea_708, packets) - 8usize];
4255    ["Offset of field: obs_source_cea_708::timestamp"]
4256        [::std::mem::offset_of!(obs_source_cea_708, timestamp) - 16usize];
4257};
4258#[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."]
4259#[repr(C)]
4260pub struct obs_source_frame {
4261    pub data: [*mut u8; 8usize],
4262    pub linesize: [u32; 8usize],
4263    pub width: u32,
4264    pub height: u32,
4265    pub timestamp: u64,
4266    pub format: video_format,
4267    pub color_matrix: [f32; 16usize],
4268    pub full_range: bool,
4269    pub max_luminance: u16,
4270    pub color_range_min: [f32; 3usize],
4271    pub color_range_max: [f32; 3usize],
4272    pub flip: bool,
4273    pub flags: u8,
4274    pub trc: u8,
4275    pub refs: ::std::os::raw::c_long,
4276    pub prev_frame: bool,
4277}
4278#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4279const _: () = {
4280    ["Size of obs_source_frame"][::std::mem::size_of::<obs_source_frame>() - 224usize];
4281    ["Alignment of obs_source_frame"][::std::mem::align_of::<obs_source_frame>() - 8usize];
4282    ["Offset of field: obs_source_frame::data"]
4283        [::std::mem::offset_of!(obs_source_frame, data) - 0usize];
4284    ["Offset of field: obs_source_frame::linesize"]
4285        [::std::mem::offset_of!(obs_source_frame, linesize) - 64usize];
4286    ["Offset of field: obs_source_frame::width"]
4287        [::std::mem::offset_of!(obs_source_frame, width) - 96usize];
4288    ["Offset of field: obs_source_frame::height"]
4289        [::std::mem::offset_of!(obs_source_frame, height) - 100usize];
4290    ["Offset of field: obs_source_frame::timestamp"]
4291        [::std::mem::offset_of!(obs_source_frame, timestamp) - 104usize];
4292    ["Offset of field: obs_source_frame::format"]
4293        [::std::mem::offset_of!(obs_source_frame, format) - 112usize];
4294    ["Offset of field: obs_source_frame::color_matrix"]
4295        [::std::mem::offset_of!(obs_source_frame, color_matrix) - 116usize];
4296    ["Offset of field: obs_source_frame::full_range"]
4297        [::std::mem::offset_of!(obs_source_frame, full_range) - 180usize];
4298    ["Offset of field: obs_source_frame::max_luminance"]
4299        [::std::mem::offset_of!(obs_source_frame, max_luminance) - 182usize];
4300    ["Offset of field: obs_source_frame::color_range_min"]
4301        [::std::mem::offset_of!(obs_source_frame, color_range_min) - 184usize];
4302    ["Offset of field: obs_source_frame::color_range_max"]
4303        [::std::mem::offset_of!(obs_source_frame, color_range_max) - 196usize];
4304    ["Offset of field: obs_source_frame::flip"]
4305        [::std::mem::offset_of!(obs_source_frame, flip) - 208usize];
4306    ["Offset of field: obs_source_frame::flags"]
4307        [::std::mem::offset_of!(obs_source_frame, flags) - 209usize];
4308    ["Offset of field: obs_source_frame::trc"]
4309        [::std::mem::offset_of!(obs_source_frame, trc) - 210usize];
4310    ["Offset of field: obs_source_frame::refs"]
4311        [::std::mem::offset_of!(obs_source_frame, refs) - 212usize];
4312    ["Offset of field: obs_source_frame::prev_frame"]
4313        [::std::mem::offset_of!(obs_source_frame, prev_frame) - 216usize];
4314};
4315#[repr(C)]
4316pub struct obs_source_frame2 {
4317    pub data: [*mut u8; 8usize],
4318    pub linesize: [u32; 8usize],
4319    pub width: u32,
4320    pub height: u32,
4321    pub timestamp: u64,
4322    pub format: video_format,
4323    pub range: video_range_type,
4324    pub color_matrix: [f32; 16usize],
4325    pub color_range_min: [f32; 3usize],
4326    pub color_range_max: [f32; 3usize],
4327    pub flip: bool,
4328    pub flags: u8,
4329    pub trc: u8,
4330}
4331#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4332const _: () = {
4333    ["Size of obs_source_frame2"][::std::mem::size_of::<obs_source_frame2>() - 216usize];
4334    ["Alignment of obs_source_frame2"][::std::mem::align_of::<obs_source_frame2>() - 8usize];
4335    ["Offset of field: obs_source_frame2::data"]
4336        [::std::mem::offset_of!(obs_source_frame2, data) - 0usize];
4337    ["Offset of field: obs_source_frame2::linesize"]
4338        [::std::mem::offset_of!(obs_source_frame2, linesize) - 64usize];
4339    ["Offset of field: obs_source_frame2::width"]
4340        [::std::mem::offset_of!(obs_source_frame2, width) - 96usize];
4341    ["Offset of field: obs_source_frame2::height"]
4342        [::std::mem::offset_of!(obs_source_frame2, height) - 100usize];
4343    ["Offset of field: obs_source_frame2::timestamp"]
4344        [::std::mem::offset_of!(obs_source_frame2, timestamp) - 104usize];
4345    ["Offset of field: obs_source_frame2::format"]
4346        [::std::mem::offset_of!(obs_source_frame2, format) - 112usize];
4347    ["Offset of field: obs_source_frame2::range"]
4348        [::std::mem::offset_of!(obs_source_frame2, range) - 116usize];
4349    ["Offset of field: obs_source_frame2::color_matrix"]
4350        [::std::mem::offset_of!(obs_source_frame2, color_matrix) - 120usize];
4351    ["Offset of field: obs_source_frame2::color_range_min"]
4352        [::std::mem::offset_of!(obs_source_frame2, color_range_min) - 184usize];
4353    ["Offset of field: obs_source_frame2::color_range_max"]
4354        [::std::mem::offset_of!(obs_source_frame2, color_range_max) - 196usize];
4355    ["Offset of field: obs_source_frame2::flip"]
4356        [::std::mem::offset_of!(obs_source_frame2, flip) - 208usize];
4357    ["Offset of field: obs_source_frame2::flags"]
4358        [::std::mem::offset_of!(obs_source_frame2, flags) - 209usize];
4359    ["Offset of field: obs_source_frame2::trc"]
4360        [::std::mem::offset_of!(obs_source_frame2, trc) - 210usize];
4361};
4362#[doc = " Access to the argc/argv used to start OBS. What you see is what you get."]
4363#[repr(C)]
4364#[derive(Debug, Copy, Clone)]
4365pub struct obs_cmdline_args {
4366    pub argc: ::std::os::raw::c_int,
4367    pub argv: *mut *mut ::std::os::raw::c_char,
4368}
4369#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4370const _: () = {
4371    ["Size of obs_cmdline_args"][::std::mem::size_of::<obs_cmdline_args>() - 16usize];
4372    ["Alignment of obs_cmdline_args"][::std::mem::align_of::<obs_cmdline_args>() - 8usize];
4373    ["Offset of field: obs_cmdline_args::argc"]
4374        [::std::mem::offset_of!(obs_cmdline_args, argc) - 0usize];
4375    ["Offset of field: obs_cmdline_args::argv"]
4376        [::std::mem::offset_of!(obs_cmdline_args, argv) - 8usize];
4377};
4378#[repr(C)]
4379pub struct obs_module_failure_info {
4380    pub failed_modules: *mut *mut ::std::os::raw::c_char,
4381    pub count: usize,
4382}
4383#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4384const _: () = {
4385    ["Size of obs_module_failure_info"][::std::mem::size_of::<obs_module_failure_info>() - 16usize];
4386    ["Alignment of obs_module_failure_info"]
4387        [::std::mem::align_of::<obs_module_failure_info>() - 8usize];
4388    ["Offset of field: obs_module_failure_info::failed_modules"]
4389        [::std::mem::offset_of!(obs_module_failure_info, failed_modules) - 0usize];
4390    ["Offset of field: obs_module_failure_info::count"]
4391        [::std::mem::offset_of!(obs_module_failure_info, count) - 8usize];
4392};
4393#[repr(C)]
4394#[derive(Debug, Copy, Clone)]
4395pub struct obs_module_info {
4396    pub bin_path: *const ::std::os::raw::c_char,
4397    pub data_path: *const ::std::os::raw::c_char,
4398}
4399#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4400const _: () = {
4401    ["Size of obs_module_info"][::std::mem::size_of::<obs_module_info>() - 16usize];
4402    ["Alignment of obs_module_info"][::std::mem::align_of::<obs_module_info>() - 8usize];
4403    ["Offset of field: obs_module_info::bin_path"]
4404        [::std::mem::offset_of!(obs_module_info, bin_path) - 0usize];
4405    ["Offset of field: obs_module_info::data_path"]
4406        [::std::mem::offset_of!(obs_module_info, data_path) - 8usize];
4407};
4408pub type obs_find_module_callback_t = ::std::option::Option<
4409    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info),
4410>;
4411#[repr(C)]
4412#[derive(Debug, Copy, Clone)]
4413pub struct obs_module_info2 {
4414    pub bin_path: *const ::std::os::raw::c_char,
4415    pub data_path: *const ::std::os::raw::c_char,
4416    pub name: *const ::std::os::raw::c_char,
4417}
4418#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4419const _: () = {
4420    ["Size of obs_module_info2"][::std::mem::size_of::<obs_module_info2>() - 24usize];
4421    ["Alignment of obs_module_info2"][::std::mem::align_of::<obs_module_info2>() - 8usize];
4422    ["Offset of field: obs_module_info2::bin_path"]
4423        [::std::mem::offset_of!(obs_module_info2, bin_path) - 0usize];
4424    ["Offset of field: obs_module_info2::data_path"]
4425        [::std::mem::offset_of!(obs_module_info2, data_path) - 8usize];
4426    ["Offset of field: obs_module_info2::name"]
4427        [::std::mem::offset_of!(obs_module_info2, name) - 16usize];
4428};
4429pub type obs_find_module_callback2_t = ::std::option::Option<
4430    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info2),
4431>;
4432pub type obs_enum_module_callback_t = ::std::option::Option<
4433    unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, module: *mut obs_module_t),
4434>;
4435#[doc = "< RGB/YUV"]
4436pub const obs_base_effect_OBS_EFFECT_DEFAULT: obs_base_effect = 0;
4437#[doc = "< RGB/YUV (using texture_rect)"]
4438pub const obs_base_effect_OBS_EFFECT_DEFAULT_RECT: obs_base_effect = 1;
4439#[doc = "< RGB/YUV (alpha set to 1.0)"]
4440pub const obs_base_effect_OBS_EFFECT_OPAQUE: obs_base_effect = 2;
4441#[doc = "< RGB/YUV (solid color only)"]
4442pub const obs_base_effect_OBS_EFFECT_SOLID: obs_base_effect = 3;
4443#[doc = "< Bicubic downscale"]
4444pub const obs_base_effect_OBS_EFFECT_BICUBIC: obs_base_effect = 4;
4445#[doc = "< Lanczos downscale"]
4446pub const obs_base_effect_OBS_EFFECT_LANCZOS: obs_base_effect = 5;
4447#[doc = "< Bilinear low resolution downscale"]
4448pub const obs_base_effect_OBS_EFFECT_BILINEAR_LOWRES: obs_base_effect = 6;
4449#[doc = "< Premultiplied alpha"]
4450pub const obs_base_effect_OBS_EFFECT_PREMULTIPLIED_ALPHA: obs_base_effect = 7;
4451#[doc = "< RGB/YUV (repeating)"]
4452pub const obs_base_effect_OBS_EFFECT_REPEAT: obs_base_effect = 8;
4453#[doc = "< Area rescale"]
4454pub const obs_base_effect_OBS_EFFECT_AREA: obs_base_effect = 9;
4455pub type obs_base_effect = ::std::os::raw::c_int;
4456pub type obs_load_source_cb = ::std::option::Option<
4457    unsafe extern "C" fn(private_data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
4458>;
4459pub type obs_save_source_filter_cb = ::std::option::Option<
4460    unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t) -> bool,
4461>;
4462pub const obs_obj_type_OBS_OBJ_TYPE_INVALID: obs_obj_type = 0;
4463pub const obs_obj_type_OBS_OBJ_TYPE_SOURCE: obs_obj_type = 1;
4464pub const obs_obj_type_OBS_OBJ_TYPE_OUTPUT: obs_obj_type = 2;
4465pub const obs_obj_type_OBS_OBJ_TYPE_ENCODER: obs_obj_type = 3;
4466pub const obs_obj_type_OBS_OBJ_TYPE_SERVICE: obs_obj_type = 4;
4467pub const obs_obj_type_OBS_OBJ_TYPE_CANVAS: obs_obj_type = 5;
4468pub type obs_obj_type = ::std::os::raw::c_int;
4469pub type obs_enum_audio_device_cb = ::std::option::Option<
4470    unsafe extern "C" fn(
4471        data: *mut ::std::os::raw::c_void,
4472        name: *const ::std::os::raw::c_char,
4473        id: *const ::std::os::raw::c_char,
4474    ) -> bool,
4475>;
4476pub type obs_task_t =
4477    ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>;
4478pub const obs_task_type_OBS_TASK_UI: obs_task_type = 0;
4479pub const obs_task_type_OBS_TASK_GRAPHICS: obs_task_type = 1;
4480pub const obs_task_type_OBS_TASK_AUDIO: obs_task_type = 2;
4481pub const obs_task_type_OBS_TASK_DESTROY: obs_task_type = 3;
4482pub type obs_task_type = ::std::os::raw::c_int;
4483pub type obs_task_handler_t = ::std::option::Option<
4484    unsafe extern "C" fn(task: obs_task_t, param: *mut ::std::os::raw::c_void, wait: bool),
4485>;
4486pub type obs_source_audio_capture_t = ::std::option::Option<
4487    unsafe extern "C" fn(
4488        param: *mut ::std::os::raw::c_void,
4489        source: *mut obs_source_t,
4490        audio_data: *const audio_data,
4491        muted: bool,
4492    ),
4493>;
4494pub type obs_source_caption_t = ::std::option::Option<
4495    unsafe extern "C" fn(
4496        param: *mut ::std::os::raw::c_void,
4497        source: *mut obs_source_t,
4498        captions: *const obs_source_cea_708,
4499    ),
4500>;
4501pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISABLE: obs_deinterlace_mode = 0;
4502pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISCARD: obs_deinterlace_mode = 1;
4503pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_RETRO: obs_deinterlace_mode = 2;
4504pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND: obs_deinterlace_mode = 3;
4505pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND_2X: obs_deinterlace_mode = 4;
4506pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR: obs_deinterlace_mode = 5;
4507pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR_2X: obs_deinterlace_mode = 6;
4508pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF: obs_deinterlace_mode = 7;
4509pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF_2X: obs_deinterlace_mode = 8;
4510pub type obs_deinterlace_mode = ::std::os::raw::c_int;
4511pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_TOP: obs_deinterlace_field_order =
4512    0;
4513pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_BOTTOM:
4514    obs_deinterlace_field_order = 1;
4515pub type obs_deinterlace_field_order = ::std::os::raw::c_int;
4516pub const obs_monitoring_type_OBS_MONITORING_TYPE_NONE: obs_monitoring_type = 0;
4517pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_ONLY: obs_monitoring_type = 1;
4518pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT: obs_monitoring_type = 2;
4519pub type obs_monitoring_type = ::std::os::raw::c_int;
4520pub const obs_transition_target_OBS_TRANSITION_SOURCE_A: obs_transition_target = 0;
4521pub const obs_transition_target_OBS_TRANSITION_SOURCE_B: obs_transition_target = 1;
4522pub type obs_transition_target = ::std::os::raw::c_int;
4523pub const obs_transition_mode_OBS_TRANSITION_MODE_AUTO: obs_transition_mode = 0;
4524pub const obs_transition_mode_OBS_TRANSITION_MODE_MANUAL: obs_transition_mode = 1;
4525pub type obs_transition_mode = ::std::os::raw::c_int;
4526pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_MAX_ONLY: obs_transition_scale_type = 0;
4527pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_ASPECT: obs_transition_scale_type = 1;
4528pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_STRETCH: obs_transition_scale_type = 2;
4529pub type obs_transition_scale_type = ::std::os::raw::c_int;
4530pub type obs_transition_video_render_callback_t = ::std::option::Option<
4531    unsafe extern "C" fn(
4532        data: *mut ::std::os::raw::c_void,
4533        a: *mut gs_texture_t,
4534        b: *mut gs_texture_t,
4535        t: f32,
4536        cx: u32,
4537        cy: u32,
4538    ),
4539>;
4540pub type obs_transition_audio_mix_callback_t =
4541    ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, t: f32) -> f32>;
4542#[doc = "< Source refs only"]
4543pub const obs_scene_duplicate_type_OBS_SCENE_DUP_REFS: obs_scene_duplicate_type = 0;
4544#[doc = "< Fully duplicate"]
4545pub const obs_scene_duplicate_type_OBS_SCENE_DUP_COPY: obs_scene_duplicate_type = 1;
4546#[doc = "< Source refs only (as private)"]
4547pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_REFS: obs_scene_duplicate_type = 2;
4548#[doc = "< Fully duplicate (as private)"]
4549pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_COPY: obs_scene_duplicate_type = 3;
4550pub type obs_scene_duplicate_type = ::std::os::raw::c_int;
4551#[repr(C)]
4552#[derive(Debug, Copy, Clone)]
4553pub struct obs_sceneitem_order_info {
4554    pub group: *mut obs_sceneitem_t,
4555    pub item: *mut obs_sceneitem_t,
4556}
4557#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4558const _: () = {
4559    ["Size of obs_sceneitem_order_info"]
4560        [::std::mem::size_of::<obs_sceneitem_order_info>() - 16usize];
4561    ["Alignment of obs_sceneitem_order_info"]
4562        [::std::mem::align_of::<obs_sceneitem_order_info>() - 8usize];
4563    ["Offset of field: obs_sceneitem_order_info::group"]
4564        [::std::mem::offset_of!(obs_sceneitem_order_info, group) - 0usize];
4565    ["Offset of field: obs_sceneitem_order_info::item"]
4566        [::std::mem::offset_of!(obs_sceneitem_order_info, item) - 8usize];
4567};
4568pub type obs_scene_atomic_update_func = ::std::option::Option<
4569    unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, scene: *mut obs_scene_t),
4570>;
4571#[repr(C)]
4572#[derive(Debug, Copy, Clone)]
4573pub struct obs_sceneitem_crop {
4574    pub left: ::std::os::raw::c_int,
4575    pub top: ::std::os::raw::c_int,
4576    pub right: ::std::os::raw::c_int,
4577    pub bottom: ::std::os::raw::c_int,
4578}
4579#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4580const _: () = {
4581    ["Size of obs_sceneitem_crop"][::std::mem::size_of::<obs_sceneitem_crop>() - 16usize];
4582    ["Alignment of obs_sceneitem_crop"][::std::mem::align_of::<obs_sceneitem_crop>() - 4usize];
4583    ["Offset of field: obs_sceneitem_crop::left"]
4584        [::std::mem::offset_of!(obs_sceneitem_crop, left) - 0usize];
4585    ["Offset of field: obs_sceneitem_crop::top"]
4586        [::std::mem::offset_of!(obs_sceneitem_crop, top) - 4usize];
4587    ["Offset of field: obs_sceneitem_crop::right"]
4588        [::std::mem::offset_of!(obs_sceneitem_crop, right) - 8usize];
4589    ["Offset of field: obs_sceneitem_crop::bottom"]
4590        [::std::mem::offset_of!(obs_sceneitem_crop, bottom) - 12usize];
4591};
4592pub const obs_canvas_flags_MAIN: obs_canvas_flags = 1;
4593pub const obs_canvas_flags_ACTIVATE: obs_canvas_flags = 2;
4594pub const obs_canvas_flags_MIX_AUDIO: obs_canvas_flags = 4;
4595pub const obs_canvas_flags_SCENE_REF: obs_canvas_flags = 8;
4596pub const obs_canvas_flags_EPHEMERAL: obs_canvas_flags = 16;
4597pub const obs_canvas_flags_PROGRAM: obs_canvas_flags = 14;
4598pub const obs_canvas_flags_PREVIEW: obs_canvas_flags = 16;
4599pub const obs_canvas_flags_DEVICE: obs_canvas_flags = 18;
4600pub type obs_canvas_flags = ::std::os::raw::c_int;
4601pub const display_capture_method_DISPLAY_METHOD_AUTO: display_capture_method = 0;
4602pub const display_capture_method_DISPLAY_METHOD_DXGI: display_capture_method = 1;
4603pub const display_capture_method_DISPLAY_METHOD_WGC: display_capture_method = 2;
4604pub type display_capture_method = ::std::os::raw::c_int;
4605pub const capture_mode_CAPTURE_MODE_ANY: capture_mode = 0;
4606pub const capture_mode_CAPTURE_MODE_WINDOW: capture_mode = 1;
4607pub const capture_mode_CAPTURE_MODE_HOTKEY: capture_mode = 2;
4608pub type capture_mode = ::std::os::raw::c_int;
4609pub const hook_rate_HOOK_RATE_SLOW: hook_rate = 0;
4610pub const hook_rate_HOOK_RATE_NORMAL: hook_rate = 1;
4611pub const hook_rate_HOOK_RATE_FAST: hook_rate = 2;
4612pub const hook_rate_HOOK_RATE_FASTEST: hook_rate = 3;
4613pub type hook_rate = ::std::os::raw::c_int;
4614pub const window_priority_WINDOW_PRIORITY_CLASS: window_priority = 0;
4615pub const window_priority_WINDOW_PRIORITY_TITLE: window_priority = 1;
4616pub const window_priority_WINDOW_PRIORITY_EXE: window_priority = 2;
4617pub type window_priority = ::std::os::raw::c_int;
4618pub const window_search_mode_INCLUDE_MINIMIZED: window_search_mode = 0;
4619pub const window_search_mode_EXCLUDE_MINIMIZED: window_search_mode = 1;
4620pub type window_search_mode = ::std::os::raw::c_int;
4621pub const window_capture_method_METHOD_AUTO: window_capture_method = 0;
4622pub const window_capture_method_METHOD_BITBLT: window_capture_method = 1;
4623pub const window_capture_method_METHOD_WGC: window_capture_method = 2;
4624pub type window_capture_method = ::std::os::raw::c_int;
4625pub type __builtin_va_list = *mut ::std::os::raw::c_char;
4626unsafe extern "C" {
4627    pub fn base_get_log_handler(
4628        handler: *mut log_handler_t,
4629        param: *mut *mut ::std::os::raw::c_void,
4630    );
4631    pub fn base_set_log_handler(handler: log_handler_t, param: *mut ::std::os::raw::c_void);
4632    pub fn base_set_crash_handler(
4633        handler: ::std::option::Option<
4634            unsafe extern "C" fn(
4635                arg1: *const ::std::os::raw::c_char,
4636                arg2: va_list,
4637                arg3: *mut ::std::os::raw::c_void,
4638            ),
4639        >,
4640        param: *mut ::std::os::raw::c_void,
4641    );
4642    pub fn blog(log_level: ::std::os::raw::c_int, format: *const ::std::os::raw::c_char, ...);
4643    pub fn bcrash(format: *const ::std::os::raw::c_char, ...) -> !;
4644    pub fn xbegin() -> ::std::os::raw::c_uint;
4645    pub fn bmalloc(size: usize) -> *mut ::std::os::raw::c_void;
4646    pub fn brealloc(ptr: *mut ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4647    pub fn bfree(ptr: *mut ::std::os::raw::c_void);
4648    pub fn base_get_alignment() -> ::std::os::raw::c_int;
4649    pub fn bnum_allocs() -> ::std::os::raw::c_long;
4650    pub fn bmemdup(ptr: *const ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4651    pub fn profile_register_root(
4652        name: *const ::std::os::raw::c_char,
4653        expected_time_between_calls: u64,
4654    );
4655    pub fn profile_start(name: *const ::std::os::raw::c_char);
4656    pub fn profile_end(name: *const ::std::os::raw::c_char);
4657    pub fn profile_reenable_thread();
4658    pub fn profiler_start();
4659    pub fn profiler_stop();
4660    pub fn profiler_print(snap: *mut profiler_snapshot_t);
4661    pub fn profiler_print_time_between_calls(snap: *mut profiler_snapshot_t);
4662    pub fn profiler_free();
4663    pub fn profiler_name_store_create() -> *mut profiler_name_store_t;
4664    pub fn profiler_name_store_free(store: *mut profiler_name_store_t);
4665    pub fn profile_store_name(
4666        store: *mut profiler_name_store_t,
4667        format: *const ::std::os::raw::c_char,
4668        ...
4669    ) -> *const ::std::os::raw::c_char;
4670    pub fn profile_snapshot_create() -> *mut profiler_snapshot_t;
4671    pub fn profile_snapshot_free(snap: *mut profiler_snapshot_t);
4672    pub fn profiler_snapshot_dump_csv(
4673        snap: *const profiler_snapshot_t,
4674        filename: *const ::std::os::raw::c_char,
4675    ) -> bool;
4676    pub fn profiler_snapshot_dump_csv_gz(
4677        snap: *const profiler_snapshot_t,
4678        filename: *const ::std::os::raw::c_char,
4679    ) -> bool;
4680    pub fn profiler_snapshot_num_roots(snap: *mut profiler_snapshot_t) -> usize;
4681    pub fn profiler_snapshot_enumerate_roots(
4682        snap: *mut profiler_snapshot_t,
4683        func: profiler_entry_enum_func,
4684        context: *mut ::std::os::raw::c_void,
4685    );
4686    pub fn profiler_snapshot_filter_roots(
4687        snap: *mut profiler_snapshot_t,
4688        func: profiler_name_filter_func,
4689        data: *mut ::std::os::raw::c_void,
4690    );
4691    pub fn profiler_snapshot_num_children(entry: *mut profiler_snapshot_entry_t) -> usize;
4692    pub fn profiler_snapshot_enumerate_children(
4693        entry: *mut profiler_snapshot_entry_t,
4694        func: profiler_entry_enum_func,
4695        context: *mut ::std::os::raw::c_void,
4696    );
4697    pub fn profiler_snapshot_entry_name(
4698        entry: *mut profiler_snapshot_entry_t,
4699    ) -> *const ::std::os::raw::c_char;
4700    pub fn profiler_snapshot_entry_times(
4701        entry: *mut profiler_snapshot_entry_t,
4702    ) -> *mut profiler_time_entries_t;
4703    pub fn profiler_snapshot_entry_min_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4704    pub fn profiler_snapshot_entry_max_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4705    pub fn profiler_snapshot_entry_overall_count(entry: *mut profiler_snapshot_entry_t) -> u64;
4706    pub fn profiler_snapshot_entry_times_between_calls(
4707        entry: *mut profiler_snapshot_entry_t,
4708    ) -> *mut profiler_time_entries_t;
4709    pub fn profiler_snapshot_entry_expected_time_between_calls(
4710        entry: *mut profiler_snapshot_entry_t,
4711    ) -> u64;
4712    pub fn profiler_snapshot_entry_min_time_between_calls(
4713        entry: *mut profiler_snapshot_entry_t,
4714    ) -> u64;
4715    pub fn profiler_snapshot_entry_max_time_between_calls(
4716        entry: *mut profiler_snapshot_entry_t,
4717    ) -> u64;
4718    pub fn profiler_snapshot_entry_overall_between_calls_count(
4719        entry: *mut profiler_snapshot_entry_t,
4720    ) -> u64;
4721    pub fn text_lookup_create(path: *const ::std::os::raw::c_char) -> *mut lookup_t;
4722    pub fn text_lookup_add(lookup: *mut lookup_t, path: *const ::std::os::raw::c_char) -> bool;
4723    pub fn text_lookup_destroy(lookup: *mut lookup_t);
4724    pub fn text_lookup_getstr(
4725        lookup: *mut lookup_t,
4726        lookup_val: *const ::std::os::raw::c_char,
4727        out: *mut *const ::std::os::raw::c_char,
4728    ) -> bool;
4729    pub fn input_getbuttonstate(input: *mut input_t, button: u32) -> ::std::os::raw::c_int;
4730    pub fn gs_shader_destroy(shader: *mut gs_shader_t);
4731    pub fn gs_shader_get_num_params(shader: *const gs_shader_t) -> ::std::os::raw::c_int;
4732    pub fn gs_shader_get_param_by_idx(shader: *mut gs_shader_t, param: u32) -> *mut gs_sparam_t;
4733    pub fn gs_shader_get_param_by_name(
4734        shader: *mut gs_shader_t,
4735        name: *const ::std::os::raw::c_char,
4736    ) -> *mut gs_sparam_t;
4737    pub fn gs_shader_get_viewproj_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4738    pub fn gs_shader_get_world_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4739    pub fn gs_shader_get_param_info(param: *const gs_sparam_t, info: *mut gs_shader_param_info);
4740    pub fn gs_shader_set_bool(param: *mut gs_sparam_t, val: bool);
4741    pub fn gs_shader_set_float(param: *mut gs_sparam_t, val: f32);
4742    pub fn gs_shader_set_int(param: *mut gs_sparam_t, val: ::std::os::raw::c_int);
4743    pub fn gs_shader_set_matrix3(param: *mut gs_sparam_t, val: *const matrix3);
4744    pub fn gs_shader_set_matrix4(param: *mut gs_sparam_t, val: *const matrix4);
4745    pub fn gs_shader_set_vec2(param: *mut gs_sparam_t, val: *const vec2);
4746    pub fn gs_shader_set_vec3(param: *mut gs_sparam_t, val: *const vec3);
4747    pub fn gs_shader_set_vec4(param: *mut gs_sparam_t, val: *const vec4);
4748    pub fn gs_shader_set_texture(param: *mut gs_sparam_t, val: *mut gs_texture_t);
4749    pub fn gs_shader_set_val(
4750        param: *mut gs_sparam_t,
4751        val: *const ::std::os::raw::c_void,
4752        size: usize,
4753    );
4754    pub fn gs_shader_set_default(param: *mut gs_sparam_t);
4755    pub fn gs_shader_set_next_sampler(param: *mut gs_sparam_t, sampler: *mut gs_samplerstate_t);
4756    pub fn gs_effect_destroy(effect: *mut gs_effect_t);
4757    pub fn gs_effect_get_technique(
4758        effect: *const gs_effect_t,
4759        name: *const ::std::os::raw::c_char,
4760    ) -> *mut gs_technique_t;
4761    pub fn gs_effect_get_current_technique(effect: *const gs_effect_t) -> *mut gs_technique_t;
4762    pub fn gs_technique_begin(technique: *mut gs_technique_t) -> usize;
4763    pub fn gs_technique_end(technique: *mut gs_technique_t);
4764    pub fn gs_technique_begin_pass(technique: *mut gs_technique_t, pass: usize) -> bool;
4765    pub fn gs_technique_begin_pass_by_name(
4766        technique: *mut gs_technique_t,
4767        name: *const ::std::os::raw::c_char,
4768    ) -> bool;
4769    pub fn gs_technique_end_pass(technique: *mut gs_technique_t);
4770    pub fn gs_technique_get_pass_by_idx(
4771        technique: *const gs_technique_t,
4772        pass: usize,
4773    ) -> *mut gs_epass_t;
4774    pub fn gs_technique_get_pass_by_name(
4775        technique: *const gs_technique_t,
4776        name: *const ::std::os::raw::c_char,
4777    ) -> *mut gs_epass_t;
4778    pub fn gs_effect_get_num_params(effect: *const gs_effect_t) -> usize;
4779    pub fn gs_effect_get_param_by_idx(effect: *const gs_effect_t, param: usize)
4780    -> *mut gs_eparam_t;
4781    pub fn gs_effect_get_param_by_name(
4782        effect: *const gs_effect_t,
4783        name: *const ::std::os::raw::c_char,
4784    ) -> *mut gs_eparam_t;
4785    pub fn gs_param_get_num_annotations(param: *const gs_eparam_t) -> usize;
4786    pub fn gs_param_get_annotation_by_idx(
4787        param: *const gs_eparam_t,
4788        annotation: usize,
4789    ) -> *mut gs_eparam_t;
4790    pub fn gs_param_get_annotation_by_name(
4791        param: *const gs_eparam_t,
4792        name: *const ::std::os::raw::c_char,
4793    ) -> *mut gs_eparam_t;
4794#[doc = " Helper function to simplify effect usage.  Use with a while loop that\n contains drawing functions.  Automatically handles techniques, passes, and\n unloading."]
4795    pub fn gs_effect_loop(effect: *mut gs_effect_t, name: *const ::std::os::raw::c_char) -> bool;
4796#[doc = " used internally"]
4797    pub fn gs_effect_update_params(effect: *mut gs_effect_t);
4798    pub fn gs_effect_get_viewproj_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4799    pub fn gs_effect_get_world_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4800    pub fn gs_effect_get_param_info(param: *const gs_eparam_t, info: *mut gs_effect_param_info);
4801    pub fn gs_effect_set_bool(param: *mut gs_eparam_t, val: bool);
4802    pub fn gs_effect_set_float(param: *mut gs_eparam_t, val: f32);
4803    pub fn gs_effect_set_int(param: *mut gs_eparam_t, val: ::std::os::raw::c_int);
4804    pub fn gs_effect_set_matrix4(param: *mut gs_eparam_t, val: *const matrix4);
4805    pub fn gs_effect_set_vec2(param: *mut gs_eparam_t, val: *const vec2);
4806    pub fn gs_effect_set_vec3(param: *mut gs_eparam_t, val: *const vec3);
4807    pub fn gs_effect_set_vec4(param: *mut gs_eparam_t, val: *const vec4);
4808    pub fn gs_effect_set_texture(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4809    pub fn gs_effect_set_texture_srgb(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4810    pub fn gs_effect_set_val(
4811        param: *mut gs_eparam_t,
4812        val: *const ::std::os::raw::c_void,
4813        size: usize,
4814    );
4815    pub fn gs_effect_set_default(param: *mut gs_eparam_t);
4816    pub fn gs_effect_get_val_size(param: *mut gs_eparam_t) -> usize;
4817    pub fn gs_effect_get_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4818    pub fn gs_effect_get_default_val_size(param: *mut gs_eparam_t) -> usize;
4819    pub fn gs_effect_get_default_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4820    pub fn gs_effect_set_next_sampler(param: *mut gs_eparam_t, sampler: *mut gs_samplerstate_t);
4821    pub fn gs_effect_set_color(param: *mut gs_eparam_t, argb: u32);
4822    pub fn gs_texrender_create(
4823        format: gs_color_format,
4824        zsformat: gs_zstencil_format,
4825    ) -> *mut gs_texrender_t;
4826    pub fn gs_texrender_destroy(texrender: *mut gs_texrender_t);
4827    pub fn gs_texrender_begin(texrender: *mut gs_texrender_t, cx: u32, cy: u32) -> bool;
4828    pub fn gs_texrender_begin_with_color_space(
4829        texrender: *mut gs_texrender_t,
4830        cx: u32,
4831        cy: u32,
4832        space: gs_color_space,
4833    ) -> bool;
4834    pub fn gs_texrender_end(texrender: *mut gs_texrender_t);
4835    pub fn gs_texrender_reset(texrender: *mut gs_texrender_t);
4836    pub fn gs_texrender_get_texture(texrender: *const gs_texrender_t) -> *mut gs_texture_t;
4837    pub fn gs_texrender_get_format(texrender: *const gs_texrender_t) -> gs_color_format;
4838    pub fn gs_get_device_name() -> *const ::std::os::raw::c_char;
4839    pub fn gs_get_driver_version() -> *const ::std::os::raw::c_char;
4840    pub fn gs_get_renderer() -> *const ::std::os::raw::c_char;
4841    pub fn gs_get_gpu_dmem() -> u64;
4842    pub fn gs_get_gpu_smem() -> u64;
4843    pub fn gs_get_device_type() -> ::std::os::raw::c_int;
4844    pub fn gs_get_adapter_count() -> u32;
4845    pub fn gs_enum_adapters(
4846        callback: ::std::option::Option<
4847            unsafe extern "C" fn(
4848                param: *mut ::std::os::raw::c_void,
4849                name: *const ::std::os::raw::c_char,
4850                id: u32,
4851            ) -> bool,
4852        >,
4853        param: *mut ::std::os::raw::c_void,
4854    );
4855    pub fn gs_create(
4856        graphics: *mut *mut graphics_t,
4857        module: *const ::std::os::raw::c_char,
4858        adapter: u32,
4859    ) -> ::std::os::raw::c_int;
4860    pub fn gs_destroy(graphics: *mut graphics_t);
4861    pub fn gs_enter_context(graphics: *mut graphics_t);
4862    pub fn gs_leave_context();
4863    pub fn gs_get_context() -> *mut graphics_t;
4864    pub fn gs_get_device_obj() -> *mut ::std::os::raw::c_void;
4865    pub fn gs_matrix_push();
4866    pub fn gs_matrix_pop();
4867    pub fn gs_matrix_identity();
4868    pub fn gs_matrix_transpose();
4869    pub fn gs_matrix_set(matrix: *const matrix4);
4870    pub fn gs_matrix_get(dst: *mut matrix4);
4871    pub fn gs_matrix_mul(matrix: *const matrix4);
4872    pub fn gs_matrix_rotquat(rot: *const quat);
4873    pub fn gs_matrix_rotaa(rot: *const axisang);
4874    pub fn gs_matrix_translate(pos: *const vec3);
4875    pub fn gs_matrix_scale(scale: *const vec3);
4876    pub fn gs_matrix_rotaa4f(x: f32, y: f32, z: f32, angle: f32);
4877    pub fn gs_matrix_translate3f(x: f32, y: f32, z: f32);
4878    pub fn gs_matrix_scale3f(x: f32, y: f32, z: f32);
4879    pub fn gs_render_start(b_new: bool);
4880    pub fn gs_render_stop(mode: gs_draw_mode);
4881    pub fn gs_render_save() -> *mut gs_vertbuffer_t;
4882    pub fn gs_vertex2f(x: f32, y: f32);
4883    pub fn gs_vertex3f(x: f32, y: f32, z: f32);
4884    pub fn gs_normal3f(x: f32, y: f32, z: f32);
4885    pub fn gs_color(color: u32);
4886    pub fn gs_texcoord(x: f32, y: f32, unit: ::std::os::raw::c_int);
4887    pub fn gs_vertex2v(v: *const vec2);
4888    pub fn gs_vertex3v(v: *const vec3);
4889    pub fn gs_normal3v(v: *const vec3);
4890    pub fn gs_color4v(v: *const vec4);
4891    pub fn gs_texcoord2v(v: *const vec2, unit: ::std::os::raw::c_int);
4892    pub fn gs_get_input() -> *mut input_t;
4893    pub fn gs_get_effect() -> *mut gs_effect_t;
4894    pub fn gs_effect_create_from_file(
4895        file: *const ::std::os::raw::c_char,
4896        error_string: *mut *mut ::std::os::raw::c_char,
4897    ) -> *mut gs_effect_t;
4898    pub fn gs_effect_create(
4899        effect_string: *const ::std::os::raw::c_char,
4900        filename: *const ::std::os::raw::c_char,
4901        error_string: *mut *mut ::std::os::raw::c_char,
4902    ) -> *mut gs_effect_t;
4903    pub fn gs_vertexshader_create_from_file(
4904        file: *const ::std::os::raw::c_char,
4905        error_string: *mut *mut ::std::os::raw::c_char,
4906    ) -> *mut gs_shader_t;
4907    pub fn gs_pixelshader_create_from_file(
4908        file: *const ::std::os::raw::c_char,
4909        error_string: *mut *mut ::std::os::raw::c_char,
4910    ) -> *mut gs_shader_t;
4911    pub fn gs_texture_create_from_file(file: *const ::std::os::raw::c_char) -> *mut gs_texture_t;
4912    pub fn gs_create_texture_file_data(
4913        file: *const ::std::os::raw::c_char,
4914        format: *mut gs_color_format,
4915        cx: *mut u32,
4916        cy: *mut u32,
4917    ) -> *mut u8;
4918    pub fn gs_create_texture_file_data2(
4919        file: *const ::std::os::raw::c_char,
4920        alpha_mode: gs_image_alpha_mode,
4921        format: *mut gs_color_format,
4922        cx: *mut u32,
4923        cy: *mut u32,
4924    ) -> *mut u8;
4925    pub fn gs_create_texture_file_data3(
4926        file: *const ::std::os::raw::c_char,
4927        alpha_mode: gs_image_alpha_mode,
4928        format: *mut gs_color_format,
4929        cx: *mut u32,
4930        cy: *mut u32,
4931        space: *mut gs_color_space,
4932    ) -> *mut u8;
4933#[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."]
4934    pub fn gs_draw_sprite(tex: *mut gs_texture_t, flip: u32, width: u32, height: u32);
4935    pub fn gs_draw_quadf(tex: *mut gs_texture_t, flip: u32, width: f32, height: f32);
4936    pub fn gs_draw_sprite_subregion(
4937        tex: *mut gs_texture_t,
4938        flip: u32,
4939        x: u32,
4940        y: u32,
4941        cx: u32,
4942        cy: u32,
4943    );
4944    pub fn gs_draw_cube_backdrop(
4945        cubetex: *mut gs_texture_t,
4946        rot: *const quat,
4947        left: f32,
4948        right: f32,
4949        top: f32,
4950        bottom: f32,
4951        znear: f32,
4952    );
4953#[doc = " sets the viewport to current swap chain size"]
4954    pub fn gs_reset_viewport();
4955#[doc = " sets default screen-sized orthographic mode"]
4956    pub fn gs_set_2d_mode();
4957#[doc = " sets default screen-sized perspective mode"]
4958    pub fn gs_set_3d_mode(fovy: f64, znear: f64, zvar: f64);
4959    pub fn gs_viewport_push();
4960    pub fn gs_viewport_pop();
4961    pub fn gs_texture_set_image(
4962        tex: *mut gs_texture_t,
4963        data: *const u8,
4964        linesize: u32,
4965        invert: bool,
4966    );
4967    pub fn gs_cubetexture_set_image(
4968        cubetex: *mut gs_texture_t,
4969        side: u32,
4970        data: *const ::std::os::raw::c_void,
4971        linesize: u32,
4972        invert: bool,
4973    );
4974    pub fn gs_perspective(fovy: f32, aspect: f32, znear: f32, zfar: f32);
4975    pub fn gs_blend_state_push();
4976    pub fn gs_blend_state_pop();
4977    pub fn gs_reset_blend_state();
4978    pub fn gs_swapchain_create(data: *const gs_init_data) -> *mut gs_swapchain_t;
4979    pub fn gs_resize(x: u32, y: u32);
4980    pub fn gs_update_color_space();
4981    pub fn gs_get_size(x: *mut u32, y: *mut u32);
4982    pub fn gs_get_width() -> u32;
4983    pub fn gs_get_height() -> u32;
4984    pub fn gs_texture_create(
4985        width: u32,
4986        height: u32,
4987        color_format: gs_color_format,
4988        levels: u32,
4989        data: *mut *const u8,
4990        flags: u32,
4991    ) -> *mut gs_texture_t;
4992    pub fn gs_cubetexture_create(
4993        size: u32,
4994        color_format: gs_color_format,
4995        levels: u32,
4996        data: *mut *const u8,
4997        flags: u32,
4998    ) -> *mut gs_texture_t;
4999    pub fn gs_voltexture_create(
5000        width: u32,
5001        height: u32,
5002        depth: u32,
5003        color_format: gs_color_format,
5004        levels: u32,
5005        data: *mut *const u8,
5006        flags: u32,
5007    ) -> *mut gs_texture_t;
5008    pub fn gs_zstencil_create(
5009        width: u32,
5010        height: u32,
5011        format: gs_zstencil_format,
5012    ) -> *mut gs_zstencil_t;
5013    pub fn gs_stagesurface_create(
5014        width: u32,
5015        height: u32,
5016        color_format: gs_color_format,
5017    ) -> *mut gs_stagesurf_t;
5018    pub fn gs_samplerstate_create(info: *const gs_sampler_info) -> *mut gs_samplerstate_t;
5019    pub fn gs_vertexshader_create(
5020        shader: *const ::std::os::raw::c_char,
5021        file: *const ::std::os::raw::c_char,
5022        error_string: *mut *mut ::std::os::raw::c_char,
5023    ) -> *mut gs_shader_t;
5024    pub fn gs_pixelshader_create(
5025        shader: *const ::std::os::raw::c_char,
5026        file: *const ::std::os::raw::c_char,
5027        error_string: *mut *mut ::std::os::raw::c_char,
5028    ) -> *mut gs_shader_t;
5029    pub fn gs_vertexbuffer_create(data: *mut gs_vb_data, flags: u32) -> *mut gs_vertbuffer_t;
5030    pub fn gs_indexbuffer_create(
5031        type_: gs_index_type,
5032        indices: *mut ::std::os::raw::c_void,
5033        num: usize,
5034        flags: u32,
5035    ) -> *mut gs_indexbuffer_t;
5036    pub fn gs_timer_create() -> *mut gs_timer_t;
5037    pub fn gs_timer_range_create() -> *mut gs_timer_range_t;
5038    pub fn gs_get_texture_type(texture: *const gs_texture_t) -> gs_texture_type;
5039    pub fn gs_load_vertexbuffer(vertbuffer: *mut gs_vertbuffer_t);
5040    pub fn gs_load_indexbuffer(indexbuffer: *mut gs_indexbuffer_t);
5041    pub fn gs_load_texture(tex: *mut gs_texture_t, unit: ::std::os::raw::c_int);
5042    pub fn gs_load_samplerstate(samplerstate: *mut gs_samplerstate_t, unit: ::std::os::raw::c_int);
5043    pub fn gs_load_vertexshader(vertshader: *mut gs_shader_t);
5044    pub fn gs_load_pixelshader(pixelshader: *mut gs_shader_t);
5045    pub fn gs_load_default_samplerstate(b_3d: bool, unit: ::std::os::raw::c_int);
5046    pub fn gs_get_vertex_shader() -> *mut gs_shader_t;
5047    pub fn gs_get_pixel_shader() -> *mut gs_shader_t;
5048    pub fn gs_get_color_space() -> gs_color_space;
5049    pub fn gs_get_render_target() -> *mut gs_texture_t;
5050    pub fn gs_get_zstencil_target() -> *mut gs_zstencil_t;
5051    pub fn gs_set_render_target(tex: *mut gs_texture_t, zstencil: *mut gs_zstencil_t);
5052    pub fn gs_set_render_target_with_color_space(
5053        tex: *mut gs_texture_t,
5054        zstencil: *mut gs_zstencil_t,
5055        space: gs_color_space,
5056    );
5057    pub fn gs_set_cube_render_target(
5058        cubetex: *mut gs_texture_t,
5059        side: ::std::os::raw::c_int,
5060        zstencil: *mut gs_zstencil_t,
5061    );
5062    pub fn gs_enable_framebuffer_srgb(enable: bool);
5063    pub fn gs_framebuffer_srgb_enabled() -> bool;
5064    pub fn gs_get_linear_srgb() -> bool;
5065    pub fn gs_set_linear_srgb(linear_srgb: bool) -> bool;
5066    pub fn gs_copy_texture(dst: *mut gs_texture_t, src: *mut gs_texture_t);
5067    pub fn gs_copy_texture_region(
5068        dst: *mut gs_texture_t,
5069        dst_x: u32,
5070        dst_y: u32,
5071        src: *mut gs_texture_t,
5072        src_x: u32,
5073        src_y: u32,
5074        src_w: u32,
5075        src_h: u32,
5076    );
5077    pub fn gs_stage_texture(dst: *mut gs_stagesurf_t, src: *mut gs_texture_t);
5078    pub fn gs_begin_frame();
5079    pub fn gs_begin_scene();
5080    pub fn gs_draw(draw_mode: gs_draw_mode, start_vert: u32, num_verts: u32);
5081    pub fn gs_end_scene();
5082    pub fn gs_load_swapchain(swapchain: *mut gs_swapchain_t);
5083    pub fn gs_clear(clear_flags: u32, color: *const vec4, depth: f32, stencil: u8);
5084    pub fn gs_is_present_ready() -> bool;
5085    pub fn gs_present();
5086    pub fn gs_flush();
5087    pub fn gs_set_cull_mode(mode: gs_cull_mode);
5088    pub fn gs_get_cull_mode() -> gs_cull_mode;
5089    pub fn gs_enable_blending(enable: bool);
5090    pub fn gs_enable_depth_test(enable: bool);
5091    pub fn gs_enable_stencil_test(enable: bool);
5092    pub fn gs_enable_stencil_write(enable: bool);
5093    pub fn gs_enable_color(red: bool, green: bool, blue: bool, alpha: bool);
5094    pub fn gs_blend_function(src: gs_blend_type, dest: gs_blend_type);
5095    pub fn gs_blend_function_separate(
5096        src_c: gs_blend_type,
5097        dest_c: gs_blend_type,
5098        src_a: gs_blend_type,
5099        dest_a: gs_blend_type,
5100    );
5101    pub fn gs_blend_op(op: gs_blend_op_type);
5102    pub fn gs_depth_function(test: gs_depth_test);
5103    pub fn gs_stencil_function(side: gs_stencil_side, test: gs_depth_test);
5104    pub fn gs_stencil_op(
5105        side: gs_stencil_side,
5106        fail: gs_stencil_op_type,
5107        zfail: gs_stencil_op_type,
5108        zpass: gs_stencil_op_type,
5109    );
5110    pub fn gs_set_viewport(
5111        x: ::std::os::raw::c_int,
5112        y: ::std::os::raw::c_int,
5113        width: ::std::os::raw::c_int,
5114        height: ::std::os::raw::c_int,
5115    );
5116    pub fn gs_get_viewport(rect: *mut gs_rect);
5117    pub fn gs_set_scissor_rect(rect: *const gs_rect);
5118    pub fn gs_ortho(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5119    pub fn gs_frustum(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5120    pub fn gs_projection_push();
5121    pub fn gs_projection_pop();
5122    pub fn gs_swapchain_destroy(swapchain: *mut gs_swapchain_t);
5123    pub fn gs_texture_destroy(tex: *mut gs_texture_t);
5124    pub fn gs_texture_get_width(tex: *const gs_texture_t) -> u32;
5125    pub fn gs_texture_get_height(tex: *const gs_texture_t) -> u32;
5126    pub fn gs_texture_get_color_format(tex: *const gs_texture_t) -> gs_color_format;
5127    pub fn gs_texture_map(tex: *mut gs_texture_t, ptr: *mut *mut u8, linesize: *mut u32) -> bool;
5128    pub fn gs_texture_unmap(tex: *mut gs_texture_t);
5129#[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"]
5130    pub fn gs_texture_is_rect(tex: *const gs_texture_t) -> bool;
5131#[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*."]
5132    pub fn gs_texture_get_obj(tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5133    pub fn gs_cubetexture_destroy(cubetex: *mut gs_texture_t);
5134    pub fn gs_cubetexture_get_size(cubetex: *const gs_texture_t) -> u32;
5135    pub fn gs_cubetexture_get_color_format(cubetex: *const gs_texture_t) -> gs_color_format;
5136    pub fn gs_voltexture_destroy(voltex: *mut gs_texture_t);
5137    pub fn gs_voltexture_get_width(voltex: *const gs_texture_t) -> u32;
5138    pub fn gs_voltexture_get_height(voltex: *const gs_texture_t) -> u32;
5139    pub fn gs_voltexture_get_depth(voltex: *const gs_texture_t) -> u32;
5140    pub fn gs_voltexture_get_color_format(voltex: *const gs_texture_t) -> gs_color_format;
5141    pub fn gs_stagesurface_destroy(stagesurf: *mut gs_stagesurf_t);
5142    pub fn gs_stagesurface_get_width(stagesurf: *const gs_stagesurf_t) -> u32;
5143    pub fn gs_stagesurface_get_height(stagesurf: *const gs_stagesurf_t) -> u32;
5144    pub fn gs_stagesurface_get_color_format(stagesurf: *const gs_stagesurf_t) -> gs_color_format;
5145    pub fn gs_stagesurface_map(
5146        stagesurf: *mut gs_stagesurf_t,
5147        data: *mut *mut u8,
5148        linesize: *mut u32,
5149    ) -> bool;
5150    pub fn gs_stagesurface_unmap(stagesurf: *mut gs_stagesurf_t);
5151    pub fn gs_zstencil_destroy(zstencil: *mut gs_zstencil_t);
5152    pub fn gs_samplerstate_destroy(samplerstate: *mut gs_samplerstate_t);
5153    pub fn gs_vertexbuffer_destroy(vertbuffer: *mut gs_vertbuffer_t);
5154    pub fn gs_vertexbuffer_flush(vertbuffer: *mut gs_vertbuffer_t);
5155    pub fn gs_vertexbuffer_flush_direct(vertbuffer: *mut gs_vertbuffer_t, data: *const gs_vb_data);
5156    pub fn gs_vertexbuffer_get_data(vertbuffer: *const gs_vertbuffer_t) -> *mut gs_vb_data;
5157    pub fn gs_indexbuffer_destroy(indexbuffer: *mut gs_indexbuffer_t);
5158    pub fn gs_indexbuffer_flush(indexbuffer: *mut gs_indexbuffer_t);
5159    pub fn gs_indexbuffer_flush_direct(
5160        indexbuffer: *mut gs_indexbuffer_t,
5161        data: *const ::std::os::raw::c_void,
5162    );
5163    pub fn gs_indexbuffer_get_data(
5164        indexbuffer: *const gs_indexbuffer_t,
5165    ) -> *mut ::std::os::raw::c_void;
5166    pub fn gs_indexbuffer_get_num_indices(indexbuffer: *const gs_indexbuffer_t) -> usize;
5167    pub fn gs_indexbuffer_get_type(indexbuffer: *const gs_indexbuffer_t) -> gs_index_type;
5168    pub fn gs_timer_destroy(timer: *mut gs_timer_t);
5169    pub fn gs_timer_begin(timer: *mut gs_timer_t);
5170    pub fn gs_timer_end(timer: *mut gs_timer_t);
5171    pub fn gs_timer_get_data(timer: *mut gs_timer_t, ticks: *mut u64) -> bool;
5172    pub fn gs_timer_range_destroy(timer: *mut gs_timer_range_t);
5173    pub fn gs_timer_range_begin(range: *mut gs_timer_range_t);
5174    pub fn gs_timer_range_end(range: *mut gs_timer_range_t);
5175    pub fn gs_timer_range_get_data(
5176        range: *mut gs_timer_range_t,
5177        disjoint: *mut bool,
5178        frequency: *mut u64,
5179    ) -> bool;
5180    pub fn gs_nv12_available() -> bool;
5181    pub fn gs_p010_available() -> bool;
5182    pub fn gs_texture_create_nv12(
5183        tex_y: *mut *mut gs_texture_t,
5184        tex_uv: *mut *mut gs_texture_t,
5185        width: u32,
5186        height: u32,
5187        flags: u32,
5188    ) -> bool;
5189    pub fn gs_texture_create_p010(
5190        tex_y: *mut *mut gs_texture_t,
5191        tex_uv: *mut *mut gs_texture_t,
5192        width: u32,
5193        height: u32,
5194        flags: u32,
5195    ) -> bool;
5196    pub fn gs_is_monitor_hdr(monitor: *mut ::std::os::raw::c_void) -> bool;
5197    pub fn gs_debug_marker_begin(color: *const f32, markername: *const ::std::os::raw::c_char);
5198    pub fn gs_debug_marker_begin_format(
5199        color: *const f32,
5200        format: *const ::std::os::raw::c_char,
5201        ...
5202    );
5203    pub fn gs_debug_marker_end();
5204    pub fn gs_gdi_texture_available() -> bool;
5205    pub fn gs_shared_texture_available() -> bool;
5206#[doc = " Gets information about the monitor at the specific index, returns false\n when there is no monitor at the specified index"]
5207    pub fn gs_get_duplicator_monitor_info(
5208        monitor_idx: ::std::os::raw::c_int,
5209        monitor_info: *mut gs_monitor_info,
5210    ) -> bool;
5211    pub fn gs_duplicator_get_monitor_index(
5212        monitor: *mut ::std::os::raw::c_void,
5213    ) -> ::std::os::raw::c_int;
5214#[doc = " creates a windows 8+ output duplicator (monitor capture)"]
5215    pub fn gs_duplicator_create(monitor_idx: ::std::os::raw::c_int) -> *mut gs_duplicator_t;
5216    pub fn gs_duplicator_destroy(duplicator: *mut gs_duplicator_t);
5217    pub fn gs_duplicator_update_frame(duplicator: *mut gs_duplicator_t) -> bool;
5218    pub fn gs_duplicator_get_texture(duplicator: *mut gs_duplicator_t) -> *mut gs_texture_t;
5219    pub fn gs_duplicator_get_color_space(duplicator: *mut gs_duplicator_t) -> gs_color_space;
5220    pub fn gs_duplicator_get_sdr_white_level(duplicator: *mut gs_duplicator_t) -> f32;
5221    pub fn gs_can_adapter_fast_clear() -> bool;
5222#[doc = " creates a windows GDI-lockable texture"]
5223    pub fn gs_texture_create_gdi(width: u32, height: u32) -> *mut gs_texture_t;
5224    pub fn gs_texture_get_dc(gdi_tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5225    pub fn gs_texture_release_dc(gdi_tex: *mut gs_texture_t);
5226#[doc = " creates a windows shared texture from a texture handle"]
5227    pub fn gs_texture_open_shared(handle: u32) -> *mut gs_texture_t;
5228    pub fn gs_texture_open_nt_shared(handle: u32) -> *mut gs_texture_t;
5229    pub fn gs_texture_get_shared_handle(tex: *mut gs_texture_t) -> u32;
5230    pub fn gs_texture_wrap_obj(obj: *mut ::std::os::raw::c_void) -> *mut gs_texture_t;
5231#[doc = " acquires a lock on a keyed mutex texture.\n returns -1 on generic failure, ETIMEDOUT if timed out"]
5232    pub fn gs_texture_acquire_sync(
5233        tex: *mut gs_texture_t,
5234        key: u64,
5235        ms: u32,
5236    ) -> ::std::os::raw::c_int;
5237#[doc = " releases a lock on a keyed mutex texture to another device.\n return 0 on success, -1 on error"]
5238    pub fn gs_texture_release_sync(tex: *mut gs_texture_t, key: u64) -> ::std::os::raw::c_int;
5239    pub fn gs_stagesurface_create_nv12(width: u32, height: u32) -> *mut gs_stagesurf_t;
5240    pub fn gs_stagesurface_create_p010(width: u32, height: u32) -> *mut gs_stagesurf_t;
5241    pub fn gs_register_loss_callbacks(callbacks: *const gs_device_loss);
5242    pub fn gs_unregister_loss_callbacks(data: *mut ::std::os::raw::c_void);
5243    pub fn vec2_abs(dst: *mut vec2, v: *const vec2);
5244    pub fn vec2_floor(dst: *mut vec2, v: *const vec2);
5245    pub fn vec2_ceil(dst: *mut vec2, v: *const vec2);
5246    pub fn vec2_close(v1: *const vec2, v2: *const vec2, epsilon: f32) -> ::std::os::raw::c_int;
5247    pub fn vec2_norm(dst: *mut vec2, v: *const vec2);
5248    pub fn vec4_from_vec3(dst: *mut vec4, v: *const vec3);
5249    pub fn vec4_transform(dst: *mut vec4, v: *const vec4, m: *const matrix4);
5250    pub fn vec3_from_vec4(dst: *mut vec3, v: *const vec4);
5251    pub fn vec3_plane_dist(v: *const vec3, p: *const plane) -> f32;
5252    pub fn vec3_transform(dst: *mut vec3, v: *const vec3, m: *const matrix4);
5253    pub fn vec3_rotate(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5254    pub fn vec3_transform3x4(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5255    pub fn vec3_mirror(dst: *mut vec3, v: *const vec3, p: *const plane);
5256    pub fn vec3_mirrorv(dst: *mut vec3, v: *const vec3, vec: *const vec3);
5257    pub fn vec3_rand(dst: *mut vec3, positive_only: ::std::os::raw::c_int);
5258    pub fn audio_output_open(
5259        audio: *mut *mut audio_t,
5260        info: *mut audio_output_info,
5261    ) -> ::std::os::raw::c_int;
5262    pub fn audio_output_close(audio: *mut audio_t);
5263    pub fn audio_output_connect(
5264        video: *mut audio_t,
5265        mix_idx: usize,
5266        conversion: *const audio_convert_info,
5267        callback: audio_output_callback_t,
5268        param: *mut ::std::os::raw::c_void,
5269    ) -> bool;
5270    pub fn audio_output_disconnect(
5271        video: *mut audio_t,
5272        mix_idx: usize,
5273        callback: audio_output_callback_t,
5274        param: *mut ::std::os::raw::c_void,
5275    );
5276    pub fn audio_output_active(audio: *const audio_t) -> bool;
5277    pub fn audio_output_get_block_size(audio: *const audio_t) -> usize;
5278    pub fn audio_output_get_planes(audio: *const audio_t) -> usize;
5279    pub fn audio_output_get_channels(audio: *const audio_t) -> usize;
5280    pub fn audio_output_get_sample_rate(audio: *const audio_t) -> u32;
5281    pub fn audio_output_get_info(audio: *const audio_t) -> *const audio_output_info;
5282    pub fn video_format_from_fourcc(fourcc: u32) -> video_format;
5283    pub fn video_format_get_parameters(
5284        color_space: video_colorspace,
5285        range: video_range_type,
5286        matrix: *mut f32,
5287        min_range: *mut f32,
5288        max_range: *mut f32,
5289    ) -> bool;
5290    pub fn video_format_get_parameters_for_format(
5291        color_space: video_colorspace,
5292        range: video_range_type,
5293        format: video_format,
5294        matrix: *mut f32,
5295        min_range: *mut f32,
5296        max_range: *mut f32,
5297    ) -> bool;
5298    pub fn video_output_open(
5299        video: *mut *mut video_t,
5300        info: *mut video_output_info,
5301    ) -> ::std::os::raw::c_int;
5302    pub fn video_output_close(video: *mut video_t);
5303    pub fn video_output_connect(
5304        video: *mut video_t,
5305        conversion: *const video_scale_info,
5306        callback: ::std::option::Option<
5307            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5308        >,
5309        param: *mut ::std::os::raw::c_void,
5310    ) -> bool;
5311    pub fn video_output_connect2(
5312        video: *mut video_t,
5313        conversion: *const video_scale_info,
5314        frame_rate_divisor: u32,
5315        callback: ::std::option::Option<
5316            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5317        >,
5318        param: *mut ::std::os::raw::c_void,
5319    ) -> bool;
5320    pub fn video_output_disconnect(
5321        video: *mut video_t,
5322        callback: ::std::option::Option<
5323            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5324        >,
5325        param: *mut ::std::os::raw::c_void,
5326    );
5327    pub fn video_output_disconnect2(
5328        video: *mut video_t,
5329        callback: ::std::option::Option<
5330            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5331        >,
5332        param: *mut ::std::os::raw::c_void,
5333    ) -> bool;
5334    pub fn video_output_active(video: *const video_t) -> bool;
5335    pub fn video_output_get_info(video: *const video_t) -> *const video_output_info;
5336    pub fn video_output_lock_frame(
5337        video: *mut video_t,
5338        frame: *mut video_frame,
5339        count: ::std::os::raw::c_int,
5340        timestamp: u64,
5341    ) -> bool;
5342    pub fn video_output_unlock_frame(video: *mut video_t);
5343    pub fn video_output_get_frame_time(video: *const video_t) -> u64;
5344    pub fn video_output_stop(video: *mut video_t);
5345    pub fn video_output_stopped(video: *mut video_t) -> bool;
5346    pub fn video_output_get_format(video: *const video_t) -> video_format;
5347    pub fn video_output_get_width(video: *const video_t) -> u32;
5348    pub fn video_output_get_height(video: *const video_t) -> u32;
5349    pub fn video_output_get_frame_rate(video: *const video_t) -> f64;
5350    pub fn video_output_get_skipped_frames(video: *const video_t) -> u32;
5351    pub fn video_output_get_total_frames(video: *const video_t) -> u32;
5352    pub fn video_output_inc_texture_encoders(video: *mut video_t);
5353    pub fn video_output_dec_texture_encoders(video: *mut video_t);
5354    pub fn video_output_inc_texture_frames(video: *mut video_t);
5355    pub fn video_output_inc_texture_skipped_frames(video: *mut video_t);
5356    pub fn video_output_create_with_frame_rate_divisor(
5357        video: *mut video_t,
5358        divisor: u32,
5359    ) -> *mut video_t;
5360    pub fn video_output_free_frame_rate_divisor(video: *mut video_t);
5361    pub fn calldata_get_data(
5362        data: *const calldata_t,
5363        name: *const ::std::os::raw::c_char,
5364        out: *mut ::std::os::raw::c_void,
5365        size: usize,
5366    ) -> bool;
5367    pub fn calldata_set_data(
5368        data: *mut calldata_t,
5369        name: *const ::std::os::raw::c_char,
5370        in_: *const ::std::os::raw::c_void,
5371        new_size: usize,
5372    );
5373    pub fn calldata_get_string(
5374        data: *const calldata_t,
5375        name: *const ::std::os::raw::c_char,
5376        str_: *mut *const ::std::os::raw::c_char,
5377    ) -> bool;
5378    pub fn signal_handler_create() -> *mut signal_handler_t;
5379    pub fn signal_handler_destroy(handler: *mut signal_handler_t);
5380    pub fn signal_handler_add(
5381        handler: *mut signal_handler_t,
5382        signal_decl: *const ::std::os::raw::c_char,
5383    ) -> bool;
5384    pub fn signal_handler_connect(
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_connect_ref(
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_disconnect(
5397        handler: *mut signal_handler_t,
5398        signal: *const ::std::os::raw::c_char,
5399        callback: signal_callback_t,
5400        data: *mut ::std::os::raw::c_void,
5401    );
5402    pub fn signal_handler_connect_global(
5403        handler: *mut signal_handler_t,
5404        callback: global_signal_callback_t,
5405        data: *mut ::std::os::raw::c_void,
5406    );
5407    pub fn signal_handler_disconnect_global(
5408        handler: *mut signal_handler_t,
5409        callback: global_signal_callback_t,
5410        data: *mut ::std::os::raw::c_void,
5411    );
5412    pub fn signal_handler_remove_current();
5413    pub fn signal_handler_signal(
5414        handler: *mut signal_handler_t,
5415        signal: *const ::std::os::raw::c_char,
5416        params: *mut calldata_t,
5417    );
5418    pub fn proc_handler_create() -> *mut proc_handler_t;
5419    pub fn proc_handler_destroy(handler: *mut proc_handler_t);
5420    pub fn proc_handler_add(
5421        handler: *mut proc_handler_t,
5422        decl_string: *const ::std::os::raw::c_char,
5423        proc_: proc_handler_proc_t,
5424        data: *mut ::std::os::raw::c_void,
5425    );
5426#[doc = " Calls a function in a procedure handler.  Returns false if the named\n procedure is not found."]
5427    pub fn proc_handler_call(
5428        handler: *mut proc_handler_t,
5429        name: *const ::std::os::raw::c_char,
5430        params: *mut calldata_t,
5431    ) -> bool;
5432    pub fn obs_data_create() -> *mut obs_data_t;
5433    pub fn obs_data_create_from_json(json_string: *const ::std::os::raw::c_char)
5434    -> *mut obs_data_t;
5435    pub fn obs_data_create_from_json_file(
5436        json_file: *const ::std::os::raw::c_char,
5437    ) -> *mut obs_data_t;
5438    pub fn obs_data_create_from_json_file_safe(
5439        json_file: *const ::std::os::raw::c_char,
5440        backup_ext: *const ::std::os::raw::c_char,
5441    ) -> *mut obs_data_t;
5442    pub fn obs_data_addref(data: *mut obs_data_t);
5443    pub fn obs_data_release(data: *mut obs_data_t);
5444    pub fn obs_data_get_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5445    pub fn obs_data_get_json_with_defaults(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5446    pub fn obs_data_get_json_pretty(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5447    pub fn obs_data_get_json_pretty_with_defaults(
5448        data: *mut obs_data_t,
5449    ) -> *const ::std::os::raw::c_char;
5450    pub fn obs_data_get_last_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5451    pub fn obs_data_save_json(data: *mut obs_data_t, file: *const ::std::os::raw::c_char) -> bool;
5452    pub fn obs_data_save_json_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_save_json_pretty_safe(
5459        data: *mut obs_data_t,
5460        file: *const ::std::os::raw::c_char,
5461        temp_ext: *const ::std::os::raw::c_char,
5462        backup_ext: *const ::std::os::raw::c_char,
5463    ) -> bool;
5464    pub fn obs_data_apply(target: *mut obs_data_t, apply_data: *mut obs_data_t);
5465    pub fn obs_data_erase(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5466    pub fn obs_data_clear(data: *mut obs_data_t);
5467    pub fn obs_data_set_string(
5468        data: *mut obs_data_t,
5469        name: *const ::std::os::raw::c_char,
5470        val: *const ::std::os::raw::c_char,
5471    );
5472    pub fn obs_data_set_int(
5473        data: *mut obs_data_t,
5474        name: *const ::std::os::raw::c_char,
5475        val: ::std::os::raw::c_longlong,
5476    );
5477    pub fn obs_data_set_double(
5478        data: *mut obs_data_t,
5479        name: *const ::std::os::raw::c_char,
5480        val: f64,
5481    );
5482    pub fn obs_data_set_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char, val: bool);
5483    pub fn obs_data_set_obj(
5484        data: *mut obs_data_t,
5485        name: *const ::std::os::raw::c_char,
5486        obj: *mut obs_data_t,
5487    );
5488    pub fn obs_data_set_array(
5489        data: *mut obs_data_t,
5490        name: *const ::std::os::raw::c_char,
5491        array: *mut obs_data_array_t,
5492    );
5493    pub fn obs_data_get_defaults(data: *mut obs_data_t) -> *mut obs_data_t;
5494    pub fn obs_data_set_default_string(
5495        data: *mut obs_data_t,
5496        name: *const ::std::os::raw::c_char,
5497        val: *const ::std::os::raw::c_char,
5498    );
5499    pub fn obs_data_set_default_int(
5500        data: *mut obs_data_t,
5501        name: *const ::std::os::raw::c_char,
5502        val: ::std::os::raw::c_longlong,
5503    );
5504    pub fn obs_data_set_default_double(
5505        data: *mut obs_data_t,
5506        name: *const ::std::os::raw::c_char,
5507        val: f64,
5508    );
5509    pub fn obs_data_set_default_bool(
5510        data: *mut obs_data_t,
5511        name: *const ::std::os::raw::c_char,
5512        val: bool,
5513    );
5514    pub fn obs_data_set_default_obj(
5515        data: *mut obs_data_t,
5516        name: *const ::std::os::raw::c_char,
5517        obj: *mut obs_data_t,
5518    );
5519    pub fn obs_data_set_default_array(
5520        data: *mut obs_data_t,
5521        name: *const ::std::os::raw::c_char,
5522        arr: *mut obs_data_array_t,
5523    );
5524    pub fn obs_data_set_autoselect_string(
5525        data: *mut obs_data_t,
5526        name: *const ::std::os::raw::c_char,
5527        val: *const ::std::os::raw::c_char,
5528    );
5529    pub fn obs_data_set_autoselect_int(
5530        data: *mut obs_data_t,
5531        name: *const ::std::os::raw::c_char,
5532        val: ::std::os::raw::c_longlong,
5533    );
5534    pub fn obs_data_set_autoselect_double(
5535        data: *mut obs_data_t,
5536        name: *const ::std::os::raw::c_char,
5537        val: f64,
5538    );
5539    pub fn obs_data_set_autoselect_bool(
5540        data: *mut obs_data_t,
5541        name: *const ::std::os::raw::c_char,
5542        val: bool,
5543    );
5544    pub fn obs_data_set_autoselect_obj(
5545        data: *mut obs_data_t,
5546        name: *const ::std::os::raw::c_char,
5547        obj: *mut obs_data_t,
5548    );
5549    pub fn obs_data_set_autoselect_array(
5550        data: *mut obs_data_t,
5551        name: *const ::std::os::raw::c_char,
5552        arr: *mut obs_data_array_t,
5553    );
5554    pub fn obs_data_get_string(
5555        data: *mut obs_data_t,
5556        name: *const ::std::os::raw::c_char,
5557    ) -> *const ::std::os::raw::c_char;
5558    pub fn obs_data_get_int(
5559        data: *mut obs_data_t,
5560        name: *const ::std::os::raw::c_char,
5561    ) -> ::std::os::raw::c_longlong;
5562    pub fn obs_data_get_double(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> f64;
5563    pub fn obs_data_get_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> bool;
5564    pub fn obs_data_get_obj(
5565        data: *mut obs_data_t,
5566        name: *const ::std::os::raw::c_char,
5567    ) -> *mut obs_data_t;
5568    pub fn obs_data_get_array(
5569        data: *mut obs_data_t,
5570        name: *const ::std::os::raw::c_char,
5571    ) -> *mut obs_data_array_t;
5572    pub fn obs_data_get_default_string(
5573        data: *mut obs_data_t,
5574        name: *const ::std::os::raw::c_char,
5575    ) -> *const ::std::os::raw::c_char;
5576    pub fn obs_data_get_default_int(
5577        data: *mut obs_data_t,
5578        name: *const ::std::os::raw::c_char,
5579    ) -> ::std::os::raw::c_longlong;
5580    pub fn obs_data_get_default_double(
5581        data: *mut obs_data_t,
5582        name: *const ::std::os::raw::c_char,
5583    ) -> f64;
5584    pub fn obs_data_get_default_bool(
5585        data: *mut obs_data_t,
5586        name: *const ::std::os::raw::c_char,
5587    ) -> bool;
5588    pub fn obs_data_get_default_obj(
5589        data: *mut obs_data_t,
5590        name: *const ::std::os::raw::c_char,
5591    ) -> *mut obs_data_t;
5592    pub fn obs_data_get_default_array(
5593        data: *mut obs_data_t,
5594        name: *const ::std::os::raw::c_char,
5595    ) -> *mut obs_data_array_t;
5596    pub fn obs_data_get_autoselect_string(
5597        data: *mut obs_data_t,
5598        name: *const ::std::os::raw::c_char,
5599    ) -> *const ::std::os::raw::c_char;
5600    pub fn obs_data_get_autoselect_int(
5601        data: *mut obs_data_t,
5602        name: *const ::std::os::raw::c_char,
5603    ) -> ::std::os::raw::c_longlong;
5604    pub fn obs_data_get_autoselect_double(
5605        data: *mut obs_data_t,
5606        name: *const ::std::os::raw::c_char,
5607    ) -> f64;
5608    pub fn obs_data_get_autoselect_bool(
5609        data: *mut obs_data_t,
5610        name: *const ::std::os::raw::c_char,
5611    ) -> bool;
5612    pub fn obs_data_get_autoselect_obj(
5613        data: *mut obs_data_t,
5614        name: *const ::std::os::raw::c_char,
5615    ) -> *mut obs_data_t;
5616    pub fn obs_data_get_autoselect_array(
5617        data: *mut obs_data_t,
5618        name: *const ::std::os::raw::c_char,
5619    ) -> *mut obs_data_array_t;
5620    pub fn obs_data_array_create() -> *mut obs_data_array_t;
5621    pub fn obs_data_array_addref(array: *mut obs_data_array_t);
5622    pub fn obs_data_array_release(array: *mut obs_data_array_t);
5623    pub fn obs_data_array_count(array: *mut obs_data_array_t) -> usize;
5624    pub fn obs_data_array_item(array: *mut obs_data_array_t, idx: usize) -> *mut obs_data_t;
5625    pub fn obs_data_array_push_back(array: *mut obs_data_array_t, obj: *mut obs_data_t) -> usize;
5626    pub fn obs_data_array_insert(array: *mut obs_data_array_t, idx: usize, obj: *mut obs_data_t);
5627    pub fn obs_data_array_push_back_array(
5628        array: *mut obs_data_array_t,
5629        array2: *mut obs_data_array_t,
5630    );
5631    pub fn obs_data_array_erase(array: *mut obs_data_array_t, idx: usize);
5632    pub fn obs_data_array_enum(
5633        array: *mut obs_data_array_t,
5634        cb: ::std::option::Option<
5635            unsafe extern "C" fn(data: *mut obs_data_t, param: *mut ::std::os::raw::c_void),
5636        >,
5637        param: *mut ::std::os::raw::c_void,
5638    );
5639    pub fn obs_data_has_user_value(
5640        data: *mut obs_data_t,
5641        name: *const ::std::os::raw::c_char,
5642    ) -> bool;
5643    pub fn obs_data_has_default_value(
5644        data: *mut obs_data_t,
5645        name: *const ::std::os::raw::c_char,
5646    ) -> bool;
5647    pub fn obs_data_has_autoselect_value(
5648        data: *mut obs_data_t,
5649        name: *const ::std::os::raw::c_char,
5650    ) -> bool;
5651    pub fn obs_data_item_has_user_value(data: *mut obs_data_item_t) -> bool;
5652    pub fn obs_data_item_has_default_value(data: *mut obs_data_item_t) -> bool;
5653    pub fn obs_data_item_has_autoselect_value(data: *mut obs_data_item_t) -> bool;
5654    pub fn obs_data_unset_user_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5655    pub fn obs_data_unset_default_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5656    pub fn obs_data_unset_autoselect_value(
5657        data: *mut obs_data_t,
5658        name: *const ::std::os::raw::c_char,
5659    );
5660    pub fn obs_data_item_unset_user_value(data: *mut obs_data_item_t);
5661    pub fn obs_data_item_unset_default_value(data: *mut obs_data_item_t);
5662    pub fn obs_data_item_unset_autoselect_value(data: *mut obs_data_item_t);
5663    pub fn obs_data_first(data: *mut obs_data_t) -> *mut obs_data_item_t;
5664    pub fn obs_data_item_byname(
5665        data: *mut obs_data_t,
5666        name: *const ::std::os::raw::c_char,
5667    ) -> *mut obs_data_item_t;
5668    pub fn obs_data_item_next(item: *mut *mut obs_data_item_t) -> bool;
5669    pub fn obs_data_item_release(item: *mut *mut obs_data_item_t);
5670    pub fn obs_data_item_remove(item: *mut *mut obs_data_item_t);
5671    pub fn obs_data_item_gettype(item: *mut obs_data_item_t) -> obs_data_type;
5672    pub fn obs_data_item_numtype(item: *mut obs_data_item_t) -> obs_data_number_type;
5673    pub fn obs_data_item_get_name(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5674    pub fn obs_data_item_set_string(
5675        item: *mut *mut obs_data_item_t,
5676        val: *const ::std::os::raw::c_char,
5677    );
5678    pub fn obs_data_item_set_int(item: *mut *mut obs_data_item_t, val: ::std::os::raw::c_longlong);
5679    pub fn obs_data_item_set_double(item: *mut *mut obs_data_item_t, val: f64);
5680    pub fn obs_data_item_set_bool(item: *mut *mut obs_data_item_t, val: bool);
5681    pub fn obs_data_item_set_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5682    pub fn obs_data_item_set_array(item: *mut *mut obs_data_item_t, val: *mut obs_data_array_t);
5683    pub fn obs_data_item_set_default_string(
5684        item: *mut *mut obs_data_item_t,
5685        val: *const ::std::os::raw::c_char,
5686    );
5687    pub fn obs_data_item_set_default_int(
5688        item: *mut *mut obs_data_item_t,
5689        val: ::std::os::raw::c_longlong,
5690    );
5691    pub fn obs_data_item_set_default_double(item: *mut *mut obs_data_item_t, val: f64);
5692    pub fn obs_data_item_set_default_bool(item: *mut *mut obs_data_item_t, val: bool);
5693    pub fn obs_data_item_set_default_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5694    pub fn obs_data_item_set_default_array(
5695        item: *mut *mut obs_data_item_t,
5696        val: *mut obs_data_array_t,
5697    );
5698    pub fn obs_data_item_set_autoselect_string(
5699        item: *mut *mut obs_data_item_t,
5700        val: *const ::std::os::raw::c_char,
5701    );
5702    pub fn obs_data_item_set_autoselect_int(
5703        item: *mut *mut obs_data_item_t,
5704        val: ::std::os::raw::c_longlong,
5705    );
5706    pub fn obs_data_item_set_autoselect_double(item: *mut *mut obs_data_item_t, val: f64);
5707    pub fn obs_data_item_set_autoselect_bool(item: *mut *mut obs_data_item_t, val: bool);
5708    pub fn obs_data_item_set_autoselect_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5709    pub fn obs_data_item_set_autoselect_array(
5710        item: *mut *mut obs_data_item_t,
5711        val: *mut obs_data_array_t,
5712    );
5713    pub fn obs_data_item_get_string(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5714    pub fn obs_data_item_get_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5715    pub fn obs_data_item_get_double(item: *mut obs_data_item_t) -> f64;
5716    pub fn obs_data_item_get_bool(item: *mut obs_data_item_t) -> bool;
5717    pub fn obs_data_item_get_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5718    pub fn obs_data_item_get_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5719    pub fn obs_data_item_get_default_string(
5720        item: *mut obs_data_item_t,
5721    ) -> *const ::std::os::raw::c_char;
5722    pub fn obs_data_item_get_default_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5723    pub fn obs_data_item_get_default_double(item: *mut obs_data_item_t) -> f64;
5724    pub fn obs_data_item_get_default_bool(item: *mut obs_data_item_t) -> bool;
5725    pub fn obs_data_item_get_default_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5726    pub fn obs_data_item_get_default_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5727    pub fn obs_data_item_get_autoselect_string(
5728        item: *mut obs_data_item_t,
5729    ) -> *const ::std::os::raw::c_char;
5730    pub fn obs_data_item_get_autoselect_int(
5731        item: *mut obs_data_item_t,
5732    ) -> ::std::os::raw::c_longlong;
5733    pub fn obs_data_item_get_autoselect_double(item: *mut obs_data_item_t) -> f64;
5734    pub fn obs_data_item_get_autoselect_bool(item: *mut obs_data_item_t) -> bool;
5735    pub fn obs_data_item_get_autoselect_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5736    pub fn obs_data_item_get_autoselect_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5737    pub fn obs_data_set_vec2(
5738        data: *mut obs_data_t,
5739        name: *const ::std::os::raw::c_char,
5740        val: *const vec2,
5741    );
5742    pub fn obs_data_set_vec3(
5743        data: *mut obs_data_t,
5744        name: *const ::std::os::raw::c_char,
5745        val: *const vec3,
5746    );
5747    pub fn obs_data_set_vec4(
5748        data: *mut obs_data_t,
5749        name: *const ::std::os::raw::c_char,
5750        val: *const vec4,
5751    );
5752    pub fn obs_data_set_quat(
5753        data: *mut obs_data_t,
5754        name: *const ::std::os::raw::c_char,
5755        val: *const quat,
5756    );
5757    pub fn obs_data_set_default_vec2(
5758        data: *mut obs_data_t,
5759        name: *const ::std::os::raw::c_char,
5760        val: *const vec2,
5761    );
5762    pub fn obs_data_set_default_vec3(
5763        data: *mut obs_data_t,
5764        name: *const ::std::os::raw::c_char,
5765        val: *const vec3,
5766    );
5767    pub fn obs_data_set_default_vec4(
5768        data: *mut obs_data_t,
5769        name: *const ::std::os::raw::c_char,
5770        val: *const vec4,
5771    );
5772    pub fn obs_data_set_default_quat(
5773        data: *mut obs_data_t,
5774        name: *const ::std::os::raw::c_char,
5775        val: *const quat,
5776    );
5777    pub fn obs_data_set_autoselect_vec2(
5778        data: *mut obs_data_t,
5779        name: *const ::std::os::raw::c_char,
5780        val: *const vec2,
5781    );
5782    pub fn obs_data_set_autoselect_vec3(
5783        data: *mut obs_data_t,
5784        name: *const ::std::os::raw::c_char,
5785        val: *const vec3,
5786    );
5787    pub fn obs_data_set_autoselect_vec4(
5788        data: *mut obs_data_t,
5789        name: *const ::std::os::raw::c_char,
5790        val: *const vec4,
5791    );
5792    pub fn obs_data_set_autoselect_quat(
5793        data: *mut obs_data_t,
5794        name: *const ::std::os::raw::c_char,
5795        val: *const quat,
5796    );
5797    pub fn obs_data_get_vec2(
5798        data: *mut obs_data_t,
5799        name: *const ::std::os::raw::c_char,
5800        val: *mut vec2,
5801    );
5802    pub fn obs_data_get_vec3(
5803        data: *mut obs_data_t,
5804        name: *const ::std::os::raw::c_char,
5805        val: *mut vec3,
5806    );
5807    pub fn obs_data_get_vec4(
5808        data: *mut obs_data_t,
5809        name: *const ::std::os::raw::c_char,
5810        val: *mut vec4,
5811    );
5812    pub fn obs_data_get_quat(
5813        data: *mut obs_data_t,
5814        name: *const ::std::os::raw::c_char,
5815        val: *mut quat,
5816    );
5817    pub fn obs_data_get_default_vec2(
5818        data: *mut obs_data_t,
5819        name: *const ::std::os::raw::c_char,
5820        val: *mut vec2,
5821    );
5822    pub fn obs_data_get_default_vec3(
5823        data: *mut obs_data_t,
5824        name: *const ::std::os::raw::c_char,
5825        val: *mut vec3,
5826    );
5827    pub fn obs_data_get_default_vec4(
5828        data: *mut obs_data_t,
5829        name: *const ::std::os::raw::c_char,
5830        val: *mut vec4,
5831    );
5832    pub fn obs_data_get_default_quat(
5833        data: *mut obs_data_t,
5834        name: *const ::std::os::raw::c_char,
5835        val: *mut quat,
5836    );
5837    pub fn obs_data_get_autoselect_vec2(
5838        data: *mut obs_data_t,
5839        name: *const ::std::os::raw::c_char,
5840        val: *mut vec2,
5841    );
5842    pub fn obs_data_get_autoselect_vec3(
5843        data: *mut obs_data_t,
5844        name: *const ::std::os::raw::c_char,
5845        val: *mut vec3,
5846    );
5847    pub fn obs_data_get_autoselect_vec4(
5848        data: *mut obs_data_t,
5849        name: *const ::std::os::raw::c_char,
5850        val: *mut vec4,
5851    );
5852    pub fn obs_data_get_autoselect_quat(
5853        data: *mut obs_data_t,
5854        name: *const ::std::os::raw::c_char,
5855        val: *mut quat,
5856    );
5857    pub fn obs_data_set_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_default_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_set_autoselect_frames_per_second(
5870        data: *mut obs_data_t,
5871        name: *const ::std::os::raw::c_char,
5872        fps: media_frames_per_second,
5873        option: *const ::std::os::raw::c_char,
5874    );
5875    pub fn obs_data_get_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_default_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_get_autoselect_frames_per_second(
5888        data: *mut obs_data_t,
5889        name: *const ::std::os::raw::c_char,
5890        fps: *mut media_frames_per_second,
5891        option: *mut *const ::std::os::raw::c_char,
5892    ) -> bool;
5893    pub fn obs_data_item_set_frames_per_second(
5894        item: *mut *mut obs_data_item_t,
5895        fps: media_frames_per_second,
5896        option: *const ::std::os::raw::c_char,
5897    );
5898    pub fn obs_data_item_set_default_frames_per_second(
5899        item: *mut *mut obs_data_item_t,
5900        fps: media_frames_per_second,
5901        option: *const ::std::os::raw::c_char,
5902    );
5903    pub fn obs_data_item_set_autoselect_frames_per_second(
5904        item: *mut *mut obs_data_item_t,
5905        fps: media_frames_per_second,
5906        option: *const ::std::os::raw::c_char,
5907    );
5908    pub fn obs_data_item_get_frames_per_second(
5909        item: *mut obs_data_item_t,
5910        fps: *mut media_frames_per_second,
5911        option: *mut *const ::std::os::raw::c_char,
5912    ) -> bool;
5913    pub fn obs_data_item_get_default_frames_per_second(
5914        item: *mut obs_data_item_t,
5915        fps: *mut media_frames_per_second,
5916        option: *mut *const ::std::os::raw::c_char,
5917    ) -> bool;
5918    pub fn obs_data_item_get_autoselect_frames_per_second(
5919        item: *mut obs_data_item_t,
5920        fps: *mut media_frames_per_second,
5921        option: *mut *const ::std::os::raw::c_char,
5922    ) -> bool;
5923    pub fn obs_properties_create() -> *mut obs_properties_t;
5924    pub fn obs_properties_create_param(
5925        param: *mut ::std::os::raw::c_void,
5926        destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5927    ) -> *mut obs_properties_t;
5928    pub fn obs_properties_destroy(props: *mut obs_properties_t);
5929    pub fn obs_properties_set_flags(props: *mut obs_properties_t, flags: u32);
5930    pub fn obs_properties_get_flags(props: *mut obs_properties_t) -> u32;
5931    pub fn obs_properties_set_param(
5932        props: *mut obs_properties_t,
5933        param: *mut ::std::os::raw::c_void,
5934        destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5935    );
5936    pub fn obs_properties_get_param(props: *mut obs_properties_t) -> *mut ::std::os::raw::c_void;
5937    pub fn obs_properties_first(props: *mut obs_properties_t) -> *mut obs_property_t;
5938    pub fn obs_properties_get(
5939        props: *mut obs_properties_t,
5940        property: *const ::std::os::raw::c_char,
5941    ) -> *mut obs_property_t;
5942    pub fn obs_properties_get_parent(props: *mut obs_properties_t) -> *mut obs_properties_t;
5943#[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."]
5944    pub fn obs_properties_remove_by_name(
5945        props: *mut obs_properties_t,
5946        property: *const ::std::os::raw::c_char,
5947    );
5948#[doc = " Applies settings to the properties by calling all the necessary\n modification callbacks"]
5949    pub fn obs_properties_apply_settings(props: *mut obs_properties_t, settings: *mut obs_data_t);
5950    pub fn obs_properties_add_bool(
5951        props: *mut obs_properties_t,
5952        name: *const ::std::os::raw::c_char,
5953        description: *const ::std::os::raw::c_char,
5954    ) -> *mut obs_property_t;
5955    pub fn obs_properties_add_int(
5956        props: *mut obs_properties_t,
5957        name: *const ::std::os::raw::c_char,
5958        description: *const ::std::os::raw::c_char,
5959        min: ::std::os::raw::c_int,
5960        max: ::std::os::raw::c_int,
5961        step: ::std::os::raw::c_int,
5962    ) -> *mut obs_property_t;
5963    pub fn obs_properties_add_float(
5964        props: *mut obs_properties_t,
5965        name: *const ::std::os::raw::c_char,
5966        description: *const ::std::os::raw::c_char,
5967        min: f64,
5968        max: f64,
5969        step: f64,
5970    ) -> *mut obs_property_t;
5971    pub fn obs_properties_add_int_slider(
5972        props: *mut obs_properties_t,
5973        name: *const ::std::os::raw::c_char,
5974        description: *const ::std::os::raw::c_char,
5975        min: ::std::os::raw::c_int,
5976        max: ::std::os::raw::c_int,
5977        step: ::std::os::raw::c_int,
5978    ) -> *mut obs_property_t;
5979    pub fn obs_properties_add_float_slider(
5980        props: *mut obs_properties_t,
5981        name: *const ::std::os::raw::c_char,
5982        description: *const ::std::os::raw::c_char,
5983        min: f64,
5984        max: f64,
5985        step: f64,
5986    ) -> *mut obs_property_t;
5987    pub fn obs_properties_add_text(
5988        props: *mut obs_properties_t,
5989        name: *const ::std::os::raw::c_char,
5990        description: *const ::std::os::raw::c_char,
5991        type_: obs_text_type,
5992    ) -> *mut obs_property_t;
5993#[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."]
5994    pub fn obs_properties_add_path(
5995        props: *mut obs_properties_t,
5996        name: *const ::std::os::raw::c_char,
5997        description: *const ::std::os::raw::c_char,
5998        type_: obs_path_type,
5999        filter: *const ::std::os::raw::c_char,
6000        default_path: *const ::std::os::raw::c_char,
6001    ) -> *mut obs_property_t;
6002    pub fn obs_properties_add_list(
6003        props: *mut obs_properties_t,
6004        name: *const ::std::os::raw::c_char,
6005        description: *const ::std::os::raw::c_char,
6006        type_: obs_combo_type,
6007        format: obs_combo_format,
6008    ) -> *mut obs_property_t;
6009    pub fn obs_properties_add_color(
6010        props: *mut obs_properties_t,
6011        name: *const ::std::os::raw::c_char,
6012        description: *const ::std::os::raw::c_char,
6013    ) -> *mut obs_property_t;
6014    pub fn obs_properties_add_color_alpha(
6015        props: *mut obs_properties_t,
6016        name: *const ::std::os::raw::c_char,
6017        description: *const ::std::os::raw::c_char,
6018    ) -> *mut obs_property_t;
6019    pub fn obs_properties_add_button(
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    ) -> *mut obs_property_t;
6025    pub fn obs_properties_add_button2(
6026        props: *mut obs_properties_t,
6027        name: *const ::std::os::raw::c_char,
6028        text: *const ::std::os::raw::c_char,
6029        callback: obs_property_clicked_t,
6030        priv_: *mut ::std::os::raw::c_void,
6031    ) -> *mut obs_property_t;
6032#[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)"]
6033    pub fn obs_properties_add_font(
6034        props: *mut obs_properties_t,
6035        name: *const ::std::os::raw::c_char,
6036        description: *const ::std::os::raw::c_char,
6037    ) -> *mut obs_property_t;
6038    pub fn obs_properties_add_editable_list(
6039        props: *mut obs_properties_t,
6040        name: *const ::std::os::raw::c_char,
6041        description: *const ::std::os::raw::c_char,
6042        type_: obs_editable_list_type,
6043        filter: *const ::std::os::raw::c_char,
6044        default_path: *const ::std::os::raw::c_char,
6045    ) -> *mut obs_property_t;
6046    pub fn obs_properties_add_frame_rate(
6047        props: *mut obs_properties_t,
6048        name: *const ::std::os::raw::c_char,
6049        description: *const ::std::os::raw::c_char,
6050    ) -> *mut obs_property_t;
6051    pub fn obs_properties_add_group(
6052        props: *mut obs_properties_t,
6053        name: *const ::std::os::raw::c_char,
6054        description: *const ::std::os::raw::c_char,
6055        type_: obs_group_type,
6056        group: *mut obs_properties_t,
6057    ) -> *mut obs_property_t;
6058    pub fn obs_property_set_modified_callback(
6059        p: *mut obs_property_t,
6060        modified: obs_property_modified_t,
6061    );
6062    pub fn obs_property_set_modified_callback2(
6063        p: *mut obs_property_t,
6064        modified: obs_property_modified2_t,
6065        priv_: *mut ::std::os::raw::c_void,
6066    );
6067    pub fn obs_property_modified(p: *mut obs_property_t, settings: *mut obs_data_t) -> bool;
6068    pub fn obs_property_button_clicked(
6069        p: *mut obs_property_t,
6070        obj: *mut ::std::os::raw::c_void,
6071    ) -> bool;
6072    pub fn obs_property_set_visible(p: *mut obs_property_t, visible: bool);
6073    pub fn obs_property_set_enabled(p: *mut obs_property_t, enabled: bool);
6074    pub fn obs_property_set_description(
6075        p: *mut obs_property_t,
6076        description: *const ::std::os::raw::c_char,
6077    );
6078    pub fn obs_property_set_long_description(
6079        p: *mut obs_property_t,
6080        long_description: *const ::std::os::raw::c_char,
6081    );
6082    pub fn obs_property_name(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6083    pub fn obs_property_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6084    pub fn obs_property_long_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6085    pub fn obs_property_get_type(p: *mut obs_property_t) -> obs_property_type;
6086    pub fn obs_property_enabled(p: *mut obs_property_t) -> bool;
6087    pub fn obs_property_visible(p: *mut obs_property_t) -> bool;
6088    pub fn obs_property_next(p: *mut *mut obs_property_t) -> bool;
6089    pub fn obs_property_int_min(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6090    pub fn obs_property_int_max(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6091    pub fn obs_property_int_step(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6092    pub fn obs_property_int_type(p: *mut obs_property_t) -> obs_number_type;
6093    pub fn obs_property_int_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6094    pub fn obs_property_float_min(p: *mut obs_property_t) -> f64;
6095    pub fn obs_property_float_max(p: *mut obs_property_t) -> f64;
6096    pub fn obs_property_float_step(p: *mut obs_property_t) -> f64;
6097    pub fn obs_property_float_type(p: *mut obs_property_t) -> obs_number_type;
6098    pub fn obs_property_float_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6099    pub fn obs_property_text_type(p: *mut obs_property_t) -> obs_text_type;
6100    pub fn obs_property_text_monospace(p: *mut obs_property_t) -> bool;
6101    pub fn obs_property_text_info_type(p: *mut obs_property_t) -> obs_text_info_type;
6102    pub fn obs_property_text_info_word_wrap(p: *mut obs_property_t) -> bool;
6103    pub fn obs_property_path_type(p: *mut obs_property_t) -> obs_path_type;
6104    pub fn obs_property_path_filter(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6105    pub fn obs_property_path_default_path(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6106    pub fn obs_property_list_type(p: *mut obs_property_t) -> obs_combo_type;
6107    pub fn obs_property_list_format(p: *mut obs_property_t) -> obs_combo_format;
6108    pub fn obs_property_int_set_limits(
6109        p: *mut obs_property_t,
6110        min: ::std::os::raw::c_int,
6111        max: ::std::os::raw::c_int,
6112        step: ::std::os::raw::c_int,
6113    );
6114    pub fn obs_property_float_set_limits(p: *mut obs_property_t, min: f64, max: f64, step: f64);
6115    pub fn obs_property_int_set_suffix(
6116        p: *mut obs_property_t,
6117        suffix: *const ::std::os::raw::c_char,
6118    );
6119    pub fn obs_property_float_set_suffix(
6120        p: *mut obs_property_t,
6121        suffix: *const ::std::os::raw::c_char,
6122    );
6123    pub fn obs_property_text_set_monospace(p: *mut obs_property_t, monospace: bool);
6124    pub fn obs_property_text_set_info_type(p: *mut obs_property_t, type_: obs_text_info_type);
6125    pub fn obs_property_text_set_info_word_wrap(p: *mut obs_property_t, word_wrap: bool);
6126    pub fn obs_property_button_set_type(p: *mut obs_property_t, type_: obs_button_type);
6127    pub fn obs_property_button_set_url(p: *mut obs_property_t, url: *mut ::std::os::raw::c_char);
6128    pub fn obs_property_list_clear(p: *mut obs_property_t);
6129    pub fn obs_property_list_add_string(
6130        p: *mut obs_property_t,
6131        name: *const ::std::os::raw::c_char,
6132        val: *const ::std::os::raw::c_char,
6133    ) -> usize;
6134    pub fn obs_property_list_add_int(
6135        p: *mut obs_property_t,
6136        name: *const ::std::os::raw::c_char,
6137        val: ::std::os::raw::c_longlong,
6138    ) -> usize;
6139    pub fn obs_property_list_add_float(
6140        p: *mut obs_property_t,
6141        name: *const ::std::os::raw::c_char,
6142        val: f64,
6143    ) -> usize;
6144    pub fn obs_property_list_add_bool(
6145        p: *mut obs_property_t,
6146        name: *const ::std::os::raw::c_char,
6147        val: bool,
6148    ) -> usize;
6149    pub fn obs_property_list_insert_string(
6150        p: *mut obs_property_t,
6151        idx: usize,
6152        name: *const ::std::os::raw::c_char,
6153        val: *const ::std::os::raw::c_char,
6154    );
6155    pub fn obs_property_list_insert_int(
6156        p: *mut obs_property_t,
6157        idx: usize,
6158        name: *const ::std::os::raw::c_char,
6159        val: ::std::os::raw::c_longlong,
6160    );
6161    pub fn obs_property_list_insert_float(
6162        p: *mut obs_property_t,
6163        idx: usize,
6164        name: *const ::std::os::raw::c_char,
6165        val: f64,
6166    );
6167    pub fn obs_property_list_insert_bool(
6168        p: *mut obs_property_t,
6169        idx: usize,
6170        name: *const ::std::os::raw::c_char,
6171        val: bool,
6172    );
6173    pub fn obs_property_list_item_disable(p: *mut obs_property_t, idx: usize, disabled: bool);
6174    pub fn obs_property_list_item_disabled(p: *mut obs_property_t, idx: usize) -> bool;
6175    pub fn obs_property_list_item_remove(p: *mut obs_property_t, idx: usize);
6176    pub fn obs_property_list_item_count(p: *mut obs_property_t) -> usize;
6177    pub fn obs_property_list_item_name(
6178        p: *mut obs_property_t,
6179        idx: usize,
6180    ) -> *const ::std::os::raw::c_char;
6181    pub fn obs_property_list_item_string(
6182        p: *mut obs_property_t,
6183        idx: usize,
6184    ) -> *const ::std::os::raw::c_char;
6185    pub fn obs_property_list_item_int(
6186        p: *mut obs_property_t,
6187        idx: usize,
6188    ) -> ::std::os::raw::c_longlong;
6189    pub fn obs_property_list_item_float(p: *mut obs_property_t, idx: usize) -> f64;
6190    pub fn obs_property_list_item_bool(p: *mut obs_property_t, idx: usize) -> bool;
6191    pub fn obs_property_editable_list_type(p: *mut obs_property_t) -> obs_editable_list_type;
6192    pub fn obs_property_editable_list_filter(
6193        p: *mut obs_property_t,
6194    ) -> *const ::std::os::raw::c_char;
6195    pub fn obs_property_editable_list_default_path(
6196        p: *mut obs_property_t,
6197    ) -> *const ::std::os::raw::c_char;
6198    pub fn obs_property_frame_rate_clear(p: *mut obs_property_t);
6199    pub fn obs_property_frame_rate_options_clear(p: *mut obs_property_t);
6200    pub fn obs_property_frame_rate_fps_ranges_clear(p: *mut obs_property_t);
6201    pub fn obs_property_frame_rate_option_add(
6202        p: *mut obs_property_t,
6203        name: *const ::std::os::raw::c_char,
6204        description: *const ::std::os::raw::c_char,
6205    ) -> usize;
6206    pub fn obs_property_frame_rate_fps_range_add(
6207        p: *mut obs_property_t,
6208        min: media_frames_per_second,
6209        max: media_frames_per_second,
6210    ) -> usize;
6211    pub fn obs_property_frame_rate_option_insert(
6212        p: *mut obs_property_t,
6213        idx: usize,
6214        name: *const ::std::os::raw::c_char,
6215        description: *const ::std::os::raw::c_char,
6216    );
6217    pub fn obs_property_frame_rate_fps_range_insert(
6218        p: *mut obs_property_t,
6219        idx: usize,
6220        min: media_frames_per_second,
6221        max: media_frames_per_second,
6222    );
6223    pub fn obs_property_frame_rate_options_count(p: *mut obs_property_t) -> usize;
6224    pub fn obs_property_frame_rate_option_name(
6225        p: *mut obs_property_t,
6226        idx: usize,
6227    ) -> *const ::std::os::raw::c_char;
6228    pub fn obs_property_frame_rate_option_description(
6229        p: *mut obs_property_t,
6230        idx: usize,
6231    ) -> *const ::std::os::raw::c_char;
6232    pub fn obs_property_frame_rate_fps_ranges_count(p: *mut obs_property_t) -> usize;
6233    pub fn obs_property_frame_rate_fps_range_min(
6234        p: *mut obs_property_t,
6235        idx: usize,
6236    ) -> media_frames_per_second;
6237    pub fn obs_property_frame_rate_fps_range_max(
6238        p: *mut obs_property_t,
6239        idx: usize,
6240    ) -> media_frames_per_second;
6241    pub fn obs_property_group_type(p: *mut obs_property_t) -> obs_group_type;
6242    pub fn obs_property_group_content(p: *mut obs_property_t) -> *mut obs_properties_t;
6243    pub fn obs_property_button_type(p: *mut obs_property_t) -> obs_button_type;
6244    pub fn obs_property_button_url(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6245    pub fn obs_missing_files_create() -> *mut obs_missing_files_t;
6246    pub fn obs_missing_file_create(
6247        path: *const ::std::os::raw::c_char,
6248        callback: obs_missing_file_cb,
6249        src_type: ::std::os::raw::c_int,
6250        src: *mut ::std::os::raw::c_void,
6251        data: *mut ::std::os::raw::c_void,
6252    ) -> *mut obs_missing_file_t;
6253    pub fn obs_missing_files_add_file(
6254        files: *mut obs_missing_files_t,
6255        file: *mut obs_missing_file_t,
6256    );
6257    pub fn obs_missing_files_count(files: *mut obs_missing_files_t) -> usize;
6258    pub fn obs_missing_files_get_file(
6259        files: *mut obs_missing_files_t,
6260        idx: ::std::os::raw::c_int,
6261    ) -> *mut obs_missing_file_t;
6262    pub fn obs_missing_files_destroy(files: *mut obs_missing_files_t);
6263    pub fn obs_missing_files_append(dst: *mut obs_missing_files_t, src: *mut obs_missing_files_t);
6264    pub fn obs_missing_file_issue_callback(
6265        file: *mut obs_missing_file_t,
6266        new_path: *const ::std::os::raw::c_char,
6267    );
6268    pub fn obs_missing_file_get_path(
6269        file: *mut obs_missing_file_t,
6270    ) -> *const ::std::os::raw::c_char;
6271    pub fn obs_missing_file_get_source_name(
6272        file: *mut obs_missing_file_t,
6273    ) -> *const ::std::os::raw::c_char;
6274    pub fn obs_missing_file_release(file: *mut obs_missing_file_t);
6275    pub fn obs_missing_file_destroy(file: *mut obs_missing_file_t);
6276    pub fn obs_register_source_s(info: *const obs_source_info, size: usize);
6277    pub fn obs_register_encoder_s(info: *const obs_encoder_info, size: usize);
6278    pub fn obs_register_output_s(info: *const obs_output_info, size: usize);
6279    pub fn obs_register_service_s(info: *const obs_service_info, size: usize);
6280#[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."]
6281    pub fn obs_fader_create(type_: obs_fader_type) -> *mut obs_fader_t;
6282#[doc = " @brief Destroy a fader\n @param fader pointer to the fader object\n\n Destroy the fader and free all related data"]
6283    pub fn obs_fader_destroy(fader: *mut obs_fader_t);
6284#[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"]
6285    pub fn obs_fader_set_db(fader: *mut obs_fader_t, db: f32) -> bool;
6286#[doc = " @brief Get the current fader dB value\n @param fader pointer to the fader object\n @return current fader dB value"]
6287    pub fn obs_fader_get_db(fader: *mut obs_fader_t) -> f32;
6288#[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."]
6289    pub fn obs_fader_set_deflection(fader: *mut obs_fader_t, def: f32) -> bool;
6290#[doc = " @brief Get the current fader deflection\n @param fader pointer to the fader object\n @return current fader deflection"]
6291    pub fn obs_fader_get_deflection(fader: *mut obs_fader_t) -> f32;
6292#[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"]
6293    pub fn obs_fader_set_mul(fader: *mut obs_fader_t, mul: f32) -> bool;
6294#[doc = " @brief Get the current fader multiplier value\n @param fader pointer to the fader object\n @return current fader multiplier"]
6295    pub fn obs_fader_get_mul(fader: *mut obs_fader_t) -> f32;
6296#[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."]
6297    pub fn obs_fader_attach_source(fader: *mut obs_fader_t, source: *mut obs_source_t) -> bool;
6298#[doc = " @brief Detach the fader from the currently attached source\n @param fader pointer to the fader object"]
6299    pub fn obs_fader_detach_source(fader: *mut obs_fader_t);
6300    pub fn obs_fader_add_callback(
6301        fader: *mut obs_fader_t,
6302        callback: obs_fader_changed_t,
6303        param: *mut ::std::os::raw::c_void,
6304    );
6305    pub fn obs_fader_remove_callback(
6306        fader: *mut obs_fader_t,
6307        callback: obs_fader_changed_t,
6308        param: *mut ::std::os::raw::c_void,
6309    );
6310#[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\\]."]
6311    pub fn obs_volmeter_create(type_: obs_fader_type) -> *mut obs_volmeter_t;
6312#[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"]
6313    pub fn obs_volmeter_destroy(volmeter: *mut obs_volmeter_t);
6314#[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."]
6315    pub fn obs_volmeter_attach_source(
6316        volmeter: *mut obs_volmeter_t,
6317        source: *mut obs_source_t,
6318    ) -> bool;
6319#[doc = " @brief Detach the volume meter from the currently attached source\n @param volmeter pointer to the volume meter object"]
6320    pub fn obs_volmeter_detach_source(volmeter: *mut obs_volmeter_t);
6321#[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."]
6322    pub fn obs_volmeter_set_peak_meter_type(
6323        volmeter: *mut obs_volmeter_t,
6324        peak_meter_type: obs_peak_meter_type,
6325    );
6326#[doc = " @brief Get the number of channels which are configured for this source.\n @param volmeter pointer to the volume meter object"]
6327    pub fn obs_volmeter_get_nr_channels(volmeter: *mut obs_volmeter_t) -> ::std::os::raw::c_int;
6328    pub fn obs_volmeter_add_callback(
6329        volmeter: *mut obs_volmeter_t,
6330        callback: obs_volmeter_updated_t,
6331        param: *mut ::std::os::raw::c_void,
6332    );
6333    pub fn obs_volmeter_remove_callback(
6334        volmeter: *mut obs_volmeter_t,
6335        callback: obs_volmeter_updated_t,
6336        param: *mut ::std::os::raw::c_void,
6337    );
6338    pub fn obs_mul_to_db(mul: f32) -> f32;
6339    pub fn obs_db_to_mul(db: f32) -> f32;
6340    pub fn obs_fader_db_to_def(fader: *mut obs_fader_t) -> obs_fader_conversion_t;
6341    pub fn obs_hotkey_get_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6342    pub fn obs_hotkey_get_name(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6343    pub fn obs_hotkey_get_description(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6344    pub fn obs_hotkey_get_registerer_type(key: *const obs_hotkey_t) -> obs_hotkey_registerer_t;
6345    pub fn obs_hotkey_get_registerer(key: *const obs_hotkey_t) -> *mut ::std::os::raw::c_void;
6346    pub fn obs_hotkey_get_pair_partner_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6347    pub fn obs_hotkey_binding_get_key_combination(
6348        binding: *mut obs_hotkey_binding_t,
6349    ) -> obs_key_combination_t;
6350    pub fn obs_hotkey_binding_get_hotkey_id(binding: *mut obs_hotkey_binding_t) -> obs_hotkey_id;
6351    pub fn obs_hotkey_binding_get_hotkey(binding: *mut obs_hotkey_binding_t) -> *mut obs_hotkey_t;
6352    pub fn obs_hotkey_set_name(id: obs_hotkey_id, name: *const ::std::os::raw::c_char);
6353    pub fn obs_hotkey_set_description(id: obs_hotkey_id, desc: *const ::std::os::raw::c_char);
6354    pub fn obs_hotkey_pair_set_names(
6355        id: obs_hotkey_pair_id,
6356        name0: *const ::std::os::raw::c_char,
6357        name1: *const ::std::os::raw::c_char,
6358    );
6359    pub fn obs_hotkey_pair_set_descriptions(
6360        id: obs_hotkey_pair_id,
6361        desc0: *const ::std::os::raw::c_char,
6362        desc1: *const ::std::os::raw::c_char,
6363    );
6364    pub fn obs_hotkeys_set_translations_s(translations: *mut obs_hotkeys_translations, size: usize);
6365    pub fn obs_hotkeys_set_audio_hotkeys_translations(
6366        mute: *const ::std::os::raw::c_char,
6367        unmute: *const ::std::os::raw::c_char,
6368        push_to_mute: *const ::std::os::raw::c_char,
6369        push_to_talk: *const ::std::os::raw::c_char,
6370    );
6371    pub fn obs_hotkeys_set_sceneitem_hotkeys_translations(
6372        show: *const ::std::os::raw::c_char,
6373        hide: *const ::std::os::raw::c_char,
6374    );
6375    pub fn obs_hotkey_register_frontend(
6376        name: *const ::std::os::raw::c_char,
6377        description: *const ::std::os::raw::c_char,
6378        func: obs_hotkey_func,
6379        data: *mut ::std::os::raw::c_void,
6380    ) -> obs_hotkey_id;
6381    pub fn obs_hotkey_register_encoder(
6382        encoder: *mut obs_encoder_t,
6383        name: *const ::std::os::raw::c_char,
6384        description: *const ::std::os::raw::c_char,
6385        func: obs_hotkey_func,
6386        data: *mut ::std::os::raw::c_void,
6387    ) -> obs_hotkey_id;
6388    pub fn obs_hotkey_register_output(
6389        output: *mut obs_output_t,
6390        name: *const ::std::os::raw::c_char,
6391        description: *const ::std::os::raw::c_char,
6392        func: obs_hotkey_func,
6393        data: *mut ::std::os::raw::c_void,
6394    ) -> obs_hotkey_id;
6395    pub fn obs_hotkey_register_service(
6396        service: *mut obs_service_t,
6397        name: *const ::std::os::raw::c_char,
6398        description: *const ::std::os::raw::c_char,
6399        func: obs_hotkey_func,
6400        data: *mut ::std::os::raw::c_void,
6401    ) -> obs_hotkey_id;
6402    pub fn obs_hotkey_register_source(
6403        source: *mut obs_source_t,
6404        name: *const ::std::os::raw::c_char,
6405        description: *const ::std::os::raw::c_char,
6406        func: obs_hotkey_func,
6407        data: *mut ::std::os::raw::c_void,
6408    ) -> obs_hotkey_id;
6409    pub fn obs_hotkey_pair_register_frontend(
6410        name0: *const ::std::os::raw::c_char,
6411        description0: *const ::std::os::raw::c_char,
6412        name1: *const ::std::os::raw::c_char,
6413        description1: *const ::std::os::raw::c_char,
6414        func0: obs_hotkey_active_func,
6415        func1: obs_hotkey_active_func,
6416        data0: *mut ::std::os::raw::c_void,
6417        data1: *mut ::std::os::raw::c_void,
6418    ) -> obs_hotkey_pair_id;
6419    pub fn obs_hotkey_pair_register_encoder(
6420        encoder: *mut obs_encoder_t,
6421        name0: *const ::std::os::raw::c_char,
6422        description0: *const ::std::os::raw::c_char,
6423        name1: *const ::std::os::raw::c_char,
6424        description1: *const ::std::os::raw::c_char,
6425        func0: obs_hotkey_active_func,
6426        func1: obs_hotkey_active_func,
6427        data0: *mut ::std::os::raw::c_void,
6428        data1: *mut ::std::os::raw::c_void,
6429    ) -> obs_hotkey_pair_id;
6430    pub fn obs_hotkey_pair_register_output(
6431        output: *mut obs_output_t,
6432        name0: *const ::std::os::raw::c_char,
6433        description0: *const ::std::os::raw::c_char,
6434        name1: *const ::std::os::raw::c_char,
6435        description1: *const ::std::os::raw::c_char,
6436        func0: obs_hotkey_active_func,
6437        func1: obs_hotkey_active_func,
6438        data0: *mut ::std::os::raw::c_void,
6439        data1: *mut ::std::os::raw::c_void,
6440    ) -> obs_hotkey_pair_id;
6441    pub fn obs_hotkey_pair_register_service(
6442        service: *mut obs_service_t,
6443        name0: *const ::std::os::raw::c_char,
6444        description0: *const ::std::os::raw::c_char,
6445        name1: *const ::std::os::raw::c_char,
6446        description1: *const ::std::os::raw::c_char,
6447        func0: obs_hotkey_active_func,
6448        func1: obs_hotkey_active_func,
6449        data0: *mut ::std::os::raw::c_void,
6450        data1: *mut ::std::os::raw::c_void,
6451    ) -> obs_hotkey_pair_id;
6452    pub fn obs_hotkey_pair_register_source(
6453        source: *mut obs_source_t,
6454        name0: *const ::std::os::raw::c_char,
6455        description0: *const ::std::os::raw::c_char,
6456        name1: *const ::std::os::raw::c_char,
6457        description1: *const ::std::os::raw::c_char,
6458        func0: obs_hotkey_active_func,
6459        func1: obs_hotkey_active_func,
6460        data0: *mut ::std::os::raw::c_void,
6461        data1: *mut ::std::os::raw::c_void,
6462    ) -> obs_hotkey_pair_id;
6463    pub fn obs_hotkey_unregister(id: obs_hotkey_id);
6464    pub fn obs_hotkey_pair_unregister(id: obs_hotkey_pair_id);
6465    pub fn obs_hotkey_load_bindings(
6466        id: obs_hotkey_id,
6467        combinations: *mut obs_key_combination_t,
6468        num: usize,
6469    );
6470    pub fn obs_hotkey_load(id: obs_hotkey_id, data: *mut obs_data_array_t);
6471    pub fn obs_hotkeys_load_encoder(encoder: *mut obs_encoder_t, hotkeys: *mut obs_data_t);
6472    pub fn obs_hotkeys_load_output(output: *mut obs_output_t, hotkeys: *mut obs_data_t);
6473    pub fn obs_hotkeys_load_service(service: *mut obs_service_t, hotkeys: *mut obs_data_t);
6474    pub fn obs_hotkeys_load_source(source: *mut obs_source_t, hotkeys: *mut obs_data_t);
6475    pub fn obs_hotkey_pair_load(
6476        id: obs_hotkey_pair_id,
6477        data0: *mut obs_data_array_t,
6478        data1: *mut obs_data_array_t,
6479    );
6480    pub fn obs_hotkey_save(id: obs_hotkey_id) -> *mut obs_data_array_t;
6481    pub fn obs_hotkey_pair_save(
6482        id: obs_hotkey_pair_id,
6483        p_data0: *mut *mut obs_data_array_t,
6484        p_data1: *mut *mut obs_data_array_t,
6485    );
6486    pub fn obs_hotkeys_save_encoder(encoder: *mut obs_encoder_t) -> *mut obs_data_t;
6487    pub fn obs_hotkeys_save_output(output: *mut obs_output_t) -> *mut obs_data_t;
6488    pub fn obs_hotkeys_save_service(service: *mut obs_service_t) -> *mut obs_data_t;
6489    pub fn obs_hotkeys_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6490    pub fn obs_enum_hotkeys(func: obs_hotkey_enum_func, data: *mut ::std::os::raw::c_void);
6491    pub fn obs_enum_hotkey_bindings(
6492        func: obs_hotkey_binding_enum_func,
6493        data: *mut ::std::os::raw::c_void,
6494    );
6495    pub fn obs_hotkey_inject_event(hotkey: obs_key_combination_t, pressed: bool);
6496    pub fn obs_hotkey_enable_background_press(enable: bool);
6497    pub fn obs_hotkey_set_callback_routing_func(
6498        func: obs_hotkey_callback_router_func,
6499        data: *mut ::std::os::raw::c_void,
6500    );
6501    pub fn obs_hotkey_trigger_routed_callback(id: obs_hotkey_id, pressed: bool);
6502    pub fn obs_hotkey_enable_callback_rerouting(enable: bool);
6503    pub fn obs_hotkey_update_atomic(
6504        func: obs_hotkey_atomic_update_func,
6505        data: *mut ::std::os::raw::c_void,
6506    );
6507    pub fn obs_key_to_str(key: obs_key_t, str_: *mut dstr);
6508    pub fn obs_key_combination_to_str(key: obs_key_combination_t, str_: *mut dstr);
6509    pub fn obs_key_from_virtual_key(code: ::std::os::raw::c_int) -> obs_key_t;
6510    pub fn obs_key_to_virtual_key(key: obs_key_t) -> ::std::os::raw::c_int;
6511    pub fn obs_key_to_name(key: obs_key_t) -> *const ::std::os::raw::c_char;
6512    pub fn obs_key_from_name(name: *const ::std::os::raw::c_char) -> obs_key_t;
6513#[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."]
6514    pub fn obs_find_data_file(file: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
6515#[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."]
6516    pub fn obs_add_data_path(path: *const ::std::os::raw::c_char);
6517#[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."]
6518    pub fn obs_remove_data_path(path: *const ::std::os::raw::c_char) -> bool;
6519#[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"]
6520    pub fn obs_startup(
6521        locale: *const ::std::os::raw::c_char,
6522        module_config_path: *const ::std::os::raw::c_char,
6523        store: *mut profiler_name_store_t,
6524    ) -> bool;
6525#[doc = " Releases all data associated with OBS and terminates the OBS context"]
6526    pub fn obs_shutdown();
6527#[doc = " @return true if the main OBS context has been initialized"]
6528    pub fn obs_initialized() -> bool;
6529#[doc = " @return The current core version"]
6530    pub fn obs_get_version() -> u32;
6531#[doc = " @return The current core version string"]
6532    pub fn obs_get_version_string() -> *const ::std::os::raw::c_char;
6533#[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."]
6534    pub fn obs_set_cmdline_args(
6535        argc: ::std::os::raw::c_int,
6536        argv: *const *const ::std::os::raw::c_char,
6537    );
6538#[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."]
6539    pub fn obs_get_cmdline_args() -> obs_cmdline_args;
6540#[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"]
6541    pub fn obs_set_locale(locale: *const ::std::os::raw::c_char);
6542#[doc = " @return the current locale"]
6543    pub fn obs_get_locale() -> *const ::std::os::raw::c_char;
6544    pub fn obs_init_win32_crash_handler();
6545#[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."]
6546    pub fn obs_get_profiler_name_store() -> *mut profiler_name_store_t;
6547#[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"]
6548    pub fn obs_reset_video(ovi: *mut obs_video_info) -> ::std::os::raw::c_int;
6549#[doc = " Sets base audio output format/channels/samples/etc\n\n @note Cannot reset base audio if an output is currently active."]
6550    pub fn obs_reset_audio(oai: *const obs_audio_info) -> bool;
6551    pub fn obs_reset_audio2(oai: *const obs_audio_info2) -> bool;
6552#[doc = " Gets the current video settings, returns false if no video"]
6553    pub fn obs_get_video_info(ovi: *mut obs_video_info) -> bool;
6554#[doc = " Gets the SDR white level, returns 300.f if no video"]
6555    pub fn obs_get_video_sdr_white_level() -> f32;
6556#[doc = " Gets the HDR nominal peak level, returns 1000.f if no video"]
6557    pub fn obs_get_video_hdr_nominal_peak_level() -> f32;
6558#[doc = " Sets the video levels"]
6559    pub fn obs_set_video_levels(sdr_white_level: f32, hdr_nominal_peak_level: f32);
6560#[doc = " Gets the current audio settings, returns false if no audio"]
6561    pub fn obs_get_audio_info(oai: *mut obs_audio_info) -> bool;
6562#[doc = " Gets the v2 audio settings that includes buffering information.\n Returns false if no audio."]
6563    pub fn obs_get_audio_info2(oai2: *mut obs_audio_info2) -> bool;
6564#[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"]
6565    pub fn obs_open_module(
6566        module: *mut *mut obs_module_t,
6567        path: *const ::std::os::raw::c_char,
6568        data_path: *const ::std::os::raw::c_char,
6569    ) -> ::std::os::raw::c_int;
6570    pub fn obs_create_disabled_module(
6571        module: *mut *mut obs_module_t,
6572        path: *const ::std::os::raw::c_char,
6573        data_path: *const ::std::os::raw::c_char,
6574        state: obs_module_load_state,
6575    ) -> bool;
6576#[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."]
6577    pub fn obs_init_module(module: *mut obs_module_t) -> bool;
6578#[doc = " Returns a module based upon its name, or NULL if not found"]
6579    pub fn obs_get_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6580#[doc = " Returns a module if it is disabled, or NULL if not found in the disabled list"]
6581    pub fn obs_get_disabled_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6582#[doc = " Gets library of module"]
6583    pub fn obs_get_module_lib(module: *mut obs_module_t) -> *mut ::std::os::raw::c_void;
6584#[doc = " Returns locale text from a specific module"]
6585    pub fn obs_module_get_locale_string(
6586        mod_: *const obs_module_t,
6587        lookup_string: *const ::std::os::raw::c_char,
6588        translated_string: *mut *const ::std::os::raw::c_char,
6589    ) -> bool;
6590    pub fn obs_module_get_locale_text(
6591        mod_: *const obs_module_t,
6592        text: *const ::std::os::raw::c_char,
6593    ) -> *const ::std::os::raw::c_char;
6594#[doc = " Logs loaded modules"]
6595    pub fn obs_log_loaded_modules();
6596#[doc = " Returns the module file name"]
6597    pub fn obs_get_module_file_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6598#[doc = " Returns the module full name"]
6599    pub fn obs_get_module_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6600#[doc = " Returns the module author(s)"]
6601    pub fn obs_get_module_author(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6602#[doc = " Returns the module description"]
6603    pub fn obs_get_module_description(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6604#[doc = " Returns the module binary path"]
6605    pub fn obs_get_module_binary_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6606#[doc = " Returns the module data path"]
6607    pub fn obs_get_module_data_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6608#[doc = " Adds a source type id to the module provided sources list"]
6609    pub fn obs_module_add_source(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6610#[doc = " Adds an output type id to the module provided outputs list"]
6611    pub fn obs_module_add_output(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6612#[doc = " Adds an encoder type id to the module provided encoders list"]
6613    pub fn obs_module_add_encoder(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6614#[doc = " Adds an encoder service id to the module provided services list"]
6615    pub fn obs_module_add_service(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6616#[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."]
6617    pub fn obs_add_module_path(
6618        bin: *const ::std::os::raw::c_char,
6619        data: *const ::std::os::raw::c_char,
6620    );
6621#[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)."]
6622    pub fn obs_add_safe_module(name: *const ::std::os::raw::c_char);
6623#[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)."]
6624    pub fn obs_add_core_module(name: *const ::std::os::raw::c_char);
6625#[doc = " Automatically loads all modules from module paths (convenience function)"]
6626    pub fn obs_load_all_modules();
6627    pub fn obs_module_failure_info_free(mfi: *mut obs_module_failure_info);
6628    pub fn obs_load_all_modules2(mfi: *mut obs_module_failure_info);
6629#[doc = " Notifies modules that all modules have been loaded.  This function should\n be called after all modules have been loaded."]
6630    pub fn obs_post_load_modules();
6631#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6632    pub fn obs_find_modules(
6633        callback: obs_find_module_callback_t,
6634        param: *mut ::std::os::raw::c_void,
6635    );
6636#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6637    pub fn obs_find_modules2(
6638        callback: obs_find_module_callback2_t,
6639        param: *mut ::std::os::raw::c_void,
6640    );
6641#[doc = " Enumerates all loaded modules"]
6642    pub fn obs_enum_modules(
6643        callback: obs_enum_module_callback_t,
6644        param: *mut ::std::os::raw::c_void,
6645    );
6646#[doc = " Helper function for using default module locale"]
6647    pub fn obs_module_load_locale(
6648        module: *mut obs_module_t,
6649        default_locale: *const ::std::os::raw::c_char,
6650        locale: *const ::std::os::raw::c_char,
6651    ) -> *mut lookup_t;
6652#[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."]
6653    pub fn obs_find_module_file(
6654        module: *mut obs_module_t,
6655        file: *const ::std::os::raw::c_char,
6656    ) -> *mut ::std::os::raw::c_char;
6657#[doc = " Adds a module name to the disabled modules list.\n\n @param  name    The name of the module to disable"]
6658    pub fn obs_add_disabled_module(name: *const ::std::os::raw::c_char);
6659#[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"]
6660    pub fn obs_get_module_allow_disable(name: *const ::std::os::raw::c_char) -> bool;
6661#[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."]
6662    pub fn obs_module_get_config_path(
6663        module: *mut obs_module_t,
6664        file: *const ::std::os::raw::c_char,
6665    ) -> *mut ::std::os::raw::c_char;
6666#[doc = " Enumerates all source types (inputs, filters, transitions, etc)."]
6667    pub fn obs_enum_source_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6668#[doc = " Enumerates all available inputs source types.\n\n   Inputs are general source inputs (such as capture sources, device sources,\n etc)."]
6669    pub fn obs_enum_input_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6670    pub fn obs_enum_input_types2(
6671        idx: usize,
6672        id: *mut *const ::std::os::raw::c_char,
6673        unversioned_id: *mut *const ::std::os::raw::c_char,
6674    ) -> bool;
6675    pub fn obs_get_latest_input_type_id(
6676        unversioned_id: *const ::std::os::raw::c_char,
6677    ) -> *const ::std::os::raw::c_char;
6678#[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."]
6679    pub fn obs_enum_filter_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6680#[doc = " Enumerates all available transition source types.\n\n   Transitions are sources used to transition between two or more other\n sources."]
6681    pub fn obs_enum_transition_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6682#[doc = " Enumerates all available output types."]
6683    pub fn obs_enum_output_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6684#[doc = " Enumerates all available encoder types."]
6685    pub fn obs_enum_encoder_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6686#[doc = " Enumerates all available service types."]
6687    pub fn obs_enum_service_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6688#[doc = " Helper function for entering the OBS graphics context"]
6689    pub fn obs_enter_graphics();
6690#[doc = " Helper function for leaving the OBS graphics context"]
6691    pub fn obs_leave_graphics();
6692#[doc = " Gets the main audio output handler for this OBS context"]
6693    pub fn obs_get_audio() -> *mut audio_t;
6694#[doc = " Gets the main video output handler for this OBS context"]
6695    pub fn obs_get_video() -> *mut video_t;
6696#[doc = " Returns true if video is active, false otherwise"]
6697    pub fn obs_video_active() -> bool;
6698#[doc = " Sets the primary output source for a channel."]
6699    pub fn obs_set_output_source(channel: u32, source: *mut obs_source_t);
6700#[doc = " Gets the primary output source for a channel and increments the reference\n counter for that source.  Use obs_source_release to release."]
6701    pub fn obs_get_output_source(channel: u32) -> *mut obs_source_t;
6702#[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"]
6703    pub fn obs_enum_sources(
6704        enum_proc: ::std::option::Option<
6705            unsafe extern "C" fn(
6706                arg1: *mut ::std::os::raw::c_void,
6707                arg2: *mut obs_source_t,
6708            ) -> bool,
6709        >,
6710        param: *mut ::std::os::raw::c_void,
6711    );
6712#[doc = " Enumerates scenes"]
6713    pub fn obs_enum_scenes(
6714        enum_proc: ::std::option::Option<
6715            unsafe extern "C" fn(
6716                arg1: *mut ::std::os::raw::c_void,
6717                arg2: *mut obs_source_t,
6718            ) -> bool,
6719        >,
6720        param: *mut ::std::os::raw::c_void,
6721    );
6722#[doc = " Enumerates all sources (regardless of type)"]
6723    pub fn obs_enum_all_sources(
6724        enum_proc: ::std::option::Option<
6725            unsafe extern "C" fn(
6726                arg1: *mut ::std::os::raw::c_void,
6727                arg2: *mut obs_source_t,
6728            ) -> bool,
6729        >,
6730        param: *mut ::std::os::raw::c_void,
6731    );
6732#[doc = " Enumerates outputs"]
6733    pub fn obs_enum_outputs(
6734        enum_proc: ::std::option::Option<
6735            unsafe extern "C" fn(
6736                arg1: *mut ::std::os::raw::c_void,
6737                arg2: *mut obs_output_t,
6738            ) -> bool,
6739        >,
6740        param: *mut ::std::os::raw::c_void,
6741    );
6742#[doc = " Enumerates encoders"]
6743    pub fn obs_enum_encoders(
6744        enum_proc: ::std::option::Option<
6745            unsafe extern "C" fn(
6746                arg1: *mut ::std::os::raw::c_void,
6747                arg2: *mut obs_encoder_t,
6748            ) -> bool,
6749        >,
6750        param: *mut ::std::os::raw::c_void,
6751    );
6752#[doc = " Enumerates encoders"]
6753    pub fn obs_enum_services(
6754        enum_proc: ::std::option::Option<
6755            unsafe extern "C" fn(
6756                arg1: *mut ::std::os::raw::c_void,
6757                arg2: *mut obs_service_t,
6758            ) -> bool,
6759        >,
6760        param: *mut ::std::os::raw::c_void,
6761    );
6762#[doc = " Enumerates canvases"]
6763    pub fn obs_enum_canvases(
6764        enum_proc: ::std::option::Option<
6765            unsafe extern "C" fn(
6766                arg1: *mut ::std::os::raw::c_void,
6767                arg2: *mut obs_canvas_t,
6768            ) -> bool,
6769        >,
6770        param: *mut ::std::os::raw::c_void,
6771    );
6772#[doc = " Gets a source by its name.\n\n   Increments the source reference counter, use obs_source_release to\n release it when complete."]
6773    pub fn obs_get_source_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6774#[doc = " Gets a source by its UUID.\n\n   Increments the source reference counter, use obs_source_release to\n release it when complete."]
6775    pub fn obs_get_source_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6776#[doc = " Get a transition source by its name."]
6777    pub fn obs_get_transition_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6778#[doc = " Get a transition source by its UUID."]
6779    pub fn obs_get_transition_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6780#[doc = " Gets an output by its name."]
6781    pub fn obs_get_output_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_output_t;
6782#[doc = " Gets an encoder by its name."]
6783    pub fn obs_get_encoder_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_encoder_t;
6784#[doc = " Gets an service by its name."]
6785    pub fn obs_get_service_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_service_t;
6786#[doc = " Get a canvas by its name."]
6787    pub fn obs_get_canvas_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6788#[doc = " Get a canvas by its UUID."]
6789    pub fn obs_get_canvas_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6790#[doc = " Returns a commonly used base effect"]
6791    pub fn obs_get_base_effect(effect: obs_base_effect) -> *mut gs_effect_t;
6792#[doc = " Returns the primary obs signal handler"]
6793    pub fn obs_get_signal_handler() -> *mut signal_handler_t;
6794#[doc = " Returns the primary obs procedure handler"]
6795    pub fn obs_get_proc_handler() -> *mut proc_handler_t;
6796#[doc = " Renders the last main output texture"]
6797    pub fn obs_render_main_texture();
6798#[doc = " Renders the last main output texture ignoring background color"]
6799    pub fn obs_render_main_texture_src_color_only();
6800#[doc = " Renders the last canvas output texture"]
6801    pub fn obs_render_canvas_texture(canvas: *mut obs_canvas_t);
6802#[doc = " Renders the last main output texture ignoring background color"]
6803    pub fn obs_render_canvas_texture_src_color_only(canvas: *mut obs_canvas_t);
6804#[doc = " Returns the last main output texture.  This can return NULL if the texture\n is unavailable."]
6805    pub fn obs_get_main_texture() -> *mut gs_texture_t;
6806#[doc = " Saves a source to settings data"]
6807    pub fn obs_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6808#[doc = " Loads a source from settings data"]
6809    pub fn obs_load_source(data: *mut obs_data_t) -> *mut obs_source_t;
6810#[doc = " Loads a private source from settings data"]
6811    pub fn obs_load_private_source(data: *mut obs_data_t) -> *mut obs_source_t;
6812#[doc = " Send a save signal to sources"]
6813    pub fn obs_source_save(source: *mut obs_source_t);
6814#[doc = " Send a load signal to sources (soft deprecated; does not load filters)"]
6815    pub fn obs_source_load(source: *mut obs_source_t);
6816#[doc = " Send a load signal to sources"]
6817    pub fn obs_source_load2(source: *mut obs_source_t);
6818#[doc = " Loads sources from a data array"]
6819    pub fn obs_load_sources(
6820        array: *mut obs_data_array_t,
6821        cb: obs_load_source_cb,
6822        private_data: *mut ::std::os::raw::c_void,
6823    );
6824#[doc = " Saves sources to a data array"]
6825    pub fn obs_save_sources() -> *mut obs_data_array_t;
6826    pub fn obs_save_sources_filtered(
6827        cb: obs_save_source_filter_cb,
6828        data: *mut ::std::os::raw::c_void,
6829    ) -> *mut obs_data_array_t;
6830#[doc = " Reset source UUIDs. NOTE: this function is only to be used by the UI and\n  will be removed in a future version!"]
6831    pub fn obs_reset_source_uuids();
6832    pub fn obs_obj_get_type(obj: *mut ::std::os::raw::c_void) -> obs_obj_type;
6833    pub fn obs_obj_get_id(obj: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char;
6834    pub fn obs_obj_invalid(obj: *mut ::std::os::raw::c_void) -> bool;
6835    pub fn obs_obj_get_data(obj: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void;
6836    pub fn obs_obj_is_private(obj: *mut ::std::os::raw::c_void) -> bool;
6837    pub fn obs_audio_monitoring_available() -> bool;
6838    pub fn obs_reset_audio_monitoring();
6839    pub fn obs_enum_audio_monitoring_devices(
6840        cb: obs_enum_audio_device_cb,
6841        data: *mut ::std::os::raw::c_void,
6842    );
6843    pub fn obs_set_audio_monitoring_device(
6844        name: *const ::std::os::raw::c_char,
6845        id: *const ::std::os::raw::c_char,
6846    ) -> bool;
6847    pub fn obs_get_audio_monitoring_device(
6848        name: *mut *const ::std::os::raw::c_char,
6849        id: *mut *const ::std::os::raw::c_char,
6850    );
6851    pub fn obs_add_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_remove_tick_callback(
6858        tick: ::std::option::Option<
6859            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, seconds: f32),
6860        >,
6861        param: *mut ::std::os::raw::c_void,
6862    );
6863    pub fn obs_add_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_remove_main_render_callback(
6870        draw: ::std::option::Option<
6871            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6872        >,
6873        param: *mut ::std::os::raw::c_void,
6874    );
6875    pub fn obs_add_main_rendered_callback(
6876        rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6877        param: *mut ::std::os::raw::c_void,
6878    );
6879    pub fn obs_remove_main_rendered_callback(
6880        rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6881        param: *mut ::std::os::raw::c_void,
6882    );
6883    pub fn obs_add_raw_video_callback(
6884        conversion: *const video_scale_info,
6885        callback: ::std::option::Option<
6886            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6887        >,
6888        param: *mut ::std::os::raw::c_void,
6889    );
6890    pub fn obs_add_raw_video_callback2(
6891        conversion: *const video_scale_info,
6892        frame_rate_divisor: u32,
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_remove_raw_video_callback(
6899        callback: ::std::option::Option<
6900            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6901        >,
6902        param: *mut ::std::os::raw::c_void,
6903    );
6904    pub fn obs_add_raw_audio_callback(
6905        mix_idx: usize,
6906        conversion: *const audio_convert_info,
6907        callback: audio_output_callback_t,
6908        param: *mut ::std::os::raw::c_void,
6909    );
6910    pub fn obs_remove_raw_audio_callback(
6911        mix_idx: usize,
6912        callback: audio_output_callback_t,
6913        param: *mut ::std::os::raw::c_void,
6914    );
6915    pub fn obs_get_video_frame_time() -> u64;
6916    pub fn obs_get_active_fps() -> f64;
6917    pub fn obs_get_average_frame_time_ns() -> u64;
6918    pub fn obs_get_frame_interval_ns() -> u64;
6919    pub fn obs_get_total_frames() -> u32;
6920    pub fn obs_get_lagged_frames() -> u32;
6921    pub fn obs_nv12_tex_active() -> bool;
6922    pub fn obs_p010_tex_active() -> bool;
6923    pub fn obs_apply_private_data(settings: *mut obs_data_t);
6924    pub fn obs_set_private_data(settings: *mut obs_data_t);
6925    pub fn obs_get_private_data() -> *mut obs_data_t;
6926    pub fn obs_queue_task(
6927        type_: obs_task_type,
6928        task: obs_task_t,
6929        param: *mut ::std::os::raw::c_void,
6930        wait: bool,
6931    );
6932    pub fn obs_in_task_thread(type_: obs_task_type) -> bool;
6933    pub fn obs_wait_for_destroy_queue() -> bool;
6934    pub fn obs_set_ui_task_handler(handler: obs_task_handler_t);
6935    pub fn obs_object_get_ref(object: *mut obs_object_t) -> *mut obs_object_t;
6936    pub fn obs_object_release(object: *mut obs_object_t);
6937    pub fn obs_weak_object_addref(weak: *mut obs_weak_object_t);
6938    pub fn obs_weak_object_release(weak: *mut obs_weak_object_t);
6939    pub fn obs_object_get_weak_object(object: *mut obs_object_t) -> *mut obs_weak_object_t;
6940    pub fn obs_weak_object_get_object(weak: *mut obs_weak_object_t) -> *mut obs_object_t;
6941    pub fn obs_weak_object_expired(weak: *mut obs_weak_object_t) -> bool;
6942    pub fn obs_weak_object_references_object(
6943        weak: *mut obs_weak_object_t,
6944        object: *mut obs_object_t,
6945    ) -> bool;
6946#[doc = " Creates a view context.\n\n   A view can be used for things like separate previews, or drawing\n sources separately."]
6947    pub fn obs_view_create() -> *mut obs_view_t;
6948#[doc = " Destroys this view context"]
6949    pub fn obs_view_destroy(view: *mut obs_view_t);
6950#[doc = " Sets the source to be used for this view context."]
6951    pub fn obs_view_set_source(view: *mut obs_view_t, channel: u32, source: *mut obs_source_t);
6952#[doc = " Gets the source currently in use for this view context"]
6953    pub fn obs_view_get_source(view: *mut obs_view_t, channel: u32) -> *mut obs_source_t;
6954#[doc = " Renders the sources of this view context"]
6955    pub fn obs_view_render(view: *mut obs_view_t);
6956#[doc = " Adds a view to the main render loop, with current obs_get_video_info state"]
6957    pub fn obs_view_add(view: *mut obs_view_t) -> *mut video_t;
6958#[doc = " Adds a view to the main render loop, with custom video settings"]
6959    pub fn obs_view_add2(view: *mut obs_view_t, ovi: *mut obs_video_info) -> *mut video_t;
6960#[doc = " Removes a view from the main render loop"]
6961    pub fn obs_view_remove(view: *mut obs_view_t);
6962#[doc = " Enumerate the video info of all mixes using the specified view context"]
6963    pub fn obs_view_enum_video_info(
6964        view: *mut obs_view_t,
6965        enum_proc: ::std::option::Option<
6966            unsafe extern "C" fn(
6967                arg1: *mut ::std::os::raw::c_void,
6968                arg2: *mut obs_video_info,
6969            ) -> bool,
6970        >,
6971        param: *mut ::std::os::raw::c_void,
6972    );
6973#[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."]
6974    pub fn obs_display_create(
6975        graphics_data: *const gs_init_data,
6976        backround_color: u32,
6977    ) -> *mut obs_display_t;
6978#[doc = " Destroys a display context"]
6979    pub fn obs_display_destroy(display: *mut obs_display_t);
6980#[doc = " Changes the size of this display"]
6981    pub fn obs_display_resize(display: *mut obs_display_t, cx: u32, cy: u32);
6982#[doc = " Updates the color space of this display"]
6983    pub fn obs_display_update_color_space(display: *mut obs_display_t);
6984#[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."]
6985    pub fn obs_display_add_draw_callback(
6986        display: *mut obs_display_t,
6987        draw: ::std::option::Option<
6988            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6989        >,
6990        param: *mut ::std::os::raw::c_void,
6991    );
6992#[doc = " Removes a draw callback for this display context"]
6993    pub fn obs_display_remove_draw_callback(
6994        display: *mut obs_display_t,
6995        draw: ::std::option::Option<
6996            unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6997        >,
6998        param: *mut ::std::os::raw::c_void,
6999    );
7000    pub fn obs_display_set_enabled(display: *mut obs_display_t, enable: bool);
7001    pub fn obs_display_enabled(display: *mut obs_display_t) -> bool;
7002    pub fn obs_display_set_background_color(display: *mut obs_display_t, color: u32);
7003    pub fn obs_display_size(display: *mut obs_display_t, width: *mut u32, height: *mut u32);
7004#[doc = " Returns the translated display name of a source"]
7005    pub fn obs_source_get_display_name(
7006        id: *const ::std::os::raw::c_char,
7007    ) -> *const ::std::os::raw::c_char;
7008#[doc = " Returns a pointer to the module which provides the source"]
7009    pub fn obs_source_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7010#[doc = " Returns the load state of a source's module given the id"]
7011    pub fn obs_source_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7012#[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."]
7013    pub fn obs_source_create(
7014        id: *const ::std::os::raw::c_char,
7015        name: *const ::std::os::raw::c_char,
7016        settings: *mut obs_data_t,
7017        hotkey_data: *mut obs_data_t,
7018    ) -> *mut obs_source_t;
7019    pub fn obs_source_create_private(
7020        id: *const ::std::os::raw::c_char,
7021        name: *const ::std::os::raw::c_char,
7022        settings: *mut obs_data_t,
7023    ) -> *mut obs_source_t;
7024    pub fn obs_source_duplicate(
7025        source: *mut obs_source_t,
7026        desired_name: *const ::std::os::raw::c_char,
7027        create_private: bool,
7028    ) -> *mut obs_source_t;
7029#[doc = " Adds/releases a reference to a source.  When the last reference is\n released, the source is destroyed."]
7030    pub fn obs_source_release(source: *mut obs_source_t);
7031    pub fn obs_weak_source_addref(weak: *mut obs_weak_source_t);
7032    pub fn obs_weak_source_release(weak: *mut obs_weak_source_t);
7033    pub fn obs_source_get_ref(source: *mut obs_source_t) -> *mut obs_source_t;
7034    pub fn obs_source_get_weak_source(source: *mut obs_source_t) -> *mut obs_weak_source_t;
7035    pub fn obs_weak_source_get_source(weak: *mut obs_weak_source_t) -> *mut obs_source_t;
7036    pub fn obs_weak_source_expired(weak: *mut obs_weak_source_t) -> bool;
7037    pub fn obs_weak_source_references_source(
7038        weak: *mut obs_weak_source_t,
7039        source: *mut obs_source_t,
7040    ) -> bool;
7041#[doc = " Notifies all references that the source should be released"]
7042    pub fn obs_source_remove(source: *mut obs_source_t);
7043#[doc = " Returns true if the source should be released"]
7044    pub fn obs_source_removed(source: *const obs_source_t) -> bool;
7045#[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"]
7046    pub fn obs_source_set_hidden(source: *mut obs_source_t, hidden: bool);
7047#[doc = " Returns the current 'hidden' state on the source"]
7048    pub fn obs_source_is_hidden(source: *mut obs_source_t) -> bool;
7049#[doc = " Returns capability flags of a source"]
7050    pub fn obs_source_get_output_flags(source: *const obs_source_t) -> u32;
7051#[doc = " Returns capability flags of a source type"]
7052    pub fn obs_get_source_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7053#[doc = " Gets the default settings for a source type"]
7054    pub fn obs_get_source_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7055#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
7056    pub fn obs_get_source_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7057    pub fn obs_source_get_missing_files(source: *const obs_source_t) -> *mut obs_missing_files_t;
7058    pub fn obs_source_replace_missing_file(
7059        cb: obs_missing_file_cb,
7060        source: *mut obs_source_t,
7061        new_path: *const ::std::os::raw::c_char,
7062        data: *mut ::std::os::raw::c_void,
7063    );
7064#[doc = " Returns whether the source has custom properties or not"]
7065    pub fn obs_is_source_configurable(id: *const ::std::os::raw::c_char) -> bool;
7066    pub fn obs_source_configurable(source: *const obs_source_t) -> bool;
7067#[doc = " Returns the properties list for a specific existing source.  Free with\n obs_properties_destroy"]
7068    pub fn obs_source_properties(source: *const obs_source_t) -> *mut obs_properties_t;
7069#[doc = " Updates settings for this source"]
7070    pub fn obs_source_update(source: *mut obs_source_t, settings: *mut obs_data_t);
7071    pub fn obs_source_reset_settings(source: *mut obs_source_t, settings: *mut obs_data_t);
7072#[doc = " Renders a video source."]
7073    pub fn obs_source_video_render(source: *mut obs_source_t);
7074#[doc = " Gets the width of a source (if it has video)"]
7075    pub fn obs_source_get_width(source: *mut obs_source_t) -> u32;
7076#[doc = " Gets the height of a source (if it has video)"]
7077    pub fn obs_source_get_height(source: *mut obs_source_t) -> u32;
7078#[doc = " Gets the color space of a source (if it has video)"]
7079    pub fn obs_source_get_color_space(
7080        source: *mut obs_source_t,
7081        count: usize,
7082        preferred_spaces: *const gs_color_space,
7083    ) -> gs_color_space;
7084#[doc = " Hints whether or not the source will blend texels"]
7085    pub fn obs_source_get_texcoords_centered(source: *mut obs_source_t) -> bool;
7086#[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."]
7087    pub fn obs_filter_get_parent(filter: *const obs_source_t) -> *mut obs_source_t;
7088#[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."]
7089    pub fn obs_filter_get_target(filter: *const obs_source_t) -> *mut obs_source_t;
7090#[doc = " Used to directly render a non-async source without any filter processing"]
7091    pub fn obs_source_default_render(source: *mut obs_source_t);
7092#[doc = " Adds a filter to the source (which is used whenever the source is used)"]
7093    pub fn obs_source_filter_add(source: *mut obs_source_t, filter: *mut obs_source_t);
7094#[doc = " Removes a filter from the source"]
7095    pub fn obs_source_filter_remove(source: *mut obs_source_t, filter: *mut obs_source_t);
7096#[doc = " Modifies the order of a specific filter"]
7097    pub fn obs_source_filter_set_order(
7098        source: *mut obs_source_t,
7099        filter: *mut obs_source_t,
7100        movement: obs_order_movement,
7101    );
7102#[doc = " Gets filter index"]
7103    pub fn obs_source_filter_get_index(
7104        source: *mut obs_source_t,
7105        filter: *mut obs_source_t,
7106    ) -> ::std::os::raw::c_int;
7107#[doc = " Sets filter index"]
7108    pub fn obs_source_filter_set_index(
7109        source: *mut obs_source_t,
7110        filter: *mut obs_source_t,
7111        index: usize,
7112    );
7113#[doc = " Gets the settings string for a source"]
7114    pub fn obs_source_get_settings(source: *const obs_source_t) -> *mut obs_data_t;
7115#[doc = " Gets the name of a source"]
7116    pub fn obs_source_get_name(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7117#[doc = " Sets the name of a source"]
7118    pub fn obs_source_set_name(source: *mut obs_source_t, name: *const ::std::os::raw::c_char);
7119#[doc = " Gets the UUID of a source"]
7120    pub fn obs_source_get_uuid(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7121#[doc = " Gets the source type"]
7122    pub fn obs_source_get_type(source: *const obs_source_t) -> obs_source_type;
7123#[doc = " Gets the source identifier"]
7124    pub fn obs_source_get_id(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7125    pub fn obs_source_get_unversioned_id(
7126        source: *const obs_source_t,
7127    ) -> *const ::std::os::raw::c_char;
7128#[doc = " Returns the signal handler for a source"]
7129    pub fn obs_source_get_signal_handler(source: *const obs_source_t) -> *mut signal_handler_t;
7130#[doc = " Returns the procedure handler for a source"]
7131    pub fn obs_source_get_proc_handler(source: *const obs_source_t) -> *mut proc_handler_t;
7132#[doc = " Sets the user volume for a source that has audio output"]
7133    pub fn obs_source_set_volume(source: *mut obs_source_t, volume: f32);
7134#[doc = " Gets the user volume for a source that has audio output"]
7135    pub fn obs_source_get_volume(source: *const obs_source_t) -> f32;
7136    pub fn obs_source_get_speaker_layout(source: *mut obs_source_t) -> speaker_layout;
7137#[doc = " Sets the balance value for a stereo audio source"]
7138    pub fn obs_source_set_balance_value(source: *mut obs_source_t, balance: f32);
7139#[doc = " Gets the balance value for a stereo audio source"]
7140    pub fn obs_source_get_balance_value(source: *const obs_source_t) -> f32;
7141#[doc = " Sets the audio sync offset (in nanoseconds) for a source"]
7142    pub fn obs_source_set_sync_offset(source: *mut obs_source_t, offset: i64);
7143#[doc = " Gets the audio sync offset (in nanoseconds) for a source"]
7144    pub fn obs_source_get_sync_offset(source: *const obs_source_t) -> i64;
7145#[doc = " Enumerates active child sources used by this source"]
7146    pub fn obs_source_enum_active_sources(
7147        source: *mut obs_source_t,
7148        enum_callback: obs_source_enum_proc_t,
7149        param: *mut ::std::os::raw::c_void,
7150    );
7151#[doc = " Enumerates the entire active child source tree used by this source"]
7152    pub fn obs_source_enum_active_tree(
7153        source: *mut obs_source_t,
7154        enum_callback: obs_source_enum_proc_t,
7155        param: *mut ::std::os::raw::c_void,
7156    );
7157    pub fn obs_source_enum_full_tree(
7158        source: *mut obs_source_t,
7159        enum_callback: obs_source_enum_proc_t,
7160        param: *mut ::std::os::raw::c_void,
7161    );
7162#[doc = " Returns true if active, false if not"]
7163    pub fn obs_source_active(source: *const obs_source_t) -> bool;
7164#[doc = " Returns true if currently displayed somewhere (active or not), false if not"]
7165    pub fn obs_source_showing(source: *const obs_source_t) -> bool;
7166#[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."]
7167    pub fn obs_source_set_flags(source: *mut obs_source_t, flags: u32);
7168#[doc = " Gets source flags."]
7169    pub fn obs_source_get_flags(source: *const obs_source_t) -> u32;
7170#[doc = " Sets audio mixer flags.  These flags are used to specify which mixers\n the source's audio should be applied to."]
7171    pub fn obs_source_set_audio_mixers(source: *mut obs_source_t, mixers: u32);
7172#[doc = " Gets audio mixer flags"]
7173    pub fn obs_source_get_audio_mixers(source: *const obs_source_t) -> u32;
7174#[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."]
7175    pub fn obs_source_inc_showing(source: *mut obs_source_t);
7176#[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."]
7177    pub fn obs_source_inc_active(source: *mut obs_source_t);
7178#[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"]
7179    pub fn obs_source_dec_showing(source: *mut obs_source_t);
7180#[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."]
7181    pub fn obs_source_dec_active(source: *mut obs_source_t);
7182#[doc = " Enumerates filters assigned to the source"]
7183    pub fn obs_source_enum_filters(
7184        source: *mut obs_source_t,
7185        callback: obs_source_enum_proc_t,
7186        param: *mut ::std::os::raw::c_void,
7187    );
7188#[doc = " Gets a filter of a source by its display name."]
7189    pub fn obs_source_get_filter_by_name(
7190        source: *mut obs_source_t,
7191        name: *const ::std::os::raw::c_char,
7192    ) -> *mut obs_source_t;
7193#[doc = " Gets the number of filters the source has."]
7194    pub fn obs_source_filter_count(source: *const obs_source_t) -> usize;
7195    pub fn obs_source_copy_filters(dst: *mut obs_source_t, src: *mut obs_source_t);
7196    pub fn obs_source_copy_single_filter(dst: *mut obs_source_t, filter: *mut obs_source_t);
7197    pub fn obs_source_enabled(source: *const obs_source_t) -> bool;
7198    pub fn obs_source_set_enabled(source: *mut obs_source_t, enabled: bool);
7199    pub fn obs_source_muted(source: *const obs_source_t) -> bool;
7200    pub fn obs_source_set_muted(source: *mut obs_source_t, muted: bool);
7201    pub fn obs_source_push_to_mute_enabled(source: *mut obs_source_t) -> bool;
7202    pub fn obs_source_enable_push_to_mute(source: *mut obs_source_t, enabled: bool);
7203    pub fn obs_source_get_push_to_mute_delay(source: *mut obs_source_t) -> u64;
7204    pub fn obs_source_set_push_to_mute_delay(source: *mut obs_source_t, delay: u64);
7205    pub fn obs_source_push_to_talk_enabled(source: *mut obs_source_t) -> bool;
7206    pub fn obs_source_enable_push_to_talk(source: *mut obs_source_t, enabled: bool);
7207    pub fn obs_source_get_push_to_talk_delay(source: *mut obs_source_t) -> u64;
7208    pub fn obs_source_set_push_to_talk_delay(source: *mut obs_source_t, delay: u64);
7209    pub fn obs_source_add_audio_pause_callback(
7210        source: *mut obs_source_t,
7211        callback: signal_callback_t,
7212        param: *mut ::std::os::raw::c_void,
7213    );
7214    pub fn obs_source_remove_audio_pause_callback(
7215        source: *mut obs_source_t,
7216        callback: signal_callback_t,
7217        param: *mut ::std::os::raw::c_void,
7218    );
7219    pub fn obs_source_add_audio_capture_callback(
7220        source: *mut obs_source_t,
7221        callback: obs_source_audio_capture_t,
7222        param: *mut ::std::os::raw::c_void,
7223    );
7224    pub fn obs_source_remove_audio_capture_callback(
7225        source: *mut obs_source_t,
7226        callback: obs_source_audio_capture_t,
7227        param: *mut ::std::os::raw::c_void,
7228    );
7229#[doc = " For an Audio Output Capture source (like 'wasapi_output_capture') used for 'Desktop Audio', this checks whether the\n device is also used for monitoring. A signal to obs core struct is then emitted to trigger deduplication  logic at\n the end of an audio tick."]
7230    pub fn obs_source_audio_output_capture_device_changed(
7231        source: *mut obs_source_t,
7232        device_id: *const ::std::os::raw::c_char,
7233    );
7234    pub fn obs_source_add_caption_callback(
7235        source: *mut obs_source_t,
7236        callback: obs_source_caption_t,
7237        param: *mut ::std::os::raw::c_void,
7238    );
7239    pub fn obs_source_remove_caption_callback(
7240        source: *mut obs_source_t,
7241        callback: obs_source_caption_t,
7242        param: *mut ::std::os::raw::c_void,
7243    );
7244    pub fn obs_source_set_deinterlace_mode(source: *mut obs_source_t, mode: obs_deinterlace_mode);
7245    pub fn obs_source_get_deinterlace_mode(source: *const obs_source_t) -> obs_deinterlace_mode;
7246    pub fn obs_source_set_deinterlace_field_order(
7247        source: *mut obs_source_t,
7248        field_order: obs_deinterlace_field_order,
7249    );
7250    pub fn obs_source_get_deinterlace_field_order(
7251        source: *const obs_source_t,
7252    ) -> obs_deinterlace_field_order;
7253    pub fn obs_source_set_monitoring_type(source: *mut obs_source_t, type_: obs_monitoring_type);
7254    pub fn obs_source_get_monitoring_type(source: *const obs_source_t) -> obs_monitoring_type;
7255#[doc = " Gets private front-end settings data.  This data is saved/loaded\n automatically.  Returns an incremented reference."]
7256    pub fn obs_source_get_private_settings(item: *mut obs_source_t) -> *mut obs_data_t;
7257    pub fn obs_source_backup_filters(source: *mut obs_source_t) -> *mut obs_data_array_t;
7258    pub fn obs_source_restore_filters(source: *mut obs_source_t, array: *mut obs_data_array_t);
7259    pub fn obs_source_get_type_data(source: *mut obs_source_t) -> *mut ::std::os::raw::c_void;
7260#[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."]
7261    pub fn obs_source_draw_set_color_matrix(
7262        color_matrix: *const matrix4,
7263        color_range_min: *const vec3,
7264        color_range_max: *const vec3,
7265    );
7266#[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."]
7267    pub fn obs_source_draw(
7268        image: *mut gs_texture_t,
7269        x: ::std::os::raw::c_int,
7270        y: ::std::os::raw::c_int,
7271        cx: u32,
7272        cy: u32,
7273        flip: bool,
7274    );
7275#[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."]
7276    pub fn obs_source_output_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7277    pub fn obs_source_output_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7278    pub fn obs_source_set_async_rotation(
7279        source: *mut obs_source_t,
7280        rotation: ::std::os::raw::c_long,
7281    );
7282    pub fn obs_source_output_cea708(source: *mut obs_source_t, captions: *const obs_source_cea_708);
7283#[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."]
7284    pub fn obs_source_preload_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7285    pub fn obs_source_preload_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7286#[doc = " Shows any preloaded video data"]
7287    pub fn obs_source_show_preloaded_video(source: *mut obs_source_t);
7288#[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."]
7289    pub fn obs_source_set_video_frame(source: *mut obs_source_t, frame: *const obs_source_frame);
7290    pub fn obs_source_set_video_frame2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7291#[doc = " Outputs audio data (always asynchronous)"]
7292    pub fn obs_source_output_audio(source: *mut obs_source_t, audio: *const obs_source_audio);
7293#[doc = " Signal an update to any currently used properties via 'update_properties'"]
7294    pub fn obs_source_update_properties(source: *mut obs_source_t);
7295#[doc = " Gets the current async video frame"]
7296    pub fn obs_source_get_frame(source: *mut obs_source_t) -> *mut obs_source_frame;
7297#[doc = " Releases the current async video frame"]
7298    pub fn obs_source_release_frame(source: *mut obs_source_t, frame: *mut obs_source_frame);
7299#[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."]
7300    pub fn obs_source_process_filter_begin(
7301        filter: *mut obs_source_t,
7302        format: gs_color_format,
7303        allow_direct: obs_allow_direct_render,
7304    ) -> bool;
7305    pub fn obs_source_process_filter_begin_with_color_space(
7306        filter: *mut obs_source_t,
7307        format: gs_color_format,
7308        space: gs_color_space,
7309        allow_direct: obs_allow_direct_render,
7310    ) -> bool;
7311#[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."]
7312    pub fn obs_source_process_filter_end(
7313        filter: *mut obs_source_t,
7314        effect: *mut gs_effect_t,
7315        width: u32,
7316        height: u32,
7317    );
7318#[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."]
7319    pub fn obs_source_process_filter_tech_end(
7320        filter: *mut obs_source_t,
7321        effect: *mut gs_effect_t,
7322        width: u32,
7323        height: u32,
7324        tech_name: *const ::std::os::raw::c_char,
7325    );
7326#[doc = " Skips the filter if the filter is invalid and cannot be rendered"]
7327    pub fn obs_source_skip_video_filter(filter: *mut obs_source_t);
7328#[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"]
7329    pub fn obs_source_add_active_child(parent: *mut obs_source_t, child: *mut obs_source_t)
7330    -> bool;
7331#[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."]
7332    pub fn obs_source_remove_active_child(parent: *mut obs_source_t, child: *mut obs_source_t);
7333#[doc = " Sends a mouse down/up event to a source"]
7334    pub fn obs_source_send_mouse_click(
7335        source: *mut obs_source_t,
7336        event: *const obs_mouse_event,
7337        type_: i32,
7338        mouse_up: bool,
7339        click_count: u32,
7340    );
7341#[doc = " Sends a mouse move event to a source."]
7342    pub fn obs_source_send_mouse_move(
7343        source: *mut obs_source_t,
7344        event: *const obs_mouse_event,
7345        mouse_leave: bool,
7346    );
7347#[doc = " Sends a mouse wheel event to a source"]
7348    pub fn obs_source_send_mouse_wheel(
7349        source: *mut obs_source_t,
7350        event: *const obs_mouse_event,
7351        x_delta: ::std::os::raw::c_int,
7352        y_delta: ::std::os::raw::c_int,
7353    );
7354#[doc = " Sends a got-focus or lost-focus event to a source"]
7355    pub fn obs_source_send_focus(source: *mut obs_source_t, focus: bool);
7356#[doc = " Sends a key up/down event to a source"]
7357    pub fn obs_source_send_key_click(
7358        source: *mut obs_source_t,
7359        event: *const obs_key_event,
7360        key_up: bool,
7361    );
7362#[doc = " Sets the default source flags."]
7363    pub fn obs_source_set_default_flags(source: *mut obs_source_t, flags: u32);
7364#[doc = " Gets the base width for a source (not taking in to account filtering)"]
7365    pub fn obs_source_get_base_width(source: *mut obs_source_t) -> u32;
7366#[doc = " Gets the base height for a source (not taking in to account filtering)"]
7367    pub fn obs_source_get_base_height(source: *mut obs_source_t) -> u32;
7368    pub fn obs_source_audio_pending(source: *const obs_source_t) -> bool;
7369    pub fn obs_source_get_audio_timestamp(source: *const obs_source_t) -> u64;
7370    pub fn obs_source_get_audio_mix(source: *const obs_source_t, audio: *mut obs_source_audio_mix);
7371    pub fn obs_source_set_async_unbuffered(source: *mut obs_source_t, unbuffered: bool);
7372    pub fn obs_source_async_unbuffered(source: *const obs_source_t) -> bool;
7373#[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."]
7374    pub fn obs_source_set_async_decoupled(source: *mut obs_source_t, decouple: bool);
7375    pub fn obs_source_async_decoupled(source: *const obs_source_t) -> bool;
7376    pub fn obs_source_set_audio_active(source: *mut obs_source_t, show: bool);
7377    pub fn obs_source_audio_active(source: *const obs_source_t) -> bool;
7378    pub fn obs_source_get_last_obs_version(source: *const obs_source_t) -> u32;
7379#[doc = " Media controls"]
7380    pub fn obs_source_media_play_pause(source: *mut obs_source_t, pause: bool);
7381    pub fn obs_source_media_restart(source: *mut obs_source_t);
7382    pub fn obs_source_media_stop(source: *mut obs_source_t);
7383    pub fn obs_source_media_next(source: *mut obs_source_t);
7384    pub fn obs_source_media_previous(source: *mut obs_source_t);
7385    pub fn obs_source_media_get_duration(source: *mut obs_source_t) -> i64;
7386    pub fn obs_source_media_get_time(source: *mut obs_source_t) -> i64;
7387    pub fn obs_source_media_set_time(source: *mut obs_source_t, ms: i64);
7388    pub fn obs_source_media_get_state(source: *mut obs_source_t) -> obs_media_state;
7389    pub fn obs_source_media_started(source: *mut obs_source_t);
7390    pub fn obs_source_media_ended(source: *mut obs_source_t);
7391#[doc = " Get canvas this source belongs to (reference incremented)"]
7392    pub fn obs_source_get_canvas(source: *const obs_source_t) -> *mut obs_canvas_t;
7393    pub fn obs_transition_get_source(
7394        transition: *mut obs_source_t,
7395        target: obs_transition_target,
7396    ) -> *mut obs_source_t;
7397    pub fn obs_transition_clear(transition: *mut obs_source_t);
7398    pub fn obs_transition_get_active_source(transition: *mut obs_source_t) -> *mut obs_source_t;
7399    pub fn obs_transition_start(
7400        transition: *mut obs_source_t,
7401        mode: obs_transition_mode,
7402        duration_ms: u32,
7403        dest: *mut obs_source_t,
7404    ) -> bool;
7405    pub fn obs_transition_set(transition: *mut obs_source_t, source: *mut obs_source_t);
7406    pub fn obs_transition_set_manual_time(transition: *mut obs_source_t, t: f32);
7407    pub fn obs_transition_set_manual_torque(transition: *mut obs_source_t, torque: f32, clamp: f32);
7408    pub fn obs_transition_set_scale_type(
7409        transition: *mut obs_source_t,
7410        type_: obs_transition_scale_type,
7411    );
7412    pub fn obs_transition_get_scale_type(
7413        transition: *const obs_source_t,
7414    ) -> obs_transition_scale_type;
7415    pub fn obs_transition_set_alignment(transition: *mut obs_source_t, alignment: u32);
7416    pub fn obs_transition_get_alignment(transition: *const obs_source_t) -> u32;
7417    pub fn obs_transition_set_size(transition: *mut obs_source_t, cx: u32, cy: u32);
7418    pub fn obs_transition_get_size(transition: *const obs_source_t, cx: *mut u32, cy: *mut u32);
7419    pub fn obs_transition_is_active(transition: *mut obs_source_t) -> bool;
7420#[doc = " Enables fixed transitions (videos or specific types of transitions that\n are of fixed duration and linearly interpolated"]
7421    pub fn obs_transition_enable_fixed(
7422        transition: *mut obs_source_t,
7423        enable: bool,
7424        duration_ms: u32,
7425    );
7426    pub fn obs_transition_fixed(transition: *mut obs_source_t) -> bool;
7427    pub fn obs_transition_get_time(transition: *mut obs_source_t) -> f32;
7428    pub fn obs_transition_force_stop(transition: *mut obs_source_t);
7429    pub fn obs_transition_video_render(
7430        transition: *mut obs_source_t,
7431        callback: obs_transition_video_render_callback_t,
7432    );
7433    pub fn obs_transition_video_render2(
7434        transition: *mut obs_source_t,
7435        callback: obs_transition_video_render_callback_t,
7436        placeholder_texture: *mut gs_texture_t,
7437    );
7438    pub fn obs_transition_video_get_color_space(transition: *mut obs_source_t) -> gs_color_space;
7439#[doc = " Directly renders its sub-source instead of to texture.  Returns false if no\n longer transitioning"]
7440    pub fn obs_transition_video_render_direct(
7441        transition: *mut obs_source_t,
7442        target: obs_transition_target,
7443    ) -> bool;
7444    pub fn obs_transition_audio_render(
7445        transition: *mut obs_source_t,
7446        ts_out: *mut u64,
7447        audio: *mut obs_source_audio_mix,
7448        mixers: u32,
7449        channels: usize,
7450        sample_rate: usize,
7451        mix_a_callback: obs_transition_audio_mix_callback_t,
7452        mix_b_callback: obs_transition_audio_mix_callback_t,
7453    ) -> bool;
7454    pub fn obs_transition_swap_begin(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7455    pub fn obs_transition_swap_end(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7456#[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."]
7457    pub fn obs_scene_create(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7458    pub fn obs_scene_create_private(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7459#[doc = " Duplicates a scene."]
7460    pub fn obs_scene_duplicate(
7461        scene: *mut obs_scene_t,
7462        name: *const ::std::os::raw::c_char,
7463        type_: obs_scene_duplicate_type,
7464    ) -> *mut obs_scene_t;
7465    pub fn obs_scene_release(scene: *mut obs_scene_t);
7466    pub fn obs_scene_get_ref(scene: *mut obs_scene_t) -> *mut obs_scene_t;
7467#[doc = " Gets the scene's source context"]
7468    pub fn obs_scene_get_source(scene: *const obs_scene_t) -> *mut obs_source_t;
7469#[doc = " Gets the scene from its source, or NULL if not a scene"]
7470    pub fn obs_scene_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7471#[doc = " Determines whether a source is within a scene"]
7472    pub fn obs_scene_find_source(
7473        scene: *mut obs_scene_t,
7474        name: *const ::std::os::raw::c_char,
7475    ) -> *mut obs_sceneitem_t;
7476    pub fn obs_scene_find_source_recursive(
7477        scene: *mut obs_scene_t,
7478        name: *const ::std::os::raw::c_char,
7479    ) -> *mut obs_sceneitem_t;
7480    pub fn obs_scene_find_sceneitem_by_id(scene: *mut obs_scene_t, id: i64)
7481    -> *mut obs_sceneitem_t;
7482#[doc = " Enumerates sources within a scene"]
7483    pub fn obs_scene_enum_items(
7484        scene: *mut obs_scene_t,
7485        callback: ::std::option::Option<
7486            unsafe extern "C" fn(
7487                arg1: *mut obs_scene_t,
7488                arg2: *mut obs_sceneitem_t,
7489                arg3: *mut ::std::os::raw::c_void,
7490            ) -> bool,
7491        >,
7492        param: *mut ::std::os::raw::c_void,
7493    );
7494    pub fn obs_scene_reorder_items(
7495        scene: *mut obs_scene_t,
7496        item_order: *const *mut obs_sceneitem_t,
7497        item_order_size: usize,
7498    ) -> bool;
7499    pub fn obs_scene_reorder_items2(
7500        scene: *mut obs_scene_t,
7501        item_order: *mut obs_sceneitem_order_info,
7502        item_order_size: usize,
7503    ) -> bool;
7504    pub fn obs_source_is_scene(source: *const obs_source_t) -> bool;
7505    pub fn obs_source_type_is_scene(id: *const ::std::os::raw::c_char) -> bool;
7506#[doc = " Adds/creates a new scene item for a source"]
7507    pub fn obs_scene_add(
7508        scene: *mut obs_scene_t,
7509        source: *mut obs_source_t,
7510    ) -> *mut obs_sceneitem_t;
7511    pub fn obs_scene_atomic_update(
7512        scene: *mut obs_scene_t,
7513        func: obs_scene_atomic_update_func,
7514        data: *mut ::std::os::raw::c_void,
7515    );
7516    pub fn obs_sceneitem_addref(item: *mut obs_sceneitem_t);
7517    pub fn obs_sceneitem_release(item: *mut obs_sceneitem_t);
7518#[doc = " Removes a scene item."]
7519    pub fn obs_sceneitem_remove(item: *mut obs_sceneitem_t);
7520#[doc = " Adds a scene item."]
7521    pub fn obs_sceneitems_add(scene: *mut obs_scene_t, data: *mut obs_data_array_t);
7522#[doc = " Saves Sceneitem into an array, arr"]
7523    pub fn obs_sceneitem_save(item: *mut obs_sceneitem_t, arr: *mut obs_data_array_t);
7524#[doc = " Set the ID of a sceneitem"]
7525    pub fn obs_sceneitem_set_id(sceneitem: *mut obs_sceneitem_t, id: i64);
7526#[doc = " Save all the transform states for a current scene's sceneitems"]
7527    pub fn obs_scene_save_transform_states(
7528        scene: *mut obs_scene_t,
7529        all_items: bool,
7530    ) -> *mut obs_data_t;
7531#[doc = " Load all the transform states of sceneitems in that scene"]
7532    pub fn obs_scene_load_transform_states(state: *const ::std::os::raw::c_char);
7533#[doc = "  Gets a sceneitem's order in its scene"]
7534    pub fn obs_sceneitem_get_order_position(item: *mut obs_sceneitem_t) -> ::std::os::raw::c_int;
7535#[doc = " Gets the scene parent associated with the scene item."]
7536    pub fn obs_sceneitem_get_scene(item: *const obs_sceneitem_t) -> *mut obs_scene_t;
7537#[doc = " Gets the source of a scene item."]
7538    pub fn obs_sceneitem_get_source(item: *const obs_sceneitem_t) -> *mut obs_source_t;
7539    pub fn obs_sceneitem_select(item: *mut obs_sceneitem_t, select: bool);
7540    pub fn obs_sceneitem_selected(item: *const obs_sceneitem_t) -> bool;
7541    pub fn obs_sceneitem_locked(item: *const obs_sceneitem_t) -> bool;
7542    pub fn obs_sceneitem_set_locked(item: *mut obs_sceneitem_t, lock: bool) -> bool;
7543    pub fn obs_sceneitem_set_pos(item: *mut obs_sceneitem_t, pos: *const vec2);
7544    pub fn obs_sceneitem_set_rot(item: *mut obs_sceneitem_t, rot_deg: f32);
7545    pub fn obs_sceneitem_set_scale(item: *mut obs_sceneitem_t, scale: *const vec2);
7546    pub fn obs_sceneitem_set_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7547    pub fn obs_sceneitem_set_order(item: *mut obs_sceneitem_t, movement: obs_order_movement);
7548    pub fn obs_sceneitem_set_order_position(
7549        item: *mut obs_sceneitem_t,
7550        position: ::std::os::raw::c_int,
7551    );
7552    pub fn obs_sceneitem_set_bounds_type(item: *mut obs_sceneitem_t, type_: obs_bounds_type);
7553    pub fn obs_sceneitem_set_bounds_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7554    pub fn obs_sceneitem_set_bounds_crop(item: *mut obs_sceneitem_t, crop: bool);
7555    pub fn obs_sceneitem_set_bounds(item: *mut obs_sceneitem_t, bounds: *const vec2);
7556    pub fn obs_sceneitem_get_id(item: *const obs_sceneitem_t) -> i64;
7557    pub fn obs_sceneitem_get_pos(item: *const obs_sceneitem_t, pos: *mut vec2);
7558    pub fn obs_sceneitem_get_rot(item: *const obs_sceneitem_t) -> f32;
7559    pub fn obs_sceneitem_get_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7560    pub fn obs_sceneitem_get_alignment(item: *const obs_sceneitem_t) -> u32;
7561    pub fn obs_sceneitem_get_bounds_type(item: *const obs_sceneitem_t) -> obs_bounds_type;
7562    pub fn obs_sceneitem_get_bounds_alignment(item: *const obs_sceneitem_t) -> u32;
7563    pub fn obs_sceneitem_get_bounds_crop(item: *const obs_sceneitem_t) -> bool;
7564    pub fn obs_sceneitem_get_bounds(item: *const obs_sceneitem_t, bounds: *mut vec2);
7565    pub fn obs_sceneitem_get_info2(item: *const obs_sceneitem_t, info: *mut obs_transform_info);
7566    pub fn obs_sceneitem_set_info2(item: *mut obs_sceneitem_t, info: *const obs_transform_info);
7567    pub fn obs_sceneitem_get_draw_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7568    pub fn obs_sceneitem_get_box_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7569    pub fn obs_sceneitem_get_box_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7570    pub fn obs_sceneitem_visible(item: *const obs_sceneitem_t) -> bool;
7571    pub fn obs_sceneitem_set_visible(item: *mut obs_sceneitem_t, visible: bool) -> bool;
7572    pub fn obs_sceneitem_set_crop(item: *mut obs_sceneitem_t, crop: *const obs_sceneitem_crop);
7573    pub fn obs_sceneitem_get_crop(item: *const obs_sceneitem_t, crop: *mut obs_sceneitem_crop);
7574    pub fn obs_sceneitem_set_scale_filter(item: *mut obs_sceneitem_t, filter: obs_scale_type);
7575    pub fn obs_sceneitem_get_scale_filter(item: *mut obs_sceneitem_t) -> obs_scale_type;
7576    pub fn obs_sceneitem_set_blending_method(
7577        item: *mut obs_sceneitem_t,
7578        method: obs_blending_method,
7579    );
7580    pub fn obs_sceneitem_get_blending_method(item: *mut obs_sceneitem_t) -> obs_blending_method;
7581    pub fn obs_sceneitem_set_blending_mode(item: *mut obs_sceneitem_t, type_: obs_blending_type);
7582    pub fn obs_sceneitem_get_blending_mode(item: *mut obs_sceneitem_t) -> obs_blending_type;
7583    pub fn obs_sceneitem_force_update_transform(item: *mut obs_sceneitem_t);
7584    pub fn obs_sceneitem_defer_update_begin(item: *mut obs_sceneitem_t);
7585    pub fn obs_sceneitem_defer_update_end(item: *mut obs_sceneitem_t);
7586#[doc = " Gets private front-end settings data.  This data is saved/loaded\n automatically.  Returns an incremented reference."]
7587    pub fn obs_sceneitem_get_private_settings(item: *mut obs_sceneitem_t) -> *mut obs_data_t;
7588    pub fn obs_scene_add_group(
7589        scene: *mut obs_scene_t,
7590        name: *const ::std::os::raw::c_char,
7591    ) -> *mut obs_sceneitem_t;
7592    pub fn obs_scene_insert_group(
7593        scene: *mut obs_scene_t,
7594        name: *const ::std::os::raw::c_char,
7595        items: *mut *mut obs_sceneitem_t,
7596        count: usize,
7597    ) -> *mut obs_sceneitem_t;
7598    pub fn obs_scene_add_group2(
7599        scene: *mut obs_scene_t,
7600        name: *const ::std::os::raw::c_char,
7601        signal: bool,
7602    ) -> *mut obs_sceneitem_t;
7603    pub fn obs_scene_insert_group2(
7604        scene: *mut obs_scene_t,
7605        name: *const ::std::os::raw::c_char,
7606        items: *mut *mut obs_sceneitem_t,
7607        count: usize,
7608        signal: bool,
7609    ) -> *mut obs_sceneitem_t;
7610    pub fn obs_scene_get_group(
7611        scene: *mut obs_scene_t,
7612        name: *const ::std::os::raw::c_char,
7613    ) -> *mut obs_sceneitem_t;
7614    pub fn obs_sceneitem_is_group(item: *mut obs_sceneitem_t) -> bool;
7615    pub fn obs_sceneitem_group_get_scene(group: *const obs_sceneitem_t) -> *mut obs_scene_t;
7616    pub fn obs_sceneitem_group_ungroup(group: *mut obs_sceneitem_t);
7617    pub fn obs_sceneitem_group_ungroup2(group: *mut obs_sceneitem_t, signal: bool);
7618    pub fn obs_sceneitem_group_add_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7619    pub fn obs_sceneitem_group_remove_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7620    pub fn obs_sceneitem_get_group(
7621        scene: *mut obs_scene_t,
7622        item: *mut obs_sceneitem_t,
7623    ) -> *mut obs_sceneitem_t;
7624    pub fn obs_source_is_group(source: *const obs_source_t) -> bool;
7625    pub fn obs_source_type_is_group(id: *const ::std::os::raw::c_char) -> bool;
7626    pub fn obs_scene_is_group(scene: *const obs_scene_t) -> bool;
7627    pub fn obs_sceneitem_group_enum_items(
7628        group: *mut obs_sceneitem_t,
7629        callback: ::std::option::Option<
7630            unsafe extern "C" fn(
7631                arg1: *mut obs_scene_t,
7632                arg2: *mut obs_sceneitem_t,
7633                arg3: *mut ::std::os::raw::c_void,
7634            ) -> bool,
7635        >,
7636        param: *mut ::std::os::raw::c_void,
7637    );
7638#[doc = " Gets the group from its source, or NULL if not a group"]
7639    pub fn obs_group_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7640    pub fn obs_sceneitem_defer_group_resize_begin(item: *mut obs_sceneitem_t);
7641    pub fn obs_sceneitem_defer_group_resize_end(item: *mut obs_sceneitem_t);
7642    pub fn obs_sceneitem_set_transition(
7643        item: *mut obs_sceneitem_t,
7644        show: bool,
7645        transition: *mut obs_source_t,
7646    );
7647    pub fn obs_sceneitem_get_transition(
7648        item: *mut obs_sceneitem_t,
7649        show: bool,
7650    ) -> *mut obs_source_t;
7651    pub fn obs_sceneitem_set_transition_duration(
7652        item: *mut obs_sceneitem_t,
7653        show: bool,
7654        duration_ms: u32,
7655    );
7656    pub fn obs_sceneitem_get_transition_duration(item: *mut obs_sceneitem_t, show: bool) -> u32;
7657    pub fn obs_sceneitem_do_transition(item: *mut obs_sceneitem_t, visible: bool);
7658    pub fn obs_sceneitem_transition_load(
7659        item: *mut obs_scene_item,
7660        data: *mut obs_data_t,
7661        show: bool,
7662    );
7663    pub fn obs_sceneitem_transition_save(item: *mut obs_scene_item, show: bool) -> *mut obs_data_t;
7664    pub fn obs_scene_prune_sources(scene: *mut obs_scene_t);
7665    pub fn obs_output_get_display_name(
7666        id: *const ::std::os::raw::c_char,
7667    ) -> *const ::std::os::raw::c_char;
7668#[doc = " Returns a pointer to the module which provides the output"]
7669    pub fn obs_output_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7670#[doc = " Returns the load state of a output's module given the id"]
7671    pub fn obs_output_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7672#[doc = " Creates an output.\n\n   Outputs allow outputting to file, outputting to network, outputting to\n directshow, or other custom outputs."]
7673    pub fn obs_output_create(
7674        id: *const ::std::os::raw::c_char,
7675        name: *const ::std::os::raw::c_char,
7676        settings: *mut obs_data_t,
7677        hotkey_data: *mut obs_data_t,
7678    ) -> *mut obs_output_t;
7679#[doc = " Adds/releases a reference to an output.  When the last reference is\n released, the output is destroyed."]
7680    pub fn obs_output_release(output: *mut obs_output_t);
7681    pub fn obs_weak_output_addref(weak: *mut obs_weak_output_t);
7682    pub fn obs_weak_output_release(weak: *mut obs_weak_output_t);
7683    pub fn obs_output_get_ref(output: *mut obs_output_t) -> *mut obs_output_t;
7684    pub fn obs_output_get_weak_output(output: *mut obs_output_t) -> *mut obs_weak_output_t;
7685    pub fn obs_weak_output_get_output(weak: *mut obs_weak_output_t) -> *mut obs_output_t;
7686    pub fn obs_weak_output_references_output(
7687        weak: *mut obs_weak_output_t,
7688        output: *mut obs_output_t,
7689    ) -> bool;
7690    pub fn obs_output_get_name(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7691#[doc = " Starts the output."]
7692    pub fn obs_output_start(output: *mut obs_output_t) -> bool;
7693#[doc = " Stops the output."]
7694    pub fn obs_output_stop(output: *mut obs_output_t);
7695#[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."]
7696    pub fn obs_output_set_delay(output: *mut obs_output_t, delay_sec: u32, flags: u32);
7697#[doc = " Gets the currently set delay value, in seconds."]
7698    pub fn obs_output_get_delay(output: *const obs_output_t) -> u32;
7699#[doc = " If delay is active, gets the currently active delay value, in seconds."]
7700    pub fn obs_output_get_active_delay(output: *const obs_output_t) -> u32;
7701#[doc = " Forces the output to stop.  Usually only used with delay."]
7702    pub fn obs_output_force_stop(output: *mut obs_output_t);
7703#[doc = " Returns whether the output is active"]
7704    pub fn obs_output_active(output: *const obs_output_t) -> bool;
7705#[doc = " Returns output capability flags"]
7706    pub fn obs_output_get_flags(output: *const obs_output_t) -> u32;
7707#[doc = " Returns output capability flags"]
7708    pub fn obs_get_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7709#[doc = " Gets the default settings for an output type"]
7710    pub fn obs_output_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7711#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
7712    pub fn obs_get_output_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7713#[doc = " Returns the property list of an existing output, if any.  Free with\n obs_properties_destroy"]
7714    pub fn obs_output_properties(output: *const obs_output_t) -> *mut obs_properties_t;
7715#[doc = " Updates the settings for this output context"]
7716    pub fn obs_output_update(output: *mut obs_output_t, settings: *mut obs_data_t);
7717#[doc = " Specifies whether the output can be paused"]
7718    pub fn obs_output_can_pause(output: *const obs_output_t) -> bool;
7719#[doc = " Pauses the output (if the functionality is allowed by the output"]
7720    pub fn obs_output_pause(output: *mut obs_output_t, pause: bool) -> bool;
7721#[doc = " Returns whether output is paused"]
7722    pub fn obs_output_paused(output: *const obs_output_t) -> bool;
7723    pub fn obs_output_get_settings(output: *const obs_output_t) -> *mut obs_data_t;
7724#[doc = " Returns the signal handler for an output"]
7725    pub fn obs_output_get_signal_handler(output: *const obs_output_t) -> *mut signal_handler_t;
7726#[doc = " Returns the procedure handler for an output"]
7727    pub fn obs_output_get_proc_handler(output: *const obs_output_t) -> *mut proc_handler_t;
7728#[doc = " Sets the current audio/video media contexts associated with this output,\n required for non-encoded outputs.  Can be null."]
7729    pub fn obs_output_set_media(
7730        output: *mut obs_output_t,
7731        video: *mut video_t,
7732        audio: *mut audio_t,
7733    );
7734#[doc = " Returns the video media context associated with this output"]
7735    pub fn obs_output_video(output: *const obs_output_t) -> *mut video_t;
7736#[doc = " Returns the audio media context associated with this output"]
7737    pub fn obs_output_audio(output: *const obs_output_t) -> *mut audio_t;
7738#[doc = " Sets the current audio mixer for non-encoded outputs"]
7739    pub fn obs_output_set_mixer(output: *mut obs_output_t, mixer_idx: usize);
7740#[doc = " Gets the current audio mixer for non-encoded outputs"]
7741    pub fn obs_output_get_mixer(output: *const obs_output_t) -> usize;
7742#[doc = " Sets the current audio mixes (mask) for a non-encoded multi-track output"]
7743    pub fn obs_output_set_mixers(output: *mut obs_output_t, mixers: usize);
7744#[doc = " Gets the current audio mixes (mask) for a non-encoded multi-track output"]
7745    pub fn obs_output_get_mixers(output: *const obs_output_t) -> usize;
7746#[doc = " Sets the current video encoder associated with this output,\n required for encoded outputs"]
7747    pub fn obs_output_set_video_encoder(output: *mut obs_output_t, encoder: *mut obs_encoder_t);
7748#[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."]
7749    pub fn obs_output_set_video_encoder2(
7750        output: *mut obs_output_t,
7751        encoder: *mut obs_encoder_t,
7752        idx: usize,
7753    );
7754#[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."]
7755    pub fn obs_output_set_audio_encoder(
7756        output: *mut obs_output_t,
7757        encoder: *mut obs_encoder_t,
7758        idx: usize,
7759    );
7760#[doc = " Returns the current video encoder associated with this output"]
7761    pub fn obs_output_get_video_encoder(output: *const obs_output_t) -> *mut obs_encoder_t;
7762#[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."]
7763    pub fn obs_output_get_video_encoder2(
7764        output: *const obs_output_t,
7765        idx: usize,
7766    ) -> *mut obs_encoder_t;
7767#[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."]
7768    pub fn obs_output_get_audio_encoder(
7769        output: *const obs_output_t,
7770        idx: usize,
7771    ) -> *mut obs_encoder_t;
7772#[doc = " Sets the current service associated with this output."]
7773    pub fn obs_output_set_service(output: *mut obs_output_t, service: *mut obs_service_t);
7774#[doc = " Gets the current service associated with this output."]
7775    pub fn obs_output_get_service(output: *const obs_output_t) -> *mut obs_service_t;
7776#[doc = " Sets the reconnect settings.  Set retry_count to 0 to disable reconnecting."]
7777    pub fn obs_output_set_reconnect_settings(
7778        output: *mut obs_output_t,
7779        retry_count: ::std::os::raw::c_int,
7780        retry_sec: ::std::os::raw::c_int,
7781    );
7782    pub fn obs_output_get_total_bytes(output: *const obs_output_t) -> u64;
7783    pub fn obs_output_get_frames_dropped(output: *const obs_output_t) -> ::std::os::raw::c_int;
7784    pub fn obs_output_get_total_frames(output: *const obs_output_t) -> ::std::os::raw::c_int;
7785#[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."]
7786    pub fn obs_output_set_preferred_size(output: *mut obs_output_t, width: u32, height: u32);
7787#[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."]
7788    pub fn obs_output_set_preferred_size2(
7789        output: *mut obs_output_t,
7790        width: u32,
7791        height: u32,
7792        idx: usize,
7793    );
7794#[doc = " For video outputs, returns the width of the encoded image"]
7795    pub fn obs_output_get_width(output: *const obs_output_t) -> u32;
7796#[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."]
7797    pub fn obs_output_get_width2(output: *const obs_output_t, idx: usize) -> u32;
7798#[doc = " For video outputs, returns the height of the encoded image"]
7799    pub fn obs_output_get_height(output: *const obs_output_t) -> u32;
7800#[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."]
7801    pub fn obs_output_get_height2(output: *const obs_output_t, idx: usize) -> u32;
7802    pub fn obs_output_get_id(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7803    pub fn obs_output_caption(output: *mut obs_output_t, captions: *const obs_source_cea_708);
7804    pub fn obs_output_output_caption_text1(
7805        output: *mut obs_output_t,
7806        text: *const ::std::os::raw::c_char,
7807    );
7808    pub fn obs_output_output_caption_text2(
7809        output: *mut obs_output_t,
7810        text: *const ::std::os::raw::c_char,
7811        display_duration: f64,
7812    );
7813    pub fn obs_output_get_congestion(output: *mut obs_output_t) -> f32;
7814    pub fn obs_output_get_connect_time_ms(output: *mut obs_output_t) -> ::std::os::raw::c_int;
7815    pub fn obs_output_reconnecting(output: *const obs_output_t) -> bool;
7816#[doc = " Pass a string of the last output error, for UI use"]
7817    pub fn obs_output_set_last_error(
7818        output: *mut obs_output_t,
7819        message: *const ::std::os::raw::c_char,
7820    );
7821    pub fn obs_output_get_last_error(output: *mut obs_output_t) -> *const ::std::os::raw::c_char;
7822    pub fn obs_output_get_supported_video_codecs(
7823        output: *const obs_output_t,
7824    ) -> *const ::std::os::raw::c_char;
7825    pub fn obs_output_get_supported_audio_codecs(
7826        output: *const obs_output_t,
7827    ) -> *const ::std::os::raw::c_char;
7828    pub fn obs_output_get_protocols(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7829    pub fn obs_is_output_protocol_registered(protocol: *const ::std::os::raw::c_char) -> bool;
7830    pub fn obs_enum_output_protocols(
7831        idx: usize,
7832        protocol: *mut *mut ::std::os::raw::c_char,
7833    ) -> bool;
7834    pub fn obs_enum_output_types_with_protocol(
7835        protocol: *const ::std::os::raw::c_char,
7836        data: *mut ::std::os::raw::c_void,
7837        enum_cb: ::std::option::Option<
7838            unsafe extern "C" fn(
7839                data: *mut ::std::os::raw::c_void,
7840                id: *const ::std::os::raw::c_char,
7841            ) -> bool,
7842        >,
7843    );
7844    pub fn obs_get_output_supported_video_codecs(
7845        id: *const ::std::os::raw::c_char,
7846    ) -> *const ::std::os::raw::c_char;
7847    pub fn obs_get_output_supported_audio_codecs(
7848        id: *const ::std::os::raw::c_char,
7849    ) -> *const ::std::os::raw::c_char;
7850    pub fn obs_output_add_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_remove_packet_callback(
7863        output: *mut obs_output_t,
7864        packet_cb: ::std::option::Option<
7865            unsafe extern "C" fn(
7866                output: *mut obs_output_t,
7867                pkt: *mut encoder_packet,
7868                pkt_time: *mut encoder_packet_time,
7869                param: *mut ::std::os::raw::c_void,
7870            ),
7871        >,
7872        param: *mut ::std::os::raw::c_void,
7873    );
7874    pub fn obs_output_set_reconnect_callback(
7875        output: *mut obs_output_t,
7876        reconnect_cb: ::std::option::Option<
7877            unsafe extern "C" fn(
7878                data: *mut ::std::os::raw::c_void,
7879                output: *mut obs_output_t,
7880                code: ::std::os::raw::c_int,
7881            ) -> bool,
7882        >,
7883        param: *mut ::std::os::raw::c_void,
7884    );
7885    pub fn obs_output_get_type_data(output: *mut obs_output_t) -> *mut ::std::os::raw::c_void;
7886#[doc = " Gets the video conversion info.  Used only for raw output"]
7887    pub fn obs_output_get_video_conversion(output: *mut obs_output_t) -> *const video_scale_info;
7888#[doc = " Optionally sets the video conversion info.  Used only for raw output"]
7889    pub fn obs_output_set_video_conversion(
7890        output: *mut obs_output_t,
7891        conversion: *const video_scale_info,
7892    );
7893#[doc = " Optionally sets the audio conversion info.  Used only for raw output"]
7894    pub fn obs_output_set_audio_conversion(
7895        output: *mut obs_output_t,
7896        conversion: *const audio_convert_info,
7897    );
7898#[doc = " Returns whether data capture can begin"]
7899    pub fn obs_output_can_begin_data_capture(output: *const obs_output_t, flags: u32) -> bool;
7900#[doc = " Initializes encoders (if any)"]
7901    pub fn obs_output_initialize_encoders(output: *mut obs_output_t, flags: u32) -> bool;
7902#[doc = " Begins data capture from media/encoders.\n\n @param  output  Output context\n @return         true if successful, false otherwise."]
7903    pub fn obs_output_begin_data_capture(output: *mut obs_output_t, flags: u32) -> bool;
7904#[doc = " Ends data capture from media/encoders"]
7905    pub fn obs_output_end_data_capture(output: *mut obs_output_t);
7906#[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)"]
7907    pub fn obs_output_signal_stop(output: *mut obs_output_t, code: ::std::os::raw::c_int);
7908    pub fn obs_output_get_pause_offset(output: *mut obs_output_t) -> u64;
7909    pub fn obs_encoder_get_display_name(
7910        id: *const ::std::os::raw::c_char,
7911    ) -> *const ::std::os::raw::c_char;
7912#[doc = " Returns a pointer to the module which provides the encoder"]
7913    pub fn obs_encoder_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7914#[doc = " Returns the load state of an encoder's module given the id"]
7915    pub fn obs_encoder_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7916#[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."]
7917    pub fn obs_video_encoder_create(
7918        id: *const ::std::os::raw::c_char,
7919        name: *const ::std::os::raw::c_char,
7920        settings: *mut obs_data_t,
7921        hotkey_data: *mut obs_data_t,
7922    ) -> *mut obs_encoder_t;
7923#[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."]
7924    pub fn obs_audio_encoder_create(
7925        id: *const ::std::os::raw::c_char,
7926        name: *const ::std::os::raw::c_char,
7927        settings: *mut obs_data_t,
7928        mixer_idx: usize,
7929        hotkey_data: *mut obs_data_t,
7930    ) -> *mut obs_encoder_t;
7931#[doc = " Adds/releases a reference to an encoder.  When the last reference is\n released, the encoder is destroyed."]
7932    pub fn obs_encoder_release(encoder: *mut obs_encoder_t);
7933    pub fn obs_weak_encoder_addref(weak: *mut obs_weak_encoder_t);
7934    pub fn obs_weak_encoder_release(weak: *mut obs_weak_encoder_t);
7935    pub fn obs_encoder_get_ref(encoder: *mut obs_encoder_t) -> *mut obs_encoder_t;
7936    pub fn obs_encoder_get_weak_encoder(encoder: *mut obs_encoder_t) -> *mut obs_weak_encoder_t;
7937    pub fn obs_weak_encoder_get_encoder(weak: *mut obs_weak_encoder_t) -> *mut obs_encoder_t;
7938    pub fn obs_weak_encoder_references_encoder(
7939        weak: *mut obs_weak_encoder_t,
7940        encoder: *mut obs_encoder_t,
7941    ) -> bool;
7942    pub fn obs_encoder_set_name(encoder: *mut obs_encoder_t, name: *const ::std::os::raw::c_char);
7943    pub fn obs_encoder_get_name(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7944#[doc = " Returns the codec of an encoder by the id"]
7945    pub fn obs_get_encoder_codec(
7946        id: *const ::std::os::raw::c_char,
7947    ) -> *const ::std::os::raw::c_char;
7948#[doc = " Returns the type of an encoder by the id"]
7949    pub fn obs_get_encoder_type(id: *const ::std::os::raw::c_char) -> obs_encoder_type;
7950#[doc = " Returns the codec of the encoder"]
7951    pub fn obs_encoder_get_codec(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7952#[doc = " Returns the type of an encoder"]
7953    pub fn obs_encoder_get_type(encoder: *const obs_encoder_t) -> obs_encoder_type;
7954#[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."]
7955    pub fn obs_encoder_set_scaled_size(encoder: *mut obs_encoder_t, width: u32, height: u32);
7956#[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."]
7957    pub fn obs_encoder_set_gpu_scale_type(
7958        encoder: *mut obs_encoder_t,
7959        gpu_scale_type: obs_scale_type,
7960    );
7961#[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"]
7962    pub fn obs_encoder_set_frame_rate_divisor(encoder: *mut obs_encoder_t, divisor: u32) -> bool;
7963#[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."]
7964    pub fn obs_encoder_add_roi(encoder: *mut obs_encoder_t, roi: *const obs_encoder_roi) -> bool;
7965#[doc = " For video encoders, returns true if any ROIs were set"]
7966    pub fn obs_encoder_has_roi(encoder: *const obs_encoder_t) -> bool;
7967#[doc = " Clear all regions"]
7968    pub fn obs_encoder_clear_roi(encoder: *mut obs_encoder_t);
7969#[doc = " Enumerate regions with callback (reverse order of addition)"]
7970    pub fn obs_encoder_enum_roi(
7971        encoder: *mut obs_encoder_t,
7972        enum_proc: ::std::option::Option<
7973            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut obs_encoder_roi),
7974        >,
7975        param: *mut ::std::os::raw::c_void,
7976    );
7977#[doc = " Get ROI increment, encoders must rebuild their ROI map if it has changed"]
7978    pub fn obs_encoder_get_roi_increment(encoder: *const obs_encoder_t) -> u32;
7979#[doc = " For video encoders, returns true if pre-encode scaling is enabled"]
7980    pub fn obs_encoder_scaling_enabled(encoder: *const obs_encoder_t) -> bool;
7981#[doc = " For video encoders, returns the width of the encoded image"]
7982    pub fn obs_encoder_get_width(encoder: *const obs_encoder_t) -> u32;
7983#[doc = " For video encoders, returns the height of the encoded image"]
7984    pub fn obs_encoder_get_height(encoder: *const obs_encoder_t) -> u32;
7985#[doc = " For video encoders, returns whether GPU scaling is enabled"]
7986    pub fn obs_encoder_gpu_scaling_enabled(encoder: *mut obs_encoder_t) -> bool;
7987#[doc = " For video encoders, returns GPU scaling type"]
7988    pub fn obs_encoder_get_scale_type(encoder: *mut obs_encoder_t) -> obs_scale_type;
7989#[doc = " For video encoders, returns the frame rate divisor (default is 1)"]
7990    pub fn obs_encoder_get_frame_rate_divisor(encoder: *const obs_encoder_t) -> u32;
7991#[doc = " For video encoders, returns the number of frames encoded"]
7992    pub fn obs_encoder_get_encoded_frames(encoder: *const obs_encoder_t) -> u32;
7993#[doc = " For audio encoders, returns the sample rate of the audio"]
7994    pub fn obs_encoder_get_sample_rate(encoder: *const obs_encoder_t) -> u32;
7995#[doc = " For audio encoders, returns the frame size of the audio packet"]
7996    pub fn obs_encoder_get_frame_size(encoder: *const obs_encoder_t) -> usize;
7997#[doc = " For audio encoders, returns the mixer index"]
7998    pub fn obs_encoder_get_mixer_index(encoder: *const obs_encoder_t) -> usize;
7999    pub fn obs_encoder_get_priming_samples(encoder: *const obs_encoder_t) -> u32;
8000#[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."]
8001    pub fn obs_encoder_set_preferred_video_format(
8002        encoder: *mut obs_encoder_t,
8003        format: video_format,
8004    );
8005    pub fn obs_encoder_get_preferred_video_format(encoder: *const obs_encoder_t) -> video_format;
8006#[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."]
8007    pub fn obs_encoder_set_preferred_color_space(
8008        encoder: *mut obs_encoder_t,
8009        colorspace: video_colorspace,
8010    );
8011    pub fn obs_encoder_get_preferred_color_space(encoder: *const obs_encoder_t)
8012    -> video_colorspace;
8013#[doc = " Sets the preferred range for an encoder.\n\n Only supported when GPU scaling is enabled."]
8014    pub fn obs_encoder_set_preferred_range(encoder: *mut obs_encoder_t, range: video_range_type);
8015    pub fn obs_encoder_get_preferred_range(encoder: *const obs_encoder_t) -> video_range_type;
8016#[doc = " Gets the default settings for an encoder type"]
8017    pub fn obs_encoder_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8018    pub fn obs_encoder_get_defaults(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8019#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
8020    pub fn obs_get_encoder_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8021#[doc = " Returns the property list of an existing encoder, if any.  Free with\n obs_properties_destroy"]
8022    pub fn obs_encoder_properties(encoder: *const obs_encoder_t) -> *mut obs_properties_t;
8023#[doc = " Updates the settings of the encoder context.  Usually used for changing\n bitrate while active"]
8024    pub fn obs_encoder_update(encoder: *mut obs_encoder_t, settings: *mut obs_data_t);
8025#[doc = " Gets extra data (headers) associated with this context"]
8026    pub fn obs_encoder_get_extra_data(
8027        encoder: *const obs_encoder_t,
8028        extra_data: *mut *mut u8,
8029        size: *mut usize,
8030    ) -> bool;
8031#[doc = " Returns the current settings for this encoder"]
8032    pub fn obs_encoder_get_settings(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8033#[doc = " Sets the video output context to be used with this encoder"]
8034    pub fn obs_encoder_set_video(encoder: *mut obs_encoder_t, video: *mut video_t);
8035#[doc = " Sets the audio output context to be used with this encoder"]
8036    pub fn obs_encoder_set_audio(encoder: *mut obs_encoder_t, audio: *mut audio_t);
8037#[doc = " Returns the video output context used with this encoder, or NULL if not\n a video context"]
8038    pub fn obs_encoder_video(encoder: *const obs_encoder_t) -> *mut video_t;
8039#[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."]
8040    pub fn obs_encoder_parent_video(encoder: *const obs_encoder_t) -> *mut video_t;
8041#[doc = " Returns if the encoder's video output context supports shared textures for the specified video format."]
8042    pub fn obs_encoder_video_tex_active(
8043        encoder: *const obs_encoder_t,
8044        format: video_format,
8045    ) -> bool;
8046#[doc = " Returns the audio output context used with this encoder, or NULL if not\n a audio context"]
8047    pub fn obs_encoder_audio(encoder: *const obs_encoder_t) -> *mut audio_t;
8048#[doc = " Returns true if encoder is active, false otherwise"]
8049    pub fn obs_encoder_active(encoder: *const obs_encoder_t) -> bool;
8050    pub fn obs_encoder_get_type_data(encoder: *mut obs_encoder_t) -> *mut ::std::os::raw::c_void;
8051    pub fn obs_encoder_get_id(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
8052    pub fn obs_get_encoder_caps(encoder_id: *const ::std::os::raw::c_char) -> u32;
8053    pub fn obs_encoder_get_caps(encoder: *const obs_encoder_t) -> u32;
8054    pub fn obs_encoder_packet_ref(dst: *mut encoder_packet, src: *mut encoder_packet);
8055    pub fn obs_encoder_packet_release(packet: *mut encoder_packet);
8056    pub fn obs_encoder_create_rerouted(
8057        encoder: *mut obs_encoder_t,
8058        reroute_id: *const ::std::os::raw::c_char,
8059    ) -> *mut ::std::os::raw::c_void;
8060#[doc = " Returns whether encoder is paused"]
8061    pub fn obs_encoder_paused(output: *const obs_encoder_t) -> bool;
8062    pub fn obs_encoder_get_last_error(encoder: *mut obs_encoder_t)
8063    -> *const ::std::os::raw::c_char;
8064    pub fn obs_encoder_set_last_error(
8065        encoder: *mut obs_encoder_t,
8066        message: *const ::std::os::raw::c_char,
8067    );
8068    pub fn obs_encoder_get_pause_offset(encoder: *const obs_encoder_t) -> u64;
8069#[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."]
8070    pub fn obs_encoder_set_group(
8071        encoder: *mut obs_encoder_t,
8072        group: *mut obs_encoder_group_t,
8073    ) -> bool;
8074    pub fn obs_encoder_group_create() -> *mut obs_encoder_group_t;
8075    pub fn obs_encoder_group_destroy(group: *mut obs_encoder_group_t);
8076    pub fn obs_service_get_display_name(
8077        id: *const ::std::os::raw::c_char,
8078    ) -> *const ::std::os::raw::c_char;
8079#[doc = " Returns a pointer to the module which provides the service"]
8080    pub fn obs_service_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
8081#[doc = " Returns the load state of a service's module given the id"]
8082    pub fn obs_service_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
8083    pub fn obs_service_create(
8084        id: *const ::std::os::raw::c_char,
8085        name: *const ::std::os::raw::c_char,
8086        settings: *mut obs_data_t,
8087        hotkey_data: *mut obs_data_t,
8088    ) -> *mut obs_service_t;
8089    pub fn obs_service_create_private(
8090        id: *const ::std::os::raw::c_char,
8091        name: *const ::std::os::raw::c_char,
8092        settings: *mut obs_data_t,
8093    ) -> *mut obs_service_t;
8094#[doc = " Adds/releases a reference to a service.  When the last reference is\n released, the service is destroyed."]
8095    pub fn obs_service_release(service: *mut obs_service_t);
8096    pub fn obs_weak_service_addref(weak: *mut obs_weak_service_t);
8097    pub fn obs_weak_service_release(weak: *mut obs_weak_service_t);
8098    pub fn obs_service_get_ref(service: *mut obs_service_t) -> *mut obs_service_t;
8099    pub fn obs_service_get_weak_service(service: *mut obs_service_t) -> *mut obs_weak_service_t;
8100    pub fn obs_weak_service_get_service(weak: *mut obs_weak_service_t) -> *mut obs_service_t;
8101    pub fn obs_weak_service_references_service(
8102        weak: *mut obs_weak_service_t,
8103        service: *mut obs_service_t,
8104    ) -> bool;
8105    pub fn obs_service_get_name(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8106#[doc = " Gets the default settings for a service"]
8107    pub fn obs_service_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8108#[doc = " Returns the property list, if any.  Free with obs_properties_destroy"]
8109    pub fn obs_get_service_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8110#[doc = " Returns the property list of an existing service context, if any.  Free with\n obs_properties_destroy"]
8111    pub fn obs_service_properties(service: *const obs_service_t) -> *mut obs_properties_t;
8112#[doc = " Gets the service type"]
8113    pub fn obs_service_get_type(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8114#[doc = " Updates the settings of the service context"]
8115    pub fn obs_service_update(service: *mut obs_service_t, settings: *mut obs_data_t);
8116#[doc = " Returns the current settings for this service"]
8117    pub fn obs_service_get_settings(service: *const obs_service_t) -> *mut obs_data_t;
8118#[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."]
8119    pub fn obs_service_apply_encoder_settings(
8120        service: *mut obs_service_t,
8121        video_encoder_settings: *mut obs_data_t,
8122        audio_encoder_settings: *mut obs_data_t,
8123    );
8124    pub fn obs_service_get_type_data(service: *mut obs_service_t) -> *mut ::std::os::raw::c_void;
8125    pub fn obs_service_get_id(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8126    pub fn obs_service_get_supported_resolutions(
8127        service: *const obs_service_t,
8128        resolutions: *mut *mut obs_service_resolution,
8129        count: *mut usize,
8130    );
8131    pub fn obs_service_get_max_fps(service: *const obs_service_t, fps: *mut ::std::os::raw::c_int);
8132    pub fn obs_service_get_max_bitrate(
8133        service: *const obs_service_t,
8134        video_bitrate: *mut ::std::os::raw::c_int,
8135        audio_bitrate: *mut ::std::os::raw::c_int,
8136    );
8137    pub fn obs_service_get_supported_video_codecs(
8138        service: *const obs_service_t,
8139    ) -> *mut *const ::std::os::raw::c_char;
8140    pub fn obs_service_get_supported_audio_codecs(
8141        service: *const obs_service_t,
8142    ) -> *mut *const ::std::os::raw::c_char;
8143#[doc = " Returns the protocol for this service context"]
8144    pub fn obs_service_get_protocol(service: *const obs_service_t)
8145    -> *const ::std::os::raw::c_char;
8146    pub fn obs_service_get_preferred_output_type(
8147        service: *const obs_service_t,
8148    ) -> *const ::std::os::raw::c_char;
8149    pub fn obs_service_get_connect_info(
8150        service: *const obs_service_t,
8151        type_: u32,
8152    ) -> *const ::std::os::raw::c_char;
8153    pub fn obs_service_can_try_to_connect(service: *const obs_service_t) -> bool;
8154    pub fn obs_source_frame_init(
8155        frame: *mut obs_source_frame,
8156        format: video_format,
8157        width: u32,
8158        height: u32,
8159    );
8160    pub fn obs_source_frame_copy(dst: *mut obs_source_frame, src: *const obs_source_frame);
8161    pub fn obs_source_get_icon_type(id: *const ::std::os::raw::c_char) -> obs_icon_type;
8162#[doc = " Get a strong reference to the main OBS canvas"]
8163    pub fn obs_get_main_canvas() -> *mut obs_canvas_t;
8164#[doc = " Creates a new canvas"]
8165    pub fn obs_canvas_create(
8166        name: *const ::std::os::raw::c_char,
8167        ovi: *mut obs_video_info,
8168        flags: u32,
8169    ) -> *mut obs_canvas_t;
8170#[doc = " Creates a new private canvas"]
8171    pub fn obs_canvas_create_private(
8172        name: *const ::std::os::raw::c_char,
8173        ovi: *mut obs_video_info,
8174        flags: u32,
8175    ) -> *mut obs_canvas_t;
8176#[doc = " Signal that references to canvas should be released and mark the canvas as removed."]
8177    pub fn obs_canvas_remove(canvas: *mut obs_canvas_t);
8178#[doc = " Returns if a canvas is marked as removed (i.e., should no longer be used)."]
8179    pub fn obs_canvas_removed(canvas: *mut obs_canvas_t) -> bool;
8180#[doc = " Set canvas name"]
8181    pub fn obs_canvas_set_name(canvas: *mut obs_canvas_t, name: *const ::std::os::raw::c_char);
8182#[doc = " Get canvas name"]
8183    pub fn obs_canvas_get_name(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8184#[doc = " Get canvas UUID"]
8185    pub fn obs_canvas_get_uuid(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8186#[doc = " Gets flags set on a canvas"]
8187    pub fn obs_canvas_get_flags(canvas: *const obs_canvas_t) -> u32;
8188#[doc = " Saves a canvas to settings data"]
8189    pub fn obs_save_canvas(source: *mut obs_canvas_t) -> *mut obs_data_t;
8190#[doc = " Loads a canvas from settings data"]
8191    pub fn obs_load_canvas(data: *mut obs_data_t) -> *mut obs_canvas_t;
8192#[doc = " Add strong reference"]
8193    pub fn obs_canvas_get_ref(canvas: *mut obs_canvas_t) -> *mut obs_canvas_t;
8194#[doc = " Release strong reference"]
8195    pub fn obs_canvas_release(canvas: *mut obs_canvas_t);
8196#[doc = " Add weak reference"]
8197    pub fn obs_weak_canvas_addref(weak: *mut obs_weak_canvas_t);
8198#[doc = " Release weak reference"]
8199    pub fn obs_weak_canvas_release(weak: *mut obs_weak_canvas_t);
8200#[doc = " Get weak reference from strong reference"]
8201    pub fn obs_canvas_get_weak_canvas(canvas: *mut obs_canvas_t) -> *mut obs_weak_canvas_t;
8202#[doc = " Get strong reference from weak reference"]
8203    pub fn obs_weak_canvas_get_canvas(weak: *mut obs_weak_canvas_t) -> *mut obs_canvas_t;
8204#[doc = " Returns the signal handler for a canvas"]
8205    pub fn obs_canvas_get_signal_handler(canvas: *mut obs_canvas_t) -> *mut signal_handler_t;
8206#[doc = " Sets the source to be used for this canvas."]
8207    pub fn obs_canvas_set_channel(
8208        canvas: *mut obs_canvas_t,
8209        channel: u32,
8210        source: *mut obs_source_t,
8211    );
8212#[doc = " Gets the source currently in use for this view context"]
8213    pub fn obs_canvas_get_channel(canvas: *mut obs_canvas_t, channel: u32) -> *mut obs_source_t;
8214#[doc = " Create scene attached to a canvas"]
8215    pub fn obs_canvas_scene_create(
8216        canvas: *mut obs_canvas_t,
8217        name: *const ::std::os::raw::c_char,
8218    ) -> *mut obs_scene_t;
8219#[doc = " Remove a scene from a canvas"]
8220    pub fn obs_canvas_scene_remove(scene: *mut obs_scene_t);
8221#[doc = " Move scene to another canvas, detaching it from the previous one and deduplicating the name if needed"]
8222    pub fn obs_canvas_move_scene(scene: *mut obs_scene_t, dst: *mut obs_canvas_t);
8223#[doc = " Enumerates scenes belonging to a canvas"]
8224    pub fn obs_canvas_enum_scenes(
8225        canvas: *mut obs_canvas_t,
8226        enum_proc: ::std::option::Option<
8227            unsafe extern "C" fn(
8228                arg1: *mut ::std::os::raw::c_void,
8229                arg2: *mut obs_source_t,
8230            ) -> bool,
8231        >,
8232        param: *mut ::std::os::raw::c_void,
8233    );
8234#[doc = " Get a canvas source by name"]
8235    pub fn obs_canvas_get_source_by_name(
8236        canvas: *mut obs_canvas_t,
8237        name: *const ::std::os::raw::c_char,
8238    ) -> *mut obs_source_t;
8239#[doc = " Get a canvas source by UUID"]
8240    pub fn obs_canvas_get_scene_by_name(
8241        canvas: *mut obs_canvas_t,
8242        name: *const ::std::os::raw::c_char,
8243    ) -> *mut obs_scene_t;
8244#[doc = " Reset a canvas's video mix"]
8245    pub fn obs_canvas_reset_video(canvas: *mut obs_canvas_t, ovi: *mut obs_video_info) -> bool;
8246#[doc = " Returns true if the canvas video is configured"]
8247    pub fn obs_canvas_has_video(canvas: *mut obs_canvas_t) -> bool;
8248#[doc = " Get canvas video output"]
8249    pub fn obs_canvas_get_video(canvas: *const obs_canvas_t) -> *mut video_t;
8250#[doc = " Get canvas video info (if it exists)"]
8251    pub fn obs_canvas_get_video_info(canvas: *const obs_canvas_t, ovi: *mut obs_video_info)
8252    -> bool;
8253#[doc = " Renders the sources of this canvas's view context"]
8254    pub fn obs_canvas_render(canvas: *mut obs_canvas_t);
8255}