out123_sys/
lib.rs

1//! Bindings to [out123][1].
2//!
3//! [1]: https://www.mpg123.de/
4
5#![allow(non_camel_case_types)]
6
7extern crate libc;
8extern crate mpg123_sys;
9
10use libc::{c_char, c_double, c_int, c_long, c_void, size_t};
11use mpg123_sys::mpg123_fmt;
12
13pub enum out123_handle {}
14
15#[derive(Clone, Copy)]
16#[repr(C)]
17pub enum out123_flags {
18    OUT123_HEADPHONES = 0x01,
19    OUT123_INTERNAL_SPEAKER = 0x02,
20    OUT123_LINE_OUT = 0x04,
21    OUT123_QUIET = 0x08,
22    OUT123_KEEP_PLAYING = 0x10,
23}
24pub use out123_flags::*;
25
26#[derive(Clone, Copy)]
27#[repr(C)]
28pub enum out123_error {
29    OUT123_ERR = -1,
30    OUT123_OK = 0,
31    OUT123_DOOM,
32    OUT123_BAD_DRIVER_NAME,
33    OUT123_BAD_DRIVER,
34    OUT123_NO_DRIVER,
35    OUT123_NOT_LIVE,
36    OUT123_DEV_PLAY,
37    OUT123_DEV_OPEN,
38    OUT123_BUFFER_ERROR,
39    OUT123_MODULE_ERROR,
40    OUT123_ARG_ERROR,
41    OUT123_BAD_PARAM,
42    OUT123_SET_RO_PARAM,
43    OUT123_BAD_HANDLE,
44    OUT123_ERRCOUNT,
45}
46pub use out123_error::*;
47
48#[derive(Clone, Copy)]
49#[repr(C)]
50pub enum out123_parms {
51    OUT123_FLAGS = 1,
52    OUT123_PRELOAD,
53    OUT123_GAIN,
54    OUT123_VERBOSE,
55    OUT123_DEVICEBUFFER,
56    OUT123_PROPFLAGS,
57    OUT123_NAME,
58}
59pub use out123_parms::*;
60
61#[derive(Clone, Copy)]
62#[repr(C)]
63pub enum out123_propflags {
64    OUT123_PROP_LIVE = 0x01,
65    OUT123_PROP_PERSISTENT = 0x02,
66}
67pub use out123_propflags::*;
68
69extern "C" {
70    pub fn out123_new() -> *mut out123_handle;
71    pub fn out123_del(ao: *mut out123_handle);
72    pub fn out123_strerror(ao: *mut out123_handle) -> *const c_char;
73    pub fn out123_errcode(ao: *mut out123_handle) -> c_int;
74    pub fn out123_plain_strerror(errcode: c_int) -> *const c_char;
75    pub fn out123_set_buffer(ao: *mut out123_handle, buffer_bytes: size_t) -> c_int;
76    pub fn out123_param(
77        ao: *mut out123_handle,
78        code: out123_parms,
79        value: c_long,
80        fvalue: c_double,
81        svalue: *const c_char,
82    ) -> c_int;
83    pub fn out123_getparam(
84        ao: *mut out123_handle,
85        code: out123_parms,
86        ret_value: *mut c_long,
87        ret_fvalue: *mut c_double,
88        ret_svalue: *mut *mut c_char,
89    ) -> c_int;
90    pub fn out123_param_from(ao: *mut out123_handle, from_ao: *mut out123_handle) -> c_int;
91    pub fn out123_drivers(
92        ao: *mut out123_handle,
93        names: *mut *mut *mut c_char,
94        descr: *mut *mut *mut c_char,
95    ) -> c_int;
96    pub fn out123_open(
97        ao: *mut out123_handle,
98        driver: *const c_char,
99        device: *const c_char,
100    ) -> c_int;
101    pub fn out123_driver_info(
102        ao: *mut out123_handle,
103        driver: *mut *mut c_char,
104        device: *mut *mut c_char,
105    ) -> c_int;
106    pub fn out123_close(ao: *mut out123_handle);
107    pub fn out123_encodings(ao: *mut out123_handle, rate: c_long, channels: c_int) -> c_int;
108    pub fn out123_encsize(encoding: c_int) -> c_int;
109    pub fn out123_formats(
110        ao: *mut out123_handle,
111        rates: *const c_long,
112        ratecount: c_int,
113        minchannels: c_int,
114        maxchannels: c_int,
115        fmtlist: *mut *mut mpg123_fmt,
116    ) -> c_int;
117    pub fn out123_enc_list(enclist: *mut *mut c_int) -> c_int;
118    pub fn out123_enc_byname(name: *const c_char) -> c_int;
119    pub fn out123_enc_name(encoding: c_int) -> *const c_char;
120    pub fn out123_enc_longname(encoding: c_int) -> *const c_char;
121    pub fn out123_start(
122        ao: *mut out123_handle,
123        rate: c_long,
124        channels: c_int,
125        encoding: c_int,
126    ) -> c_int;
127    pub fn out123_pause(ao: *mut out123_handle);
128    pub fn out123_continue(ao: *mut out123_handle);
129    pub fn out123_stop(ao: *mut out123_handle);
130    pub fn out123_play(ao: *mut out123_handle, buffer: *mut c_void, bytes: size_t) -> size_t;
131    pub fn out123_drop(ao: *mut out123_handle);
132    pub fn out123_drain(ao: *mut out123_handle);
133    pub fn out123_ndrain(ao: *mut out123_handle, bytes: size_t);
134    pub fn out123_buffered(ao: *mut out123_handle) -> size_t;
135    pub fn out123_getformat(
136        ao: *mut out123_handle,
137        rate: *mut c_long,
138        channels: *mut c_int,
139        encoding: *mut c_int,
140        framesize: *mut c_int,
141    ) -> c_int;
142}