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 = 0;
217pub const LIBOBS_API_PATCH_VER: u32 = 2;
218pub const OBS_VERSION: &[u8; 8] = b"unknown\0";
219pub const OBS_DATA_PATH: &[u8; 11] = b"../../data\0";
220pub const OBS_INSTALL_PREFIX: &[u8; 1] = b"\0";
221pub const OBS_PLUGIN_DESTINATION: &[u8; 12] = b"obs-plugins\0";
222pub const OBS_RELATIVE_PREFIX: &[u8; 7] = b"../../\0";
223pub const OBS_RELEASE_CANDIDATE: u32 = 0;
224pub const OBS_BETA: u32 = 0;
225pub const OBS_INSTALL_DATA_PATH: &[u8; 12] = b"/../../data\0";
226pub const MAX_CHANNELS: u32 = 64;
227pub const OBS_ALIGN_CENTER: u32 = 0;
228pub const OBS_ALIGN_LEFT: u32 = 1;
229pub const OBS_ALIGN_RIGHT: u32 = 2;
230pub const OBS_ALIGN_TOP: u32 = 4;
231pub const OBS_ALIGN_BOTTOM: u32 = 8;
232pub const MODULE_SUCCESS: u32 = 0;
233pub const MODULE_ERROR: i32 = -1;
234pub const MODULE_FAILED_TO_OPEN: i32 = -2;
235pub const MODULE_FILE_NOT_FOUND: i32 = -2;
236pub const MODULE_MISSING_EXPORTS: i32 = -3;
237pub const MODULE_INCOMPATIBLE_VER: i32 = -4;
238pub const MODULE_HARDCODED_SKIP: i32 = -5;
239pub const OBS_OUTPUT_SUCCESS: u32 = 0;
240pub const OBS_OUTPUT_BAD_PATH: i32 = -1;
241pub const OBS_OUTPUT_CONNECT_FAILED: i32 = -2;
242pub const OBS_OUTPUT_INVALID_STREAM: i32 = -3;
243pub const OBS_OUTPUT_ERROR: i32 = -4;
244pub const OBS_OUTPUT_DISCONNECTED: i32 = -5;
245pub const OBS_OUTPUT_UNSUPPORTED: i32 = -6;
246pub const OBS_OUTPUT_NO_SPACE: i32 = -7;
247pub const OBS_OUTPUT_ENCODE_ERROR: i32 = -8;
248pub const OBS_OUTPUT_HDR_DISABLED: i32 = -9;
249pub const OBS_VIDEO_SUCCESS: u32 = 0;
250pub const OBS_VIDEO_FAIL: i32 = -1;
251pub const OBS_VIDEO_NOT_SUPPORTED: i32 = -2;
252pub const OBS_VIDEO_INVALID_PARAM: i32 = -3;
253pub const OBS_VIDEO_CURRENTLY_ACTIVE: i32 = -4;
254pub const OBS_VIDEO_MODULE_NOT_FOUND: i32 = -5;
255pub const OBS_PROPERTIES_DEFER_UPDATE: u32 = 1;
256pub const OBS_FONT_BOLD: u32 = 1;
257pub const OBS_FONT_ITALIC: u32 = 2;
258pub const OBS_FONT_UNDERLINE: u32 = 4;
259pub const OBS_FONT_STRIKEOUT: u32 = 8;
260pub const OBS_SOURCE_VIDEO: u32 = 1;
261pub const OBS_SOURCE_AUDIO: u32 = 2;
262pub const OBS_SOURCE_ASYNC: u32 = 4;
263pub const OBS_SOURCE_ASYNC_VIDEO: u32 = 5;
264pub const OBS_SOURCE_CUSTOM_DRAW: u32 = 8;
265pub const OBS_SOURCE_INTERACTION: u32 = 32;
266pub const OBS_SOURCE_COMPOSITE: u32 = 64;
267pub const OBS_SOURCE_DO_NOT_DUPLICATE: u32 = 128;
268pub const OBS_SOURCE_DEPRECATED: u32 = 256;
269pub const OBS_SOURCE_DO_NOT_SELF_MONITOR: u32 = 512;
270pub const OBS_SOURCE_CAP_DISABLED: u32 = 1024;
271pub const OBS_SOURCE_CAP_OBSOLETE: u32 = 1024;
272pub const OBS_SOURCE_MONITOR_BY_DEFAULT: u32 = 2048;
273pub const OBS_SOURCE_SUBMIX: u32 = 4096;
274pub const OBS_SOURCE_CONTROLLABLE_MEDIA: u32 = 8192;
275pub const OBS_SOURCE_CEA_708: u32 = 16384;
276pub const OBS_SOURCE_SRGB: u32 = 32768;
277pub const OBS_SOURCE_CAP_DONT_SHOW_PROPERTIES: u32 = 65536;
278pub const OBS_SOURCE_REQUIRES_CANVAS: u32 = 131072;
279pub const OBS_ENCODER_CAP_DEPRECATED: u32 = 1;
280pub const OBS_ENCODER_CAP_PASS_TEXTURE: u32 = 2;
281pub const OBS_ENCODER_CAP_DYN_BITRATE: u32 = 4;
282pub const OBS_ENCODER_CAP_INTERNAL: u32 = 8;
283pub const OBS_ENCODER_CAP_ROI: u32 = 16;
284pub const OBS_ENCODER_CAP_SCALING: u32 = 32;
285pub const OBS_OUTPUT_VIDEO: u32 = 1;
286pub const OBS_OUTPUT_AUDIO: u32 = 2;
287pub const OBS_OUTPUT_AV: u32 = 3;
288pub const OBS_OUTPUT_ENCODED: u32 = 4;
289pub const OBS_OUTPUT_SERVICE: u32 = 8;
290pub const OBS_OUTPUT_MULTI_TRACK: u32 = 16;
291pub const OBS_OUTPUT_CAN_PAUSE: u32 = 32;
292pub const OBS_OUTPUT_MULTI_TRACK_AUDIO: u32 = 16;
293pub const OBS_OUTPUT_MULTI_TRACK_VIDEO: u32 = 64;
294pub const OBS_OUTPUT_MULTI_TRACK_AV: u32 = 80;
295pub const MAX_OUTPUT_AUDIO_ENCODERS: u32 = 6;
296pub const MAX_OUTPUT_VIDEO_ENCODERS: u32 = 10;
297pub const XINPUT_MOUSE_LEN: u32 = 33;
298pub const OBS_MOUSE_BUTTON_DEFAULT: u32 = 1;
299pub const OBS_SOURCE_FRAME_LINEAR_ALPHA: u32 = 1;
300pub const OBS_SOURCE_FLAG_UNUSED_1: u32 = 1;
301pub const OBS_SOURCE_FLAG_FORCE_MONO: u32 = 2;
302pub const OBS_OUTPUT_DELAY_PRESERVE: u32 = 1;
303pub type wchar_t = ::std::os::raw::c_ushort;
304pub type max_align_t = f64;
305pub type va_list = *mut ::std::os::raw::c_char;
306pub type __gnuc_va_list = __builtin_va_list;
307#[doc = " Use if there's a problem that can potentially affect the program,\n but isn't enough to require termination of the program.\n\n Use in creation functions and core subsystem functions. Places that\n should definitely not fail."]
308pub const LOG_ERROR: _bindgen_ty_1 = 100;
309#[doc = " Use if a problem occurs that doesn't affect the program and is\n recoverable.\n\n Use in places where failure isn't entirely unexpected, and can\n be handled safely."]
310pub const LOG_WARNING: _bindgen_ty_1 = 200;
311#[doc = " Informative message to be displayed in the log."]
312pub const LOG_INFO: _bindgen_ty_1 = 300;
313#[doc = " Debug message to be used mostly by developers."]
314pub const LOG_DEBUG: _bindgen_ty_1 = 400;
315pub type _bindgen_ty_1 = ::std::os::raw::c_int;
316pub type log_handler_t = ::std::option::Option<
317 unsafe extern "C" fn(
318 lvl: ::std::os::raw::c_int,
319 msg: *const ::std::os::raw::c_char,
320 args: va_list,
321 p: *mut ::std::os::raw::c_void,
322 ),
323>;
324#[repr(C)]
325#[derive(Debug, Copy, Clone)]
326pub struct __uintr_frame {
327 pub rip: ::std::os::raw::c_ulonglong,
328 pub rflags: ::std::os::raw::c_ulonglong,
329 pub rsp: ::std::os::raw::c_ulonglong,
330}
331#[allow(clippy::unnecessary_operation, clippy::identity_op)]
332const _: () = {
333 ["Size of __uintr_frame"][::std::mem::size_of::<__uintr_frame>() - 24usize];
334 ["Alignment of __uintr_frame"][::std::mem::align_of::<__uintr_frame>() - 8usize];
335 ["Offset of field: __uintr_frame::rip"][::std::mem::offset_of!(__uintr_frame, rip) - 0usize];
336 ["Offset of field: __uintr_frame::rflags"]
337 [::std::mem::offset_of!(__uintr_frame, rflags) - 8usize];
338 ["Offset of field: __uintr_frame::rsp"][::std::mem::offset_of!(__uintr_frame, rsp) - 16usize];
339};
340pub const _CMPCCX_ENUM__CMPCCX_O: _CMPCCX_ENUM = 0;
341pub const _CMPCCX_ENUM__CMPCCX_NO: _CMPCCX_ENUM = 1;
342pub const _CMPCCX_ENUM__CMPCCX_B: _CMPCCX_ENUM = 2;
343pub const _CMPCCX_ENUM__CMPCCX_NB: _CMPCCX_ENUM = 3;
344pub const _CMPCCX_ENUM__CMPCCX_Z: _CMPCCX_ENUM = 4;
345pub const _CMPCCX_ENUM__CMPCCX_NZ: _CMPCCX_ENUM = 5;
346pub const _CMPCCX_ENUM__CMPCCX_BE: _CMPCCX_ENUM = 6;
347pub const _CMPCCX_ENUM__CMPCCX_NBE: _CMPCCX_ENUM = 7;
348pub const _CMPCCX_ENUM__CMPCCX_S: _CMPCCX_ENUM = 8;
349pub const _CMPCCX_ENUM__CMPCCX_NS: _CMPCCX_ENUM = 9;
350pub const _CMPCCX_ENUM__CMPCCX_P: _CMPCCX_ENUM = 10;
351pub const _CMPCCX_ENUM__CMPCCX_NP: _CMPCCX_ENUM = 11;
352pub const _CMPCCX_ENUM__CMPCCX_L: _CMPCCX_ENUM = 12;
353pub const _CMPCCX_ENUM__CMPCCX_NL: _CMPCCX_ENUM = 13;
354pub const _CMPCCX_ENUM__CMPCCX_LE: _CMPCCX_ENUM = 14;
355pub const _CMPCCX_ENUM__CMPCCX_NLE: _CMPCCX_ENUM = 15;
356pub type _CMPCCX_ENUM = ::std::os::raw::c_int;
357pub type __m64 = [::std::os::raw::c_longlong; 1usize];
358pub type __v1di = [::std::os::raw::c_longlong; 1usize];
359pub type __v2si = [::std::os::raw::c_int; 2usize];
360pub type __v4hi = [::std::os::raw::c_short; 4usize];
361pub type __v8qi = [::std::os::raw::c_char; 8usize];
362pub type __v1du = [::std::os::raw::c_ulonglong; 1usize];
363pub type __v2su = [::std::os::raw::c_uint; 2usize];
364pub type __v4hu = [::std::os::raw::c_ushort; 4usize];
365pub type __v8qu = [::std::os::raw::c_uchar; 8usize];
366pub type __v8qs = [::std::os::raw::c_schar; 8usize];
367pub type __m128i = [::std::os::raw::c_longlong; 2usize];
368pub type __v2di = [::std::os::raw::c_longlong; 2usize];
369pub type __v4si = [::std::os::raw::c_int; 4usize];
370pub type __v8hi = [::std::os::raw::c_short; 8usize];
371pub type __v16qi = [::std::os::raw::c_char; 16usize];
372pub type __v4sf = [f32; 4usize];
373pub type __m128 = [f32; 4usize];
374pub type __m128_u = [f32; 4usize];
375pub type __v4su = [::std::os::raw::c_uint; 4usize];
376pub type __m128d = [f64; 2usize];
377pub type __m128d_u = [f64; 2usize];
378pub type __m128i_u = [::std::os::raw::c_longlong; 2usize];
379pub type __v2df = [f64; 2usize];
380pub type __v2du = [::std::os::raw::c_ulonglong; 2usize];
381pub type __v8hu = [::std::os::raw::c_ushort; 8usize];
382pub type __v16qu = [::std::os::raw::c_uchar; 16usize];
383pub type __v16qs = [::std::os::raw::c_schar; 16usize];
384pub type __v8hf = [__BindgenFloat16; 8usize];
385pub type __m128h = [__BindgenFloat16; 8usize];
386pub type __m128h_u = [__BindgenFloat16; 8usize];
387pub type __v8bf = u128;
388pub type __m128bh = u128;
389pub type __v4df = [f64; 4usize];
390pub type __v8sf = [f32; 8usize];
391pub type __v4di = [::std::os::raw::c_longlong; 4usize];
392pub type __v8si = [::std::os::raw::c_int; 8usize];
393pub type __v16hi = [::std::os::raw::c_short; 16usize];
394pub type __v32qi = [::std::os::raw::c_char; 32usize];
395pub type __v4du = [::std::os::raw::c_ulonglong; 4usize];
396pub type __v8su = [::std::os::raw::c_uint; 8usize];
397pub type __v16hu = [::std::os::raw::c_ushort; 16usize];
398pub type __v32qu = [::std::os::raw::c_uchar; 32usize];
399pub type __v32qs = [::std::os::raw::c_schar; 32usize];
400pub type __m256 = [f32; 8usize];
401pub type __m256d = [f64; 4usize];
402pub type __m256i = [::std::os::raw::c_longlong; 4usize];
403pub type __m256_u = [f32; 8usize];
404pub type __m256d_u = [f64; 4usize];
405pub type __m256i_u = [::std::os::raw::c_longlong; 4usize];
406pub type __v16hf = [__BindgenFloat16; 16usize];
407pub type __m256h = [__BindgenFloat16; 16usize];
408pub type __m256h_u = [__BindgenFloat16; 16usize];
409pub type __v16bf = __BindgenOpaqueArray<u8, 32usize>;
410pub type __m256bh = __BindgenOpaqueArray<u8, 32usize>;
411pub type __v64qi = [::std::os::raw::c_char; 64usize];
412pub type __v32hi = [::std::os::raw::c_short; 32usize];
413pub type __v8df = [f64; 8usize];
414pub type __v16sf = [f32; 16usize];
415pub type __v8di = [::std::os::raw::c_longlong; 8usize];
416pub type __v16si = [::std::os::raw::c_int; 16usize];
417pub type __v64qu = [::std::os::raw::c_uchar; 64usize];
418pub type __v32hu = [::std::os::raw::c_ushort; 32usize];
419pub type __v8du = [::std::os::raw::c_ulonglong; 8usize];
420pub type __v16su = [::std::os::raw::c_uint; 16usize];
421pub type __v64qs = [::std::os::raw::c_schar; 64usize];
422pub type __m512 = [f32; 16usize];
423pub type __m512d = [f64; 8usize];
424pub type __m512i = [::std::os::raw::c_longlong; 8usize];
425pub type __m512_u = [f32; 16usize];
426pub type __m512d_u = [f64; 8usize];
427pub type __m512i_u = [::std::os::raw::c_longlong; 8usize];
428pub type __mmask8 = ::std::os::raw::c_uchar;
429pub type __mmask16 = ::std::os::raw::c_ushort;
430pub const _MM_CMPINT_ENUM__MM_CMPINT_EQ: _MM_CMPINT_ENUM = 0;
431pub const _MM_CMPINT_ENUM__MM_CMPINT_LT: _MM_CMPINT_ENUM = 1;
432pub const _MM_CMPINT_ENUM__MM_CMPINT_LE: _MM_CMPINT_ENUM = 2;
433pub const _MM_CMPINT_ENUM__MM_CMPINT_UNUSED: _MM_CMPINT_ENUM = 3;
434pub const _MM_CMPINT_ENUM__MM_CMPINT_NE: _MM_CMPINT_ENUM = 4;
435pub const _MM_CMPINT_ENUM__MM_CMPINT_NLT: _MM_CMPINT_ENUM = 5;
436pub const _MM_CMPINT_ENUM__MM_CMPINT_NLE: _MM_CMPINT_ENUM = 6;
437pub type _MM_CMPINT_ENUM = ::std::os::raw::c_int;
438pub const _MM_PERM_ENUM__MM_PERM_AAAA: _MM_PERM_ENUM = 0;
439pub const _MM_PERM_ENUM__MM_PERM_AAAB: _MM_PERM_ENUM = 1;
440pub const _MM_PERM_ENUM__MM_PERM_AAAC: _MM_PERM_ENUM = 2;
441pub const _MM_PERM_ENUM__MM_PERM_AAAD: _MM_PERM_ENUM = 3;
442pub const _MM_PERM_ENUM__MM_PERM_AABA: _MM_PERM_ENUM = 4;
443pub const _MM_PERM_ENUM__MM_PERM_AABB: _MM_PERM_ENUM = 5;
444pub const _MM_PERM_ENUM__MM_PERM_AABC: _MM_PERM_ENUM = 6;
445pub const _MM_PERM_ENUM__MM_PERM_AABD: _MM_PERM_ENUM = 7;
446pub const _MM_PERM_ENUM__MM_PERM_AACA: _MM_PERM_ENUM = 8;
447pub const _MM_PERM_ENUM__MM_PERM_AACB: _MM_PERM_ENUM = 9;
448pub const _MM_PERM_ENUM__MM_PERM_AACC: _MM_PERM_ENUM = 10;
449pub const _MM_PERM_ENUM__MM_PERM_AACD: _MM_PERM_ENUM = 11;
450pub const _MM_PERM_ENUM__MM_PERM_AADA: _MM_PERM_ENUM = 12;
451pub const _MM_PERM_ENUM__MM_PERM_AADB: _MM_PERM_ENUM = 13;
452pub const _MM_PERM_ENUM__MM_PERM_AADC: _MM_PERM_ENUM = 14;
453pub const _MM_PERM_ENUM__MM_PERM_AADD: _MM_PERM_ENUM = 15;
454pub const _MM_PERM_ENUM__MM_PERM_ABAA: _MM_PERM_ENUM = 16;
455pub const _MM_PERM_ENUM__MM_PERM_ABAB: _MM_PERM_ENUM = 17;
456pub const _MM_PERM_ENUM__MM_PERM_ABAC: _MM_PERM_ENUM = 18;
457pub const _MM_PERM_ENUM__MM_PERM_ABAD: _MM_PERM_ENUM = 19;
458pub const _MM_PERM_ENUM__MM_PERM_ABBA: _MM_PERM_ENUM = 20;
459pub const _MM_PERM_ENUM__MM_PERM_ABBB: _MM_PERM_ENUM = 21;
460pub const _MM_PERM_ENUM__MM_PERM_ABBC: _MM_PERM_ENUM = 22;
461pub const _MM_PERM_ENUM__MM_PERM_ABBD: _MM_PERM_ENUM = 23;
462pub const _MM_PERM_ENUM__MM_PERM_ABCA: _MM_PERM_ENUM = 24;
463pub const _MM_PERM_ENUM__MM_PERM_ABCB: _MM_PERM_ENUM = 25;
464pub const _MM_PERM_ENUM__MM_PERM_ABCC: _MM_PERM_ENUM = 26;
465pub const _MM_PERM_ENUM__MM_PERM_ABCD: _MM_PERM_ENUM = 27;
466pub const _MM_PERM_ENUM__MM_PERM_ABDA: _MM_PERM_ENUM = 28;
467pub const _MM_PERM_ENUM__MM_PERM_ABDB: _MM_PERM_ENUM = 29;
468pub const _MM_PERM_ENUM__MM_PERM_ABDC: _MM_PERM_ENUM = 30;
469pub const _MM_PERM_ENUM__MM_PERM_ABDD: _MM_PERM_ENUM = 31;
470pub const _MM_PERM_ENUM__MM_PERM_ACAA: _MM_PERM_ENUM = 32;
471pub const _MM_PERM_ENUM__MM_PERM_ACAB: _MM_PERM_ENUM = 33;
472pub const _MM_PERM_ENUM__MM_PERM_ACAC: _MM_PERM_ENUM = 34;
473pub const _MM_PERM_ENUM__MM_PERM_ACAD: _MM_PERM_ENUM = 35;
474pub const _MM_PERM_ENUM__MM_PERM_ACBA: _MM_PERM_ENUM = 36;
475pub const _MM_PERM_ENUM__MM_PERM_ACBB: _MM_PERM_ENUM = 37;
476pub const _MM_PERM_ENUM__MM_PERM_ACBC: _MM_PERM_ENUM = 38;
477pub const _MM_PERM_ENUM__MM_PERM_ACBD: _MM_PERM_ENUM = 39;
478pub const _MM_PERM_ENUM__MM_PERM_ACCA: _MM_PERM_ENUM = 40;
479pub const _MM_PERM_ENUM__MM_PERM_ACCB: _MM_PERM_ENUM = 41;
480pub const _MM_PERM_ENUM__MM_PERM_ACCC: _MM_PERM_ENUM = 42;
481pub const _MM_PERM_ENUM__MM_PERM_ACCD: _MM_PERM_ENUM = 43;
482pub const _MM_PERM_ENUM__MM_PERM_ACDA: _MM_PERM_ENUM = 44;
483pub const _MM_PERM_ENUM__MM_PERM_ACDB: _MM_PERM_ENUM = 45;
484pub const _MM_PERM_ENUM__MM_PERM_ACDC: _MM_PERM_ENUM = 46;
485pub const _MM_PERM_ENUM__MM_PERM_ACDD: _MM_PERM_ENUM = 47;
486pub const _MM_PERM_ENUM__MM_PERM_ADAA: _MM_PERM_ENUM = 48;
487pub const _MM_PERM_ENUM__MM_PERM_ADAB: _MM_PERM_ENUM = 49;
488pub const _MM_PERM_ENUM__MM_PERM_ADAC: _MM_PERM_ENUM = 50;
489pub const _MM_PERM_ENUM__MM_PERM_ADAD: _MM_PERM_ENUM = 51;
490pub const _MM_PERM_ENUM__MM_PERM_ADBA: _MM_PERM_ENUM = 52;
491pub const _MM_PERM_ENUM__MM_PERM_ADBB: _MM_PERM_ENUM = 53;
492pub const _MM_PERM_ENUM__MM_PERM_ADBC: _MM_PERM_ENUM = 54;
493pub const _MM_PERM_ENUM__MM_PERM_ADBD: _MM_PERM_ENUM = 55;
494pub const _MM_PERM_ENUM__MM_PERM_ADCA: _MM_PERM_ENUM = 56;
495pub const _MM_PERM_ENUM__MM_PERM_ADCB: _MM_PERM_ENUM = 57;
496pub const _MM_PERM_ENUM__MM_PERM_ADCC: _MM_PERM_ENUM = 58;
497pub const _MM_PERM_ENUM__MM_PERM_ADCD: _MM_PERM_ENUM = 59;
498pub const _MM_PERM_ENUM__MM_PERM_ADDA: _MM_PERM_ENUM = 60;
499pub const _MM_PERM_ENUM__MM_PERM_ADDB: _MM_PERM_ENUM = 61;
500pub const _MM_PERM_ENUM__MM_PERM_ADDC: _MM_PERM_ENUM = 62;
501pub const _MM_PERM_ENUM__MM_PERM_ADDD: _MM_PERM_ENUM = 63;
502pub const _MM_PERM_ENUM__MM_PERM_BAAA: _MM_PERM_ENUM = 64;
503pub const _MM_PERM_ENUM__MM_PERM_BAAB: _MM_PERM_ENUM = 65;
504pub const _MM_PERM_ENUM__MM_PERM_BAAC: _MM_PERM_ENUM = 66;
505pub const _MM_PERM_ENUM__MM_PERM_BAAD: _MM_PERM_ENUM = 67;
506pub const _MM_PERM_ENUM__MM_PERM_BABA: _MM_PERM_ENUM = 68;
507pub const _MM_PERM_ENUM__MM_PERM_BABB: _MM_PERM_ENUM = 69;
508pub const _MM_PERM_ENUM__MM_PERM_BABC: _MM_PERM_ENUM = 70;
509pub const _MM_PERM_ENUM__MM_PERM_BABD: _MM_PERM_ENUM = 71;
510pub const _MM_PERM_ENUM__MM_PERM_BACA: _MM_PERM_ENUM = 72;
511pub const _MM_PERM_ENUM__MM_PERM_BACB: _MM_PERM_ENUM = 73;
512pub const _MM_PERM_ENUM__MM_PERM_BACC: _MM_PERM_ENUM = 74;
513pub const _MM_PERM_ENUM__MM_PERM_BACD: _MM_PERM_ENUM = 75;
514pub const _MM_PERM_ENUM__MM_PERM_BADA: _MM_PERM_ENUM = 76;
515pub const _MM_PERM_ENUM__MM_PERM_BADB: _MM_PERM_ENUM = 77;
516pub const _MM_PERM_ENUM__MM_PERM_BADC: _MM_PERM_ENUM = 78;
517pub const _MM_PERM_ENUM__MM_PERM_BADD: _MM_PERM_ENUM = 79;
518pub const _MM_PERM_ENUM__MM_PERM_BBAA: _MM_PERM_ENUM = 80;
519pub const _MM_PERM_ENUM__MM_PERM_BBAB: _MM_PERM_ENUM = 81;
520pub const _MM_PERM_ENUM__MM_PERM_BBAC: _MM_PERM_ENUM = 82;
521pub const _MM_PERM_ENUM__MM_PERM_BBAD: _MM_PERM_ENUM = 83;
522pub const _MM_PERM_ENUM__MM_PERM_BBBA: _MM_PERM_ENUM = 84;
523pub const _MM_PERM_ENUM__MM_PERM_BBBB: _MM_PERM_ENUM = 85;
524pub const _MM_PERM_ENUM__MM_PERM_BBBC: _MM_PERM_ENUM = 86;
525pub const _MM_PERM_ENUM__MM_PERM_BBBD: _MM_PERM_ENUM = 87;
526pub const _MM_PERM_ENUM__MM_PERM_BBCA: _MM_PERM_ENUM = 88;
527pub const _MM_PERM_ENUM__MM_PERM_BBCB: _MM_PERM_ENUM = 89;
528pub const _MM_PERM_ENUM__MM_PERM_BBCC: _MM_PERM_ENUM = 90;
529pub const _MM_PERM_ENUM__MM_PERM_BBCD: _MM_PERM_ENUM = 91;
530pub const _MM_PERM_ENUM__MM_PERM_BBDA: _MM_PERM_ENUM = 92;
531pub const _MM_PERM_ENUM__MM_PERM_BBDB: _MM_PERM_ENUM = 93;
532pub const _MM_PERM_ENUM__MM_PERM_BBDC: _MM_PERM_ENUM = 94;
533pub const _MM_PERM_ENUM__MM_PERM_BBDD: _MM_PERM_ENUM = 95;
534pub const _MM_PERM_ENUM__MM_PERM_BCAA: _MM_PERM_ENUM = 96;
535pub const _MM_PERM_ENUM__MM_PERM_BCAB: _MM_PERM_ENUM = 97;
536pub const _MM_PERM_ENUM__MM_PERM_BCAC: _MM_PERM_ENUM = 98;
537pub const _MM_PERM_ENUM__MM_PERM_BCAD: _MM_PERM_ENUM = 99;
538pub const _MM_PERM_ENUM__MM_PERM_BCBA: _MM_PERM_ENUM = 100;
539pub const _MM_PERM_ENUM__MM_PERM_BCBB: _MM_PERM_ENUM = 101;
540pub const _MM_PERM_ENUM__MM_PERM_BCBC: _MM_PERM_ENUM = 102;
541pub const _MM_PERM_ENUM__MM_PERM_BCBD: _MM_PERM_ENUM = 103;
542pub const _MM_PERM_ENUM__MM_PERM_BCCA: _MM_PERM_ENUM = 104;
543pub const _MM_PERM_ENUM__MM_PERM_BCCB: _MM_PERM_ENUM = 105;
544pub const _MM_PERM_ENUM__MM_PERM_BCCC: _MM_PERM_ENUM = 106;
545pub const _MM_PERM_ENUM__MM_PERM_BCCD: _MM_PERM_ENUM = 107;
546pub const _MM_PERM_ENUM__MM_PERM_BCDA: _MM_PERM_ENUM = 108;
547pub const _MM_PERM_ENUM__MM_PERM_BCDB: _MM_PERM_ENUM = 109;
548pub const _MM_PERM_ENUM__MM_PERM_BCDC: _MM_PERM_ENUM = 110;
549pub const _MM_PERM_ENUM__MM_PERM_BCDD: _MM_PERM_ENUM = 111;
550pub const _MM_PERM_ENUM__MM_PERM_BDAA: _MM_PERM_ENUM = 112;
551pub const _MM_PERM_ENUM__MM_PERM_BDAB: _MM_PERM_ENUM = 113;
552pub const _MM_PERM_ENUM__MM_PERM_BDAC: _MM_PERM_ENUM = 114;
553pub const _MM_PERM_ENUM__MM_PERM_BDAD: _MM_PERM_ENUM = 115;
554pub const _MM_PERM_ENUM__MM_PERM_BDBA: _MM_PERM_ENUM = 116;
555pub const _MM_PERM_ENUM__MM_PERM_BDBB: _MM_PERM_ENUM = 117;
556pub const _MM_PERM_ENUM__MM_PERM_BDBC: _MM_PERM_ENUM = 118;
557pub const _MM_PERM_ENUM__MM_PERM_BDBD: _MM_PERM_ENUM = 119;
558pub const _MM_PERM_ENUM__MM_PERM_BDCA: _MM_PERM_ENUM = 120;
559pub const _MM_PERM_ENUM__MM_PERM_BDCB: _MM_PERM_ENUM = 121;
560pub const _MM_PERM_ENUM__MM_PERM_BDCC: _MM_PERM_ENUM = 122;
561pub const _MM_PERM_ENUM__MM_PERM_BDCD: _MM_PERM_ENUM = 123;
562pub const _MM_PERM_ENUM__MM_PERM_BDDA: _MM_PERM_ENUM = 124;
563pub const _MM_PERM_ENUM__MM_PERM_BDDB: _MM_PERM_ENUM = 125;
564pub const _MM_PERM_ENUM__MM_PERM_BDDC: _MM_PERM_ENUM = 126;
565pub const _MM_PERM_ENUM__MM_PERM_BDDD: _MM_PERM_ENUM = 127;
566pub const _MM_PERM_ENUM__MM_PERM_CAAA: _MM_PERM_ENUM = 128;
567pub const _MM_PERM_ENUM__MM_PERM_CAAB: _MM_PERM_ENUM = 129;
568pub const _MM_PERM_ENUM__MM_PERM_CAAC: _MM_PERM_ENUM = 130;
569pub const _MM_PERM_ENUM__MM_PERM_CAAD: _MM_PERM_ENUM = 131;
570pub const _MM_PERM_ENUM__MM_PERM_CABA: _MM_PERM_ENUM = 132;
571pub const _MM_PERM_ENUM__MM_PERM_CABB: _MM_PERM_ENUM = 133;
572pub const _MM_PERM_ENUM__MM_PERM_CABC: _MM_PERM_ENUM = 134;
573pub const _MM_PERM_ENUM__MM_PERM_CABD: _MM_PERM_ENUM = 135;
574pub const _MM_PERM_ENUM__MM_PERM_CACA: _MM_PERM_ENUM = 136;
575pub const _MM_PERM_ENUM__MM_PERM_CACB: _MM_PERM_ENUM = 137;
576pub const _MM_PERM_ENUM__MM_PERM_CACC: _MM_PERM_ENUM = 138;
577pub const _MM_PERM_ENUM__MM_PERM_CACD: _MM_PERM_ENUM = 139;
578pub const _MM_PERM_ENUM__MM_PERM_CADA: _MM_PERM_ENUM = 140;
579pub const _MM_PERM_ENUM__MM_PERM_CADB: _MM_PERM_ENUM = 141;
580pub const _MM_PERM_ENUM__MM_PERM_CADC: _MM_PERM_ENUM = 142;
581pub const _MM_PERM_ENUM__MM_PERM_CADD: _MM_PERM_ENUM = 143;
582pub const _MM_PERM_ENUM__MM_PERM_CBAA: _MM_PERM_ENUM = 144;
583pub const _MM_PERM_ENUM__MM_PERM_CBAB: _MM_PERM_ENUM = 145;
584pub const _MM_PERM_ENUM__MM_PERM_CBAC: _MM_PERM_ENUM = 146;
585pub const _MM_PERM_ENUM__MM_PERM_CBAD: _MM_PERM_ENUM = 147;
586pub const _MM_PERM_ENUM__MM_PERM_CBBA: _MM_PERM_ENUM = 148;
587pub const _MM_PERM_ENUM__MM_PERM_CBBB: _MM_PERM_ENUM = 149;
588pub const _MM_PERM_ENUM__MM_PERM_CBBC: _MM_PERM_ENUM = 150;
589pub const _MM_PERM_ENUM__MM_PERM_CBBD: _MM_PERM_ENUM = 151;
590pub const _MM_PERM_ENUM__MM_PERM_CBCA: _MM_PERM_ENUM = 152;
591pub const _MM_PERM_ENUM__MM_PERM_CBCB: _MM_PERM_ENUM = 153;
592pub const _MM_PERM_ENUM__MM_PERM_CBCC: _MM_PERM_ENUM = 154;
593pub const _MM_PERM_ENUM__MM_PERM_CBCD: _MM_PERM_ENUM = 155;
594pub const _MM_PERM_ENUM__MM_PERM_CBDA: _MM_PERM_ENUM = 156;
595pub const _MM_PERM_ENUM__MM_PERM_CBDB: _MM_PERM_ENUM = 157;
596pub const _MM_PERM_ENUM__MM_PERM_CBDC: _MM_PERM_ENUM = 158;
597pub const _MM_PERM_ENUM__MM_PERM_CBDD: _MM_PERM_ENUM = 159;
598pub const _MM_PERM_ENUM__MM_PERM_CCAA: _MM_PERM_ENUM = 160;
599pub const _MM_PERM_ENUM__MM_PERM_CCAB: _MM_PERM_ENUM = 161;
600pub const _MM_PERM_ENUM__MM_PERM_CCAC: _MM_PERM_ENUM = 162;
601pub const _MM_PERM_ENUM__MM_PERM_CCAD: _MM_PERM_ENUM = 163;
602pub const _MM_PERM_ENUM__MM_PERM_CCBA: _MM_PERM_ENUM = 164;
603pub const _MM_PERM_ENUM__MM_PERM_CCBB: _MM_PERM_ENUM = 165;
604pub const _MM_PERM_ENUM__MM_PERM_CCBC: _MM_PERM_ENUM = 166;
605pub const _MM_PERM_ENUM__MM_PERM_CCBD: _MM_PERM_ENUM = 167;
606pub const _MM_PERM_ENUM__MM_PERM_CCCA: _MM_PERM_ENUM = 168;
607pub const _MM_PERM_ENUM__MM_PERM_CCCB: _MM_PERM_ENUM = 169;
608pub const _MM_PERM_ENUM__MM_PERM_CCCC: _MM_PERM_ENUM = 170;
609pub const _MM_PERM_ENUM__MM_PERM_CCCD: _MM_PERM_ENUM = 171;
610pub const _MM_PERM_ENUM__MM_PERM_CCDA: _MM_PERM_ENUM = 172;
611pub const _MM_PERM_ENUM__MM_PERM_CCDB: _MM_PERM_ENUM = 173;
612pub const _MM_PERM_ENUM__MM_PERM_CCDC: _MM_PERM_ENUM = 174;
613pub const _MM_PERM_ENUM__MM_PERM_CCDD: _MM_PERM_ENUM = 175;
614pub const _MM_PERM_ENUM__MM_PERM_CDAA: _MM_PERM_ENUM = 176;
615pub const _MM_PERM_ENUM__MM_PERM_CDAB: _MM_PERM_ENUM = 177;
616pub const _MM_PERM_ENUM__MM_PERM_CDAC: _MM_PERM_ENUM = 178;
617pub const _MM_PERM_ENUM__MM_PERM_CDAD: _MM_PERM_ENUM = 179;
618pub const _MM_PERM_ENUM__MM_PERM_CDBA: _MM_PERM_ENUM = 180;
619pub const _MM_PERM_ENUM__MM_PERM_CDBB: _MM_PERM_ENUM = 181;
620pub const _MM_PERM_ENUM__MM_PERM_CDBC: _MM_PERM_ENUM = 182;
621pub const _MM_PERM_ENUM__MM_PERM_CDBD: _MM_PERM_ENUM = 183;
622pub const _MM_PERM_ENUM__MM_PERM_CDCA: _MM_PERM_ENUM = 184;
623pub const _MM_PERM_ENUM__MM_PERM_CDCB: _MM_PERM_ENUM = 185;
624pub const _MM_PERM_ENUM__MM_PERM_CDCC: _MM_PERM_ENUM = 186;
625pub const _MM_PERM_ENUM__MM_PERM_CDCD: _MM_PERM_ENUM = 187;
626pub const _MM_PERM_ENUM__MM_PERM_CDDA: _MM_PERM_ENUM = 188;
627pub const _MM_PERM_ENUM__MM_PERM_CDDB: _MM_PERM_ENUM = 189;
628pub const _MM_PERM_ENUM__MM_PERM_CDDC: _MM_PERM_ENUM = 190;
629pub const _MM_PERM_ENUM__MM_PERM_CDDD: _MM_PERM_ENUM = 191;
630pub const _MM_PERM_ENUM__MM_PERM_DAAA: _MM_PERM_ENUM = 192;
631pub const _MM_PERM_ENUM__MM_PERM_DAAB: _MM_PERM_ENUM = 193;
632pub const _MM_PERM_ENUM__MM_PERM_DAAC: _MM_PERM_ENUM = 194;
633pub const _MM_PERM_ENUM__MM_PERM_DAAD: _MM_PERM_ENUM = 195;
634pub const _MM_PERM_ENUM__MM_PERM_DABA: _MM_PERM_ENUM = 196;
635pub const _MM_PERM_ENUM__MM_PERM_DABB: _MM_PERM_ENUM = 197;
636pub const _MM_PERM_ENUM__MM_PERM_DABC: _MM_PERM_ENUM = 198;
637pub const _MM_PERM_ENUM__MM_PERM_DABD: _MM_PERM_ENUM = 199;
638pub const _MM_PERM_ENUM__MM_PERM_DACA: _MM_PERM_ENUM = 200;
639pub const _MM_PERM_ENUM__MM_PERM_DACB: _MM_PERM_ENUM = 201;
640pub const _MM_PERM_ENUM__MM_PERM_DACC: _MM_PERM_ENUM = 202;
641pub const _MM_PERM_ENUM__MM_PERM_DACD: _MM_PERM_ENUM = 203;
642pub const _MM_PERM_ENUM__MM_PERM_DADA: _MM_PERM_ENUM = 204;
643pub const _MM_PERM_ENUM__MM_PERM_DADB: _MM_PERM_ENUM = 205;
644pub const _MM_PERM_ENUM__MM_PERM_DADC: _MM_PERM_ENUM = 206;
645pub const _MM_PERM_ENUM__MM_PERM_DADD: _MM_PERM_ENUM = 207;
646pub const _MM_PERM_ENUM__MM_PERM_DBAA: _MM_PERM_ENUM = 208;
647pub const _MM_PERM_ENUM__MM_PERM_DBAB: _MM_PERM_ENUM = 209;
648pub const _MM_PERM_ENUM__MM_PERM_DBAC: _MM_PERM_ENUM = 210;
649pub const _MM_PERM_ENUM__MM_PERM_DBAD: _MM_PERM_ENUM = 211;
650pub const _MM_PERM_ENUM__MM_PERM_DBBA: _MM_PERM_ENUM = 212;
651pub const _MM_PERM_ENUM__MM_PERM_DBBB: _MM_PERM_ENUM = 213;
652pub const _MM_PERM_ENUM__MM_PERM_DBBC: _MM_PERM_ENUM = 214;
653pub const _MM_PERM_ENUM__MM_PERM_DBBD: _MM_PERM_ENUM = 215;
654pub const _MM_PERM_ENUM__MM_PERM_DBCA: _MM_PERM_ENUM = 216;
655pub const _MM_PERM_ENUM__MM_PERM_DBCB: _MM_PERM_ENUM = 217;
656pub const _MM_PERM_ENUM__MM_PERM_DBCC: _MM_PERM_ENUM = 218;
657pub const _MM_PERM_ENUM__MM_PERM_DBCD: _MM_PERM_ENUM = 219;
658pub const _MM_PERM_ENUM__MM_PERM_DBDA: _MM_PERM_ENUM = 220;
659pub const _MM_PERM_ENUM__MM_PERM_DBDB: _MM_PERM_ENUM = 221;
660pub const _MM_PERM_ENUM__MM_PERM_DBDC: _MM_PERM_ENUM = 222;
661pub const _MM_PERM_ENUM__MM_PERM_DBDD: _MM_PERM_ENUM = 223;
662pub const _MM_PERM_ENUM__MM_PERM_DCAA: _MM_PERM_ENUM = 224;
663pub const _MM_PERM_ENUM__MM_PERM_DCAB: _MM_PERM_ENUM = 225;
664pub const _MM_PERM_ENUM__MM_PERM_DCAC: _MM_PERM_ENUM = 226;
665pub const _MM_PERM_ENUM__MM_PERM_DCAD: _MM_PERM_ENUM = 227;
666pub const _MM_PERM_ENUM__MM_PERM_DCBA: _MM_PERM_ENUM = 228;
667pub const _MM_PERM_ENUM__MM_PERM_DCBB: _MM_PERM_ENUM = 229;
668pub const _MM_PERM_ENUM__MM_PERM_DCBC: _MM_PERM_ENUM = 230;
669pub const _MM_PERM_ENUM__MM_PERM_DCBD: _MM_PERM_ENUM = 231;
670pub const _MM_PERM_ENUM__MM_PERM_DCCA: _MM_PERM_ENUM = 232;
671pub const _MM_PERM_ENUM__MM_PERM_DCCB: _MM_PERM_ENUM = 233;
672pub const _MM_PERM_ENUM__MM_PERM_DCCC: _MM_PERM_ENUM = 234;
673pub const _MM_PERM_ENUM__MM_PERM_DCCD: _MM_PERM_ENUM = 235;
674pub const _MM_PERM_ENUM__MM_PERM_DCDA: _MM_PERM_ENUM = 236;
675pub const _MM_PERM_ENUM__MM_PERM_DCDB: _MM_PERM_ENUM = 237;
676pub const _MM_PERM_ENUM__MM_PERM_DCDC: _MM_PERM_ENUM = 238;
677pub const _MM_PERM_ENUM__MM_PERM_DCDD: _MM_PERM_ENUM = 239;
678pub const _MM_PERM_ENUM__MM_PERM_DDAA: _MM_PERM_ENUM = 240;
679pub const _MM_PERM_ENUM__MM_PERM_DDAB: _MM_PERM_ENUM = 241;
680pub const _MM_PERM_ENUM__MM_PERM_DDAC: _MM_PERM_ENUM = 242;
681pub const _MM_PERM_ENUM__MM_PERM_DDAD: _MM_PERM_ENUM = 243;
682pub const _MM_PERM_ENUM__MM_PERM_DDBA: _MM_PERM_ENUM = 244;
683pub const _MM_PERM_ENUM__MM_PERM_DDBB: _MM_PERM_ENUM = 245;
684pub const _MM_PERM_ENUM__MM_PERM_DDBC: _MM_PERM_ENUM = 246;
685pub const _MM_PERM_ENUM__MM_PERM_DDBD: _MM_PERM_ENUM = 247;
686pub const _MM_PERM_ENUM__MM_PERM_DDCA: _MM_PERM_ENUM = 248;
687pub const _MM_PERM_ENUM__MM_PERM_DDCB: _MM_PERM_ENUM = 249;
688pub const _MM_PERM_ENUM__MM_PERM_DDCC: _MM_PERM_ENUM = 250;
689pub const _MM_PERM_ENUM__MM_PERM_DDCD: _MM_PERM_ENUM = 251;
690pub const _MM_PERM_ENUM__MM_PERM_DDDA: _MM_PERM_ENUM = 252;
691pub const _MM_PERM_ENUM__MM_PERM_DDDB: _MM_PERM_ENUM = 253;
692pub const _MM_PERM_ENUM__MM_PERM_DDDC: _MM_PERM_ENUM = 254;
693pub const _MM_PERM_ENUM__MM_PERM_DDDD: _MM_PERM_ENUM = 255;
694pub type _MM_PERM_ENUM = ::std::os::raw::c_int;
695pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_1_2: _MM_MANTISSA_NORM_ENUM = 0;
696pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p5_2: _MM_MANTISSA_NORM_ENUM = 1;
697pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p5_1: _MM_MANTISSA_NORM_ENUM = 2;
698pub const _MM_MANTISSA_NORM_ENUM__MM_MANT_NORM_p75_1p5: _MM_MANTISSA_NORM_ENUM = 3;
699pub type _MM_MANTISSA_NORM_ENUM = ::std::os::raw::c_int;
700pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_src: _MM_MANTISSA_SIGN_ENUM = 0;
701pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_zero: _MM_MANTISSA_SIGN_ENUM = 1;
702pub const _MM_MANTISSA_SIGN_ENUM__MM_MANT_SIGN_nan: _MM_MANTISSA_SIGN_ENUM = 2;
703pub type _MM_MANTISSA_SIGN_ENUM = ::std::os::raw::c_int;
704pub const _MM_TERNLOG_ENUM__MM_TERNLOG_A: _MM_TERNLOG_ENUM = 240;
705pub const _MM_TERNLOG_ENUM__MM_TERNLOG_B: _MM_TERNLOG_ENUM = 204;
706pub const _MM_TERNLOG_ENUM__MM_TERNLOG_C: _MM_TERNLOG_ENUM = 170;
707pub type _MM_TERNLOG_ENUM = ::std::os::raw::c_int;
708pub type __v2hi = [::std::os::raw::c_short; 2usize];
709pub type __v4qi = [::std::os::raw::c_char; 4usize];
710pub type __v2qi = [::std::os::raw::c_char; 2usize];
711pub type __mmask32 = ::std::os::raw::c_uint;
712pub type __mmask64 = ::std::os::raw::c_ulonglong;
713pub type __v32hf = [__BindgenFloat16; 32usize];
714pub type __m512h = [__BindgenFloat16; 32usize];
715pub type __m512h_u = [__BindgenFloat16; 32usize];
716pub type __v32bf = __BindgenOpaqueArray<u8, 64usize>;
717pub type __m512bh = __BindgenOpaqueArray<u8, 64usize>;
718pub type __bfloat16 = u16;
719pub type _tile1024i = [::std::os::raw::c_int; 256usize];
720pub type _tile1024i_1024a = [::std::os::raw::c_int; 256usize];
721#[repr(C)]
722#[repr(align(1024))]
723#[derive(Debug, Copy, Clone)]
724pub struct __tile1024i_str {
725 pub row: ::std::os::raw::c_ushort,
726 pub col: ::std::os::raw::c_ushort,
727 pub __bindgen_padding_0: [u64; 127usize],
728 pub tile: _tile1024i,
729}
730#[allow(clippy::unnecessary_operation, clippy::identity_op)]
731const _: () = {
732 ["Size of __tile1024i_str"][::std::mem::size_of::<__tile1024i_str>() - 2048usize];
733 ["Alignment of __tile1024i_str"][::std::mem::align_of::<__tile1024i_str>() - 1024usize];
734 ["Offset of field: __tile1024i_str::row"]
735 [::std::mem::offset_of!(__tile1024i_str, row) - 0usize];
736 ["Offset of field: __tile1024i_str::col"]
737 [::std::mem::offset_of!(__tile1024i_str, col) - 2usize];
738 ["Offset of field: __tile1024i_str::tile"]
739 [::std::mem::offset_of!(__tile1024i_str, tile) - 1024usize];
740};
741pub type __tile1024i = __tile1024i_str;
742pub type __m128bh_u = u128;
743pub type __m256bh_u = __BindgenOpaqueArray<u8, 32usize>;
744pub type __m512bh_u = __BindgenOpaqueArray<u8, 64usize>;
745#[repr(C)]
746#[derive(Debug, Copy, Clone)]
747pub struct base_allocator {
748 pub malloc:
749 ::std::option::Option<unsafe extern "C" fn(arg1: usize) -> *mut ::std::os::raw::c_void>,
750 pub realloc: ::std::option::Option<
751 unsafe extern "C" fn(
752 arg1: *mut ::std::os::raw::c_void,
753 arg2: usize,
754 ) -> *mut ::std::os::raw::c_void,
755 >,
756 pub free: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
757}
758#[allow(clippy::unnecessary_operation, clippy::identity_op)]
759const _: () = {
760 ["Size of base_allocator"][::std::mem::size_of::<base_allocator>() - 24usize];
761 ["Alignment of base_allocator"][::std::mem::align_of::<base_allocator>() - 8usize];
762 ["Offset of field: base_allocator::malloc"]
763 [::std::mem::offset_of!(base_allocator, malloc) - 0usize];
764 ["Offset of field: base_allocator::realloc"]
765 [::std::mem::offset_of!(base_allocator, realloc) - 8usize];
766 ["Offset of field: base_allocator::free"]
767 [::std::mem::offset_of!(base_allocator, free) - 16usize];
768};
769#[repr(C)]
770pub struct darray {
771 pub array: *mut ::std::os::raw::c_void,
772 pub num: usize,
773 pub capacity: usize,
774}
775#[allow(clippy::unnecessary_operation, clippy::identity_op)]
776const _: () = {
777 ["Size of darray"][::std::mem::size_of::<darray>() - 24usize];
778 ["Alignment of darray"][::std::mem::align_of::<darray>() - 8usize];
779 ["Offset of field: darray::array"][::std::mem::offset_of!(darray, array) - 0usize];
780 ["Offset of field: darray::num"][::std::mem::offset_of!(darray, num) - 8usize];
781 ["Offset of field: darray::capacity"][::std::mem::offset_of!(darray, capacity) - 16usize];
782};
783#[repr(C)]
784#[derive(Debug, Copy, Clone)]
785pub struct profiler_snapshot {
786 _unused: [u8; 0],
787}
788pub type profiler_snapshot_t = profiler_snapshot;
789#[repr(C)]
790#[derive(Debug, Copy, Clone)]
791pub struct profiler_snapshot_entry {
792 _unused: [u8; 0],
793}
794pub type profiler_snapshot_entry_t = profiler_snapshot_entry;
795pub type profiler_time_entry_t = profiler_time_entry;
796#[repr(C)]
797#[derive(Debug, Copy, Clone)]
798pub struct profiler_name_store {
799 _unused: [u8; 0],
800}
801pub type profiler_name_store_t = profiler_name_store;
802#[repr(C)]
803pub struct profiler_time_entry {
804 pub time_delta: u64,
805 pub count: u64,
806}
807#[allow(clippy::unnecessary_operation, clippy::identity_op)]
808const _: () = {
809 ["Size of profiler_time_entry"][::std::mem::size_of::<profiler_time_entry>() - 16usize];
810 ["Alignment of profiler_time_entry"][::std::mem::align_of::<profiler_time_entry>() - 8usize];
811 ["Offset of field: profiler_time_entry::time_delta"]
812 [::std::mem::offset_of!(profiler_time_entry, time_delta) - 0usize];
813 ["Offset of field: profiler_time_entry::count"]
814 [::std::mem::offset_of!(profiler_time_entry, count) - 8usize];
815};
816#[repr(C)]
817pub struct profiler_time_entries_t {
818 pub da: __BindgenUnionField<darray>,
819 pub __bindgen_anon_1: __BindgenUnionField<profiler_time_entries_t__bindgen_ty_1>,
820 pub bindgen_union_field: [u64; 3usize],
821}
822#[repr(C)]
823pub struct profiler_time_entries_t__bindgen_ty_1 {
824 pub array: *mut profiler_time_entry_t,
825 pub num: usize,
826 pub capacity: usize,
827}
828#[allow(clippy::unnecessary_operation, clippy::identity_op)]
829const _: () = {
830 ["Size of profiler_time_entries_t__bindgen_ty_1"]
831 [::std::mem::size_of::<profiler_time_entries_t__bindgen_ty_1>() - 24usize];
832 ["Alignment of profiler_time_entries_t__bindgen_ty_1"]
833 [::std::mem::align_of::<profiler_time_entries_t__bindgen_ty_1>() - 8usize];
834 ["Offset of field: profiler_time_entries_t__bindgen_ty_1::array"]
835 [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, array) - 0usize];
836 ["Offset of field: profiler_time_entries_t__bindgen_ty_1::num"]
837 [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, num) - 8usize];
838 ["Offset of field: profiler_time_entries_t__bindgen_ty_1::capacity"]
839 [::std::mem::offset_of!(profiler_time_entries_t__bindgen_ty_1, capacity) - 16usize];
840};
841#[allow(clippy::unnecessary_operation, clippy::identity_op)]
842const _: () = {
843 ["Size of profiler_time_entries_t"][::std::mem::size_of::<profiler_time_entries_t>() - 24usize];
844 ["Alignment of profiler_time_entries_t"]
845 [::std::mem::align_of::<profiler_time_entries_t>() - 8usize];
846 ["Offset of field: profiler_time_entries_t::da"]
847 [::std::mem::offset_of!(profiler_time_entries_t, da) - 0usize];
848};
849pub type profiler_entry_enum_func = ::std::option::Option<
850 unsafe extern "C" fn(
851 context: *mut ::std::os::raw::c_void,
852 entry: *mut profiler_snapshot_entry_t,
853 ) -> bool,
854>;
855pub type profiler_name_filter_func = ::std::option::Option<
856 unsafe extern "C" fn(
857 data: *mut ::std::os::raw::c_void,
858 name: *const ::std::os::raw::c_char,
859 remove: *mut bool,
860 ) -> bool,
861>;
862#[repr(C)]
863#[derive(Debug, Copy, Clone)]
864pub struct text_lookup {
865 _unused: [u8; 0],
866}
867pub type lookup_t = text_lookup;
868#[repr(C)]
869#[derive(Debug, Copy, Clone)]
870pub struct input_subsystem {
871 _unused: [u8; 0],
872}
873pub type input_t = input_subsystem;
874#[repr(C)]
875#[derive(Debug, Copy, Clone)]
876pub struct quat {
877 _unused: [u8; 0],
878}
879#[repr(C)]
880#[derive(Debug, Copy, Clone)]
881pub struct axisang {
882 _unused: [u8; 0],
883}
884#[repr(C)]
885#[derive(Debug, Copy, Clone)]
886pub struct plane {
887 _unused: [u8; 0],
888}
889#[repr(C)]
890#[derive(Debug, Copy, Clone)]
891pub struct matrix3 {
892 _unused: [u8; 0],
893}
894#[repr(C)]
895#[derive(Debug, Copy, Clone)]
896pub struct matrix4 {
897 _unused: [u8; 0],
898}
899pub const gs_draw_mode_GS_POINTS: gs_draw_mode = 0;
900pub const gs_draw_mode_GS_LINES: gs_draw_mode = 1;
901pub const gs_draw_mode_GS_LINESTRIP: gs_draw_mode = 2;
902pub const gs_draw_mode_GS_TRIS: gs_draw_mode = 3;
903pub const gs_draw_mode_GS_TRISTRIP: gs_draw_mode = 4;
904pub type gs_draw_mode = ::std::os::raw::c_int;
905pub const gs_color_format_GS_UNKNOWN: gs_color_format = 0;
906pub const gs_color_format_GS_A8: gs_color_format = 1;
907pub const gs_color_format_GS_R8: gs_color_format = 2;
908pub const gs_color_format_GS_RGBA: gs_color_format = 3;
909pub const gs_color_format_GS_BGRX: gs_color_format = 4;
910pub const gs_color_format_GS_BGRA: gs_color_format = 5;
911pub const gs_color_format_GS_R10G10B10A2: gs_color_format = 6;
912pub const gs_color_format_GS_RGBA16: gs_color_format = 7;
913pub const gs_color_format_GS_R16: gs_color_format = 8;
914pub const gs_color_format_GS_RGBA16F: gs_color_format = 9;
915pub const gs_color_format_GS_RGBA32F: gs_color_format = 10;
916pub const gs_color_format_GS_RG16F: gs_color_format = 11;
917pub const gs_color_format_GS_RG32F: gs_color_format = 12;
918pub const gs_color_format_GS_R16F: gs_color_format = 13;
919pub const gs_color_format_GS_R32F: gs_color_format = 14;
920pub const gs_color_format_GS_DXT1: gs_color_format = 15;
921pub const gs_color_format_GS_DXT3: gs_color_format = 16;
922pub const gs_color_format_GS_DXT5: gs_color_format = 17;
923pub const gs_color_format_GS_R8G8: gs_color_format = 18;
924pub const gs_color_format_GS_RGBA_UNORM: gs_color_format = 19;
925pub const gs_color_format_GS_BGRX_UNORM: gs_color_format = 20;
926pub const gs_color_format_GS_BGRA_UNORM: gs_color_format = 21;
927pub const gs_color_format_GS_RG16: gs_color_format = 22;
928pub type gs_color_format = ::std::os::raw::c_int;
929pub const gs_color_space_GS_CS_SRGB: gs_color_space = 0;
930pub const gs_color_space_GS_CS_SRGB_16F: gs_color_space = 1;
931pub const gs_color_space_GS_CS_709_EXTENDED: gs_color_space = 2;
932pub const gs_color_space_GS_CS_709_SCRGB: gs_color_space = 3;
933pub type gs_color_space = ::std::os::raw::c_int;
934pub const gs_zstencil_format_GS_ZS_NONE: gs_zstencil_format = 0;
935pub const gs_zstencil_format_GS_Z16: gs_zstencil_format = 1;
936pub const gs_zstencil_format_GS_Z24_S8: gs_zstencil_format = 2;
937pub const gs_zstencil_format_GS_Z32F: gs_zstencil_format = 3;
938pub const gs_zstencil_format_GS_Z32F_S8X24: gs_zstencil_format = 4;
939pub type gs_zstencil_format = ::std::os::raw::c_int;
940pub const gs_index_type_GS_UNSIGNED_SHORT: gs_index_type = 0;
941pub const gs_index_type_GS_UNSIGNED_LONG: gs_index_type = 1;
942pub type gs_index_type = ::std::os::raw::c_int;
943pub const gs_cull_mode_GS_BACK: gs_cull_mode = 0;
944pub const gs_cull_mode_GS_FRONT: gs_cull_mode = 1;
945pub const gs_cull_mode_GS_NEITHER: gs_cull_mode = 2;
946pub type gs_cull_mode = ::std::os::raw::c_int;
947pub const gs_blend_type_GS_BLEND_ZERO: gs_blend_type = 0;
948pub const gs_blend_type_GS_BLEND_ONE: gs_blend_type = 1;
949pub const gs_blend_type_GS_BLEND_SRCCOLOR: gs_blend_type = 2;
950pub const gs_blend_type_GS_BLEND_INVSRCCOLOR: gs_blend_type = 3;
951pub const gs_blend_type_GS_BLEND_SRCALPHA: gs_blend_type = 4;
952pub const gs_blend_type_GS_BLEND_INVSRCALPHA: gs_blend_type = 5;
953pub const gs_blend_type_GS_BLEND_DSTCOLOR: gs_blend_type = 6;
954pub const gs_blend_type_GS_BLEND_INVDSTCOLOR: gs_blend_type = 7;
955pub const gs_blend_type_GS_BLEND_DSTALPHA: gs_blend_type = 8;
956pub const gs_blend_type_GS_BLEND_INVDSTALPHA: gs_blend_type = 9;
957pub const gs_blend_type_GS_BLEND_SRCALPHASAT: gs_blend_type = 10;
958pub type gs_blend_type = ::std::os::raw::c_int;
959pub const gs_blend_op_type_GS_BLEND_OP_ADD: gs_blend_op_type = 0;
960pub const gs_blend_op_type_GS_BLEND_OP_SUBTRACT: gs_blend_op_type = 1;
961pub const gs_blend_op_type_GS_BLEND_OP_REVERSE_SUBTRACT: gs_blend_op_type = 2;
962pub const gs_blend_op_type_GS_BLEND_OP_MIN: gs_blend_op_type = 3;
963pub const gs_blend_op_type_GS_BLEND_OP_MAX: gs_blend_op_type = 4;
964pub type gs_blend_op_type = ::std::os::raw::c_int;
965pub const gs_depth_test_GS_NEVER: gs_depth_test = 0;
966pub const gs_depth_test_GS_LESS: gs_depth_test = 1;
967pub const gs_depth_test_GS_LEQUAL: gs_depth_test = 2;
968pub const gs_depth_test_GS_EQUAL: gs_depth_test = 3;
969pub const gs_depth_test_GS_GEQUAL: gs_depth_test = 4;
970pub const gs_depth_test_GS_GREATER: gs_depth_test = 5;
971pub const gs_depth_test_GS_NOTEQUAL: gs_depth_test = 6;
972pub const gs_depth_test_GS_ALWAYS: gs_depth_test = 7;
973pub type gs_depth_test = ::std::os::raw::c_int;
974pub const gs_stencil_side_GS_STENCIL_FRONT: gs_stencil_side = 1;
975pub const gs_stencil_side_GS_STENCIL_BACK: gs_stencil_side = 2;
976pub const gs_stencil_side_GS_STENCIL_BOTH: gs_stencil_side = 3;
977pub type gs_stencil_side = ::std::os::raw::c_int;
978pub const gs_stencil_op_type_GS_KEEP: gs_stencil_op_type = 0;
979pub const gs_stencil_op_type_GS_ZERO: gs_stencil_op_type = 1;
980pub const gs_stencil_op_type_GS_REPLACE: gs_stencil_op_type = 2;
981pub const gs_stencil_op_type_GS_INCR: gs_stencil_op_type = 3;
982pub const gs_stencil_op_type_GS_DECR: gs_stencil_op_type = 4;
983pub const gs_stencil_op_type_GS_INVERT: gs_stencil_op_type = 5;
984pub type gs_stencil_op_type = ::std::os::raw::c_int;
985pub const gs_cube_sides_GS_POSITIVE_X: gs_cube_sides = 0;
986pub const gs_cube_sides_GS_NEGATIVE_X: gs_cube_sides = 1;
987pub const gs_cube_sides_GS_POSITIVE_Y: gs_cube_sides = 2;
988pub const gs_cube_sides_GS_NEGATIVE_Y: gs_cube_sides = 3;
989pub const gs_cube_sides_GS_POSITIVE_Z: gs_cube_sides = 4;
990pub const gs_cube_sides_GS_NEGATIVE_Z: gs_cube_sides = 5;
991pub type gs_cube_sides = ::std::os::raw::c_int;
992pub const gs_sample_filter_GS_FILTER_POINT: gs_sample_filter = 0;
993pub const gs_sample_filter_GS_FILTER_LINEAR: gs_sample_filter = 1;
994pub const gs_sample_filter_GS_FILTER_ANISOTROPIC: gs_sample_filter = 2;
995pub const gs_sample_filter_GS_FILTER_MIN_MAG_POINT_MIP_LINEAR: gs_sample_filter = 3;
996pub const gs_sample_filter_GS_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT: gs_sample_filter = 4;
997pub const gs_sample_filter_GS_FILTER_MIN_POINT_MAG_MIP_LINEAR: gs_sample_filter = 5;
998pub const gs_sample_filter_GS_FILTER_MIN_LINEAR_MAG_MIP_POINT: gs_sample_filter = 6;
999pub const gs_sample_filter_GS_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR: gs_sample_filter = 7;
1000pub const gs_sample_filter_GS_FILTER_MIN_MAG_LINEAR_MIP_POINT: gs_sample_filter = 8;
1001pub type gs_sample_filter = ::std::os::raw::c_int;
1002pub const gs_address_mode_GS_ADDRESS_CLAMP: gs_address_mode = 0;
1003pub const gs_address_mode_GS_ADDRESS_WRAP: gs_address_mode = 1;
1004pub const gs_address_mode_GS_ADDRESS_MIRROR: gs_address_mode = 2;
1005pub const gs_address_mode_GS_ADDRESS_BORDER: gs_address_mode = 3;
1006pub const gs_address_mode_GS_ADDRESS_MIRRORONCE: gs_address_mode = 4;
1007pub type gs_address_mode = ::std::os::raw::c_int;
1008pub const gs_texture_type_GS_TEXTURE_2D: gs_texture_type = 0;
1009pub const gs_texture_type_GS_TEXTURE_3D: gs_texture_type = 1;
1010pub const gs_texture_type_GS_TEXTURE_CUBE: gs_texture_type = 2;
1011pub type gs_texture_type = ::std::os::raw::c_int;
1012#[repr(C)]
1013#[derive(Debug, Copy, Clone)]
1014pub struct gs_device_loss {
1015 pub device_loss_release:
1016 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
1017 pub device_loss_rebuild: ::std::option::Option<
1018 unsafe extern "C" fn(
1019 device: *mut ::std::os::raw::c_void,
1020 data: *mut ::std::os::raw::c_void,
1021 ),
1022 >,
1023 pub data: *mut ::std::os::raw::c_void,
1024}
1025#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1026const _: () = {
1027 ["Size of gs_device_loss"][::std::mem::size_of::<gs_device_loss>() - 24usize];
1028 ["Alignment of gs_device_loss"][::std::mem::align_of::<gs_device_loss>() - 8usize];
1029 ["Offset of field: gs_device_loss::device_loss_release"]
1030 [::std::mem::offset_of!(gs_device_loss, device_loss_release) - 0usize];
1031 ["Offset of field: gs_device_loss::device_loss_rebuild"]
1032 [::std::mem::offset_of!(gs_device_loss, device_loss_rebuild) - 8usize];
1033 ["Offset of field: gs_device_loss::data"]
1034 [::std::mem::offset_of!(gs_device_loss, data) - 16usize];
1035};
1036#[repr(C)]
1037#[derive(Debug, Copy, Clone)]
1038pub struct gs_monitor_info {
1039 pub rotation_degrees: ::std::os::raw::c_int,
1040 pub x: ::std::os::raw::c_long,
1041 pub y: ::std::os::raw::c_long,
1042 pub cx: ::std::os::raw::c_long,
1043 pub cy: ::std::os::raw::c_long,
1044}
1045#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1046const _: () = {
1047 ["Size of gs_monitor_info"][::std::mem::size_of::<gs_monitor_info>() - 20usize];
1048 ["Alignment of gs_monitor_info"][::std::mem::align_of::<gs_monitor_info>() - 4usize];
1049 ["Offset of field: gs_monitor_info::rotation_degrees"]
1050 [::std::mem::offset_of!(gs_monitor_info, rotation_degrees) - 0usize];
1051 ["Offset of field: gs_monitor_info::x"][::std::mem::offset_of!(gs_monitor_info, x) - 4usize];
1052 ["Offset of field: gs_monitor_info::y"][::std::mem::offset_of!(gs_monitor_info, y) - 8usize];
1053 ["Offset of field: gs_monitor_info::cx"][::std::mem::offset_of!(gs_monitor_info, cx) - 12usize];
1054 ["Offset of field: gs_monitor_info::cy"][::std::mem::offset_of!(gs_monitor_info, cy) - 16usize];
1055};
1056#[repr(C)]
1057pub struct gs_tvertarray {
1058 pub width: usize,
1059 pub array: *mut ::std::os::raw::c_void,
1060}
1061#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1062const _: () = {
1063 ["Size of gs_tvertarray"][::std::mem::size_of::<gs_tvertarray>() - 16usize];
1064 ["Alignment of gs_tvertarray"][::std::mem::align_of::<gs_tvertarray>() - 8usize];
1065 ["Offset of field: gs_tvertarray::width"]
1066 [::std::mem::offset_of!(gs_tvertarray, width) - 0usize];
1067 ["Offset of field: gs_tvertarray::array"]
1068 [::std::mem::offset_of!(gs_tvertarray, array) - 8usize];
1069};
1070#[repr(C)]
1071pub struct gs_vb_data {
1072 pub num: usize,
1073 pub points: *mut vec3,
1074 pub normals: *mut vec3,
1075 pub tangents: *mut vec3,
1076 pub colors: *mut u32,
1077 pub num_tex: usize,
1078 pub tvarray: *mut gs_tvertarray,
1079}
1080#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1081const _: () = {
1082 ["Size of gs_vb_data"][::std::mem::size_of::<gs_vb_data>() - 56usize];
1083 ["Alignment of gs_vb_data"][::std::mem::align_of::<gs_vb_data>() - 8usize];
1084 ["Offset of field: gs_vb_data::num"][::std::mem::offset_of!(gs_vb_data, num) - 0usize];
1085 ["Offset of field: gs_vb_data::points"][::std::mem::offset_of!(gs_vb_data, points) - 8usize];
1086 ["Offset of field: gs_vb_data::normals"][::std::mem::offset_of!(gs_vb_data, normals) - 16usize];
1087 ["Offset of field: gs_vb_data::tangents"]
1088 [::std::mem::offset_of!(gs_vb_data, tangents) - 24usize];
1089 ["Offset of field: gs_vb_data::colors"][::std::mem::offset_of!(gs_vb_data, colors) - 32usize];
1090 ["Offset of field: gs_vb_data::num_tex"][::std::mem::offset_of!(gs_vb_data, num_tex) - 40usize];
1091 ["Offset of field: gs_vb_data::tvarray"][::std::mem::offset_of!(gs_vb_data, tvarray) - 48usize];
1092};
1093#[repr(C)]
1094pub struct gs_sampler_info {
1095 pub filter: gs_sample_filter,
1096 pub address_u: gs_address_mode,
1097 pub address_v: gs_address_mode,
1098 pub address_w: gs_address_mode,
1099 pub max_anisotropy: ::std::os::raw::c_int,
1100 pub border_color: u32,
1101}
1102#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1103const _: () = {
1104 ["Size of gs_sampler_info"][::std::mem::size_of::<gs_sampler_info>() - 24usize];
1105 ["Alignment of gs_sampler_info"][::std::mem::align_of::<gs_sampler_info>() - 4usize];
1106 ["Offset of field: gs_sampler_info::filter"]
1107 [::std::mem::offset_of!(gs_sampler_info, filter) - 0usize];
1108 ["Offset of field: gs_sampler_info::address_u"]
1109 [::std::mem::offset_of!(gs_sampler_info, address_u) - 4usize];
1110 ["Offset of field: gs_sampler_info::address_v"]
1111 [::std::mem::offset_of!(gs_sampler_info, address_v) - 8usize];
1112 ["Offset of field: gs_sampler_info::address_w"]
1113 [::std::mem::offset_of!(gs_sampler_info, address_w) - 12usize];
1114 ["Offset of field: gs_sampler_info::max_anisotropy"]
1115 [::std::mem::offset_of!(gs_sampler_info, max_anisotropy) - 16usize];
1116 ["Offset of field: gs_sampler_info::border_color"]
1117 [::std::mem::offset_of!(gs_sampler_info, border_color) - 20usize];
1118};
1119#[repr(C)]
1120pub struct gs_display_mode {
1121 pub width: u32,
1122 pub height: u32,
1123 pub bits: u32,
1124 pub freq: u32,
1125}
1126#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1127const _: () = {
1128 ["Size of gs_display_mode"][::std::mem::size_of::<gs_display_mode>() - 16usize];
1129 ["Alignment of gs_display_mode"][::std::mem::align_of::<gs_display_mode>() - 4usize];
1130 ["Offset of field: gs_display_mode::width"]
1131 [::std::mem::offset_of!(gs_display_mode, width) - 0usize];
1132 ["Offset of field: gs_display_mode::height"]
1133 [::std::mem::offset_of!(gs_display_mode, height) - 4usize];
1134 ["Offset of field: gs_display_mode::bits"]
1135 [::std::mem::offset_of!(gs_display_mode, bits) - 8usize];
1136 ["Offset of field: gs_display_mode::freq"]
1137 [::std::mem::offset_of!(gs_display_mode, freq) - 12usize];
1138};
1139#[repr(C)]
1140#[derive(Debug, Copy, Clone)]
1141pub struct gs_rect {
1142 pub x: ::std::os::raw::c_int,
1143 pub y: ::std::os::raw::c_int,
1144 pub cx: ::std::os::raw::c_int,
1145 pub cy: ::std::os::raw::c_int,
1146}
1147#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1148const _: () = {
1149 ["Size of gs_rect"][::std::mem::size_of::<gs_rect>() - 16usize];
1150 ["Alignment of gs_rect"][::std::mem::align_of::<gs_rect>() - 4usize];
1151 ["Offset of field: gs_rect::x"][::std::mem::offset_of!(gs_rect, x) - 0usize];
1152 ["Offset of field: gs_rect::y"][::std::mem::offset_of!(gs_rect, y) - 4usize];
1153 ["Offset of field: gs_rect::cx"][::std::mem::offset_of!(gs_rect, cx) - 8usize];
1154 ["Offset of field: gs_rect::cy"][::std::mem::offset_of!(gs_rect, cy) - 12usize];
1155};
1156#[repr(C)]
1157#[derive(Debug, Copy, Clone)]
1158pub struct gs_texture {
1159 _unused: [u8; 0],
1160}
1161#[repr(C)]
1162#[derive(Debug, Copy, Clone)]
1163pub struct gs_stage_surface {
1164 _unused: [u8; 0],
1165}
1166#[repr(C)]
1167#[derive(Debug, Copy, Clone)]
1168pub struct gs_zstencil_buffer {
1169 _unused: [u8; 0],
1170}
1171#[repr(C)]
1172#[derive(Debug, Copy, Clone)]
1173pub struct gs_vertex_buffer {
1174 _unused: [u8; 0],
1175}
1176#[repr(C)]
1177#[derive(Debug, Copy, Clone)]
1178pub struct gs_index_buffer {
1179 _unused: [u8; 0],
1180}
1181#[repr(C)]
1182#[derive(Debug, Copy, Clone)]
1183pub struct gs_sampler_state {
1184 _unused: [u8; 0],
1185}
1186#[repr(C)]
1187#[derive(Debug, Copy, Clone)]
1188pub struct gs_shader {
1189 _unused: [u8; 0],
1190}
1191#[repr(C)]
1192#[derive(Debug, Copy, Clone)]
1193pub struct gs_swap_chain {
1194 _unused: [u8; 0],
1195}
1196#[repr(C)]
1197#[derive(Debug, Copy, Clone)]
1198pub struct gs_timer {
1199 _unused: [u8; 0],
1200}
1201#[repr(C)]
1202#[derive(Debug, Copy, Clone)]
1203pub struct gs_texrender {
1204 _unused: [u8; 0],
1205}
1206#[repr(C)]
1207#[derive(Debug, Copy, Clone)]
1208pub struct gs_shader_param {
1209 _unused: [u8; 0],
1210}
1211#[repr(C)]
1212#[derive(Debug, Copy, Clone)]
1213pub struct gs_effect {
1214 _unused: [u8; 0],
1215}
1216#[repr(C)]
1217#[derive(Debug, Copy, Clone)]
1218pub struct gs_effect_technique {
1219 _unused: [u8; 0],
1220}
1221#[repr(C)]
1222#[derive(Debug, Copy, Clone)]
1223pub struct gs_effect_pass {
1224 _unused: [u8; 0],
1225}
1226#[repr(C)]
1227#[derive(Debug, Copy, Clone)]
1228pub struct gs_effect_param {
1229 _unused: [u8; 0],
1230}
1231#[repr(C)]
1232#[derive(Debug, Copy, Clone)]
1233pub struct gs_device {
1234 _unused: [u8; 0],
1235}
1236#[repr(C)]
1237#[derive(Debug, Copy, Clone)]
1238pub struct graphics_subsystem {
1239 _unused: [u8; 0],
1240}
1241pub type gs_texture_t = gs_texture;
1242pub type gs_stagesurf_t = gs_stage_surface;
1243pub type gs_zstencil_t = gs_zstencil_buffer;
1244pub type gs_vertbuffer_t = gs_vertex_buffer;
1245pub type gs_indexbuffer_t = gs_index_buffer;
1246pub type gs_samplerstate_t = gs_sampler_state;
1247pub type gs_swapchain_t = gs_swap_chain;
1248pub type gs_timer_t = gs_timer;
1249#[repr(C)]
1250#[derive(Debug, Copy, Clone)]
1251pub struct gs_timer_range {
1252 _unused: [u8; 0],
1253}
1254pub type gs_timer_range_t = gs_timer_range;
1255#[repr(C)]
1256#[derive(Debug, Copy, Clone)]
1257pub struct gs_texture_render {
1258 _unused: [u8; 0],
1259}
1260pub type gs_texrender_t = gs_texture_render;
1261pub type gs_shader_t = gs_shader;
1262pub type gs_sparam_t = gs_shader_param;
1263pub type gs_effect_t = gs_effect;
1264pub type gs_technique_t = gs_effect_technique;
1265pub type gs_epass_t = gs_effect_pass;
1266pub type gs_eparam_t = gs_effect_param;
1267pub type gs_device_t = gs_device;
1268pub type gs_sync_t = ::std::os::raw::c_void;
1269pub type graphics_t = graphics_subsystem;
1270pub const gs_shader_param_type_GS_SHADER_PARAM_UNKNOWN: gs_shader_param_type = 0;
1271pub const gs_shader_param_type_GS_SHADER_PARAM_BOOL: gs_shader_param_type = 1;
1272pub const gs_shader_param_type_GS_SHADER_PARAM_FLOAT: gs_shader_param_type = 2;
1273pub const gs_shader_param_type_GS_SHADER_PARAM_INT: gs_shader_param_type = 3;
1274pub const gs_shader_param_type_GS_SHADER_PARAM_STRING: gs_shader_param_type = 4;
1275pub const gs_shader_param_type_GS_SHADER_PARAM_VEC2: gs_shader_param_type = 5;
1276pub const gs_shader_param_type_GS_SHADER_PARAM_VEC3: gs_shader_param_type = 6;
1277pub const gs_shader_param_type_GS_SHADER_PARAM_VEC4: gs_shader_param_type = 7;
1278pub const gs_shader_param_type_GS_SHADER_PARAM_INT2: gs_shader_param_type = 8;
1279pub const gs_shader_param_type_GS_SHADER_PARAM_INT3: gs_shader_param_type = 9;
1280pub const gs_shader_param_type_GS_SHADER_PARAM_INT4: gs_shader_param_type = 10;
1281pub const gs_shader_param_type_GS_SHADER_PARAM_MATRIX4X4: gs_shader_param_type = 11;
1282pub const gs_shader_param_type_GS_SHADER_PARAM_TEXTURE: gs_shader_param_type = 12;
1283pub type gs_shader_param_type = ::std::os::raw::c_int;
1284#[repr(C)]
1285#[derive(Debug, Copy, Clone)]
1286pub struct gs_shader_texture {
1287 pub tex: *mut gs_texture_t,
1288 pub srgb: bool,
1289}
1290#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1291const _: () = {
1292 ["Size of gs_shader_texture"][::std::mem::size_of::<gs_shader_texture>() - 16usize];
1293 ["Alignment of gs_shader_texture"][::std::mem::align_of::<gs_shader_texture>() - 8usize];
1294 ["Offset of field: gs_shader_texture::tex"]
1295 [::std::mem::offset_of!(gs_shader_texture, tex) - 0usize];
1296 ["Offset of field: gs_shader_texture::srgb"]
1297 [::std::mem::offset_of!(gs_shader_texture, srgb) - 8usize];
1298};
1299#[repr(C)]
1300#[derive(Debug, Copy, Clone)]
1301pub struct gs_shader_param_info {
1302 pub type_: gs_shader_param_type,
1303 pub name: *const ::std::os::raw::c_char,
1304}
1305#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1306const _: () = {
1307 ["Size of gs_shader_param_info"][::std::mem::size_of::<gs_shader_param_info>() - 16usize];
1308 ["Alignment of gs_shader_param_info"][::std::mem::align_of::<gs_shader_param_info>() - 8usize];
1309 ["Offset of field: gs_shader_param_info::type_"]
1310 [::std::mem::offset_of!(gs_shader_param_info, type_) - 0usize];
1311 ["Offset of field: gs_shader_param_info::name"]
1312 [::std::mem::offset_of!(gs_shader_param_info, name) - 8usize];
1313};
1314pub const gs_shader_type_GS_SHADER_VERTEX: gs_shader_type = 0;
1315pub const gs_shader_type_GS_SHADER_PIXEL: gs_shader_type = 1;
1316pub type gs_shader_type = ::std::os::raw::c_int;
1317#[repr(C)]
1318#[derive(Debug, Copy, Clone)]
1319pub struct gs_effect_param_info {
1320 pub name: *const ::std::os::raw::c_char,
1321 pub type_: gs_shader_param_type,
1322}
1323#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1324const _: () = {
1325 ["Size of gs_effect_param_info"][::std::mem::size_of::<gs_effect_param_info>() - 16usize];
1326 ["Alignment of gs_effect_param_info"][::std::mem::align_of::<gs_effect_param_info>() - 8usize];
1327 ["Offset of field: gs_effect_param_info::name"]
1328 [::std::mem::offset_of!(gs_effect_param_info, name) - 0usize];
1329 ["Offset of field: gs_effect_param_info::type_"]
1330 [::std::mem::offset_of!(gs_effect_param_info, type_) - 8usize];
1331};
1332#[repr(C)]
1333#[derive(Debug, Copy, Clone)]
1334pub struct gs_window {
1335 pub hwnd: *mut ::std::os::raw::c_void,
1336}
1337#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1338const _: () = {
1339 ["Size of gs_window"][::std::mem::size_of::<gs_window>() - 8usize];
1340 ["Alignment of gs_window"][::std::mem::align_of::<gs_window>() - 8usize];
1341 ["Offset of field: gs_window::hwnd"][::std::mem::offset_of!(gs_window, hwnd) - 0usize];
1342};
1343#[repr(C)]
1344pub struct gs_init_data {
1345 pub window: gs_window,
1346 pub cx: u32,
1347 pub cy: u32,
1348 pub num_backbuffers: u32,
1349 pub format: gs_color_format,
1350 pub zsformat: gs_zstencil_format,
1351 pub adapter: u32,
1352}
1353#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1354const _: () = {
1355 ["Size of gs_init_data"][::std::mem::size_of::<gs_init_data>() - 32usize];
1356 ["Alignment of gs_init_data"][::std::mem::align_of::<gs_init_data>() - 8usize];
1357 ["Offset of field: gs_init_data::window"]
1358 [::std::mem::offset_of!(gs_init_data, window) - 0usize];
1359 ["Offset of field: gs_init_data::cx"][::std::mem::offset_of!(gs_init_data, cx) - 8usize];
1360 ["Offset of field: gs_init_data::cy"][::std::mem::offset_of!(gs_init_data, cy) - 12usize];
1361 ["Offset of field: gs_init_data::num_backbuffers"]
1362 [::std::mem::offset_of!(gs_init_data, num_backbuffers) - 16usize];
1363 ["Offset of field: gs_init_data::format"]
1364 [::std::mem::offset_of!(gs_init_data, format) - 20usize];
1365 ["Offset of field: gs_init_data::zsformat"]
1366 [::std::mem::offset_of!(gs_init_data, zsformat) - 24usize];
1367 ["Offset of field: gs_init_data::adapter"]
1368 [::std::mem::offset_of!(gs_init_data, adapter) - 28usize];
1369};
1370pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_STRAIGHT: gs_image_alpha_mode = 0;
1371pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_PREMULTIPLY_SRGB: gs_image_alpha_mode = 1;
1372pub const gs_image_alpha_mode_GS_IMAGE_ALPHA_PREMULTIPLY: gs_image_alpha_mode = 2;
1373pub type gs_image_alpha_mode = ::std::os::raw::c_int;
1374#[repr(C)]
1375#[derive(Debug, Copy, Clone)]
1376pub struct gs_duplicator {
1377 _unused: [u8; 0],
1378}
1379pub type gs_duplicator_t = gs_duplicator;
1380#[repr(C)]
1381#[derive(Copy, Clone)]
1382pub struct vec2 {
1383 pub __bindgen_anon_1: vec2__bindgen_ty_1,
1384}
1385#[repr(C)]
1386#[derive(Copy, Clone)]
1387pub union vec2__bindgen_ty_1 {
1388 pub __bindgen_anon_1: vec2__bindgen_ty_1__bindgen_ty_1,
1389 pub ptr: [f32; 2usize],
1390}
1391#[repr(C)]
1392#[derive(Debug, Copy, Clone)]
1393pub struct vec2__bindgen_ty_1__bindgen_ty_1 {
1394 pub x: f32,
1395 pub y: f32,
1396}
1397#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1398const _: () = {
1399 ["Size of vec2__bindgen_ty_1__bindgen_ty_1"]
1400 [::std::mem::size_of::<vec2__bindgen_ty_1__bindgen_ty_1>() - 8usize];
1401 ["Alignment of vec2__bindgen_ty_1__bindgen_ty_1"]
1402 [::std::mem::align_of::<vec2__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1403 ["Offset of field: vec2__bindgen_ty_1__bindgen_ty_1::x"]
1404 [::std::mem::offset_of!(vec2__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1405 ["Offset of field: vec2__bindgen_ty_1__bindgen_ty_1::y"]
1406 [::std::mem::offset_of!(vec2__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1407};
1408#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1409const _: () = {
1410 ["Size of vec2__bindgen_ty_1"][::std::mem::size_of::<vec2__bindgen_ty_1>() - 8usize];
1411 ["Alignment of vec2__bindgen_ty_1"][::std::mem::align_of::<vec2__bindgen_ty_1>() - 4usize];
1412 ["Offset of field: vec2__bindgen_ty_1::ptr"]
1413 [::std::mem::offset_of!(vec2__bindgen_ty_1, ptr) - 0usize];
1414};
1415#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1416const _: () = {
1417 ["Size of vec2"][::std::mem::size_of::<vec2>() - 8usize];
1418 ["Alignment of vec2"][::std::mem::align_of::<vec2>() - 4usize];
1419};
1420#[repr(C)]
1421#[repr(align(16))]
1422#[derive(Copy, Clone)]
1423pub struct vec4 {
1424 pub __bindgen_anon_1: vec4__bindgen_ty_1,
1425}
1426#[repr(C)]
1427#[repr(align(16))]
1428#[derive(Copy, Clone)]
1429pub union vec4__bindgen_ty_1 {
1430 pub __bindgen_anon_1: vec4__bindgen_ty_1__bindgen_ty_1,
1431 pub ptr: [f32; 4usize],
1432 pub m: __m128,
1433}
1434#[repr(C)]
1435#[derive(Debug, Copy, Clone)]
1436pub struct vec4__bindgen_ty_1__bindgen_ty_1 {
1437 pub x: f32,
1438 pub y: f32,
1439 pub z: f32,
1440 pub w: f32,
1441}
1442#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1443const _: () = {
1444 ["Size of vec4__bindgen_ty_1__bindgen_ty_1"]
1445 [::std::mem::size_of::<vec4__bindgen_ty_1__bindgen_ty_1>() - 16usize];
1446 ["Alignment of vec4__bindgen_ty_1__bindgen_ty_1"]
1447 [::std::mem::align_of::<vec4__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1448 ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::x"]
1449 [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1450 ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::y"]
1451 [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1452 ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::z"]
1453 [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, z) - 8usize];
1454 ["Offset of field: vec4__bindgen_ty_1__bindgen_ty_1::w"]
1455 [::std::mem::offset_of!(vec4__bindgen_ty_1__bindgen_ty_1, w) - 12usize];
1456};
1457#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1458const _: () = {
1459 ["Size of vec4__bindgen_ty_1"][::std::mem::size_of::<vec4__bindgen_ty_1>() - 16usize];
1460 ["Alignment of vec4__bindgen_ty_1"][::std::mem::align_of::<vec4__bindgen_ty_1>() - 16usize];
1461 ["Offset of field: vec4__bindgen_ty_1::ptr"]
1462 [::std::mem::offset_of!(vec4__bindgen_ty_1, ptr) - 0usize];
1463 ["Offset of field: vec4__bindgen_ty_1::m"]
1464 [::std::mem::offset_of!(vec4__bindgen_ty_1, m) - 0usize];
1465};
1466#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1467const _: () = {
1468 ["Size of vec4"][::std::mem::size_of::<vec4>() - 16usize];
1469 ["Alignment of vec4"][::std::mem::align_of::<vec4>() - 16usize];
1470};
1471#[repr(C)]
1472#[repr(align(16))]
1473#[derive(Copy, Clone)]
1474pub struct vec3 {
1475 pub __bindgen_anon_1: vec3__bindgen_ty_1,
1476}
1477#[repr(C)]
1478#[repr(align(16))]
1479#[derive(Copy, Clone)]
1480pub union vec3__bindgen_ty_1 {
1481 pub __bindgen_anon_1: vec3__bindgen_ty_1__bindgen_ty_1,
1482 pub ptr: [f32; 4usize],
1483 pub m: __m128,
1484}
1485#[repr(C)]
1486#[derive(Debug, Copy, Clone)]
1487pub struct vec3__bindgen_ty_1__bindgen_ty_1 {
1488 pub x: f32,
1489 pub y: f32,
1490 pub z: f32,
1491 pub w: f32,
1492}
1493#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1494const _: () = {
1495 ["Size of vec3__bindgen_ty_1__bindgen_ty_1"]
1496 [::std::mem::size_of::<vec3__bindgen_ty_1__bindgen_ty_1>() - 16usize];
1497 ["Alignment of vec3__bindgen_ty_1__bindgen_ty_1"]
1498 [::std::mem::align_of::<vec3__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1499 ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::x"]
1500 [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, x) - 0usize];
1501 ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::y"]
1502 [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, y) - 4usize];
1503 ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::z"]
1504 [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, z) - 8usize];
1505 ["Offset of field: vec3__bindgen_ty_1__bindgen_ty_1::w"]
1506 [::std::mem::offset_of!(vec3__bindgen_ty_1__bindgen_ty_1, w) - 12usize];
1507};
1508#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1509const _: () = {
1510 ["Size of vec3__bindgen_ty_1"][::std::mem::size_of::<vec3__bindgen_ty_1>() - 16usize];
1511 ["Alignment of vec3__bindgen_ty_1"][::std::mem::align_of::<vec3__bindgen_ty_1>() - 16usize];
1512 ["Offset of field: vec3__bindgen_ty_1::ptr"]
1513 [::std::mem::offset_of!(vec3__bindgen_ty_1, ptr) - 0usize];
1514 ["Offset of field: vec3__bindgen_ty_1::m"]
1515 [::std::mem::offset_of!(vec3__bindgen_ty_1, m) - 0usize];
1516};
1517#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1518const _: () = {
1519 ["Size of vec3"][::std::mem::size_of::<vec3>() - 16usize];
1520 ["Alignment of vec3"][::std::mem::align_of::<vec3>() - 16usize];
1521};
1522#[repr(C)]
1523#[derive(Debug, Copy, Clone)]
1524pub struct audio_output {
1525 _unused: [u8; 0],
1526}
1527pub type audio_t = audio_output;
1528pub const audio_format_AUDIO_FORMAT_UNKNOWN: audio_format = 0;
1529pub const audio_format_AUDIO_FORMAT_U8BIT: audio_format = 1;
1530pub const audio_format_AUDIO_FORMAT_16BIT: audio_format = 2;
1531pub const audio_format_AUDIO_FORMAT_32BIT: audio_format = 3;
1532pub const audio_format_AUDIO_FORMAT_FLOAT: audio_format = 4;
1533pub const audio_format_AUDIO_FORMAT_U8BIT_PLANAR: audio_format = 5;
1534pub const audio_format_AUDIO_FORMAT_16BIT_PLANAR: audio_format = 6;
1535pub const audio_format_AUDIO_FORMAT_32BIT_PLANAR: audio_format = 7;
1536pub const audio_format_AUDIO_FORMAT_FLOAT_PLANAR: audio_format = 8;
1537pub type audio_format = ::std::os::raw::c_int;
1538#[doc = "< Unknown setting, fallback is stereo."]
1539pub const speaker_layout_SPEAKERS_UNKNOWN: speaker_layout = 0;
1540#[doc = "< Channels: MONO"]
1541pub const speaker_layout_SPEAKERS_MONO: speaker_layout = 1;
1542#[doc = "< Channels: FL, FR"]
1543pub const speaker_layout_SPEAKERS_STEREO: speaker_layout = 2;
1544#[doc = "< Channels: FL, FR, LFE"]
1545pub const speaker_layout_SPEAKERS_2POINT1: speaker_layout = 3;
1546#[doc = "< Channels: FL, FR, FC, RC"]
1547pub const speaker_layout_SPEAKERS_4POINT0: speaker_layout = 4;
1548#[doc = "< Channels: FL, FR, FC, LFE, RC"]
1549pub const speaker_layout_SPEAKERS_4POINT1: speaker_layout = 5;
1550#[doc = "< Channels: FL, FR, FC, LFE, RL, RR"]
1551pub const speaker_layout_SPEAKERS_5POINT1: speaker_layout = 6;
1552#[doc = "< Channels: FL, FR, FC, LFE, RL, RR, SL, SR"]
1553pub const speaker_layout_SPEAKERS_7POINT1: speaker_layout = 8;
1554#[doc = " The speaker layout describes where the speakers are located in the room.\n For OBS it dictates:\n * how many channels are available and\n * which channels are used for which speakers.\n\n Standard channel layouts where retrieved from ffmpeg documentation at:\n https://trac.ffmpeg.org/wiki/AudioChannelManipulation"]
1555pub type speaker_layout = ::std::os::raw::c_int;
1556#[repr(C)]
1557pub struct audio_data {
1558 pub data: [*mut u8; 8usize],
1559 pub frames: u32,
1560 pub timestamp: u64,
1561}
1562#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1563const _: () = {
1564 ["Size of audio_data"][::std::mem::size_of::<audio_data>() - 80usize];
1565 ["Alignment of audio_data"][::std::mem::align_of::<audio_data>() - 8usize];
1566 ["Offset of field: audio_data::data"][::std::mem::offset_of!(audio_data, data) - 0usize];
1567 ["Offset of field: audio_data::frames"][::std::mem::offset_of!(audio_data, frames) - 64usize];
1568 ["Offset of field: audio_data::timestamp"]
1569 [::std::mem::offset_of!(audio_data, timestamp) - 72usize];
1570};
1571#[repr(C)]
1572#[derive(Debug, Copy, Clone)]
1573pub struct audio_output_data {
1574 pub data: [*mut f32; 8usize],
1575}
1576#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1577const _: () = {
1578 ["Size of audio_output_data"][::std::mem::size_of::<audio_output_data>() - 64usize];
1579 ["Alignment of audio_output_data"][::std::mem::align_of::<audio_output_data>() - 8usize];
1580 ["Offset of field: audio_output_data::data"]
1581 [::std::mem::offset_of!(audio_output_data, data) - 0usize];
1582};
1583pub type audio_input_callback_t = ::std::option::Option<
1584 unsafe extern "C" fn(
1585 param: *mut ::std::os::raw::c_void,
1586 start_ts: u64,
1587 end_ts: u64,
1588 new_ts: *mut u64,
1589 active_mixers: u32,
1590 mixes: *mut audio_output_data,
1591 ) -> bool,
1592>;
1593#[repr(C)]
1594pub struct audio_output_info {
1595 pub name: *const ::std::os::raw::c_char,
1596 pub samples_per_sec: u32,
1597 pub format: audio_format,
1598 pub speakers: speaker_layout,
1599 pub input_callback: audio_input_callback_t,
1600 pub input_param: *mut ::std::os::raw::c_void,
1601}
1602#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1603const _: () = {
1604 ["Size of audio_output_info"][::std::mem::size_of::<audio_output_info>() - 40usize];
1605 ["Alignment of audio_output_info"][::std::mem::align_of::<audio_output_info>() - 8usize];
1606 ["Offset of field: audio_output_info::name"]
1607 [::std::mem::offset_of!(audio_output_info, name) - 0usize];
1608 ["Offset of field: audio_output_info::samples_per_sec"]
1609 [::std::mem::offset_of!(audio_output_info, samples_per_sec) - 8usize];
1610 ["Offset of field: audio_output_info::format"]
1611 [::std::mem::offset_of!(audio_output_info, format) - 12usize];
1612 ["Offset of field: audio_output_info::speakers"]
1613 [::std::mem::offset_of!(audio_output_info, speakers) - 16usize];
1614 ["Offset of field: audio_output_info::input_callback"]
1615 [::std::mem::offset_of!(audio_output_info, input_callback) - 24usize];
1616 ["Offset of field: audio_output_info::input_param"]
1617 [::std::mem::offset_of!(audio_output_info, input_param) - 32usize];
1618};
1619#[repr(C)]
1620pub struct audio_convert_info {
1621 pub samples_per_sec: u32,
1622 pub format: audio_format,
1623 pub speakers: speaker_layout,
1624 pub allow_clipping: bool,
1625}
1626#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1627const _: () = {
1628 ["Size of audio_convert_info"][::std::mem::size_of::<audio_convert_info>() - 16usize];
1629 ["Alignment of audio_convert_info"][::std::mem::align_of::<audio_convert_info>() - 4usize];
1630 ["Offset of field: audio_convert_info::samples_per_sec"]
1631 [::std::mem::offset_of!(audio_convert_info, samples_per_sec) - 0usize];
1632 ["Offset of field: audio_convert_info::format"]
1633 [::std::mem::offset_of!(audio_convert_info, format) - 4usize];
1634 ["Offset of field: audio_convert_info::speakers"]
1635 [::std::mem::offset_of!(audio_convert_info, speakers) - 8usize];
1636 ["Offset of field: audio_convert_info::allow_clipping"]
1637 [::std::mem::offset_of!(audio_convert_info, allow_clipping) - 12usize];
1638};
1639pub type audio_output_callback_t = ::std::option::Option<
1640 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, mix_idx: usize, data: *mut audio_data),
1641>;
1642#[repr(C)]
1643#[derive(Debug, Copy, Clone)]
1644pub struct video_frame {
1645 _unused: [u8; 0],
1646}
1647#[repr(C)]
1648#[derive(Debug, Copy, Clone)]
1649pub struct video_output {
1650 _unused: [u8; 0],
1651}
1652pub type video_t = video_output;
1653pub const video_format_VIDEO_FORMAT_NONE: video_format = 0;
1654pub const video_format_VIDEO_FORMAT_I420: video_format = 1;
1655pub const video_format_VIDEO_FORMAT_NV12: video_format = 2;
1656pub const video_format_VIDEO_FORMAT_YVYU: video_format = 3;
1657pub const video_format_VIDEO_FORMAT_YUY2: video_format = 4;
1658pub const video_format_VIDEO_FORMAT_UYVY: video_format = 5;
1659pub const video_format_VIDEO_FORMAT_RGBA: video_format = 6;
1660pub const video_format_VIDEO_FORMAT_BGRA: video_format = 7;
1661pub const video_format_VIDEO_FORMAT_BGRX: video_format = 8;
1662pub const video_format_VIDEO_FORMAT_Y800: video_format = 9;
1663pub const video_format_VIDEO_FORMAT_I444: video_format = 10;
1664pub const video_format_VIDEO_FORMAT_BGR3: video_format = 11;
1665pub const video_format_VIDEO_FORMAT_I422: video_format = 12;
1666pub const video_format_VIDEO_FORMAT_I40A: video_format = 13;
1667pub const video_format_VIDEO_FORMAT_I42A: video_format = 14;
1668pub const video_format_VIDEO_FORMAT_YUVA: video_format = 15;
1669pub const video_format_VIDEO_FORMAT_AYUV: video_format = 16;
1670pub const video_format_VIDEO_FORMAT_I010: video_format = 17;
1671pub const video_format_VIDEO_FORMAT_P010: video_format = 18;
1672pub const video_format_VIDEO_FORMAT_I210: video_format = 19;
1673pub const video_format_VIDEO_FORMAT_I412: video_format = 20;
1674pub const video_format_VIDEO_FORMAT_YA2L: video_format = 21;
1675pub const video_format_VIDEO_FORMAT_P216: video_format = 22;
1676pub const video_format_VIDEO_FORMAT_P416: video_format = 23;
1677pub const video_format_VIDEO_FORMAT_V210: video_format = 24;
1678pub const video_format_VIDEO_FORMAT_R10L: video_format = 25;
1679pub type video_format = ::std::os::raw::c_int;
1680pub const video_trc_VIDEO_TRC_DEFAULT: video_trc = 0;
1681pub const video_trc_VIDEO_TRC_SRGB: video_trc = 1;
1682pub const video_trc_VIDEO_TRC_PQ: video_trc = 2;
1683pub const video_trc_VIDEO_TRC_HLG: video_trc = 3;
1684pub type video_trc = ::std::os::raw::c_int;
1685pub const video_colorspace_VIDEO_CS_DEFAULT: video_colorspace = 0;
1686pub const video_colorspace_VIDEO_CS_601: video_colorspace = 1;
1687pub const video_colorspace_VIDEO_CS_709: video_colorspace = 2;
1688pub const video_colorspace_VIDEO_CS_SRGB: video_colorspace = 3;
1689pub const video_colorspace_VIDEO_CS_2100_PQ: video_colorspace = 4;
1690pub const video_colorspace_VIDEO_CS_2100_HLG: video_colorspace = 5;
1691pub type video_colorspace = ::std::os::raw::c_int;
1692pub const video_range_type_VIDEO_RANGE_DEFAULT: video_range_type = 0;
1693pub const video_range_type_VIDEO_RANGE_PARTIAL: video_range_type = 1;
1694pub const video_range_type_VIDEO_RANGE_FULL: video_range_type = 2;
1695pub type video_range_type = ::std::os::raw::c_int;
1696#[repr(C)]
1697pub struct video_data {
1698 pub data: [*mut u8; 8usize],
1699 pub linesize: [u32; 8usize],
1700 pub timestamp: u64,
1701}
1702#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1703const _: () = {
1704 ["Size of video_data"][::std::mem::size_of::<video_data>() - 104usize];
1705 ["Alignment of video_data"][::std::mem::align_of::<video_data>() - 8usize];
1706 ["Offset of field: video_data::data"][::std::mem::offset_of!(video_data, data) - 0usize];
1707 ["Offset of field: video_data::linesize"]
1708 [::std::mem::offset_of!(video_data, linesize) - 64usize];
1709 ["Offset of field: video_data::timestamp"]
1710 [::std::mem::offset_of!(video_data, timestamp) - 96usize];
1711};
1712#[repr(C)]
1713pub struct video_output_info {
1714 pub name: *const ::std::os::raw::c_char,
1715 pub format: video_format,
1716 pub fps_num: u32,
1717 pub fps_den: u32,
1718 pub width: u32,
1719 pub height: u32,
1720 pub cache_size: usize,
1721 pub colorspace: video_colorspace,
1722 pub range: video_range_type,
1723}
1724#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1725const _: () = {
1726 ["Size of video_output_info"][::std::mem::size_of::<video_output_info>() - 48usize];
1727 ["Alignment of video_output_info"][::std::mem::align_of::<video_output_info>() - 8usize];
1728 ["Offset of field: video_output_info::name"]
1729 [::std::mem::offset_of!(video_output_info, name) - 0usize];
1730 ["Offset of field: video_output_info::format"]
1731 [::std::mem::offset_of!(video_output_info, format) - 8usize];
1732 ["Offset of field: video_output_info::fps_num"]
1733 [::std::mem::offset_of!(video_output_info, fps_num) - 12usize];
1734 ["Offset of field: video_output_info::fps_den"]
1735 [::std::mem::offset_of!(video_output_info, fps_den) - 16usize];
1736 ["Offset of field: video_output_info::width"]
1737 [::std::mem::offset_of!(video_output_info, width) - 20usize];
1738 ["Offset of field: video_output_info::height"]
1739 [::std::mem::offset_of!(video_output_info, height) - 24usize];
1740 ["Offset of field: video_output_info::cache_size"]
1741 [::std::mem::offset_of!(video_output_info, cache_size) - 32usize];
1742 ["Offset of field: video_output_info::colorspace"]
1743 [::std::mem::offset_of!(video_output_info, colorspace) - 40usize];
1744 ["Offset of field: video_output_info::range"]
1745 [::std::mem::offset_of!(video_output_info, range) - 44usize];
1746};
1747pub const video_scale_type_VIDEO_SCALE_DEFAULT: video_scale_type = 0;
1748pub const video_scale_type_VIDEO_SCALE_POINT: video_scale_type = 1;
1749pub const video_scale_type_VIDEO_SCALE_FAST_BILINEAR: video_scale_type = 2;
1750pub const video_scale_type_VIDEO_SCALE_BILINEAR: video_scale_type = 3;
1751pub const video_scale_type_VIDEO_SCALE_BICUBIC: video_scale_type = 4;
1752pub type video_scale_type = ::std::os::raw::c_int;
1753#[repr(C)]
1754pub struct video_scale_info {
1755 pub format: video_format,
1756 pub width: u32,
1757 pub height: u32,
1758 pub range: video_range_type,
1759 pub colorspace: video_colorspace,
1760}
1761#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1762const _: () = {
1763 ["Size of video_scale_info"][::std::mem::size_of::<video_scale_info>() - 20usize];
1764 ["Alignment of video_scale_info"][::std::mem::align_of::<video_scale_info>() - 4usize];
1765 ["Offset of field: video_scale_info::format"]
1766 [::std::mem::offset_of!(video_scale_info, format) - 0usize];
1767 ["Offset of field: video_scale_info::width"]
1768 [::std::mem::offset_of!(video_scale_info, width) - 4usize];
1769 ["Offset of field: video_scale_info::height"]
1770 [::std::mem::offset_of!(video_scale_info, height) - 8usize];
1771 ["Offset of field: video_scale_info::range"]
1772 [::std::mem::offset_of!(video_scale_info, range) - 12usize];
1773 ["Offset of field: video_scale_info::colorspace"]
1774 [::std::mem::offset_of!(video_scale_info, colorspace) - 16usize];
1775};
1776pub const call_param_type_CALL_PARAM_TYPE_VOID: call_param_type = 0;
1777pub const call_param_type_CALL_PARAM_TYPE_INT: call_param_type = 1;
1778pub const call_param_type_CALL_PARAM_TYPE_FLOAT: call_param_type = 2;
1779pub const call_param_type_CALL_PARAM_TYPE_BOOL: call_param_type = 3;
1780pub const call_param_type_CALL_PARAM_TYPE_PTR: call_param_type = 4;
1781pub const call_param_type_CALL_PARAM_TYPE_STRING: call_param_type = 5;
1782pub type call_param_type = ::std::os::raw::c_int;
1783#[repr(C)]
1784pub struct calldata {
1785 pub stack: *mut u8,
1786 pub size: usize,
1787 pub capacity: usize,
1788 pub fixed: bool,
1789}
1790#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1791const _: () = {
1792 ["Size of calldata"][::std::mem::size_of::<calldata>() - 32usize];
1793 ["Alignment of calldata"][::std::mem::align_of::<calldata>() - 8usize];
1794 ["Offset of field: calldata::stack"][::std::mem::offset_of!(calldata, stack) - 0usize];
1795 ["Offset of field: calldata::size"][::std::mem::offset_of!(calldata, size) - 8usize];
1796 ["Offset of field: calldata::capacity"][::std::mem::offset_of!(calldata, capacity) - 16usize];
1797 ["Offset of field: calldata::fixed"][::std::mem::offset_of!(calldata, fixed) - 24usize];
1798};
1799pub type calldata_t = calldata;
1800#[repr(C)]
1801#[derive(Debug, Copy, Clone)]
1802pub struct signal_handler {
1803 _unused: [u8; 0],
1804}
1805pub type signal_handler_t = signal_handler;
1806pub type global_signal_callback_t = ::std::option::Option<
1807 unsafe extern "C" fn(
1808 arg1: *mut ::std::os::raw::c_void,
1809 arg2: *const ::std::os::raw::c_char,
1810 arg3: *mut calldata_t,
1811 ),
1812>;
1813pub type signal_callback_t = ::std::option::Option<
1814 unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut calldata_t),
1815>;
1816#[repr(C)]
1817#[derive(Debug, Copy, Clone)]
1818pub struct proc_handler {
1819 _unused: [u8; 0],
1820}
1821pub type proc_handler_t = proc_handler;
1822pub type proc_handler_proc_t = ::std::option::Option<
1823 unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut calldata_t),
1824>;
1825#[repr(C)]
1826pub struct media_frames_per_second {
1827 pub numerator: u32,
1828 pub denominator: u32,
1829}
1830#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1831const _: () = {
1832 ["Size of media_frames_per_second"][::std::mem::size_of::<media_frames_per_second>() - 8usize];
1833 ["Alignment of media_frames_per_second"]
1834 [::std::mem::align_of::<media_frames_per_second>() - 4usize];
1835 ["Offset of field: media_frames_per_second::numerator"]
1836 [::std::mem::offset_of!(media_frames_per_second, numerator) - 0usize];
1837 ["Offset of field: media_frames_per_second::denominator"]
1838 [::std::mem::offset_of!(media_frames_per_second, denominator) - 4usize];
1839};
1840#[repr(C)]
1841#[derive(Debug, Copy, Clone)]
1842pub struct obs_data {
1843 _unused: [u8; 0],
1844}
1845#[repr(C)]
1846#[derive(Debug, Copy, Clone)]
1847pub struct obs_data_item {
1848 _unused: [u8; 0],
1849}
1850#[repr(C)]
1851#[derive(Debug, Copy, Clone)]
1852pub struct obs_data_array {
1853 _unused: [u8; 0],
1854}
1855pub type obs_data_t = obs_data;
1856pub type obs_data_item_t = obs_data_item;
1857pub type obs_data_array_t = obs_data_array;
1858pub const obs_data_type_OBS_DATA_NULL: obs_data_type = 0;
1859pub const obs_data_type_OBS_DATA_STRING: obs_data_type = 1;
1860pub const obs_data_type_OBS_DATA_NUMBER: obs_data_type = 2;
1861pub const obs_data_type_OBS_DATA_BOOLEAN: obs_data_type = 3;
1862pub const obs_data_type_OBS_DATA_OBJECT: obs_data_type = 4;
1863pub const obs_data_type_OBS_DATA_ARRAY: obs_data_type = 5;
1864pub type obs_data_type = ::std::os::raw::c_int;
1865pub const obs_data_number_type_OBS_DATA_NUM_INVALID: obs_data_number_type = 0;
1866pub const obs_data_number_type_OBS_DATA_NUM_INT: obs_data_number_type = 1;
1867pub const obs_data_number_type_OBS_DATA_NUM_DOUBLE: obs_data_number_type = 2;
1868pub type obs_data_number_type = ::std::os::raw::c_int;
1869pub const obs_property_type_OBS_PROPERTY_INVALID: obs_property_type = 0;
1870pub const obs_property_type_OBS_PROPERTY_BOOL: obs_property_type = 1;
1871pub const obs_property_type_OBS_PROPERTY_INT: obs_property_type = 2;
1872pub const obs_property_type_OBS_PROPERTY_FLOAT: obs_property_type = 3;
1873pub const obs_property_type_OBS_PROPERTY_TEXT: obs_property_type = 4;
1874pub const obs_property_type_OBS_PROPERTY_PATH: obs_property_type = 5;
1875pub const obs_property_type_OBS_PROPERTY_LIST: obs_property_type = 6;
1876pub const obs_property_type_OBS_PROPERTY_COLOR: obs_property_type = 7;
1877pub const obs_property_type_OBS_PROPERTY_BUTTON: obs_property_type = 8;
1878pub const obs_property_type_OBS_PROPERTY_FONT: obs_property_type = 9;
1879pub const obs_property_type_OBS_PROPERTY_EDITABLE_LIST: obs_property_type = 10;
1880pub const obs_property_type_OBS_PROPERTY_FRAME_RATE: obs_property_type = 11;
1881pub const obs_property_type_OBS_PROPERTY_GROUP: obs_property_type = 12;
1882pub const obs_property_type_OBS_PROPERTY_COLOR_ALPHA: obs_property_type = 13;
1883pub type obs_property_type = ::std::os::raw::c_int;
1884pub const obs_combo_format_OBS_COMBO_FORMAT_INVALID: obs_combo_format = 0;
1885pub const obs_combo_format_OBS_COMBO_FORMAT_INT: obs_combo_format = 1;
1886pub const obs_combo_format_OBS_COMBO_FORMAT_FLOAT: obs_combo_format = 2;
1887pub const obs_combo_format_OBS_COMBO_FORMAT_STRING: obs_combo_format = 3;
1888pub const obs_combo_format_OBS_COMBO_FORMAT_BOOL: obs_combo_format = 4;
1889pub type obs_combo_format = ::std::os::raw::c_int;
1890pub const obs_combo_type_OBS_COMBO_TYPE_INVALID: obs_combo_type = 0;
1891pub const obs_combo_type_OBS_COMBO_TYPE_EDITABLE: obs_combo_type = 1;
1892pub const obs_combo_type_OBS_COMBO_TYPE_LIST: obs_combo_type = 2;
1893pub const obs_combo_type_OBS_COMBO_TYPE_RADIO: obs_combo_type = 3;
1894pub type obs_combo_type = ::std::os::raw::c_int;
1895pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_STRINGS: obs_editable_list_type = 0;
1896pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_FILES: obs_editable_list_type = 1;
1897pub const obs_editable_list_type_OBS_EDITABLE_LIST_TYPE_FILES_AND_URLS: obs_editable_list_type = 2;
1898pub type obs_editable_list_type = ::std::os::raw::c_int;
1899pub const obs_path_type_OBS_PATH_FILE: obs_path_type = 0;
1900pub const obs_path_type_OBS_PATH_FILE_SAVE: obs_path_type = 1;
1901pub const obs_path_type_OBS_PATH_DIRECTORY: obs_path_type = 2;
1902pub type obs_path_type = ::std::os::raw::c_int;
1903pub const obs_text_type_OBS_TEXT_DEFAULT: obs_text_type = 0;
1904pub const obs_text_type_OBS_TEXT_PASSWORD: obs_text_type = 1;
1905pub const obs_text_type_OBS_TEXT_MULTILINE: obs_text_type = 2;
1906pub const obs_text_type_OBS_TEXT_INFO: obs_text_type = 3;
1907pub type obs_text_type = ::std::os::raw::c_int;
1908pub const obs_text_info_type_OBS_TEXT_INFO_NORMAL: obs_text_info_type = 0;
1909pub const obs_text_info_type_OBS_TEXT_INFO_WARNING: obs_text_info_type = 1;
1910pub const obs_text_info_type_OBS_TEXT_INFO_ERROR: obs_text_info_type = 2;
1911pub type obs_text_info_type = ::std::os::raw::c_int;
1912pub const obs_number_type_OBS_NUMBER_SCROLLER: obs_number_type = 0;
1913pub const obs_number_type_OBS_NUMBER_SLIDER: obs_number_type = 1;
1914pub type obs_number_type = ::std::os::raw::c_int;
1915pub const obs_group_type_OBS_COMBO_INVALID: obs_group_type = 0;
1916pub const obs_group_type_OBS_GROUP_NORMAL: obs_group_type = 1;
1917pub const obs_group_type_OBS_GROUP_CHECKABLE: obs_group_type = 2;
1918pub type obs_group_type = ::std::os::raw::c_int;
1919pub const obs_button_type_OBS_BUTTON_DEFAULT: obs_button_type = 0;
1920pub const obs_button_type_OBS_BUTTON_URL: obs_button_type = 1;
1921pub type obs_button_type = ::std::os::raw::c_int;
1922#[repr(C)]
1923#[derive(Debug, Copy, Clone)]
1924pub struct obs_properties {
1925 _unused: [u8; 0],
1926}
1927#[repr(C)]
1928#[derive(Debug, Copy, Clone)]
1929pub struct obs_property {
1930 _unused: [u8; 0],
1931}
1932pub type obs_properties_t = obs_properties;
1933pub type obs_property_t = obs_property;
1934#[doc = " Callback for when a button property is clicked. If the properties\n need to be refreshed due to changes to the property layout, return true,\n otherwise return false."]
1935pub type obs_property_clicked_t = ::std::option::Option<
1936 unsafe extern "C" fn(
1937 props: *mut obs_properties_t,
1938 property: *mut obs_property_t,
1939 data: *mut ::std::os::raw::c_void,
1940 ) -> bool,
1941>;
1942#[doc = " Optional callback for when a property is modified. If the properties\n need to be refreshed due to changes to the property layout, return true,\n otherwise return false."]
1943pub type obs_property_modified_t = ::std::option::Option<
1944 unsafe extern "C" fn(
1945 props: *mut obs_properties_t,
1946 property: *mut obs_property_t,
1947 settings: *mut obs_data_t,
1948 ) -> bool,
1949>;
1950pub type obs_property_modified2_t = ::std::option::Option<
1951 unsafe extern "C" fn(
1952 priv_: *mut ::std::os::raw::c_void,
1953 props: *mut obs_properties_t,
1954 property: *mut obs_property_t,
1955 settings: *mut obs_data_t,
1956 ) -> bool,
1957>;
1958pub const obs_interaction_flags_INTERACT_NONE: obs_interaction_flags = 0;
1959pub const obs_interaction_flags_INTERACT_CAPS_KEY: obs_interaction_flags = 1;
1960pub const obs_interaction_flags_INTERACT_SHIFT_KEY: obs_interaction_flags = 2;
1961pub const obs_interaction_flags_INTERACT_CONTROL_KEY: obs_interaction_flags = 4;
1962pub const obs_interaction_flags_INTERACT_ALT_KEY: obs_interaction_flags = 8;
1963pub const obs_interaction_flags_INTERACT_MOUSE_LEFT: obs_interaction_flags = 16;
1964pub const obs_interaction_flags_INTERACT_MOUSE_MIDDLE: obs_interaction_flags = 32;
1965pub const obs_interaction_flags_INTERACT_MOUSE_RIGHT: obs_interaction_flags = 64;
1966pub const obs_interaction_flags_INTERACT_COMMAND_KEY: obs_interaction_flags = 128;
1967pub const obs_interaction_flags_INTERACT_NUMLOCK_KEY: obs_interaction_flags = 256;
1968pub const obs_interaction_flags_INTERACT_IS_KEY_PAD: obs_interaction_flags = 512;
1969pub const obs_interaction_flags_INTERACT_IS_LEFT: obs_interaction_flags = 1024;
1970pub const obs_interaction_flags_INTERACT_IS_RIGHT: obs_interaction_flags = 2048;
1971pub type obs_interaction_flags = ::std::os::raw::c_int;
1972pub const obs_mouse_button_type_MOUSE_LEFT: obs_mouse_button_type = 0;
1973pub const obs_mouse_button_type_MOUSE_MIDDLE: obs_mouse_button_type = 1;
1974pub const obs_mouse_button_type_MOUSE_RIGHT: obs_mouse_button_type = 2;
1975pub type obs_mouse_button_type = ::std::os::raw::c_int;
1976#[repr(C)]
1977pub struct obs_mouse_event {
1978 pub modifiers: u32,
1979 pub x: i32,
1980 pub y: i32,
1981}
1982#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1983const _: () = {
1984 ["Size of obs_mouse_event"][::std::mem::size_of::<obs_mouse_event>() - 12usize];
1985 ["Alignment of obs_mouse_event"][::std::mem::align_of::<obs_mouse_event>() - 4usize];
1986 ["Offset of field: obs_mouse_event::modifiers"]
1987 [::std::mem::offset_of!(obs_mouse_event, modifiers) - 0usize];
1988 ["Offset of field: obs_mouse_event::x"][::std::mem::offset_of!(obs_mouse_event, x) - 4usize];
1989 ["Offset of field: obs_mouse_event::y"][::std::mem::offset_of!(obs_mouse_event, y) - 8usize];
1990};
1991#[repr(C)]
1992pub struct obs_key_event {
1993 pub modifiers: u32,
1994 pub text: *mut ::std::os::raw::c_char,
1995 pub native_modifiers: u32,
1996 pub native_scancode: u32,
1997 pub native_vkey: u32,
1998}
1999#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2000const _: () = {
2001 ["Size of obs_key_event"][::std::mem::size_of::<obs_key_event>() - 32usize];
2002 ["Alignment of obs_key_event"][::std::mem::align_of::<obs_key_event>() - 8usize];
2003 ["Offset of field: obs_key_event::modifiers"]
2004 [::std::mem::offset_of!(obs_key_event, modifiers) - 0usize];
2005 ["Offset of field: obs_key_event::text"][::std::mem::offset_of!(obs_key_event, text) - 8usize];
2006 ["Offset of field: obs_key_event::native_modifiers"]
2007 [::std::mem::offset_of!(obs_key_event, native_modifiers) - 16usize];
2008 ["Offset of field: obs_key_event::native_scancode"]
2009 [::std::mem::offset_of!(obs_key_event, native_scancode) - 20usize];
2010 ["Offset of field: obs_key_event::native_vkey"]
2011 [::std::mem::offset_of!(obs_key_event, native_vkey) - 24usize];
2012};
2013#[repr(C)]
2014#[derive(Debug, Copy, Clone)]
2015pub struct obs_context_data {
2016 _unused: [u8; 0],
2017}
2018#[repr(C)]
2019#[derive(Debug, Copy, Clone)]
2020pub struct obs_display {
2021 _unused: [u8; 0],
2022}
2023#[repr(C)]
2024#[derive(Debug, Copy, Clone)]
2025pub struct obs_view {
2026 _unused: [u8; 0],
2027}
2028#[repr(C)]
2029#[derive(Debug, Copy, Clone)]
2030pub struct obs_source {
2031 _unused: [u8; 0],
2032}
2033#[repr(C)]
2034#[derive(Debug, Copy, Clone)]
2035pub struct obs_scene {
2036 _unused: [u8; 0],
2037}
2038#[repr(C)]
2039#[derive(Debug, Copy, Clone)]
2040pub struct obs_scene_item {
2041 _unused: [u8; 0],
2042}
2043#[repr(C)]
2044#[derive(Debug, Copy, Clone)]
2045pub struct obs_output {
2046 _unused: [u8; 0],
2047}
2048#[repr(C)]
2049#[derive(Debug, Copy, Clone)]
2050pub struct obs_encoder {
2051 _unused: [u8; 0],
2052}
2053#[repr(C)]
2054#[derive(Debug, Copy, Clone)]
2055pub struct obs_encoder_group {
2056 _unused: [u8; 0],
2057}
2058#[repr(C)]
2059#[derive(Debug, Copy, Clone)]
2060pub struct obs_service {
2061 _unused: [u8; 0],
2062}
2063#[repr(C)]
2064#[derive(Debug, Copy, Clone)]
2065pub struct obs_module {
2066 _unused: [u8; 0],
2067}
2068#[repr(C)]
2069#[derive(Debug, Copy, Clone)]
2070pub struct obs_module_metadata {
2071 _unused: [u8; 0],
2072}
2073#[repr(C)]
2074#[derive(Debug, Copy, Clone)]
2075pub struct obs_fader {
2076 _unused: [u8; 0],
2077}
2078#[repr(C)]
2079#[derive(Debug, Copy, Clone)]
2080pub struct obs_volmeter {
2081 _unused: [u8; 0],
2082}
2083#[repr(C)]
2084#[derive(Debug, Copy, Clone)]
2085pub struct obs_canvas {
2086 _unused: [u8; 0],
2087}
2088pub type obs_object_t = obs_context_data;
2089pub type obs_display_t = obs_display;
2090pub type obs_view_t = obs_view;
2091pub type obs_source_t = obs_source;
2092pub type obs_scene_t = obs_scene;
2093pub type obs_sceneitem_t = obs_scene_item;
2094pub type obs_output_t = obs_output;
2095pub type obs_encoder_t = obs_encoder;
2096pub type obs_encoder_group_t = obs_encoder_group;
2097pub type obs_service_t = obs_service;
2098pub type obs_module_t = obs_module;
2099pub type obs_module_metadata_t = obs_module_metadata;
2100pub type obs_fader_t = obs_fader;
2101pub type obs_volmeter_t = obs_volmeter;
2102pub type obs_canvas_t = obs_canvas;
2103#[repr(C)]
2104#[derive(Debug, Copy, Clone)]
2105pub struct obs_weak_object {
2106 _unused: [u8; 0],
2107}
2108pub type obs_weak_object_t = obs_weak_object;
2109#[repr(C)]
2110#[derive(Debug, Copy, Clone)]
2111pub struct obs_weak_source {
2112 _unused: [u8; 0],
2113}
2114pub type obs_weak_source_t = obs_weak_source;
2115#[repr(C)]
2116#[derive(Debug, Copy, Clone)]
2117pub struct obs_weak_output {
2118 _unused: [u8; 0],
2119}
2120pub type obs_weak_output_t = obs_weak_output;
2121#[repr(C)]
2122#[derive(Debug, Copy, Clone)]
2123pub struct obs_weak_encoder {
2124 _unused: [u8; 0],
2125}
2126pub type obs_weak_encoder_t = obs_weak_encoder;
2127#[repr(C)]
2128#[derive(Debug, Copy, Clone)]
2129pub struct obs_weak_service {
2130 _unused: [u8; 0],
2131}
2132pub type obs_weak_service_t = obs_weak_service;
2133#[repr(C)]
2134#[derive(Debug, Copy, Clone)]
2135pub struct obs_weak_canvas {
2136 _unused: [u8; 0],
2137}
2138pub type obs_weak_canvas_t = obs_weak_canvas;
2139pub type obs_missing_file_cb = ::std::option::Option<
2140 unsafe extern "C" fn(
2141 src: *mut ::std::os::raw::c_void,
2142 new_path: *const ::std::os::raw::c_char,
2143 data: *mut ::std::os::raw::c_void,
2144 ),
2145>;
2146#[repr(C)]
2147#[derive(Debug, Copy, Clone)]
2148pub struct obs_missing_file {
2149 _unused: [u8; 0],
2150}
2151#[repr(C)]
2152#[derive(Debug, Copy, Clone)]
2153pub struct obs_missing_files {
2154 _unused: [u8; 0],
2155}
2156pub type obs_missing_file_t = obs_missing_file;
2157pub type obs_missing_files_t = obs_missing_files;
2158pub const obs_missing_file_src_OBS_MISSING_FILE_SOURCE: obs_missing_file_src = 0;
2159pub const obs_missing_file_src_OBS_MISSING_FILE_SCRIPT: obs_missing_file_src = 1;
2160pub type obs_missing_file_src = ::std::os::raw::c_int;
2161pub const obs_source_type_OBS_SOURCE_TYPE_INPUT: obs_source_type = 0;
2162pub const obs_source_type_OBS_SOURCE_TYPE_FILTER: obs_source_type = 1;
2163pub const obs_source_type_OBS_SOURCE_TYPE_TRANSITION: obs_source_type = 2;
2164pub const obs_source_type_OBS_SOURCE_TYPE_SCENE: obs_source_type = 3;
2165pub type obs_source_type = ::std::os::raw::c_int;
2166pub const obs_balance_type_OBS_BALANCE_TYPE_SINE_LAW: obs_balance_type = 0;
2167pub const obs_balance_type_OBS_BALANCE_TYPE_SQUARE_LAW: obs_balance_type = 1;
2168pub const obs_balance_type_OBS_BALANCE_TYPE_LINEAR: obs_balance_type = 2;
2169pub type obs_balance_type = ::std::os::raw::c_int;
2170pub const obs_icon_type_OBS_ICON_TYPE_UNKNOWN: obs_icon_type = 0;
2171pub const obs_icon_type_OBS_ICON_TYPE_IMAGE: obs_icon_type = 1;
2172pub const obs_icon_type_OBS_ICON_TYPE_COLOR: obs_icon_type = 2;
2173pub const obs_icon_type_OBS_ICON_TYPE_SLIDESHOW: obs_icon_type = 3;
2174pub const obs_icon_type_OBS_ICON_TYPE_AUDIO_INPUT: obs_icon_type = 4;
2175pub const obs_icon_type_OBS_ICON_TYPE_AUDIO_OUTPUT: obs_icon_type = 5;
2176pub const obs_icon_type_OBS_ICON_TYPE_DESKTOP_CAPTURE: obs_icon_type = 6;
2177pub const obs_icon_type_OBS_ICON_TYPE_WINDOW_CAPTURE: obs_icon_type = 7;
2178pub const obs_icon_type_OBS_ICON_TYPE_GAME_CAPTURE: obs_icon_type = 8;
2179pub const obs_icon_type_OBS_ICON_TYPE_CAMERA: obs_icon_type = 9;
2180pub const obs_icon_type_OBS_ICON_TYPE_TEXT: obs_icon_type = 10;
2181pub const obs_icon_type_OBS_ICON_TYPE_MEDIA: obs_icon_type = 11;
2182pub const obs_icon_type_OBS_ICON_TYPE_BROWSER: obs_icon_type = 12;
2183pub const obs_icon_type_OBS_ICON_TYPE_CUSTOM: obs_icon_type = 13;
2184pub const obs_icon_type_OBS_ICON_TYPE_PROCESS_AUDIO_OUTPUT: obs_icon_type = 14;
2185pub type obs_icon_type = ::std::os::raw::c_int;
2186pub const obs_media_state_OBS_MEDIA_STATE_NONE: obs_media_state = 0;
2187pub const obs_media_state_OBS_MEDIA_STATE_PLAYING: obs_media_state = 1;
2188pub const obs_media_state_OBS_MEDIA_STATE_OPENING: obs_media_state = 2;
2189pub const obs_media_state_OBS_MEDIA_STATE_BUFFERING: obs_media_state = 3;
2190pub const obs_media_state_OBS_MEDIA_STATE_PAUSED: obs_media_state = 4;
2191pub const obs_media_state_OBS_MEDIA_STATE_STOPPED: obs_media_state = 5;
2192pub const obs_media_state_OBS_MEDIA_STATE_ENDED: obs_media_state = 6;
2193pub const obs_media_state_OBS_MEDIA_STATE_ERROR: obs_media_state = 7;
2194pub type obs_media_state = ::std::os::raw::c_int;
2195#[doc = " @}"]
2196pub type obs_source_enum_proc_t = ::std::option::Option<
2197 unsafe extern "C" fn(
2198 parent: *mut obs_source_t,
2199 child: *mut obs_source_t,
2200 param: *mut ::std::os::raw::c_void,
2201 ),
2202>;
2203#[repr(C)]
2204#[derive(Debug, Copy, Clone)]
2205pub struct obs_source_audio_mix {
2206 pub output: [audio_output_data; 6usize],
2207}
2208#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2209const _: () = {
2210 ["Size of obs_source_audio_mix"][::std::mem::size_of::<obs_source_audio_mix>() - 384usize];
2211 ["Alignment of obs_source_audio_mix"][::std::mem::align_of::<obs_source_audio_mix>() - 8usize];
2212 ["Offset of field: obs_source_audio_mix::output"]
2213 [::std::mem::offset_of!(obs_source_audio_mix, output) - 0usize];
2214};
2215#[doc = " Source definition structure"]
2216#[repr(C)]
2217pub struct obs_source_info {
2218#[doc = " Unique string identifier for the source"]
2219 pub id: *const ::std::os::raw::c_char,
2220#[doc = " Type of source.\n\n OBS_SOURCE_TYPE_INPUT for input sources,\n OBS_SOURCE_TYPE_FILTER for filter sources, and\n OBS_SOURCE_TYPE_TRANSITION for transition sources."]
2221 pub type_: obs_source_type,
2222#[doc = " Source output flags"]
2223 pub output_flags: u32,
2224#[doc = " Get the translated name of the source type\n\n @param type_data The type_data variable of this structure\n @return The translated name of the source type"]
2225 pub get_name: ::std::option::Option<
2226 unsafe extern "C" fn(
2227 type_data: *mut ::std::os::raw::c_void,
2228 ) -> *const ::std::os::raw::c_char,
2229 >,
2230#[doc = " Creates the source data for the source\n\n @param settings Settings to initialize the source with\n @param source Source that this data is associated with\n @return The data associated with this source"]
2231 pub create: ::std::option::Option<
2232 unsafe extern "C" fn(
2233 settings: *mut obs_data_t,
2234 source: *mut obs_source_t,
2235 ) -> *mut ::std::os::raw::c_void,
2236 >,
2237#[doc = " Destroys the private data for the source\n\n Async sources must not call obs_source_output_video after returning\n from destroy"]
2238 pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2239#[doc = " Returns the width of the source. Required if this is an input\n source and has non-async video"]
2240 pub get_width:
2241 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u32>,
2242#[doc = " Returns the height of the source. Required if this is an input\n source and has non-async video"]
2243 pub get_height:
2244 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u32>,
2245#[doc = " Gets the default settings for this source\n\n @param\\[out\\] settings Data to assign default settings to\n @deprecated Use get_defaults2 if type_data is needed"]
2246 pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2247#[doc = " Gets the property information of this source\n\n @return The properties data\n @deprecated Use get_properties2 if type_data is needed"]
2248 pub get_properties: ::std::option::Option<
2249 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2250 >,
2251#[doc = " Updates the settings for this source\n\n @param data Source data\n @param settings New settings for this source"]
2252 pub update: ::std::option::Option<
2253 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2254 >,
2255#[doc = " Called when the source has been activated in the main view"]
2256 pub activate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2257#[doc = " Called when the source has been deactivated from the main view\n (no longer being played/displayed)"]
2258 pub deactivate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2259#[doc = " Called when the source is visible"]
2260 pub show: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2261#[doc = " Called when the source is no longer visible"]
2262 pub hide: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2263#[doc = " Called each video frame with the time elapsed\n\n @param data Source data\n @param seconds Seconds elapsed since the last frame"]
2264 pub video_tick: ::std::option::Option<
2265 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, seconds: f32),
2266 >,
2267#[doc = " Called when rendering the source with the graphics subsystem.\n\n If this is an input/transition source, this is called to draw the\n source texture with the graphics subsystem using the specified\n effect.\n\n If this is a filter source, it wraps source draw calls (for\n example applying a custom effect with custom parameters to a\n source). In this case, it's highly recommended to use the\n obs_source_process_filter function to automatically handle\n effect-based filter processing. However, you can implement custom\n draw handling as desired as well.\n\n If the source output flags do not include SOURCE_CUSTOM_DRAW, all\n a source needs to do is set the \"image\" parameter of the effect to\n the desired texture, and then draw. If the output flags include\n SOURCE_COLOR_MATRIX, you may optionally set the \"color_matrix\"\n parameter of the effect to a custom 4x4 conversion matrix (by\n default it will be set to an YUV->RGB conversion matrix)\n\n @param data Source data\n @param effect Effect to be used with this source. If the source\n output flags include SOURCE_CUSTOM_DRAW, this will\n be NULL, and the source is expected to process with\n an effect manually."]
2268 pub video_render: ::std::option::Option<
2269 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, effect: *mut gs_effect_t),
2270 >,
2271#[doc = " Called to filter raw async video data.\n\n @note This function is only used with filter sources.\n\n @param data Filter data\n @param frame Video frame to filter\n @return New video frame data. This can defer video data to\n be drawn later if time is needed for processing"]
2272 pub filter_video: ::std::option::Option<
2273 unsafe extern "C" fn(
2274 data: *mut ::std::os::raw::c_void,
2275 frame: *mut obs_source_frame,
2276 ) -> *mut obs_source_frame,
2277 >,
2278#[doc = " Called to filter raw audio data.\n\n @note This function is only used with filter sources.\n\n @param data Filter data\n @param audio Audio data to filter.\n @return Modified or new audio data. You can directly modify\n the data passed and return it, or you can defer audio\n data for later if time is needed for processing. If\n you are returning new data, that data must exist\n until the next call to the filter_audio callback or\n until the filter is removed/destroyed."]
2279 pub filter_audio: ::std::option::Option<
2280 unsafe extern "C" fn(
2281 data: *mut ::std::os::raw::c_void,
2282 audio: *mut obs_audio_data,
2283 ) -> *mut obs_audio_data,
2284 >,
2285#[doc = " Called to enumerate all active sources being used within this\n source. If the source has children that render audio/video it must\n implement this callback.\n\n @param data Filter data\n @param enum_callback Enumeration callback\n @param param User data to pass to callback"]
2286 pub enum_active_sources: ::std::option::Option<
2287 unsafe extern "C" fn(
2288 data: *mut ::std::os::raw::c_void,
2289 enum_callback: obs_source_enum_proc_t,
2290 param: *mut ::std::os::raw::c_void,
2291 ),
2292 >,
2293#[doc = " Called when saving a source. This is a separate function because\n sometimes a source needs to know when it is being saved so it\n doesn't always have to update the current settings until a certain\n point.\n\n @param data Source data\n @param settings Settings"]
2294 pub save: ::std::option::Option<
2295 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2296 >,
2297#[doc = " Called when loading a source from saved data. This should be called\n after all the loading sources have actually been created because\n sometimes there are sources that depend on each other.\n\n @param data Source data\n @param settings Settings"]
2298 pub load: ::std::option::Option<
2299 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2300 >,
2301#[doc = " Called when interacting with a source and a mouse-down or mouse-up\n occurs.\n\n @param data Source data\n @param event Mouse event properties\n @param type Mouse button pushed\n @param mouse_up Mouse event type (true if mouse-up)\n @param click_count Mouse click count (1 for single click, etc.)"]
2302 pub mouse_click: ::std::option::Option<
2303 unsafe extern "C" fn(
2304 data: *mut ::std::os::raw::c_void,
2305 event: *const obs_mouse_event,
2306 type_: i32,
2307 mouse_up: bool,
2308 click_count: u32,
2309 ),
2310 >,
2311#[doc = " Called when interacting with a source and a mouse-move occurs.\n\n @param data Source data\n @param event Mouse event properties\n @param mouse_leave Mouse leave state (true if mouse left source)"]
2312 pub mouse_move: ::std::option::Option<
2313 unsafe extern "C" fn(
2314 data: *mut ::std::os::raw::c_void,
2315 event: *const obs_mouse_event,
2316 mouse_leave: bool,
2317 ),
2318 >,
2319#[doc = " Called when interacting with a source and a mouse-wheel occurs.\n\n @param data Source data\n @param event Mouse event properties\n @param x_delta Movement delta in the horizontal direction\n @param y_delta Movement delta in the vertical direction"]
2320 pub mouse_wheel: ::std::option::Option<
2321 unsafe extern "C" fn(
2322 data: *mut ::std::os::raw::c_void,
2323 event: *const obs_mouse_event,
2324 x_delta: ::std::os::raw::c_int,
2325 y_delta: ::std::os::raw::c_int,
2326 ),
2327 >,
2328#[doc = " Called when interacting with a source and gain focus/lost focus event\n occurs.\n\n @param data Source data\n @param focus Focus state (true if focus gained)"]
2329 pub focus:
2330 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, focus: bool)>,
2331#[doc = " Called when interacting with a source and a key-up or key-down\n occurs.\n\n @param data Source data\n @param event Key event properties\n @param focus Key event type (true if mouse-up)"]
2332 pub key_click: ::std::option::Option<
2333 unsafe extern "C" fn(
2334 data: *mut ::std::os::raw::c_void,
2335 event: *const obs_key_event,
2336 key_up: bool,
2337 ),
2338 >,
2339#[doc = " Called when the filter is removed from a source\n\n @param data Filter data\n @param source Source that the filter being removed from"]
2340 pub filter_remove: ::std::option::Option<
2341 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
2342 >,
2343#[doc = " Private data associated with this entry"]
2344 pub type_data: *mut ::std::os::raw::c_void,
2345#[doc = " If defined, called to free private data on shutdown"]
2346 pub free_type_data:
2347 ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2348 pub audio_render: ::std::option::Option<
2349 unsafe extern "C" fn(
2350 data: *mut ::std::os::raw::c_void,
2351 ts_out: *mut u64,
2352 audio_output: *mut obs_source_audio_mix,
2353 mixers: u32,
2354 channels: usize,
2355 sample_rate: usize,
2356 ) -> bool,
2357 >,
2358#[doc = " Called to enumerate all active and inactive sources being used\n within this source. If this callback isn't implemented,\n enum_active_sources will be called instead.\n\n This is typically used if a source can have inactive child sources.\n\n @param data Filter data\n @param enum_callback Enumeration callback\n @param param User data to pass to callback"]
2359 pub enum_all_sources: ::std::option::Option<
2360 unsafe extern "C" fn(
2361 data: *mut ::std::os::raw::c_void,
2362 enum_callback: obs_source_enum_proc_t,
2363 param: *mut ::std::os::raw::c_void,
2364 ),
2365 >,
2366 pub transition_start:
2367 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2368 pub transition_stop:
2369 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2370#[doc = " Gets the default settings for this source\n\n If get_defaults is also defined both will be called, and the first\n call will be to get_defaults, then to get_defaults2.\n\n @param type_data The type_data variable of this structure\n @param\\[out\\] settings Data to assign default settings to"]
2371 pub get_defaults2: ::std::option::Option<
2372 unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2373 >,
2374#[doc = " Gets the property information of this source\n\n @param data Source data\n @param type_data The type_data variable of this structure\n @return The properties data"]
2375 pub get_properties2: ::std::option::Option<
2376 unsafe extern "C" fn(
2377 data: *mut ::std::os::raw::c_void,
2378 type_data: *mut ::std::os::raw::c_void,
2379 ) -> *mut obs_properties_t,
2380 >,
2381 pub audio_mix: ::std::option::Option<
2382 unsafe extern "C" fn(
2383 data: *mut ::std::os::raw::c_void,
2384 ts_out: *mut u64,
2385 audio_output: *mut audio_output_data,
2386 channels: usize,
2387 sample_rate: usize,
2388 ) -> bool,
2389 >,
2390#[doc = " Icon type for the source"]
2391 pub icon_type: obs_icon_type,
2392#[doc = " Media controls"]
2393 pub media_play_pause:
2394 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, pause: bool)>,
2395 pub media_restart:
2396 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2397 pub media_stop: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2398 pub media_next: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2399 pub media_previous:
2400 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2401 pub media_get_duration:
2402 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> i64>,
2403 pub media_get_time:
2404 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> i64>,
2405 pub media_set_time: ::std::option::Option<
2406 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, miliseconds: i64),
2407 >,
2408 pub media_get_state: ::std::option::Option<
2409 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> obs_media_state,
2410 >,
2411 pub version: u32,
2412 pub unversioned_id: *const ::std::os::raw::c_char,
2413#[doc = " Missing files"]
2414 pub missing_files: ::std::option::Option<
2415 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_missing_files_t,
2416 >,
2417#[doc = " Get color space"]
2418 pub video_get_color_space: ::std::option::Option<
2419 unsafe extern "C" fn(
2420 data: *mut ::std::os::raw::c_void,
2421 count: usize,
2422 preferred_spaces: *const gs_color_space,
2423 ) -> gs_color_space,
2424 >,
2425#[doc = " Called when the filter is added to a source\n\n @param data Filter data\n @param source Source that the filter is being added to"]
2426 pub filter_add: ::std::option::Option<
2427 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
2428 >,
2429}
2430#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2431const _: () = {
2432 ["Size of obs_source_info"][::std::mem::size_of::<obs_source_info>() - 408usize];
2433 ["Alignment of obs_source_info"][::std::mem::align_of::<obs_source_info>() - 8usize];
2434 ["Offset of field: obs_source_info::id"][::std::mem::offset_of!(obs_source_info, id) - 0usize];
2435 ["Offset of field: obs_source_info::type_"]
2436 [::std::mem::offset_of!(obs_source_info, type_) - 8usize];
2437 ["Offset of field: obs_source_info::output_flags"]
2438 [::std::mem::offset_of!(obs_source_info, output_flags) - 12usize];
2439 ["Offset of field: obs_source_info::get_name"]
2440 [::std::mem::offset_of!(obs_source_info, get_name) - 16usize];
2441 ["Offset of field: obs_source_info::create"]
2442 [::std::mem::offset_of!(obs_source_info, create) - 24usize];
2443 ["Offset of field: obs_source_info::destroy"]
2444 [::std::mem::offset_of!(obs_source_info, destroy) - 32usize];
2445 ["Offset of field: obs_source_info::get_width"]
2446 [::std::mem::offset_of!(obs_source_info, get_width) - 40usize];
2447 ["Offset of field: obs_source_info::get_height"]
2448 [::std::mem::offset_of!(obs_source_info, get_height) - 48usize];
2449 ["Offset of field: obs_source_info::get_defaults"]
2450 [::std::mem::offset_of!(obs_source_info, get_defaults) - 56usize];
2451 ["Offset of field: obs_source_info::get_properties"]
2452 [::std::mem::offset_of!(obs_source_info, get_properties) - 64usize];
2453 ["Offset of field: obs_source_info::update"]
2454 [::std::mem::offset_of!(obs_source_info, update) - 72usize];
2455 ["Offset of field: obs_source_info::activate"]
2456 [::std::mem::offset_of!(obs_source_info, activate) - 80usize];
2457 ["Offset of field: obs_source_info::deactivate"]
2458 [::std::mem::offset_of!(obs_source_info, deactivate) - 88usize];
2459 ["Offset of field: obs_source_info::show"]
2460 [::std::mem::offset_of!(obs_source_info, show) - 96usize];
2461 ["Offset of field: obs_source_info::hide"]
2462 [::std::mem::offset_of!(obs_source_info, hide) - 104usize];
2463 ["Offset of field: obs_source_info::video_tick"]
2464 [::std::mem::offset_of!(obs_source_info, video_tick) - 112usize];
2465 ["Offset of field: obs_source_info::video_render"]
2466 [::std::mem::offset_of!(obs_source_info, video_render) - 120usize];
2467 ["Offset of field: obs_source_info::filter_video"]
2468 [::std::mem::offset_of!(obs_source_info, filter_video) - 128usize];
2469 ["Offset of field: obs_source_info::filter_audio"]
2470 [::std::mem::offset_of!(obs_source_info, filter_audio) - 136usize];
2471 ["Offset of field: obs_source_info::enum_active_sources"]
2472 [::std::mem::offset_of!(obs_source_info, enum_active_sources) - 144usize];
2473 ["Offset of field: obs_source_info::save"]
2474 [::std::mem::offset_of!(obs_source_info, save) - 152usize];
2475 ["Offset of field: obs_source_info::load"]
2476 [::std::mem::offset_of!(obs_source_info, load) - 160usize];
2477 ["Offset of field: obs_source_info::mouse_click"]
2478 [::std::mem::offset_of!(obs_source_info, mouse_click) - 168usize];
2479 ["Offset of field: obs_source_info::mouse_move"]
2480 [::std::mem::offset_of!(obs_source_info, mouse_move) - 176usize];
2481 ["Offset of field: obs_source_info::mouse_wheel"]
2482 [::std::mem::offset_of!(obs_source_info, mouse_wheel) - 184usize];
2483 ["Offset of field: obs_source_info::focus"]
2484 [::std::mem::offset_of!(obs_source_info, focus) - 192usize];
2485 ["Offset of field: obs_source_info::key_click"]
2486 [::std::mem::offset_of!(obs_source_info, key_click) - 200usize];
2487 ["Offset of field: obs_source_info::filter_remove"]
2488 [::std::mem::offset_of!(obs_source_info, filter_remove) - 208usize];
2489 ["Offset of field: obs_source_info::type_data"]
2490 [::std::mem::offset_of!(obs_source_info, type_data) - 216usize];
2491 ["Offset of field: obs_source_info::free_type_data"]
2492 [::std::mem::offset_of!(obs_source_info, free_type_data) - 224usize];
2493 ["Offset of field: obs_source_info::audio_render"]
2494 [::std::mem::offset_of!(obs_source_info, audio_render) - 232usize];
2495 ["Offset of field: obs_source_info::enum_all_sources"]
2496 [::std::mem::offset_of!(obs_source_info, enum_all_sources) - 240usize];
2497 ["Offset of field: obs_source_info::transition_start"]
2498 [::std::mem::offset_of!(obs_source_info, transition_start) - 248usize];
2499 ["Offset of field: obs_source_info::transition_stop"]
2500 [::std::mem::offset_of!(obs_source_info, transition_stop) - 256usize];
2501 ["Offset of field: obs_source_info::get_defaults2"]
2502 [::std::mem::offset_of!(obs_source_info, get_defaults2) - 264usize];
2503 ["Offset of field: obs_source_info::get_properties2"]
2504 [::std::mem::offset_of!(obs_source_info, get_properties2) - 272usize];
2505 ["Offset of field: obs_source_info::audio_mix"]
2506 [::std::mem::offset_of!(obs_source_info, audio_mix) - 280usize];
2507 ["Offset of field: obs_source_info::icon_type"]
2508 [::std::mem::offset_of!(obs_source_info, icon_type) - 288usize];
2509 ["Offset of field: obs_source_info::media_play_pause"]
2510 [::std::mem::offset_of!(obs_source_info, media_play_pause) - 296usize];
2511 ["Offset of field: obs_source_info::media_restart"]
2512 [::std::mem::offset_of!(obs_source_info, media_restart) - 304usize];
2513 ["Offset of field: obs_source_info::media_stop"]
2514 [::std::mem::offset_of!(obs_source_info, media_stop) - 312usize];
2515 ["Offset of field: obs_source_info::media_next"]
2516 [::std::mem::offset_of!(obs_source_info, media_next) - 320usize];
2517 ["Offset of field: obs_source_info::media_previous"]
2518 [::std::mem::offset_of!(obs_source_info, media_previous) - 328usize];
2519 ["Offset of field: obs_source_info::media_get_duration"]
2520 [::std::mem::offset_of!(obs_source_info, media_get_duration) - 336usize];
2521 ["Offset of field: obs_source_info::media_get_time"]
2522 [::std::mem::offset_of!(obs_source_info, media_get_time) - 344usize];
2523 ["Offset of field: obs_source_info::media_set_time"]
2524 [::std::mem::offset_of!(obs_source_info, media_set_time) - 352usize];
2525 ["Offset of field: obs_source_info::media_get_state"]
2526 [::std::mem::offset_of!(obs_source_info, media_get_state) - 360usize];
2527 ["Offset of field: obs_source_info::version"]
2528 [::std::mem::offset_of!(obs_source_info, version) - 368usize];
2529 ["Offset of field: obs_source_info::unversioned_id"]
2530 [::std::mem::offset_of!(obs_source_info, unversioned_id) - 376usize];
2531 ["Offset of field: obs_source_info::missing_files"]
2532 [::std::mem::offset_of!(obs_source_info, missing_files) - 384usize];
2533 ["Offset of field: obs_source_info::video_get_color_space"]
2534 [::std::mem::offset_of!(obs_source_info, video_get_color_space) - 392usize];
2535 ["Offset of field: obs_source_info::filter_add"]
2536 [::std::mem::offset_of!(obs_source_info, filter_add) - 400usize];
2537};
2538#[doc = "< The encoder provides an audio codec"]
2539pub const obs_encoder_type_OBS_ENCODER_AUDIO: obs_encoder_type = 0;
2540#[doc = "< The encoder provides a video codec"]
2541pub const obs_encoder_type_OBS_ENCODER_VIDEO: obs_encoder_type = 1;
2542#[doc = " Specifies the encoder type"]
2543pub type obs_encoder_type = ::std::os::raw::c_int;
2544#[repr(C)]
2545pub struct encoder_packet_time {
2546 pub pts: i64,
2547 pub cts: u64,
2548 pub fer: u64,
2549 pub ferc: u64,
2550 pub pir: u64,
2551}
2552#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2553const _: () = {
2554 ["Size of encoder_packet_time"][::std::mem::size_of::<encoder_packet_time>() - 40usize];
2555 ["Alignment of encoder_packet_time"][::std::mem::align_of::<encoder_packet_time>() - 8usize];
2556 ["Offset of field: encoder_packet_time::pts"]
2557 [::std::mem::offset_of!(encoder_packet_time, pts) - 0usize];
2558 ["Offset of field: encoder_packet_time::cts"]
2559 [::std::mem::offset_of!(encoder_packet_time, cts) - 8usize];
2560 ["Offset of field: encoder_packet_time::fer"]
2561 [::std::mem::offset_of!(encoder_packet_time, fer) - 16usize];
2562 ["Offset of field: encoder_packet_time::ferc"]
2563 [::std::mem::offset_of!(encoder_packet_time, ferc) - 24usize];
2564 ["Offset of field: encoder_packet_time::pir"]
2565 [::std::mem::offset_of!(encoder_packet_time, pir) - 32usize];
2566};
2567#[doc = " Encoder output packet"]
2568#[repr(C)]
2569pub struct encoder_packet {
2570#[doc = "< Packet data"]
2571 pub data: *mut u8,
2572#[doc = "< Packet size"]
2573 pub size: usize,
2574#[doc = "< Presentation timestamp"]
2575 pub pts: i64,
2576#[doc = "< Decode timestamp"]
2577 pub dts: i64,
2578#[doc = "< Timebase numerator"]
2579 pub timebase_num: i32,
2580#[doc = "< Timebase denominator"]
2581 pub timebase_den: i32,
2582#[doc = "< Encoder type"]
2583 pub type_: obs_encoder_type,
2584#[doc = "< Is a keyframe"]
2585 pub keyframe: bool,
2586 pub dts_usec: i64,
2587 pub sys_dts_usec: i64,
2588#[doc = " Packet priority\n\n This is generally use by video encoders to specify the priority\n of the packet."]
2589 pub priority: ::std::os::raw::c_int,
2590#[doc = " Dropped packet priority\n\n If this packet needs to be dropped, the next packet must be of this\n priority or higher to continue transmission."]
2591 pub drop_priority: ::std::os::raw::c_int,
2592#[doc = " Audio track index (used with outputs)"]
2593 pub track_idx: usize,
2594#[doc = " Encoder from which the track originated from"]
2595 pub encoder: *mut obs_encoder_t,
2596}
2597#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2598const _: () = {
2599 ["Size of encoder_packet"][::std::mem::size_of::<encoder_packet>() - 88usize];
2600 ["Alignment of encoder_packet"][::std::mem::align_of::<encoder_packet>() - 8usize];
2601 ["Offset of field: encoder_packet::data"]
2602 [::std::mem::offset_of!(encoder_packet, data) - 0usize];
2603 ["Offset of field: encoder_packet::size"]
2604 [::std::mem::offset_of!(encoder_packet, size) - 8usize];
2605 ["Offset of field: encoder_packet::pts"][::std::mem::offset_of!(encoder_packet, pts) - 16usize];
2606 ["Offset of field: encoder_packet::dts"][::std::mem::offset_of!(encoder_packet, dts) - 24usize];
2607 ["Offset of field: encoder_packet::timebase_num"]
2608 [::std::mem::offset_of!(encoder_packet, timebase_num) - 32usize];
2609 ["Offset of field: encoder_packet::timebase_den"]
2610 [::std::mem::offset_of!(encoder_packet, timebase_den) - 36usize];
2611 ["Offset of field: encoder_packet::type_"]
2612 [::std::mem::offset_of!(encoder_packet, type_) - 40usize];
2613 ["Offset of field: encoder_packet::keyframe"]
2614 [::std::mem::offset_of!(encoder_packet, keyframe) - 44usize];
2615 ["Offset of field: encoder_packet::dts_usec"]
2616 [::std::mem::offset_of!(encoder_packet, dts_usec) - 48usize];
2617 ["Offset of field: encoder_packet::sys_dts_usec"]
2618 [::std::mem::offset_of!(encoder_packet, sys_dts_usec) - 56usize];
2619 ["Offset of field: encoder_packet::priority"]
2620 [::std::mem::offset_of!(encoder_packet, priority) - 64usize];
2621 ["Offset of field: encoder_packet::drop_priority"]
2622 [::std::mem::offset_of!(encoder_packet, drop_priority) - 68usize];
2623 ["Offset of field: encoder_packet::track_idx"]
2624 [::std::mem::offset_of!(encoder_packet, track_idx) - 72usize];
2625 ["Offset of field: encoder_packet::encoder"]
2626 [::std::mem::offset_of!(encoder_packet, encoder) - 80usize];
2627};
2628#[doc = " Encoder input frame"]
2629#[repr(C)]
2630pub struct encoder_frame {
2631#[doc = " Data for the frame/audio"]
2632 pub data: [*mut u8; 8usize],
2633#[doc = " size of each plane"]
2634 pub linesize: [u32; 8usize],
2635#[doc = " Number of frames (audio only)"]
2636 pub frames: u32,
2637#[doc = " Presentation timestamp"]
2638 pub pts: i64,
2639}
2640#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2641const _: () = {
2642 ["Size of encoder_frame"][::std::mem::size_of::<encoder_frame>() - 112usize];
2643 ["Alignment of encoder_frame"][::std::mem::align_of::<encoder_frame>() - 8usize];
2644 ["Offset of field: encoder_frame::data"][::std::mem::offset_of!(encoder_frame, data) - 0usize];
2645 ["Offset of field: encoder_frame::linesize"]
2646 [::std::mem::offset_of!(encoder_frame, linesize) - 64usize];
2647 ["Offset of field: encoder_frame::frames"]
2648 [::std::mem::offset_of!(encoder_frame, frames) - 96usize];
2649 ["Offset of field: encoder_frame::pts"][::std::mem::offset_of!(encoder_frame, pts) - 104usize];
2650};
2651#[doc = " Encoder region of interest"]
2652#[repr(C)]
2653pub struct obs_encoder_roi {
2654 pub top: u32,
2655 pub bottom: u32,
2656 pub left: u32,
2657 pub right: u32,
2658 pub priority: f32,
2659}
2660#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2661const _: () = {
2662 ["Size of obs_encoder_roi"][::std::mem::size_of::<obs_encoder_roi>() - 20usize];
2663 ["Alignment of obs_encoder_roi"][::std::mem::align_of::<obs_encoder_roi>() - 4usize];
2664 ["Offset of field: obs_encoder_roi::top"]
2665 [::std::mem::offset_of!(obs_encoder_roi, top) - 0usize];
2666 ["Offset of field: obs_encoder_roi::bottom"]
2667 [::std::mem::offset_of!(obs_encoder_roi, bottom) - 4usize];
2668 ["Offset of field: obs_encoder_roi::left"]
2669 [::std::mem::offset_of!(obs_encoder_roi, left) - 8usize];
2670 ["Offset of field: obs_encoder_roi::right"]
2671 [::std::mem::offset_of!(obs_encoder_roi, right) - 12usize];
2672 ["Offset of field: obs_encoder_roi::priority"]
2673 [::std::mem::offset_of!(obs_encoder_roi, priority) - 16usize];
2674};
2675#[doc = " Encoder input texture"]
2676#[repr(C)]
2677pub struct encoder_texture {
2678#[doc = " Shared texture handle, only set on Windows"]
2679 pub handle: u32,
2680#[doc = " Textures, length determined by format"]
2681 pub tex: [*mut gs_texture; 4usize],
2682}
2683#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2684const _: () = {
2685 ["Size of encoder_texture"][::std::mem::size_of::<encoder_texture>() - 40usize];
2686 ["Alignment of encoder_texture"][::std::mem::align_of::<encoder_texture>() - 8usize];
2687 ["Offset of field: encoder_texture::handle"]
2688 [::std::mem::offset_of!(encoder_texture, handle) - 0usize];
2689 ["Offset of field: encoder_texture::tex"]
2690 [::std::mem::offset_of!(encoder_texture, tex) - 8usize];
2691};
2692#[doc = " Encoder interface\n\n Encoders have a limited usage with OBS. You are not generally supposed to\n implement every encoder out there. Generally, these are limited or specific\n encoders for h264/aac for streaming and recording. It doesn't have to be\n *just* h264 or aac of course, but generally those are the expected encoders.\n\n That being said, other encoders will be kept in mind for future use."]
2693#[repr(C)]
2694pub struct obs_encoder_info {
2695#[doc = " Specifies the named identifier of this encoder"]
2696 pub id: *const ::std::os::raw::c_char,
2697#[doc = " Specifies the encoder type (video or audio)"]
2698 pub type_: obs_encoder_type,
2699#[doc = " Specifies the codec"]
2700 pub codec: *const ::std::os::raw::c_char,
2701#[doc = " Gets the full translated name of this encoder\n\n @param type_data The type_data variable of this structure\n @return Translated name of the encoder"]
2702 pub get_name: ::std::option::Option<
2703 unsafe extern "C" fn(
2704 type_data: *mut ::std::os::raw::c_void,
2705 ) -> *const ::std::os::raw::c_char,
2706 >,
2707#[doc = " Creates the encoder with the specified settings\n\n @param settings Settings for the encoder\n @param encoder OBS encoder context\n @return Data associated with this encoder context, or\n NULL if initialization failed."]
2708 pub create: ::std::option::Option<
2709 unsafe extern "C" fn(
2710 settings: *mut obs_data_t,
2711 encoder: *mut obs_encoder_t,
2712 ) -> *mut ::std::os::raw::c_void,
2713 >,
2714#[doc = " Destroys the encoder data\n\n @param data Data associated with this encoder context"]
2715 pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2716#[doc = " Encodes frame(s), and outputs encoded packets as they become\n available.\n\n @param data Data associated with this encoder\n context\n @param\\[in\\] frame Raw audio/video data to encode\n @param\\[out\\] packet Encoder packet output, if any\n @param\\[out\\] received_packet Set to true if a packet was received,\n false otherwise\n @return true if successful, false otherwise."]
2717 pub encode: ::std::option::Option<
2718 unsafe extern "C" fn(
2719 data: *mut ::std::os::raw::c_void,
2720 frame: *mut encoder_frame,
2721 packet: *mut encoder_packet,
2722 received_packet: *mut bool,
2723 ) -> bool,
2724 >,
2725#[doc = " Audio encoder only: Returns the frame size for this encoder"]
2726 pub get_frame_size:
2727 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> usize>,
2728#[doc = " Gets the default settings for this encoder\n\n @param\\[out\\] settings Data to assign default settings to"]
2729 pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2730#[doc = " Gets the property information of this encoder\n\n @return The properties data"]
2731 pub get_properties: ::std::option::Option<
2732 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2733 >,
2734#[doc = " Updates the settings for this encoder (usually used for things like\n changing bitrate while active)\n\n @param data Data associated with this encoder context\n @param settings New settings for this encoder\n @return true if successful, false otherwise"]
2735 pub update: ::std::option::Option<
2736 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t) -> bool,
2737 >,
2738#[doc = " Returns extra data associated with this encoder (usually header)\n\n @param data Data associated with this encoder context\n @param\\[out\\] extra_data Pointer to receive the extra data\n @param\\[out\\] size Pointer to receive the size of the extra\n data\n @return true if extra data available, false\n otherwise"]
2739 pub get_extra_data: ::std::option::Option<
2740 unsafe extern "C" fn(
2741 data: *mut ::std::os::raw::c_void,
2742 extra_data: *mut *mut u8,
2743 size: *mut usize,
2744 ) -> bool,
2745 >,
2746#[doc = " Gets the SEI data, if any\n\n @param data Data associated with this encoder context\n @param\\[out\\] sei_data Pointer to receive the SEI data\n @param\\[out\\] size Pointer to receive the SEI data size\n @return true if SEI data available, false otherwise"]
2747 pub get_sei_data: ::std::option::Option<
2748 unsafe extern "C" fn(
2749 data: *mut ::std::os::raw::c_void,
2750 sei_data: *mut *mut u8,
2751 size: *mut usize,
2752 ) -> bool,
2753 >,
2754#[doc = " Returns desired audio format and sample information\n\n @param data Data associated with this encoder context\n @param\\[in/out\\] info Audio format information"]
2755 pub get_audio_info: ::std::option::Option<
2756 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, info: *mut audio_convert_info),
2757 >,
2758#[doc = " Returns desired video format information\n\n @param data Data associated with this encoder context\n @param\\[in/out\\] info Video format information"]
2759 pub get_video_info: ::std::option::Option<
2760 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, info: *mut video_scale_info),
2761 >,
2762 pub type_data: *mut ::std::os::raw::c_void,
2763 pub free_type_data:
2764 ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2765 pub caps: u32,
2766#[doc = " Gets the default settings for this encoder\n\n If get_defaults is also defined both will be called, and the first\n call will be to get_defaults, then to get_defaults2.\n\n @param\\[out\\] settings Data to assign default settings to\n @param\\[in\\] typedata Type Data"]
2767 pub get_defaults2: ::std::option::Option<
2768 unsafe extern "C" fn(settings: *mut obs_data_t, type_data: *mut ::std::os::raw::c_void),
2769 >,
2770#[doc = " Gets the property information of this encoder\n\n @param\\[in\\] data Pointer from create (or null)\n @param\\[in\\] typedata Type Data\n @return The properties data"]
2771 pub get_properties2: ::std::option::Option<
2772 unsafe extern "C" fn(
2773 data: *mut ::std::os::raw::c_void,
2774 type_data: *mut ::std::os::raw::c_void,
2775 ) -> *mut obs_properties_t,
2776 >,
2777 pub encode_texture: ::std::option::Option<
2778 unsafe extern "C" fn(
2779 data: *mut ::std::os::raw::c_void,
2780 handle: u32,
2781 pts: i64,
2782 lock_key: u64,
2783 next_key: *mut u64,
2784 packet: *mut encoder_packet,
2785 received_packet: *mut bool,
2786 ) -> bool,
2787 >,
2788 pub encode_texture2: ::std::option::Option<
2789 unsafe extern "C" fn(
2790 data: *mut ::std::os::raw::c_void,
2791 texture: *mut encoder_texture,
2792 pts: i64,
2793 lock_key: u64,
2794 next_key: *mut u64,
2795 packet: *mut encoder_packet,
2796 received_packet: *mut bool,
2797 ) -> bool,
2798 >,
2799}
2800#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2801const _: () = {
2802 ["Size of obs_encoder_info"][::std::mem::size_of::<obs_encoder_info>() - 176usize];
2803 ["Alignment of obs_encoder_info"][::std::mem::align_of::<obs_encoder_info>() - 8usize];
2804 ["Offset of field: obs_encoder_info::id"]
2805 [::std::mem::offset_of!(obs_encoder_info, id) - 0usize];
2806 ["Offset of field: obs_encoder_info::type_"]
2807 [::std::mem::offset_of!(obs_encoder_info, type_) - 8usize];
2808 ["Offset of field: obs_encoder_info::codec"]
2809 [::std::mem::offset_of!(obs_encoder_info, codec) - 16usize];
2810 ["Offset of field: obs_encoder_info::get_name"]
2811 [::std::mem::offset_of!(obs_encoder_info, get_name) - 24usize];
2812 ["Offset of field: obs_encoder_info::create"]
2813 [::std::mem::offset_of!(obs_encoder_info, create) - 32usize];
2814 ["Offset of field: obs_encoder_info::destroy"]
2815 [::std::mem::offset_of!(obs_encoder_info, destroy) - 40usize];
2816 ["Offset of field: obs_encoder_info::encode"]
2817 [::std::mem::offset_of!(obs_encoder_info, encode) - 48usize];
2818 ["Offset of field: obs_encoder_info::get_frame_size"]
2819 [::std::mem::offset_of!(obs_encoder_info, get_frame_size) - 56usize];
2820 ["Offset of field: obs_encoder_info::get_defaults"]
2821 [::std::mem::offset_of!(obs_encoder_info, get_defaults) - 64usize];
2822 ["Offset of field: obs_encoder_info::get_properties"]
2823 [::std::mem::offset_of!(obs_encoder_info, get_properties) - 72usize];
2824 ["Offset of field: obs_encoder_info::update"]
2825 [::std::mem::offset_of!(obs_encoder_info, update) - 80usize];
2826 ["Offset of field: obs_encoder_info::get_extra_data"]
2827 [::std::mem::offset_of!(obs_encoder_info, get_extra_data) - 88usize];
2828 ["Offset of field: obs_encoder_info::get_sei_data"]
2829 [::std::mem::offset_of!(obs_encoder_info, get_sei_data) - 96usize];
2830 ["Offset of field: obs_encoder_info::get_audio_info"]
2831 [::std::mem::offset_of!(obs_encoder_info, get_audio_info) - 104usize];
2832 ["Offset of field: obs_encoder_info::get_video_info"]
2833 [::std::mem::offset_of!(obs_encoder_info, get_video_info) - 112usize];
2834 ["Offset of field: obs_encoder_info::type_data"]
2835 [::std::mem::offset_of!(obs_encoder_info, type_data) - 120usize];
2836 ["Offset of field: obs_encoder_info::free_type_data"]
2837 [::std::mem::offset_of!(obs_encoder_info, free_type_data) - 128usize];
2838 ["Offset of field: obs_encoder_info::caps"]
2839 [::std::mem::offset_of!(obs_encoder_info, caps) - 136usize];
2840 ["Offset of field: obs_encoder_info::get_defaults2"]
2841 [::std::mem::offset_of!(obs_encoder_info, get_defaults2) - 144usize];
2842 ["Offset of field: obs_encoder_info::get_properties2"]
2843 [::std::mem::offset_of!(obs_encoder_info, get_properties2) - 152usize];
2844 ["Offset of field: obs_encoder_info::encode_texture"]
2845 [::std::mem::offset_of!(obs_encoder_info, encode_texture) - 160usize];
2846 ["Offset of field: obs_encoder_info::encode_texture2"]
2847 [::std::mem::offset_of!(obs_encoder_info, encode_texture2) - 168usize];
2848};
2849#[repr(C)]
2850pub struct obs_output_info {
2851 pub id: *const ::std::os::raw::c_char,
2852 pub flags: u32,
2853 pub get_name: ::std::option::Option<
2854 unsafe extern "C" fn(
2855 type_data: *mut ::std::os::raw::c_void,
2856 ) -> *const ::std::os::raw::c_char,
2857 >,
2858 pub create: ::std::option::Option<
2859 unsafe extern "C" fn(
2860 settings: *mut obs_data_t,
2861 output: *mut obs_output_t,
2862 ) -> *mut ::std::os::raw::c_void,
2863 >,
2864 pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2865 pub start:
2866 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
2867 pub stop:
2868 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, ts: u64)>,
2869 pub raw_video: ::std::option::Option<
2870 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frame: *mut video_data),
2871 >,
2872 pub raw_audio: ::std::option::Option<
2873 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, frames: *mut audio_data),
2874 >,
2875 pub encoded_packet: ::std::option::Option<
2876 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, packet: *mut encoder_packet),
2877 >,
2878 pub update: ::std::option::Option<
2879 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
2880 >,
2881 pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
2882 pub get_properties: ::std::option::Option<
2883 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
2884 >,
2885 pub unused1: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
2886 pub get_total_bytes:
2887 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> u64>,
2888 pub get_dropped_frames: ::std::option::Option<
2889 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2890 >,
2891 pub type_data: *mut ::std::os::raw::c_void,
2892 pub free_type_data:
2893 ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
2894 pub get_congestion:
2895 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> f32>,
2896 pub get_connect_time_ms: ::std::option::Option<
2897 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2898 >,
2899 pub encoded_video_codecs: *const ::std::os::raw::c_char,
2900 pub encoded_audio_codecs: *const ::std::os::raw::c_char,
2901 pub raw_audio2: ::std::option::Option<
2902 unsafe extern "C" fn(
2903 data: *mut ::std::os::raw::c_void,
2904 idx: usize,
2905 frames: *mut audio_data,
2906 ),
2907 >,
2908 pub protocols: *const ::std::os::raw::c_char,
2909}
2910#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2911const _: () = {
2912 ["Size of obs_output_info"][::std::mem::size_of::<obs_output_info>() - 192usize];
2913 ["Alignment of obs_output_info"][::std::mem::align_of::<obs_output_info>() - 8usize];
2914 ["Offset of field: obs_output_info::id"][::std::mem::offset_of!(obs_output_info, id) - 0usize];
2915 ["Offset of field: obs_output_info::flags"]
2916 [::std::mem::offset_of!(obs_output_info, flags) - 8usize];
2917 ["Offset of field: obs_output_info::get_name"]
2918 [::std::mem::offset_of!(obs_output_info, get_name) - 16usize];
2919 ["Offset of field: obs_output_info::create"]
2920 [::std::mem::offset_of!(obs_output_info, create) - 24usize];
2921 ["Offset of field: obs_output_info::destroy"]
2922 [::std::mem::offset_of!(obs_output_info, destroy) - 32usize];
2923 ["Offset of field: obs_output_info::start"]
2924 [::std::mem::offset_of!(obs_output_info, start) - 40usize];
2925 ["Offset of field: obs_output_info::stop"]
2926 [::std::mem::offset_of!(obs_output_info, stop) - 48usize];
2927 ["Offset of field: obs_output_info::raw_video"]
2928 [::std::mem::offset_of!(obs_output_info, raw_video) - 56usize];
2929 ["Offset of field: obs_output_info::raw_audio"]
2930 [::std::mem::offset_of!(obs_output_info, raw_audio) - 64usize];
2931 ["Offset of field: obs_output_info::encoded_packet"]
2932 [::std::mem::offset_of!(obs_output_info, encoded_packet) - 72usize];
2933 ["Offset of field: obs_output_info::update"]
2934 [::std::mem::offset_of!(obs_output_info, update) - 80usize];
2935 ["Offset of field: obs_output_info::get_defaults"]
2936 [::std::mem::offset_of!(obs_output_info, get_defaults) - 88usize];
2937 ["Offset of field: obs_output_info::get_properties"]
2938 [::std::mem::offset_of!(obs_output_info, get_properties) - 96usize];
2939 ["Offset of field: obs_output_info::unused1"]
2940 [::std::mem::offset_of!(obs_output_info, unused1) - 104usize];
2941 ["Offset of field: obs_output_info::get_total_bytes"]
2942 [::std::mem::offset_of!(obs_output_info, get_total_bytes) - 112usize];
2943 ["Offset of field: obs_output_info::get_dropped_frames"]
2944 [::std::mem::offset_of!(obs_output_info, get_dropped_frames) - 120usize];
2945 ["Offset of field: obs_output_info::type_data"]
2946 [::std::mem::offset_of!(obs_output_info, type_data) - 128usize];
2947 ["Offset of field: obs_output_info::free_type_data"]
2948 [::std::mem::offset_of!(obs_output_info, free_type_data) - 136usize];
2949 ["Offset of field: obs_output_info::get_congestion"]
2950 [::std::mem::offset_of!(obs_output_info, get_congestion) - 144usize];
2951 ["Offset of field: obs_output_info::get_connect_time_ms"]
2952 [::std::mem::offset_of!(obs_output_info, get_connect_time_ms) - 152usize];
2953 ["Offset of field: obs_output_info::encoded_video_codecs"]
2954 [::std::mem::offset_of!(obs_output_info, encoded_video_codecs) - 160usize];
2955 ["Offset of field: obs_output_info::encoded_audio_codecs"]
2956 [::std::mem::offset_of!(obs_output_info, encoded_audio_codecs) - 168usize];
2957 ["Offset of field: obs_output_info::raw_audio2"]
2958 [::std::mem::offset_of!(obs_output_info, raw_audio2) - 176usize];
2959 ["Offset of field: obs_output_info::protocols"]
2960 [::std::mem::offset_of!(obs_output_info, protocols) - 184usize];
2961};
2962#[repr(C)]
2963#[derive(Debug, Copy, Clone)]
2964pub struct obs_service_resolution {
2965 pub cx: ::std::os::raw::c_int,
2966 pub cy: ::std::os::raw::c_int,
2967}
2968#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2969const _: () = {
2970 ["Size of obs_service_resolution"][::std::mem::size_of::<obs_service_resolution>() - 8usize];
2971 ["Alignment of obs_service_resolution"]
2972 [::std::mem::align_of::<obs_service_resolution>() - 4usize];
2973 ["Offset of field: obs_service_resolution::cx"]
2974 [::std::mem::offset_of!(obs_service_resolution, cx) - 0usize];
2975 ["Offset of field: obs_service_resolution::cy"]
2976 [::std::mem::offset_of!(obs_service_resolution, cy) - 4usize];
2977};
2978pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_SERVER_URL: obs_service_connect_info =
2979 0;
2980pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_ID: obs_service_connect_info = 2;
2981pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_STREAM_KEY: obs_service_connect_info =
2982 2;
2983pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_USERNAME: obs_service_connect_info = 4;
2984pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_PASSWORD: obs_service_connect_info = 6;
2985pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_ENCRYPT_PASSPHRASE:
2986 obs_service_connect_info = 8;
2987pub const obs_service_connect_info_OBS_SERVICE_CONNECT_INFO_BEARER_TOKEN: obs_service_connect_info =
2988 10;
2989pub type obs_service_connect_info = ::std::os::raw::c_int;
2990#[repr(C)]
2991#[derive(Debug, Copy, Clone)]
2992pub struct obs_service_info {
2993 pub id: *const ::std::os::raw::c_char,
2994 pub get_name: ::std::option::Option<
2995 unsafe extern "C" fn(
2996 type_data: *mut ::std::os::raw::c_void,
2997 ) -> *const ::std::os::raw::c_char,
2998 >,
2999 pub create: ::std::option::Option<
3000 unsafe extern "C" fn(
3001 settings: *mut obs_data_t,
3002 service: *mut obs_service_t,
3003 ) -> *mut ::std::os::raw::c_void,
3004 >,
3005 pub destroy: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3006 pub activate: ::std::option::Option<
3007 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3008 >,
3009 pub deactivate: ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void)>,
3010 pub update: ::std::option::Option<
3011 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, settings: *mut obs_data_t),
3012 >,
3013 pub get_defaults: ::std::option::Option<unsafe extern "C" fn(settings: *mut obs_data_t)>,
3014 pub get_properties: ::std::option::Option<
3015 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *mut obs_properties_t,
3016 >,
3017#[doc = " Called when getting ready to start up an output, before the encoders\n and output are initialized\n\n @param data Internal service data\n @param output Output context\n @return true to allow the output to start up,\n false to prevent output from starting up"]
3018 pub initialize: ::std::option::Option<
3019 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, output: *mut obs_output_t) -> bool,
3020 >,
3021 pub get_url: ::std::option::Option<
3022 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3023 >,
3024 pub get_key: ::std::option::Option<
3025 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3026 >,
3027 pub get_username: ::std::option::Option<
3028 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3029 >,
3030 pub get_password: ::std::option::Option<
3031 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3032 >,
3033 pub deprecated_1: ::std::option::Option<unsafe extern "C" fn() -> bool>,
3034 pub apply_encoder_settings: ::std::option::Option<
3035 unsafe extern "C" fn(
3036 data: *mut ::std::os::raw::c_void,
3037 video_encoder_settings: *mut obs_data_t,
3038 audio_encoder_settings: *mut obs_data_t,
3039 ),
3040 >,
3041 pub type_data: *mut ::std::os::raw::c_void,
3042 pub free_type_data:
3043 ::std::option::Option<unsafe extern "C" fn(type_data: *mut ::std::os::raw::c_void)>,
3044 pub get_output_type: ::std::option::Option<
3045 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3046 >,
3047 pub get_supported_resolutions: ::std::option::Option<
3048 unsafe extern "C" fn(
3049 data: *mut ::std::os::raw::c_void,
3050 resolutions: *mut *mut obs_service_resolution,
3051 count: *mut usize,
3052 ),
3053 >,
3054 pub get_max_fps: ::std::option::Option<
3055 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, fps: *mut ::std::os::raw::c_int),
3056 >,
3057 pub get_max_bitrate: ::std::option::Option<
3058 unsafe extern "C" fn(
3059 data: *mut ::std::os::raw::c_void,
3060 video_bitrate: *mut ::std::os::raw::c_int,
3061 audio_bitrate: *mut ::std::os::raw::c_int,
3062 ),
3063 >,
3064 pub get_supported_video_codecs: ::std::option::Option<
3065 unsafe extern "C" fn(
3066 data: *mut ::std::os::raw::c_void,
3067 ) -> *mut *const ::std::os::raw::c_char,
3068 >,
3069 pub get_protocol: ::std::option::Option<
3070 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
3071 >,
3072 pub get_supported_audio_codecs: ::std::option::Option<
3073 unsafe extern "C" fn(
3074 data: *mut ::std::os::raw::c_void,
3075 ) -> *mut *const ::std::os::raw::c_char,
3076 >,
3077 pub get_connect_info: ::std::option::Option<
3078 unsafe extern "C" fn(
3079 data: *mut ::std::os::raw::c_void,
3080 type_: u32,
3081 ) -> *const ::std::os::raw::c_char,
3082 >,
3083 pub can_try_to_connect:
3084 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> bool>,
3085}
3086#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3087const _: () = {
3088 ["Size of obs_service_info"][::std::mem::size_of::<obs_service_info>() - 216usize];
3089 ["Alignment of obs_service_info"][::std::mem::align_of::<obs_service_info>() - 8usize];
3090 ["Offset of field: obs_service_info::id"]
3091 [::std::mem::offset_of!(obs_service_info, id) - 0usize];
3092 ["Offset of field: obs_service_info::get_name"]
3093 [::std::mem::offset_of!(obs_service_info, get_name) - 8usize];
3094 ["Offset of field: obs_service_info::create"]
3095 [::std::mem::offset_of!(obs_service_info, create) - 16usize];
3096 ["Offset of field: obs_service_info::destroy"]
3097 [::std::mem::offset_of!(obs_service_info, destroy) - 24usize];
3098 ["Offset of field: obs_service_info::activate"]
3099 [::std::mem::offset_of!(obs_service_info, activate) - 32usize];
3100 ["Offset of field: obs_service_info::deactivate"]
3101 [::std::mem::offset_of!(obs_service_info, deactivate) - 40usize];
3102 ["Offset of field: obs_service_info::update"]
3103 [::std::mem::offset_of!(obs_service_info, update) - 48usize];
3104 ["Offset of field: obs_service_info::get_defaults"]
3105 [::std::mem::offset_of!(obs_service_info, get_defaults) - 56usize];
3106 ["Offset of field: obs_service_info::get_properties"]
3107 [::std::mem::offset_of!(obs_service_info, get_properties) - 64usize];
3108 ["Offset of field: obs_service_info::initialize"]
3109 [::std::mem::offset_of!(obs_service_info, initialize) - 72usize];
3110 ["Offset of field: obs_service_info::get_url"]
3111 [::std::mem::offset_of!(obs_service_info, get_url) - 80usize];
3112 ["Offset of field: obs_service_info::get_key"]
3113 [::std::mem::offset_of!(obs_service_info, get_key) - 88usize];
3114 ["Offset of field: obs_service_info::get_username"]
3115 [::std::mem::offset_of!(obs_service_info, get_username) - 96usize];
3116 ["Offset of field: obs_service_info::get_password"]
3117 [::std::mem::offset_of!(obs_service_info, get_password) - 104usize];
3118 ["Offset of field: obs_service_info::deprecated_1"]
3119 [::std::mem::offset_of!(obs_service_info, deprecated_1) - 112usize];
3120 ["Offset of field: obs_service_info::apply_encoder_settings"]
3121 [::std::mem::offset_of!(obs_service_info, apply_encoder_settings) - 120usize];
3122 ["Offset of field: obs_service_info::type_data"]
3123 [::std::mem::offset_of!(obs_service_info, type_data) - 128usize];
3124 ["Offset of field: obs_service_info::free_type_data"]
3125 [::std::mem::offset_of!(obs_service_info, free_type_data) - 136usize];
3126 ["Offset of field: obs_service_info::get_output_type"]
3127 [::std::mem::offset_of!(obs_service_info, get_output_type) - 144usize];
3128 ["Offset of field: obs_service_info::get_supported_resolutions"]
3129 [::std::mem::offset_of!(obs_service_info, get_supported_resolutions) - 152usize];
3130 ["Offset of field: obs_service_info::get_max_fps"]
3131 [::std::mem::offset_of!(obs_service_info, get_max_fps) - 160usize];
3132 ["Offset of field: obs_service_info::get_max_bitrate"]
3133 [::std::mem::offset_of!(obs_service_info, get_max_bitrate) - 168usize];
3134 ["Offset of field: obs_service_info::get_supported_video_codecs"]
3135 [::std::mem::offset_of!(obs_service_info, get_supported_video_codecs) - 176usize];
3136 ["Offset of field: obs_service_info::get_protocol"]
3137 [::std::mem::offset_of!(obs_service_info, get_protocol) - 184usize];
3138 ["Offset of field: obs_service_info::get_supported_audio_codecs"]
3139 [::std::mem::offset_of!(obs_service_info, get_supported_audio_codecs) - 192usize];
3140 ["Offset of field: obs_service_info::get_connect_info"]
3141 [::std::mem::offset_of!(obs_service_info, get_connect_info) - 200usize];
3142 ["Offset of field: obs_service_info::can_try_to_connect"]
3143 [::std::mem::offset_of!(obs_service_info, can_try_to_connect) - 208usize];
3144};
3145#[doc = " @brief A simple cubic fader for controlling audio levels\n\n This is a very common type of software fader since it yields good\n results while being quite performant.\n The input value is mapped to mul values with the simple formula x^3."]
3146pub const obs_fader_type_OBS_FADER_CUBIC: obs_fader_type = 0;
3147#[doc = " @brief A fader compliant to IEC 60-268-18\n\n This type of fader has several segments with different slopes that\n map deflection linearly to dB values. The segments are defined as\n in the following table:\n\n@code\nDeflection | Volume\n------------------------------------------\n\\[ 100 %, 75 % \\] | \\[ 0 dB, -9 dB \\]\n\\[ 75 %, 50 % \\] | \\[ -9 dB, -20 dB \\]\n\\[ 50 %, 30 % \\] | \\[ -20 dB, -30 dB \\]\n\\[ 30 %, 15 % \\] | \\[ -30 dB, -40 dB \\]\n\\[ 15 %, 7.5 % \\] | \\[ -40 dB, -50 dB \\]\n\\[ 7.5 %, 2.5 % \\] | \\[ -50 dB, -60 dB \\]\n\\[ 2.5 %, 0 % \\] | \\[ -60 dB, -inf dB \\]\n@endcode"]
3148pub const obs_fader_type_OBS_FADER_IEC: obs_fader_type = 1;
3149#[doc = " @brief Logarithmic fader"]
3150pub const obs_fader_type_OBS_FADER_LOG: obs_fader_type = 2;
3151#[doc = " @brief Fader types"]
3152pub type obs_fader_type = ::std::os::raw::c_int;
3153#[doc = " @brief A simple peak meter measuring the maximum of all samples.\n\n This was a very common type of peak meter used for audio, but\n is not very accurate with regards to further audio processing."]
3154pub const obs_peak_meter_type_SAMPLE_PEAK_METER: obs_peak_meter_type = 0;
3155#[doc = " @brief An accurate peak meter measure the maximum of inter-samples.\n\n This meter is more computational intensive due to 4x oversampling\n to determine the true peak to an accuracy of +/- 0.5 dB."]
3156pub const obs_peak_meter_type_TRUE_PEAK_METER: obs_peak_meter_type = 1;
3157#[doc = " @brief Peak meter types"]
3158pub type obs_peak_meter_type = ::std::os::raw::c_int;
3159pub type obs_fader_changed_t =
3160 ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, db: f32)>;
3161pub type obs_volmeter_updated_t = ::std::option::Option<
3162 unsafe extern "C" fn(
3163 param: *mut ::std::os::raw::c_void,
3164 magnitude: *const f32,
3165 peak: *const f32,
3166 input_peak: *const f32,
3167 ),
3168>;
3169pub type obs_fader_conversion_t = ::std::option::Option<unsafe extern "C" fn(val: f32) -> f32>;
3170pub type obs_hotkey_id = usize;
3171pub type obs_hotkey_pair_id = usize;
3172pub const obs_key_OBS_KEY_NONE: obs_key = 0;
3173pub const obs_key_OBS_KEY_RETURN: obs_key = 1;
3174pub const obs_key_OBS_KEY_ENTER: obs_key = 2;
3175pub const obs_key_OBS_KEY_ESCAPE: obs_key = 3;
3176pub const obs_key_OBS_KEY_TAB: obs_key = 4;
3177pub const obs_key_OBS_KEY_BACKTAB: obs_key = 5;
3178pub const obs_key_OBS_KEY_BACKSPACE: obs_key = 6;
3179pub const obs_key_OBS_KEY_INSERT: obs_key = 7;
3180pub const obs_key_OBS_KEY_DELETE: obs_key = 8;
3181pub const obs_key_OBS_KEY_PAUSE: obs_key = 9;
3182pub const obs_key_OBS_KEY_PRINT: obs_key = 10;
3183pub const obs_key_OBS_KEY_SYSREQ: obs_key = 11;
3184pub const obs_key_OBS_KEY_CLEAR: obs_key = 12;
3185pub const obs_key_OBS_KEY_HOME: obs_key = 13;
3186pub const obs_key_OBS_KEY_END: obs_key = 14;
3187pub const obs_key_OBS_KEY_LEFT: obs_key = 15;
3188pub const obs_key_OBS_KEY_UP: obs_key = 16;
3189pub const obs_key_OBS_KEY_RIGHT: obs_key = 17;
3190pub const obs_key_OBS_KEY_DOWN: obs_key = 18;
3191pub const obs_key_OBS_KEY_PAGEUP: obs_key = 19;
3192pub const obs_key_OBS_KEY_PAGEDOWN: obs_key = 20;
3193pub const obs_key_OBS_KEY_SHIFT: obs_key = 21;
3194pub const obs_key_OBS_KEY_CONTROL: obs_key = 22;
3195pub const obs_key_OBS_KEY_META: obs_key = 23;
3196pub const obs_key_OBS_KEY_ALT: obs_key = 24;
3197pub const obs_key_OBS_KEY_ALTGR: obs_key = 25;
3198pub const obs_key_OBS_KEY_CAPSLOCK: obs_key = 26;
3199pub const obs_key_OBS_KEY_NUMLOCK: obs_key = 27;
3200pub const obs_key_OBS_KEY_SCROLLLOCK: obs_key = 28;
3201pub const obs_key_OBS_KEY_F1: obs_key = 29;
3202pub const obs_key_OBS_KEY_F2: obs_key = 30;
3203pub const obs_key_OBS_KEY_F3: obs_key = 31;
3204pub const obs_key_OBS_KEY_F4: obs_key = 32;
3205pub const obs_key_OBS_KEY_F5: obs_key = 33;
3206pub const obs_key_OBS_KEY_F6: obs_key = 34;
3207pub const obs_key_OBS_KEY_F7: obs_key = 35;
3208pub const obs_key_OBS_KEY_F8: obs_key = 36;
3209pub const obs_key_OBS_KEY_F9: obs_key = 37;
3210pub const obs_key_OBS_KEY_F10: obs_key = 38;
3211pub const obs_key_OBS_KEY_F11: obs_key = 39;
3212pub const obs_key_OBS_KEY_F12: obs_key = 40;
3213pub const obs_key_OBS_KEY_F13: obs_key = 41;
3214pub const obs_key_OBS_KEY_F14: obs_key = 42;
3215pub const obs_key_OBS_KEY_F15: obs_key = 43;
3216pub const obs_key_OBS_KEY_F16: obs_key = 44;
3217pub const obs_key_OBS_KEY_F17: obs_key = 45;
3218pub const obs_key_OBS_KEY_F18: obs_key = 46;
3219pub const obs_key_OBS_KEY_F19: obs_key = 47;
3220pub const obs_key_OBS_KEY_F20: obs_key = 48;
3221pub const obs_key_OBS_KEY_F21: obs_key = 49;
3222pub const obs_key_OBS_KEY_F22: obs_key = 50;
3223pub const obs_key_OBS_KEY_F23: obs_key = 51;
3224pub const obs_key_OBS_KEY_F24: obs_key = 52;
3225pub const obs_key_OBS_KEY_F25: obs_key = 53;
3226pub const obs_key_OBS_KEY_F26: obs_key = 54;
3227pub const obs_key_OBS_KEY_F27: obs_key = 55;
3228pub const obs_key_OBS_KEY_F28: obs_key = 56;
3229pub const obs_key_OBS_KEY_F29: obs_key = 57;
3230pub const obs_key_OBS_KEY_F30: obs_key = 58;
3231pub const obs_key_OBS_KEY_F31: obs_key = 59;
3232pub const obs_key_OBS_KEY_F32: obs_key = 60;
3233pub const obs_key_OBS_KEY_F33: obs_key = 61;
3234pub const obs_key_OBS_KEY_F34: obs_key = 62;
3235pub const obs_key_OBS_KEY_F35: obs_key = 63;
3236pub const obs_key_OBS_KEY_MENU: obs_key = 64;
3237pub const obs_key_OBS_KEY_HYPER_L: obs_key = 65;
3238pub const obs_key_OBS_KEY_HYPER_R: obs_key = 66;
3239pub const obs_key_OBS_KEY_HELP: obs_key = 67;
3240pub const obs_key_OBS_KEY_DIRECTION_L: obs_key = 68;
3241pub const obs_key_OBS_KEY_DIRECTION_R: obs_key = 69;
3242pub const obs_key_OBS_KEY_SPACE: obs_key = 70;
3243pub const obs_key_OBS_KEY_EXCLAM: obs_key = 71;
3244pub const obs_key_OBS_KEY_QUOTEDBL: obs_key = 72;
3245pub const obs_key_OBS_KEY_NUMBERSIGN: obs_key = 73;
3246pub const obs_key_OBS_KEY_DOLLAR: obs_key = 74;
3247pub const obs_key_OBS_KEY_PERCENT: obs_key = 75;
3248pub const obs_key_OBS_KEY_AMPERSAND: obs_key = 76;
3249pub const obs_key_OBS_KEY_APOSTROPHE: obs_key = 77;
3250pub const obs_key_OBS_KEY_PARENLEFT: obs_key = 78;
3251pub const obs_key_OBS_KEY_PARENRIGHT: obs_key = 79;
3252pub const obs_key_OBS_KEY_ASTERISK: obs_key = 80;
3253pub const obs_key_OBS_KEY_PLUS: obs_key = 81;
3254pub const obs_key_OBS_KEY_COMMA: obs_key = 82;
3255pub const obs_key_OBS_KEY_MINUS: obs_key = 83;
3256pub const obs_key_OBS_KEY_PERIOD: obs_key = 84;
3257pub const obs_key_OBS_KEY_SLASH: obs_key = 85;
3258pub const obs_key_OBS_KEY_0: obs_key = 86;
3259pub const obs_key_OBS_KEY_1: obs_key = 87;
3260pub const obs_key_OBS_KEY_2: obs_key = 88;
3261pub const obs_key_OBS_KEY_3: obs_key = 89;
3262pub const obs_key_OBS_KEY_4: obs_key = 90;
3263pub const obs_key_OBS_KEY_5: obs_key = 91;
3264pub const obs_key_OBS_KEY_6: obs_key = 92;
3265pub const obs_key_OBS_KEY_7: obs_key = 93;
3266pub const obs_key_OBS_KEY_8: obs_key = 94;
3267pub const obs_key_OBS_KEY_9: obs_key = 95;
3268pub const obs_key_OBS_KEY_NUMEQUAL: obs_key = 96;
3269pub const obs_key_OBS_KEY_NUMASTERISK: obs_key = 97;
3270pub const obs_key_OBS_KEY_NUMPLUS: obs_key = 98;
3271pub const obs_key_OBS_KEY_NUMCOMMA: obs_key = 99;
3272pub const obs_key_OBS_KEY_NUMMINUS: obs_key = 100;
3273pub const obs_key_OBS_KEY_NUMPERIOD: obs_key = 101;
3274pub const obs_key_OBS_KEY_NUMSLASH: obs_key = 102;
3275pub const obs_key_OBS_KEY_NUM0: obs_key = 103;
3276pub const obs_key_OBS_KEY_NUM1: obs_key = 104;
3277pub const obs_key_OBS_KEY_NUM2: obs_key = 105;
3278pub const obs_key_OBS_KEY_NUM3: obs_key = 106;
3279pub const obs_key_OBS_KEY_NUM4: obs_key = 107;
3280pub const obs_key_OBS_KEY_NUM5: obs_key = 108;
3281pub const obs_key_OBS_KEY_NUM6: obs_key = 109;
3282pub const obs_key_OBS_KEY_NUM7: obs_key = 110;
3283pub const obs_key_OBS_KEY_NUM8: obs_key = 111;
3284pub const obs_key_OBS_KEY_NUM9: obs_key = 112;
3285pub const obs_key_OBS_KEY_COLON: obs_key = 113;
3286pub const obs_key_OBS_KEY_SEMICOLON: obs_key = 114;
3287pub const obs_key_OBS_KEY_QUOTE: obs_key = 115;
3288pub const obs_key_OBS_KEY_LESS: obs_key = 116;
3289pub const obs_key_OBS_KEY_EQUAL: obs_key = 117;
3290pub const obs_key_OBS_KEY_GREATER: obs_key = 118;
3291pub const obs_key_OBS_KEY_QUESTION: obs_key = 119;
3292pub const obs_key_OBS_KEY_AT: obs_key = 120;
3293pub const obs_key_OBS_KEY_A: obs_key = 121;
3294pub const obs_key_OBS_KEY_B: obs_key = 122;
3295pub const obs_key_OBS_KEY_C: obs_key = 123;
3296pub const obs_key_OBS_KEY_D: obs_key = 124;
3297pub const obs_key_OBS_KEY_E: obs_key = 125;
3298pub const obs_key_OBS_KEY_F: obs_key = 126;
3299pub const obs_key_OBS_KEY_G: obs_key = 127;
3300pub const obs_key_OBS_KEY_H: obs_key = 128;
3301pub const obs_key_OBS_KEY_I: obs_key = 129;
3302pub const obs_key_OBS_KEY_J: obs_key = 130;
3303pub const obs_key_OBS_KEY_K: obs_key = 131;
3304pub const obs_key_OBS_KEY_L: obs_key = 132;
3305pub const obs_key_OBS_KEY_M: obs_key = 133;
3306pub const obs_key_OBS_KEY_N: obs_key = 134;
3307pub const obs_key_OBS_KEY_O: obs_key = 135;
3308pub const obs_key_OBS_KEY_P: obs_key = 136;
3309pub const obs_key_OBS_KEY_Q: obs_key = 137;
3310pub const obs_key_OBS_KEY_R: obs_key = 138;
3311pub const obs_key_OBS_KEY_S: obs_key = 139;
3312pub const obs_key_OBS_KEY_T: obs_key = 140;
3313pub const obs_key_OBS_KEY_U: obs_key = 141;
3314pub const obs_key_OBS_KEY_V: obs_key = 142;
3315pub const obs_key_OBS_KEY_W: obs_key = 143;
3316pub const obs_key_OBS_KEY_X: obs_key = 144;
3317pub const obs_key_OBS_KEY_Y: obs_key = 145;
3318pub const obs_key_OBS_KEY_Z: obs_key = 146;
3319pub const obs_key_OBS_KEY_BRACKETLEFT: obs_key = 147;
3320pub const obs_key_OBS_KEY_BACKSLASH: obs_key = 148;
3321pub const obs_key_OBS_KEY_BRACKETRIGHT: obs_key = 149;
3322pub const obs_key_OBS_KEY_ASCIICIRCUM: obs_key = 150;
3323pub const obs_key_OBS_KEY_UNDERSCORE: obs_key = 151;
3324pub const obs_key_OBS_KEY_QUOTELEFT: obs_key = 152;
3325pub const obs_key_OBS_KEY_BRACELEFT: obs_key = 153;
3326pub const obs_key_OBS_KEY_BAR: obs_key = 154;
3327pub const obs_key_OBS_KEY_BRACERIGHT: obs_key = 155;
3328pub const obs_key_OBS_KEY_ASCIITILDE: obs_key = 156;
3329pub const obs_key_OBS_KEY_NOBREAKSPACE: obs_key = 157;
3330pub const obs_key_OBS_KEY_EXCLAMDOWN: obs_key = 158;
3331pub const obs_key_OBS_KEY_CENT: obs_key = 159;
3332pub const obs_key_OBS_KEY_STERLING: obs_key = 160;
3333pub const obs_key_OBS_KEY_CURRENCY: obs_key = 161;
3334pub const obs_key_OBS_KEY_YEN: obs_key = 162;
3335pub const obs_key_OBS_KEY_BROKENBAR: obs_key = 163;
3336pub const obs_key_OBS_KEY_SECTION: obs_key = 164;
3337pub const obs_key_OBS_KEY_DIAERESIS: obs_key = 165;
3338pub const obs_key_OBS_KEY_COPYRIGHT: obs_key = 166;
3339pub const obs_key_OBS_KEY_ORDFEMININE: obs_key = 167;
3340pub const obs_key_OBS_KEY_GUILLEMOTLEFT: obs_key = 168;
3341pub const obs_key_OBS_KEY_NOTSIGN: obs_key = 169;
3342pub const obs_key_OBS_KEY_HYPHEN: obs_key = 170;
3343pub const obs_key_OBS_KEY_REGISTERED: obs_key = 171;
3344pub const obs_key_OBS_KEY_MACRON: obs_key = 172;
3345pub const obs_key_OBS_KEY_DEGREE: obs_key = 173;
3346pub const obs_key_OBS_KEY_PLUSMINUS: obs_key = 174;
3347pub const obs_key_OBS_KEY_TWOSUPERIOR: obs_key = 175;
3348pub const obs_key_OBS_KEY_THREESUPERIOR: obs_key = 176;
3349pub const obs_key_OBS_KEY_ACUTE: obs_key = 177;
3350pub const obs_key_OBS_KEY_MU: obs_key = 178;
3351pub const obs_key_OBS_KEY_PARAGRAPH: obs_key = 179;
3352pub const obs_key_OBS_KEY_PERIODCENTERED: obs_key = 180;
3353pub const obs_key_OBS_KEY_CEDILLA: obs_key = 181;
3354pub const obs_key_OBS_KEY_ONESUPERIOR: obs_key = 182;
3355pub const obs_key_OBS_KEY_MASCULINE: obs_key = 183;
3356pub const obs_key_OBS_KEY_GUILLEMOTRIGHT: obs_key = 184;
3357pub const obs_key_OBS_KEY_ONEQUARTER: obs_key = 185;
3358pub const obs_key_OBS_KEY_ONEHALF: obs_key = 186;
3359pub const obs_key_OBS_KEY_THREEQUARTERS: obs_key = 187;
3360pub const obs_key_OBS_KEY_QUESTIONDOWN: obs_key = 188;
3361pub const obs_key_OBS_KEY_AGRAVE: obs_key = 189;
3362pub const obs_key_OBS_KEY_AACUTE: obs_key = 190;
3363pub const obs_key_OBS_KEY_ACIRCUMFLEX: obs_key = 191;
3364pub const obs_key_OBS_KEY_ATILDE: obs_key = 192;
3365pub const obs_key_OBS_KEY_ADIAERESIS: obs_key = 193;
3366pub const obs_key_OBS_KEY_ARING: obs_key = 194;
3367pub const obs_key_OBS_KEY_AE: obs_key = 195;
3368pub const obs_key_OBS_KEY_CCEDILLA: obs_key = 196;
3369pub const obs_key_OBS_KEY_EGRAVE: obs_key = 197;
3370pub const obs_key_OBS_KEY_EACUTE: obs_key = 198;
3371pub const obs_key_OBS_KEY_ECIRCUMFLEX: obs_key = 199;
3372pub const obs_key_OBS_KEY_EDIAERESIS: obs_key = 200;
3373pub const obs_key_OBS_KEY_IGRAVE: obs_key = 201;
3374pub const obs_key_OBS_KEY_IACUTE: obs_key = 202;
3375pub const obs_key_OBS_KEY_ICIRCUMFLEX: obs_key = 203;
3376pub const obs_key_OBS_KEY_IDIAERESIS: obs_key = 204;
3377pub const obs_key_OBS_KEY_ETH: obs_key = 205;
3378pub const obs_key_OBS_KEY_NTILDE: obs_key = 206;
3379pub const obs_key_OBS_KEY_OGRAVE: obs_key = 207;
3380pub const obs_key_OBS_KEY_OACUTE: obs_key = 208;
3381pub const obs_key_OBS_KEY_OCIRCUMFLEX: obs_key = 209;
3382pub const obs_key_OBS_KEY_OTILDE: obs_key = 210;
3383pub const obs_key_OBS_KEY_ODIAERESIS: obs_key = 211;
3384pub const obs_key_OBS_KEY_MULTIPLY: obs_key = 212;
3385pub const obs_key_OBS_KEY_OOBLIQUE: obs_key = 213;
3386pub const obs_key_OBS_KEY_UGRAVE: obs_key = 214;
3387pub const obs_key_OBS_KEY_UACUTE: obs_key = 215;
3388pub const obs_key_OBS_KEY_UCIRCUMFLEX: obs_key = 216;
3389pub const obs_key_OBS_KEY_UDIAERESIS: obs_key = 217;
3390pub const obs_key_OBS_KEY_YACUTE: obs_key = 218;
3391pub const obs_key_OBS_KEY_THORN: obs_key = 219;
3392pub const obs_key_OBS_KEY_SSHARP: obs_key = 220;
3393pub const obs_key_OBS_KEY_DIVISION: obs_key = 221;
3394pub const obs_key_OBS_KEY_YDIAERESIS: obs_key = 222;
3395pub const obs_key_OBS_KEY_MULTI_KEY: obs_key = 223;
3396pub const obs_key_OBS_KEY_CODEINPUT: obs_key = 224;
3397pub const obs_key_OBS_KEY_SINGLECANDIDATE: obs_key = 225;
3398pub const obs_key_OBS_KEY_MULTIPLECANDIDATE: obs_key = 226;
3399pub const obs_key_OBS_KEY_PREVIOUSCANDIDATE: obs_key = 227;
3400pub const obs_key_OBS_KEY_MODE_SWITCH: obs_key = 228;
3401pub const obs_key_OBS_KEY_KANJI: obs_key = 229;
3402pub const obs_key_OBS_KEY_MUHENKAN: obs_key = 230;
3403pub const obs_key_OBS_KEY_HENKAN: obs_key = 231;
3404pub const obs_key_OBS_KEY_ROMAJI: obs_key = 232;
3405pub const obs_key_OBS_KEY_HIRAGANA: obs_key = 233;
3406pub const obs_key_OBS_KEY_KATAKANA: obs_key = 234;
3407pub const obs_key_OBS_KEY_HIRAGANA_KATAKANA: obs_key = 235;
3408pub const obs_key_OBS_KEY_ZENKAKU: obs_key = 236;
3409pub const obs_key_OBS_KEY_HANKAKU: obs_key = 237;
3410pub const obs_key_OBS_KEY_ZENKAKU_HANKAKU: obs_key = 238;
3411pub const obs_key_OBS_KEY_TOUROKU: obs_key = 239;
3412pub const obs_key_OBS_KEY_MASSYO: obs_key = 240;
3413pub const obs_key_OBS_KEY_KANA_LOCK: obs_key = 241;
3414pub const obs_key_OBS_KEY_KANA_SHIFT: obs_key = 242;
3415pub const obs_key_OBS_KEY_EISU_SHIFT: obs_key = 243;
3416pub const obs_key_OBS_KEY_EISU_TOGGLE: obs_key = 244;
3417pub const obs_key_OBS_KEY_HANGUL: obs_key = 245;
3418pub const obs_key_OBS_KEY_HANGUL_START: obs_key = 246;
3419pub const obs_key_OBS_KEY_HANGUL_END: obs_key = 247;
3420pub const obs_key_OBS_KEY_HANGUL_HANJA: obs_key = 248;
3421pub const obs_key_OBS_KEY_HANGUL_JAMO: obs_key = 249;
3422pub const obs_key_OBS_KEY_HANGUL_ROMAJA: obs_key = 250;
3423pub const obs_key_OBS_KEY_HANGUL_JEONJA: obs_key = 251;
3424pub const obs_key_OBS_KEY_HANGUL_BANJA: obs_key = 252;
3425pub const obs_key_OBS_KEY_HANGUL_PREHANJA: obs_key = 253;
3426pub const obs_key_OBS_KEY_HANGUL_POSTHANJA: obs_key = 254;
3427pub const obs_key_OBS_KEY_HANGUL_SPECIAL: obs_key = 255;
3428pub const obs_key_OBS_KEY_DEAD_GRAVE: obs_key = 256;
3429pub const obs_key_OBS_KEY_DEAD_ACUTE: obs_key = 257;
3430pub const obs_key_OBS_KEY_DEAD_CIRCUMFLEX: obs_key = 258;
3431pub const obs_key_OBS_KEY_DEAD_TILDE: obs_key = 259;
3432pub const obs_key_OBS_KEY_DEAD_MACRON: obs_key = 260;
3433pub const obs_key_OBS_KEY_DEAD_BREVE: obs_key = 261;
3434pub const obs_key_OBS_KEY_DEAD_ABOVEDOT: obs_key = 262;
3435pub const obs_key_OBS_KEY_DEAD_DIAERESIS: obs_key = 263;
3436pub const obs_key_OBS_KEY_DEAD_ABOVERING: obs_key = 264;
3437pub const obs_key_OBS_KEY_DEAD_DOUBLEACUTE: obs_key = 265;
3438pub const obs_key_OBS_KEY_DEAD_CARON: obs_key = 266;
3439pub const obs_key_OBS_KEY_DEAD_CEDILLA: obs_key = 267;
3440pub const obs_key_OBS_KEY_DEAD_OGONEK: obs_key = 268;
3441pub const obs_key_OBS_KEY_DEAD_IOTA: obs_key = 269;
3442pub const obs_key_OBS_KEY_DEAD_VOICED_SOUND: obs_key = 270;
3443pub const obs_key_OBS_KEY_DEAD_SEMIVOICED_SOUND: obs_key = 271;
3444pub const obs_key_OBS_KEY_DEAD_BELOWDOT: obs_key = 272;
3445pub const obs_key_OBS_KEY_DEAD_HOOK: obs_key = 273;
3446pub const obs_key_OBS_KEY_DEAD_HORN: obs_key = 274;
3447pub const obs_key_OBS_KEY_BACK: obs_key = 275;
3448pub const obs_key_OBS_KEY_FORWARD: obs_key = 276;
3449pub const obs_key_OBS_KEY_STOP: obs_key = 277;
3450pub const obs_key_OBS_KEY_REFRESH: obs_key = 278;
3451pub const obs_key_OBS_KEY_VOLUMEDOWN: obs_key = 279;
3452pub const obs_key_OBS_KEY_VOLUMEMUTE: obs_key = 280;
3453pub const obs_key_OBS_KEY_VOLUMEUP: obs_key = 281;
3454pub const obs_key_OBS_KEY_BASSBOOST: obs_key = 282;
3455pub const obs_key_OBS_KEY_BASSUP: obs_key = 283;
3456pub const obs_key_OBS_KEY_BASSDOWN: obs_key = 284;
3457pub const obs_key_OBS_KEY_TREBLEUP: obs_key = 285;
3458pub const obs_key_OBS_KEY_TREBLEDOWN: obs_key = 286;
3459pub const obs_key_OBS_KEY_MEDIAPLAY: obs_key = 287;
3460pub const obs_key_OBS_KEY_MEDIASTOP: obs_key = 288;
3461pub const obs_key_OBS_KEY_MEDIAPREVIOUS: obs_key = 289;
3462pub const obs_key_OBS_KEY_MEDIANEXT: obs_key = 290;
3463pub const obs_key_OBS_KEY_MEDIARECORD: obs_key = 291;
3464pub const obs_key_OBS_KEY_MEDIAPAUSE: obs_key = 292;
3465pub const obs_key_OBS_KEY_MEDIATOGGLEPLAYPAUSE: obs_key = 293;
3466pub const obs_key_OBS_KEY_HOMEPAGE: obs_key = 294;
3467pub const obs_key_OBS_KEY_FAVORITES: obs_key = 295;
3468pub const obs_key_OBS_KEY_SEARCH: obs_key = 296;
3469pub const obs_key_OBS_KEY_STANDBY: obs_key = 297;
3470pub const obs_key_OBS_KEY_OPENURL: obs_key = 298;
3471pub const obs_key_OBS_KEY_LAUNCHMAIL: obs_key = 299;
3472pub const obs_key_OBS_KEY_LAUNCHMEDIA: obs_key = 300;
3473pub const obs_key_OBS_KEY_LAUNCH0: obs_key = 301;
3474pub const obs_key_OBS_KEY_LAUNCH1: obs_key = 302;
3475pub const obs_key_OBS_KEY_LAUNCH2: obs_key = 303;
3476pub const obs_key_OBS_KEY_LAUNCH3: obs_key = 304;
3477pub const obs_key_OBS_KEY_LAUNCH4: obs_key = 305;
3478pub const obs_key_OBS_KEY_LAUNCH5: obs_key = 306;
3479pub const obs_key_OBS_KEY_LAUNCH6: obs_key = 307;
3480pub const obs_key_OBS_KEY_LAUNCH7: obs_key = 308;
3481pub const obs_key_OBS_KEY_LAUNCH8: obs_key = 309;
3482pub const obs_key_OBS_KEY_LAUNCH9: obs_key = 310;
3483pub const obs_key_OBS_KEY_LAUNCHA: obs_key = 311;
3484pub const obs_key_OBS_KEY_LAUNCHB: obs_key = 312;
3485pub const obs_key_OBS_KEY_LAUNCHC: obs_key = 313;
3486pub const obs_key_OBS_KEY_LAUNCHD: obs_key = 314;
3487pub const obs_key_OBS_KEY_LAUNCHE: obs_key = 315;
3488pub const obs_key_OBS_KEY_LAUNCHF: obs_key = 316;
3489pub const obs_key_OBS_KEY_LAUNCHG: obs_key = 317;
3490pub const obs_key_OBS_KEY_LAUNCHH: obs_key = 318;
3491pub const obs_key_OBS_KEY_MONBRIGHTNESSUP: obs_key = 319;
3492pub const obs_key_OBS_KEY_MONBRIGHTNESSDOWN: obs_key = 320;
3493pub const obs_key_OBS_KEY_KEYBOARDLIGHTONOFF: obs_key = 321;
3494pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSUP: obs_key = 322;
3495pub const obs_key_OBS_KEY_KEYBOARDBRIGHTNESSDOWN: obs_key = 323;
3496pub const obs_key_OBS_KEY_POWEROFF: obs_key = 324;
3497pub const obs_key_OBS_KEY_WAKEUP: obs_key = 325;
3498pub const obs_key_OBS_KEY_EJECT: obs_key = 326;
3499pub const obs_key_OBS_KEY_SCREENSAVER: obs_key = 327;
3500pub const obs_key_OBS_KEY_WWW: obs_key = 328;
3501pub const obs_key_OBS_KEY_MEMO: obs_key = 329;
3502pub const obs_key_OBS_KEY_LIGHTBULB: obs_key = 330;
3503pub const obs_key_OBS_KEY_SHOP: obs_key = 331;
3504pub const obs_key_OBS_KEY_HISTORY: obs_key = 332;
3505pub const obs_key_OBS_KEY_ADDFAVORITE: obs_key = 333;
3506pub const obs_key_OBS_KEY_HOTLINKS: obs_key = 334;
3507pub const obs_key_OBS_KEY_BRIGHTNESSADJUST: obs_key = 335;
3508pub const obs_key_OBS_KEY_FINANCE: obs_key = 336;
3509pub const obs_key_OBS_KEY_COMMUNITY: obs_key = 337;
3510pub const obs_key_OBS_KEY_AUDIOREWIND: obs_key = 338;
3511pub const obs_key_OBS_KEY_BACKFORWARD: obs_key = 339;
3512pub const obs_key_OBS_KEY_APPLICATIONLEFT: obs_key = 340;
3513pub const obs_key_OBS_KEY_APPLICATIONRIGHT: obs_key = 341;
3514pub const obs_key_OBS_KEY_BOOK: obs_key = 342;
3515pub const obs_key_OBS_KEY_CD: obs_key = 343;
3516pub const obs_key_OBS_KEY_CALCULATOR: obs_key = 344;
3517pub const obs_key_OBS_KEY_TODOLIST: obs_key = 345;
3518pub const obs_key_OBS_KEY_CLEARGRAB: obs_key = 346;
3519pub const obs_key_OBS_KEY_CLOSE: obs_key = 347;
3520pub const obs_key_OBS_KEY_COPY: obs_key = 348;
3521pub const obs_key_OBS_KEY_CUT: obs_key = 349;
3522pub const obs_key_OBS_KEY_DISPLAY: obs_key = 350;
3523pub const obs_key_OBS_KEY_DOS: obs_key = 351;
3524pub const obs_key_OBS_KEY_DOCUMENTS: obs_key = 352;
3525pub const obs_key_OBS_KEY_EXCEL: obs_key = 353;
3526pub const obs_key_OBS_KEY_EXPLORER: obs_key = 354;
3527pub const obs_key_OBS_KEY_GAME: obs_key = 355;
3528pub const obs_key_OBS_KEY_GO: obs_key = 356;
3529pub const obs_key_OBS_KEY_ITOUCH: obs_key = 357;
3530pub const obs_key_OBS_KEY_LOGOFF: obs_key = 358;
3531pub const obs_key_OBS_KEY_MARKET: obs_key = 359;
3532pub const obs_key_OBS_KEY_MEETING: obs_key = 360;
3533pub const obs_key_OBS_KEY_MENUKB: obs_key = 361;
3534pub const obs_key_OBS_KEY_MENUPB: obs_key = 362;
3535pub const obs_key_OBS_KEY_MYSITES: obs_key = 363;
3536pub const obs_key_OBS_KEY_NEWS: obs_key = 364;
3537pub const obs_key_OBS_KEY_OFFICEHOME: obs_key = 365;
3538pub const obs_key_OBS_KEY_OPTION: obs_key = 366;
3539pub const obs_key_OBS_KEY_PASTE: obs_key = 367;
3540pub const obs_key_OBS_KEY_PHONE: obs_key = 368;
3541pub const obs_key_OBS_KEY_CALENDAR: obs_key = 369;
3542pub const obs_key_OBS_KEY_REPLY: obs_key = 370;
3543pub const obs_key_OBS_KEY_RELOAD: obs_key = 371;
3544pub const obs_key_OBS_KEY_ROTATEWINDOWS: obs_key = 372;
3545pub const obs_key_OBS_KEY_ROTATIONPB: obs_key = 373;
3546pub const obs_key_OBS_KEY_ROTATIONKB: obs_key = 374;
3547pub const obs_key_OBS_KEY_SAVE: obs_key = 375;
3548pub const obs_key_OBS_KEY_SEND: obs_key = 376;
3549pub const obs_key_OBS_KEY_SPELL: obs_key = 377;
3550pub const obs_key_OBS_KEY_SPLITSCREEN: obs_key = 378;
3551pub const obs_key_OBS_KEY_SUPPORT: obs_key = 379;
3552pub const obs_key_OBS_KEY_TASKPANE: obs_key = 380;
3553pub const obs_key_OBS_KEY_TERMINAL: obs_key = 381;
3554pub const obs_key_OBS_KEY_TOOLS: obs_key = 382;
3555pub const obs_key_OBS_KEY_TRAVEL: obs_key = 383;
3556pub const obs_key_OBS_KEY_VIDEO: obs_key = 384;
3557pub const obs_key_OBS_KEY_WORD: obs_key = 385;
3558pub const obs_key_OBS_KEY_XFER: obs_key = 386;
3559pub const obs_key_OBS_KEY_ZOOMIN: obs_key = 387;
3560pub const obs_key_OBS_KEY_ZOOMOUT: obs_key = 388;
3561pub const obs_key_OBS_KEY_AWAY: obs_key = 389;
3562pub const obs_key_OBS_KEY_MESSENGER: obs_key = 390;
3563pub const obs_key_OBS_KEY_WEBCAM: obs_key = 391;
3564pub const obs_key_OBS_KEY_MAILFORWARD: obs_key = 392;
3565pub const obs_key_OBS_KEY_PICTURES: obs_key = 393;
3566pub const obs_key_OBS_KEY_MUSIC: obs_key = 394;
3567pub const obs_key_OBS_KEY_BATTERY: obs_key = 395;
3568pub const obs_key_OBS_KEY_BLUETOOTH: obs_key = 396;
3569pub const obs_key_OBS_KEY_WLAN: obs_key = 397;
3570pub const obs_key_OBS_KEY_UWB: obs_key = 398;
3571pub const obs_key_OBS_KEY_AUDIOFORWARD: obs_key = 399;
3572pub const obs_key_OBS_KEY_AUDIOREPEAT: obs_key = 400;
3573pub const obs_key_OBS_KEY_AUDIORANDOMPLAY: obs_key = 401;
3574pub const obs_key_OBS_KEY_SUBTITLE: obs_key = 402;
3575pub const obs_key_OBS_KEY_AUDIOCYCLETRACK: obs_key = 403;
3576pub const obs_key_OBS_KEY_TIME: obs_key = 404;
3577pub const obs_key_OBS_KEY_HIBERNATE: obs_key = 405;
3578pub const obs_key_OBS_KEY_VIEW: obs_key = 406;
3579pub const obs_key_OBS_KEY_TOPMENU: obs_key = 407;
3580pub const obs_key_OBS_KEY_POWERDOWN: obs_key = 408;
3581pub const obs_key_OBS_KEY_SUSPEND: obs_key = 409;
3582pub const obs_key_OBS_KEY_CONTRASTADJUST: obs_key = 410;
3583pub const obs_key_OBS_KEY_MEDIALAST: obs_key = 411;
3584pub const obs_key_OBS_KEY_CALL: obs_key = 412;
3585pub const obs_key_OBS_KEY_CAMERA: obs_key = 413;
3586pub const obs_key_OBS_KEY_CAMERAFOCUS: obs_key = 414;
3587pub const obs_key_OBS_KEY_CONTEXT1: obs_key = 415;
3588pub const obs_key_OBS_KEY_CONTEXT2: obs_key = 416;
3589pub const obs_key_OBS_KEY_CONTEXT3: obs_key = 417;
3590pub const obs_key_OBS_KEY_CONTEXT4: obs_key = 418;
3591pub const obs_key_OBS_KEY_FLIP: obs_key = 419;
3592pub const obs_key_OBS_KEY_HANGUP: obs_key = 420;
3593pub const obs_key_OBS_KEY_NO: obs_key = 421;
3594pub const obs_key_OBS_KEY_SELECT: obs_key = 422;
3595pub const obs_key_OBS_KEY_YES: obs_key = 423;
3596pub const obs_key_OBS_KEY_TOGGLECALLHANGUP: obs_key = 424;
3597pub const obs_key_OBS_KEY_VOICEDIAL: obs_key = 425;
3598pub const obs_key_OBS_KEY_LASTNUMBERREDIAL: obs_key = 426;
3599pub const obs_key_OBS_KEY_EXECUTE: obs_key = 427;
3600pub const obs_key_OBS_KEY_PRINTER: obs_key = 428;
3601pub const obs_key_OBS_KEY_PLAY: obs_key = 429;
3602pub const obs_key_OBS_KEY_SLEEP: obs_key = 430;
3603pub const obs_key_OBS_KEY_ZOOM: obs_key = 431;
3604pub const obs_key_OBS_KEY_CANCEL: obs_key = 432;
3605pub const obs_key_OBS_KEY_MOUSE1: obs_key = 433;
3606pub const obs_key_OBS_KEY_MOUSE2: obs_key = 434;
3607pub const obs_key_OBS_KEY_MOUSE3: obs_key = 435;
3608pub const obs_key_OBS_KEY_MOUSE4: obs_key = 436;
3609pub const obs_key_OBS_KEY_MOUSE5: obs_key = 437;
3610pub const obs_key_OBS_KEY_MOUSE6: obs_key = 438;
3611pub const obs_key_OBS_KEY_MOUSE7: obs_key = 439;
3612pub const obs_key_OBS_KEY_MOUSE8: obs_key = 440;
3613pub const obs_key_OBS_KEY_MOUSE9: obs_key = 441;
3614pub const obs_key_OBS_KEY_MOUSE10: obs_key = 442;
3615pub const obs_key_OBS_KEY_MOUSE11: obs_key = 443;
3616pub const obs_key_OBS_KEY_MOUSE12: obs_key = 444;
3617pub const obs_key_OBS_KEY_MOUSE13: obs_key = 445;
3618pub const obs_key_OBS_KEY_MOUSE14: obs_key = 446;
3619pub const obs_key_OBS_KEY_MOUSE15: obs_key = 447;
3620pub const obs_key_OBS_KEY_MOUSE16: obs_key = 448;
3621pub const obs_key_OBS_KEY_MOUSE17: obs_key = 449;
3622pub const obs_key_OBS_KEY_MOUSE18: obs_key = 450;
3623pub const obs_key_OBS_KEY_MOUSE19: obs_key = 451;
3624pub const obs_key_OBS_KEY_MOUSE20: obs_key = 452;
3625pub const obs_key_OBS_KEY_MOUSE21: obs_key = 453;
3626pub const obs_key_OBS_KEY_MOUSE22: obs_key = 454;
3627pub const obs_key_OBS_KEY_MOUSE23: obs_key = 455;
3628pub const obs_key_OBS_KEY_MOUSE24: obs_key = 456;
3629pub const obs_key_OBS_KEY_MOUSE25: obs_key = 457;
3630pub const obs_key_OBS_KEY_MOUSE26: obs_key = 458;
3631pub const obs_key_OBS_KEY_MOUSE27: obs_key = 459;
3632pub const obs_key_OBS_KEY_MOUSE28: obs_key = 460;
3633pub const obs_key_OBS_KEY_MOUSE29: obs_key = 461;
3634pub const obs_key_OBS_KEY_BACKSLASH_RT102: obs_key = 462;
3635pub const obs_key_OBS_KEY_OPEN: obs_key = 463;
3636pub const obs_key_OBS_KEY_FIND: obs_key = 464;
3637pub const obs_key_OBS_KEY_REDO: obs_key = 465;
3638pub const obs_key_OBS_KEY_UNDO: obs_key = 466;
3639pub const obs_key_OBS_KEY_FRONT: obs_key = 467;
3640pub const obs_key_OBS_KEY_PROPS: obs_key = 468;
3641pub const obs_key_OBS_KEY_VK_CANCEL: obs_key = 469;
3642pub const obs_key_OBS_KEY_0x07: obs_key = 470;
3643pub const obs_key_OBS_KEY_0x0A: obs_key = 471;
3644pub const obs_key_OBS_KEY_0x0B: obs_key = 472;
3645pub const obs_key_OBS_KEY_0x0E: obs_key = 473;
3646pub const obs_key_OBS_KEY_0x0F: obs_key = 474;
3647pub const obs_key_OBS_KEY_0x16: obs_key = 475;
3648pub const obs_key_OBS_KEY_VK_JUNJA: obs_key = 476;
3649pub const obs_key_OBS_KEY_VK_FINAL: obs_key = 477;
3650pub const obs_key_OBS_KEY_0x1A: obs_key = 478;
3651pub const obs_key_OBS_KEY_VK_ACCEPT: obs_key = 479;
3652pub const obs_key_OBS_KEY_VK_MODECHANGE: obs_key = 480;
3653pub const obs_key_OBS_KEY_VK_SELECT: obs_key = 481;
3654pub const obs_key_OBS_KEY_VK_PRINT: obs_key = 482;
3655pub const obs_key_OBS_KEY_VK_EXECUTE: obs_key = 483;
3656pub const obs_key_OBS_KEY_VK_HELP: obs_key = 484;
3657pub const obs_key_OBS_KEY_0x30: obs_key = 485;
3658pub const obs_key_OBS_KEY_0x31: obs_key = 486;
3659pub const obs_key_OBS_KEY_0x32: obs_key = 487;
3660pub const obs_key_OBS_KEY_0x33: obs_key = 488;
3661pub const obs_key_OBS_KEY_0x34: obs_key = 489;
3662pub const obs_key_OBS_KEY_0x35: obs_key = 490;
3663pub const obs_key_OBS_KEY_0x36: obs_key = 491;
3664pub const obs_key_OBS_KEY_0x37: obs_key = 492;
3665pub const obs_key_OBS_KEY_0x38: obs_key = 493;
3666pub const obs_key_OBS_KEY_0x39: obs_key = 494;
3667pub const obs_key_OBS_KEY_0x3A: obs_key = 495;
3668pub const obs_key_OBS_KEY_0x3B: obs_key = 496;
3669pub const obs_key_OBS_KEY_0x3C: obs_key = 497;
3670pub const obs_key_OBS_KEY_0x3D: obs_key = 498;
3671pub const obs_key_OBS_KEY_0x3E: obs_key = 499;
3672pub const obs_key_OBS_KEY_0x3F: obs_key = 500;
3673pub const obs_key_OBS_KEY_0x40: obs_key = 501;
3674pub const obs_key_OBS_KEY_0x41: obs_key = 502;
3675pub const obs_key_OBS_KEY_0x42: obs_key = 503;
3676pub const obs_key_OBS_KEY_0x43: obs_key = 504;
3677pub const obs_key_OBS_KEY_0x44: obs_key = 505;
3678pub const obs_key_OBS_KEY_0x45: obs_key = 506;
3679pub const obs_key_OBS_KEY_0x46: obs_key = 507;
3680pub const obs_key_OBS_KEY_0x47: obs_key = 508;
3681pub const obs_key_OBS_KEY_0x48: obs_key = 509;
3682pub const obs_key_OBS_KEY_0x49: obs_key = 510;
3683pub const obs_key_OBS_KEY_0x4A: obs_key = 511;
3684pub const obs_key_OBS_KEY_0x4B: obs_key = 512;
3685pub const obs_key_OBS_KEY_0x4C: obs_key = 513;
3686pub const obs_key_OBS_KEY_0x4D: obs_key = 514;
3687pub const obs_key_OBS_KEY_0x4E: obs_key = 515;
3688pub const obs_key_OBS_KEY_0x4F: obs_key = 516;
3689pub const obs_key_OBS_KEY_0x50: obs_key = 517;
3690pub const obs_key_OBS_KEY_0x51: obs_key = 518;
3691pub const obs_key_OBS_KEY_0x52: obs_key = 519;
3692pub const obs_key_OBS_KEY_0x53: obs_key = 520;
3693pub const obs_key_OBS_KEY_0x54: obs_key = 521;
3694pub const obs_key_OBS_KEY_0x55: obs_key = 522;
3695pub const obs_key_OBS_KEY_0x56: obs_key = 523;
3696pub const obs_key_OBS_KEY_0x57: obs_key = 524;
3697pub const obs_key_OBS_KEY_0x58: obs_key = 525;
3698pub const obs_key_OBS_KEY_0x59: obs_key = 526;
3699pub const obs_key_OBS_KEY_0x5A: obs_key = 527;
3700pub const obs_key_OBS_KEY_VK_LWIN: obs_key = 528;
3701pub const obs_key_OBS_KEY_VK_RWIN: obs_key = 529;
3702pub const obs_key_OBS_KEY_VK_APPS: obs_key = 530;
3703pub const obs_key_OBS_KEY_0x5E: obs_key = 531;
3704pub const obs_key_OBS_KEY_VK_SLEEP: obs_key = 532;
3705pub const obs_key_OBS_KEY_VK_SEPARATOR: obs_key = 533;
3706pub const obs_key_OBS_KEY_0x88: obs_key = 534;
3707pub const obs_key_OBS_KEY_0x89: obs_key = 535;
3708pub const obs_key_OBS_KEY_0x8A: obs_key = 536;
3709pub const obs_key_OBS_KEY_0x8B: obs_key = 537;
3710pub const obs_key_OBS_KEY_0x8C: obs_key = 538;
3711pub const obs_key_OBS_KEY_0x8D: obs_key = 539;
3712pub const obs_key_OBS_KEY_0x8E: obs_key = 540;
3713pub const obs_key_OBS_KEY_0x8F: obs_key = 541;
3714pub const obs_key_OBS_KEY_VK_OEM_FJ_JISHO: obs_key = 542;
3715pub const obs_key_OBS_KEY_VK_OEM_FJ_LOYA: obs_key = 543;
3716pub const obs_key_OBS_KEY_VK_OEM_FJ_ROYA: obs_key = 544;
3717pub const obs_key_OBS_KEY_0x97: obs_key = 545;
3718pub const obs_key_OBS_KEY_0x98: obs_key = 546;
3719pub const obs_key_OBS_KEY_0x99: obs_key = 547;
3720pub const obs_key_OBS_KEY_0x9A: obs_key = 548;
3721pub const obs_key_OBS_KEY_0x9B: obs_key = 549;
3722pub const obs_key_OBS_KEY_0x9C: obs_key = 550;
3723pub const obs_key_OBS_KEY_0x9D: obs_key = 551;
3724pub const obs_key_OBS_KEY_0x9E: obs_key = 552;
3725pub const obs_key_OBS_KEY_0x9F: obs_key = 553;
3726pub const obs_key_OBS_KEY_VK_LSHIFT: obs_key = 554;
3727pub const obs_key_OBS_KEY_VK_RSHIFT: obs_key = 555;
3728pub const obs_key_OBS_KEY_VK_LCONTROL: obs_key = 556;
3729pub const obs_key_OBS_KEY_VK_RCONTROL: obs_key = 557;
3730pub const obs_key_OBS_KEY_VK_LMENU: obs_key = 558;
3731pub const obs_key_OBS_KEY_VK_RMENU: obs_key = 559;
3732pub const obs_key_OBS_KEY_VK_BROWSER_BACK: obs_key = 560;
3733pub const obs_key_OBS_KEY_VK_BROWSER_FORWARD: obs_key = 561;
3734pub const obs_key_OBS_KEY_VK_BROWSER_REFRESH: obs_key = 562;
3735pub const obs_key_OBS_KEY_VK_BROWSER_STOP: obs_key = 563;
3736pub const obs_key_OBS_KEY_VK_BROWSER_SEARCH: obs_key = 564;
3737pub const obs_key_OBS_KEY_VK_BROWSER_FAVORITES: obs_key = 565;
3738pub const obs_key_OBS_KEY_VK_BROWSER_HOME: obs_key = 566;
3739pub const obs_key_OBS_KEY_VK_VOLUME_MUTE: obs_key = 567;
3740pub const obs_key_OBS_KEY_VK_VOLUME_DOWN: obs_key = 568;
3741pub const obs_key_OBS_KEY_VK_VOLUME_UP: obs_key = 569;
3742pub const obs_key_OBS_KEY_VK_MEDIA_NEXT_TRACK: obs_key = 570;
3743pub const obs_key_OBS_KEY_VK_MEDIA_PREV_TRACK: obs_key = 571;
3744pub const obs_key_OBS_KEY_VK_MEDIA_STOP: obs_key = 572;
3745pub const obs_key_OBS_KEY_VK_MEDIA_PLAY_PAUSE: obs_key = 573;
3746pub const obs_key_OBS_KEY_VK_LAUNCH_MAIL: obs_key = 574;
3747pub const obs_key_OBS_KEY_VK_LAUNCH_MEDIA_SELECT: obs_key = 575;
3748pub const obs_key_OBS_KEY_VK_LAUNCH_APP1: obs_key = 576;
3749pub const obs_key_OBS_KEY_VK_LAUNCH_APP2: obs_key = 577;
3750pub const obs_key_OBS_KEY_0xB8: obs_key = 578;
3751pub const obs_key_OBS_KEY_0xB9: obs_key = 579;
3752pub const obs_key_OBS_KEY_0xC1: obs_key = 580;
3753pub const obs_key_OBS_KEY_0xC2: obs_key = 581;
3754pub const obs_key_OBS_KEY_0xC3: obs_key = 582;
3755pub const obs_key_OBS_KEY_0xC4: obs_key = 583;
3756pub const obs_key_OBS_KEY_0xC5: obs_key = 584;
3757pub const obs_key_OBS_KEY_0xC6: obs_key = 585;
3758pub const obs_key_OBS_KEY_0xC7: obs_key = 586;
3759pub const obs_key_OBS_KEY_0xC8: obs_key = 587;
3760pub const obs_key_OBS_KEY_0xC9: obs_key = 588;
3761pub const obs_key_OBS_KEY_0xCA: obs_key = 589;
3762pub const obs_key_OBS_KEY_0xCB: obs_key = 590;
3763pub const obs_key_OBS_KEY_0xCC: obs_key = 591;
3764pub const obs_key_OBS_KEY_0xCD: obs_key = 592;
3765pub const obs_key_OBS_KEY_0xCE: obs_key = 593;
3766pub const obs_key_OBS_KEY_0xCF: obs_key = 594;
3767pub const obs_key_OBS_KEY_0xD0: obs_key = 595;
3768pub const obs_key_OBS_KEY_0xD1: obs_key = 596;
3769pub const obs_key_OBS_KEY_0xD2: obs_key = 597;
3770pub const obs_key_OBS_KEY_0xD3: obs_key = 598;
3771pub const obs_key_OBS_KEY_0xD4: obs_key = 599;
3772pub const obs_key_OBS_KEY_0xD5: obs_key = 600;
3773pub const obs_key_OBS_KEY_0xD6: obs_key = 601;
3774pub const obs_key_OBS_KEY_0xD7: obs_key = 602;
3775pub const obs_key_OBS_KEY_0xD8: obs_key = 603;
3776pub const obs_key_OBS_KEY_0xD9: obs_key = 604;
3777pub const obs_key_OBS_KEY_0xDA: obs_key = 605;
3778pub const obs_key_OBS_KEY_VK_OEM_8: obs_key = 606;
3779pub const obs_key_OBS_KEY_0xE0: obs_key = 607;
3780pub const obs_key_OBS_KEY_VK_OEM_AX: obs_key = 608;
3781pub const obs_key_OBS_KEY_VK_ICO_HELP: obs_key = 609;
3782pub const obs_key_OBS_KEY_VK_ICO_00: obs_key = 610;
3783pub const obs_key_OBS_KEY_VK_PROCESSKEY: obs_key = 611;
3784pub const obs_key_OBS_KEY_VK_ICO_CLEAR: obs_key = 612;
3785pub const obs_key_OBS_KEY_VK_PACKET: obs_key = 613;
3786pub const obs_key_OBS_KEY_0xE8: obs_key = 614;
3787pub const obs_key_OBS_KEY_VK_OEM_RESET: obs_key = 615;
3788pub const obs_key_OBS_KEY_VK_OEM_JUMP: obs_key = 616;
3789pub const obs_key_OBS_KEY_VK_OEM_PA1: obs_key = 617;
3790pub const obs_key_OBS_KEY_VK_OEM_PA2: obs_key = 618;
3791pub const obs_key_OBS_KEY_VK_OEM_PA3: obs_key = 619;
3792pub const obs_key_OBS_KEY_VK_OEM_WSCTRL: obs_key = 620;
3793pub const obs_key_OBS_KEY_VK_OEM_CUSEL: obs_key = 621;
3794pub const obs_key_OBS_KEY_VK_OEM_ATTN: obs_key = 622;
3795pub const obs_key_OBS_KEY_VK_OEM_FINISH: obs_key = 623;
3796pub const obs_key_OBS_KEY_VK_OEM_COPY: obs_key = 624;
3797pub const obs_key_OBS_KEY_VK_OEM_AUTO: obs_key = 625;
3798pub const obs_key_OBS_KEY_VK_OEM_ENLW: obs_key = 626;
3799pub const obs_key_OBS_KEY_VK_ATTN: obs_key = 627;
3800pub const obs_key_OBS_KEY_VK_CRSEL: obs_key = 628;
3801pub const obs_key_OBS_KEY_VK_EXSEL: obs_key = 629;
3802pub const obs_key_OBS_KEY_VK_EREOF: obs_key = 630;
3803pub const obs_key_OBS_KEY_VK_PLAY: obs_key = 631;
3804pub const obs_key_OBS_KEY_VK_ZOOM: obs_key = 632;
3805pub const obs_key_OBS_KEY_VK_NONAME: obs_key = 633;
3806pub const obs_key_OBS_KEY_VK_PA1: obs_key = 634;
3807pub const obs_key_OBS_KEY_VK_OEM_CLEAR: obs_key = 635;
3808pub const obs_key_OBS_KEY_LAST_VALUE: obs_key = 636;
3809pub type obs_key = ::std::os::raw::c_int;
3810pub use self::obs_key as obs_key_t;
3811#[repr(C)]
3812pub struct obs_key_combination {
3813 pub modifiers: u32,
3814 pub key: obs_key_t,
3815}
3816#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3817const _: () = {
3818 ["Size of obs_key_combination"][::std::mem::size_of::<obs_key_combination>() - 8usize];
3819 ["Alignment of obs_key_combination"][::std::mem::align_of::<obs_key_combination>() - 4usize];
3820 ["Offset of field: obs_key_combination::modifiers"]
3821 [::std::mem::offset_of!(obs_key_combination, modifiers) - 0usize];
3822 ["Offset of field: obs_key_combination::key"]
3823 [::std::mem::offset_of!(obs_key_combination, key) - 4usize];
3824};
3825pub type obs_key_combination_t = obs_key_combination;
3826#[repr(C)]
3827#[derive(Debug, Copy, Clone)]
3828pub struct obs_hotkey {
3829 _unused: [u8; 0],
3830}
3831pub type obs_hotkey_t = obs_hotkey;
3832#[repr(C)]
3833#[derive(Debug, Copy, Clone)]
3834pub struct obs_hotkey_binding {
3835 _unused: [u8; 0],
3836}
3837pub type obs_hotkey_binding_t = obs_hotkey_binding;
3838pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_FRONTEND: obs_hotkey_registerer_type = 0;
3839pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SOURCE: obs_hotkey_registerer_type = 1;
3840pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_OUTPUT: obs_hotkey_registerer_type = 2;
3841pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_ENCODER: obs_hotkey_registerer_type = 3;
3842pub const obs_hotkey_registerer_type_OBS_HOTKEY_REGISTERER_SERVICE: obs_hotkey_registerer_type = 4;
3843pub type obs_hotkey_registerer_type = ::std::os::raw::c_int;
3844pub use self::obs_hotkey_registerer_type as obs_hotkey_registerer_t;
3845#[repr(C)]
3846#[derive(Debug, Copy, Clone)]
3847pub struct obs_hotkeys_translations {
3848 pub insert: *const ::std::os::raw::c_char,
3849 pub del: *const ::std::os::raw::c_char,
3850 pub home: *const ::std::os::raw::c_char,
3851 pub end: *const ::std::os::raw::c_char,
3852 pub page_up: *const ::std::os::raw::c_char,
3853 pub page_down: *const ::std::os::raw::c_char,
3854 pub num_lock: *const ::std::os::raw::c_char,
3855 pub scroll_lock: *const ::std::os::raw::c_char,
3856 pub caps_lock: *const ::std::os::raw::c_char,
3857 pub backspace: *const ::std::os::raw::c_char,
3858 pub tab: *const ::std::os::raw::c_char,
3859 pub print: *const ::std::os::raw::c_char,
3860 pub pause: *const ::std::os::raw::c_char,
3861 pub left: *const ::std::os::raw::c_char,
3862 pub right: *const ::std::os::raw::c_char,
3863 pub up: *const ::std::os::raw::c_char,
3864 pub down: *const ::std::os::raw::c_char,
3865 pub shift: *const ::std::os::raw::c_char,
3866 pub alt: *const ::std::os::raw::c_char,
3867 pub control: *const ::std::os::raw::c_char,
3868 pub meta: *const ::std::os::raw::c_char,
3869 pub menu: *const ::std::os::raw::c_char,
3870 pub space: *const ::std::os::raw::c_char,
3871 pub numpad_num: *const ::std::os::raw::c_char,
3872 pub numpad_divide: *const ::std::os::raw::c_char,
3873 pub numpad_multiply: *const ::std::os::raw::c_char,
3874 pub numpad_minus: *const ::std::os::raw::c_char,
3875 pub numpad_plus: *const ::std::os::raw::c_char,
3876 pub numpad_decimal: *const ::std::os::raw::c_char,
3877 pub apple_keypad_num: *const ::std::os::raw::c_char,
3878 pub apple_keypad_divide: *const ::std::os::raw::c_char,
3879 pub apple_keypad_multiply: *const ::std::os::raw::c_char,
3880 pub apple_keypad_minus: *const ::std::os::raw::c_char,
3881 pub apple_keypad_plus: *const ::std::os::raw::c_char,
3882 pub apple_keypad_decimal: *const ::std::os::raw::c_char,
3883 pub apple_keypad_equal: *const ::std::os::raw::c_char,
3884 pub mouse_num: *const ::std::os::raw::c_char,
3885 pub escape: *const ::std::os::raw::c_char,
3886}
3887#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3888const _: () = {
3889 ["Size of obs_hotkeys_translations"]
3890 [::std::mem::size_of::<obs_hotkeys_translations>() - 304usize];
3891 ["Alignment of obs_hotkeys_translations"]
3892 [::std::mem::align_of::<obs_hotkeys_translations>() - 8usize];
3893 ["Offset of field: obs_hotkeys_translations::insert"]
3894 [::std::mem::offset_of!(obs_hotkeys_translations, insert) - 0usize];
3895 ["Offset of field: obs_hotkeys_translations::del"]
3896 [::std::mem::offset_of!(obs_hotkeys_translations, del) - 8usize];
3897 ["Offset of field: obs_hotkeys_translations::home"]
3898 [::std::mem::offset_of!(obs_hotkeys_translations, home) - 16usize];
3899 ["Offset of field: obs_hotkeys_translations::end"]
3900 [::std::mem::offset_of!(obs_hotkeys_translations, end) - 24usize];
3901 ["Offset of field: obs_hotkeys_translations::page_up"]
3902 [::std::mem::offset_of!(obs_hotkeys_translations, page_up) - 32usize];
3903 ["Offset of field: obs_hotkeys_translations::page_down"]
3904 [::std::mem::offset_of!(obs_hotkeys_translations, page_down) - 40usize];
3905 ["Offset of field: obs_hotkeys_translations::num_lock"]
3906 [::std::mem::offset_of!(obs_hotkeys_translations, num_lock) - 48usize];
3907 ["Offset of field: obs_hotkeys_translations::scroll_lock"]
3908 [::std::mem::offset_of!(obs_hotkeys_translations, scroll_lock) - 56usize];
3909 ["Offset of field: obs_hotkeys_translations::caps_lock"]
3910 [::std::mem::offset_of!(obs_hotkeys_translations, caps_lock) - 64usize];
3911 ["Offset of field: obs_hotkeys_translations::backspace"]
3912 [::std::mem::offset_of!(obs_hotkeys_translations, backspace) - 72usize];
3913 ["Offset of field: obs_hotkeys_translations::tab"]
3914 [::std::mem::offset_of!(obs_hotkeys_translations, tab) - 80usize];
3915 ["Offset of field: obs_hotkeys_translations::print"]
3916 [::std::mem::offset_of!(obs_hotkeys_translations, print) - 88usize];
3917 ["Offset of field: obs_hotkeys_translations::pause"]
3918 [::std::mem::offset_of!(obs_hotkeys_translations, pause) - 96usize];
3919 ["Offset of field: obs_hotkeys_translations::left"]
3920 [::std::mem::offset_of!(obs_hotkeys_translations, left) - 104usize];
3921 ["Offset of field: obs_hotkeys_translations::right"]
3922 [::std::mem::offset_of!(obs_hotkeys_translations, right) - 112usize];
3923 ["Offset of field: obs_hotkeys_translations::up"]
3924 [::std::mem::offset_of!(obs_hotkeys_translations, up) - 120usize];
3925 ["Offset of field: obs_hotkeys_translations::down"]
3926 [::std::mem::offset_of!(obs_hotkeys_translations, down) - 128usize];
3927 ["Offset of field: obs_hotkeys_translations::shift"]
3928 [::std::mem::offset_of!(obs_hotkeys_translations, shift) - 136usize];
3929 ["Offset of field: obs_hotkeys_translations::alt"]
3930 [::std::mem::offset_of!(obs_hotkeys_translations, alt) - 144usize];
3931 ["Offset of field: obs_hotkeys_translations::control"]
3932 [::std::mem::offset_of!(obs_hotkeys_translations, control) - 152usize];
3933 ["Offset of field: obs_hotkeys_translations::meta"]
3934 [::std::mem::offset_of!(obs_hotkeys_translations, meta) - 160usize];
3935 ["Offset of field: obs_hotkeys_translations::menu"]
3936 [::std::mem::offset_of!(obs_hotkeys_translations, menu) - 168usize];
3937 ["Offset of field: obs_hotkeys_translations::space"]
3938 [::std::mem::offset_of!(obs_hotkeys_translations, space) - 176usize];
3939 ["Offset of field: obs_hotkeys_translations::numpad_num"]
3940 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_num) - 184usize];
3941 ["Offset of field: obs_hotkeys_translations::numpad_divide"]
3942 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_divide) - 192usize];
3943 ["Offset of field: obs_hotkeys_translations::numpad_multiply"]
3944 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_multiply) - 200usize];
3945 ["Offset of field: obs_hotkeys_translations::numpad_minus"]
3946 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_minus) - 208usize];
3947 ["Offset of field: obs_hotkeys_translations::numpad_plus"]
3948 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_plus) - 216usize];
3949 ["Offset of field: obs_hotkeys_translations::numpad_decimal"]
3950 [::std::mem::offset_of!(obs_hotkeys_translations, numpad_decimal) - 224usize];
3951 ["Offset of field: obs_hotkeys_translations::apple_keypad_num"]
3952 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_num) - 232usize];
3953 ["Offset of field: obs_hotkeys_translations::apple_keypad_divide"]
3954 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_divide) - 240usize];
3955 ["Offset of field: obs_hotkeys_translations::apple_keypad_multiply"]
3956 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_multiply) - 248usize];
3957 ["Offset of field: obs_hotkeys_translations::apple_keypad_minus"]
3958 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_minus) - 256usize];
3959 ["Offset of field: obs_hotkeys_translations::apple_keypad_plus"]
3960 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_plus) - 264usize];
3961 ["Offset of field: obs_hotkeys_translations::apple_keypad_decimal"]
3962 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_decimal) - 272usize];
3963 ["Offset of field: obs_hotkeys_translations::apple_keypad_equal"]
3964 [::std::mem::offset_of!(obs_hotkeys_translations, apple_keypad_equal) - 280usize];
3965 ["Offset of field: obs_hotkeys_translations::mouse_num"]
3966 [::std::mem::offset_of!(obs_hotkeys_translations, mouse_num) - 288usize];
3967 ["Offset of field: obs_hotkeys_translations::escape"]
3968 [::std::mem::offset_of!(obs_hotkeys_translations, escape) - 296usize];
3969};
3970pub type obs_hotkey_func = ::std::option::Option<
3971 unsafe extern "C" fn(
3972 data: *mut ::std::os::raw::c_void,
3973 id: obs_hotkey_id,
3974 hotkey: *mut obs_hotkey_t,
3975 pressed: bool,
3976 ),
3977>;
3978pub type obs_hotkey_active_func = ::std::option::Option<
3979 unsafe extern "C" fn(
3980 data: *mut ::std::os::raw::c_void,
3981 id: obs_hotkey_pair_id,
3982 hotkey: *mut obs_hotkey_t,
3983 pressed: bool,
3984 ) -> bool,
3985>;
3986pub type obs_hotkey_enum_func = ::std::option::Option<
3987 unsafe extern "C" fn(
3988 data: *mut ::std::os::raw::c_void,
3989 id: obs_hotkey_id,
3990 key: *mut obs_hotkey_t,
3991 ) -> bool,
3992>;
3993pub type obs_hotkey_binding_enum_func = ::std::option::Option<
3994 unsafe extern "C" fn(
3995 data: *mut ::std::os::raw::c_void,
3996 idx: usize,
3997 binding: *mut obs_hotkey_binding_t,
3998 ) -> bool,
3999>;
4000pub type obs_hotkey_callback_router_func = ::std::option::Option<
4001 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, id: obs_hotkey_id, pressed: bool),
4002>;
4003pub type obs_hotkey_atomic_update_func =
4004 ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
4005#[repr(C)]
4006#[derive(Debug, Copy, Clone)]
4007pub struct dstr {
4008 _unused: [u8; 0],
4009}
4010pub const obs_order_movement_OBS_ORDER_MOVE_UP: obs_order_movement = 0;
4011pub const obs_order_movement_OBS_ORDER_MOVE_DOWN: obs_order_movement = 1;
4012pub const obs_order_movement_OBS_ORDER_MOVE_TOP: obs_order_movement = 2;
4013pub const obs_order_movement_OBS_ORDER_MOVE_BOTTOM: obs_order_movement = 3;
4014#[doc = " Used for changing the order of items (for example, filters in a source,\n or items in a scene)"]
4015pub type obs_order_movement = ::std::os::raw::c_int;
4016pub const obs_allow_direct_render_OBS_NO_DIRECT_RENDERING: obs_allow_direct_render = 0;
4017pub const obs_allow_direct_render_OBS_ALLOW_DIRECT_RENDERING: obs_allow_direct_render = 1;
4018#[doc = " Used with obs_source_process_filter to specify whether the filter should\n render the source directly with the specified effect, or whether it should\n render it to a texture"]
4019pub type obs_allow_direct_render = ::std::os::raw::c_int;
4020pub const obs_scale_type_OBS_SCALE_DISABLE: obs_scale_type = 0;
4021pub const obs_scale_type_OBS_SCALE_POINT: obs_scale_type = 1;
4022pub const obs_scale_type_OBS_SCALE_BICUBIC: obs_scale_type = 2;
4023pub const obs_scale_type_OBS_SCALE_BILINEAR: obs_scale_type = 3;
4024pub const obs_scale_type_OBS_SCALE_LANCZOS: obs_scale_type = 4;
4025pub const obs_scale_type_OBS_SCALE_AREA: obs_scale_type = 5;
4026pub type obs_scale_type = ::std::os::raw::c_int;
4027pub const obs_blending_method_OBS_BLEND_METHOD_DEFAULT: obs_blending_method = 0;
4028pub const obs_blending_method_OBS_BLEND_METHOD_SRGB_OFF: obs_blending_method = 1;
4029pub type obs_blending_method = ::std::os::raw::c_int;
4030pub const obs_blending_type_OBS_BLEND_NORMAL: obs_blending_type = 0;
4031pub const obs_blending_type_OBS_BLEND_ADDITIVE: obs_blending_type = 1;
4032pub const obs_blending_type_OBS_BLEND_SUBTRACT: obs_blending_type = 2;
4033pub const obs_blending_type_OBS_BLEND_SCREEN: obs_blending_type = 3;
4034pub const obs_blending_type_OBS_BLEND_MULTIPLY: obs_blending_type = 4;
4035pub const obs_blending_type_OBS_BLEND_LIGHTEN: obs_blending_type = 5;
4036pub const obs_blending_type_OBS_BLEND_DARKEN: obs_blending_type = 6;
4037pub type obs_blending_type = ::std::os::raw::c_int;
4038#[doc = "< no bounds"]
4039pub const obs_bounds_type_OBS_BOUNDS_NONE: obs_bounds_type = 0;
4040#[doc = "< stretch (ignores base scale)"]
4041pub const obs_bounds_type_OBS_BOUNDS_STRETCH: obs_bounds_type = 1;
4042#[doc = "< scales to inner rectangle"]
4043pub const obs_bounds_type_OBS_BOUNDS_SCALE_INNER: obs_bounds_type = 2;
4044#[doc = "< scales to outer rectangle"]
4045pub const obs_bounds_type_OBS_BOUNDS_SCALE_OUTER: obs_bounds_type = 3;
4046#[doc = "< scales to the width"]
4047pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_WIDTH: obs_bounds_type = 4;
4048#[doc = "< scales to the height"]
4049pub const obs_bounds_type_OBS_BOUNDS_SCALE_TO_HEIGHT: obs_bounds_type = 5;
4050#[doc = "< no scaling, maximum size only"]
4051pub const obs_bounds_type_OBS_BOUNDS_MAX_ONLY: obs_bounds_type = 6;
4052#[doc = " Used with scene items to indicate the type of bounds to use for scene items.\n Mostly determines how the image will be scaled within those bounds, or\n whether to use bounds at all."]
4053pub type obs_bounds_type = ::std::os::raw::c_int;
4054pub const obs_module_load_state_OBS_MODULE_INVALID: obs_module_load_state = 0;
4055pub const obs_module_load_state_OBS_MODULE_ENABLED: obs_module_load_state = 1;
4056pub const obs_module_load_state_OBS_MODULE_MISSING: obs_module_load_state = 2;
4057pub const obs_module_load_state_OBS_MODULE_DISABLED: obs_module_load_state = 3;
4058pub const obs_module_load_state_OBS_MODULE_DISABLED_SAFE: obs_module_load_state = 4;
4059pub const obs_module_load_state_OBS_MODULE_FAILED_TO_OPEN: obs_module_load_state = 5;
4060pub const obs_module_load_state_OBS_MODULE_FAILED_TO_INITIALIZE: obs_module_load_state = 6;
4061#[doc = " Used by libobs to define the state of a plugin/module."]
4062pub type obs_module_load_state = ::std::os::raw::c_int;
4063#[repr(C)]
4064pub struct obs_transform_info {
4065 pub pos: vec2,
4066 pub rot: f32,
4067 pub scale: vec2,
4068 pub alignment: u32,
4069 pub bounds_type: obs_bounds_type,
4070 pub bounds_alignment: u32,
4071 pub bounds: vec2,
4072 pub crop_to_bounds: bool,
4073}
4074#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4075const _: () = {
4076 ["Size of obs_transform_info"][::std::mem::size_of::<obs_transform_info>() - 44usize];
4077 ["Alignment of obs_transform_info"][::std::mem::align_of::<obs_transform_info>() - 4usize];
4078 ["Offset of field: obs_transform_info::pos"]
4079 [::std::mem::offset_of!(obs_transform_info, pos) - 0usize];
4080 ["Offset of field: obs_transform_info::rot"]
4081 [::std::mem::offset_of!(obs_transform_info, rot) - 8usize];
4082 ["Offset of field: obs_transform_info::scale"]
4083 [::std::mem::offset_of!(obs_transform_info, scale) - 12usize];
4084 ["Offset of field: obs_transform_info::alignment"]
4085 [::std::mem::offset_of!(obs_transform_info, alignment) - 20usize];
4086 ["Offset of field: obs_transform_info::bounds_type"]
4087 [::std::mem::offset_of!(obs_transform_info, bounds_type) - 24usize];
4088 ["Offset of field: obs_transform_info::bounds_alignment"]
4089 [::std::mem::offset_of!(obs_transform_info, bounds_alignment) - 28usize];
4090 ["Offset of field: obs_transform_info::bounds"]
4091 [::std::mem::offset_of!(obs_transform_info, bounds) - 32usize];
4092 ["Offset of field: obs_transform_info::crop_to_bounds"]
4093 [::std::mem::offset_of!(obs_transform_info, crop_to_bounds) - 40usize];
4094};
4095#[doc = " Video initialization structure"]
4096#[repr(C)]
4097pub struct obs_video_info {
4098#[doc = " Graphics module to use (usually \"libobs-opengl\" or \"libobs-d3d11\")"]
4099 pub graphics_module: *const ::std::os::raw::c_char,
4100#[doc = "< Output FPS numerator"]
4101 pub fps_num: u32,
4102#[doc = "< Output FPS denominator"]
4103 pub fps_den: u32,
4104#[doc = "< Base compositing width"]
4105 pub base_width: u32,
4106#[doc = "< Base compositing height"]
4107 pub base_height: u32,
4108#[doc = "< Output width"]
4109 pub output_width: u32,
4110#[doc = "< Output height"]
4111 pub output_height: u32,
4112#[doc = "< Output format"]
4113 pub output_format: video_format,
4114#[doc = " Video adapter index to use (NOTE: avoid for optimus laptops)"]
4115 pub adapter: u32,
4116#[doc = " Use shaders to convert to different color formats"]
4117 pub gpu_conversion: bool,
4118#[doc = "< YUV type (if YUV)"]
4119 pub colorspace: video_colorspace,
4120#[doc = "< YUV range (if YUV)"]
4121 pub range: video_range_type,
4122#[doc = "< How to scale if scaling"]
4123 pub scale_type: obs_scale_type,
4124}
4125#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4126const _: () = {
4127 ["Size of obs_video_info"][::std::mem::size_of::<obs_video_info>() - 56usize];
4128 ["Alignment of obs_video_info"][::std::mem::align_of::<obs_video_info>() - 8usize];
4129 ["Offset of field: obs_video_info::graphics_module"]
4130 [::std::mem::offset_of!(obs_video_info, graphics_module) - 0usize];
4131 ["Offset of field: obs_video_info::fps_num"]
4132 [::std::mem::offset_of!(obs_video_info, fps_num) - 8usize];
4133 ["Offset of field: obs_video_info::fps_den"]
4134 [::std::mem::offset_of!(obs_video_info, fps_den) - 12usize];
4135 ["Offset of field: obs_video_info::base_width"]
4136 [::std::mem::offset_of!(obs_video_info, base_width) - 16usize];
4137 ["Offset of field: obs_video_info::base_height"]
4138 [::std::mem::offset_of!(obs_video_info, base_height) - 20usize];
4139 ["Offset of field: obs_video_info::output_width"]
4140 [::std::mem::offset_of!(obs_video_info, output_width) - 24usize];
4141 ["Offset of field: obs_video_info::output_height"]
4142 [::std::mem::offset_of!(obs_video_info, output_height) - 28usize];
4143 ["Offset of field: obs_video_info::output_format"]
4144 [::std::mem::offset_of!(obs_video_info, output_format) - 32usize];
4145 ["Offset of field: obs_video_info::adapter"]
4146 [::std::mem::offset_of!(obs_video_info, adapter) - 36usize];
4147 ["Offset of field: obs_video_info::gpu_conversion"]
4148 [::std::mem::offset_of!(obs_video_info, gpu_conversion) - 40usize];
4149 ["Offset of field: obs_video_info::colorspace"]
4150 [::std::mem::offset_of!(obs_video_info, colorspace) - 44usize];
4151 ["Offset of field: obs_video_info::range"]
4152 [::std::mem::offset_of!(obs_video_info, range) - 48usize];
4153 ["Offset of field: obs_video_info::scale_type"]
4154 [::std::mem::offset_of!(obs_video_info, scale_type) - 52usize];
4155};
4156#[doc = " Audio initialization structure"]
4157#[repr(C)]
4158pub struct obs_audio_info {
4159 pub samples_per_sec: u32,
4160 pub speakers: speaker_layout,
4161}
4162#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4163const _: () = {
4164 ["Size of obs_audio_info"][::std::mem::size_of::<obs_audio_info>() - 8usize];
4165 ["Alignment of obs_audio_info"][::std::mem::align_of::<obs_audio_info>() - 4usize];
4166 ["Offset of field: obs_audio_info::samples_per_sec"]
4167 [::std::mem::offset_of!(obs_audio_info, samples_per_sec) - 0usize];
4168 ["Offset of field: obs_audio_info::speakers"]
4169 [::std::mem::offset_of!(obs_audio_info, speakers) - 4usize];
4170};
4171#[repr(C)]
4172pub struct obs_audio_info2 {
4173 pub samples_per_sec: u32,
4174 pub speakers: speaker_layout,
4175 pub max_buffering_ms: u32,
4176 pub fixed_buffering: bool,
4177}
4178#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4179const _: () = {
4180 ["Size of obs_audio_info2"][::std::mem::size_of::<obs_audio_info2>() - 16usize];
4181 ["Alignment of obs_audio_info2"][::std::mem::align_of::<obs_audio_info2>() - 4usize];
4182 ["Offset of field: obs_audio_info2::samples_per_sec"]
4183 [::std::mem::offset_of!(obs_audio_info2, samples_per_sec) - 0usize];
4184 ["Offset of field: obs_audio_info2::speakers"]
4185 [::std::mem::offset_of!(obs_audio_info2, speakers) - 4usize];
4186 ["Offset of field: obs_audio_info2::max_buffering_ms"]
4187 [::std::mem::offset_of!(obs_audio_info2, max_buffering_ms) - 8usize];
4188 ["Offset of field: obs_audio_info2::fixed_buffering"]
4189 [::std::mem::offset_of!(obs_audio_info2, fixed_buffering) - 12usize];
4190};
4191#[doc = " Sent to source filters via the filter_audio callback to allow filtering of\n audio data"]
4192#[repr(C)]
4193pub struct obs_audio_data {
4194 pub data: [*mut u8; 8usize],
4195 pub frames: u32,
4196 pub timestamp: u64,
4197}
4198#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4199const _: () = {
4200 ["Size of obs_audio_data"][::std::mem::size_of::<obs_audio_data>() - 80usize];
4201 ["Alignment of obs_audio_data"][::std::mem::align_of::<obs_audio_data>() - 8usize];
4202 ["Offset of field: obs_audio_data::data"]
4203 [::std::mem::offset_of!(obs_audio_data, data) - 0usize];
4204 ["Offset of field: obs_audio_data::frames"]
4205 [::std::mem::offset_of!(obs_audio_data, frames) - 64usize];
4206 ["Offset of field: obs_audio_data::timestamp"]
4207 [::std::mem::offset_of!(obs_audio_data, timestamp) - 72usize];
4208};
4209#[doc = " Source audio output structure. Used with obs_source_output_audio to output\n source audio. Audio is automatically resampled and remixed as necessary."]
4210#[repr(C)]
4211pub struct obs_source_audio {
4212 pub data: [*const u8; 8usize],
4213 pub frames: u32,
4214 pub speakers: speaker_layout,
4215 pub format: audio_format,
4216 pub samples_per_sec: u32,
4217 pub timestamp: u64,
4218}
4219#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4220const _: () = {
4221 ["Size of obs_source_audio"][::std::mem::size_of::<obs_source_audio>() - 88usize];
4222 ["Alignment of obs_source_audio"][::std::mem::align_of::<obs_source_audio>() - 8usize];
4223 ["Offset of field: obs_source_audio::data"]
4224 [::std::mem::offset_of!(obs_source_audio, data) - 0usize];
4225 ["Offset of field: obs_source_audio::frames"]
4226 [::std::mem::offset_of!(obs_source_audio, frames) - 64usize];
4227 ["Offset of field: obs_source_audio::speakers"]
4228 [::std::mem::offset_of!(obs_source_audio, speakers) - 68usize];
4229 ["Offset of field: obs_source_audio::format"]
4230 [::std::mem::offset_of!(obs_source_audio, format) - 72usize];
4231 ["Offset of field: obs_source_audio::samples_per_sec"]
4232 [::std::mem::offset_of!(obs_source_audio, samples_per_sec) - 76usize];
4233 ["Offset of field: obs_source_audio::timestamp"]
4234 [::std::mem::offset_of!(obs_source_audio, timestamp) - 80usize];
4235};
4236#[repr(C)]
4237pub struct obs_source_cea_708 {
4238 pub data: *const u8,
4239 pub packets: u32,
4240 pub timestamp: u64,
4241}
4242#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4243const _: () = {
4244 ["Size of obs_source_cea_708"][::std::mem::size_of::<obs_source_cea_708>() - 24usize];
4245 ["Alignment of obs_source_cea_708"][::std::mem::align_of::<obs_source_cea_708>() - 8usize];
4246 ["Offset of field: obs_source_cea_708::data"]
4247 [::std::mem::offset_of!(obs_source_cea_708, data) - 0usize];
4248 ["Offset of field: obs_source_cea_708::packets"]
4249 [::std::mem::offset_of!(obs_source_cea_708, packets) - 8usize];
4250 ["Offset of field: obs_source_cea_708::timestamp"]
4251 [::std::mem::offset_of!(obs_source_cea_708, timestamp) - 16usize];
4252};
4253#[doc = " Source asynchronous video output structure. Used with\n obs_source_output_video to output asynchronous video. Video is buffered as\n necessary to play according to timestamps. When used with audio output,\n audio is synced to video as it is played.\n\n If a YUV format is specified, it will be automatically upsampled and\n converted to RGB via shader on the graphics processor.\n\n NOTE: Non-YUV formats will always be treated as full range with this\n structure! Use obs_source_frame2 along with obs_source_output_video2\n instead if partial range support is desired for non-YUV video formats."]
4254#[repr(C)]
4255pub struct obs_source_frame {
4256 pub data: [*mut u8; 8usize],
4257 pub linesize: [u32; 8usize],
4258 pub width: u32,
4259 pub height: u32,
4260 pub timestamp: u64,
4261 pub format: video_format,
4262 pub color_matrix: [f32; 16usize],
4263 pub full_range: bool,
4264 pub max_luminance: u16,
4265 pub color_range_min: [f32; 3usize],
4266 pub color_range_max: [f32; 3usize],
4267 pub flip: bool,
4268 pub flags: u8,
4269 pub trc: u8,
4270 pub refs: ::std::os::raw::c_long,
4271 pub prev_frame: bool,
4272}
4273#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4274const _: () = {
4275 ["Size of obs_source_frame"][::std::mem::size_of::<obs_source_frame>() - 224usize];
4276 ["Alignment of obs_source_frame"][::std::mem::align_of::<obs_source_frame>() - 8usize];
4277 ["Offset of field: obs_source_frame::data"]
4278 [::std::mem::offset_of!(obs_source_frame, data) - 0usize];
4279 ["Offset of field: obs_source_frame::linesize"]
4280 [::std::mem::offset_of!(obs_source_frame, linesize) - 64usize];
4281 ["Offset of field: obs_source_frame::width"]
4282 [::std::mem::offset_of!(obs_source_frame, width) - 96usize];
4283 ["Offset of field: obs_source_frame::height"]
4284 [::std::mem::offset_of!(obs_source_frame, height) - 100usize];
4285 ["Offset of field: obs_source_frame::timestamp"]
4286 [::std::mem::offset_of!(obs_source_frame, timestamp) - 104usize];
4287 ["Offset of field: obs_source_frame::format"]
4288 [::std::mem::offset_of!(obs_source_frame, format) - 112usize];
4289 ["Offset of field: obs_source_frame::color_matrix"]
4290 [::std::mem::offset_of!(obs_source_frame, color_matrix) - 116usize];
4291 ["Offset of field: obs_source_frame::full_range"]
4292 [::std::mem::offset_of!(obs_source_frame, full_range) - 180usize];
4293 ["Offset of field: obs_source_frame::max_luminance"]
4294 [::std::mem::offset_of!(obs_source_frame, max_luminance) - 182usize];
4295 ["Offset of field: obs_source_frame::color_range_min"]
4296 [::std::mem::offset_of!(obs_source_frame, color_range_min) - 184usize];
4297 ["Offset of field: obs_source_frame::color_range_max"]
4298 [::std::mem::offset_of!(obs_source_frame, color_range_max) - 196usize];
4299 ["Offset of field: obs_source_frame::flip"]
4300 [::std::mem::offset_of!(obs_source_frame, flip) - 208usize];
4301 ["Offset of field: obs_source_frame::flags"]
4302 [::std::mem::offset_of!(obs_source_frame, flags) - 209usize];
4303 ["Offset of field: obs_source_frame::trc"]
4304 [::std::mem::offset_of!(obs_source_frame, trc) - 210usize];
4305 ["Offset of field: obs_source_frame::refs"]
4306 [::std::mem::offset_of!(obs_source_frame, refs) - 212usize];
4307 ["Offset of field: obs_source_frame::prev_frame"]
4308 [::std::mem::offset_of!(obs_source_frame, prev_frame) - 216usize];
4309};
4310#[repr(C)]
4311pub struct obs_source_frame2 {
4312 pub data: [*mut u8; 8usize],
4313 pub linesize: [u32; 8usize],
4314 pub width: u32,
4315 pub height: u32,
4316 pub timestamp: u64,
4317 pub format: video_format,
4318 pub range: video_range_type,
4319 pub color_matrix: [f32; 16usize],
4320 pub color_range_min: [f32; 3usize],
4321 pub color_range_max: [f32; 3usize],
4322 pub flip: bool,
4323 pub flags: u8,
4324 pub trc: u8,
4325}
4326#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4327const _: () = {
4328 ["Size of obs_source_frame2"][::std::mem::size_of::<obs_source_frame2>() - 216usize];
4329 ["Alignment of obs_source_frame2"][::std::mem::align_of::<obs_source_frame2>() - 8usize];
4330 ["Offset of field: obs_source_frame2::data"]
4331 [::std::mem::offset_of!(obs_source_frame2, data) - 0usize];
4332 ["Offset of field: obs_source_frame2::linesize"]
4333 [::std::mem::offset_of!(obs_source_frame2, linesize) - 64usize];
4334 ["Offset of field: obs_source_frame2::width"]
4335 [::std::mem::offset_of!(obs_source_frame2, width) - 96usize];
4336 ["Offset of field: obs_source_frame2::height"]
4337 [::std::mem::offset_of!(obs_source_frame2, height) - 100usize];
4338 ["Offset of field: obs_source_frame2::timestamp"]
4339 [::std::mem::offset_of!(obs_source_frame2, timestamp) - 104usize];
4340 ["Offset of field: obs_source_frame2::format"]
4341 [::std::mem::offset_of!(obs_source_frame2, format) - 112usize];
4342 ["Offset of field: obs_source_frame2::range"]
4343 [::std::mem::offset_of!(obs_source_frame2, range) - 116usize];
4344 ["Offset of field: obs_source_frame2::color_matrix"]
4345 [::std::mem::offset_of!(obs_source_frame2, color_matrix) - 120usize];
4346 ["Offset of field: obs_source_frame2::color_range_min"]
4347 [::std::mem::offset_of!(obs_source_frame2, color_range_min) - 184usize];
4348 ["Offset of field: obs_source_frame2::color_range_max"]
4349 [::std::mem::offset_of!(obs_source_frame2, color_range_max) - 196usize];
4350 ["Offset of field: obs_source_frame2::flip"]
4351 [::std::mem::offset_of!(obs_source_frame2, flip) - 208usize];
4352 ["Offset of field: obs_source_frame2::flags"]
4353 [::std::mem::offset_of!(obs_source_frame2, flags) - 209usize];
4354 ["Offset of field: obs_source_frame2::trc"]
4355 [::std::mem::offset_of!(obs_source_frame2, trc) - 210usize];
4356};
4357#[doc = " Access to the argc/argv used to start OBS. What you see is what you get."]
4358#[repr(C)]
4359#[derive(Debug, Copy, Clone)]
4360pub struct obs_cmdline_args {
4361 pub argc: ::std::os::raw::c_int,
4362 pub argv: *mut *mut ::std::os::raw::c_char,
4363}
4364#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4365const _: () = {
4366 ["Size of obs_cmdline_args"][::std::mem::size_of::<obs_cmdline_args>() - 16usize];
4367 ["Alignment of obs_cmdline_args"][::std::mem::align_of::<obs_cmdline_args>() - 8usize];
4368 ["Offset of field: obs_cmdline_args::argc"]
4369 [::std::mem::offset_of!(obs_cmdline_args, argc) - 0usize];
4370 ["Offset of field: obs_cmdline_args::argv"]
4371 [::std::mem::offset_of!(obs_cmdline_args, argv) - 8usize];
4372};
4373#[repr(C)]
4374pub struct obs_module_failure_info {
4375 pub failed_modules: *mut *mut ::std::os::raw::c_char,
4376 pub count: usize,
4377}
4378#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4379const _: () = {
4380 ["Size of obs_module_failure_info"][::std::mem::size_of::<obs_module_failure_info>() - 16usize];
4381 ["Alignment of obs_module_failure_info"]
4382 [::std::mem::align_of::<obs_module_failure_info>() - 8usize];
4383 ["Offset of field: obs_module_failure_info::failed_modules"]
4384 [::std::mem::offset_of!(obs_module_failure_info, failed_modules) - 0usize];
4385 ["Offset of field: obs_module_failure_info::count"]
4386 [::std::mem::offset_of!(obs_module_failure_info, count) - 8usize];
4387};
4388#[repr(C)]
4389#[derive(Debug, Copy, Clone)]
4390pub struct obs_module_info {
4391 pub bin_path: *const ::std::os::raw::c_char,
4392 pub data_path: *const ::std::os::raw::c_char,
4393}
4394#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4395const _: () = {
4396 ["Size of obs_module_info"][::std::mem::size_of::<obs_module_info>() - 16usize];
4397 ["Alignment of obs_module_info"][::std::mem::align_of::<obs_module_info>() - 8usize];
4398 ["Offset of field: obs_module_info::bin_path"]
4399 [::std::mem::offset_of!(obs_module_info, bin_path) - 0usize];
4400 ["Offset of field: obs_module_info::data_path"]
4401 [::std::mem::offset_of!(obs_module_info, data_path) - 8usize];
4402};
4403pub type obs_find_module_callback_t = ::std::option::Option<
4404 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info),
4405>;
4406#[repr(C)]
4407#[derive(Debug, Copy, Clone)]
4408pub struct obs_module_info2 {
4409 pub bin_path: *const ::std::os::raw::c_char,
4410 pub data_path: *const ::std::os::raw::c_char,
4411 pub name: *const ::std::os::raw::c_char,
4412}
4413#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4414const _: () = {
4415 ["Size of obs_module_info2"][::std::mem::size_of::<obs_module_info2>() - 24usize];
4416 ["Alignment of obs_module_info2"][::std::mem::align_of::<obs_module_info2>() - 8usize];
4417 ["Offset of field: obs_module_info2::bin_path"]
4418 [::std::mem::offset_of!(obs_module_info2, bin_path) - 0usize];
4419 ["Offset of field: obs_module_info2::data_path"]
4420 [::std::mem::offset_of!(obs_module_info2, data_path) - 8usize];
4421 ["Offset of field: obs_module_info2::name"]
4422 [::std::mem::offset_of!(obs_module_info2, name) - 16usize];
4423};
4424pub type obs_find_module_callback2_t = ::std::option::Option<
4425 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, info: *const obs_module_info2),
4426>;
4427pub type obs_enum_module_callback_t = ::std::option::Option<
4428 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, module: *mut obs_module_t),
4429>;
4430#[doc = "< RGB/YUV"]
4431pub const obs_base_effect_OBS_EFFECT_DEFAULT: obs_base_effect = 0;
4432#[doc = "< RGB/YUV (using texture_rect)"]
4433pub const obs_base_effect_OBS_EFFECT_DEFAULT_RECT: obs_base_effect = 1;
4434#[doc = "< RGB/YUV (alpha set to 1.0)"]
4435pub const obs_base_effect_OBS_EFFECT_OPAQUE: obs_base_effect = 2;
4436#[doc = "< RGB/YUV (solid color only)"]
4437pub const obs_base_effect_OBS_EFFECT_SOLID: obs_base_effect = 3;
4438#[doc = "< Bicubic downscale"]
4439pub const obs_base_effect_OBS_EFFECT_BICUBIC: obs_base_effect = 4;
4440#[doc = "< Lanczos downscale"]
4441pub const obs_base_effect_OBS_EFFECT_LANCZOS: obs_base_effect = 5;
4442#[doc = "< Bilinear low resolution downscale"]
4443pub const obs_base_effect_OBS_EFFECT_BILINEAR_LOWRES: obs_base_effect = 6;
4444#[doc = "< Premultiplied alpha"]
4445pub const obs_base_effect_OBS_EFFECT_PREMULTIPLIED_ALPHA: obs_base_effect = 7;
4446#[doc = "< RGB/YUV (repeating)"]
4447pub const obs_base_effect_OBS_EFFECT_REPEAT: obs_base_effect = 8;
4448#[doc = "< Area rescale"]
4449pub const obs_base_effect_OBS_EFFECT_AREA: obs_base_effect = 9;
4450pub type obs_base_effect = ::std::os::raw::c_int;
4451pub type obs_load_source_cb = ::std::option::Option<
4452 unsafe extern "C" fn(private_data: *mut ::std::os::raw::c_void, source: *mut obs_source_t),
4453>;
4454pub type obs_save_source_filter_cb = ::std::option::Option<
4455 unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, source: *mut obs_source_t) -> bool,
4456>;
4457pub const obs_obj_type_OBS_OBJ_TYPE_INVALID: obs_obj_type = 0;
4458pub const obs_obj_type_OBS_OBJ_TYPE_SOURCE: obs_obj_type = 1;
4459pub const obs_obj_type_OBS_OBJ_TYPE_OUTPUT: obs_obj_type = 2;
4460pub const obs_obj_type_OBS_OBJ_TYPE_ENCODER: obs_obj_type = 3;
4461pub const obs_obj_type_OBS_OBJ_TYPE_SERVICE: obs_obj_type = 4;
4462pub const obs_obj_type_OBS_OBJ_TYPE_CANVAS: obs_obj_type = 5;
4463pub type obs_obj_type = ::std::os::raw::c_int;
4464pub type obs_enum_audio_device_cb = ::std::option::Option<
4465 unsafe extern "C" fn(
4466 data: *mut ::std::os::raw::c_void,
4467 name: *const ::std::os::raw::c_char,
4468 id: *const ::std::os::raw::c_char,
4469 ) -> bool,
4470>;
4471pub type obs_task_t =
4472 ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>;
4473pub const obs_task_type_OBS_TASK_UI: obs_task_type = 0;
4474pub const obs_task_type_OBS_TASK_GRAPHICS: obs_task_type = 1;
4475pub const obs_task_type_OBS_TASK_AUDIO: obs_task_type = 2;
4476pub const obs_task_type_OBS_TASK_DESTROY: obs_task_type = 3;
4477pub type obs_task_type = ::std::os::raw::c_int;
4478pub type obs_task_handler_t = ::std::option::Option<
4479 unsafe extern "C" fn(task: obs_task_t, param: *mut ::std::os::raw::c_void, wait: bool),
4480>;
4481pub type obs_source_audio_capture_t = ::std::option::Option<
4482 unsafe extern "C" fn(
4483 param: *mut ::std::os::raw::c_void,
4484 source: *mut obs_source_t,
4485 audio_data: *const audio_data,
4486 muted: bool,
4487 ),
4488>;
4489pub type obs_source_caption_t = ::std::option::Option<
4490 unsafe extern "C" fn(
4491 param: *mut ::std::os::raw::c_void,
4492 source: *mut obs_source_t,
4493 captions: *const obs_source_cea_708,
4494 ),
4495>;
4496pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISABLE: obs_deinterlace_mode = 0;
4497pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_DISCARD: obs_deinterlace_mode = 1;
4498pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_RETRO: obs_deinterlace_mode = 2;
4499pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND: obs_deinterlace_mode = 3;
4500pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_BLEND_2X: obs_deinterlace_mode = 4;
4501pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR: obs_deinterlace_mode = 5;
4502pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_LINEAR_2X: obs_deinterlace_mode = 6;
4503pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF: obs_deinterlace_mode = 7;
4504pub const obs_deinterlace_mode_OBS_DEINTERLACE_MODE_YADIF_2X: obs_deinterlace_mode = 8;
4505pub type obs_deinterlace_mode = ::std::os::raw::c_int;
4506pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_TOP: obs_deinterlace_field_order =
4507 0;
4508pub const obs_deinterlace_field_order_OBS_DEINTERLACE_FIELD_ORDER_BOTTOM:
4509 obs_deinterlace_field_order = 1;
4510pub type obs_deinterlace_field_order = ::std::os::raw::c_int;
4511pub const obs_monitoring_type_OBS_MONITORING_TYPE_NONE: obs_monitoring_type = 0;
4512pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_ONLY: obs_monitoring_type = 1;
4513pub const obs_monitoring_type_OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT: obs_monitoring_type = 2;
4514pub type obs_monitoring_type = ::std::os::raw::c_int;
4515pub const obs_transition_target_OBS_TRANSITION_SOURCE_A: obs_transition_target = 0;
4516pub const obs_transition_target_OBS_TRANSITION_SOURCE_B: obs_transition_target = 1;
4517pub type obs_transition_target = ::std::os::raw::c_int;
4518pub const obs_transition_mode_OBS_TRANSITION_MODE_AUTO: obs_transition_mode = 0;
4519pub const obs_transition_mode_OBS_TRANSITION_MODE_MANUAL: obs_transition_mode = 1;
4520pub type obs_transition_mode = ::std::os::raw::c_int;
4521pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_MAX_ONLY: obs_transition_scale_type = 0;
4522pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_ASPECT: obs_transition_scale_type = 1;
4523pub const obs_transition_scale_type_OBS_TRANSITION_SCALE_STRETCH: obs_transition_scale_type = 2;
4524pub type obs_transition_scale_type = ::std::os::raw::c_int;
4525pub type obs_transition_video_render_callback_t = ::std::option::Option<
4526 unsafe extern "C" fn(
4527 data: *mut ::std::os::raw::c_void,
4528 a: *mut gs_texture_t,
4529 b: *mut gs_texture_t,
4530 t: f32,
4531 cx: u32,
4532 cy: u32,
4533 ),
4534>;
4535pub type obs_transition_audio_mix_callback_t =
4536 ::std::option::Option<unsafe extern "C" fn(data: *mut ::std::os::raw::c_void, t: f32) -> f32>;
4537#[doc = "< Source refs only"]
4538pub const obs_scene_duplicate_type_OBS_SCENE_DUP_REFS: obs_scene_duplicate_type = 0;
4539#[doc = "< Fully duplicate"]
4540pub const obs_scene_duplicate_type_OBS_SCENE_DUP_COPY: obs_scene_duplicate_type = 1;
4541#[doc = "< Source refs only (as private)"]
4542pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_REFS: obs_scene_duplicate_type = 2;
4543#[doc = "< Fully duplicate (as private)"]
4544pub const obs_scene_duplicate_type_OBS_SCENE_DUP_PRIVATE_COPY: obs_scene_duplicate_type = 3;
4545pub type obs_scene_duplicate_type = ::std::os::raw::c_int;
4546#[repr(C)]
4547#[derive(Debug, Copy, Clone)]
4548pub struct obs_sceneitem_order_info {
4549 pub group: *mut obs_sceneitem_t,
4550 pub item: *mut obs_sceneitem_t,
4551}
4552#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4553const _: () = {
4554 ["Size of obs_sceneitem_order_info"]
4555 [::std::mem::size_of::<obs_sceneitem_order_info>() - 16usize];
4556 ["Alignment of obs_sceneitem_order_info"]
4557 [::std::mem::align_of::<obs_sceneitem_order_info>() - 8usize];
4558 ["Offset of field: obs_sceneitem_order_info::group"]
4559 [::std::mem::offset_of!(obs_sceneitem_order_info, group) - 0usize];
4560 ["Offset of field: obs_sceneitem_order_info::item"]
4561 [::std::mem::offset_of!(obs_sceneitem_order_info, item) - 8usize];
4562};
4563pub type obs_scene_atomic_update_func = ::std::option::Option<
4564 unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, scene: *mut obs_scene_t),
4565>;
4566#[repr(C)]
4567#[derive(Debug, Copy, Clone)]
4568pub struct obs_sceneitem_crop {
4569 pub left: ::std::os::raw::c_int,
4570 pub top: ::std::os::raw::c_int,
4571 pub right: ::std::os::raw::c_int,
4572 pub bottom: ::std::os::raw::c_int,
4573}
4574#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4575const _: () = {
4576 ["Size of obs_sceneitem_crop"][::std::mem::size_of::<obs_sceneitem_crop>() - 16usize];
4577 ["Alignment of obs_sceneitem_crop"][::std::mem::align_of::<obs_sceneitem_crop>() - 4usize];
4578 ["Offset of field: obs_sceneitem_crop::left"]
4579 [::std::mem::offset_of!(obs_sceneitem_crop, left) - 0usize];
4580 ["Offset of field: obs_sceneitem_crop::top"]
4581 [::std::mem::offset_of!(obs_sceneitem_crop, top) - 4usize];
4582 ["Offset of field: obs_sceneitem_crop::right"]
4583 [::std::mem::offset_of!(obs_sceneitem_crop, right) - 8usize];
4584 ["Offset of field: obs_sceneitem_crop::bottom"]
4585 [::std::mem::offset_of!(obs_sceneitem_crop, bottom) - 12usize];
4586};
4587pub const obs_canvas_flags_MAIN: obs_canvas_flags = 1;
4588pub const obs_canvas_flags_ACTIVATE: obs_canvas_flags = 2;
4589pub const obs_canvas_flags_MIX_AUDIO: obs_canvas_flags = 4;
4590pub const obs_canvas_flags_SCENE_REF: obs_canvas_flags = 8;
4591pub const obs_canvas_flags_EPHEMERAL: obs_canvas_flags = 16;
4592pub const obs_canvas_flags_PROGRAM: obs_canvas_flags = 14;
4593pub const obs_canvas_flags_PREVIEW: obs_canvas_flags = 16;
4594pub const obs_canvas_flags_DEVICE: obs_canvas_flags = 18;
4595pub type obs_canvas_flags = ::std::os::raw::c_int;
4596pub const display_capture_method_DISPLAY_METHOD_AUTO: display_capture_method = 0;
4597pub const display_capture_method_DISPLAY_METHOD_DXGI: display_capture_method = 1;
4598pub const display_capture_method_DISPLAY_METHOD_WGC: display_capture_method = 2;
4599pub type display_capture_method = ::std::os::raw::c_int;
4600pub const capture_mode_CAPTURE_MODE_ANY: capture_mode = 0;
4601pub const capture_mode_CAPTURE_MODE_WINDOW: capture_mode = 1;
4602pub const capture_mode_CAPTURE_MODE_HOTKEY: capture_mode = 2;
4603pub type capture_mode = ::std::os::raw::c_int;
4604pub const hook_rate_HOOK_RATE_SLOW: hook_rate = 0;
4605pub const hook_rate_HOOK_RATE_NORMAL: hook_rate = 1;
4606pub const hook_rate_HOOK_RATE_FAST: hook_rate = 2;
4607pub const hook_rate_HOOK_RATE_FASTEST: hook_rate = 3;
4608pub type hook_rate = ::std::os::raw::c_int;
4609pub const window_priority_WINDOW_PRIORITY_CLASS: window_priority = 0;
4610pub const window_priority_WINDOW_PRIORITY_TITLE: window_priority = 1;
4611pub const window_priority_WINDOW_PRIORITY_EXE: window_priority = 2;
4612pub type window_priority = ::std::os::raw::c_int;
4613pub const window_search_mode_INCLUDE_MINIMIZED: window_search_mode = 0;
4614pub const window_search_mode_EXCLUDE_MINIMIZED: window_search_mode = 1;
4615pub type window_search_mode = ::std::os::raw::c_int;
4616pub const window_capture_method_METHOD_AUTO: window_capture_method = 0;
4617pub const window_capture_method_METHOD_BITBLT: window_capture_method = 1;
4618pub const window_capture_method_METHOD_WGC: window_capture_method = 2;
4619pub type window_capture_method = ::std::os::raw::c_int;
4620pub type __builtin_va_list = *mut ::std::os::raw::c_char;
4621unsafe extern "C" {
4622 pub fn base_get_log_handler(
4623 handler: *mut log_handler_t,
4624 param: *mut *mut ::std::os::raw::c_void,
4625 );
4626 pub fn base_set_log_handler(handler: log_handler_t, param: *mut ::std::os::raw::c_void);
4627 pub fn base_set_crash_handler(
4628 handler: ::std::option::Option<
4629 unsafe extern "C" fn(
4630 arg1: *const ::std::os::raw::c_char,
4631 arg2: va_list,
4632 arg3: *mut ::std::os::raw::c_void,
4633 ),
4634 >,
4635 param: *mut ::std::os::raw::c_void,
4636 );
4637 pub fn blog(log_level: ::std::os::raw::c_int, format: *const ::std::os::raw::c_char, ...);
4638 pub fn bcrash(format: *const ::std::os::raw::c_char, ...) -> !;
4639 pub fn bmalloc(size: usize) -> *mut ::std::os::raw::c_void;
4640 pub fn brealloc(ptr: *mut ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4641 pub fn bfree(ptr: *mut ::std::os::raw::c_void);
4642 pub fn base_get_alignment() -> ::std::os::raw::c_int;
4643 pub fn bnum_allocs() -> ::std::os::raw::c_long;
4644 pub fn bmemdup(ptr: *const ::std::os::raw::c_void, size: usize) -> *mut ::std::os::raw::c_void;
4645 pub fn profile_register_root(
4646 name: *const ::std::os::raw::c_char,
4647 expected_time_between_calls: u64,
4648 );
4649 pub fn profile_start(name: *const ::std::os::raw::c_char);
4650 pub fn profile_end(name: *const ::std::os::raw::c_char);
4651 pub fn profile_reenable_thread();
4652 pub fn profiler_start();
4653 pub fn profiler_stop();
4654 pub fn profiler_print(snap: *mut profiler_snapshot_t);
4655 pub fn profiler_print_time_between_calls(snap: *mut profiler_snapshot_t);
4656 pub fn profiler_free();
4657 pub fn profiler_name_store_create() -> *mut profiler_name_store_t;
4658 pub fn profiler_name_store_free(store: *mut profiler_name_store_t);
4659 pub fn profile_store_name(
4660 store: *mut profiler_name_store_t,
4661 format: *const ::std::os::raw::c_char,
4662 ...
4663 ) -> *const ::std::os::raw::c_char;
4664 pub fn profile_snapshot_create() -> *mut profiler_snapshot_t;
4665 pub fn profile_snapshot_free(snap: *mut profiler_snapshot_t);
4666 pub fn profiler_snapshot_dump_csv(
4667 snap: *const profiler_snapshot_t,
4668 filename: *const ::std::os::raw::c_char,
4669 ) -> bool;
4670 pub fn profiler_snapshot_dump_csv_gz(
4671 snap: *const profiler_snapshot_t,
4672 filename: *const ::std::os::raw::c_char,
4673 ) -> bool;
4674 pub fn profiler_snapshot_num_roots(snap: *mut profiler_snapshot_t) -> usize;
4675 pub fn profiler_snapshot_enumerate_roots(
4676 snap: *mut profiler_snapshot_t,
4677 func: profiler_entry_enum_func,
4678 context: *mut ::std::os::raw::c_void,
4679 );
4680 pub fn profiler_snapshot_filter_roots(
4681 snap: *mut profiler_snapshot_t,
4682 func: profiler_name_filter_func,
4683 data: *mut ::std::os::raw::c_void,
4684 );
4685 pub fn profiler_snapshot_num_children(entry: *mut profiler_snapshot_entry_t) -> usize;
4686 pub fn profiler_snapshot_enumerate_children(
4687 entry: *mut profiler_snapshot_entry_t,
4688 func: profiler_entry_enum_func,
4689 context: *mut ::std::os::raw::c_void,
4690 );
4691 pub fn profiler_snapshot_entry_name(
4692 entry: *mut profiler_snapshot_entry_t,
4693 ) -> *const ::std::os::raw::c_char;
4694 pub fn profiler_snapshot_entry_times(
4695 entry: *mut profiler_snapshot_entry_t,
4696 ) -> *mut profiler_time_entries_t;
4697 pub fn profiler_snapshot_entry_min_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4698 pub fn profiler_snapshot_entry_max_time(entry: *mut profiler_snapshot_entry_t) -> u64;
4699 pub fn profiler_snapshot_entry_overall_count(entry: *mut profiler_snapshot_entry_t) -> u64;
4700 pub fn profiler_snapshot_entry_times_between_calls(
4701 entry: *mut profiler_snapshot_entry_t,
4702 ) -> *mut profiler_time_entries_t;
4703 pub fn profiler_snapshot_entry_expected_time_between_calls(
4704 entry: *mut profiler_snapshot_entry_t,
4705 ) -> u64;
4706 pub fn profiler_snapshot_entry_min_time_between_calls(
4707 entry: *mut profiler_snapshot_entry_t,
4708 ) -> u64;
4709 pub fn profiler_snapshot_entry_max_time_between_calls(
4710 entry: *mut profiler_snapshot_entry_t,
4711 ) -> u64;
4712 pub fn profiler_snapshot_entry_overall_between_calls_count(
4713 entry: *mut profiler_snapshot_entry_t,
4714 ) -> u64;
4715 pub fn text_lookup_create(path: *const ::std::os::raw::c_char) -> *mut lookup_t;
4716 pub fn text_lookup_add(lookup: *mut lookup_t, path: *const ::std::os::raw::c_char) -> bool;
4717 pub fn text_lookup_destroy(lookup: *mut lookup_t);
4718 pub fn text_lookup_getstr(
4719 lookup: *mut lookup_t,
4720 lookup_val: *const ::std::os::raw::c_char,
4721 out: *mut *const ::std::os::raw::c_char,
4722 ) -> bool;
4723 pub fn input_getbuttonstate(input: *mut input_t, button: u32) -> ::std::os::raw::c_int;
4724 pub fn gs_shader_destroy(shader: *mut gs_shader_t);
4725 pub fn gs_shader_get_num_params(shader: *const gs_shader_t) -> ::std::os::raw::c_int;
4726 pub fn gs_shader_get_param_by_idx(shader: *mut gs_shader_t, param: u32) -> *mut gs_sparam_t;
4727 pub fn gs_shader_get_param_by_name(
4728 shader: *mut gs_shader_t,
4729 name: *const ::std::os::raw::c_char,
4730 ) -> *mut gs_sparam_t;
4731 pub fn gs_shader_get_viewproj_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4732 pub fn gs_shader_get_world_matrix(shader: *const gs_shader_t) -> *mut gs_sparam_t;
4733 pub fn gs_shader_get_param_info(param: *const gs_sparam_t, info: *mut gs_shader_param_info);
4734 pub fn gs_shader_set_bool(param: *mut gs_sparam_t, val: bool);
4735 pub fn gs_shader_set_float(param: *mut gs_sparam_t, val: f32);
4736 pub fn gs_shader_set_int(param: *mut gs_sparam_t, val: ::std::os::raw::c_int);
4737 pub fn gs_shader_set_matrix3(param: *mut gs_sparam_t, val: *const matrix3);
4738 pub fn gs_shader_set_matrix4(param: *mut gs_sparam_t, val: *const matrix4);
4739 pub fn gs_shader_set_vec2(param: *mut gs_sparam_t, val: *const vec2);
4740 pub fn gs_shader_set_vec3(param: *mut gs_sparam_t, val: *const vec3);
4741 pub fn gs_shader_set_vec4(param: *mut gs_sparam_t, val: *const vec4);
4742 pub fn gs_shader_set_texture(param: *mut gs_sparam_t, val: *mut gs_texture_t);
4743 pub fn gs_shader_set_val(
4744 param: *mut gs_sparam_t,
4745 val: *const ::std::os::raw::c_void,
4746 size: usize,
4747 );
4748 pub fn gs_shader_set_default(param: *mut gs_sparam_t);
4749 pub fn gs_shader_set_next_sampler(param: *mut gs_sparam_t, sampler: *mut gs_samplerstate_t);
4750 pub fn gs_effect_destroy(effect: *mut gs_effect_t);
4751 pub fn gs_effect_get_technique(
4752 effect: *const gs_effect_t,
4753 name: *const ::std::os::raw::c_char,
4754 ) -> *mut gs_technique_t;
4755 pub fn gs_effect_get_current_technique(effect: *const gs_effect_t) -> *mut gs_technique_t;
4756 pub fn gs_technique_begin(technique: *mut gs_technique_t) -> usize;
4757 pub fn gs_technique_end(technique: *mut gs_technique_t);
4758 pub fn gs_technique_begin_pass(technique: *mut gs_technique_t, pass: usize) -> bool;
4759 pub fn gs_technique_begin_pass_by_name(
4760 technique: *mut gs_technique_t,
4761 name: *const ::std::os::raw::c_char,
4762 ) -> bool;
4763 pub fn gs_technique_end_pass(technique: *mut gs_technique_t);
4764 pub fn gs_technique_get_pass_by_idx(
4765 technique: *const gs_technique_t,
4766 pass: usize,
4767 ) -> *mut gs_epass_t;
4768 pub fn gs_technique_get_pass_by_name(
4769 technique: *const gs_technique_t,
4770 name: *const ::std::os::raw::c_char,
4771 ) -> *mut gs_epass_t;
4772 pub fn gs_effect_get_num_params(effect: *const gs_effect_t) -> usize;
4773 pub fn gs_effect_get_param_by_idx(effect: *const gs_effect_t, param: usize)
4774 -> *mut gs_eparam_t;
4775 pub fn gs_effect_get_param_by_name(
4776 effect: *const gs_effect_t,
4777 name: *const ::std::os::raw::c_char,
4778 ) -> *mut gs_eparam_t;
4779 pub fn gs_param_get_num_annotations(param: *const gs_eparam_t) -> usize;
4780 pub fn gs_param_get_annotation_by_idx(
4781 param: *const gs_eparam_t,
4782 annotation: usize,
4783 ) -> *mut gs_eparam_t;
4784 pub fn gs_param_get_annotation_by_name(
4785 param: *const gs_eparam_t,
4786 name: *const ::std::os::raw::c_char,
4787 ) -> *mut gs_eparam_t;
4788#[doc = " Helper function to simplify effect usage. Use with a while loop that\n contains drawing functions. Automatically handles techniques, passes, and\n unloading."]
4789 pub fn gs_effect_loop(effect: *mut gs_effect_t, name: *const ::std::os::raw::c_char) -> bool;
4790#[doc = " used internally"]
4791 pub fn gs_effect_update_params(effect: *mut gs_effect_t);
4792 pub fn gs_effect_get_viewproj_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4793 pub fn gs_effect_get_world_matrix(effect: *const gs_effect_t) -> *mut gs_eparam_t;
4794 pub fn gs_effect_get_param_info(param: *const gs_eparam_t, info: *mut gs_effect_param_info);
4795 pub fn gs_effect_set_bool(param: *mut gs_eparam_t, val: bool);
4796 pub fn gs_effect_set_float(param: *mut gs_eparam_t, val: f32);
4797 pub fn gs_effect_set_int(param: *mut gs_eparam_t, val: ::std::os::raw::c_int);
4798 pub fn gs_effect_set_matrix4(param: *mut gs_eparam_t, val: *const matrix4);
4799 pub fn gs_effect_set_vec2(param: *mut gs_eparam_t, val: *const vec2);
4800 pub fn gs_effect_set_vec3(param: *mut gs_eparam_t, val: *const vec3);
4801 pub fn gs_effect_set_vec4(param: *mut gs_eparam_t, val: *const vec4);
4802 pub fn gs_effect_set_texture(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4803 pub fn gs_effect_set_texture_srgb(param: *mut gs_eparam_t, val: *mut gs_texture_t);
4804 pub fn gs_effect_set_val(
4805 param: *mut gs_eparam_t,
4806 val: *const ::std::os::raw::c_void,
4807 size: usize,
4808 );
4809 pub fn gs_effect_set_default(param: *mut gs_eparam_t);
4810 pub fn gs_effect_get_val_size(param: *mut gs_eparam_t) -> usize;
4811 pub fn gs_effect_get_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4812 pub fn gs_effect_get_default_val_size(param: *mut gs_eparam_t) -> usize;
4813 pub fn gs_effect_get_default_val(param: *mut gs_eparam_t) -> *mut ::std::os::raw::c_void;
4814 pub fn gs_effect_set_next_sampler(param: *mut gs_eparam_t, sampler: *mut gs_samplerstate_t);
4815 pub fn gs_effect_set_color(param: *mut gs_eparam_t, argb: u32);
4816 pub fn gs_texrender_create(
4817 format: gs_color_format,
4818 zsformat: gs_zstencil_format,
4819 ) -> *mut gs_texrender_t;
4820 pub fn gs_texrender_destroy(texrender: *mut gs_texrender_t);
4821 pub fn gs_texrender_begin(texrender: *mut gs_texrender_t, cx: u32, cy: u32) -> bool;
4822 pub fn gs_texrender_begin_with_color_space(
4823 texrender: *mut gs_texrender_t,
4824 cx: u32,
4825 cy: u32,
4826 space: gs_color_space,
4827 ) -> bool;
4828 pub fn gs_texrender_end(texrender: *mut gs_texrender_t);
4829 pub fn gs_texrender_reset(texrender: *mut gs_texrender_t);
4830 pub fn gs_texrender_get_texture(texrender: *const gs_texrender_t) -> *mut gs_texture_t;
4831 pub fn gs_texrender_get_format(texrender: *const gs_texrender_t) -> gs_color_format;
4832 pub fn gs_get_device_name() -> *const ::std::os::raw::c_char;
4833 pub fn gs_get_driver_version() -> *const ::std::os::raw::c_char;
4834 pub fn gs_get_renderer() -> *const ::std::os::raw::c_char;
4835 pub fn gs_get_gpu_dmem() -> u64;
4836 pub fn gs_get_gpu_smem() -> u64;
4837 pub fn gs_get_device_type() -> ::std::os::raw::c_int;
4838 pub fn gs_get_adapter_count() -> u32;
4839 pub fn gs_enum_adapters(
4840 callback: ::std::option::Option<
4841 unsafe extern "C" fn(
4842 param: *mut ::std::os::raw::c_void,
4843 name: *const ::std::os::raw::c_char,
4844 id: u32,
4845 ) -> bool,
4846 >,
4847 param: *mut ::std::os::raw::c_void,
4848 );
4849 pub fn gs_create(
4850 graphics: *mut *mut graphics_t,
4851 module: *const ::std::os::raw::c_char,
4852 adapter: u32,
4853 ) -> ::std::os::raw::c_int;
4854 pub fn gs_destroy(graphics: *mut graphics_t);
4855 pub fn gs_enter_context(graphics: *mut graphics_t);
4856 pub fn gs_leave_context();
4857 pub fn gs_get_context() -> *mut graphics_t;
4858 pub fn gs_get_device_obj() -> *mut ::std::os::raw::c_void;
4859 pub fn gs_matrix_push();
4860 pub fn gs_matrix_pop();
4861 pub fn gs_matrix_identity();
4862 pub fn gs_matrix_transpose();
4863 pub fn gs_matrix_set(matrix: *const matrix4);
4864 pub fn gs_matrix_get(dst: *mut matrix4);
4865 pub fn gs_matrix_mul(matrix: *const matrix4);
4866 pub fn gs_matrix_rotquat(rot: *const quat);
4867 pub fn gs_matrix_rotaa(rot: *const axisang);
4868 pub fn gs_matrix_translate(pos: *const vec3);
4869 pub fn gs_matrix_scale(scale: *const vec3);
4870 pub fn gs_matrix_rotaa4f(x: f32, y: f32, z: f32, angle: f32);
4871 pub fn gs_matrix_translate3f(x: f32, y: f32, z: f32);
4872 pub fn gs_matrix_scale3f(x: f32, y: f32, z: f32);
4873 pub fn gs_render_start(b_new: bool);
4874 pub fn gs_render_stop(mode: gs_draw_mode);
4875 pub fn gs_render_save() -> *mut gs_vertbuffer_t;
4876 pub fn gs_vertex2f(x: f32, y: f32);
4877 pub fn gs_vertex3f(x: f32, y: f32, z: f32);
4878 pub fn gs_normal3f(x: f32, y: f32, z: f32);
4879 pub fn gs_color(color: u32);
4880 pub fn gs_texcoord(x: f32, y: f32, unit: ::std::os::raw::c_int);
4881 pub fn gs_vertex2v(v: *const vec2);
4882 pub fn gs_vertex3v(v: *const vec3);
4883 pub fn gs_normal3v(v: *const vec3);
4884 pub fn gs_color4v(v: *const vec4);
4885 pub fn gs_texcoord2v(v: *const vec2, unit: ::std::os::raw::c_int);
4886 pub fn gs_get_input() -> *mut input_t;
4887 pub fn gs_get_effect() -> *mut gs_effect_t;
4888 pub fn gs_effect_create_from_file(
4889 file: *const ::std::os::raw::c_char,
4890 error_string: *mut *mut ::std::os::raw::c_char,
4891 ) -> *mut gs_effect_t;
4892 pub fn gs_effect_create(
4893 effect_string: *const ::std::os::raw::c_char,
4894 filename: *const ::std::os::raw::c_char,
4895 error_string: *mut *mut ::std::os::raw::c_char,
4896 ) -> *mut gs_effect_t;
4897 pub fn gs_vertexshader_create_from_file(
4898 file: *const ::std::os::raw::c_char,
4899 error_string: *mut *mut ::std::os::raw::c_char,
4900 ) -> *mut gs_shader_t;
4901 pub fn gs_pixelshader_create_from_file(
4902 file: *const ::std::os::raw::c_char,
4903 error_string: *mut *mut ::std::os::raw::c_char,
4904 ) -> *mut gs_shader_t;
4905 pub fn gs_texture_create_from_file(file: *const ::std::os::raw::c_char) -> *mut gs_texture_t;
4906 pub fn gs_create_texture_file_data(
4907 file: *const ::std::os::raw::c_char,
4908 format: *mut gs_color_format,
4909 cx: *mut u32,
4910 cy: *mut u32,
4911 ) -> *mut u8;
4912 pub fn gs_create_texture_file_data2(
4913 file: *const ::std::os::raw::c_char,
4914 alpha_mode: gs_image_alpha_mode,
4915 format: *mut gs_color_format,
4916 cx: *mut u32,
4917 cy: *mut u32,
4918 ) -> *mut u8;
4919 pub fn gs_create_texture_file_data3(
4920 file: *const ::std::os::raw::c_char,
4921 alpha_mode: gs_image_alpha_mode,
4922 format: *mut gs_color_format,
4923 cx: *mut u32,
4924 cy: *mut u32,
4925 space: *mut gs_color_space,
4926 ) -> *mut u8;
4927#[doc = " Draws a 2D sprite\n\n If width or height is 0, the width or height of the texture will be used.\n The flip value specifies whether the texture should be flipped on the U or V\n axis with GS_FLIP_U and GS_FLIP_V."]
4928 pub fn gs_draw_sprite(tex: *mut gs_texture_t, flip: u32, width: u32, height: u32);
4929 pub fn gs_draw_quadf(tex: *mut gs_texture_t, flip: u32, width: f32, height: f32);
4930 pub fn gs_draw_sprite_subregion(
4931 tex: *mut gs_texture_t,
4932 flip: u32,
4933 x: u32,
4934 y: u32,
4935 cx: u32,
4936 cy: u32,
4937 );
4938 pub fn gs_draw_cube_backdrop(
4939 cubetex: *mut gs_texture_t,
4940 rot: *const quat,
4941 left: f32,
4942 right: f32,
4943 top: f32,
4944 bottom: f32,
4945 znear: f32,
4946 );
4947#[doc = " sets the viewport to current swap chain size"]
4948 pub fn gs_reset_viewport();
4949#[doc = " sets default screen-sized orthographic mode"]
4950 pub fn gs_set_2d_mode();
4951#[doc = " sets default screen-sized perspective mode"]
4952 pub fn gs_set_3d_mode(fovy: f64, znear: f64, zvar: f64);
4953 pub fn gs_viewport_push();
4954 pub fn gs_viewport_pop();
4955 pub fn gs_texture_set_image(
4956 tex: *mut gs_texture_t,
4957 data: *const u8,
4958 linesize: u32,
4959 invert: bool,
4960 );
4961 pub fn gs_cubetexture_set_image(
4962 cubetex: *mut gs_texture_t,
4963 side: u32,
4964 data: *const ::std::os::raw::c_void,
4965 linesize: u32,
4966 invert: bool,
4967 );
4968 pub fn gs_perspective(fovy: f32, aspect: f32, znear: f32, zfar: f32);
4969 pub fn gs_blend_state_push();
4970 pub fn gs_blend_state_pop();
4971 pub fn gs_reset_blend_state();
4972 pub fn gs_swapchain_create(data: *const gs_init_data) -> *mut gs_swapchain_t;
4973 pub fn gs_resize(x: u32, y: u32);
4974 pub fn gs_update_color_space();
4975 pub fn gs_get_size(x: *mut u32, y: *mut u32);
4976 pub fn gs_get_width() -> u32;
4977 pub fn gs_get_height() -> u32;
4978 pub fn gs_texture_create(
4979 width: u32,
4980 height: u32,
4981 color_format: gs_color_format,
4982 levels: u32,
4983 data: *mut *const u8,
4984 flags: u32,
4985 ) -> *mut gs_texture_t;
4986 pub fn gs_cubetexture_create(
4987 size: u32,
4988 color_format: gs_color_format,
4989 levels: u32,
4990 data: *mut *const u8,
4991 flags: u32,
4992 ) -> *mut gs_texture_t;
4993 pub fn gs_voltexture_create(
4994 width: u32,
4995 height: u32,
4996 depth: u32,
4997 color_format: gs_color_format,
4998 levels: u32,
4999 data: *mut *const u8,
5000 flags: u32,
5001 ) -> *mut gs_texture_t;
5002 pub fn gs_zstencil_create(
5003 width: u32,
5004 height: u32,
5005 format: gs_zstencil_format,
5006 ) -> *mut gs_zstencil_t;
5007 pub fn gs_stagesurface_create(
5008 width: u32,
5009 height: u32,
5010 color_format: gs_color_format,
5011 ) -> *mut gs_stagesurf_t;
5012 pub fn gs_samplerstate_create(info: *const gs_sampler_info) -> *mut gs_samplerstate_t;
5013 pub fn gs_vertexshader_create(
5014 shader: *const ::std::os::raw::c_char,
5015 file: *const ::std::os::raw::c_char,
5016 error_string: *mut *mut ::std::os::raw::c_char,
5017 ) -> *mut gs_shader_t;
5018 pub fn gs_pixelshader_create(
5019 shader: *const ::std::os::raw::c_char,
5020 file: *const ::std::os::raw::c_char,
5021 error_string: *mut *mut ::std::os::raw::c_char,
5022 ) -> *mut gs_shader_t;
5023 pub fn gs_vertexbuffer_create(data: *mut gs_vb_data, flags: u32) -> *mut gs_vertbuffer_t;
5024 pub fn gs_indexbuffer_create(
5025 type_: gs_index_type,
5026 indices: *mut ::std::os::raw::c_void,
5027 num: usize,
5028 flags: u32,
5029 ) -> *mut gs_indexbuffer_t;
5030 pub fn gs_timer_create() -> *mut gs_timer_t;
5031 pub fn gs_timer_range_create() -> *mut gs_timer_range_t;
5032 pub fn gs_get_texture_type(texture: *const gs_texture_t) -> gs_texture_type;
5033 pub fn gs_load_vertexbuffer(vertbuffer: *mut gs_vertbuffer_t);
5034 pub fn gs_load_indexbuffer(indexbuffer: *mut gs_indexbuffer_t);
5035 pub fn gs_load_texture(tex: *mut gs_texture_t, unit: ::std::os::raw::c_int);
5036 pub fn gs_load_samplerstate(samplerstate: *mut gs_samplerstate_t, unit: ::std::os::raw::c_int);
5037 pub fn gs_load_vertexshader(vertshader: *mut gs_shader_t);
5038 pub fn gs_load_pixelshader(pixelshader: *mut gs_shader_t);
5039 pub fn gs_load_default_samplerstate(b_3d: bool, unit: ::std::os::raw::c_int);
5040 pub fn gs_get_vertex_shader() -> *mut gs_shader_t;
5041 pub fn gs_get_pixel_shader() -> *mut gs_shader_t;
5042 pub fn gs_get_color_space() -> gs_color_space;
5043 pub fn gs_get_render_target() -> *mut gs_texture_t;
5044 pub fn gs_get_zstencil_target() -> *mut gs_zstencil_t;
5045 pub fn gs_set_render_target(tex: *mut gs_texture_t, zstencil: *mut gs_zstencil_t);
5046 pub fn gs_set_render_target_with_color_space(
5047 tex: *mut gs_texture_t,
5048 zstencil: *mut gs_zstencil_t,
5049 space: gs_color_space,
5050 );
5051 pub fn gs_set_cube_render_target(
5052 cubetex: *mut gs_texture_t,
5053 side: ::std::os::raw::c_int,
5054 zstencil: *mut gs_zstencil_t,
5055 );
5056 pub fn gs_enable_framebuffer_srgb(enable: bool);
5057 pub fn gs_framebuffer_srgb_enabled() -> bool;
5058 pub fn gs_get_linear_srgb() -> bool;
5059 pub fn gs_set_linear_srgb(linear_srgb: bool) -> bool;
5060 pub fn gs_copy_texture(dst: *mut gs_texture_t, src: *mut gs_texture_t);
5061 pub fn gs_copy_texture_region(
5062 dst: *mut gs_texture_t,
5063 dst_x: u32,
5064 dst_y: u32,
5065 src: *mut gs_texture_t,
5066 src_x: u32,
5067 src_y: u32,
5068 src_w: u32,
5069 src_h: u32,
5070 );
5071 pub fn gs_stage_texture(dst: *mut gs_stagesurf_t, src: *mut gs_texture_t);
5072 pub fn gs_begin_frame();
5073 pub fn gs_begin_scene();
5074 pub fn gs_draw(draw_mode: gs_draw_mode, start_vert: u32, num_verts: u32);
5075 pub fn gs_end_scene();
5076 pub fn gs_load_swapchain(swapchain: *mut gs_swapchain_t);
5077 pub fn gs_clear(clear_flags: u32, color: *const vec4, depth: f32, stencil: u8);
5078 pub fn gs_is_present_ready() -> bool;
5079 pub fn gs_present();
5080 pub fn gs_flush();
5081 pub fn gs_set_cull_mode(mode: gs_cull_mode);
5082 pub fn gs_get_cull_mode() -> gs_cull_mode;
5083 pub fn gs_enable_blending(enable: bool);
5084 pub fn gs_enable_depth_test(enable: bool);
5085 pub fn gs_enable_stencil_test(enable: bool);
5086 pub fn gs_enable_stencil_write(enable: bool);
5087 pub fn gs_enable_color(red: bool, green: bool, blue: bool, alpha: bool);
5088 pub fn gs_blend_function(src: gs_blend_type, dest: gs_blend_type);
5089 pub fn gs_blend_function_separate(
5090 src_c: gs_blend_type,
5091 dest_c: gs_blend_type,
5092 src_a: gs_blend_type,
5093 dest_a: gs_blend_type,
5094 );
5095 pub fn gs_blend_op(op: gs_blend_op_type);
5096 pub fn gs_depth_function(test: gs_depth_test);
5097 pub fn gs_stencil_function(side: gs_stencil_side, test: gs_depth_test);
5098 pub fn gs_stencil_op(
5099 side: gs_stencil_side,
5100 fail: gs_stencil_op_type,
5101 zfail: gs_stencil_op_type,
5102 zpass: gs_stencil_op_type,
5103 );
5104 pub fn gs_set_viewport(
5105 x: ::std::os::raw::c_int,
5106 y: ::std::os::raw::c_int,
5107 width: ::std::os::raw::c_int,
5108 height: ::std::os::raw::c_int,
5109 );
5110 pub fn gs_get_viewport(rect: *mut gs_rect);
5111 pub fn gs_set_scissor_rect(rect: *const gs_rect);
5112 pub fn gs_ortho(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5113 pub fn gs_frustum(left: f32, right: f32, top: f32, bottom: f32, znear: f32, zfar: f32);
5114 pub fn gs_projection_push();
5115 pub fn gs_projection_pop();
5116 pub fn gs_swapchain_destroy(swapchain: *mut gs_swapchain_t);
5117 pub fn gs_texture_destroy(tex: *mut gs_texture_t);
5118 pub fn gs_texture_get_width(tex: *const gs_texture_t) -> u32;
5119 pub fn gs_texture_get_height(tex: *const gs_texture_t) -> u32;
5120 pub fn gs_texture_get_color_format(tex: *const gs_texture_t) -> gs_color_format;
5121 pub fn gs_texture_map(tex: *mut gs_texture_t, ptr: *mut *mut u8, linesize: *mut u32) -> bool;
5122 pub fn gs_texture_unmap(tex: *mut gs_texture_t);
5123#[doc = " special-case function (GL only) - specifies whether the texture is a\n GL_TEXTURE_RECTANGLE type, which doesn't use normalized texture\n coordinates, doesn't support mipmapping, and requires address clamping"]
5124 pub fn gs_texture_is_rect(tex: *const gs_texture_t) -> bool;
5125#[doc = " Gets a pointer to the context-specific object associated with the texture.\n For example, for GL, this is a GLuint*. For D3D11, ID3D11Texture2D*."]
5126 pub fn gs_texture_get_obj(tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5127 pub fn gs_cubetexture_destroy(cubetex: *mut gs_texture_t);
5128 pub fn gs_cubetexture_get_size(cubetex: *const gs_texture_t) -> u32;
5129 pub fn gs_cubetexture_get_color_format(cubetex: *const gs_texture_t) -> gs_color_format;
5130 pub fn gs_voltexture_destroy(voltex: *mut gs_texture_t);
5131 pub fn gs_voltexture_get_width(voltex: *const gs_texture_t) -> u32;
5132 pub fn gs_voltexture_get_height(voltex: *const gs_texture_t) -> u32;
5133 pub fn gs_voltexture_get_depth(voltex: *const gs_texture_t) -> u32;
5134 pub fn gs_voltexture_get_color_format(voltex: *const gs_texture_t) -> gs_color_format;
5135 pub fn gs_stagesurface_destroy(stagesurf: *mut gs_stagesurf_t);
5136 pub fn gs_stagesurface_get_width(stagesurf: *const gs_stagesurf_t) -> u32;
5137 pub fn gs_stagesurface_get_height(stagesurf: *const gs_stagesurf_t) -> u32;
5138 pub fn gs_stagesurface_get_color_format(stagesurf: *const gs_stagesurf_t) -> gs_color_format;
5139 pub fn gs_stagesurface_map(
5140 stagesurf: *mut gs_stagesurf_t,
5141 data: *mut *mut u8,
5142 linesize: *mut u32,
5143 ) -> bool;
5144 pub fn gs_stagesurface_unmap(stagesurf: *mut gs_stagesurf_t);
5145 pub fn gs_zstencil_destroy(zstencil: *mut gs_zstencil_t);
5146 pub fn gs_samplerstate_destroy(samplerstate: *mut gs_samplerstate_t);
5147 pub fn gs_vertexbuffer_destroy(vertbuffer: *mut gs_vertbuffer_t);
5148 pub fn gs_vertexbuffer_flush(vertbuffer: *mut gs_vertbuffer_t);
5149 pub fn gs_vertexbuffer_flush_direct(vertbuffer: *mut gs_vertbuffer_t, data: *const gs_vb_data);
5150 pub fn gs_vertexbuffer_get_data(vertbuffer: *const gs_vertbuffer_t) -> *mut gs_vb_data;
5151 pub fn gs_indexbuffer_destroy(indexbuffer: *mut gs_indexbuffer_t);
5152 pub fn gs_indexbuffer_flush(indexbuffer: *mut gs_indexbuffer_t);
5153 pub fn gs_indexbuffer_flush_direct(
5154 indexbuffer: *mut gs_indexbuffer_t,
5155 data: *const ::std::os::raw::c_void,
5156 );
5157 pub fn gs_indexbuffer_get_data(
5158 indexbuffer: *const gs_indexbuffer_t,
5159 ) -> *mut ::std::os::raw::c_void;
5160 pub fn gs_indexbuffer_get_num_indices(indexbuffer: *const gs_indexbuffer_t) -> usize;
5161 pub fn gs_indexbuffer_get_type(indexbuffer: *const gs_indexbuffer_t) -> gs_index_type;
5162 pub fn gs_timer_destroy(timer: *mut gs_timer_t);
5163 pub fn gs_timer_begin(timer: *mut gs_timer_t);
5164 pub fn gs_timer_end(timer: *mut gs_timer_t);
5165 pub fn gs_timer_get_data(timer: *mut gs_timer_t, ticks: *mut u64) -> bool;
5166 pub fn gs_timer_range_destroy(timer: *mut gs_timer_range_t);
5167 pub fn gs_timer_range_begin(range: *mut gs_timer_range_t);
5168 pub fn gs_timer_range_end(range: *mut gs_timer_range_t);
5169 pub fn gs_timer_range_get_data(
5170 range: *mut gs_timer_range_t,
5171 disjoint: *mut bool,
5172 frequency: *mut u64,
5173 ) -> bool;
5174 pub fn gs_nv12_available() -> bool;
5175 pub fn gs_p010_available() -> bool;
5176 pub fn gs_texture_create_nv12(
5177 tex_y: *mut *mut gs_texture_t,
5178 tex_uv: *mut *mut gs_texture_t,
5179 width: u32,
5180 height: u32,
5181 flags: u32,
5182 ) -> bool;
5183 pub fn gs_texture_create_p010(
5184 tex_y: *mut *mut gs_texture_t,
5185 tex_uv: *mut *mut gs_texture_t,
5186 width: u32,
5187 height: u32,
5188 flags: u32,
5189 ) -> bool;
5190 pub fn gs_is_monitor_hdr(monitor: *mut ::std::os::raw::c_void) -> bool;
5191 pub fn gs_debug_marker_begin(color: *const f32, markername: *const ::std::os::raw::c_char);
5192 pub fn gs_debug_marker_begin_format(
5193 color: *const f32,
5194 format: *const ::std::os::raw::c_char,
5195 ...
5196 );
5197 pub fn gs_debug_marker_end();
5198 pub fn gs_gdi_texture_available() -> bool;
5199 pub fn gs_shared_texture_available() -> bool;
5200#[doc = " Gets information about the monitor at the specific index, returns false\n when there is no monitor at the specified index"]
5201 pub fn gs_get_duplicator_monitor_info(
5202 monitor_idx: ::std::os::raw::c_int,
5203 monitor_info: *mut gs_monitor_info,
5204 ) -> bool;
5205 pub fn gs_duplicator_get_monitor_index(
5206 monitor: *mut ::std::os::raw::c_void,
5207 ) -> ::std::os::raw::c_int;
5208#[doc = " creates a windows 8+ output duplicator (monitor capture)"]
5209 pub fn gs_duplicator_create(monitor_idx: ::std::os::raw::c_int) -> *mut gs_duplicator_t;
5210 pub fn gs_duplicator_destroy(duplicator: *mut gs_duplicator_t);
5211 pub fn gs_duplicator_update_frame(duplicator: *mut gs_duplicator_t) -> bool;
5212 pub fn gs_duplicator_get_texture(duplicator: *mut gs_duplicator_t) -> *mut gs_texture_t;
5213 pub fn gs_duplicator_get_color_space(duplicator: *mut gs_duplicator_t) -> gs_color_space;
5214 pub fn gs_duplicator_get_sdr_white_level(duplicator: *mut gs_duplicator_t) -> f32;
5215 pub fn gs_can_adapter_fast_clear() -> bool;
5216#[doc = " creates a windows GDI-lockable texture"]
5217 pub fn gs_texture_create_gdi(width: u32, height: u32) -> *mut gs_texture_t;
5218 pub fn gs_texture_get_dc(gdi_tex: *mut gs_texture_t) -> *mut ::std::os::raw::c_void;
5219 pub fn gs_texture_release_dc(gdi_tex: *mut gs_texture_t);
5220#[doc = " creates a windows shared texture from a texture handle"]
5221 pub fn gs_texture_open_shared(handle: u32) -> *mut gs_texture_t;
5222 pub fn gs_texture_open_nt_shared(handle: u32) -> *mut gs_texture_t;
5223 pub fn gs_texture_get_shared_handle(tex: *mut gs_texture_t) -> u32;
5224 pub fn gs_texture_wrap_obj(obj: *mut ::std::os::raw::c_void) -> *mut gs_texture_t;
5225#[doc = " acquires a lock on a keyed mutex texture.\n returns -1 on generic failure, ETIMEDOUT if timed out"]
5226 pub fn gs_texture_acquire_sync(
5227 tex: *mut gs_texture_t,
5228 key: u64,
5229 ms: u32,
5230 ) -> ::std::os::raw::c_int;
5231#[doc = " releases a lock on a keyed mutex texture to another device.\n return 0 on success, -1 on error"]
5232 pub fn gs_texture_release_sync(tex: *mut gs_texture_t, key: u64) -> ::std::os::raw::c_int;
5233 pub fn gs_stagesurface_create_nv12(width: u32, height: u32) -> *mut gs_stagesurf_t;
5234 pub fn gs_stagesurface_create_p010(width: u32, height: u32) -> *mut gs_stagesurf_t;
5235 pub fn gs_register_loss_callbacks(callbacks: *const gs_device_loss);
5236 pub fn gs_unregister_loss_callbacks(data: *mut ::std::os::raw::c_void);
5237 pub fn vec2_abs(dst: *mut vec2, v: *const vec2);
5238 pub fn vec2_floor(dst: *mut vec2, v: *const vec2);
5239 pub fn vec2_ceil(dst: *mut vec2, v: *const vec2);
5240 pub fn vec2_close(v1: *const vec2, v2: *const vec2, epsilon: f32) -> ::std::os::raw::c_int;
5241 pub fn vec2_norm(dst: *mut vec2, v: *const vec2);
5242 pub fn vec4_from_vec3(dst: *mut vec4, v: *const vec3);
5243 pub fn vec4_transform(dst: *mut vec4, v: *const vec4, m: *const matrix4);
5244 pub fn vec3_from_vec4(dst: *mut vec3, v: *const vec4);
5245 pub fn vec3_plane_dist(v: *const vec3, p: *const plane) -> f32;
5246 pub fn vec3_transform(dst: *mut vec3, v: *const vec3, m: *const matrix4);
5247 pub fn vec3_rotate(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5248 pub fn vec3_transform3x4(dst: *mut vec3, v: *const vec3, m: *const matrix3);
5249 pub fn vec3_mirror(dst: *mut vec3, v: *const vec3, p: *const plane);
5250 pub fn vec3_mirrorv(dst: *mut vec3, v: *const vec3, vec: *const vec3);
5251 pub fn vec3_rand(dst: *mut vec3, positive_only: ::std::os::raw::c_int);
5252 pub fn audio_output_open(
5253 audio: *mut *mut audio_t,
5254 info: *mut audio_output_info,
5255 ) -> ::std::os::raw::c_int;
5256 pub fn audio_output_close(audio: *mut audio_t);
5257 pub fn audio_output_connect(
5258 video: *mut audio_t,
5259 mix_idx: usize,
5260 conversion: *const audio_convert_info,
5261 callback: audio_output_callback_t,
5262 param: *mut ::std::os::raw::c_void,
5263 ) -> bool;
5264 pub fn audio_output_disconnect(
5265 video: *mut audio_t,
5266 mix_idx: usize,
5267 callback: audio_output_callback_t,
5268 param: *mut ::std::os::raw::c_void,
5269 );
5270 pub fn audio_output_active(audio: *const audio_t) -> bool;
5271 pub fn audio_output_get_block_size(audio: *const audio_t) -> usize;
5272 pub fn audio_output_get_planes(audio: *const audio_t) -> usize;
5273 pub fn audio_output_get_channels(audio: *const audio_t) -> usize;
5274 pub fn audio_output_get_sample_rate(audio: *const audio_t) -> u32;
5275 pub fn audio_output_get_info(audio: *const audio_t) -> *const audio_output_info;
5276 pub fn video_format_from_fourcc(fourcc: u32) -> video_format;
5277 pub fn video_format_get_parameters(
5278 color_space: video_colorspace,
5279 range: video_range_type,
5280 matrix: *mut f32,
5281 min_range: *mut f32,
5282 max_range: *mut f32,
5283 ) -> bool;
5284 pub fn video_format_get_parameters_for_format(
5285 color_space: video_colorspace,
5286 range: video_range_type,
5287 format: video_format,
5288 matrix: *mut f32,
5289 min_range: *mut f32,
5290 max_range: *mut f32,
5291 ) -> bool;
5292 pub fn video_output_open(
5293 video: *mut *mut video_t,
5294 info: *mut video_output_info,
5295 ) -> ::std::os::raw::c_int;
5296 pub fn video_output_close(video: *mut video_t);
5297 pub fn video_output_connect(
5298 video: *mut video_t,
5299 conversion: *const video_scale_info,
5300 callback: ::std::option::Option<
5301 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5302 >,
5303 param: *mut ::std::os::raw::c_void,
5304 ) -> bool;
5305 pub fn video_output_connect2(
5306 video: *mut video_t,
5307 conversion: *const video_scale_info,
5308 frame_rate_divisor: u32,
5309 callback: ::std::option::Option<
5310 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5311 >,
5312 param: *mut ::std::os::raw::c_void,
5313 ) -> bool;
5314 pub fn video_output_disconnect(
5315 video: *mut video_t,
5316 callback: ::std::option::Option<
5317 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5318 >,
5319 param: *mut ::std::os::raw::c_void,
5320 );
5321 pub fn video_output_disconnect2(
5322 video: *mut video_t,
5323 callback: ::std::option::Option<
5324 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
5325 >,
5326 param: *mut ::std::os::raw::c_void,
5327 ) -> bool;
5328 pub fn video_output_active(video: *const video_t) -> bool;
5329 pub fn video_output_get_info(video: *const video_t) -> *const video_output_info;
5330 pub fn video_output_lock_frame(
5331 video: *mut video_t,
5332 frame: *mut video_frame,
5333 count: ::std::os::raw::c_int,
5334 timestamp: u64,
5335 ) -> bool;
5336 pub fn video_output_unlock_frame(video: *mut video_t);
5337 pub fn video_output_get_frame_time(video: *const video_t) -> u64;
5338 pub fn video_output_stop(video: *mut video_t);
5339 pub fn video_output_stopped(video: *mut video_t) -> bool;
5340 pub fn video_output_get_format(video: *const video_t) -> video_format;
5341 pub fn video_output_get_width(video: *const video_t) -> u32;
5342 pub fn video_output_get_height(video: *const video_t) -> u32;
5343 pub fn video_output_get_frame_rate(video: *const video_t) -> f64;
5344 pub fn video_output_get_skipped_frames(video: *const video_t) -> u32;
5345 pub fn video_output_get_total_frames(video: *const video_t) -> u32;
5346 pub fn video_output_inc_texture_encoders(video: *mut video_t);
5347 pub fn video_output_dec_texture_encoders(video: *mut video_t);
5348 pub fn video_output_inc_texture_frames(video: *mut video_t);
5349 pub fn video_output_inc_texture_skipped_frames(video: *mut video_t);
5350 pub fn video_output_create_with_frame_rate_divisor(
5351 video: *mut video_t,
5352 divisor: u32,
5353 ) -> *mut video_t;
5354 pub fn video_output_free_frame_rate_divisor(video: *mut video_t);
5355 pub fn calldata_get_data(
5356 data: *const calldata_t,
5357 name: *const ::std::os::raw::c_char,
5358 out: *mut ::std::os::raw::c_void,
5359 size: usize,
5360 ) -> bool;
5361 pub fn calldata_set_data(
5362 data: *mut calldata_t,
5363 name: *const ::std::os::raw::c_char,
5364 in_: *const ::std::os::raw::c_void,
5365 new_size: usize,
5366 );
5367 pub fn calldata_get_string(
5368 data: *const calldata_t,
5369 name: *const ::std::os::raw::c_char,
5370 str_: *mut *const ::std::os::raw::c_char,
5371 ) -> bool;
5372 pub fn signal_handler_create() -> *mut signal_handler_t;
5373 pub fn signal_handler_destroy(handler: *mut signal_handler_t);
5374 pub fn signal_handler_add(
5375 handler: *mut signal_handler_t,
5376 signal_decl: *const ::std::os::raw::c_char,
5377 ) -> bool;
5378 pub fn signal_handler_connect(
5379 handler: *mut signal_handler_t,
5380 signal: *const ::std::os::raw::c_char,
5381 callback: signal_callback_t,
5382 data: *mut ::std::os::raw::c_void,
5383 );
5384 pub fn signal_handler_connect_ref(
5385 handler: *mut signal_handler_t,
5386 signal: *const ::std::os::raw::c_char,
5387 callback: signal_callback_t,
5388 data: *mut ::std::os::raw::c_void,
5389 );
5390 pub fn signal_handler_disconnect(
5391 handler: *mut signal_handler_t,
5392 signal: *const ::std::os::raw::c_char,
5393 callback: signal_callback_t,
5394 data: *mut ::std::os::raw::c_void,
5395 );
5396 pub fn signal_handler_connect_global(
5397 handler: *mut signal_handler_t,
5398 callback: global_signal_callback_t,
5399 data: *mut ::std::os::raw::c_void,
5400 );
5401 pub fn signal_handler_disconnect_global(
5402 handler: *mut signal_handler_t,
5403 callback: global_signal_callback_t,
5404 data: *mut ::std::os::raw::c_void,
5405 );
5406 pub fn signal_handler_remove_current();
5407 pub fn signal_handler_signal(
5408 handler: *mut signal_handler_t,
5409 signal: *const ::std::os::raw::c_char,
5410 params: *mut calldata_t,
5411 );
5412 pub fn proc_handler_create() -> *mut proc_handler_t;
5413 pub fn proc_handler_destroy(handler: *mut proc_handler_t);
5414 pub fn proc_handler_add(
5415 handler: *mut proc_handler_t,
5416 decl_string: *const ::std::os::raw::c_char,
5417 proc_: proc_handler_proc_t,
5418 data: *mut ::std::os::raw::c_void,
5419 );
5420#[doc = " Calls a function in a procedure handler. Returns false if the named\n procedure is not found."]
5421 pub fn proc_handler_call(
5422 handler: *mut proc_handler_t,
5423 name: *const ::std::os::raw::c_char,
5424 params: *mut calldata_t,
5425 ) -> bool;
5426 pub fn obs_data_create() -> *mut obs_data_t;
5427 pub fn obs_data_create_from_json(json_string: *const ::std::os::raw::c_char)
5428 -> *mut obs_data_t;
5429 pub fn obs_data_create_from_json_file(
5430 json_file: *const ::std::os::raw::c_char,
5431 ) -> *mut obs_data_t;
5432 pub fn obs_data_create_from_json_file_safe(
5433 json_file: *const ::std::os::raw::c_char,
5434 backup_ext: *const ::std::os::raw::c_char,
5435 ) -> *mut obs_data_t;
5436 pub fn obs_data_addref(data: *mut obs_data_t);
5437 pub fn obs_data_release(data: *mut obs_data_t);
5438 pub fn obs_data_get_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5439 pub fn obs_data_get_json_with_defaults(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5440 pub fn obs_data_get_json_pretty(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5441 pub fn obs_data_get_json_pretty_with_defaults(
5442 data: *mut obs_data_t,
5443 ) -> *const ::std::os::raw::c_char;
5444 pub fn obs_data_get_last_json(data: *mut obs_data_t) -> *const ::std::os::raw::c_char;
5445 pub fn obs_data_save_json(data: *mut obs_data_t, file: *const ::std::os::raw::c_char) -> bool;
5446 pub fn obs_data_save_json_safe(
5447 data: *mut obs_data_t,
5448 file: *const ::std::os::raw::c_char,
5449 temp_ext: *const ::std::os::raw::c_char,
5450 backup_ext: *const ::std::os::raw::c_char,
5451 ) -> bool;
5452 pub fn obs_data_save_json_pretty_safe(
5453 data: *mut obs_data_t,
5454 file: *const ::std::os::raw::c_char,
5455 temp_ext: *const ::std::os::raw::c_char,
5456 backup_ext: *const ::std::os::raw::c_char,
5457 ) -> bool;
5458 pub fn obs_data_apply(target: *mut obs_data_t, apply_data: *mut obs_data_t);
5459 pub fn obs_data_erase(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5460 pub fn obs_data_clear(data: *mut obs_data_t);
5461 pub fn obs_data_set_string(
5462 data: *mut obs_data_t,
5463 name: *const ::std::os::raw::c_char,
5464 val: *const ::std::os::raw::c_char,
5465 );
5466 pub fn obs_data_set_int(
5467 data: *mut obs_data_t,
5468 name: *const ::std::os::raw::c_char,
5469 val: ::std::os::raw::c_longlong,
5470 );
5471 pub fn obs_data_set_double(
5472 data: *mut obs_data_t,
5473 name: *const ::std::os::raw::c_char,
5474 val: f64,
5475 );
5476 pub fn obs_data_set_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char, val: bool);
5477 pub fn obs_data_set_obj(
5478 data: *mut obs_data_t,
5479 name: *const ::std::os::raw::c_char,
5480 obj: *mut obs_data_t,
5481 );
5482 pub fn obs_data_set_array(
5483 data: *mut obs_data_t,
5484 name: *const ::std::os::raw::c_char,
5485 array: *mut obs_data_array_t,
5486 );
5487 pub fn obs_data_get_defaults(data: *mut obs_data_t) -> *mut obs_data_t;
5488 pub fn obs_data_set_default_string(
5489 data: *mut obs_data_t,
5490 name: *const ::std::os::raw::c_char,
5491 val: *const ::std::os::raw::c_char,
5492 );
5493 pub fn obs_data_set_default_int(
5494 data: *mut obs_data_t,
5495 name: *const ::std::os::raw::c_char,
5496 val: ::std::os::raw::c_longlong,
5497 );
5498 pub fn obs_data_set_default_double(
5499 data: *mut obs_data_t,
5500 name: *const ::std::os::raw::c_char,
5501 val: f64,
5502 );
5503 pub fn obs_data_set_default_bool(
5504 data: *mut obs_data_t,
5505 name: *const ::std::os::raw::c_char,
5506 val: bool,
5507 );
5508 pub fn obs_data_set_default_obj(
5509 data: *mut obs_data_t,
5510 name: *const ::std::os::raw::c_char,
5511 obj: *mut obs_data_t,
5512 );
5513 pub fn obs_data_set_default_array(
5514 data: *mut obs_data_t,
5515 name: *const ::std::os::raw::c_char,
5516 arr: *mut obs_data_array_t,
5517 );
5518 pub fn obs_data_set_autoselect_string(
5519 data: *mut obs_data_t,
5520 name: *const ::std::os::raw::c_char,
5521 val: *const ::std::os::raw::c_char,
5522 );
5523 pub fn obs_data_set_autoselect_int(
5524 data: *mut obs_data_t,
5525 name: *const ::std::os::raw::c_char,
5526 val: ::std::os::raw::c_longlong,
5527 );
5528 pub fn obs_data_set_autoselect_double(
5529 data: *mut obs_data_t,
5530 name: *const ::std::os::raw::c_char,
5531 val: f64,
5532 );
5533 pub fn obs_data_set_autoselect_bool(
5534 data: *mut obs_data_t,
5535 name: *const ::std::os::raw::c_char,
5536 val: bool,
5537 );
5538 pub fn obs_data_set_autoselect_obj(
5539 data: *mut obs_data_t,
5540 name: *const ::std::os::raw::c_char,
5541 obj: *mut obs_data_t,
5542 );
5543 pub fn obs_data_set_autoselect_array(
5544 data: *mut obs_data_t,
5545 name: *const ::std::os::raw::c_char,
5546 arr: *mut obs_data_array_t,
5547 );
5548 pub fn obs_data_get_string(
5549 data: *mut obs_data_t,
5550 name: *const ::std::os::raw::c_char,
5551 ) -> *const ::std::os::raw::c_char;
5552 pub fn obs_data_get_int(
5553 data: *mut obs_data_t,
5554 name: *const ::std::os::raw::c_char,
5555 ) -> ::std::os::raw::c_longlong;
5556 pub fn obs_data_get_double(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> f64;
5557 pub fn obs_data_get_bool(data: *mut obs_data_t, name: *const ::std::os::raw::c_char) -> bool;
5558 pub fn obs_data_get_obj(
5559 data: *mut obs_data_t,
5560 name: *const ::std::os::raw::c_char,
5561 ) -> *mut obs_data_t;
5562 pub fn obs_data_get_array(
5563 data: *mut obs_data_t,
5564 name: *const ::std::os::raw::c_char,
5565 ) -> *mut obs_data_array_t;
5566 pub fn obs_data_get_default_string(
5567 data: *mut obs_data_t,
5568 name: *const ::std::os::raw::c_char,
5569 ) -> *const ::std::os::raw::c_char;
5570 pub fn obs_data_get_default_int(
5571 data: *mut obs_data_t,
5572 name: *const ::std::os::raw::c_char,
5573 ) -> ::std::os::raw::c_longlong;
5574 pub fn obs_data_get_default_double(
5575 data: *mut obs_data_t,
5576 name: *const ::std::os::raw::c_char,
5577 ) -> f64;
5578 pub fn obs_data_get_default_bool(
5579 data: *mut obs_data_t,
5580 name: *const ::std::os::raw::c_char,
5581 ) -> bool;
5582 pub fn obs_data_get_default_obj(
5583 data: *mut obs_data_t,
5584 name: *const ::std::os::raw::c_char,
5585 ) -> *mut obs_data_t;
5586 pub fn obs_data_get_default_array(
5587 data: *mut obs_data_t,
5588 name: *const ::std::os::raw::c_char,
5589 ) -> *mut obs_data_array_t;
5590 pub fn obs_data_get_autoselect_string(
5591 data: *mut obs_data_t,
5592 name: *const ::std::os::raw::c_char,
5593 ) -> *const ::std::os::raw::c_char;
5594 pub fn obs_data_get_autoselect_int(
5595 data: *mut obs_data_t,
5596 name: *const ::std::os::raw::c_char,
5597 ) -> ::std::os::raw::c_longlong;
5598 pub fn obs_data_get_autoselect_double(
5599 data: *mut obs_data_t,
5600 name: *const ::std::os::raw::c_char,
5601 ) -> f64;
5602 pub fn obs_data_get_autoselect_bool(
5603 data: *mut obs_data_t,
5604 name: *const ::std::os::raw::c_char,
5605 ) -> bool;
5606 pub fn obs_data_get_autoselect_obj(
5607 data: *mut obs_data_t,
5608 name: *const ::std::os::raw::c_char,
5609 ) -> *mut obs_data_t;
5610 pub fn obs_data_get_autoselect_array(
5611 data: *mut obs_data_t,
5612 name: *const ::std::os::raw::c_char,
5613 ) -> *mut obs_data_array_t;
5614 pub fn obs_data_array_create() -> *mut obs_data_array_t;
5615 pub fn obs_data_array_addref(array: *mut obs_data_array_t);
5616 pub fn obs_data_array_release(array: *mut obs_data_array_t);
5617 pub fn obs_data_array_count(array: *mut obs_data_array_t) -> usize;
5618 pub fn obs_data_array_item(array: *mut obs_data_array_t, idx: usize) -> *mut obs_data_t;
5619 pub fn obs_data_array_push_back(array: *mut obs_data_array_t, obj: *mut obs_data_t) -> usize;
5620 pub fn obs_data_array_insert(array: *mut obs_data_array_t, idx: usize, obj: *mut obs_data_t);
5621 pub fn obs_data_array_push_back_array(
5622 array: *mut obs_data_array_t,
5623 array2: *mut obs_data_array_t,
5624 );
5625 pub fn obs_data_array_erase(array: *mut obs_data_array_t, idx: usize);
5626 pub fn obs_data_array_enum(
5627 array: *mut obs_data_array_t,
5628 cb: ::std::option::Option<
5629 unsafe extern "C" fn(data: *mut obs_data_t, param: *mut ::std::os::raw::c_void),
5630 >,
5631 param: *mut ::std::os::raw::c_void,
5632 );
5633 pub fn obs_data_has_user_value(
5634 data: *mut obs_data_t,
5635 name: *const ::std::os::raw::c_char,
5636 ) -> bool;
5637 pub fn obs_data_has_default_value(
5638 data: *mut obs_data_t,
5639 name: *const ::std::os::raw::c_char,
5640 ) -> bool;
5641 pub fn obs_data_has_autoselect_value(
5642 data: *mut obs_data_t,
5643 name: *const ::std::os::raw::c_char,
5644 ) -> bool;
5645 pub fn obs_data_item_has_user_value(data: *mut obs_data_item_t) -> bool;
5646 pub fn obs_data_item_has_default_value(data: *mut obs_data_item_t) -> bool;
5647 pub fn obs_data_item_has_autoselect_value(data: *mut obs_data_item_t) -> bool;
5648 pub fn obs_data_unset_user_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5649 pub fn obs_data_unset_default_value(data: *mut obs_data_t, name: *const ::std::os::raw::c_char);
5650 pub fn obs_data_unset_autoselect_value(
5651 data: *mut obs_data_t,
5652 name: *const ::std::os::raw::c_char,
5653 );
5654 pub fn obs_data_item_unset_user_value(data: *mut obs_data_item_t);
5655 pub fn obs_data_item_unset_default_value(data: *mut obs_data_item_t);
5656 pub fn obs_data_item_unset_autoselect_value(data: *mut obs_data_item_t);
5657 pub fn obs_data_first(data: *mut obs_data_t) -> *mut obs_data_item_t;
5658 pub fn obs_data_item_byname(
5659 data: *mut obs_data_t,
5660 name: *const ::std::os::raw::c_char,
5661 ) -> *mut obs_data_item_t;
5662 pub fn obs_data_item_next(item: *mut *mut obs_data_item_t) -> bool;
5663 pub fn obs_data_item_release(item: *mut *mut obs_data_item_t);
5664 pub fn obs_data_item_remove(item: *mut *mut obs_data_item_t);
5665 pub fn obs_data_item_gettype(item: *mut obs_data_item_t) -> obs_data_type;
5666 pub fn obs_data_item_numtype(item: *mut obs_data_item_t) -> obs_data_number_type;
5667 pub fn obs_data_item_get_name(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5668 pub fn obs_data_item_set_string(
5669 item: *mut *mut obs_data_item_t,
5670 val: *const ::std::os::raw::c_char,
5671 );
5672 pub fn obs_data_item_set_int(item: *mut *mut obs_data_item_t, val: ::std::os::raw::c_longlong);
5673 pub fn obs_data_item_set_double(item: *mut *mut obs_data_item_t, val: f64);
5674 pub fn obs_data_item_set_bool(item: *mut *mut obs_data_item_t, val: bool);
5675 pub fn obs_data_item_set_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5676 pub fn obs_data_item_set_array(item: *mut *mut obs_data_item_t, val: *mut obs_data_array_t);
5677 pub fn obs_data_item_set_default_string(
5678 item: *mut *mut obs_data_item_t,
5679 val: *const ::std::os::raw::c_char,
5680 );
5681 pub fn obs_data_item_set_default_int(
5682 item: *mut *mut obs_data_item_t,
5683 val: ::std::os::raw::c_longlong,
5684 );
5685 pub fn obs_data_item_set_default_double(item: *mut *mut obs_data_item_t, val: f64);
5686 pub fn obs_data_item_set_default_bool(item: *mut *mut obs_data_item_t, val: bool);
5687 pub fn obs_data_item_set_default_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5688 pub fn obs_data_item_set_default_array(
5689 item: *mut *mut obs_data_item_t,
5690 val: *mut obs_data_array_t,
5691 );
5692 pub fn obs_data_item_set_autoselect_string(
5693 item: *mut *mut obs_data_item_t,
5694 val: *const ::std::os::raw::c_char,
5695 );
5696 pub fn obs_data_item_set_autoselect_int(
5697 item: *mut *mut obs_data_item_t,
5698 val: ::std::os::raw::c_longlong,
5699 );
5700 pub fn obs_data_item_set_autoselect_double(item: *mut *mut obs_data_item_t, val: f64);
5701 pub fn obs_data_item_set_autoselect_bool(item: *mut *mut obs_data_item_t, val: bool);
5702 pub fn obs_data_item_set_autoselect_obj(item: *mut *mut obs_data_item_t, val: *mut obs_data_t);
5703 pub fn obs_data_item_set_autoselect_array(
5704 item: *mut *mut obs_data_item_t,
5705 val: *mut obs_data_array_t,
5706 );
5707 pub fn obs_data_item_get_string(item: *mut obs_data_item_t) -> *const ::std::os::raw::c_char;
5708 pub fn obs_data_item_get_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5709 pub fn obs_data_item_get_double(item: *mut obs_data_item_t) -> f64;
5710 pub fn obs_data_item_get_bool(item: *mut obs_data_item_t) -> bool;
5711 pub fn obs_data_item_get_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5712 pub fn obs_data_item_get_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5713 pub fn obs_data_item_get_default_string(
5714 item: *mut obs_data_item_t,
5715 ) -> *const ::std::os::raw::c_char;
5716 pub fn obs_data_item_get_default_int(item: *mut obs_data_item_t) -> ::std::os::raw::c_longlong;
5717 pub fn obs_data_item_get_default_double(item: *mut obs_data_item_t) -> f64;
5718 pub fn obs_data_item_get_default_bool(item: *mut obs_data_item_t) -> bool;
5719 pub fn obs_data_item_get_default_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5720 pub fn obs_data_item_get_default_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5721 pub fn obs_data_item_get_autoselect_string(
5722 item: *mut obs_data_item_t,
5723 ) -> *const ::std::os::raw::c_char;
5724 pub fn obs_data_item_get_autoselect_int(
5725 item: *mut obs_data_item_t,
5726 ) -> ::std::os::raw::c_longlong;
5727 pub fn obs_data_item_get_autoselect_double(item: *mut obs_data_item_t) -> f64;
5728 pub fn obs_data_item_get_autoselect_bool(item: *mut obs_data_item_t) -> bool;
5729 pub fn obs_data_item_get_autoselect_obj(item: *mut obs_data_item_t) -> *mut obs_data_t;
5730 pub fn obs_data_item_get_autoselect_array(item: *mut obs_data_item_t) -> *mut obs_data_array_t;
5731 pub fn obs_data_set_vec2(
5732 data: *mut obs_data_t,
5733 name: *const ::std::os::raw::c_char,
5734 val: *const vec2,
5735 );
5736 pub fn obs_data_set_vec3(
5737 data: *mut obs_data_t,
5738 name: *const ::std::os::raw::c_char,
5739 val: *const vec3,
5740 );
5741 pub fn obs_data_set_vec4(
5742 data: *mut obs_data_t,
5743 name: *const ::std::os::raw::c_char,
5744 val: *const vec4,
5745 );
5746 pub fn obs_data_set_quat(
5747 data: *mut obs_data_t,
5748 name: *const ::std::os::raw::c_char,
5749 val: *const quat,
5750 );
5751 pub fn obs_data_set_default_vec2(
5752 data: *mut obs_data_t,
5753 name: *const ::std::os::raw::c_char,
5754 val: *const vec2,
5755 );
5756 pub fn obs_data_set_default_vec3(
5757 data: *mut obs_data_t,
5758 name: *const ::std::os::raw::c_char,
5759 val: *const vec3,
5760 );
5761 pub fn obs_data_set_default_vec4(
5762 data: *mut obs_data_t,
5763 name: *const ::std::os::raw::c_char,
5764 val: *const vec4,
5765 );
5766 pub fn obs_data_set_default_quat(
5767 data: *mut obs_data_t,
5768 name: *const ::std::os::raw::c_char,
5769 val: *const quat,
5770 );
5771 pub fn obs_data_set_autoselect_vec2(
5772 data: *mut obs_data_t,
5773 name: *const ::std::os::raw::c_char,
5774 val: *const vec2,
5775 );
5776 pub fn obs_data_set_autoselect_vec3(
5777 data: *mut obs_data_t,
5778 name: *const ::std::os::raw::c_char,
5779 val: *const vec3,
5780 );
5781 pub fn obs_data_set_autoselect_vec4(
5782 data: *mut obs_data_t,
5783 name: *const ::std::os::raw::c_char,
5784 val: *const vec4,
5785 );
5786 pub fn obs_data_set_autoselect_quat(
5787 data: *mut obs_data_t,
5788 name: *const ::std::os::raw::c_char,
5789 val: *const quat,
5790 );
5791 pub fn obs_data_get_vec2(
5792 data: *mut obs_data_t,
5793 name: *const ::std::os::raw::c_char,
5794 val: *mut vec2,
5795 );
5796 pub fn obs_data_get_vec3(
5797 data: *mut obs_data_t,
5798 name: *const ::std::os::raw::c_char,
5799 val: *mut vec3,
5800 );
5801 pub fn obs_data_get_vec4(
5802 data: *mut obs_data_t,
5803 name: *const ::std::os::raw::c_char,
5804 val: *mut vec4,
5805 );
5806 pub fn obs_data_get_quat(
5807 data: *mut obs_data_t,
5808 name: *const ::std::os::raw::c_char,
5809 val: *mut quat,
5810 );
5811 pub fn obs_data_get_default_vec2(
5812 data: *mut obs_data_t,
5813 name: *const ::std::os::raw::c_char,
5814 val: *mut vec2,
5815 );
5816 pub fn obs_data_get_default_vec3(
5817 data: *mut obs_data_t,
5818 name: *const ::std::os::raw::c_char,
5819 val: *mut vec3,
5820 );
5821 pub fn obs_data_get_default_vec4(
5822 data: *mut obs_data_t,
5823 name: *const ::std::os::raw::c_char,
5824 val: *mut vec4,
5825 );
5826 pub fn obs_data_get_default_quat(
5827 data: *mut obs_data_t,
5828 name: *const ::std::os::raw::c_char,
5829 val: *mut quat,
5830 );
5831 pub fn obs_data_get_autoselect_vec2(
5832 data: *mut obs_data_t,
5833 name: *const ::std::os::raw::c_char,
5834 val: *mut vec2,
5835 );
5836 pub fn obs_data_get_autoselect_vec3(
5837 data: *mut obs_data_t,
5838 name: *const ::std::os::raw::c_char,
5839 val: *mut vec3,
5840 );
5841 pub fn obs_data_get_autoselect_vec4(
5842 data: *mut obs_data_t,
5843 name: *const ::std::os::raw::c_char,
5844 val: *mut vec4,
5845 );
5846 pub fn obs_data_get_autoselect_quat(
5847 data: *mut obs_data_t,
5848 name: *const ::std::os::raw::c_char,
5849 val: *mut quat,
5850 );
5851 pub fn obs_data_set_frames_per_second(
5852 data: *mut obs_data_t,
5853 name: *const ::std::os::raw::c_char,
5854 fps: media_frames_per_second,
5855 option: *const ::std::os::raw::c_char,
5856 );
5857 pub fn obs_data_set_default_frames_per_second(
5858 data: *mut obs_data_t,
5859 name: *const ::std::os::raw::c_char,
5860 fps: media_frames_per_second,
5861 option: *const ::std::os::raw::c_char,
5862 );
5863 pub fn obs_data_set_autoselect_frames_per_second(
5864 data: *mut obs_data_t,
5865 name: *const ::std::os::raw::c_char,
5866 fps: media_frames_per_second,
5867 option: *const ::std::os::raw::c_char,
5868 );
5869 pub fn obs_data_get_frames_per_second(
5870 data: *mut obs_data_t,
5871 name: *const ::std::os::raw::c_char,
5872 fps: *mut media_frames_per_second,
5873 option: *mut *const ::std::os::raw::c_char,
5874 ) -> bool;
5875 pub fn obs_data_get_default_frames_per_second(
5876 data: *mut obs_data_t,
5877 name: *const ::std::os::raw::c_char,
5878 fps: *mut media_frames_per_second,
5879 option: *mut *const ::std::os::raw::c_char,
5880 ) -> bool;
5881 pub fn obs_data_get_autoselect_frames_per_second(
5882 data: *mut obs_data_t,
5883 name: *const ::std::os::raw::c_char,
5884 fps: *mut media_frames_per_second,
5885 option: *mut *const ::std::os::raw::c_char,
5886 ) -> bool;
5887 pub fn obs_data_item_set_frames_per_second(
5888 item: *mut *mut obs_data_item_t,
5889 fps: media_frames_per_second,
5890 option: *const ::std::os::raw::c_char,
5891 );
5892 pub fn obs_data_item_set_default_frames_per_second(
5893 item: *mut *mut obs_data_item_t,
5894 fps: media_frames_per_second,
5895 option: *const ::std::os::raw::c_char,
5896 );
5897 pub fn obs_data_item_set_autoselect_frames_per_second(
5898 item: *mut *mut obs_data_item_t,
5899 fps: media_frames_per_second,
5900 option: *const ::std::os::raw::c_char,
5901 );
5902 pub fn obs_data_item_get_frames_per_second(
5903 item: *mut obs_data_item_t,
5904 fps: *mut media_frames_per_second,
5905 option: *mut *const ::std::os::raw::c_char,
5906 ) -> bool;
5907 pub fn obs_data_item_get_default_frames_per_second(
5908 item: *mut obs_data_item_t,
5909 fps: *mut media_frames_per_second,
5910 option: *mut *const ::std::os::raw::c_char,
5911 ) -> bool;
5912 pub fn obs_data_item_get_autoselect_frames_per_second(
5913 item: *mut obs_data_item_t,
5914 fps: *mut media_frames_per_second,
5915 option: *mut *const ::std::os::raw::c_char,
5916 ) -> bool;
5917 pub fn obs_properties_create() -> *mut obs_properties_t;
5918 pub fn obs_properties_create_param(
5919 param: *mut ::std::os::raw::c_void,
5920 destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5921 ) -> *mut obs_properties_t;
5922 pub fn obs_properties_destroy(props: *mut obs_properties_t);
5923 pub fn obs_properties_set_flags(props: *mut obs_properties_t, flags: u32);
5924 pub fn obs_properties_get_flags(props: *mut obs_properties_t) -> u32;
5925 pub fn obs_properties_set_param(
5926 props: *mut obs_properties_t,
5927 param: *mut ::std::os::raw::c_void,
5928 destroy: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
5929 );
5930 pub fn obs_properties_get_param(props: *mut obs_properties_t) -> *mut ::std::os::raw::c_void;
5931 pub fn obs_properties_first(props: *mut obs_properties_t) -> *mut obs_property_t;
5932 pub fn obs_properties_get(
5933 props: *mut obs_properties_t,
5934 property: *const ::std::os::raw::c_char,
5935 ) -> *mut obs_property_t;
5936 pub fn obs_properties_get_parent(props: *mut obs_properties_t) -> *mut obs_properties_t;
5937#[doc = " Remove a property from a properties list.\n\n Removes a property from a properties list. Only valid in either\n get_properties or modified_callback(2). modified_callback(2) must return\n true so that all UI properties are rebuilt and returning false is undefined\n behavior.\n\n @param props Properties to remove from.\n @param property Name of the property to remove."]
5938 pub fn obs_properties_remove_by_name(
5939 props: *mut obs_properties_t,
5940 property: *const ::std::os::raw::c_char,
5941 );
5942#[doc = " Applies settings to the properties by calling all the necessary\n modification callbacks"]
5943 pub fn obs_properties_apply_settings(props: *mut obs_properties_t, settings: *mut obs_data_t);
5944 pub fn obs_properties_add_bool(
5945 props: *mut obs_properties_t,
5946 name: *const ::std::os::raw::c_char,
5947 description: *const ::std::os::raw::c_char,
5948 ) -> *mut obs_property_t;
5949 pub fn obs_properties_add_int(
5950 props: *mut obs_properties_t,
5951 name: *const ::std::os::raw::c_char,
5952 description: *const ::std::os::raw::c_char,
5953 min: ::std::os::raw::c_int,
5954 max: ::std::os::raw::c_int,
5955 step: ::std::os::raw::c_int,
5956 ) -> *mut obs_property_t;
5957 pub fn obs_properties_add_float(
5958 props: *mut obs_properties_t,
5959 name: *const ::std::os::raw::c_char,
5960 description: *const ::std::os::raw::c_char,
5961 min: f64,
5962 max: f64,
5963 step: f64,
5964 ) -> *mut obs_property_t;
5965 pub fn obs_properties_add_int_slider(
5966 props: *mut obs_properties_t,
5967 name: *const ::std::os::raw::c_char,
5968 description: *const ::std::os::raw::c_char,
5969 min: ::std::os::raw::c_int,
5970 max: ::std::os::raw::c_int,
5971 step: ::std::os::raw::c_int,
5972 ) -> *mut obs_property_t;
5973 pub fn obs_properties_add_float_slider(
5974 props: *mut obs_properties_t,
5975 name: *const ::std::os::raw::c_char,
5976 description: *const ::std::os::raw::c_char,
5977 min: f64,
5978 max: f64,
5979 step: f64,
5980 ) -> *mut obs_property_t;
5981 pub fn obs_properties_add_text(
5982 props: *mut obs_properties_t,
5983 name: *const ::std::os::raw::c_char,
5984 description: *const ::std::os::raw::c_char,
5985 type_: obs_text_type,
5986 ) -> *mut obs_property_t;
5987#[doc = " Adds a 'path' property. Can be a directory or a file.\n\n If target is a file path, the filters should be this format, separated by\n double semicolons, and extensions separated by space:\n \"Example types 1 and 2 (*.ex1 *.ex2);;Example type 3 (*.ex3)\"\n\n @param props Properties object\n @param name Settings name\n @param description Description (display name) of the property\n @param type Type of path (directory or file)\n @param filter If type is a file path, then describes the file filter\n that the user can browse. Items are separated via\n double semicolons. If multiple file types in a\n filter, separate with space."]
5988 pub fn obs_properties_add_path(
5989 props: *mut obs_properties_t,
5990 name: *const ::std::os::raw::c_char,
5991 description: *const ::std::os::raw::c_char,
5992 type_: obs_path_type,
5993 filter: *const ::std::os::raw::c_char,
5994 default_path: *const ::std::os::raw::c_char,
5995 ) -> *mut obs_property_t;
5996 pub fn obs_properties_add_list(
5997 props: *mut obs_properties_t,
5998 name: *const ::std::os::raw::c_char,
5999 description: *const ::std::os::raw::c_char,
6000 type_: obs_combo_type,
6001 format: obs_combo_format,
6002 ) -> *mut obs_property_t;
6003 pub fn obs_properties_add_color(
6004 props: *mut obs_properties_t,
6005 name: *const ::std::os::raw::c_char,
6006 description: *const ::std::os::raw::c_char,
6007 ) -> *mut obs_property_t;
6008 pub fn obs_properties_add_color_alpha(
6009 props: *mut obs_properties_t,
6010 name: *const ::std::os::raw::c_char,
6011 description: *const ::std::os::raw::c_char,
6012 ) -> *mut obs_property_t;
6013 pub fn obs_properties_add_button(
6014 props: *mut obs_properties_t,
6015 name: *const ::std::os::raw::c_char,
6016 text: *const ::std::os::raw::c_char,
6017 callback: obs_property_clicked_t,
6018 ) -> *mut obs_property_t;
6019 pub fn obs_properties_add_button2(
6020 props: *mut obs_properties_t,
6021 name: *const ::std::os::raw::c_char,
6022 text: *const ::std::os::raw::c_char,
6023 callback: obs_property_clicked_t,
6024 priv_: *mut ::std::os::raw::c_void,
6025 ) -> *mut obs_property_t;
6026#[doc = " Adds a font selection property.\n\n A font is an obs_data sub-object which contains the following items:\n face: face name string\n style: style name string\n size: size integer\n flags: font flags integer (OBS_FONT_* defined above)"]
6027 pub fn obs_properties_add_font(
6028 props: *mut obs_properties_t,
6029 name: *const ::std::os::raw::c_char,
6030 description: *const ::std::os::raw::c_char,
6031 ) -> *mut obs_property_t;
6032 pub fn obs_properties_add_editable_list(
6033 props: *mut obs_properties_t,
6034 name: *const ::std::os::raw::c_char,
6035 description: *const ::std::os::raw::c_char,
6036 type_: obs_editable_list_type,
6037 filter: *const ::std::os::raw::c_char,
6038 default_path: *const ::std::os::raw::c_char,
6039 ) -> *mut obs_property_t;
6040 pub fn obs_properties_add_frame_rate(
6041 props: *mut obs_properties_t,
6042 name: *const ::std::os::raw::c_char,
6043 description: *const ::std::os::raw::c_char,
6044 ) -> *mut obs_property_t;
6045 pub fn obs_properties_add_group(
6046 props: *mut obs_properties_t,
6047 name: *const ::std::os::raw::c_char,
6048 description: *const ::std::os::raw::c_char,
6049 type_: obs_group_type,
6050 group: *mut obs_properties_t,
6051 ) -> *mut obs_property_t;
6052 pub fn obs_property_set_modified_callback(
6053 p: *mut obs_property_t,
6054 modified: obs_property_modified_t,
6055 );
6056 pub fn obs_property_set_modified_callback2(
6057 p: *mut obs_property_t,
6058 modified: obs_property_modified2_t,
6059 priv_: *mut ::std::os::raw::c_void,
6060 );
6061 pub fn obs_property_modified(p: *mut obs_property_t, settings: *mut obs_data_t) -> bool;
6062 pub fn obs_property_button_clicked(
6063 p: *mut obs_property_t,
6064 obj: *mut ::std::os::raw::c_void,
6065 ) -> bool;
6066 pub fn obs_property_set_visible(p: *mut obs_property_t, visible: bool);
6067 pub fn obs_property_set_enabled(p: *mut obs_property_t, enabled: bool);
6068 pub fn obs_property_set_description(
6069 p: *mut obs_property_t,
6070 description: *const ::std::os::raw::c_char,
6071 );
6072 pub fn obs_property_set_long_description(
6073 p: *mut obs_property_t,
6074 long_description: *const ::std::os::raw::c_char,
6075 );
6076 pub fn obs_property_name(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6077 pub fn obs_property_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6078 pub fn obs_property_long_description(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6079 pub fn obs_property_get_type(p: *mut obs_property_t) -> obs_property_type;
6080 pub fn obs_property_enabled(p: *mut obs_property_t) -> bool;
6081 pub fn obs_property_visible(p: *mut obs_property_t) -> bool;
6082 pub fn obs_property_next(p: *mut *mut obs_property_t) -> bool;
6083 pub fn obs_property_int_min(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6084 pub fn obs_property_int_max(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6085 pub fn obs_property_int_step(p: *mut obs_property_t) -> ::std::os::raw::c_int;
6086 pub fn obs_property_int_type(p: *mut obs_property_t) -> obs_number_type;
6087 pub fn obs_property_int_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6088 pub fn obs_property_float_min(p: *mut obs_property_t) -> f64;
6089 pub fn obs_property_float_max(p: *mut obs_property_t) -> f64;
6090 pub fn obs_property_float_step(p: *mut obs_property_t) -> f64;
6091 pub fn obs_property_float_type(p: *mut obs_property_t) -> obs_number_type;
6092 pub fn obs_property_float_suffix(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6093 pub fn obs_property_text_type(p: *mut obs_property_t) -> obs_text_type;
6094 pub fn obs_property_text_monospace(p: *mut obs_property_t) -> bool;
6095 pub fn obs_property_text_info_type(p: *mut obs_property_t) -> obs_text_info_type;
6096 pub fn obs_property_text_info_word_wrap(p: *mut obs_property_t) -> bool;
6097 pub fn obs_property_path_type(p: *mut obs_property_t) -> obs_path_type;
6098 pub fn obs_property_path_filter(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6099 pub fn obs_property_path_default_path(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6100 pub fn obs_property_list_type(p: *mut obs_property_t) -> obs_combo_type;
6101 pub fn obs_property_list_format(p: *mut obs_property_t) -> obs_combo_format;
6102 pub fn obs_property_int_set_limits(
6103 p: *mut obs_property_t,
6104 min: ::std::os::raw::c_int,
6105 max: ::std::os::raw::c_int,
6106 step: ::std::os::raw::c_int,
6107 );
6108 pub fn obs_property_float_set_limits(p: *mut obs_property_t, min: f64, max: f64, step: f64);
6109 pub fn obs_property_int_set_suffix(
6110 p: *mut obs_property_t,
6111 suffix: *const ::std::os::raw::c_char,
6112 );
6113 pub fn obs_property_float_set_suffix(
6114 p: *mut obs_property_t,
6115 suffix: *const ::std::os::raw::c_char,
6116 );
6117 pub fn obs_property_text_set_monospace(p: *mut obs_property_t, monospace: bool);
6118 pub fn obs_property_text_set_info_type(p: *mut obs_property_t, type_: obs_text_info_type);
6119 pub fn obs_property_text_set_info_word_wrap(p: *mut obs_property_t, word_wrap: bool);
6120 pub fn obs_property_button_set_type(p: *mut obs_property_t, type_: obs_button_type);
6121 pub fn obs_property_button_set_url(p: *mut obs_property_t, url: *mut ::std::os::raw::c_char);
6122 pub fn obs_property_list_clear(p: *mut obs_property_t);
6123 pub fn obs_property_list_add_string(
6124 p: *mut obs_property_t,
6125 name: *const ::std::os::raw::c_char,
6126 val: *const ::std::os::raw::c_char,
6127 ) -> usize;
6128 pub fn obs_property_list_add_int(
6129 p: *mut obs_property_t,
6130 name: *const ::std::os::raw::c_char,
6131 val: ::std::os::raw::c_longlong,
6132 ) -> usize;
6133 pub fn obs_property_list_add_float(
6134 p: *mut obs_property_t,
6135 name: *const ::std::os::raw::c_char,
6136 val: f64,
6137 ) -> usize;
6138 pub fn obs_property_list_add_bool(
6139 p: *mut obs_property_t,
6140 name: *const ::std::os::raw::c_char,
6141 val: bool,
6142 ) -> usize;
6143 pub fn obs_property_list_insert_string(
6144 p: *mut obs_property_t,
6145 idx: usize,
6146 name: *const ::std::os::raw::c_char,
6147 val: *const ::std::os::raw::c_char,
6148 );
6149 pub fn obs_property_list_insert_int(
6150 p: *mut obs_property_t,
6151 idx: usize,
6152 name: *const ::std::os::raw::c_char,
6153 val: ::std::os::raw::c_longlong,
6154 );
6155 pub fn obs_property_list_insert_float(
6156 p: *mut obs_property_t,
6157 idx: usize,
6158 name: *const ::std::os::raw::c_char,
6159 val: f64,
6160 );
6161 pub fn obs_property_list_insert_bool(
6162 p: *mut obs_property_t,
6163 idx: usize,
6164 name: *const ::std::os::raw::c_char,
6165 val: bool,
6166 );
6167 pub fn obs_property_list_item_disable(p: *mut obs_property_t, idx: usize, disabled: bool);
6168 pub fn obs_property_list_item_disabled(p: *mut obs_property_t, idx: usize) -> bool;
6169 pub fn obs_property_list_item_remove(p: *mut obs_property_t, idx: usize);
6170 pub fn obs_property_list_item_count(p: *mut obs_property_t) -> usize;
6171 pub fn obs_property_list_item_name(
6172 p: *mut obs_property_t,
6173 idx: usize,
6174 ) -> *const ::std::os::raw::c_char;
6175 pub fn obs_property_list_item_string(
6176 p: *mut obs_property_t,
6177 idx: usize,
6178 ) -> *const ::std::os::raw::c_char;
6179 pub fn obs_property_list_item_int(
6180 p: *mut obs_property_t,
6181 idx: usize,
6182 ) -> ::std::os::raw::c_longlong;
6183 pub fn obs_property_list_item_float(p: *mut obs_property_t, idx: usize) -> f64;
6184 pub fn obs_property_list_item_bool(p: *mut obs_property_t, idx: usize) -> bool;
6185 pub fn obs_property_editable_list_type(p: *mut obs_property_t) -> obs_editable_list_type;
6186 pub fn obs_property_editable_list_filter(
6187 p: *mut obs_property_t,
6188 ) -> *const ::std::os::raw::c_char;
6189 pub fn obs_property_editable_list_default_path(
6190 p: *mut obs_property_t,
6191 ) -> *const ::std::os::raw::c_char;
6192 pub fn obs_property_frame_rate_clear(p: *mut obs_property_t);
6193 pub fn obs_property_frame_rate_options_clear(p: *mut obs_property_t);
6194 pub fn obs_property_frame_rate_fps_ranges_clear(p: *mut obs_property_t);
6195 pub fn obs_property_frame_rate_option_add(
6196 p: *mut obs_property_t,
6197 name: *const ::std::os::raw::c_char,
6198 description: *const ::std::os::raw::c_char,
6199 ) -> usize;
6200 pub fn obs_property_frame_rate_fps_range_add(
6201 p: *mut obs_property_t,
6202 min: media_frames_per_second,
6203 max: media_frames_per_second,
6204 ) -> usize;
6205 pub fn obs_property_frame_rate_option_insert(
6206 p: *mut obs_property_t,
6207 idx: usize,
6208 name: *const ::std::os::raw::c_char,
6209 description: *const ::std::os::raw::c_char,
6210 );
6211 pub fn obs_property_frame_rate_fps_range_insert(
6212 p: *mut obs_property_t,
6213 idx: usize,
6214 min: media_frames_per_second,
6215 max: media_frames_per_second,
6216 );
6217 pub fn obs_property_frame_rate_options_count(p: *mut obs_property_t) -> usize;
6218 pub fn obs_property_frame_rate_option_name(
6219 p: *mut obs_property_t,
6220 idx: usize,
6221 ) -> *const ::std::os::raw::c_char;
6222 pub fn obs_property_frame_rate_option_description(
6223 p: *mut obs_property_t,
6224 idx: usize,
6225 ) -> *const ::std::os::raw::c_char;
6226 pub fn obs_property_frame_rate_fps_ranges_count(p: *mut obs_property_t) -> usize;
6227 pub fn obs_property_frame_rate_fps_range_min(
6228 p: *mut obs_property_t,
6229 idx: usize,
6230 ) -> media_frames_per_second;
6231 pub fn obs_property_frame_rate_fps_range_max(
6232 p: *mut obs_property_t,
6233 idx: usize,
6234 ) -> media_frames_per_second;
6235 pub fn obs_property_group_type(p: *mut obs_property_t) -> obs_group_type;
6236 pub fn obs_property_group_content(p: *mut obs_property_t) -> *mut obs_properties_t;
6237 pub fn obs_property_button_type(p: *mut obs_property_t) -> obs_button_type;
6238 pub fn obs_property_button_url(p: *mut obs_property_t) -> *const ::std::os::raw::c_char;
6239 pub fn obs_missing_files_create() -> *mut obs_missing_files_t;
6240 pub fn obs_missing_file_create(
6241 path: *const ::std::os::raw::c_char,
6242 callback: obs_missing_file_cb,
6243 src_type: ::std::os::raw::c_int,
6244 src: *mut ::std::os::raw::c_void,
6245 data: *mut ::std::os::raw::c_void,
6246 ) -> *mut obs_missing_file_t;
6247 pub fn obs_missing_files_add_file(
6248 files: *mut obs_missing_files_t,
6249 file: *mut obs_missing_file_t,
6250 );
6251 pub fn obs_missing_files_count(files: *mut obs_missing_files_t) -> usize;
6252 pub fn obs_missing_files_get_file(
6253 files: *mut obs_missing_files_t,
6254 idx: ::std::os::raw::c_int,
6255 ) -> *mut obs_missing_file_t;
6256 pub fn obs_missing_files_destroy(files: *mut obs_missing_files_t);
6257 pub fn obs_missing_files_append(dst: *mut obs_missing_files_t, src: *mut obs_missing_files_t);
6258 pub fn obs_missing_file_issue_callback(
6259 file: *mut obs_missing_file_t,
6260 new_path: *const ::std::os::raw::c_char,
6261 );
6262 pub fn obs_missing_file_get_path(
6263 file: *mut obs_missing_file_t,
6264 ) -> *const ::std::os::raw::c_char;
6265 pub fn obs_missing_file_get_source_name(
6266 file: *mut obs_missing_file_t,
6267 ) -> *const ::std::os::raw::c_char;
6268 pub fn obs_missing_file_release(file: *mut obs_missing_file_t);
6269 pub fn obs_missing_file_destroy(file: *mut obs_missing_file_t);
6270 pub fn obs_register_source_s(info: *const obs_source_info, size: usize);
6271 pub fn obs_register_encoder_s(info: *const obs_encoder_info, size: usize);
6272 pub fn obs_register_output_s(info: *const obs_output_info, size: usize);
6273 pub fn obs_register_service_s(info: *const obs_service_info, size: usize);
6274#[doc = " @brief Create a fader\n @param type the type of the fader\n @return pointer to the fader object\n\n A fader object is used to map input values from a gui element to dB and\n subsequently multiplier values used by libobs to mix audio.\n The current \"position\" of the fader is internally stored as dB value."]
6275 pub fn obs_fader_create(type_: obs_fader_type) -> *mut obs_fader_t;
6276#[doc = " @brief Destroy a fader\n @param fader pointer to the fader object\n\n Destroy the fader and free all related data"]
6277 pub fn obs_fader_destroy(fader: *mut obs_fader_t);
6278#[doc = " @brief Set the fader dB value\n @param fader pointer to the fader object\n @param db new dB value\n @return true if value was set without clamping"]
6279 pub fn obs_fader_set_db(fader: *mut obs_fader_t, db: f32) -> bool;
6280#[doc = " @brief Get the current fader dB value\n @param fader pointer to the fader object\n @return current fader dB value"]
6281 pub fn obs_fader_get_db(fader: *mut obs_fader_t) -> f32;
6282#[doc = " @brief Set the fader value from deflection\n @param fader pointer to the fader object\n @param def new deflection\n @return true if value was set without clamping\n\n This sets the new fader value from the supplied deflection, in case the\n resulting value was clamped due to limits this function will return false.\n The deflection is typically in the range \\[0.0, 1.0\\] but may be higher in\n order to provide some amplification. In order for this to work the high dB\n limit has to be set."]
6283 pub fn obs_fader_set_deflection(fader: *mut obs_fader_t, def: f32) -> bool;
6284#[doc = " @brief Get the current fader deflection\n @param fader pointer to the fader object\n @return current fader deflection"]
6285 pub fn obs_fader_get_deflection(fader: *mut obs_fader_t) -> f32;
6286#[doc = " @brief Set the fader value from multiplier\n @param fader pointer to the fader object\n @return true if the value was set without clamping"]
6287 pub fn obs_fader_set_mul(fader: *mut obs_fader_t, mul: f32) -> bool;
6288#[doc = " @brief Get the current fader multiplier value\n @param fader pointer to the fader object\n @return current fader multiplier"]
6289 pub fn obs_fader_get_mul(fader: *mut obs_fader_t) -> f32;
6290#[doc = " @brief Attach the fader to a source\n @param fader pointer to the fader object\n @param source pointer to the source object\n @return true on success\n\n When the fader is attached to a source it will automatically sync it's state\n to the volume of the source."]
6291 pub fn obs_fader_attach_source(fader: *mut obs_fader_t, source: *mut obs_source_t) -> bool;
6292#[doc = " @brief Detach the fader from the currently attached source\n @param fader pointer to the fader object"]
6293 pub fn obs_fader_detach_source(fader: *mut obs_fader_t);
6294 pub fn obs_fader_add_callback(
6295 fader: *mut obs_fader_t,
6296 callback: obs_fader_changed_t,
6297 param: *mut ::std::os::raw::c_void,
6298 );
6299 pub fn obs_fader_remove_callback(
6300 fader: *mut obs_fader_t,
6301 callback: obs_fader_changed_t,
6302 param: *mut ::std::os::raw::c_void,
6303 );
6304#[doc = " @brief Create a volume meter\n @param type the mapping type to use for the volume meter\n @return pointer to the volume meter object\n\n A volume meter object is used to prepare the sound levels reported by audio\n sources for display in a GUI.\n It will automatically take source volume into account and map the levels\n to a range \\[0.0f, 1.0f\\]."]
6305 pub fn obs_volmeter_create(type_: obs_fader_type) -> *mut obs_volmeter_t;
6306#[doc = " @brief Destroy a volume meter\n @param volmeter pointer to the volmeter object\n\n Destroy the volume meter and free all related data"]
6307 pub fn obs_volmeter_destroy(volmeter: *mut obs_volmeter_t);
6308#[doc = " @brief Attach the volume meter to a source\n @param volmeter pointer to the volume meter object\n @param source pointer to the source object\n @return true on success\n\n When the volume meter is attached to a source it will start to listen to\n volume updates on the source and after preparing the data emit its own\n signal."]
6309 pub fn obs_volmeter_attach_source(
6310 volmeter: *mut obs_volmeter_t,
6311 source: *mut obs_source_t,
6312 ) -> bool;
6313#[doc = " @brief Detach the volume meter from the currently attached source\n @param volmeter pointer to the volume meter object"]
6314 pub fn obs_volmeter_detach_source(volmeter: *mut obs_volmeter_t);
6315#[doc = " @brief Set the peak meter type for the volume meter\n @param volmeter pointer to the volume meter object\n @param peak_meter_type set if true-peak needs to be measured."]
6316 pub fn obs_volmeter_set_peak_meter_type(
6317 volmeter: *mut obs_volmeter_t,
6318 peak_meter_type: obs_peak_meter_type,
6319 );
6320#[doc = " @brief Get the number of channels which are configured for this source.\n @param volmeter pointer to the volume meter object"]
6321 pub fn obs_volmeter_get_nr_channels(volmeter: *mut obs_volmeter_t) -> ::std::os::raw::c_int;
6322 pub fn obs_volmeter_add_callback(
6323 volmeter: *mut obs_volmeter_t,
6324 callback: obs_volmeter_updated_t,
6325 param: *mut ::std::os::raw::c_void,
6326 );
6327 pub fn obs_volmeter_remove_callback(
6328 volmeter: *mut obs_volmeter_t,
6329 callback: obs_volmeter_updated_t,
6330 param: *mut ::std::os::raw::c_void,
6331 );
6332 pub fn obs_mul_to_db(mul: f32) -> f32;
6333 pub fn obs_db_to_mul(db: f32) -> f32;
6334 pub fn obs_fader_db_to_def(fader: *mut obs_fader_t) -> obs_fader_conversion_t;
6335 pub fn obs_hotkey_get_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6336 pub fn obs_hotkey_get_name(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6337 pub fn obs_hotkey_get_description(key: *const obs_hotkey_t) -> *const ::std::os::raw::c_char;
6338 pub fn obs_hotkey_get_registerer_type(key: *const obs_hotkey_t) -> obs_hotkey_registerer_t;
6339 pub fn obs_hotkey_get_registerer(key: *const obs_hotkey_t) -> *mut ::std::os::raw::c_void;
6340 pub fn obs_hotkey_get_pair_partner_id(key: *const obs_hotkey_t) -> obs_hotkey_id;
6341 pub fn obs_hotkey_binding_get_key_combination(
6342 binding: *mut obs_hotkey_binding_t,
6343 ) -> obs_key_combination_t;
6344 pub fn obs_hotkey_binding_get_hotkey_id(binding: *mut obs_hotkey_binding_t) -> obs_hotkey_id;
6345 pub fn obs_hotkey_binding_get_hotkey(binding: *mut obs_hotkey_binding_t) -> *mut obs_hotkey_t;
6346 pub fn obs_hotkey_set_name(id: obs_hotkey_id, name: *const ::std::os::raw::c_char);
6347 pub fn obs_hotkey_set_description(id: obs_hotkey_id, desc: *const ::std::os::raw::c_char);
6348 pub fn obs_hotkey_pair_set_names(
6349 id: obs_hotkey_pair_id,
6350 name0: *const ::std::os::raw::c_char,
6351 name1: *const ::std::os::raw::c_char,
6352 );
6353 pub fn obs_hotkey_pair_set_descriptions(
6354 id: obs_hotkey_pair_id,
6355 desc0: *const ::std::os::raw::c_char,
6356 desc1: *const ::std::os::raw::c_char,
6357 );
6358 pub fn obs_hotkeys_set_translations_s(translations: *mut obs_hotkeys_translations, size: usize);
6359 pub fn obs_hotkeys_set_audio_hotkeys_translations(
6360 mute: *const ::std::os::raw::c_char,
6361 unmute: *const ::std::os::raw::c_char,
6362 push_to_mute: *const ::std::os::raw::c_char,
6363 push_to_talk: *const ::std::os::raw::c_char,
6364 );
6365 pub fn obs_hotkeys_set_sceneitem_hotkeys_translations(
6366 show: *const ::std::os::raw::c_char,
6367 hide: *const ::std::os::raw::c_char,
6368 );
6369 pub fn obs_hotkey_register_frontend(
6370 name: *const ::std::os::raw::c_char,
6371 description: *const ::std::os::raw::c_char,
6372 func: obs_hotkey_func,
6373 data: *mut ::std::os::raw::c_void,
6374 ) -> obs_hotkey_id;
6375 pub fn obs_hotkey_register_encoder(
6376 encoder: *mut obs_encoder_t,
6377 name: *const ::std::os::raw::c_char,
6378 description: *const ::std::os::raw::c_char,
6379 func: obs_hotkey_func,
6380 data: *mut ::std::os::raw::c_void,
6381 ) -> obs_hotkey_id;
6382 pub fn obs_hotkey_register_output(
6383 output: *mut obs_output_t,
6384 name: *const ::std::os::raw::c_char,
6385 description: *const ::std::os::raw::c_char,
6386 func: obs_hotkey_func,
6387 data: *mut ::std::os::raw::c_void,
6388 ) -> obs_hotkey_id;
6389 pub fn obs_hotkey_register_service(
6390 service: *mut obs_service_t,
6391 name: *const ::std::os::raw::c_char,
6392 description: *const ::std::os::raw::c_char,
6393 func: obs_hotkey_func,
6394 data: *mut ::std::os::raw::c_void,
6395 ) -> obs_hotkey_id;
6396 pub fn obs_hotkey_register_source(
6397 source: *mut obs_source_t,
6398 name: *const ::std::os::raw::c_char,
6399 description: *const ::std::os::raw::c_char,
6400 func: obs_hotkey_func,
6401 data: *mut ::std::os::raw::c_void,
6402 ) -> obs_hotkey_id;
6403 pub fn obs_hotkey_pair_register_frontend(
6404 name0: *const ::std::os::raw::c_char,
6405 description0: *const ::std::os::raw::c_char,
6406 name1: *const ::std::os::raw::c_char,
6407 description1: *const ::std::os::raw::c_char,
6408 func0: obs_hotkey_active_func,
6409 func1: obs_hotkey_active_func,
6410 data0: *mut ::std::os::raw::c_void,
6411 data1: *mut ::std::os::raw::c_void,
6412 ) -> obs_hotkey_pair_id;
6413 pub fn obs_hotkey_pair_register_encoder(
6414 encoder: *mut obs_encoder_t,
6415 name0: *const ::std::os::raw::c_char,
6416 description0: *const ::std::os::raw::c_char,
6417 name1: *const ::std::os::raw::c_char,
6418 description1: *const ::std::os::raw::c_char,
6419 func0: obs_hotkey_active_func,
6420 func1: obs_hotkey_active_func,
6421 data0: *mut ::std::os::raw::c_void,
6422 data1: *mut ::std::os::raw::c_void,
6423 ) -> obs_hotkey_pair_id;
6424 pub fn obs_hotkey_pair_register_output(
6425 output: *mut obs_output_t,
6426 name0: *const ::std::os::raw::c_char,
6427 description0: *const ::std::os::raw::c_char,
6428 name1: *const ::std::os::raw::c_char,
6429 description1: *const ::std::os::raw::c_char,
6430 func0: obs_hotkey_active_func,
6431 func1: obs_hotkey_active_func,
6432 data0: *mut ::std::os::raw::c_void,
6433 data1: *mut ::std::os::raw::c_void,
6434 ) -> obs_hotkey_pair_id;
6435 pub fn obs_hotkey_pair_register_service(
6436 service: *mut obs_service_t,
6437 name0: *const ::std::os::raw::c_char,
6438 description0: *const ::std::os::raw::c_char,
6439 name1: *const ::std::os::raw::c_char,
6440 description1: *const ::std::os::raw::c_char,
6441 func0: obs_hotkey_active_func,
6442 func1: obs_hotkey_active_func,
6443 data0: *mut ::std::os::raw::c_void,
6444 data1: *mut ::std::os::raw::c_void,
6445 ) -> obs_hotkey_pair_id;
6446 pub fn obs_hotkey_pair_register_source(
6447 source: *mut obs_source_t,
6448 name0: *const ::std::os::raw::c_char,
6449 description0: *const ::std::os::raw::c_char,
6450 name1: *const ::std::os::raw::c_char,
6451 description1: *const ::std::os::raw::c_char,
6452 func0: obs_hotkey_active_func,
6453 func1: obs_hotkey_active_func,
6454 data0: *mut ::std::os::raw::c_void,
6455 data1: *mut ::std::os::raw::c_void,
6456 ) -> obs_hotkey_pair_id;
6457 pub fn obs_hotkey_unregister(id: obs_hotkey_id);
6458 pub fn obs_hotkey_pair_unregister(id: obs_hotkey_pair_id);
6459 pub fn obs_hotkey_load_bindings(
6460 id: obs_hotkey_id,
6461 combinations: *mut obs_key_combination_t,
6462 num: usize,
6463 );
6464 pub fn obs_hotkey_load(id: obs_hotkey_id, data: *mut obs_data_array_t);
6465 pub fn obs_hotkeys_load_encoder(encoder: *mut obs_encoder_t, hotkeys: *mut obs_data_t);
6466 pub fn obs_hotkeys_load_output(output: *mut obs_output_t, hotkeys: *mut obs_data_t);
6467 pub fn obs_hotkeys_load_service(service: *mut obs_service_t, hotkeys: *mut obs_data_t);
6468 pub fn obs_hotkeys_load_source(source: *mut obs_source_t, hotkeys: *mut obs_data_t);
6469 pub fn obs_hotkey_pair_load(
6470 id: obs_hotkey_pair_id,
6471 data0: *mut obs_data_array_t,
6472 data1: *mut obs_data_array_t,
6473 );
6474 pub fn obs_hotkey_save(id: obs_hotkey_id) -> *mut obs_data_array_t;
6475 pub fn obs_hotkey_pair_save(
6476 id: obs_hotkey_pair_id,
6477 p_data0: *mut *mut obs_data_array_t,
6478 p_data1: *mut *mut obs_data_array_t,
6479 );
6480 pub fn obs_hotkeys_save_encoder(encoder: *mut obs_encoder_t) -> *mut obs_data_t;
6481 pub fn obs_hotkeys_save_output(output: *mut obs_output_t) -> *mut obs_data_t;
6482 pub fn obs_hotkeys_save_service(service: *mut obs_service_t) -> *mut obs_data_t;
6483 pub fn obs_hotkeys_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6484 pub fn obs_enum_hotkeys(func: obs_hotkey_enum_func, data: *mut ::std::os::raw::c_void);
6485 pub fn obs_enum_hotkey_bindings(
6486 func: obs_hotkey_binding_enum_func,
6487 data: *mut ::std::os::raw::c_void,
6488 );
6489 pub fn obs_hotkey_inject_event(hotkey: obs_key_combination_t, pressed: bool);
6490 pub fn obs_hotkey_enable_background_press(enable: bool);
6491 pub fn obs_hotkey_set_callback_routing_func(
6492 func: obs_hotkey_callback_router_func,
6493 data: *mut ::std::os::raw::c_void,
6494 );
6495 pub fn obs_hotkey_trigger_routed_callback(id: obs_hotkey_id, pressed: bool);
6496 pub fn obs_hotkey_enable_callback_rerouting(enable: bool);
6497 pub fn obs_hotkey_update_atomic(
6498 func: obs_hotkey_atomic_update_func,
6499 data: *mut ::std::os::raw::c_void,
6500 );
6501 pub fn obs_key_to_str(key: obs_key_t, str_: *mut dstr);
6502 pub fn obs_key_combination_to_str(key: obs_key_combination_t, str_: *mut dstr);
6503 pub fn obs_key_from_virtual_key(code: ::std::os::raw::c_int) -> obs_key_t;
6504 pub fn obs_key_to_virtual_key(key: obs_key_t) -> ::std::os::raw::c_int;
6505 pub fn obs_key_to_name(key: obs_key_t) -> *const ::std::os::raw::c_char;
6506 pub fn obs_key_from_name(name: *const ::std::os::raw::c_char) -> obs_key_t;
6507#[doc = " Find a core libobs data file\n @param path name of the base file\n @return A string containing the full path to the file.\n Use bfree after use."]
6508 pub fn obs_find_data_file(file: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
6509#[doc = " Add a path to search libobs data files in.\n @param path Full path to directory to look in.\n The string is copied."]
6510 pub fn obs_add_data_path(path: *const ::std::os::raw::c_char);
6511#[doc = " Remove a path from libobs core data paths.\n @param path The path to compare to currently set paths.\n It does not need to be the same pointer, but\n the path string must match an entry fully.\n @return Whether or not the path was successfully removed.\n If false, the path could not be found."]
6512 pub fn obs_remove_data_path(path: *const ::std::os::raw::c_char) -> bool;
6513#[doc = " Initializes OBS\n\n @param locale The locale to use for modules\n @param module_config_path Path to module config storage directory\n (or NULL if none)\n @param store The profiler name store for OBS to use or NULL"]
6514 pub fn obs_startup(
6515 locale: *const ::std::os::raw::c_char,
6516 module_config_path: *const ::std::os::raw::c_char,
6517 store: *mut profiler_name_store_t,
6518 ) -> bool;
6519#[doc = " Releases all data associated with OBS and terminates the OBS context"]
6520 pub fn obs_shutdown();
6521#[doc = " @return true if the main OBS context has been initialized"]
6522 pub fn obs_initialized() -> bool;
6523#[doc = " @return The current core version"]
6524 pub fn obs_get_version() -> u32;
6525#[doc = " @return The current core version string"]
6526 pub fn obs_get_version_string() -> *const ::std::os::raw::c_char;
6527#[doc = " Sets things up for calls to obs_get_cmdline_args. Called only once at startup\n and safely copies argv/argc from main(). Subsequent calls do nothing.\n\n @param argc The count of command line arguments, from main()\n @param argv An array of command line arguments, copied from main() and ends\n with NULL."]
6528 pub fn obs_set_cmdline_args(
6529 argc: ::std::os::raw::c_int,
6530 argv: *const *const ::std::os::raw::c_char,
6531 );
6532#[doc = " Get the argc/argv used to start OBS\n\n @return The command line arguments used for main(). Don't modify this or\n you'll mess things up for other callers."]
6533 pub fn obs_get_cmdline_args() -> obs_cmdline_args;
6534#[doc = " Sets a new locale to use for modules. This will call obs_module_set_locale\n for each module with the new locale.\n\n @param locale The locale to use for modules"]
6535 pub fn obs_set_locale(locale: *const ::std::os::raw::c_char);
6536#[doc = " @return the current locale"]
6537 pub fn obs_get_locale() -> *const ::std::os::raw::c_char;
6538 pub fn obs_init_win32_crash_handler();
6539#[doc = " Returns the profiler name store (see util/profiler.h) used by OBS, which is\n either a name store passed to obs_startup, an internal name store, or NULL\n in case obs_initialized() returns false."]
6540 pub fn obs_get_profiler_name_store() -> *mut profiler_name_store_t;
6541#[doc = " Sets base video output base resolution/fps/format.\n\n @note This data cannot be changed if an output is currently active.\n @note The graphics module cannot be changed without fully destroying the\n OBS context.\n\n @param ovi Pointer to an obs_video_info structure containing the\n specification of the graphics subsystem,\n @return OBS_VIDEO_SUCCESS if successful\n OBS_VIDEO_NOT_SUPPORTED if the adapter lacks capabilities\n OBS_VIDEO_INVALID_PARAM if a parameter is invalid\n OBS_VIDEO_CURRENTLY_ACTIVE if video is currently active\n OBS_VIDEO_MODULE_NOT_FOUND if the graphics module is not found\n OBS_VIDEO_FAIL for generic failure"]
6542 pub fn obs_reset_video(ovi: *mut obs_video_info) -> ::std::os::raw::c_int;
6543#[doc = " Sets base audio output format/channels/samples/etc\n\n @note Cannot reset base audio if an output is currently active."]
6544 pub fn obs_reset_audio(oai: *const obs_audio_info) -> bool;
6545 pub fn obs_reset_audio2(oai: *const obs_audio_info2) -> bool;
6546#[doc = " Gets the current video settings, returns false if no video"]
6547 pub fn obs_get_video_info(ovi: *mut obs_video_info) -> bool;
6548#[doc = " Gets the SDR white level, returns 300.f if no video"]
6549 pub fn obs_get_video_sdr_white_level() -> f32;
6550#[doc = " Gets the HDR nominal peak level, returns 1000.f if no video"]
6551 pub fn obs_get_video_hdr_nominal_peak_level() -> f32;
6552#[doc = " Sets the video levels"]
6553 pub fn obs_set_video_levels(sdr_white_level: f32, hdr_nominal_peak_level: f32);
6554#[doc = " Gets the current audio settings, returns false if no audio"]
6555 pub fn obs_get_audio_info(oai: *mut obs_audio_info) -> bool;
6556#[doc = " Gets the v2 audio settings that includes buffering information.\n Returns false if no audio."]
6557 pub fn obs_get_audio_info2(oai2: *mut obs_audio_info2) -> bool;
6558#[doc = " Opens a plugin module directly from a specific path.\n\n If the module already exists then the function will return successful, and\n the module parameter will be given the pointer to the existing module.\n\n This does not initialize the module, it only loads the module image. To\n initialize the module, call obs_init_module.\n\n @param module The pointer to the created module.\n @param path Specifies the path to the module library file. If the\n extension is not specified, it will use the extension\n appropriate to the operating system.\n @param data_path Specifies the path to the directory where the module's\n data files are stored.\n @returns MODULE_SUCCESS if successful\n MODULE_ERROR if a generic error occurred\n MODULE_FAILED_TO_OPEN if the module failed to open, e.g. because it was not found or had missing symbols\n MODULE_MISSING_EXPORTS if required exports are missing\n MODULE_INCOMPATIBLE_VER if incompatible version"]
6559 pub fn obs_open_module(
6560 module: *mut *mut obs_module_t,
6561 path: *const ::std::os::raw::c_char,
6562 data_path: *const ::std::os::raw::c_char,
6563 ) -> ::std::os::raw::c_int;
6564 pub fn obs_create_disabled_module(
6565 module: *mut *mut obs_module_t,
6566 path: *const ::std::os::raw::c_char,
6567 data_path: *const ::std::os::raw::c_char,
6568 state: obs_module_load_state,
6569 ) -> bool;
6570#[doc = " Initializes the module, which calls its obs_module_load export. If the\n module is already loaded, then this function does nothing and returns\n successful."]
6571 pub fn obs_init_module(module: *mut obs_module_t) -> bool;
6572#[doc = " Returns a module based upon its name, or NULL if not found"]
6573 pub fn obs_get_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6574#[doc = " Returns a module if it is disabled, or NULL if not found in the disabled list"]
6575 pub fn obs_get_disabled_module(name: *const ::std::os::raw::c_char) -> *mut obs_module_t;
6576#[doc = " Gets library of module"]
6577 pub fn obs_get_module_lib(module: *mut obs_module_t) -> *mut ::std::os::raw::c_void;
6578#[doc = " Returns locale text from a specific module"]
6579 pub fn obs_module_get_locale_string(
6580 mod_: *const obs_module_t,
6581 lookup_string: *const ::std::os::raw::c_char,
6582 translated_string: *mut *const ::std::os::raw::c_char,
6583 ) -> bool;
6584 pub fn obs_module_get_locale_text(
6585 mod_: *const obs_module_t,
6586 text: *const ::std::os::raw::c_char,
6587 ) -> *const ::std::os::raw::c_char;
6588#[doc = " Logs loaded modules"]
6589 pub fn obs_log_loaded_modules();
6590#[doc = " Returns the module file name"]
6591 pub fn obs_get_module_file_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6592#[doc = " Returns the module full name"]
6593 pub fn obs_get_module_name(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6594#[doc = " Returns the module author(s)"]
6595 pub fn obs_get_module_author(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6596#[doc = " Returns the module description"]
6597 pub fn obs_get_module_description(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6598#[doc = " Returns the module binary path"]
6599 pub fn obs_get_module_binary_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6600#[doc = " Returns the module data path"]
6601 pub fn obs_get_module_data_path(module: *mut obs_module_t) -> *const ::std::os::raw::c_char;
6602#[doc = " Adds a source type id to the module provided sources list"]
6603 pub fn obs_module_add_source(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6604#[doc = " Adds an output type id to the module provided outputs list"]
6605 pub fn obs_module_add_output(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6606#[doc = " Adds an encoder type id to the module provided encoders list"]
6607 pub fn obs_module_add_encoder(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6608#[doc = " Adds an encoder service id to the module provided services list"]
6609 pub fn obs_module_add_service(module: *mut obs_module_t, id: *const ::std::os::raw::c_char);
6610#[doc = " Adds a module search path to be used with obs_find_modules. If the search\n path strings contain %module%, that text will be replaced with the module\n name when used.\n\n @param bin Specifies the module's binary directory search path.\n @param data Specifies the module's data directory search path."]
6611 pub fn obs_add_module_path(
6612 bin: *const ::std::os::raw::c_char,
6613 data: *const ::std::os::raw::c_char,
6614 );
6615#[doc = " Adds a module to the list of modules allowed to load in Safe Mode.\n If the list is empty, all modules are allowed.\n\n @param name Specifies the module's name (filename sans extension)."]
6616 pub fn obs_add_safe_module(name: *const ::std::os::raw::c_char);
6617#[doc = " Adds a module to the list of core modules (which cannot be disabled).\n If the list is empty, all modules are allowed.\n\n @param name Specifies the module's name (filename sans extension)."]
6618 pub fn obs_add_core_module(name: *const ::std::os::raw::c_char);
6619#[doc = " Automatically loads all modules from module paths (convenience function)"]
6620 pub fn obs_load_all_modules();
6621 pub fn obs_module_failure_info_free(mfi: *mut obs_module_failure_info);
6622 pub fn obs_load_all_modules2(mfi: *mut obs_module_failure_info);
6623#[doc = " Notifies modules that all modules have been loaded. This function should\n be called after all modules have been loaded."]
6624 pub fn obs_post_load_modules();
6625#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6626 pub fn obs_find_modules(
6627 callback: obs_find_module_callback_t,
6628 param: *mut ::std::os::raw::c_void,
6629 );
6630#[doc = " Finds all modules within the search paths added by obs_add_module_path."]
6631 pub fn obs_find_modules2(
6632 callback: obs_find_module_callback2_t,
6633 param: *mut ::std::os::raw::c_void,
6634 );
6635#[doc = " Enumerates all loaded modules"]
6636 pub fn obs_enum_modules(
6637 callback: obs_enum_module_callback_t,
6638 param: *mut ::std::os::raw::c_void,
6639 );
6640#[doc = " Helper function for using default module locale"]
6641 pub fn obs_module_load_locale(
6642 module: *mut obs_module_t,
6643 default_locale: *const ::std::os::raw::c_char,
6644 locale: *const ::std::os::raw::c_char,
6645 ) -> *mut lookup_t;
6646#[doc = " Returns the location of a plugin module data file.\n\n @note Modules should use obs_module_file function defined in obs-module.h\n as a more elegant means of getting their files without having to\n specify the module parameter.\n\n @param module The module associated with the file to locate\n @param file The file to locate\n @return Path string, or NULL if not found. Use bfree to free string."]
6647 pub fn obs_find_module_file(
6648 module: *mut obs_module_t,
6649 file: *const ::std::os::raw::c_char,
6650 ) -> *mut ::std::os::raw::c_char;
6651#[doc = " Adds a module name to the disabled modules list.\n\n @param name The name of the module to disable"]
6652 pub fn obs_add_disabled_module(name: *const ::std::os::raw::c_char);
6653#[doc = " Returns if a module can be disabled.\n\n @param name The name of the module to check\n @return Boolean to indicate if module can be disabled"]
6654 pub fn obs_get_module_allow_disable(name: *const ::std::os::raw::c_char) -> bool;
6655#[doc = " Returns the path of a plugin module config file (whether it exists or not)\n\n @note Modules should use obs_module_config_path function defined in\n obs-module.h as a more elegant means of getting their files without\n having to specify the module parameter.\n\n @param module The module associated with the path\n @param file The file to get a path to\n @return Path string, or NULL if not found. Use bfree to free string."]
6656 pub fn obs_module_get_config_path(
6657 module: *mut obs_module_t,
6658 file: *const ::std::os::raw::c_char,
6659 ) -> *mut ::std::os::raw::c_char;
6660#[doc = " Enumerates all source types (inputs, filters, transitions, etc)."]
6661 pub fn obs_enum_source_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6662#[doc = " Enumerates all available inputs source types.\n\n Inputs are general source inputs (such as capture sources, device sources,\n etc)."]
6663 pub fn obs_enum_input_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6664 pub fn obs_enum_input_types2(
6665 idx: usize,
6666 id: *mut *const ::std::os::raw::c_char,
6667 unversioned_id: *mut *const ::std::os::raw::c_char,
6668 ) -> bool;
6669 pub fn obs_get_latest_input_type_id(
6670 unversioned_id: *const ::std::os::raw::c_char,
6671 ) -> *const ::std::os::raw::c_char;
6672#[doc = " Enumerates all available filter source types.\n\n Filters are sources that are used to modify the video/audio output of\n other sources."]
6673 pub fn obs_enum_filter_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6674#[doc = " Enumerates all available transition source types.\n\n Transitions are sources used to transition between two or more other\n sources."]
6675 pub fn obs_enum_transition_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6676#[doc = " Enumerates all available output types."]
6677 pub fn obs_enum_output_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6678#[doc = " Enumerates all available encoder types."]
6679 pub fn obs_enum_encoder_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6680#[doc = " Enumerates all available service types."]
6681 pub fn obs_enum_service_types(idx: usize, id: *mut *const ::std::os::raw::c_char) -> bool;
6682#[doc = " Helper function for entering the OBS graphics context"]
6683 pub fn obs_enter_graphics();
6684#[doc = " Helper function for leaving the OBS graphics context"]
6685 pub fn obs_leave_graphics();
6686#[doc = " Gets the main audio output handler for this OBS context"]
6687 pub fn obs_get_audio() -> *mut audio_t;
6688#[doc = " Gets the main video output handler for this OBS context"]
6689 pub fn obs_get_video() -> *mut video_t;
6690#[doc = " Returns true if video is active, false otherwise"]
6691 pub fn obs_video_active() -> bool;
6692#[doc = " Sets the primary output source for a channel."]
6693 pub fn obs_set_output_source(channel: u32, source: *mut obs_source_t);
6694#[doc = " Gets the primary output source for a channel and increments the reference\n counter for that source. Use obs_source_release to release."]
6695 pub fn obs_get_output_source(channel: u32) -> *mut obs_source_t;
6696#[doc = " Enumerates all input sources\n\n Callback function returns true to continue enumeration, or false to end\n enumeration.\n\n Use obs_source_get_ref or obs_source_get_weak_source if you want to retain\n a reference after obs_enum_sources finishes"]
6697 pub fn obs_enum_sources(
6698 enum_proc: ::std::option::Option<
6699 unsafe extern "C" fn(
6700 arg1: *mut ::std::os::raw::c_void,
6701 arg2: *mut obs_source_t,
6702 ) -> bool,
6703 >,
6704 param: *mut ::std::os::raw::c_void,
6705 );
6706#[doc = " Enumerates scenes"]
6707 pub fn obs_enum_scenes(
6708 enum_proc: ::std::option::Option<
6709 unsafe extern "C" fn(
6710 arg1: *mut ::std::os::raw::c_void,
6711 arg2: *mut obs_source_t,
6712 ) -> bool,
6713 >,
6714 param: *mut ::std::os::raw::c_void,
6715 );
6716#[doc = " Enumerates all sources (regardless of type)"]
6717 pub fn obs_enum_all_sources(
6718 enum_proc: ::std::option::Option<
6719 unsafe extern "C" fn(
6720 arg1: *mut ::std::os::raw::c_void,
6721 arg2: *mut obs_source_t,
6722 ) -> bool,
6723 >,
6724 param: *mut ::std::os::raw::c_void,
6725 );
6726#[doc = " Enumerates outputs"]
6727 pub fn obs_enum_outputs(
6728 enum_proc: ::std::option::Option<
6729 unsafe extern "C" fn(
6730 arg1: *mut ::std::os::raw::c_void,
6731 arg2: *mut obs_output_t,
6732 ) -> bool,
6733 >,
6734 param: *mut ::std::os::raw::c_void,
6735 );
6736#[doc = " Enumerates encoders"]
6737 pub fn obs_enum_encoders(
6738 enum_proc: ::std::option::Option<
6739 unsafe extern "C" fn(
6740 arg1: *mut ::std::os::raw::c_void,
6741 arg2: *mut obs_encoder_t,
6742 ) -> bool,
6743 >,
6744 param: *mut ::std::os::raw::c_void,
6745 );
6746#[doc = " Enumerates encoders"]
6747 pub fn obs_enum_services(
6748 enum_proc: ::std::option::Option<
6749 unsafe extern "C" fn(
6750 arg1: *mut ::std::os::raw::c_void,
6751 arg2: *mut obs_service_t,
6752 ) -> bool,
6753 >,
6754 param: *mut ::std::os::raw::c_void,
6755 );
6756#[doc = " Enumerates canvases"]
6757 pub fn obs_enum_canvases(
6758 enum_proc: ::std::option::Option<
6759 unsafe extern "C" fn(
6760 arg1: *mut ::std::os::raw::c_void,
6761 arg2: *mut obs_canvas_t,
6762 ) -> bool,
6763 >,
6764 param: *mut ::std::os::raw::c_void,
6765 );
6766#[doc = " Gets a source by its name.\n\n Increments the source reference counter, use obs_source_release to\n release it when complete."]
6767 pub fn obs_get_source_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6768#[doc = " Gets a source by its UUID.\n\n Increments the source reference counter, use obs_source_release to\n release it when complete."]
6769 pub fn obs_get_source_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6770#[doc = " Get a transition source by its name."]
6771 pub fn obs_get_transition_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6772#[doc = " Get a transition source by its UUID."]
6773 pub fn obs_get_transition_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_source_t;
6774#[doc = " Gets an output by its name."]
6775 pub fn obs_get_output_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_output_t;
6776#[doc = " Gets an encoder by its name."]
6777 pub fn obs_get_encoder_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_encoder_t;
6778#[doc = " Gets an service by its name."]
6779 pub fn obs_get_service_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_service_t;
6780#[doc = " Get a canvas by its name."]
6781 pub fn obs_get_canvas_by_name(name: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6782#[doc = " Get a canvas by its UUID."]
6783 pub fn obs_get_canvas_by_uuid(uuid: *const ::std::os::raw::c_char) -> *mut obs_canvas_t;
6784#[doc = " Returns a commonly used base effect"]
6785 pub fn obs_get_base_effect(effect: obs_base_effect) -> *mut gs_effect_t;
6786#[doc = " Returns the primary obs signal handler"]
6787 pub fn obs_get_signal_handler() -> *mut signal_handler_t;
6788#[doc = " Returns the primary obs procedure handler"]
6789 pub fn obs_get_proc_handler() -> *mut proc_handler_t;
6790#[doc = " Renders the last main output texture"]
6791 pub fn obs_render_main_texture();
6792#[doc = " Renders the last main output texture ignoring background color"]
6793 pub fn obs_render_main_texture_src_color_only();
6794#[doc = " Renders the last canvas output texture"]
6795 pub fn obs_render_canvas_texture(canvas: *mut obs_canvas_t);
6796#[doc = " Renders the last main output texture ignoring background color"]
6797 pub fn obs_render_canvas_texture_src_color_only(canvas: *mut obs_canvas_t);
6798#[doc = " Returns the last main output texture. This can return NULL if the texture\n is unavailable."]
6799 pub fn obs_get_main_texture() -> *mut gs_texture_t;
6800#[doc = " Saves a source to settings data"]
6801 pub fn obs_save_source(source: *mut obs_source_t) -> *mut obs_data_t;
6802#[doc = " Loads a source from settings data"]
6803 pub fn obs_load_source(data: *mut obs_data_t) -> *mut obs_source_t;
6804#[doc = " Loads a private source from settings data"]
6805 pub fn obs_load_private_source(data: *mut obs_data_t) -> *mut obs_source_t;
6806#[doc = " Send a save signal to sources"]
6807 pub fn obs_source_save(source: *mut obs_source_t);
6808#[doc = " Send a load signal to sources (soft deprecated; does not load filters)"]
6809 pub fn obs_source_load(source: *mut obs_source_t);
6810#[doc = " Send a load signal to sources"]
6811 pub fn obs_source_load2(source: *mut obs_source_t);
6812#[doc = " Loads sources from a data array"]
6813 pub fn obs_load_sources(
6814 array: *mut obs_data_array_t,
6815 cb: obs_load_source_cb,
6816 private_data: *mut ::std::os::raw::c_void,
6817 );
6818#[doc = " Saves sources to a data array"]
6819 pub fn obs_save_sources() -> *mut obs_data_array_t;
6820 pub fn obs_save_sources_filtered(
6821 cb: obs_save_source_filter_cb,
6822 data: *mut ::std::os::raw::c_void,
6823 ) -> *mut obs_data_array_t;
6824#[doc = " Reset source UUIDs. NOTE: this function is only to be used by the UI and\n will be removed in a future version!"]
6825 pub fn obs_reset_source_uuids();
6826 pub fn obs_obj_get_type(obj: *mut ::std::os::raw::c_void) -> obs_obj_type;
6827 pub fn obs_obj_get_id(obj: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char;
6828 pub fn obs_obj_invalid(obj: *mut ::std::os::raw::c_void) -> bool;
6829 pub fn obs_obj_get_data(obj: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void;
6830 pub fn obs_obj_is_private(obj: *mut ::std::os::raw::c_void) -> bool;
6831 pub fn obs_audio_monitoring_available() -> bool;
6832 pub fn obs_reset_audio_monitoring();
6833 pub fn obs_enum_audio_monitoring_devices(
6834 cb: obs_enum_audio_device_cb,
6835 data: *mut ::std::os::raw::c_void,
6836 );
6837 pub fn obs_set_audio_monitoring_device(
6838 name: *const ::std::os::raw::c_char,
6839 id: *const ::std::os::raw::c_char,
6840 ) -> bool;
6841 pub fn obs_get_audio_monitoring_device(
6842 name: *mut *const ::std::os::raw::c_char,
6843 id: *mut *const ::std::os::raw::c_char,
6844 );
6845 pub fn obs_add_tick_callback(
6846 tick: ::std::option::Option<
6847 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, seconds: f32),
6848 >,
6849 param: *mut ::std::os::raw::c_void,
6850 );
6851 pub fn obs_remove_tick_callback(
6852 tick: ::std::option::Option<
6853 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, seconds: f32),
6854 >,
6855 param: *mut ::std::os::raw::c_void,
6856 );
6857 pub fn obs_add_main_render_callback(
6858 draw: ::std::option::Option<
6859 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6860 >,
6861 param: *mut ::std::os::raw::c_void,
6862 );
6863 pub fn obs_remove_main_render_callback(
6864 draw: ::std::option::Option<
6865 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6866 >,
6867 param: *mut ::std::os::raw::c_void,
6868 );
6869 pub fn obs_add_main_rendered_callback(
6870 rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6871 param: *mut ::std::os::raw::c_void,
6872 );
6873 pub fn obs_remove_main_rendered_callback(
6874 rendered: ::std::option::Option<unsafe extern "C" fn(param: *mut ::std::os::raw::c_void)>,
6875 param: *mut ::std::os::raw::c_void,
6876 );
6877 pub fn obs_add_raw_video_callback(
6878 conversion: *const video_scale_info,
6879 callback: ::std::option::Option<
6880 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6881 >,
6882 param: *mut ::std::os::raw::c_void,
6883 );
6884 pub fn obs_add_raw_video_callback2(
6885 conversion: *const video_scale_info,
6886 frame_rate_divisor: u32,
6887 callback: ::std::option::Option<
6888 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6889 >,
6890 param: *mut ::std::os::raw::c_void,
6891 );
6892 pub fn obs_remove_raw_video_callback(
6893 callback: ::std::option::Option<
6894 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, frame: *mut video_data),
6895 >,
6896 param: *mut ::std::os::raw::c_void,
6897 );
6898 pub fn obs_add_raw_audio_callback(
6899 mix_idx: usize,
6900 conversion: *const audio_convert_info,
6901 callback: audio_output_callback_t,
6902 param: *mut ::std::os::raw::c_void,
6903 );
6904 pub fn obs_remove_raw_audio_callback(
6905 mix_idx: usize,
6906 callback: audio_output_callback_t,
6907 param: *mut ::std::os::raw::c_void,
6908 );
6909 pub fn obs_get_video_frame_time() -> u64;
6910 pub fn obs_get_active_fps() -> f64;
6911 pub fn obs_get_average_frame_time_ns() -> u64;
6912 pub fn obs_get_frame_interval_ns() -> u64;
6913 pub fn obs_get_total_frames() -> u32;
6914 pub fn obs_get_lagged_frames() -> u32;
6915 pub fn obs_nv12_tex_active() -> bool;
6916 pub fn obs_p010_tex_active() -> bool;
6917 pub fn obs_apply_private_data(settings: *mut obs_data_t);
6918 pub fn obs_set_private_data(settings: *mut obs_data_t);
6919 pub fn obs_get_private_data() -> *mut obs_data_t;
6920 pub fn obs_queue_task(
6921 type_: obs_task_type,
6922 task: obs_task_t,
6923 param: *mut ::std::os::raw::c_void,
6924 wait: bool,
6925 );
6926 pub fn obs_in_task_thread(type_: obs_task_type) -> bool;
6927 pub fn obs_wait_for_destroy_queue() -> bool;
6928 pub fn obs_set_ui_task_handler(handler: obs_task_handler_t);
6929 pub fn obs_object_get_ref(object: *mut obs_object_t) -> *mut obs_object_t;
6930 pub fn obs_object_release(object: *mut obs_object_t);
6931 pub fn obs_weak_object_addref(weak: *mut obs_weak_object_t);
6932 pub fn obs_weak_object_release(weak: *mut obs_weak_object_t);
6933 pub fn obs_object_get_weak_object(object: *mut obs_object_t) -> *mut obs_weak_object_t;
6934 pub fn obs_weak_object_get_object(weak: *mut obs_weak_object_t) -> *mut obs_object_t;
6935 pub fn obs_weak_object_expired(weak: *mut obs_weak_object_t) -> bool;
6936 pub fn obs_weak_object_references_object(
6937 weak: *mut obs_weak_object_t,
6938 object: *mut obs_object_t,
6939 ) -> bool;
6940#[doc = " Creates a view context.\n\n A view can be used for things like separate previews, or drawing\n sources separately."]
6941 pub fn obs_view_create() -> *mut obs_view_t;
6942#[doc = " Destroys this view context"]
6943 pub fn obs_view_destroy(view: *mut obs_view_t);
6944#[doc = " Sets the source to be used for this view context."]
6945 pub fn obs_view_set_source(view: *mut obs_view_t, channel: u32, source: *mut obs_source_t);
6946#[doc = " Gets the source currently in use for this view context"]
6947 pub fn obs_view_get_source(view: *mut obs_view_t, channel: u32) -> *mut obs_source_t;
6948#[doc = " Renders the sources of this view context"]
6949 pub fn obs_view_render(view: *mut obs_view_t);
6950#[doc = " Adds a view to the main render loop, with current obs_get_video_info state"]
6951 pub fn obs_view_add(view: *mut obs_view_t) -> *mut video_t;
6952#[doc = " Adds a view to the main render loop, with custom video settings"]
6953 pub fn obs_view_add2(view: *mut obs_view_t, ovi: *mut obs_video_info) -> *mut video_t;
6954#[doc = " Removes a view from the main render loop"]
6955 pub fn obs_view_remove(view: *mut obs_view_t);
6956#[doc = " Enumerate the video info of all mixes using the specified view context"]
6957 pub fn obs_view_enum_video_info(
6958 view: *mut obs_view_t,
6959 enum_proc: ::std::option::Option<
6960 unsafe extern "C" fn(
6961 arg1: *mut ::std::os::raw::c_void,
6962 arg2: *mut obs_video_info,
6963 ) -> bool,
6964 >,
6965 param: *mut ::std::os::raw::c_void,
6966 );
6967#[doc = " Adds a new window display linked to the main render pipeline. This creates\n a new swap chain which updates every frame.\n\n @param graphics_data The swap chain initialization data.\n @return The new display context, or NULL if failed."]
6968 pub fn obs_display_create(
6969 graphics_data: *const gs_init_data,
6970 backround_color: u32,
6971 ) -> *mut obs_display_t;
6972#[doc = " Destroys a display context"]
6973 pub fn obs_display_destroy(display: *mut obs_display_t);
6974#[doc = " Changes the size of this display"]
6975 pub fn obs_display_resize(display: *mut obs_display_t, cx: u32, cy: u32);
6976#[doc = " Updates the color space of this display"]
6977 pub fn obs_display_update_color_space(display: *mut obs_display_t);
6978#[doc = " Adds a draw callback for this display context\n\n @param display The display context.\n @param draw The draw callback which is called each time a frame\n updates.\n @param param The user data to be associated with this draw callback."]
6979 pub fn obs_display_add_draw_callback(
6980 display: *mut obs_display_t,
6981 draw: ::std::option::Option<
6982 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6983 >,
6984 param: *mut ::std::os::raw::c_void,
6985 );
6986#[doc = " Removes a draw callback for this display context"]
6987 pub fn obs_display_remove_draw_callback(
6988 display: *mut obs_display_t,
6989 draw: ::std::option::Option<
6990 unsafe extern "C" fn(param: *mut ::std::os::raw::c_void, cx: u32, cy: u32),
6991 >,
6992 param: *mut ::std::os::raw::c_void,
6993 );
6994 pub fn obs_display_set_enabled(display: *mut obs_display_t, enable: bool);
6995 pub fn obs_display_enabled(display: *mut obs_display_t) -> bool;
6996 pub fn obs_display_set_background_color(display: *mut obs_display_t, color: u32);
6997 pub fn obs_display_size(display: *mut obs_display_t, width: *mut u32, height: *mut u32);
6998#[doc = " Returns the translated display name of a source"]
6999 pub fn obs_source_get_display_name(
7000 id: *const ::std::os::raw::c_char,
7001 ) -> *const ::std::os::raw::c_char;
7002#[doc = " Returns a pointer to the module which provides the source"]
7003 pub fn obs_source_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7004#[doc = " Returns the load state of a source's module given the id"]
7005 pub fn obs_source_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7006#[doc = " Creates a source of the specified type with the specified settings.\n\n The \"source\" context is used for anything related to presenting\n or modifying video/audio. Use obs_source_release to release it."]
7007 pub fn obs_source_create(
7008 id: *const ::std::os::raw::c_char,
7009 name: *const ::std::os::raw::c_char,
7010 settings: *mut obs_data_t,
7011 hotkey_data: *mut obs_data_t,
7012 ) -> *mut obs_source_t;
7013 pub fn obs_source_create_private(
7014 id: *const ::std::os::raw::c_char,
7015 name: *const ::std::os::raw::c_char,
7016 settings: *mut obs_data_t,
7017 ) -> *mut obs_source_t;
7018 pub fn obs_source_duplicate(
7019 source: *mut obs_source_t,
7020 desired_name: *const ::std::os::raw::c_char,
7021 create_private: bool,
7022 ) -> *mut obs_source_t;
7023#[doc = " Adds/releases a reference to a source. When the last reference is\n released, the source is destroyed."]
7024 pub fn obs_source_release(source: *mut obs_source_t);
7025 pub fn obs_weak_source_addref(weak: *mut obs_weak_source_t);
7026 pub fn obs_weak_source_release(weak: *mut obs_weak_source_t);
7027 pub fn obs_source_get_ref(source: *mut obs_source_t) -> *mut obs_source_t;
7028 pub fn obs_source_get_weak_source(source: *mut obs_source_t) -> *mut obs_weak_source_t;
7029 pub fn obs_weak_source_get_source(weak: *mut obs_weak_source_t) -> *mut obs_source_t;
7030 pub fn obs_weak_source_expired(weak: *mut obs_weak_source_t) -> bool;
7031 pub fn obs_weak_source_references_source(
7032 weak: *mut obs_weak_source_t,
7033 source: *mut obs_source_t,
7034 ) -> bool;
7035#[doc = " Notifies all references that the source should be released"]
7036 pub fn obs_source_remove(source: *mut obs_source_t);
7037#[doc = " Returns true if the source should be released"]
7038 pub fn obs_source_removed(source: *const obs_source_t) -> bool;
7039#[doc = " The 'hidden' flag is not the same as a sceneitem's visibility. It is a\n property the determines if it can be found through searches. **/\n/** Simply sets a 'hidden' flag when the source is still alive but shouldn't be found"]
7040 pub fn obs_source_set_hidden(source: *mut obs_source_t, hidden: bool);
7041#[doc = " Returns the current 'hidden' state on the source"]
7042 pub fn obs_source_is_hidden(source: *mut obs_source_t) -> bool;
7043#[doc = " Returns capability flags of a source"]
7044 pub fn obs_source_get_output_flags(source: *const obs_source_t) -> u32;
7045#[doc = " Returns capability flags of a source type"]
7046 pub fn obs_get_source_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7047#[doc = " Gets the default settings for a source type"]
7048 pub fn obs_get_source_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7049#[doc = " Returns the property list, if any. Free with obs_properties_destroy"]
7050 pub fn obs_get_source_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7051 pub fn obs_source_get_missing_files(source: *const obs_source_t) -> *mut obs_missing_files_t;
7052 pub fn obs_source_replace_missing_file(
7053 cb: obs_missing_file_cb,
7054 source: *mut obs_source_t,
7055 new_path: *const ::std::os::raw::c_char,
7056 data: *mut ::std::os::raw::c_void,
7057 );
7058#[doc = " Returns whether the source has custom properties or not"]
7059 pub fn obs_is_source_configurable(id: *const ::std::os::raw::c_char) -> bool;
7060 pub fn obs_source_configurable(source: *const obs_source_t) -> bool;
7061#[doc = " Returns the properties list for a specific existing source. Free with\n obs_properties_destroy"]
7062 pub fn obs_source_properties(source: *const obs_source_t) -> *mut obs_properties_t;
7063#[doc = " Updates settings for this source"]
7064 pub fn obs_source_update(source: *mut obs_source_t, settings: *mut obs_data_t);
7065 pub fn obs_source_reset_settings(source: *mut obs_source_t, settings: *mut obs_data_t);
7066#[doc = " Renders a video source."]
7067 pub fn obs_source_video_render(source: *mut obs_source_t);
7068#[doc = " Gets the width of a source (if it has video)"]
7069 pub fn obs_source_get_width(source: *mut obs_source_t) -> u32;
7070#[doc = " Gets the height of a source (if it has video)"]
7071 pub fn obs_source_get_height(source: *mut obs_source_t) -> u32;
7072#[doc = " Gets the color space of a source (if it has video)"]
7073 pub fn obs_source_get_color_space(
7074 source: *mut obs_source_t,
7075 count: usize,
7076 preferred_spaces: *const gs_color_space,
7077 ) -> gs_color_space;
7078#[doc = " Hints whether or not the source will blend texels"]
7079 pub fn obs_source_get_texcoords_centered(source: *mut obs_source_t) -> bool;
7080#[doc = " If the source is a filter, returns the parent source of the filter. Only\n guaranteed to be valid inside of the video_render, filter_audio,\n filter_video, and filter_remove callbacks."]
7081 pub fn obs_filter_get_parent(filter: *const obs_source_t) -> *mut obs_source_t;
7082#[doc = " If the source is a filter, returns the target source of the filter. Only\n guaranteed to be valid inside of the video_render, filter_audio,\n filter_video, and filter_remove callbacks."]
7083 pub fn obs_filter_get_target(filter: *const obs_source_t) -> *mut obs_source_t;
7084#[doc = " Used to directly render a non-async source without any filter processing"]
7085 pub fn obs_source_default_render(source: *mut obs_source_t);
7086#[doc = " Adds a filter to the source (which is used whenever the source is used)"]
7087 pub fn obs_source_filter_add(source: *mut obs_source_t, filter: *mut obs_source_t);
7088#[doc = " Removes a filter from the source"]
7089 pub fn obs_source_filter_remove(source: *mut obs_source_t, filter: *mut obs_source_t);
7090#[doc = " Modifies the order of a specific filter"]
7091 pub fn obs_source_filter_set_order(
7092 source: *mut obs_source_t,
7093 filter: *mut obs_source_t,
7094 movement: obs_order_movement,
7095 );
7096#[doc = " Gets filter index"]
7097 pub fn obs_source_filter_get_index(
7098 source: *mut obs_source_t,
7099 filter: *mut obs_source_t,
7100 ) -> ::std::os::raw::c_int;
7101#[doc = " Sets filter index"]
7102 pub fn obs_source_filter_set_index(
7103 source: *mut obs_source_t,
7104 filter: *mut obs_source_t,
7105 index: usize,
7106 );
7107#[doc = " Gets the settings string for a source"]
7108 pub fn obs_source_get_settings(source: *const obs_source_t) -> *mut obs_data_t;
7109#[doc = " Gets the name of a source"]
7110 pub fn obs_source_get_name(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7111#[doc = " Sets the name of a source"]
7112 pub fn obs_source_set_name(source: *mut obs_source_t, name: *const ::std::os::raw::c_char);
7113#[doc = " Gets the UUID of a source"]
7114 pub fn obs_source_get_uuid(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7115#[doc = " Gets the source type"]
7116 pub fn obs_source_get_type(source: *const obs_source_t) -> obs_source_type;
7117#[doc = " Gets the source identifier"]
7118 pub fn obs_source_get_id(source: *const obs_source_t) -> *const ::std::os::raw::c_char;
7119 pub fn obs_source_get_unversioned_id(
7120 source: *const obs_source_t,
7121 ) -> *const ::std::os::raw::c_char;
7122#[doc = " Returns the signal handler for a source"]
7123 pub fn obs_source_get_signal_handler(source: *const obs_source_t) -> *mut signal_handler_t;
7124#[doc = " Returns the procedure handler for a source"]
7125 pub fn obs_source_get_proc_handler(source: *const obs_source_t) -> *mut proc_handler_t;
7126#[doc = " Sets the user volume for a source that has audio output"]
7127 pub fn obs_source_set_volume(source: *mut obs_source_t, volume: f32);
7128#[doc = " Gets the user volume for a source that has audio output"]
7129 pub fn obs_source_get_volume(source: *const obs_source_t) -> f32;
7130 pub fn obs_source_get_speaker_layout(source: *mut obs_source_t) -> speaker_layout;
7131#[doc = " Sets the balance value for a stereo audio source"]
7132 pub fn obs_source_set_balance_value(source: *mut obs_source_t, balance: f32);
7133#[doc = " Gets the balance value for a stereo audio source"]
7134 pub fn obs_source_get_balance_value(source: *const obs_source_t) -> f32;
7135#[doc = " Sets the audio sync offset (in nanoseconds) for a source"]
7136 pub fn obs_source_set_sync_offset(source: *mut obs_source_t, offset: i64);
7137#[doc = " Gets the audio sync offset (in nanoseconds) for a source"]
7138 pub fn obs_source_get_sync_offset(source: *const obs_source_t) -> i64;
7139#[doc = " Enumerates active child sources used by this source"]
7140 pub fn obs_source_enum_active_sources(
7141 source: *mut obs_source_t,
7142 enum_callback: obs_source_enum_proc_t,
7143 param: *mut ::std::os::raw::c_void,
7144 );
7145#[doc = " Enumerates the entire active child source tree used by this source"]
7146 pub fn obs_source_enum_active_tree(
7147 source: *mut obs_source_t,
7148 enum_callback: obs_source_enum_proc_t,
7149 param: *mut ::std::os::raw::c_void,
7150 );
7151 pub fn obs_source_enum_full_tree(
7152 source: *mut obs_source_t,
7153 enum_callback: obs_source_enum_proc_t,
7154 param: *mut ::std::os::raw::c_void,
7155 );
7156#[doc = " Returns true if active, false if not"]
7157 pub fn obs_source_active(source: *const obs_source_t) -> bool;
7158#[doc = " Returns true if currently displayed somewhere (active or not), false if not"]
7159 pub fn obs_source_showing(source: *const obs_source_t) -> bool;
7160#[doc = " Sets source flags. Note that these are different from the main output\n flags. These are generally things that can be set by the source or user,\n while the output flags are more used to determine capabilities of a source."]
7161 pub fn obs_source_set_flags(source: *mut obs_source_t, flags: u32);
7162#[doc = " Gets source flags."]
7163 pub fn obs_source_get_flags(source: *const obs_source_t) -> u32;
7164#[doc = " Sets audio mixer flags. These flags are used to specify which mixers\n the source's audio should be applied to."]
7165 pub fn obs_source_set_audio_mixers(source: *mut obs_source_t, mixers: u32);
7166#[doc = " Gets audio mixer flags"]
7167 pub fn obs_source_get_audio_mixers(source: *const obs_source_t) -> u32;
7168#[doc = " Increments the 'showing' reference counter to indicate that the source is\n being shown somewhere. If the reference counter was 0, will call the 'show'\n callback."]
7169 pub fn obs_source_inc_showing(source: *mut obs_source_t);
7170#[doc = " Increments the 'active' reference counter to indicate that the source is\n fully active. If the reference counter was 0, will call the 'activate'\n callback.\n\n Unlike obs_source_inc_showing, this will cause children of this source to be\n considered showing as well (currently used by transition previews to make\n the stinger transition show correctly). obs_source_inc_showing should\n generally be used instead."]
7171 pub fn obs_source_inc_active(source: *mut obs_source_t);
7172#[doc = " Decrements the 'showing' reference counter to indicate that the source is\n no longer being shown somewhere. If the reference counter is set to 0,\n will call the 'hide' callback"]
7173 pub fn obs_source_dec_showing(source: *mut obs_source_t);
7174#[doc = " Decrements the 'active' reference counter to indicate that the source is no\n longer fully active. If the reference counter is set to 0, will call the\n 'deactivate' callback\n\n Unlike obs_source_dec_showing, this will cause children of this source to be\n considered not showing as well. obs_source_dec_showing should generally be\n used instead."]
7175 pub fn obs_source_dec_active(source: *mut obs_source_t);
7176#[doc = " Enumerates filters assigned to the source"]
7177 pub fn obs_source_enum_filters(
7178 source: *mut obs_source_t,
7179 callback: obs_source_enum_proc_t,
7180 param: *mut ::std::os::raw::c_void,
7181 );
7182#[doc = " Gets a filter of a source by its display name."]
7183 pub fn obs_source_get_filter_by_name(
7184 source: *mut obs_source_t,
7185 name: *const ::std::os::raw::c_char,
7186 ) -> *mut obs_source_t;
7187#[doc = " Gets the number of filters the source has."]
7188 pub fn obs_source_filter_count(source: *const obs_source_t) -> usize;
7189 pub fn obs_source_copy_filters(dst: *mut obs_source_t, src: *mut obs_source_t);
7190 pub fn obs_source_copy_single_filter(dst: *mut obs_source_t, filter: *mut obs_source_t);
7191 pub fn obs_source_enabled(source: *const obs_source_t) -> bool;
7192 pub fn obs_source_set_enabled(source: *mut obs_source_t, enabled: bool);
7193 pub fn obs_source_muted(source: *const obs_source_t) -> bool;
7194 pub fn obs_source_set_muted(source: *mut obs_source_t, muted: bool);
7195 pub fn obs_source_push_to_mute_enabled(source: *mut obs_source_t) -> bool;
7196 pub fn obs_source_enable_push_to_mute(source: *mut obs_source_t, enabled: bool);
7197 pub fn obs_source_get_push_to_mute_delay(source: *mut obs_source_t) -> u64;
7198 pub fn obs_source_set_push_to_mute_delay(source: *mut obs_source_t, delay: u64);
7199 pub fn obs_source_push_to_talk_enabled(source: *mut obs_source_t) -> bool;
7200 pub fn obs_source_enable_push_to_talk(source: *mut obs_source_t, enabled: bool);
7201 pub fn obs_source_get_push_to_talk_delay(source: *mut obs_source_t) -> u64;
7202 pub fn obs_source_set_push_to_talk_delay(source: *mut obs_source_t, delay: u64);
7203 pub fn obs_source_add_audio_pause_callback(
7204 source: *mut obs_source_t,
7205 callback: signal_callback_t,
7206 param: *mut ::std::os::raw::c_void,
7207 );
7208 pub fn obs_source_remove_audio_pause_callback(
7209 source: *mut obs_source_t,
7210 callback: signal_callback_t,
7211 param: *mut ::std::os::raw::c_void,
7212 );
7213 pub fn obs_source_add_audio_capture_callback(
7214 source: *mut obs_source_t,
7215 callback: obs_source_audio_capture_t,
7216 param: *mut ::std::os::raw::c_void,
7217 );
7218 pub fn obs_source_remove_audio_capture_callback(
7219 source: *mut obs_source_t,
7220 callback: obs_source_audio_capture_t,
7221 param: *mut ::std::os::raw::c_void,
7222 );
7223 pub fn obs_source_add_caption_callback(
7224 source: *mut obs_source_t,
7225 callback: obs_source_caption_t,
7226 param: *mut ::std::os::raw::c_void,
7227 );
7228 pub fn obs_source_remove_caption_callback(
7229 source: *mut obs_source_t,
7230 callback: obs_source_caption_t,
7231 param: *mut ::std::os::raw::c_void,
7232 );
7233 pub fn obs_source_set_deinterlace_mode(source: *mut obs_source_t, mode: obs_deinterlace_mode);
7234 pub fn obs_source_get_deinterlace_mode(source: *const obs_source_t) -> obs_deinterlace_mode;
7235 pub fn obs_source_set_deinterlace_field_order(
7236 source: *mut obs_source_t,
7237 field_order: obs_deinterlace_field_order,
7238 );
7239 pub fn obs_source_get_deinterlace_field_order(
7240 source: *const obs_source_t,
7241 ) -> obs_deinterlace_field_order;
7242 pub fn obs_source_set_monitoring_type(source: *mut obs_source_t, type_: obs_monitoring_type);
7243 pub fn obs_source_get_monitoring_type(source: *const obs_source_t) -> obs_monitoring_type;
7244#[doc = " Gets private front-end settings data. This data is saved/loaded\n automatically. Returns an incremented reference."]
7245 pub fn obs_source_get_private_settings(item: *mut obs_source_t) -> *mut obs_data_t;
7246 pub fn obs_source_backup_filters(source: *mut obs_source_t) -> *mut obs_data_array_t;
7247 pub fn obs_source_restore_filters(source: *mut obs_source_t, array: *mut obs_data_array_t);
7248 pub fn obs_source_get_type_data(source: *mut obs_source_t) -> *mut ::std::os::raw::c_void;
7249#[doc = " Helper function to set the color matrix information when drawing the source.\n\n @param color_matrix The color matrix. Assigns to the 'color_matrix'\n effect variable.\n @param color_range_min The minimum color range. Assigns to the\n 'color_range_min' effect variable. If NULL,\n {0.0f, 0.0f, 0.0f} is used.\n @param color_range_max The maximum color range. Assigns to the\n 'color_range_max' effect variable. If NULL,\n {1.0f, 1.0f, 1.0f} is used."]
7250 pub fn obs_source_draw_set_color_matrix(
7251 color_matrix: *const matrix4,
7252 color_range_min: *const vec3,
7253 color_range_max: *const vec3,
7254 );
7255#[doc = " Helper function to draw sprites for a source (synchronous video).\n\n @param image The sprite texture to draw. Assigns to the 'image' variable\n of the current effect.\n @param x X position of the sprite.\n @param y Y position of the sprite.\n @param cx Width of the sprite. If 0, uses the texture width.\n @param cy Height of the sprite. If 0, uses the texture height.\n @param flip Specifies whether to flip the image vertically."]
7256 pub fn obs_source_draw(
7257 image: *mut gs_texture_t,
7258 x: ::std::os::raw::c_int,
7259 y: ::std::os::raw::c_int,
7260 cx: u32,
7261 cy: u32,
7262 flip: bool,
7263 );
7264#[doc = " Outputs asynchronous video data. Set to NULL to deactivate the texture\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function! Use obs_source_output_video2 instead if partial range support is\n desired for non-YUV video formats."]
7265 pub fn obs_source_output_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7266 pub fn obs_source_output_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7267 pub fn obs_source_set_async_rotation(
7268 source: *mut obs_source_t,
7269 rotation: ::std::os::raw::c_long,
7270 );
7271 pub fn obs_source_output_cea708(source: *mut obs_source_t, captions: *const obs_source_cea_708);
7272#[doc = " Preloads asynchronous video data to allow instantaneous playback\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function! Use obs_source_preload_video2 instead if partial range support is\n desired for non-YUV video formats."]
7273 pub fn obs_source_preload_video(source: *mut obs_source_t, frame: *const obs_source_frame);
7274 pub fn obs_source_preload_video2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7275#[doc = " Shows any preloaded video data"]
7276 pub fn obs_source_show_preloaded_video(source: *mut obs_source_t);
7277#[doc = " Sets current async video frame immediately\n\n NOTE: Non-YUV formats will always be treated as full range with this\n function! Use obs_source_preload_video2 instead if partial range support is\n desired for non-YUV video formats."]
7278 pub fn obs_source_set_video_frame(source: *mut obs_source_t, frame: *const obs_source_frame);
7279 pub fn obs_source_set_video_frame2(source: *mut obs_source_t, frame: *const obs_source_frame2);
7280#[doc = " Outputs audio data (always asynchronous)"]
7281 pub fn obs_source_output_audio(source: *mut obs_source_t, audio: *const obs_source_audio);
7282#[doc = " Signal an update to any currently used properties via 'update_properties'"]
7283 pub fn obs_source_update_properties(source: *mut obs_source_t);
7284#[doc = " Gets the current async video frame"]
7285 pub fn obs_source_get_frame(source: *mut obs_source_t) -> *mut obs_source_frame;
7286#[doc = " Releases the current async video frame"]
7287 pub fn obs_source_release_frame(source: *mut obs_source_t, frame: *mut obs_source_frame);
7288#[doc = " Default RGB filter handler for generic effect filters. Processes the\n filter chain and renders them to texture if needed, then the filter is\n drawn with\n\n After calling this, set your parameters for the effect, then call\n obs_source_process_filter_end to draw the filter.\n\n Returns true if filtering should continue, false if the filter is bypassed\n for whatever reason."]
7289 pub fn obs_source_process_filter_begin(
7290 filter: *mut obs_source_t,
7291 format: gs_color_format,
7292 allow_direct: obs_allow_direct_render,
7293 ) -> bool;
7294 pub fn obs_source_process_filter_begin_with_color_space(
7295 filter: *mut obs_source_t,
7296 format: gs_color_format,
7297 space: gs_color_space,
7298 allow_direct: obs_allow_direct_render,
7299 ) -> bool;
7300#[doc = " Draws the filter.\n\n Before calling this function, first call obs_source_process_filter_begin and\n then set the effect parameters, and then call this function to finalize the\n filter."]
7301 pub fn obs_source_process_filter_end(
7302 filter: *mut obs_source_t,
7303 effect: *mut gs_effect_t,
7304 width: u32,
7305 height: u32,
7306 );
7307#[doc = " Draws the filter with a specific technique.\n\n Before calling this function, first call obs_source_process_filter_begin and\n then set the effect parameters, and then call this function to finalize the\n filter."]
7308 pub fn obs_source_process_filter_tech_end(
7309 filter: *mut obs_source_t,
7310 effect: *mut gs_effect_t,
7311 width: u32,
7312 height: u32,
7313 tech_name: *const ::std::os::raw::c_char,
7314 );
7315#[doc = " Skips the filter if the filter is invalid and cannot be rendered"]
7316 pub fn obs_source_skip_video_filter(filter: *mut obs_source_t);
7317#[doc = " Adds an active child source. Must be called by parent sources on child\n sources when the child is added and active. This ensures that the source is\n properly activated if the parent is active.\n\n @returns true if source can be added, false if it causes recursion"]
7318 pub fn obs_source_add_active_child(parent: *mut obs_source_t, child: *mut obs_source_t)
7319 -> bool;
7320#[doc = " Removes an active child source. Must be called by parent sources on child\n sources when the child is removed or inactive. This ensures that the source\n is properly deactivated if the parent is no longer active."]
7321 pub fn obs_source_remove_active_child(parent: *mut obs_source_t, child: *mut obs_source_t);
7322#[doc = " Sends a mouse down/up event to a source"]
7323 pub fn obs_source_send_mouse_click(
7324 source: *mut obs_source_t,
7325 event: *const obs_mouse_event,
7326 type_: i32,
7327 mouse_up: bool,
7328 click_count: u32,
7329 );
7330#[doc = " Sends a mouse move event to a source."]
7331 pub fn obs_source_send_mouse_move(
7332 source: *mut obs_source_t,
7333 event: *const obs_mouse_event,
7334 mouse_leave: bool,
7335 );
7336#[doc = " Sends a mouse wheel event to a source"]
7337 pub fn obs_source_send_mouse_wheel(
7338 source: *mut obs_source_t,
7339 event: *const obs_mouse_event,
7340 x_delta: ::std::os::raw::c_int,
7341 y_delta: ::std::os::raw::c_int,
7342 );
7343#[doc = " Sends a got-focus or lost-focus event to a source"]
7344 pub fn obs_source_send_focus(source: *mut obs_source_t, focus: bool);
7345#[doc = " Sends a key up/down event to a source"]
7346 pub fn obs_source_send_key_click(
7347 source: *mut obs_source_t,
7348 event: *const obs_key_event,
7349 key_up: bool,
7350 );
7351#[doc = " Sets the default source flags."]
7352 pub fn obs_source_set_default_flags(source: *mut obs_source_t, flags: u32);
7353#[doc = " Gets the base width for a source (not taking in to account filtering)"]
7354 pub fn obs_source_get_base_width(source: *mut obs_source_t) -> u32;
7355#[doc = " Gets the base height for a source (not taking in to account filtering)"]
7356 pub fn obs_source_get_base_height(source: *mut obs_source_t) -> u32;
7357 pub fn obs_source_audio_pending(source: *const obs_source_t) -> bool;
7358 pub fn obs_source_get_audio_timestamp(source: *const obs_source_t) -> u64;
7359 pub fn obs_source_get_audio_mix(source: *const obs_source_t, audio: *mut obs_source_audio_mix);
7360 pub fn obs_source_set_async_unbuffered(source: *mut obs_source_t, unbuffered: bool);
7361 pub fn obs_source_async_unbuffered(source: *const obs_source_t) -> bool;
7362#[doc = " Used to decouple audio from video so that audio doesn't attempt to sync up\n with video. I.E. Audio acts independently. Only works when in unbuffered\n mode."]
7363 pub fn obs_source_set_async_decoupled(source: *mut obs_source_t, decouple: bool);
7364 pub fn obs_source_async_decoupled(source: *const obs_source_t) -> bool;
7365 pub fn obs_source_set_audio_active(source: *mut obs_source_t, show: bool);
7366 pub fn obs_source_audio_active(source: *const obs_source_t) -> bool;
7367 pub fn obs_source_get_last_obs_version(source: *const obs_source_t) -> u32;
7368#[doc = " Media controls"]
7369 pub fn obs_source_media_play_pause(source: *mut obs_source_t, pause: bool);
7370 pub fn obs_source_media_restart(source: *mut obs_source_t);
7371 pub fn obs_source_media_stop(source: *mut obs_source_t);
7372 pub fn obs_source_media_next(source: *mut obs_source_t);
7373 pub fn obs_source_media_previous(source: *mut obs_source_t);
7374 pub fn obs_source_media_get_duration(source: *mut obs_source_t) -> i64;
7375 pub fn obs_source_media_get_time(source: *mut obs_source_t) -> i64;
7376 pub fn obs_source_media_set_time(source: *mut obs_source_t, ms: i64);
7377 pub fn obs_source_media_get_state(source: *mut obs_source_t) -> obs_media_state;
7378 pub fn obs_source_media_started(source: *mut obs_source_t);
7379 pub fn obs_source_media_ended(source: *mut obs_source_t);
7380#[doc = " Get canvas this source belongs to (reference incremented)"]
7381 pub fn obs_source_get_canvas(source: *const obs_source_t) -> *mut obs_canvas_t;
7382 pub fn obs_transition_get_source(
7383 transition: *mut obs_source_t,
7384 target: obs_transition_target,
7385 ) -> *mut obs_source_t;
7386 pub fn obs_transition_clear(transition: *mut obs_source_t);
7387 pub fn obs_transition_get_active_source(transition: *mut obs_source_t) -> *mut obs_source_t;
7388 pub fn obs_transition_start(
7389 transition: *mut obs_source_t,
7390 mode: obs_transition_mode,
7391 duration_ms: u32,
7392 dest: *mut obs_source_t,
7393 ) -> bool;
7394 pub fn obs_transition_set(transition: *mut obs_source_t, source: *mut obs_source_t);
7395 pub fn obs_transition_set_manual_time(transition: *mut obs_source_t, t: f32);
7396 pub fn obs_transition_set_manual_torque(transition: *mut obs_source_t, torque: f32, clamp: f32);
7397 pub fn obs_transition_set_scale_type(
7398 transition: *mut obs_source_t,
7399 type_: obs_transition_scale_type,
7400 );
7401 pub fn obs_transition_get_scale_type(
7402 transition: *const obs_source_t,
7403 ) -> obs_transition_scale_type;
7404 pub fn obs_transition_set_alignment(transition: *mut obs_source_t, alignment: u32);
7405 pub fn obs_transition_get_alignment(transition: *const obs_source_t) -> u32;
7406 pub fn obs_transition_set_size(transition: *mut obs_source_t, cx: u32, cy: u32);
7407 pub fn obs_transition_get_size(transition: *const obs_source_t, cx: *mut u32, cy: *mut u32);
7408#[doc = " Enables fixed transitions (videos or specific types of transitions that\n are of fixed duration and linearly interpolated"]
7409 pub fn obs_transition_enable_fixed(
7410 transition: *mut obs_source_t,
7411 enable: bool,
7412 duration_ms: u32,
7413 );
7414 pub fn obs_transition_fixed(transition: *mut obs_source_t) -> bool;
7415 pub fn obs_transition_get_time(transition: *mut obs_source_t) -> f32;
7416 pub fn obs_transition_force_stop(transition: *mut obs_source_t);
7417 pub fn obs_transition_video_render(
7418 transition: *mut obs_source_t,
7419 callback: obs_transition_video_render_callback_t,
7420 );
7421 pub fn obs_transition_video_render2(
7422 transition: *mut obs_source_t,
7423 callback: obs_transition_video_render_callback_t,
7424 placeholder_texture: *mut gs_texture_t,
7425 );
7426 pub fn obs_transition_video_get_color_space(transition: *mut obs_source_t) -> gs_color_space;
7427#[doc = " Directly renders its sub-source instead of to texture. Returns false if no\n longer transitioning"]
7428 pub fn obs_transition_video_render_direct(
7429 transition: *mut obs_source_t,
7430 target: obs_transition_target,
7431 ) -> bool;
7432 pub fn obs_transition_audio_render(
7433 transition: *mut obs_source_t,
7434 ts_out: *mut u64,
7435 audio: *mut obs_source_audio_mix,
7436 mixers: u32,
7437 channels: usize,
7438 sample_rate: usize,
7439 mix_a_callback: obs_transition_audio_mix_callback_t,
7440 mix_b_callback: obs_transition_audio_mix_callback_t,
7441 ) -> bool;
7442 pub fn obs_transition_swap_begin(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7443 pub fn obs_transition_swap_end(tr_dest: *mut obs_source_t, tr_source: *mut obs_source_t);
7444#[doc = " Creates a scene.\n\n A scene is a source which is a container of other sources with specific\n display orientations. Scenes can also be used like any other source."]
7445 pub fn obs_scene_create(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7446 pub fn obs_scene_create_private(name: *const ::std::os::raw::c_char) -> *mut obs_scene_t;
7447#[doc = " Duplicates a scene."]
7448 pub fn obs_scene_duplicate(
7449 scene: *mut obs_scene_t,
7450 name: *const ::std::os::raw::c_char,
7451 type_: obs_scene_duplicate_type,
7452 ) -> *mut obs_scene_t;
7453 pub fn obs_scene_release(scene: *mut obs_scene_t);
7454 pub fn obs_scene_get_ref(scene: *mut obs_scene_t) -> *mut obs_scene_t;
7455#[doc = " Gets the scene's source context"]
7456 pub fn obs_scene_get_source(scene: *const obs_scene_t) -> *mut obs_source_t;
7457#[doc = " Gets the scene from its source, or NULL if not a scene"]
7458 pub fn obs_scene_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7459#[doc = " Determines whether a source is within a scene"]
7460 pub fn obs_scene_find_source(
7461 scene: *mut obs_scene_t,
7462 name: *const ::std::os::raw::c_char,
7463 ) -> *mut obs_sceneitem_t;
7464 pub fn obs_scene_find_source_recursive(
7465 scene: *mut obs_scene_t,
7466 name: *const ::std::os::raw::c_char,
7467 ) -> *mut obs_sceneitem_t;
7468 pub fn obs_scene_find_sceneitem_by_id(scene: *mut obs_scene_t, id: i64)
7469 -> *mut obs_sceneitem_t;
7470#[doc = " Enumerates sources within a scene"]
7471 pub fn obs_scene_enum_items(
7472 scene: *mut obs_scene_t,
7473 callback: ::std::option::Option<
7474 unsafe extern "C" fn(
7475 arg1: *mut obs_scene_t,
7476 arg2: *mut obs_sceneitem_t,
7477 arg3: *mut ::std::os::raw::c_void,
7478 ) -> bool,
7479 >,
7480 param: *mut ::std::os::raw::c_void,
7481 );
7482 pub fn obs_scene_reorder_items(
7483 scene: *mut obs_scene_t,
7484 item_order: *const *mut obs_sceneitem_t,
7485 item_order_size: usize,
7486 ) -> bool;
7487 pub fn obs_scene_reorder_items2(
7488 scene: *mut obs_scene_t,
7489 item_order: *mut obs_sceneitem_order_info,
7490 item_order_size: usize,
7491 ) -> bool;
7492 pub fn obs_source_is_scene(source: *const obs_source_t) -> bool;
7493 pub fn obs_source_type_is_scene(id: *const ::std::os::raw::c_char) -> bool;
7494#[doc = " Adds/creates a new scene item for a source"]
7495 pub fn obs_scene_add(
7496 scene: *mut obs_scene_t,
7497 source: *mut obs_source_t,
7498 ) -> *mut obs_sceneitem_t;
7499 pub fn obs_scene_atomic_update(
7500 scene: *mut obs_scene_t,
7501 func: obs_scene_atomic_update_func,
7502 data: *mut ::std::os::raw::c_void,
7503 );
7504 pub fn obs_sceneitem_addref(item: *mut obs_sceneitem_t);
7505 pub fn obs_sceneitem_release(item: *mut obs_sceneitem_t);
7506#[doc = " Removes a scene item."]
7507 pub fn obs_sceneitem_remove(item: *mut obs_sceneitem_t);
7508#[doc = " Adds a scene item."]
7509 pub fn obs_sceneitems_add(scene: *mut obs_scene_t, data: *mut obs_data_array_t);
7510#[doc = " Saves Sceneitem into an array, arr"]
7511 pub fn obs_sceneitem_save(item: *mut obs_sceneitem_t, arr: *mut obs_data_array_t);
7512#[doc = " Set the ID of a sceneitem"]
7513 pub fn obs_sceneitem_set_id(sceneitem: *mut obs_sceneitem_t, id: i64);
7514#[doc = " Save all the transform states for a current scene's sceneitems"]
7515 pub fn obs_scene_save_transform_states(
7516 scene: *mut obs_scene_t,
7517 all_items: bool,
7518 ) -> *mut obs_data_t;
7519#[doc = " Load all the transform states of sceneitems in that scene"]
7520 pub fn obs_scene_load_transform_states(state: *const ::std::os::raw::c_char);
7521#[doc = " Gets a sceneitem's order in its scene"]
7522 pub fn obs_sceneitem_get_order_position(item: *mut obs_sceneitem_t) -> ::std::os::raw::c_int;
7523#[doc = " Gets the scene parent associated with the scene item."]
7524 pub fn obs_sceneitem_get_scene(item: *const obs_sceneitem_t) -> *mut obs_scene_t;
7525#[doc = " Gets the source of a scene item."]
7526 pub fn obs_sceneitem_get_source(item: *const obs_sceneitem_t) -> *mut obs_source_t;
7527 pub fn obs_sceneitem_select(item: *mut obs_sceneitem_t, select: bool);
7528 pub fn obs_sceneitem_selected(item: *const obs_sceneitem_t) -> bool;
7529 pub fn obs_sceneitem_locked(item: *const obs_sceneitem_t) -> bool;
7530 pub fn obs_sceneitem_set_locked(item: *mut obs_sceneitem_t, lock: bool) -> bool;
7531 pub fn obs_sceneitem_set_pos(item: *mut obs_sceneitem_t, pos: *const vec2);
7532 pub fn obs_sceneitem_set_rot(item: *mut obs_sceneitem_t, rot_deg: f32);
7533 pub fn obs_sceneitem_set_scale(item: *mut obs_sceneitem_t, scale: *const vec2);
7534 pub fn obs_sceneitem_set_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7535 pub fn obs_sceneitem_set_order(item: *mut obs_sceneitem_t, movement: obs_order_movement);
7536 pub fn obs_sceneitem_set_order_position(
7537 item: *mut obs_sceneitem_t,
7538 position: ::std::os::raw::c_int,
7539 );
7540 pub fn obs_sceneitem_set_bounds_type(item: *mut obs_sceneitem_t, type_: obs_bounds_type);
7541 pub fn obs_sceneitem_set_bounds_alignment(item: *mut obs_sceneitem_t, alignment: u32);
7542 pub fn obs_sceneitem_set_bounds_crop(item: *mut obs_sceneitem_t, crop: bool);
7543 pub fn obs_sceneitem_set_bounds(item: *mut obs_sceneitem_t, bounds: *const vec2);
7544 pub fn obs_sceneitem_get_id(item: *const obs_sceneitem_t) -> i64;
7545 pub fn obs_sceneitem_get_pos(item: *const obs_sceneitem_t, pos: *mut vec2);
7546 pub fn obs_sceneitem_get_rot(item: *const obs_sceneitem_t) -> f32;
7547 pub fn obs_sceneitem_get_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7548 pub fn obs_sceneitem_get_alignment(item: *const obs_sceneitem_t) -> u32;
7549 pub fn obs_sceneitem_get_bounds_type(item: *const obs_sceneitem_t) -> obs_bounds_type;
7550 pub fn obs_sceneitem_get_bounds_alignment(item: *const obs_sceneitem_t) -> u32;
7551 pub fn obs_sceneitem_get_bounds_crop(item: *const obs_sceneitem_t) -> bool;
7552 pub fn obs_sceneitem_get_bounds(item: *const obs_sceneitem_t, bounds: *mut vec2);
7553 pub fn obs_sceneitem_get_info2(item: *const obs_sceneitem_t, info: *mut obs_transform_info);
7554 pub fn obs_sceneitem_set_info2(item: *mut obs_sceneitem_t, info: *const obs_transform_info);
7555 pub fn obs_sceneitem_get_draw_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7556 pub fn obs_sceneitem_get_box_transform(item: *const obs_sceneitem_t, transform: *mut matrix4);
7557 pub fn obs_sceneitem_get_box_scale(item: *const obs_sceneitem_t, scale: *mut vec2);
7558 pub fn obs_sceneitem_visible(item: *const obs_sceneitem_t) -> bool;
7559 pub fn obs_sceneitem_set_visible(item: *mut obs_sceneitem_t, visible: bool) -> bool;
7560 pub fn obs_sceneitem_set_crop(item: *mut obs_sceneitem_t, crop: *const obs_sceneitem_crop);
7561 pub fn obs_sceneitem_get_crop(item: *const obs_sceneitem_t, crop: *mut obs_sceneitem_crop);
7562 pub fn obs_sceneitem_set_scale_filter(item: *mut obs_sceneitem_t, filter: obs_scale_type);
7563 pub fn obs_sceneitem_get_scale_filter(item: *mut obs_sceneitem_t) -> obs_scale_type;
7564 pub fn obs_sceneitem_set_blending_method(
7565 item: *mut obs_sceneitem_t,
7566 method: obs_blending_method,
7567 );
7568 pub fn obs_sceneitem_get_blending_method(item: *mut obs_sceneitem_t) -> obs_blending_method;
7569 pub fn obs_sceneitem_set_blending_mode(item: *mut obs_sceneitem_t, type_: obs_blending_type);
7570 pub fn obs_sceneitem_get_blending_mode(item: *mut obs_sceneitem_t) -> obs_blending_type;
7571 pub fn obs_sceneitem_force_update_transform(item: *mut obs_sceneitem_t);
7572 pub fn obs_sceneitem_defer_update_begin(item: *mut obs_sceneitem_t);
7573 pub fn obs_sceneitem_defer_update_end(item: *mut obs_sceneitem_t);
7574#[doc = " Gets private front-end settings data. This data is saved/loaded\n automatically. Returns an incremented reference."]
7575 pub fn obs_sceneitem_get_private_settings(item: *mut obs_sceneitem_t) -> *mut obs_data_t;
7576 pub fn obs_scene_add_group(
7577 scene: *mut obs_scene_t,
7578 name: *const ::std::os::raw::c_char,
7579 ) -> *mut obs_sceneitem_t;
7580 pub fn obs_scene_insert_group(
7581 scene: *mut obs_scene_t,
7582 name: *const ::std::os::raw::c_char,
7583 items: *mut *mut obs_sceneitem_t,
7584 count: usize,
7585 ) -> *mut obs_sceneitem_t;
7586 pub fn obs_scene_add_group2(
7587 scene: *mut obs_scene_t,
7588 name: *const ::std::os::raw::c_char,
7589 signal: bool,
7590 ) -> *mut obs_sceneitem_t;
7591 pub fn obs_scene_insert_group2(
7592 scene: *mut obs_scene_t,
7593 name: *const ::std::os::raw::c_char,
7594 items: *mut *mut obs_sceneitem_t,
7595 count: usize,
7596 signal: bool,
7597 ) -> *mut obs_sceneitem_t;
7598 pub fn obs_scene_get_group(
7599 scene: *mut obs_scene_t,
7600 name: *const ::std::os::raw::c_char,
7601 ) -> *mut obs_sceneitem_t;
7602 pub fn obs_sceneitem_is_group(item: *mut obs_sceneitem_t) -> bool;
7603 pub fn obs_sceneitem_group_get_scene(group: *const obs_sceneitem_t) -> *mut obs_scene_t;
7604 pub fn obs_sceneitem_group_ungroup(group: *mut obs_sceneitem_t);
7605 pub fn obs_sceneitem_group_ungroup2(group: *mut obs_sceneitem_t, signal: bool);
7606 pub fn obs_sceneitem_group_add_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7607 pub fn obs_sceneitem_group_remove_item(group: *mut obs_sceneitem_t, item: *mut obs_sceneitem_t);
7608 pub fn obs_sceneitem_get_group(
7609 scene: *mut obs_scene_t,
7610 item: *mut obs_sceneitem_t,
7611 ) -> *mut obs_sceneitem_t;
7612 pub fn obs_source_is_group(source: *const obs_source_t) -> bool;
7613 pub fn obs_source_type_is_group(id: *const ::std::os::raw::c_char) -> bool;
7614 pub fn obs_scene_is_group(scene: *const obs_scene_t) -> bool;
7615 pub fn obs_sceneitem_group_enum_items(
7616 group: *mut obs_sceneitem_t,
7617 callback: ::std::option::Option<
7618 unsafe extern "C" fn(
7619 arg1: *mut obs_scene_t,
7620 arg2: *mut obs_sceneitem_t,
7621 arg3: *mut ::std::os::raw::c_void,
7622 ) -> bool,
7623 >,
7624 param: *mut ::std::os::raw::c_void,
7625 );
7626#[doc = " Gets the group from its source, or NULL if not a group"]
7627 pub fn obs_group_from_source(source: *const obs_source_t) -> *mut obs_scene_t;
7628 pub fn obs_sceneitem_defer_group_resize_begin(item: *mut obs_sceneitem_t);
7629 pub fn obs_sceneitem_defer_group_resize_end(item: *mut obs_sceneitem_t);
7630 pub fn obs_sceneitem_set_transition(
7631 item: *mut obs_sceneitem_t,
7632 show: bool,
7633 transition: *mut obs_source_t,
7634 );
7635 pub fn obs_sceneitem_get_transition(
7636 item: *mut obs_sceneitem_t,
7637 show: bool,
7638 ) -> *mut obs_source_t;
7639 pub fn obs_sceneitem_set_transition_duration(
7640 item: *mut obs_sceneitem_t,
7641 show: bool,
7642 duration_ms: u32,
7643 );
7644 pub fn obs_sceneitem_get_transition_duration(item: *mut obs_sceneitem_t, show: bool) -> u32;
7645 pub fn obs_sceneitem_do_transition(item: *mut obs_sceneitem_t, visible: bool);
7646 pub fn obs_sceneitem_transition_load(
7647 item: *mut obs_scene_item,
7648 data: *mut obs_data_t,
7649 show: bool,
7650 );
7651 pub fn obs_sceneitem_transition_save(item: *mut obs_scene_item, show: bool) -> *mut obs_data_t;
7652 pub fn obs_scene_prune_sources(scene: *mut obs_scene_t);
7653 pub fn obs_output_get_display_name(
7654 id: *const ::std::os::raw::c_char,
7655 ) -> *const ::std::os::raw::c_char;
7656#[doc = " Returns a pointer to the module which provides the output"]
7657 pub fn obs_output_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7658#[doc = " Returns the load state of a output's module given the id"]
7659 pub fn obs_output_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7660#[doc = " Creates an output.\n\n Outputs allow outputting to file, outputting to network, outputting to\n directshow, or other custom outputs."]
7661 pub fn obs_output_create(
7662 id: *const ::std::os::raw::c_char,
7663 name: *const ::std::os::raw::c_char,
7664 settings: *mut obs_data_t,
7665 hotkey_data: *mut obs_data_t,
7666 ) -> *mut obs_output_t;
7667#[doc = " Adds/releases a reference to an output. When the last reference is\n released, the output is destroyed."]
7668 pub fn obs_output_release(output: *mut obs_output_t);
7669 pub fn obs_weak_output_addref(weak: *mut obs_weak_output_t);
7670 pub fn obs_weak_output_release(weak: *mut obs_weak_output_t);
7671 pub fn obs_output_get_ref(output: *mut obs_output_t) -> *mut obs_output_t;
7672 pub fn obs_output_get_weak_output(output: *mut obs_output_t) -> *mut obs_weak_output_t;
7673 pub fn obs_weak_output_get_output(weak: *mut obs_weak_output_t) -> *mut obs_output_t;
7674 pub fn obs_weak_output_references_output(
7675 weak: *mut obs_weak_output_t,
7676 output: *mut obs_output_t,
7677 ) -> bool;
7678 pub fn obs_output_get_name(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7679#[doc = " Starts the output."]
7680 pub fn obs_output_start(output: *mut obs_output_t) -> bool;
7681#[doc = " Stops the output."]
7682 pub fn obs_output_stop(output: *mut obs_output_t);
7683#[doc = " Sets the current output delay, in seconds (if the output supports delay).\n\n If delay is currently active, it will set the delay value, but will not\n affect the current delay, it will only affect the next time the output is\n activated."]
7684 pub fn obs_output_set_delay(output: *mut obs_output_t, delay_sec: u32, flags: u32);
7685#[doc = " Gets the currently set delay value, in seconds."]
7686 pub fn obs_output_get_delay(output: *const obs_output_t) -> u32;
7687#[doc = " If delay is active, gets the currently active delay value, in seconds."]
7688 pub fn obs_output_get_active_delay(output: *const obs_output_t) -> u32;
7689#[doc = " Forces the output to stop. Usually only used with delay."]
7690 pub fn obs_output_force_stop(output: *mut obs_output_t);
7691#[doc = " Returns whether the output is active"]
7692 pub fn obs_output_active(output: *const obs_output_t) -> bool;
7693#[doc = " Returns output capability flags"]
7694 pub fn obs_output_get_flags(output: *const obs_output_t) -> u32;
7695#[doc = " Returns output capability flags"]
7696 pub fn obs_get_output_flags(id: *const ::std::os::raw::c_char) -> u32;
7697#[doc = " Gets the default settings for an output type"]
7698 pub fn obs_output_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
7699#[doc = " Returns the property list, if any. Free with obs_properties_destroy"]
7700 pub fn obs_get_output_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
7701#[doc = " Returns the property list of an existing output, if any. Free with\n obs_properties_destroy"]
7702 pub fn obs_output_properties(output: *const obs_output_t) -> *mut obs_properties_t;
7703#[doc = " Updates the settings for this output context"]
7704 pub fn obs_output_update(output: *mut obs_output_t, settings: *mut obs_data_t);
7705#[doc = " Specifies whether the output can be paused"]
7706 pub fn obs_output_can_pause(output: *const obs_output_t) -> bool;
7707#[doc = " Pauses the output (if the functionality is allowed by the output"]
7708 pub fn obs_output_pause(output: *mut obs_output_t, pause: bool) -> bool;
7709#[doc = " Returns whether output is paused"]
7710 pub fn obs_output_paused(output: *const obs_output_t) -> bool;
7711 pub fn obs_output_get_settings(output: *const obs_output_t) -> *mut obs_data_t;
7712#[doc = " Returns the signal handler for an output"]
7713 pub fn obs_output_get_signal_handler(output: *const obs_output_t) -> *mut signal_handler_t;
7714#[doc = " Returns the procedure handler for an output"]
7715 pub fn obs_output_get_proc_handler(output: *const obs_output_t) -> *mut proc_handler_t;
7716#[doc = " Sets the current audio/video media contexts associated with this output,\n required for non-encoded outputs. Can be null."]
7717 pub fn obs_output_set_media(
7718 output: *mut obs_output_t,
7719 video: *mut video_t,
7720 audio: *mut audio_t,
7721 );
7722#[doc = " Returns the video media context associated with this output"]
7723 pub fn obs_output_video(output: *const obs_output_t) -> *mut video_t;
7724#[doc = " Returns the audio media context associated with this output"]
7725 pub fn obs_output_audio(output: *const obs_output_t) -> *mut audio_t;
7726#[doc = " Sets the current audio mixer for non-encoded outputs"]
7727 pub fn obs_output_set_mixer(output: *mut obs_output_t, mixer_idx: usize);
7728#[doc = " Gets the current audio mixer for non-encoded outputs"]
7729 pub fn obs_output_get_mixer(output: *const obs_output_t) -> usize;
7730#[doc = " Sets the current audio mixes (mask) for a non-encoded multi-track output"]
7731 pub fn obs_output_set_mixers(output: *mut obs_output_t, mixers: usize);
7732#[doc = " Gets the current audio mixes (mask) for a non-encoded multi-track output"]
7733 pub fn obs_output_get_mixers(output: *const obs_output_t) -> usize;
7734#[doc = " Sets the current video encoder associated with this output,\n required for encoded outputs"]
7735 pub fn obs_output_set_video_encoder(output: *mut obs_output_t, encoder: *mut obs_encoder_t);
7736#[doc = " Sets the current video encoder associated with this output,\n required for encoded outputs.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored."]
7737 pub fn obs_output_set_video_encoder2(
7738 output: *mut obs_output_t,
7739 encoder: *mut obs_encoder_t,
7740 idx: usize,
7741 );
7742#[doc = " Sets the current audio encoder associated with this output,\n required for encoded outputs.\n\n The idx parameter specifies the audio encoder index to set the encoder to.\n Only used with outputs that have multiple audio outputs (RTMP typically),\n otherwise the parameter is ignored."]
7743 pub fn obs_output_set_audio_encoder(
7744 output: *mut obs_output_t,
7745 encoder: *mut obs_encoder_t,
7746 idx: usize,
7747 );
7748#[doc = " Returns the current video encoder associated with this output"]
7749 pub fn obs_output_get_video_encoder(output: *const obs_output_t) -> *mut obs_encoder_t;
7750#[doc = " Returns the current video encoder associated with this output.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise specifying an idx > 0 returns a NULL."]
7751 pub fn obs_output_get_video_encoder2(
7752 output: *const obs_output_t,
7753 idx: usize,
7754 ) -> *mut obs_encoder_t;
7755#[doc = " Returns the current audio encoder associated with this output\n\n The idx parameter specifies the audio encoder index. Only used with\n outputs that have multiple audio outputs, otherwise the parameter is\n ignored."]
7756 pub fn obs_output_get_audio_encoder(
7757 output: *const obs_output_t,
7758 idx: usize,
7759 ) -> *mut obs_encoder_t;
7760#[doc = " Sets the current service associated with this output."]
7761 pub fn obs_output_set_service(output: *mut obs_output_t, service: *mut obs_service_t);
7762#[doc = " Gets the current service associated with this output."]
7763 pub fn obs_output_get_service(output: *const obs_output_t) -> *mut obs_service_t;
7764#[doc = " Sets the reconnect settings. Set retry_count to 0 to disable reconnecting."]
7765 pub fn obs_output_set_reconnect_settings(
7766 output: *mut obs_output_t,
7767 retry_count: ::std::os::raw::c_int,
7768 retry_sec: ::std::os::raw::c_int,
7769 );
7770 pub fn obs_output_get_total_bytes(output: *const obs_output_t) -> u64;
7771 pub fn obs_output_get_frames_dropped(output: *const obs_output_t) -> ::std::os::raw::c_int;
7772 pub fn obs_output_get_total_frames(output: *const obs_output_t) -> ::std::os::raw::c_int;
7773#[doc = " Sets the preferred scaled resolution for this output. Set width and height\n to 0 to disable scaling.\n\n If this output uses an encoder, it will call obs_encoder_set_scaled_size on\n the encoder before the stream is started. If the encoder is already active,\n then this function will trigger a warning and do nothing."]
7774 pub fn obs_output_set_preferred_size(output: *mut obs_output_t, width: u32, height: u32);
7775#[doc = " Sets the preferred scaled resolution for this output. Set width and height\n to 0 to disable scaling.\n\n If this output uses an encoder, it will call obs_encoder_set_scaled_size on\n the encoder before the stream is started. If the encoder is already active,\n then this function will trigger a warning and do nothing.\n\n The idx parameter specifies the video encoder index to apply the scaling to.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored."]
7776 pub fn obs_output_set_preferred_size2(
7777 output: *mut obs_output_t,
7778 width: u32,
7779 height: u32,
7780 idx: usize,
7781 );
7782#[doc = " For video outputs, returns the width of the encoded image"]
7783 pub fn obs_output_get_width(output: *const obs_output_t) -> u32;
7784#[doc = " For video outputs, returns the width of the encoded image.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored and returns 0."]
7785 pub fn obs_output_get_width2(output: *const obs_output_t, idx: usize) -> u32;
7786#[doc = " For video outputs, returns the height of the encoded image"]
7787 pub fn obs_output_get_height(output: *const obs_output_t) -> u32;
7788#[doc = " For video outputs, returns the height of the encoded image.\n\n The idx parameter specifies the video encoder index.\n Only used with outputs that have multiple video outputs (FFmpeg typically),\n otherwise the parameter is ignored and returns 0."]
7789 pub fn obs_output_get_height2(output: *const obs_output_t, idx: usize) -> u32;
7790 pub fn obs_output_get_id(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7791 pub fn obs_output_caption(output: *mut obs_output_t, captions: *const obs_source_cea_708);
7792 pub fn obs_output_output_caption_text1(
7793 output: *mut obs_output_t,
7794 text: *const ::std::os::raw::c_char,
7795 );
7796 pub fn obs_output_output_caption_text2(
7797 output: *mut obs_output_t,
7798 text: *const ::std::os::raw::c_char,
7799 display_duration: f64,
7800 );
7801 pub fn obs_output_get_congestion(output: *mut obs_output_t) -> f32;
7802 pub fn obs_output_get_connect_time_ms(output: *mut obs_output_t) -> ::std::os::raw::c_int;
7803 pub fn obs_output_reconnecting(output: *const obs_output_t) -> bool;
7804#[doc = " Pass a string of the last output error, for UI use"]
7805 pub fn obs_output_set_last_error(
7806 output: *mut obs_output_t,
7807 message: *const ::std::os::raw::c_char,
7808 );
7809 pub fn obs_output_get_last_error(output: *mut obs_output_t) -> *const ::std::os::raw::c_char;
7810 pub fn obs_output_get_supported_video_codecs(
7811 output: *const obs_output_t,
7812 ) -> *const ::std::os::raw::c_char;
7813 pub fn obs_output_get_supported_audio_codecs(
7814 output: *const obs_output_t,
7815 ) -> *const ::std::os::raw::c_char;
7816 pub fn obs_output_get_protocols(output: *const obs_output_t) -> *const ::std::os::raw::c_char;
7817 pub fn obs_is_output_protocol_registered(protocol: *const ::std::os::raw::c_char) -> bool;
7818 pub fn obs_enum_output_protocols(
7819 idx: usize,
7820 protocol: *mut *mut ::std::os::raw::c_char,
7821 ) -> bool;
7822 pub fn obs_enum_output_types_with_protocol(
7823 protocol: *const ::std::os::raw::c_char,
7824 data: *mut ::std::os::raw::c_void,
7825 enum_cb: ::std::option::Option<
7826 unsafe extern "C" fn(
7827 data: *mut ::std::os::raw::c_void,
7828 id: *const ::std::os::raw::c_char,
7829 ) -> bool,
7830 >,
7831 );
7832 pub fn obs_get_output_supported_video_codecs(
7833 id: *const ::std::os::raw::c_char,
7834 ) -> *const ::std::os::raw::c_char;
7835 pub fn obs_get_output_supported_audio_codecs(
7836 id: *const ::std::os::raw::c_char,
7837 ) -> *const ::std::os::raw::c_char;
7838 pub fn obs_output_add_packet_callback(
7839 output: *mut obs_output_t,
7840 packet_cb: ::std::option::Option<
7841 unsafe extern "C" fn(
7842 output: *mut obs_output_t,
7843 pkt: *mut encoder_packet,
7844 pkt_time: *mut encoder_packet_time,
7845 param: *mut ::std::os::raw::c_void,
7846 ),
7847 >,
7848 param: *mut ::std::os::raw::c_void,
7849 );
7850 pub fn obs_output_remove_packet_callback(
7851 output: *mut obs_output_t,
7852 packet_cb: ::std::option::Option<
7853 unsafe extern "C" fn(
7854 output: *mut obs_output_t,
7855 pkt: *mut encoder_packet,
7856 pkt_time: *mut encoder_packet_time,
7857 param: *mut ::std::os::raw::c_void,
7858 ),
7859 >,
7860 param: *mut ::std::os::raw::c_void,
7861 );
7862 pub fn obs_output_set_reconnect_callback(
7863 output: *mut obs_output_t,
7864 reconnect_cb: ::std::option::Option<
7865 unsafe extern "C" fn(
7866 data: *mut ::std::os::raw::c_void,
7867 output: *mut obs_output_t,
7868 code: ::std::os::raw::c_int,
7869 ) -> bool,
7870 >,
7871 param: *mut ::std::os::raw::c_void,
7872 );
7873 pub fn obs_output_get_type_data(output: *mut obs_output_t) -> *mut ::std::os::raw::c_void;
7874#[doc = " Gets the video conversion info. Used only for raw output"]
7875 pub fn obs_output_get_video_conversion(output: *mut obs_output_t) -> *const video_scale_info;
7876#[doc = " Optionally sets the video conversion info. Used only for raw output"]
7877 pub fn obs_output_set_video_conversion(
7878 output: *mut obs_output_t,
7879 conversion: *const video_scale_info,
7880 );
7881#[doc = " Optionally sets the audio conversion info. Used only for raw output"]
7882 pub fn obs_output_set_audio_conversion(
7883 output: *mut obs_output_t,
7884 conversion: *const audio_convert_info,
7885 );
7886#[doc = " Returns whether data capture can begin"]
7887 pub fn obs_output_can_begin_data_capture(output: *const obs_output_t, flags: u32) -> bool;
7888#[doc = " Initializes encoders (if any)"]
7889 pub fn obs_output_initialize_encoders(output: *mut obs_output_t, flags: u32) -> bool;
7890#[doc = " Begins data capture from media/encoders.\n\n @param output Output context\n @return true if successful, false otherwise."]
7891 pub fn obs_output_begin_data_capture(output: *mut obs_output_t, flags: u32) -> bool;
7892#[doc = " Ends data capture from media/encoders"]
7893 pub fn obs_output_end_data_capture(output: *mut obs_output_t);
7894#[doc = " Signals that the output has stopped itself.\n\n @param output Output context\n @param code Error code (or OBS_OUTPUT_SUCCESS if not an error)"]
7895 pub fn obs_output_signal_stop(output: *mut obs_output_t, code: ::std::os::raw::c_int);
7896 pub fn obs_output_get_pause_offset(output: *mut obs_output_t) -> u64;
7897 pub fn obs_encoder_get_display_name(
7898 id: *const ::std::os::raw::c_char,
7899 ) -> *const ::std::os::raw::c_char;
7900#[doc = " Returns a pointer to the module which provides the encoder"]
7901 pub fn obs_encoder_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
7902#[doc = " Returns the load state of an encoder's module given the id"]
7903 pub fn obs_encoder_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
7904#[doc = " Creates a video encoder context\n\n @param id Video encoder ID\n @param name Name to assign to this context\n @param settings Settings\n @return The video encoder context, or NULL if failed or not found."]
7905 pub fn obs_video_encoder_create(
7906 id: *const ::std::os::raw::c_char,
7907 name: *const ::std::os::raw::c_char,
7908 settings: *mut obs_data_t,
7909 hotkey_data: *mut obs_data_t,
7910 ) -> *mut obs_encoder_t;
7911#[doc = " Creates an audio encoder context\n\n @param id Audio Encoder ID\n @param name Name to assign to this context\n @param settings Settings\n @param mixer_idx Index of the mixer to use for this audio encoder\n @return The video encoder context, or NULL if failed or not found."]
7912 pub fn obs_audio_encoder_create(
7913 id: *const ::std::os::raw::c_char,
7914 name: *const ::std::os::raw::c_char,
7915 settings: *mut obs_data_t,
7916 mixer_idx: usize,
7917 hotkey_data: *mut obs_data_t,
7918 ) -> *mut obs_encoder_t;
7919#[doc = " Adds/releases a reference to an encoder. When the last reference is\n released, the encoder is destroyed."]
7920 pub fn obs_encoder_release(encoder: *mut obs_encoder_t);
7921 pub fn obs_weak_encoder_addref(weak: *mut obs_weak_encoder_t);
7922 pub fn obs_weak_encoder_release(weak: *mut obs_weak_encoder_t);
7923 pub fn obs_encoder_get_ref(encoder: *mut obs_encoder_t) -> *mut obs_encoder_t;
7924 pub fn obs_encoder_get_weak_encoder(encoder: *mut obs_encoder_t) -> *mut obs_weak_encoder_t;
7925 pub fn obs_weak_encoder_get_encoder(weak: *mut obs_weak_encoder_t) -> *mut obs_encoder_t;
7926 pub fn obs_weak_encoder_references_encoder(
7927 weak: *mut obs_weak_encoder_t,
7928 encoder: *mut obs_encoder_t,
7929 ) -> bool;
7930 pub fn obs_encoder_set_name(encoder: *mut obs_encoder_t, name: *const ::std::os::raw::c_char);
7931 pub fn obs_encoder_get_name(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7932#[doc = " Returns the codec of an encoder by the id"]
7933 pub fn obs_get_encoder_codec(
7934 id: *const ::std::os::raw::c_char,
7935 ) -> *const ::std::os::raw::c_char;
7936#[doc = " Returns the type of an encoder by the id"]
7937 pub fn obs_get_encoder_type(id: *const ::std::os::raw::c_char) -> obs_encoder_type;
7938#[doc = " Returns the codec of the encoder"]
7939 pub fn obs_encoder_get_codec(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
7940#[doc = " Returns the type of an encoder"]
7941 pub fn obs_encoder_get_type(encoder: *const obs_encoder_t) -> obs_encoder_type;
7942#[doc = " Sets the scaled resolution for a video encoder. Set width and height to 0\n to disable scaling. If the encoder is active, this function will trigger\n a warning, and do nothing."]
7943 pub fn obs_encoder_set_scaled_size(encoder: *mut obs_encoder_t, width: u32, height: u32);
7944#[doc = " Enable/disable GPU based scaling for a video encoder.\n OBS_SCALE_DISABLE disables GPU based scaling (default),\n any other value enables GPU based scaling. If the encoder\n is active, this function will trigger a warning, and do nothing."]
7945 pub fn obs_encoder_set_gpu_scale_type(
7946 encoder: *mut obs_encoder_t,
7947 gpu_scale_type: obs_scale_type,
7948 );
7949#[doc = " Set frame rate divisor for a video encoder. This allows recording at\n a partial frame rate compared to the base frame rate, e.g. 60 FPS with\n divisor = 2 will record at 30 FPS, with divisor = 3 at 20, etc.\n\n Can only be called on stopped encoders, changing this on the fly is not supported"]
7950 pub fn obs_encoder_set_frame_rate_divisor(encoder: *mut obs_encoder_t, divisor: u32) -> bool;
7951#[doc = " Adds region of interest (ROI) for an encoder. This allows prioritizing\n quality of regions of the frame.\n If regions overlap, regions added earlier take precedence.\n\n Returns false if the encoder does not support ROI or region is invalid."]
7952 pub fn obs_encoder_add_roi(encoder: *mut obs_encoder_t, roi: *const obs_encoder_roi) -> bool;
7953#[doc = " For video encoders, returns true if any ROIs were set"]
7954 pub fn obs_encoder_has_roi(encoder: *const obs_encoder_t) -> bool;
7955#[doc = " Clear all regions"]
7956 pub fn obs_encoder_clear_roi(encoder: *mut obs_encoder_t);
7957#[doc = " Enumerate regions with callback (reverse order of addition)"]
7958 pub fn obs_encoder_enum_roi(
7959 encoder: *mut obs_encoder_t,
7960 enum_proc: ::std::option::Option<
7961 unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut obs_encoder_roi),
7962 >,
7963 param: *mut ::std::os::raw::c_void,
7964 );
7965#[doc = " Get ROI increment, encoders must rebuild their ROI map if it has changed"]
7966 pub fn obs_encoder_get_roi_increment(encoder: *const obs_encoder_t) -> u32;
7967#[doc = " For video encoders, returns true if pre-encode scaling is enabled"]
7968 pub fn obs_encoder_scaling_enabled(encoder: *const obs_encoder_t) -> bool;
7969#[doc = " For video encoders, returns the width of the encoded image"]
7970 pub fn obs_encoder_get_width(encoder: *const obs_encoder_t) -> u32;
7971#[doc = " For video encoders, returns the height of the encoded image"]
7972 pub fn obs_encoder_get_height(encoder: *const obs_encoder_t) -> u32;
7973#[doc = " For video encoders, returns whether GPU scaling is enabled"]
7974 pub fn obs_encoder_gpu_scaling_enabled(encoder: *mut obs_encoder_t) -> bool;
7975#[doc = " For video encoders, returns GPU scaling type"]
7976 pub fn obs_encoder_get_scale_type(encoder: *mut obs_encoder_t) -> obs_scale_type;
7977#[doc = " For video encoders, returns the frame rate divisor (default is 1)"]
7978 pub fn obs_encoder_get_frame_rate_divisor(encoder: *const obs_encoder_t) -> u32;
7979#[doc = " For video encoders, returns the number of frames encoded"]
7980 pub fn obs_encoder_get_encoded_frames(encoder: *const obs_encoder_t) -> u32;
7981#[doc = " For audio encoders, returns the sample rate of the audio"]
7982 pub fn obs_encoder_get_sample_rate(encoder: *const obs_encoder_t) -> u32;
7983#[doc = " For audio encoders, returns the frame size of the audio packet"]
7984 pub fn obs_encoder_get_frame_size(encoder: *const obs_encoder_t) -> usize;
7985#[doc = " For audio encoders, returns the mixer index"]
7986 pub fn obs_encoder_get_mixer_index(encoder: *const obs_encoder_t) -> usize;
7987#[doc = " Sets the preferred video format for a video encoder. If the encoder can use\n the format specified, it will force a conversion to that format if the\n obs output format does not match the preferred format.\n\n If the format is set to VIDEO_FORMAT_NONE, will revert to the default\n functionality of converting only when absolutely necessary.\n\n If GPU scaling is enabled, conversion will happen on the GPU."]
7988 pub fn obs_encoder_set_preferred_video_format(
7989 encoder: *mut obs_encoder_t,
7990 format: video_format,
7991 );
7992 pub fn obs_encoder_get_preferred_video_format(encoder: *const obs_encoder_t) -> video_format;
7993#[doc = " Sets the preferred colorspace for an encoder, e.g., to simultaneous SDR and\n HDR output.\n\n Only supported when GPU scaling is enabled."]
7994 pub fn obs_encoder_set_preferred_color_space(
7995 encoder: *mut obs_encoder_t,
7996 colorspace: video_colorspace,
7997 );
7998 pub fn obs_encoder_get_preferred_color_space(encoder: *const obs_encoder_t)
7999 -> video_colorspace;
8000#[doc = " Sets the preferred range for an encoder.\n\n Only supported when GPU scaling is enabled."]
8001 pub fn obs_encoder_set_preferred_range(encoder: *mut obs_encoder_t, range: video_range_type);
8002 pub fn obs_encoder_get_preferred_range(encoder: *const obs_encoder_t) -> video_range_type;
8003#[doc = " Gets the default settings for an encoder type"]
8004 pub fn obs_encoder_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8005 pub fn obs_encoder_get_defaults(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8006#[doc = " Returns the property list, if any. Free with obs_properties_destroy"]
8007 pub fn obs_get_encoder_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8008#[doc = " Returns the property list of an existing encoder, if any. Free with\n obs_properties_destroy"]
8009 pub fn obs_encoder_properties(encoder: *const obs_encoder_t) -> *mut obs_properties_t;
8010#[doc = " Updates the settings of the encoder context. Usually used for changing\n bitrate while active"]
8011 pub fn obs_encoder_update(encoder: *mut obs_encoder_t, settings: *mut obs_data_t);
8012#[doc = " Gets extra data (headers) associated with this context"]
8013 pub fn obs_encoder_get_extra_data(
8014 encoder: *const obs_encoder_t,
8015 extra_data: *mut *mut u8,
8016 size: *mut usize,
8017 ) -> bool;
8018#[doc = " Returns the current settings for this encoder"]
8019 pub fn obs_encoder_get_settings(encoder: *const obs_encoder_t) -> *mut obs_data_t;
8020#[doc = " Sets the video output context to be used with this encoder"]
8021 pub fn obs_encoder_set_video(encoder: *mut obs_encoder_t, video: *mut video_t);
8022#[doc = " Sets the audio output context to be used with this encoder"]
8023 pub fn obs_encoder_set_audio(encoder: *mut obs_encoder_t, audio: *mut audio_t);
8024#[doc = " Returns the video output context used with this encoder, or NULL if not\n a video context"]
8025 pub fn obs_encoder_video(encoder: *const obs_encoder_t) -> *mut video_t;
8026#[doc = " Returns the parent video output context used with this encoder, or NULL if not\n a video context. Used when an FPS divisor is set, where the original video\n context would not otherwise be gettable."]
8027 pub fn obs_encoder_parent_video(encoder: *const obs_encoder_t) -> *mut video_t;
8028#[doc = " Returns if the encoder's video output context supports shared textures for the specified video format."]
8029 pub fn obs_encoder_video_tex_active(
8030 encoder: *const obs_encoder_t,
8031 format: video_format,
8032 ) -> bool;
8033#[doc = " Returns the audio output context used with this encoder, or NULL if not\n a audio context"]
8034 pub fn obs_encoder_audio(encoder: *const obs_encoder_t) -> *mut audio_t;
8035#[doc = " Returns true if encoder is active, false otherwise"]
8036 pub fn obs_encoder_active(encoder: *const obs_encoder_t) -> bool;
8037 pub fn obs_encoder_get_type_data(encoder: *mut obs_encoder_t) -> *mut ::std::os::raw::c_void;
8038 pub fn obs_encoder_get_id(encoder: *const obs_encoder_t) -> *const ::std::os::raw::c_char;
8039 pub fn obs_get_encoder_caps(encoder_id: *const ::std::os::raw::c_char) -> u32;
8040 pub fn obs_encoder_get_caps(encoder: *const obs_encoder_t) -> u32;
8041 pub fn obs_encoder_packet_ref(dst: *mut encoder_packet, src: *mut encoder_packet);
8042 pub fn obs_encoder_packet_release(packet: *mut encoder_packet);
8043 pub fn obs_encoder_create_rerouted(
8044 encoder: *mut obs_encoder_t,
8045 reroute_id: *const ::std::os::raw::c_char,
8046 ) -> *mut ::std::os::raw::c_void;
8047#[doc = " Returns whether encoder is paused"]
8048 pub fn obs_encoder_paused(output: *const obs_encoder_t) -> bool;
8049 pub fn obs_encoder_get_last_error(encoder: *mut obs_encoder_t)
8050 -> *const ::std::os::raw::c_char;
8051 pub fn obs_encoder_set_last_error(
8052 encoder: *mut obs_encoder_t,
8053 message: *const ::std::os::raw::c_char,
8054 );
8055 pub fn obs_encoder_get_pause_offset(encoder: *const obs_encoder_t) -> u64;
8056#[doc = " Creates an \"encoder group\", allowing synchronized startup of encoders within\n the group. Encoder groups are single owner, and hold strong references to\n encoders within the group. Calling destroy on an active group will not actually\n destroy the group until it becomes completely inactive."]
8057 pub fn obs_encoder_set_group(
8058 encoder: *mut obs_encoder_t,
8059 group: *mut obs_encoder_group_t,
8060 ) -> bool;
8061 pub fn obs_encoder_group_create() -> *mut obs_encoder_group_t;
8062 pub fn obs_encoder_group_destroy(group: *mut obs_encoder_group_t);
8063 pub fn obs_service_get_display_name(
8064 id: *const ::std::os::raw::c_char,
8065 ) -> *const ::std::os::raw::c_char;
8066#[doc = " Returns a pointer to the module which provides the service"]
8067 pub fn obs_service_get_module(id: *const ::std::os::raw::c_char) -> *mut obs_module_t;
8068#[doc = " Returns the load state of a service's module given the id"]
8069 pub fn obs_service_load_state(id: *const ::std::os::raw::c_char) -> obs_module_load_state;
8070 pub fn obs_service_create(
8071 id: *const ::std::os::raw::c_char,
8072 name: *const ::std::os::raw::c_char,
8073 settings: *mut obs_data_t,
8074 hotkey_data: *mut obs_data_t,
8075 ) -> *mut obs_service_t;
8076 pub fn obs_service_create_private(
8077 id: *const ::std::os::raw::c_char,
8078 name: *const ::std::os::raw::c_char,
8079 settings: *mut obs_data_t,
8080 ) -> *mut obs_service_t;
8081#[doc = " Adds/releases a reference to a service. When the last reference is\n released, the service is destroyed."]
8082 pub fn obs_service_release(service: *mut obs_service_t);
8083 pub fn obs_weak_service_addref(weak: *mut obs_weak_service_t);
8084 pub fn obs_weak_service_release(weak: *mut obs_weak_service_t);
8085 pub fn obs_service_get_ref(service: *mut obs_service_t) -> *mut obs_service_t;
8086 pub fn obs_service_get_weak_service(service: *mut obs_service_t) -> *mut obs_weak_service_t;
8087 pub fn obs_weak_service_get_service(weak: *mut obs_weak_service_t) -> *mut obs_service_t;
8088 pub fn obs_weak_service_references_service(
8089 weak: *mut obs_weak_service_t,
8090 service: *mut obs_service_t,
8091 ) -> bool;
8092 pub fn obs_service_get_name(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8093#[doc = " Gets the default settings for a service"]
8094 pub fn obs_service_defaults(id: *const ::std::os::raw::c_char) -> *mut obs_data_t;
8095#[doc = " Returns the property list, if any. Free with obs_properties_destroy"]
8096 pub fn obs_get_service_properties(id: *const ::std::os::raw::c_char) -> *mut obs_properties_t;
8097#[doc = " Returns the property list of an existing service context, if any. Free with\n obs_properties_destroy"]
8098 pub fn obs_service_properties(service: *const obs_service_t) -> *mut obs_properties_t;
8099#[doc = " Gets the service type"]
8100 pub fn obs_service_get_type(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8101#[doc = " Updates the settings of the service context"]
8102 pub fn obs_service_update(service: *mut obs_service_t, settings: *mut obs_data_t);
8103#[doc = " Returns the current settings for this service"]
8104 pub fn obs_service_get_settings(service: *const obs_service_t) -> *mut obs_data_t;
8105#[doc = " Applies service-specific video encoder settings.\n\n @param video_encoder_settings Video encoder settings. Optional.\n @param audio_encoder_settings Audio encoder settings. Optional."]
8106 pub fn obs_service_apply_encoder_settings(
8107 service: *mut obs_service_t,
8108 video_encoder_settings: *mut obs_data_t,
8109 audio_encoder_settings: *mut obs_data_t,
8110 );
8111 pub fn obs_service_get_type_data(service: *mut obs_service_t) -> *mut ::std::os::raw::c_void;
8112 pub fn obs_service_get_id(service: *const obs_service_t) -> *const ::std::os::raw::c_char;
8113 pub fn obs_service_get_supported_resolutions(
8114 service: *const obs_service_t,
8115 resolutions: *mut *mut obs_service_resolution,
8116 count: *mut usize,
8117 );
8118 pub fn obs_service_get_max_fps(service: *const obs_service_t, fps: *mut ::std::os::raw::c_int);
8119 pub fn obs_service_get_max_bitrate(
8120 service: *const obs_service_t,
8121 video_bitrate: *mut ::std::os::raw::c_int,
8122 audio_bitrate: *mut ::std::os::raw::c_int,
8123 );
8124 pub fn obs_service_get_supported_video_codecs(
8125 service: *const obs_service_t,
8126 ) -> *mut *const ::std::os::raw::c_char;
8127 pub fn obs_service_get_supported_audio_codecs(
8128 service: *const obs_service_t,
8129 ) -> *mut *const ::std::os::raw::c_char;
8130#[doc = " Returns the protocol for this service context"]
8131 pub fn obs_service_get_protocol(service: *const obs_service_t)
8132 -> *const ::std::os::raw::c_char;
8133 pub fn obs_service_get_preferred_output_type(
8134 service: *const obs_service_t,
8135 ) -> *const ::std::os::raw::c_char;
8136 pub fn obs_service_get_connect_info(
8137 service: *const obs_service_t,
8138 type_: u32,
8139 ) -> *const ::std::os::raw::c_char;
8140 pub fn obs_service_can_try_to_connect(service: *const obs_service_t) -> bool;
8141 pub fn obs_source_frame_init(
8142 frame: *mut obs_source_frame,
8143 format: video_format,
8144 width: u32,
8145 height: u32,
8146 );
8147 pub fn obs_source_frame_copy(dst: *mut obs_source_frame, src: *const obs_source_frame);
8148 pub fn obs_source_get_icon_type(id: *const ::std::os::raw::c_char) -> obs_icon_type;
8149#[doc = " Get a strong reference to the main OBS canvas"]
8150 pub fn obs_get_main_canvas() -> *mut obs_canvas_t;
8151#[doc = " Creates a new canvas"]
8152 pub fn obs_canvas_create(
8153 name: *const ::std::os::raw::c_char,
8154 ovi: *mut obs_video_info,
8155 flags: u32,
8156 ) -> *mut obs_canvas_t;
8157#[doc = " Creates a new private canvas"]
8158 pub fn obs_canvas_create_private(
8159 name: *const ::std::os::raw::c_char,
8160 ovi: *mut obs_video_info,
8161 flags: u32,
8162 ) -> *mut obs_canvas_t;
8163#[doc = " Signal that references to canvas should be released and mark the canvas as removed."]
8164 pub fn obs_canvas_remove(canvas: *mut obs_canvas_t);
8165#[doc = " Returns if a canvas is marked as removed (i.e., should no longer be used)."]
8166 pub fn obs_canvas_removed(canvas: *mut obs_canvas_t) -> bool;
8167#[doc = " Set canvas name"]
8168 pub fn obs_canvas_set_name(canvas: *mut obs_canvas_t, name: *const ::std::os::raw::c_char);
8169#[doc = " Get canvas name"]
8170 pub fn obs_canvas_get_name(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8171#[doc = " Get canvas UUID"]
8172 pub fn obs_canvas_get_uuid(canvas: *const obs_canvas_t) -> *const ::std::os::raw::c_char;
8173#[doc = " Gets flags set on a canvas"]
8174 pub fn obs_canvas_get_flags(canvas: *const obs_canvas_t) -> u32;
8175#[doc = " Saves a canvas to settings data"]
8176 pub fn obs_save_canvas(source: *mut obs_canvas_t) -> *mut obs_data_t;
8177#[doc = " Loads a canvas from settings data"]
8178 pub fn obs_load_canvas(data: *mut obs_data_t) -> *mut obs_canvas_t;
8179#[doc = " Add strong reference"]
8180 pub fn obs_canvas_get_ref(canvas: *mut obs_canvas_t) -> *mut obs_canvas_t;
8181#[doc = " Release strong reference"]
8182 pub fn obs_canvas_release(canvas: *mut obs_canvas_t);
8183#[doc = " Add weak reference"]
8184 pub fn obs_weak_canvas_addref(weak: *mut obs_weak_canvas_t);
8185#[doc = " Release weak reference"]
8186 pub fn obs_weak_canvas_release(weak: *mut obs_weak_canvas_t);
8187#[doc = " Get weak reference from strong reference"]
8188 pub fn obs_canvas_get_weak_canvas(canvas: *mut obs_canvas_t) -> *mut obs_weak_canvas_t;
8189#[doc = " Get strong reference from weak reference"]
8190 pub fn obs_weak_canvas_get_canvas(weak: *mut obs_weak_canvas_t) -> *mut obs_canvas_t;
8191#[doc = " Returns the signal handler for a canvas"]
8192 pub fn obs_canvas_get_signal_handler(canvas: *mut obs_canvas_t) -> *mut signal_handler_t;
8193#[doc = " Sets the source to be used for this canvas."]
8194 pub fn obs_canvas_set_channel(
8195 canvas: *mut obs_canvas_t,
8196 channel: u32,
8197 source: *mut obs_source_t,
8198 );
8199#[doc = " Gets the source currently in use for this view context"]
8200 pub fn obs_canvas_get_channel(canvas: *mut obs_canvas_t, channel: u32) -> *mut obs_source_t;
8201#[doc = " Create scene attached to a canvas"]
8202 pub fn obs_canvas_scene_create(
8203 canvas: *mut obs_canvas_t,
8204 name: *const ::std::os::raw::c_char,
8205 ) -> *mut obs_scene_t;
8206#[doc = " Remove a scene from a canvas"]
8207 pub fn obs_canvas_scene_remove(scene: *mut obs_scene_t);
8208#[doc = " Move scene to another canvas, detaching it from the previous one and deduplicating the name if needed"]
8209 pub fn obs_canvas_move_scene(scene: *mut obs_scene_t, dst: *mut obs_canvas_t);
8210#[doc = " Enumerates scenes belonging to a canvas"]
8211 pub fn obs_canvas_enum_scenes(
8212 canvas: *mut obs_canvas_t,
8213 enum_proc: ::std::option::Option<
8214 unsafe extern "C" fn(
8215 arg1: *mut ::std::os::raw::c_void,
8216 arg2: *mut obs_source_t,
8217 ) -> bool,
8218 >,
8219 param: *mut ::std::os::raw::c_void,
8220 );
8221#[doc = " Get a canvas source by name"]
8222 pub fn obs_canvas_get_source_by_name(
8223 canvas: *mut obs_canvas_t,
8224 name: *const ::std::os::raw::c_char,
8225 ) -> *mut obs_source_t;
8226#[doc = " Get a canvas source by UUID"]
8227 pub fn obs_canvas_get_scene_by_name(
8228 canvas: *mut obs_canvas_t,
8229 name: *const ::std::os::raw::c_char,
8230 ) -> *mut obs_scene_t;
8231#[doc = " Reset a canvas's video mix"]
8232 pub fn obs_canvas_reset_video(canvas: *mut obs_canvas_t, ovi: *mut obs_video_info) -> bool;
8233#[doc = " Returns true if the canvas video is configured"]
8234 pub fn obs_canvas_has_video(canvas: *mut obs_canvas_t) -> bool;
8235#[doc = " Get canvas video output"]
8236 pub fn obs_canvas_get_video(canvas: *const obs_canvas_t) -> *mut video_t;
8237#[doc = " Get canvas video info (if it exists)"]
8238 pub fn obs_canvas_get_video_info(canvas: *const obs_canvas_t, ovi: *mut obs_video_info)
8239 -> bool;
8240#[doc = " Renders the sources of this canvas's view context"]
8241 pub fn obs_canvas_render(canvas: *mut obs_canvas_t);
8242}