1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#![allow(non_snake_case)]
extern crate libc;
extern crate ogg_sys as ogg;
extern crate vorbis_sys;
#[repr(C)]
pub struct ov_callbacks {
pub read_func: extern fn(*mut libc::c_void, libc::size_t, libc::size_t, *mut libc::c_void)
-> libc::size_t,
pub seek_func: extern fn(*mut libc::c_void, ogg::ogg_int64_t, libc::c_int) -> libc::c_int,
pub close_func: extern fn(*mut libc::c_void) -> libc::c_int,
pub tell_func: extern fn(*mut libc::c_void) -> libc::c_long,
}
pub const NOTOPEN: libc::c_int = 0;
pub const PARTOPEN: libc::c_int = 1;
pub const OPENED: libc::c_int = 2;
pub const STREAMSET: libc::c_int = 3;
pub const INITSET: libc::c_int = 4;
#[repr(C)]
pub struct OggVorbis_File {
pub datasource: *mut libc::c_void,
pub seekable: libc::c_int,
pub offset: ogg::ogg_int64_t,
pub end: ogg::ogg_int64_t,
pub oy: ogg::ogg_sync_state,
pub links: libc::c_int,
pub offsets: *mut ogg::ogg_int64_t,
pub dataoffsets: *mut ogg::ogg_int64_t,
pub serialnos: *mut libc::c_long,
pub pcmlengths: *mut ogg::ogg_int64_t,
pub vi: *mut vorbis_sys::vorbis_info,
pub vc: *mut vorbis_sys::vorbis_comment,
pub pcm_offset: ogg::ogg_int64_t,
pub ready_state: libc::c_int,
pub current_serialno: libc::c_long,
pub current_link: libc::c_int,
pub bittrack: libc::c_double,
pub samptrack: libc::c_double,
pub os: ogg::ogg_stream_state,
pub vd: vorbis_sys::vorbis_dsp_state,
pub vb: vorbis_sys::vorbis_block,
pub callbacks: ov_callbacks,
}
extern {
pub fn ov_clear(vf: *mut OggVorbis_File) -> libc::c_int;
pub fn ov_fopen(path: *const libc::c_char, vf: *mut OggVorbis_File) -> libc::c_int;
pub fn ov_open(f: *mut libc::FILE, vf: *mut OggVorbis_File, initial: *const libc::c_char,
ibytes: libc::c_long) -> libc::c_int;
pub fn ov_open_callbacks(datasource: *mut libc::c_void, vf: *mut OggVorbis_File,
initial: *const libc::c_char, ibytes: libc::c_long, callbacks: ov_callbacks)
-> libc::c_int;
pub fn ov_test(f: *mut libc::FILE, vf: *mut OggVorbis_File, initial: *const libc::c_char,
ibytes: libc::c_long) -> libc::c_int;
pub fn ov_test_callbacks(datasource: *mut libc::c_void, vf: *mut OggVorbis_File,
initial: *const libc::c_char, ibytes: libc::c_long, callbacks: ov_callbacks)
-> libc::c_int;
pub fn ov_test_open(vf: *mut OggVorbis_File) -> libc::c_int;
pub fn ov_bitrate(vf: *mut OggVorbis_File, i: libc::c_int) -> libc::c_long;
pub fn ov_bitrate_instant(vf: *mut OggVorbis_File) -> libc::c_long;
pub fn ov_streams(vf: *mut OggVorbis_File) -> libc::c_long;
pub fn ov_seekable(vf: *mut OggVorbis_File) -> libc::c_long;
pub fn ov_serialnumber(vf: *mut OggVorbis_File, i: libc::c_int) -> libc::c_long;
pub fn ov_raw_total(vf: *mut OggVorbis_File, i: libc::c_int) -> ogg::ogg_int64_t;
pub fn ov_pcm_total(vf: *mut OggVorbis_File, i: libc::c_int) -> ogg::ogg_int64_t;
pub fn ov_time_total(vf: *mut OggVorbis_File, i: libc::c_int) -> libc::c_double;
pub fn ov_raw_seek(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_pcm_seek(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_pcm_seek_page(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_time_seek(vf: *mut OggVorbis_File, pos: libc::c_double) -> libc::c_int;
pub fn ov_time_seek_page(vf: *mut OggVorbis_File, pos: libc::c_double) -> libc::c_int;
pub fn ov_raw_seek_lap(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_pcm_seek_lap(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_pcm_seek_page_lap(vf: *mut OggVorbis_File, pos: ogg::ogg_int64_t) -> libc::c_int;
pub fn ov_time_seek_lap(vf: *mut OggVorbis_File, pos: libc::c_double) -> libc::c_int;
pub fn ov_time_seek_page_lap(vf: *mut OggVorbis_File, pos: libc::c_double) -> libc::c_int;
pub fn ov_raw_tell(vf: *mut OggVorbis_File) -> ogg::ogg_int64_t;
pub fn ov_pcm_tell(vf: *mut OggVorbis_File) -> ogg::ogg_int64_t;
pub fn ov_time_tell(vf: *mut OggVorbis_File) -> libc::c_double;
pub fn ov_info(vf: *mut OggVorbis_File, link: libc::c_int) -> *mut vorbis_sys::vorbis_info;
pub fn ov_comment(vf: *mut OggVorbis_File, link: libc::c_int) -> *mut vorbis_sys::vorbis_comment;
pub fn ov_read_float(vf: *mut OggVorbis_File, pcm_channels: *mut *mut *mut libc::c_float,
samples: libc::c_int, bitstream: *mut libc::c_int) -> libc::c_long;
pub fn ov_read_filter(vf: *mut OggVorbis_File, buffer: *mut libc::c_char, length: libc::c_int,
bigendianp: libc::c_int, word: libc::c_int, sgned: libc::c_int,
bitstream: *mut libc::c_int,
filter: extern fn(*mut *mut libc::c_float, libc::c_long, libc::c_long, *mut libc::c_void),
filter_param: *mut libc::c_void) -> libc::c_long;
pub fn ov_read(vf: *mut OggVorbis_File, buffer: *mut libc::c_char, length: libc::c_int,
bigendianp: libc::c_int, word: libc::c_int, sgned: libc::c_int,
bitstream: *mut libc::c_int) -> libc::c_long;
pub fn ov_crosslap(vf1: *mut OggVorbis_File, vf2: *mut OggVorbis_File) -> libc::c_int;
pub fn ov_halfrate(vf: *mut OggVorbis_File, flag: libc::c_int) -> libc::c_int;
pub fn ov_halfrate_p(vf: *mut OggVorbis_File) -> libc::c_int;
}