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