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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#![allow(missing_copy_implementations)]
#![allow(non_camel_case_types)]

extern crate libc;

pub type ogg_int64_t = libc::int64_t;

#[repr(C)]
pub struct ogg_iovec_t {
    pub iov_base: *mut libc::c_void,
    pub iov_len: libc::size_t,
}

#[repr(C)]
pub struct oggpack_buffer {
    pub endbyte: libc::c_long,
    pub endbit: libc::c_int,

    pub buffer: *mut libc::c_uchar,
    pub ptr: *mut libc::c_uchar,
    pub storage: libc::c_long,
}

#[repr(C)]
pub struct ogg_page {
    pub header: *mut libc::c_uchar,
    pub header_len: libc::c_long,
    pub body: *mut libc::c_uchar,
    pub body_len: libc::c_long,
}

#[repr(C)]
pub struct ogg_stream_state {
    pub body_data: *mut libc::c_uchar,
    pub body_storage: libc::c_long,
    pub body_fill: libc::c_long,
    pub body_returned: libc::c_long,

    pub lacing_vals: *mut libc::c_int,
    pub granule_vals: *mut ogg_int64_t,

    pub lacing_storage: libc::c_long,
    pub lacing_fill: libc::c_long,
    pub lacing_packet: libc::c_long,
    pub lacing_returned: libc::c_long,

    pub header: [libc::c_uchar; 282],
    pub header_fill: libc::c_int,

    pub e_o_s: libc::c_int,
    pub b_o_s: libc::c_int,
    pub serialno: libc::c_long,
    pub pageno: libc::c_long,
    pub packetno: ogg_int64_t,
    pub granulepos: ogg_int64_t,
}

#[repr(C)]
pub struct ogg_packet {
    pub packet: *mut libc::c_uchar,
    pub bytes: libc::c_long,
    pub b_o_s: libc::c_long,
    pub e_o_s: libc::c_long,

    pub granulepos: ogg_int64_t,

    pub packetno: ogg_int64_t,
}

#[repr(C)]
pub struct ogg_sync_state {
    pub data: *mut libc::c_uchar,
    pub storage: libc::c_int,
    pub fill: libc::c_int,
    pub returned: libc::c_int,

    pub unsynced: libc::c_int,
    pub headerbytes: libc::c_int,
    pub bodybytes: libc::c_int,
}

