lame_sys/
lib.rs

1// automatically generated by rust-bindgen
2
3#![allow(dead_code,
4         non_camel_case_types,
5         non_upper_case_globals,
6         non_snake_case)]
7
8extern crate libc;
9
10use libc::FILE;
11use std::os::raw::*;
12
13pub type size_t = usize;
14
15// TODO: va_list support
16// pub type lame_report_function =
17//    ::std::option::Option<unsafe extern "C" fn(format: *const c_char, ap: va_list)>;
18
19#[derive(Copy, Clone)]
20#[repr(u32)]
21#[derive(Debug)]
22pub enum vbr_mode {
23    vbr_off = 0,
24    vbr_mt = 1,
25    vbr_rh = 2,
26    vbr_abr = 3,
27    vbr_mtrh = 4,
28    vbr_max_indicator = 5,
29}
30pub const vbr_default: vbr_mode = vbr_mode::vbr_mtrh;
31
32#[derive(Copy, Clone)]
33#[repr(u32)]
34#[derive(Debug)]
35pub enum MPEG_mode {
36    STEREO = 0,
37    JOINT_STEREO = 1,
38    DUAL_CHANNEL = 2,
39    MONO = 3,
40    NOT_SET = 4,
41    MAX_INDICATOR = 5,
42}
43
44#[derive(Copy, Clone)]
45#[repr(u32)]
46#[derive(Debug)]
47pub enum Padding_type {
48    PAD_NO = 0,
49    PAD_ALL = 1,
50    PAD_ADJUST = 2,
51    PAD_MAX_INDICATOR = 3,
52}
53
54#[derive(Copy, Clone)]
55#[repr(u32)]
56#[derive(Debug)]
57pub enum preset_mode {
58    ABR_8 = 8,
59    ABR_320 = 320,
60    V9 = 410,
61    V8 = 420,
62    V7 = 430,
63    V6 = 440,
64    V5 = 450,
65    V4 = 460,
66    V3 = 470,
67    V2 = 480,
68    V1 = 490,
69    V0 = 500,
70    R3MIX = 1000,
71    STANDARD = 1001,
72    EXTREME = 1002,
73    INSANE = 1003,
74    STANDARD_FAST = 1004,
75    EXTREME_FAST = 1005,
76    MEDIUM = 1006,
77    MEDIUM_FAST = 1007,
78}
79
80pub const VBR_10: preset_mode = preset_mode::V9;
81pub const VBR_20: preset_mode = preset_mode::V8;
82pub const VBR_30: preset_mode = preset_mode::V7;
83pub const VBR_40: preset_mode = preset_mode::V6;
84pub const VBR_50: preset_mode = preset_mode::V5;
85pub const VBR_60: preset_mode = preset_mode::V4;
86pub const VBR_70: preset_mode = preset_mode::V3;
87pub const VBR_80: preset_mode = preset_mode::V2;
88pub const VBR_90: preset_mode = preset_mode::V1;
89pub const VBR_100: preset_mode = preset_mode::V0;
90
91#[derive(Copy, Clone)]
92#[repr(u32)]
93#[derive(Debug)]
94pub enum asm_optimizations {
95    MMX = 1,
96    AMD_3DNOW = 2,
97    SSE = 3,
98}
99
100#[derive(Copy, Clone)]
101#[repr(u32)]
102#[derive(Debug)]
103pub enum Psy_model {
104    PSY_GPSYCHO = 1,
105    PSY_NSPSYTUNE = 2,
106}
107
108#[derive(Copy, Clone)]
109#[repr(u32)]
110#[derive(Debug)]
111pub enum buffer_constraint {
112    MDB_DEFAULT = 0,
113    MDB_STRICT_ISO = 1,
114    MDB_MAXIMUM = 2,
115}
116
117pub enum lame_global_flags { }
118pub type lame_t = *mut lame_global_flags;
119
120#[repr(C)]
121#[derive(Copy, Clone)]
122#[derive(Debug)]
123pub struct lame_version_t {
124    pub major: c_int,
125    pub minor: c_int,
126    pub alpha: c_int,
127    pub beta: c_int,
128    pub psy_major: c_int,
129    pub psy_minor: c_int,
130    pub psy_alpha: c_int,
131    pub psy_beta: c_int,
132    pub features: *const c_char,
133}
134
135impl ::std::default::Default for lame_version_t {
136    fn default() -> Self {
137        unsafe { ::std::mem::zeroed() }
138    }
139}
140
141pub enum hip_global_flags { }
142pub type hip_t = *mut hip_global_flags;
143
144#[repr(C)]
145#[derive(Copy, Clone)]
146#[derive(Debug)]
147pub struct mp3data_struct {
148    pub header_parsed: c_int,
149    pub stereo: c_int,
150    pub samplerate: c_int,
151    pub bitrate: c_int,
152    pub mode: c_int,
153    pub mode_ext: c_int,
154    pub framesize: c_int,
155    pub nsamp: c_ulong,
156    pub totalframes: c_int,
157    pub framenum: c_int,
158}
159
160impl ::std::default::Default for mp3data_struct {
161    fn default() -> Self {
162        unsafe { ::std::mem::zeroed() }
163    }
164}
165
166#[derive(Copy, Clone)]
167#[repr(i32)]
168#[derive(Debug)]
169pub enum lame_errorcodes_t {
170    LAME_OKAY = 0,
171    LAME_GENERICERROR = -1,
172    LAME_NOMEM = -10,
173    LAME_BADBITRATE = -11,
174    LAME_BADSAMPFREQ = -12,
175    LAME_INTERNALERROR = -13,
176    FRONTEND_READERROR = -80,
177    FRONTEND_WRITEERROR = -81,
178    FRONTEND_FILETOOLARGE = -82,
179}
180pub const LAME_NOERROR: lame_errorcodes_t = lame_errorcodes_t::LAME_OKAY;
181
182extern "C" {
183    pub static mut bitrate_table: [[c_int; 16usize]; 3usize];
184    pub static mut samplerate_table: [[c_int; 4usize]; 3usize];
185    pub fn lame_init() -> *mut lame_global_flags;
186    pub fn lame_set_num_samples(arg1: *mut lame_global_flags, arg2: c_ulong) -> c_int;
187    pub fn lame_get_num_samples(arg1: *const lame_global_flags) -> c_ulong;
188    pub fn lame_set_in_samplerate(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
189    pub fn lame_get_in_samplerate(arg1: *const lame_global_flags) -> c_int;
190    pub fn lame_set_num_channels(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
191    pub fn lame_get_num_channels(arg1: *const lame_global_flags) -> c_int;
192    pub fn lame_set_scale(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
193    pub fn lame_get_scale(arg1: *const lame_global_flags) -> f32;
194    pub fn lame_set_scale_left(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
195    pub fn lame_get_scale_left(arg1: *const lame_global_flags) -> f32;
196    pub fn lame_set_scale_right(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
197    pub fn lame_get_scale_right(arg1: *const lame_global_flags) -> f32;
198    pub fn lame_set_out_samplerate(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
199    pub fn lame_get_out_samplerate(arg1: *const lame_global_flags) -> c_int;
200    pub fn lame_set_analysis(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
201    pub fn lame_get_analysis(arg1: *const lame_global_flags) -> c_int;
202    pub fn lame_set_bWriteVbrTag(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
203    pub fn lame_get_bWriteVbrTag(arg1: *const lame_global_flags) -> c_int;
204    pub fn lame_set_decode_only(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
205    pub fn lame_get_decode_only(arg1: *const lame_global_flags) -> c_int;
206    pub fn lame_set_quality(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
207    pub fn lame_get_quality(arg1: *const lame_global_flags) -> c_int;
208    pub fn lame_set_mode(arg1: *mut lame_global_flags, arg2: MPEG_mode) -> c_int;
209    pub fn lame_get_mode(arg1: *const lame_global_flags) -> MPEG_mode;
210    pub fn lame_set_force_ms(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
211    pub fn lame_get_force_ms(arg1: *const lame_global_flags) -> c_int;
212    pub fn lame_set_free_format(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
213    pub fn lame_get_free_format(arg1: *const lame_global_flags) -> c_int;
214    pub fn lame_set_findReplayGain(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
215    pub fn lame_get_findReplayGain(arg1: *const lame_global_flags) -> c_int;
216    pub fn lame_set_decode_on_the_fly(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
217    pub fn lame_get_decode_on_the_fly(arg1: *const lame_global_flags) -> c_int;
218    pub fn lame_set_nogap_total(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
219    pub fn lame_get_nogap_total(arg1: *const lame_global_flags) -> c_int;
220    pub fn lame_set_nogap_currentindex(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
221    pub fn lame_get_nogap_currentindex(arg1: *const lame_global_flags) -> c_int;
222    // TODO: va_list support
223    // pub fn lame_set_errorf(arg1: *mut lame_global_flags, arg2: lame_report_function) -> c_int;
224    // pub fn lame_set_debugf(arg1: *mut lame_global_flags, arg2: lame_report_function) -> c_int;
225    // pub fn lame_set_msgf(arg1: *mut lame_global_flags, arg2: lame_report_function) -> c_int;
226    pub fn lame_set_brate(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
227    pub fn lame_get_brate(arg1: *const lame_global_flags) -> c_int;
228    pub fn lame_set_compression_ratio(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
229    pub fn lame_get_compression_ratio(arg1: *const lame_global_flags) -> f32;
230    pub fn lame_set_preset(gfp: *mut lame_global_flags, arg1: c_int) -> c_int;
231    pub fn lame_set_asm_optimizations(gfp: *mut lame_global_flags,
232                                      arg1: c_int,
233                                      arg2: c_int)
234                                      -> c_int;
235    pub fn lame_set_copyright(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
236    pub fn lame_get_copyright(arg1: *const lame_global_flags) -> c_int;
237    pub fn lame_set_original(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
238    pub fn lame_get_original(arg1: *const lame_global_flags) -> c_int;
239    pub fn lame_set_error_protection(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
240    pub fn lame_get_error_protection(arg1: *const lame_global_flags) -> c_int;
241    pub fn lame_set_extension(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
242    pub fn lame_get_extension(arg1: *const lame_global_flags) -> c_int;
243    pub fn lame_set_strict_ISO(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
244    pub fn lame_get_strict_ISO(arg1: *const lame_global_flags) -> c_int;
245    pub fn lame_set_disable_reservoir(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
246    pub fn lame_get_disable_reservoir(arg1: *const lame_global_flags) -> c_int;
247    pub fn lame_set_quant_comp(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
248    pub fn lame_get_quant_comp(arg1: *const lame_global_flags) -> c_int;
249    pub fn lame_set_quant_comp_short(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
250    pub fn lame_get_quant_comp_short(arg1: *const lame_global_flags) -> c_int;
251    pub fn lame_set_experimentalX(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
252    pub fn lame_get_experimentalX(arg1: *const lame_global_flags) -> c_int;
253    pub fn lame_set_experimentalY(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
254    pub fn lame_get_experimentalY(arg1: *const lame_global_flags) -> c_int;
255    pub fn lame_set_experimentalZ(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
256    pub fn lame_get_experimentalZ(arg1: *const lame_global_flags) -> c_int;
257    pub fn lame_set_exp_nspsytune(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
258    pub fn lame_get_exp_nspsytune(arg1: *const lame_global_flags) -> c_int;
259    pub fn lame_set_msfix(arg1: *mut lame_global_flags, arg2: f64);
260    pub fn lame_get_msfix(arg1: *const lame_global_flags) -> f32;
261    pub fn lame_set_VBR(arg1: *mut lame_global_flags, arg2: vbr_mode) -> c_int;
262    pub fn lame_get_VBR(arg1: *const lame_global_flags) -> vbr_mode;
263    pub fn lame_set_VBR_q(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
264    pub fn lame_get_VBR_q(arg1: *const lame_global_flags) -> c_int;
265    pub fn lame_set_VBR_quality(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
266    pub fn lame_get_VBR_quality(arg1: *const lame_global_flags) -> f32;
267    pub fn lame_set_VBR_mean_bitrate_kbps(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
268    pub fn lame_get_VBR_mean_bitrate_kbps(arg1: *const lame_global_flags) -> c_int;
269    pub fn lame_set_VBR_min_bitrate_kbps(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
270    pub fn lame_get_VBR_min_bitrate_kbps(arg1: *const lame_global_flags) -> c_int;
271    pub fn lame_set_VBR_max_bitrate_kbps(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
272    pub fn lame_get_VBR_max_bitrate_kbps(arg1: *const lame_global_flags) -> c_int;
273    pub fn lame_set_VBR_hard_min(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
274    pub fn lame_get_VBR_hard_min(arg1: *const lame_global_flags) -> c_int;
275    pub fn lame_set_lowpassfreq(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
276    pub fn lame_get_lowpassfreq(arg1: *const lame_global_flags) -> c_int;
277    pub fn lame_set_lowpasswidth(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
278    pub fn lame_get_lowpasswidth(arg1: *const lame_global_flags) -> c_int;
279    pub fn lame_set_highpassfreq(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
280    pub fn lame_get_highpassfreq(arg1: *const lame_global_flags) -> c_int;
281    pub fn lame_set_highpasswidth(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
282    pub fn lame_get_highpasswidth(arg1: *const lame_global_flags) -> c_int;
283    pub fn lame_set_ATHonly(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
284    pub fn lame_get_ATHonly(arg1: *const lame_global_flags) -> c_int;
285    pub fn lame_set_ATHshort(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
286    pub fn lame_get_ATHshort(arg1: *const lame_global_flags) -> c_int;
287    pub fn lame_set_noATH(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
288    pub fn lame_get_noATH(arg1: *const lame_global_flags) -> c_int;
289    pub fn lame_set_ATHtype(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
290    pub fn lame_get_ATHtype(arg1: *const lame_global_flags) -> c_int;
291    pub fn lame_set_ATHlower(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
292    pub fn lame_get_ATHlower(arg1: *const lame_global_flags) -> f32;
293    pub fn lame_set_athaa_type(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
294    pub fn lame_get_athaa_type(arg1: *const lame_global_flags) -> c_int;
295    pub fn lame_set_athaa_sensitivity(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
296    pub fn lame_get_athaa_sensitivity(arg1: *const lame_global_flags) -> f32;
297    pub fn lame_set_allow_diff_short(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
298    pub fn lame_get_allow_diff_short(arg1: *const lame_global_flags) -> c_int;
299    pub fn lame_set_useTemporal(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
300    pub fn lame_get_useTemporal(arg1: *const lame_global_flags) -> c_int;
301    pub fn lame_set_interChRatio(arg1: *mut lame_global_flags, arg2: f32) -> c_int;
302    pub fn lame_get_interChRatio(arg1: *const lame_global_flags) -> f32;
303    pub fn lame_set_no_short_blocks(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
304    pub fn lame_get_no_short_blocks(arg1: *const lame_global_flags) -> c_int;
305    pub fn lame_set_force_short_blocks(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
306    pub fn lame_get_force_short_blocks(arg1: *const lame_global_flags) -> c_int;
307    pub fn lame_set_emphasis(arg1: *mut lame_global_flags, arg2: c_int) -> c_int;
308    pub fn lame_get_emphasis(arg1: *const lame_global_flags) -> c_int;
309    pub fn lame_get_version(arg1: *const lame_global_flags) -> c_int;
310    pub fn lame_get_encoder_delay(arg1: *const lame_global_flags) -> c_int;
311    pub fn lame_get_encoder_padding(arg1: *const lame_global_flags) -> c_int;
312    pub fn lame_get_framesize(arg1: *const lame_global_flags) -> c_int;
313    pub fn lame_get_mf_samples_to_encode(gfp: *const lame_global_flags) -> c_int;
314    pub fn lame_get_size_mp3buffer(gfp: *const lame_global_flags) -> c_int;
315    pub fn lame_get_frameNum(arg1: *const lame_global_flags) -> c_int;
316    pub fn lame_get_totalframes(arg1: *const lame_global_flags) -> c_int;
317    pub fn lame_get_RadioGain(arg1: *const lame_global_flags) -> c_int;
318    pub fn lame_get_AudiophileGain(arg1: *const lame_global_flags) -> c_int;
319    pub fn lame_get_PeakSample(arg1: *const lame_global_flags) -> f32;
320    pub fn lame_get_noclipGainChange(arg1: *const lame_global_flags) -> c_int;
321    pub fn lame_get_noclipScale(arg1: *const lame_global_flags) -> f32;
322    pub fn lame_init_params(arg1: *mut lame_global_flags) -> c_int;
323    pub fn get_lame_version() -> *const c_char;
324    pub fn get_lame_short_version() -> *const c_char;
325    pub fn get_lame_very_short_version() -> *const c_char;
326    pub fn get_psy_version() -> *const c_char;
327    pub fn get_lame_url() -> *const c_char;
328    pub fn get_lame_os_bitness() -> *const c_char;
329    pub fn get_lame_version_numerical(arg1: *mut lame_version_t);
330    pub fn lame_print_config(gfp: *const lame_global_flags);
331    pub fn lame_print_internals(gfp: *const lame_global_flags);
332    pub fn lame_encode_buffer(gfp: *mut lame_global_flags,
333                              buffer_l: *mut c_short,
334                              buffer_r: *mut c_short,
335                              nsamples: c_int,
336                              mp3buf: *mut c_uchar,
337                              mp3buf_size: c_int)
338                              -> c_int;
339    pub fn lame_encode_buffer_interleaved(gfp: *mut lame_global_flags,
340                                          pcm: *mut c_short,
341                                          num_samples: c_int,
342                                          mp3buf: *mut c_uchar,
343                                          mp3buf_size: c_int)
344                                          -> c_int;
345    pub fn lame_encode_buffer_float(gfp: *mut lame_global_flags,
346                                    pcm_l: *mut f32,
347                                    pcm_r: *mut f32,
348                                    nsamples: c_int,
349                                    mp3buf: *mut c_uchar,
350                                    mp3buf_size: c_int)
351                                    -> c_int;
352    pub fn lame_encode_buffer_ieee_float(gfp: lame_t,
353                                         pcm_l: *mut f32,
354                                         pcm_r: *mut f32,
355                                         nsamples: c_int,
356                                         mp3buf: *mut c_uchar,
357                                         mp3buf_size: c_int)
358                                         -> c_int;
359    pub fn lame_encode_buffer_interleaved_ieee_float(gfp: lame_t,
360                                                     pcm: *mut f32,
361                                                     nsamples: c_int,
362                                                     mp3buf: *mut c_uchar,
363                                                     mp3buf_size: c_int)
364                                                     -> c_int;
365    pub fn lame_encode_buffer_ieee_double(gfp: lame_t,
366                                          pcm_l: *mut f64,
367                                          pcm_r: *mut f64,
368                                          nsamples: c_int,
369                                          mp3buf: *mut c_uchar,
370                                          mp3buf_size: c_int)
371                                          -> c_int;
372    pub fn lame_encode_buffer_interleaved_ieee_double(gfp: lame_t,
373                                                      pcm: *mut f64,
374                                                      nsamples: c_int,
375                                                      mp3buf: *mut c_uchar,
376                                                      mp3buf_size: c_int)
377                                                      -> c_int;
378    pub fn lame_encode_buffer_long(gfp: *mut lame_global_flags,
379                                   buffer_l: *mut c_long,
380                                   buffer_r: *mut c_long,
381                                   nsamples: c_int,
382                                   mp3buf: *mut c_uchar,
383                                   mp3buf_size: c_int)
384                                   -> c_int;
385    pub fn lame_encode_buffer_long2(gfp: *mut lame_global_flags,
386                                    buffer_l: *mut c_long,
387                                    buffer_r: *mut c_long,
388                                    nsamples: c_int,
389                                    mp3buf: *mut c_uchar,
390                                    mp3buf_size: c_int)
391                                    -> c_int;
392    pub fn lame_encode_buffer_int(gfp: *mut lame_global_flags,
393                                  buffer_l: *mut c_int,
394                                  buffer_r: *mut c_int,
395                                  nsamples: c_int,
396                                  mp3buf: *mut c_uchar,
397                                  mp3buf_size: c_int)
398                                  -> c_int;
399    pub fn lame_encode_flush(gfp: *mut lame_global_flags,
400                             mp3buf: *mut c_uchar,
401                             size: c_int)
402                             -> c_int;
403    pub fn lame_encode_flush_nogap(gfp: *mut lame_global_flags,
404                                   mp3buf: *mut c_uchar,
405                                   size: c_int)
406                                   -> c_int;
407    pub fn lame_init_bitstream(gfp: *mut lame_global_flags) -> c_int;
408    pub fn lame_bitrate_hist(gfp: *const lame_global_flags, bitrate_count: *mut c_int);
409    pub fn lame_bitrate_kbps(gfp: *const lame_global_flags, bitrate_kbps: *mut c_int);
410    pub fn lame_stereo_mode_hist(gfp: *const lame_global_flags, stereo_mode_count: *mut c_int);
411    pub fn lame_bitrate_stereo_mode_hist(gfp: *const lame_global_flags,
412                                         bitrate_stmode_count: *mut [c_int; 4usize]);
413    pub fn lame_block_type_hist(gfp: *const lame_global_flags, btype_count: *mut c_int);
414    pub fn lame_bitrate_block_type_hist(gfp: *const lame_global_flags,
415                                        bitrate_btype_count: *mut [c_int; 6usize]);
416    pub fn lame_mp3_tags_fid(arg1: *mut lame_global_flags, fid: *mut FILE);
417    pub fn lame_get_lametag_frame(arg1: *const lame_global_flags,
418                                  buffer: *mut c_uchar,
419                                  size: size_t)
420                                  -> size_t;
421    pub fn lame_close(arg1: *mut lame_global_flags) -> c_int;
422    pub fn hip_decode_init() -> hip_t;
423    pub fn hip_decode_exit(gfp: hip_t) -> c_int;
424    // TODO: va_list support
425    // pub fn hip_set_errorf(gfp: hip_t, f: lame_report_function);
426    // pub fn hip_set_debugf(gfp: hip_t, f: lame_report_function);
427    // pub fn hip_set_msgf(gfp: hip_t, f: lame_report_function);
428    pub fn hip_decode(gfp: hip_t,
429                      mp3buf: *mut c_uchar,
430                      len: size_t,
431                      pcm_l: *mut c_short,
432                      pcm_r: *mut c_short)
433                      -> c_int;
434    pub fn hip_decode_headers(gfp: hip_t,
435                              mp3buf: *mut c_uchar,
436                              len: size_t,
437                              pcm_l: *mut c_short,
438                              pcm_r: *mut c_short,
439                              mp3data: *mut mp3data_struct)
440                              -> c_int;
441    pub fn hip_decode1(gfp: hip_t,
442                       mp3buf: *mut c_uchar,
443                       len: size_t,
444                       pcm_l: *mut c_short,
445                       pcm_r: *mut c_short)
446                       -> c_int;
447    pub fn hip_decode1_headers(gfp: hip_t,
448                               mp3buf: *mut c_uchar,
449                               len: size_t,
450                               pcm_l: *mut c_short,
451                               pcm_r: *mut c_short,
452                               mp3data: *mut mp3data_struct)
453                               -> c_int;
454    pub fn hip_decode1_headersB(gfp: hip_t,
455                                mp3buf: *mut c_uchar,
456                                len: size_t,
457                                pcm_l: *mut c_short,
458                                pcm_r: *mut c_short,
459                                mp3data: *mut mp3data_struct,
460                                enc_delay: *mut c_int,
461                                enc_padding: *mut c_int)
462                                -> c_int;
463    pub fn id3tag_genre_list(handler:
464                                 ::std::option::Option<unsafe extern "C" fn(arg1:
465                                                                                c_int,
466                                                                            arg2:
467                                                                                *const c_char,
468                                                                            arg3:
469                                                                                *mut c_void)>,
470                             cookie: *mut c_void);
471    pub fn id3tag_init(gfp: lame_t);
472    pub fn id3tag_add_v2(gfp: lame_t);
473    pub fn id3tag_v1_only(gfp: lame_t);
474    pub fn id3tag_v2_only(gfp: lame_t);
475    pub fn id3tag_space_v1(gfp: lame_t);
476    pub fn id3tag_pad_v2(gfp: lame_t);
477    pub fn id3tag_set_pad(gfp: lame_t, n: size_t);
478    pub fn id3tag_set_title(gfp: lame_t, title: *const c_char);
479    pub fn id3tag_set_artist(gfp: lame_t, artist: *const c_char);
480    pub fn id3tag_set_album(gfp: lame_t, album: *const c_char);
481    pub fn id3tag_set_year(gfp: lame_t, year: *const c_char);
482    pub fn id3tag_set_comment(gfp: lame_t, comment: *const c_char);
483    pub fn id3tag_set_track(gfp: lame_t, track: *const c_char) -> c_int;
484    pub fn id3tag_set_genre(gfp: lame_t, genre: *const c_char) -> c_int;
485    pub fn id3tag_set_fieldvalue(gfp: lame_t, fieldvalue: *const c_char) -> c_int;
486    pub fn id3tag_set_albumart(gfp: lame_t, image: *const c_char, size: size_t) -> c_int;
487    pub fn lame_get_id3v1_tag(gfp: lame_t, buffer: *mut c_uchar, size: size_t) -> size_t;
488    pub fn lame_get_id3v2_tag(gfp: lame_t, buffer: *mut c_uchar, size: size_t) -> size_t;
489    pub fn lame_set_write_id3tag_automatic(gfp: *mut lame_global_flags, arg1: c_int);
490    pub fn lame_get_write_id3tag_automatic(gfp: *const lame_global_flags) -> c_int;
491    pub fn id3tag_set_textinfo_latin1(gfp: lame_t,
492                                      id: *const c_char,
493                                      text: *const c_char)
494                                      -> c_int;
495    pub fn id3tag_set_comment_latin1(gfp: lame_t,
496                                     lang: *const c_char,
497                                     desc: *const c_char,
498                                     text: *const c_char)
499                                     -> c_int;
500    pub fn id3tag_set_fieldvalue_utf16(gfp: lame_t, fieldvalue: *const c_ushort) -> c_int;
501    pub fn id3tag_set_textinfo_utf16(gfp: lame_t,
502                                     id: *const c_char,
503                                     text: *const c_ushort)
504                                     -> c_int;
505    pub fn id3tag_set_comment_utf16(gfp: lame_t,
506                                    lang: *const c_char,
507                                    desc: *const c_ushort,
508                                    text: *const c_ushort)
509                                    -> c_int;
510    pub fn lame_get_bitrate(mpeg_version: c_int, table_index: c_int) -> c_int;
511    pub fn lame_get_samplerate(mpeg_version: c_int, table_index: c_int) -> c_int;
512}