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