extern {
    pub fn oggpack_writeinit(b: *mut oggpack_buffer);
    pub fn oggpack_writecheck(b: *mut oggpack_buffer) -> libc::c_int;
    pub fn oggpack_writetrunc(b: *mut oggpack_buffer, bits: libc::c_long);
    pub fn oggpack_writealign(b: *mut oggpack_buffer);
    pub fn oggpack_writecopy(b: *mut oggpack_buffer, source: *mut libc::c_void, bits: libc::c_long);
    pub fn oggpack_reset(b: *mut oggpack_buffer);
    pub fn oggpack_writeclear(b: *mut oggpack_buffer);
    pub fn oggpack_readinit(b: *mut oggpack_buffer, buf: *mut libc::c_uchar, bytes: libc::c_int)
        -> libc::c_int;
    pub fn oggpack_write(b: *mut oggpack_buffer, value: libc::c_ulong, bits: libc::c_int)
        -> libc::c_int;
    pub fn oggpack_look(b: *mut oggpack_buffer, bits: libc::c_int) -> libc::c_long;
    pub fn oggpack_look1(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpack_adv(b: *mut oggpack_buffer, bits: libc::c_int) -> libc::c_int;
    pub fn oggpack_adv1(b: *mut oggpack_buffer);
    pub fn oggpack_read(b: *mut oggpack_buffer, bits: libc::c_int) -> libc::c_long;
    pub fn oggpack_read1(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpack_bytes(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpack_bits(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpack_get_buffer(b: *mut oggpack_buffer) -> *const libc::c_uchar;

    pub fn oggpackB_writeinit(b: *mut oggpack_buffer);
    pub fn oggpackB_writecheck(b: *mut oggpack_buffer) -> libc::c_int;
    pub fn oggpackB_writetrunc(b: *mut oggpack_buffer, bits: libc::c_long);
    pub fn oggpackB_writealign(b: *mut oggpack_buffer);
    pub fn oggpackB_writecopy(b: *mut oggpack_buffer, source: *mut libc::c_void,
        bits: libc::c_long);
    pub fn oggpackB_reset(b: *mut oggpack_buffer);
    pub fn oggpackB_writeclear(b: *mut oggpack_buffer);
    pub fn oggpackB_readinit(b: *mut oggpack_buffer, buf: *mut libc::c_uchar, bytes: libc::c_int)
        -> libc::c_int;
    pub fn oggpackB_write(b: *mut oggpack_buffer, value: libc::c_ulong, bits: libc::c_int)
        -> libc::c_int;
    pub fn oggpackB_look(b: *mut oggpack_buffer,bits: libc::c_int) -> libc::c_long;
    pub fn oggpackB_look1(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpackB_adv(b: *mut oggpack_buffer, bits: libc::c_int) -> libc::c_int;
    pub fn oggpackB_adv1(b: *mut oggpack_buffer);
    pub fn oggpackB_read(b: *mut oggpack_buffer, bits: libc::c_int) -> libc::c_long;
    pub fn oggpackB_read1(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpackB_bytes(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpackB_bits(b: *mut oggpack_buffer) -> libc::c_long;
    pub fn oggpackB_get_buffer(b: *mut oggpack_buffer) -> *const libc::c_uchar;

    pub fn ogg_stream_packetin(os: *mut ogg_stream_state, op: *mut ogg_packet) -> libc::c_int;
    pub fn ogg_stream_iovecin(os: *mut ogg_stream_state, iov: *mut ogg_iovec_t, count: libc::c_int,
        e_o_s: libc::c_long, granulepos: ogg_int64_t) -> libc::c_int;
    pub fn ogg_stream_pageout(os: *mut ogg_stream_state, og: *mut ogg_page) -> libc::c_int;
    pub fn ogg_stream_pageout_fill(os: *mut ogg_stream_state, og: *mut ogg_page,
        nfill: libc::c_int) -> libc::c_int;
    pub fn ogg_stream_flush(os: *mut ogg_stream_state, og: *mut ogg_page) -> libc::c_int;
    pub fn ogg_stream_flush_fill(os: *mut ogg_stream_state, og: *mut ogg_page,
        nfill: libc::c_int) -> libc::c_int;

    pub fn ogg_sync_init(oy: *mut ogg_sync_state) -> libc::c_int;
    pub fn ogg_sync_clear(oy: *mut ogg_sync_state) -> libc::c_int;
    pub fn ogg_sync_reset(oy: *mut ogg_sync_state) -> libc::c_int;
    pub fn ogg_sync_destroy(oy: *mut ogg_sync_state) -> libc::c_int;
    pub fn ogg_sync_check(oy: *mut ogg_sync_state) -> libc::c_int;

    pub fn ogg_sync_buffer(oy: *mut ogg_sync_state, size: libc::c_long) -> *const libc::c_char;
    pub fn ogg_sync_wrote(oy: *mut ogg_sync_state, bytes: libc::c_long) -> libc::c_int;
    pub fn ogg_sync_pageseek(oy: *mut ogg_sync_state,og: *mut ogg_page) -> libc::c_long;
    pub fn ogg_sync_pageout(oy: *mut ogg_sync_state, og: *mut ogg_page) -> libc::c_int;
    pub fn ogg_stream_pagein(os: *mut ogg_stream_state, og: *mut ogg_page) -> libc::c_int;
    pub fn ogg_stream_packetout(os: *mut ogg_stream_state,op: *mut ogg_packet) -> libc::c_int;
    pub fn ogg_stream_packetpeek(os: *mut ogg_stream_state,op: *mut ogg_packet) -> libc::c_int;

    pub fn ogg_stream_init(os: *mut ogg_stream_state, serialno: libc::c_int) -> libc::c_int;
    pub fn ogg_stream_clear(os: *mut ogg_stream_state) -> libc::c_int;
    pub fn ogg_stream_reset(os: *mut ogg_stream_state) -> libc::c_int;
    pub fn ogg_stream_reset_serialno(os: *mut ogg_stream_state, serialno: libc::c_int)
        -> libc::c_int;
    pub fn ogg_stream_destroy(os: *mut ogg_stream_state) -> libc::c_int;
    pub fn ogg_stream_check(os: *mut ogg_stream_state) -> libc::c_int;
    pub fn ogg_stream_eos(os: *mut ogg_stream_state) -> libc::c_int;

    pub fn ogg_page_checksum_set(og: *mut ogg_page);

    pub fn ogg_page_version(og: *const ogg_page) -> libc::c_int;
    pub fn ogg_page_continued(og: *const ogg_page) -> libc::c_int;
    pub fn ogg_page_bos(og: *const ogg_page) -> libc::c_int;
    pub fn ogg_page_eos(og: *const ogg_page) -> libc::c_int;
    pub fn ogg_page_granulepos(og: *const ogg_page) -> ogg_int64_t;
    pub fn ogg_page_serialno(og: *const ogg_page) -> libc::c_int;
    pub fn ogg_page_pageno(og: *const ogg_page) -> libc::c_long;
    pub fn ogg_page_packets(og: *const ogg_page) -> libc::c_int;

    pub fn ogg_packet_clear(op: *mut ogg_packet);

}