1#[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}