1use std::os::raw::{c_char, c_void};
17use super::{pa_context, pa_context_success_cb_t};
18use crate::volume::{pa_cvolume, pa_volume_t};
19use crate::sample::{pa_sample_spec, pa_usec_t};
20use crate::def::{pa_sink_flags_t, pa_sink_state_t, pa_source_flags_t, pa_source_state_t};
21use crate::{operation::pa_operation, channelmap::pa_channel_map};
22use crate::{proplist::pa_proplist, format::pa_format_info};
23
24#[repr(C)]
25pub struct pa_sink_port_info {
26 pub name: *const c_char,
27 pub description: *const c_char,
28 pub priority: u32,
29 pub available: i32,
30 #[cfg(any(doc, feature = "pa_v14"))]
31 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
32 pub availability_group: *const c_char,
33 #[cfg(any(doc, feature = "pa_v14"))]
34 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
35 pub r#type: u32,
36}
37
38#[repr(C)]
39pub struct pa_sink_info {
40 pub name: *const c_char,
41 pub index: u32,
42 pub description: *const c_char,
43 pub sample_spec: pa_sample_spec,
44 pub channel_map: pa_channel_map,
45 pub owner_module: u32,
46 pub volume: pa_cvolume,
47 pub mute: i32,
48 pub monitor_source: u32,
49 pub monitor_source_name: *const c_char,
50 pub latency: pa_usec_t,
51 pub driver: *const c_char,
52 pub flags: pa_sink_flags_t,
53 pub proplist: *mut pa_proplist,
54 pub configured_latency: pa_usec_t,
55 pub base_volume: pa_volume_t,
56 pub state: pa_sink_state_t,
57 pub n_volume_steps: u32,
58 pub card: u32,
59 pub n_ports: u32,
60 pub ports: *mut *mut pa_sink_port_info,
61 pub active_port: *mut pa_sink_port_info,
62 pub n_formats: u8,
63 pub formats: *mut *mut pa_format_info,
64}
65
66#[rustfmt::skip]
67pub type pa_sink_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_sink_info, eol: i32, userdata: *mut c_void)>;
68
69#[repr(C)]
70pub struct pa_source_port_info {
71 pub name: *const c_char,
72 pub description: *const c_char,
73 pub priority: u32,
74 pub available: i32,
75 #[cfg(any(doc, feature = "pa_v14"))]
76 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
77 pub availability_group: *const c_char,
78 #[cfg(any(doc, feature = "pa_v14"))]
79 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
80 pub r#type: u32,
81}
82
83#[repr(C)]
84pub struct pa_source_info {
85 pub name: *const c_char,
86 pub index: u32,
87 pub description: *const c_char,
88 pub sample_spec: pa_sample_spec,
89 pub channel_map: pa_channel_map,
90 pub owner_module: u32,
91 pub volume: pa_cvolume,
92 pub mute: i32,
93 pub monitor_of_sink: u32,
94 pub monitor_of_sink_name: *const c_char,
95 pub latency: pa_usec_t,
96 pub driver: *const c_char,
97 pub flags: pa_source_flags_t,
98 pub proplist: *mut pa_proplist,
99 pub configured_latency: pa_usec_t,
100 pub base_volume: pa_volume_t,
101 pub state: pa_source_state_t,
102 pub n_volume_steps: u32,
103 pub card: u32,
104 pub n_ports: u32,
105 pub ports: *mut *mut pa_source_port_info,
106 pub active_port: *mut pa_source_port_info,
107 pub n_formats: u8,
108 pub formats: *mut *mut pa_format_info,
109}
110
111#[rustfmt::skip]
112pub type pa_source_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_source_info, eol: i32, userdata: *mut c_void)>;
113
114#[repr(C)]
115pub struct pa_server_info {
116 pub user_name: *const c_char,
117 pub host_name: *const c_char,
118 pub server_version: *const c_char,
119 pub server_name: *const c_char,
120 pub sample_spec: pa_sample_spec,
121 pub default_sink_name: *const c_char,
122 pub default_source_name: *const c_char,
123 pub cookie: u32,
124 pub channel_map: pa_channel_map,
125}
126
127#[rustfmt::skip]
128pub type pa_server_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_server_info, userdata: *mut c_void)>;
129
130#[repr(C)]
131pub struct pa_module_info {
132 pub index: u32,
133 pub name: *const c_char,
134 pub argument: *const c_char,
135 pub n_used: u32,
136 #[deprecated]
137 pub auto_unload: i32,
138 pub proplist: *mut pa_proplist,
139}
140
141#[rustfmt::skip]
142pub type pa_module_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_module_info, eol: i32, userdata: *mut c_void)>;
143
144#[rustfmt::skip]
145pub type pa_context_index_cb_t = Option<extern "C" fn(c: *mut pa_context, idx: u32, userdata: *mut c_void)>;
146
147#[repr(C)]
152pub struct pa_client_info {
153 pub index: u32,
155 pub name: *const c_char,
157 pub owner_module: u32,
159 pub driver: *const c_char,
161 pub proplist: *mut pa_proplist,
163}
164
165#[rustfmt::skip]
166pub type pa_client_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_client_info, eol: i32, userdata: *mut c_void)>;
167
168#[repr(C)]
172pub struct pa_card_profile_info {
173 pub name: *const c_char,
175 pub description: *const c_char,
177 pub n_sinks: u32,
179 pub n_sources: u32,
181 pub priority: u32,
183}
184
185#[repr(C)]
190pub struct pa_card_profile_info2 {
191 pub name: *const c_char,
193 pub description: *const c_char,
195 pub n_sinks: u32,
197 pub n_sources: u32,
199 pub priority: u32,
201
202 pub available: i32,
207}
208
209#[repr(C)]
210pub struct pa_card_port_info {
211 pub name: *const c_char,
212 pub description: *const c_char,
213 pub priority: u32,
214 pub available: i32,
215 pub direction: i32,
216 pub n_profiles: u32,
217 #[deprecated]
218 pub profiles: *mut *mut pa_card_profile_info,
219 pub proplist: *mut pa_proplist,
220 pub latency_offset: i64,
221 pub profiles2: *mut *mut pa_card_profile_info2,
222 #[cfg(any(doc, feature = "pa_v14"))]
223 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
224 pub availability_group: *const c_char,
225 #[cfg(any(doc, feature = "pa_v14"))]
226 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v14")))]
227 pub r#type: u32,
228}
229
230#[repr(C)]
231pub struct pa_card_info {
232 pub index: u32,
233 pub name: *const c_char,
234 pub owner_module: u32,
235 pub driver: *const c_char,
236 pub n_profiles: u32,
237 #[deprecated]
238 pub profiles: *mut pa_card_profile_info,
239 #[deprecated]
240 pub active_profile: *mut pa_card_profile_info,
241 pub proplist: *mut pa_proplist,
242 pub n_ports: u32,
243 pub ports: *mut *mut pa_card_port_info,
244 pub profiles2: *mut *mut pa_card_profile_info2,
245 pub active_profile2: *mut pa_card_profile_info2,
246}
247
248#[rustfmt::skip]
249pub type pa_card_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_card_info, eol: i32, userdata: *mut c_void)>;
250
251#[repr(C)]
252pub struct pa_sink_input_info {
253 pub index: u32,
254 pub name: *const c_char,
255 pub owner_module: u32,
256 pub client: u32,
257 pub sink: u32,
258 pub sample_spec: pa_sample_spec,
259 pub channel_map: pa_channel_map,
260 pub volume: pa_cvolume,
261 pub buffer_usec: pa_usec_t,
262 pub sink_usec: pa_usec_t,
263 pub resample_method: *const c_char,
264 pub driver: *const c_char,
265 pub mute: i32,
266 pub proplist: *mut pa_proplist,
267 pub corked: i32,
268 pub has_volume: i32,
269 pub volume_writable: i32,
270 pub format: *mut pa_format_info,
271}
272
273#[rustfmt::skip]
274pub type pa_sink_input_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_sink_input_info, eol: i32, userdata: *mut c_void)>;
275
276#[repr(C)]
277pub struct pa_source_output_info {
278 pub index: u32,
279 pub name: *const c_char,
280 pub owner_module: u32,
281 pub client: u32,
282 pub source: u32,
283 pub sample_spec: pa_sample_spec,
284 pub channel_map: pa_channel_map,
285 pub buffer_usec: pa_usec_t,
286 pub source_usec: pa_usec_t,
287 pub resample_method: *const c_char,
288 pub driver: *const c_char,
289 pub proplist: *mut pa_proplist,
290 pub corked: i32,
291 pub volume: pa_cvolume,
292 pub mute: i32,
293 pub has_volume: i32,
294 pub volume_writable: i32,
295 pub format: *mut pa_format_info,
296}
297
298#[rustfmt::skip]
299pub type pa_source_output_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_source_output_info, eol: i32, userdata: *mut c_void)>;
300
301#[repr(C)]
306#[derive(Debug)]
307pub struct pa_stat_info {
308 pub memblock_total: u32,
310 pub memblock_total_size: u32,
312 pub memblock_allocated: u32,
314 pub memblock_allocated_size: u32,
316 pub scache_size: u32,
318}
319
320#[rustfmt::skip]
321pub type pa_stat_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_stat_info, userdata: *mut c_void)>;
322
323#[repr(C)]
324pub struct pa_sample_info {
325 pub index: u32,
326 pub name: *const c_char,
327 pub volume: pa_cvolume,
328 pub sample_spec: pa_sample_spec,
329 pub channel_map: pa_channel_map,
330 pub duration: pa_usec_t,
331 pub bytes: u32,
332 pub lazy: i32,
333 pub filename: *const c_char,
334 pub proplist: *mut pa_proplist,
335}
336
337#[rustfmt::skip]
338pub type pa_sample_info_cb_t = Option<extern "C" fn(c: *mut pa_context, i: *const pa_sample_info, eol: i32, userdata: *mut c_void)>;
339
340#[rustfmt::skip]
341#[cfg(any(doc, feature = "pa_v15"))]
342#[cfg_attr(docsrs, doc(cfg(feature = "pa_v15")))]
343pub type pa_context_string_cb_t = Option<extern "C" fn(c: *mut pa_context, success: i32, response: *const c_char, userdata: *mut c_void)>;
344
345#[rustfmt::skip]
346#[link(name = "pulse")]
347extern "C" {
348 pub fn pa_context_get_sink_info_by_name(c: *mut pa_context, name: *const c_char, cb: pa_sink_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
349 pub fn pa_context_get_sink_info_by_index(c: *mut pa_context, idx: u32, cb: pa_sink_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
350 pub fn pa_context_get_sink_info_list(c: *mut pa_context, cb: pa_sink_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
351 pub fn pa_context_set_sink_volume_by_index(c: *mut pa_context, idx: u32, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
352 pub fn pa_context_set_sink_volume_by_name(c: *mut pa_context, name: *const c_char, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
353 pub fn pa_context_set_sink_mute_by_index(c: *mut pa_context, idx: u32, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
354 pub fn pa_context_set_sink_mute_by_name(c: *mut pa_context, name: *const c_char, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
355 pub fn pa_context_suspend_sink_by_name(c: *mut pa_context, sink_name: *const c_char, suspend: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
356 pub fn pa_context_suspend_sink_by_index(c: *mut pa_context, idx: u32, suspend: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
357 pub fn pa_context_set_sink_port_by_index(c: *mut pa_context, idx: u32, port: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
358 pub fn pa_context_set_sink_port_by_name(c: *mut pa_context, name: *const c_char, port: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
359
360 pub fn pa_context_get_source_info_by_name(c: *mut pa_context, name: *const c_char, cb: pa_source_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
361 pub fn pa_context_get_source_info_by_index(c: *mut pa_context, idx: u32, cb: pa_source_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
362 pub fn pa_context_get_source_info_list(c: *mut pa_context, cb: pa_source_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
363 pub fn pa_context_set_source_volume_by_index(c: *mut pa_context, idx: u32, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
364 pub fn pa_context_set_source_volume_by_name(c: *mut pa_context, name: *const c_char, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
365 pub fn pa_context_set_source_mute_by_index(c: *mut pa_context, idx: u32, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
366 pub fn pa_context_set_source_mute_by_name(c: *mut pa_context, name: *const c_char, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
367 pub fn pa_context_suspend_source_by_name(c: *mut pa_context, source_name: *const c_char, suspend: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
368 pub fn pa_context_suspend_source_by_index(c: *mut pa_context, idx: u32, suspend: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
369 pub fn pa_context_set_source_port_by_index(c: *mut pa_context, idx: u32, port: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
370 pub fn pa_context_set_source_port_by_name(c: *mut pa_context, name: *const c_char, port: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
371
372 pub fn pa_context_get_server_info(c: *mut pa_context, cb: pa_server_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
373
374 pub fn pa_context_get_module_info(c: *mut pa_context, idx: u32, cb: pa_module_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
375 pub fn pa_context_get_module_info_list(c: *mut pa_context, cb: pa_module_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
376 pub fn pa_context_load_module(c: *mut pa_context, name: *const c_char, argument: *const c_char, cb: pa_context_index_cb_t, userdata: *mut c_void) -> *mut pa_operation;
377 pub fn pa_context_unload_module(c: *mut pa_context, idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
378
379 #[cfg(any(doc, feature = "pa_v15"))]
380 #[cfg_attr(docsrs, doc(cfg(feature = "pa_v15")))]
381 pub fn pa_context_send_message_to_object(c: *mut pa_context, recipient_name: *const c_char, message: *const c_char, message_parameters: *const c_char, cb: pa_context_string_cb_t, userdata: *mut c_void) -> *mut pa_operation;
382
383 pub fn pa_context_get_client_info(c: *mut pa_context, idx: u32, cb: pa_client_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
384 pub fn pa_context_get_client_info_list(c: *mut pa_context, cb: pa_client_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
385 pub fn pa_context_kill_client(c: *mut pa_context, idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
386
387 pub fn pa_context_get_card_info_by_index(c: *mut pa_context, idx: u32, cb: pa_card_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
388 pub fn pa_context_get_card_info_by_name(c: *mut pa_context, name: *const c_char, cb: pa_card_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
389 pub fn pa_context_get_card_info_list(c: *mut pa_context, cb: pa_card_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
390 pub fn pa_context_set_card_profile_by_index(c: *mut pa_context, idx: u32, profile: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
391 pub fn pa_context_set_card_profile_by_name(c: *mut pa_context, name: *const c_char, profile: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
392 pub fn pa_context_set_port_latency_offset(c: *mut pa_context, card_name: *const c_char, port_name: *const c_char, offset: i64, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
393
394 pub fn pa_context_get_sink_input_info(c: *mut pa_context, idx: u32, cb: pa_sink_input_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
395 pub fn pa_context_get_sink_input_info_list(c: *mut pa_context, cb: pa_sink_input_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
396 pub fn pa_context_move_sink_input_by_name(c: *mut pa_context, idx: u32, sink_name: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
397 pub fn pa_context_move_sink_input_by_index(c: *mut pa_context, idx: u32, sink_idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
398 pub fn pa_context_set_sink_input_volume(c: *mut pa_context, idx: u32, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
399 pub fn pa_context_set_sink_input_mute(c: *mut pa_context, idx: u32, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
400 pub fn pa_context_kill_sink_input(c: *mut pa_context, idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
401
402 pub fn pa_context_get_source_output_info(c: *mut pa_context, idx: u32, cb: pa_source_output_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
403 pub fn pa_context_get_source_output_info_list(c: *mut pa_context, cb: pa_source_output_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
404 pub fn pa_context_move_source_output_by_name(c: *mut pa_context, idx: u32, source_name: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
405 pub fn pa_context_move_source_output_by_index(c: *mut pa_context, idx: u32, source_idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
406 pub fn pa_context_set_source_output_volume(c: *mut pa_context, idx: u32, volume: *const pa_cvolume, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
407 pub fn pa_context_set_source_output_mute(c: *mut pa_context, idx: u32, mute: i32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
408 pub fn pa_context_kill_source_output(c: *mut pa_context, idx: u32, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
409
410 pub fn pa_context_stat(c: *mut pa_context, cb: pa_stat_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
411
412 pub fn pa_context_get_sample_info_by_name(c: *mut pa_context, name: *const c_char, cb: pa_sample_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
413 pub fn pa_context_get_sample_info_by_index(c: *mut pa_context, idx: u32, cb: pa_sample_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
414 pub fn pa_context_get_sample_info_list(c: *mut pa_context, cb: pa_sample_info_cb_t, userdata: *mut c_void) -> *mut pa_operation;
415}