1#![allow(non_camel_case_types)]
6
7extern crate libc;
8
9use libc::{c_char, c_int, uint32_t};
10
11pub const AO_TYPE_LIVE: c_int = 1;
12pub const AO_TYPE_FILE: c_int = 2;
13
14pub const AO_ENODRIVER: c_int = 1;
15pub const AO_ENOTFILE: c_int = 2;
16pub const AO_ENOTLIVE: c_int = 3;
17pub const AO_EBADOPTION: c_int = 4;
18pub const AO_EOPENDEVICE: c_int = 5;
19pub const AO_EOPENFILE: c_int = 6;
20pub const AO_EFILEEXISTS: c_int = 7;
21pub const AO_EBADFORMAT: c_int = 8;
22
23pub const AO_EFAIL: c_int = 100;
24
25pub const AO_FMT_LITTLE: c_int = 1;
26pub const AO_FMT_BIG: c_int = 2;
27pub const AO_FMT_NATIVE: c_int = 4;
28
29pub enum ao_device {}
30
31pub enum ao_functions {}
32
33#[derive(Clone, Copy)]
34#[repr(C)]
35pub struct ao_info {
36 pub _type: c_int,
37 pub name: *mut c_char,
38 pub short_name: *mut c_char,
39 pub author: *mut c_char,
40 pub comment: *mut c_char,
41 pub preferred_byte_format: c_int,
42 pub priority: c_int,
43 pub options: *mut *mut c_char,
44 pub option_count: c_int,
45}
46
47#[derive(Clone, Copy)]
48#[repr(C)]
49pub struct ao_option {
50 pub key: *mut c_char,
51 pub value: *mut c_char,
52 pub next: *mut ao_option,
53}
54
55#[derive(Clone, Copy)]
56#[repr(C)]
57pub struct ao_sample_format {
58 pub bits: c_int,
59 pub rate: c_int,
60 pub channels: c_int,
61 pub byte_format: c_int,
62 pub matrix: *mut c_char,
63}
64
65extern {
66 pub fn ao_initialize();
67 pub fn ao_shutdown();
68 pub fn ao_append_global_option(key: *const c_char, value: *const c_char) -> c_int;
69 pub fn ao_append_option(options: *mut *mut ao_option,
70 key: *const c_char,
71 value: *const c_char)
72 -> c_int;
73 pub fn ao_free_options(options: *mut ao_option);
74 pub fn ao_open_live(driver_id: c_int,
75 format: *mut ao_sample_format,
76 option: *mut ao_option)
77 -> *mut ao_device;
78 pub fn ao_open_file(driver_id: c_int,
79 filename: *const c_char,
80 overwrite: c_int,
81 format: *mut ao_sample_format,
82 option: *mut ao_option)
83 -> *mut ao_device;
84 pub fn ao_play(device: *mut ao_device,
85 output_samples: *mut c_char,
86 num_bytes: uint32_t)
87 -> c_int;
88 pub fn ao_close(device: *mut ao_device) -> c_int;
89 pub fn ao_driver_id(short_name: *const c_char) -> c_int;
90 pub fn ao_default_driver_id() -> c_int;
91 pub fn ao_driver_info(driver_id: c_int) -> *mut ao_info;
92 pub fn ao_driver_info_list(driver_count: *mut c_int) -> *mut *mut ao_info;
93 pub fn ao_file_extension(driver_id: c_int) -> *const c_char;
94 pub fn ao_is_big_endian() -> c_int;
95}