ao_sys/
lib.rs

1//! Bindings to [ao][1].
2//!
3//! [1]: https://xiph.org/ao/
4
5#![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}