#ifndef MPG123_INTERFACE_DEF_H
#define MPG123_INTERFACE_DEF_H

/*
** This file was machine generated by idltool 53.1.
** Do not edit
*/ 

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_EXEC_H
#include <exec/exec.h>
#endif
#ifndef EXEC_INTERFACES_H
#include <exec/interfaces.h>
#endif

#ifndef LIBRARIES_MPG123_H
#include <libraries/mpg123.h>
#endif

#ifdef __cplusplus
#ifdef __USE_AMIGAOS_NAMESPACE__
namespace AmigaOS {
#endif
extern "C" {
#endif

struct Mpg123IFace
{
	struct InterfaceData Data;

	size_t APICALL (*Obtain)(struct Mpg123IFace *Self);
	size_t APICALL (*Release)(struct Mpg123IFace *Self);
	void APICALL (*Expunge)(struct Mpg123IFace *Self);
	struct Interface * APICALL (*Clone)(struct Mpg123IFace *Self);
	mpg123_handle * APICALL (*mpg123_new)(struct Mpg123IFace *Self, const char * decoder, int * error);
	void APICALL (*mpg123_delete)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_param)(struct Mpg123IFace *Self, mpg123_handle * mh, enum mpg123_parms type, long value, double fvalue);
	int APICALL (*mpg123_getparam)(struct Mpg123IFace *Self, mpg123_handle * mh, enum mpg123_parms type, long * val, double * fval);
	int APICALL (*mpg123_feature)(struct Mpg123IFace *Self, enum mpg123_feature_set key);
	const char * APICALL (*mpg123_plain_strerror)(struct Mpg123IFace *Self, int errcode);
	const char * APICALL (*mpg123_strerror)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_errcode)(struct Mpg123IFace *Self, mpg123_handle * mh);
	const char ** APICALL (*mpg123_decoders)(struct Mpg123IFace *Self);
	const char ** APICALL (*mpg123_supported_decoders)(struct Mpg123IFace *Self);
	int APICALL (*mpg123_decoder)(struct Mpg123IFace *Self, mpg123_handle * mh, const char * decoder_name);
	const char * APICALL (*mpg123_current_decoder)(struct Mpg123IFace *Self, mpg123_handle * mh);
	void APICALL (*mpg123_rates)(struct Mpg123IFace *Self, const long ** list, size_t * number);
	void APICALL (*mpg123_encodings)(struct Mpg123IFace *Self, const int ** list, size_t * number);
	int APICALL (*mpg123_encsize)(struct Mpg123IFace *Self, int encoding);
	int APICALL (*mpg123_format_none)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_format_all)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_format)(struct Mpg123IFace *Self, mpg123_handle * mh, long rate, int channels, int encodings);
	int APICALL (*mpg123_format_support)(struct Mpg123IFace *Self, mpg123_handle * mh, long rate, int encoding);
	int APICALL (*mpg123_getformat)(struct Mpg123IFace *Self, mpg123_handle * mh, long * rate, int * channels, int * encoding);
	int APICALL (*mpg123_open)(struct Mpg123IFace *Self, mpg123_handle * mh, const char * path);
	int APICALL (*mpg123_open_fd)(struct Mpg123IFace *Self, mpg123_handle * mh, int fd);
	int APICALL (*mpg123_open_handle)(struct Mpg123IFace *Self, mpg123_handle * mh, APTR iohandle);
	int APICALL (*mpg123_open_feed)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_close)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_read)(struct Mpg123IFace *Self, mpg123_handle * mh, unsigned char * outmemory, size_t outmemsize, size_t * done);
	int APICALL (*mpg123_feed)(struct Mpg123IFace *Self, mpg123_handle * mh, const unsigned char * in, size_t size);
	int APICALL (*mpg123_decode)(struct Mpg123IFace *Self, mpg123_handle * mh, const unsigned char * inmemory, size_t inmemsize, unsigned char * outmemory, size_t outmemsize, size_t * done);
	int APICALL (*mpg123_decode_frame)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t * num, unsigned char ** audio, size_t * bytes);
	int APICALL (*mpg123_framebyframe_decode)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t * num, unsigned char ** audio, size_t * bytes);
	int APICALL (*mpg123_framebyframe_next)(struct Mpg123IFace *Self, mpg123_handle * mh);
	off_t APICALL (*mpg123_tell)(struct Mpg123IFace *Self, mpg123_handle * mh);
	off_t APICALL (*mpg123_tellframe)(struct Mpg123IFace *Self, mpg123_handle * mh);
	off_t APICALL (*mpg123_tell_stream)(struct Mpg123IFace *Self, mpg123_handle * mh);
	off_t APICALL (*mpg123_seek)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t sampleoff, int whence);
	off_t APICALL (*mpg123_feedseek)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t sampleoff, int whence, off_t * input_offset);
	off_t APICALL (*mpg123_seek_frame)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t frameoff, int whence);
	off_t APICALL (*mpg123_timeframe)(struct Mpg123IFace *Self, mpg123_handle * mh, double sec);
	int APICALL (*mpg123_index)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t ** offsets, off_t * step, size_t * fill);
	int APICALL (*mpg123_set_index)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t * offsets, off_t step, size_t fill);
	int APICALL (*mpg123_eq)(struct Mpg123IFace *Self, mpg123_handle * mh, enum mpg123_channels channel, int band, double val);
	double APICALL (*mpg123_geteq)(struct Mpg123IFace *Self, mpg123_handle * mh, enum mpg123_channels channel, int band);
	int APICALL (*mpg123_reset_eq)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_volume)(struct Mpg123IFace *Self, mpg123_handle * mh, double vol);
	int APICALL (*mpg123_volume_change)(struct Mpg123IFace *Self, mpg123_handle * mh, double change);
	int APICALL (*mpg123_getvolume)(struct Mpg123IFace *Self, mpg123_handle * mh, double * base, double * really, double * rva_db);
	int APICALL (*mpg123_info)(struct Mpg123IFace *Self, mpg123_handle * mh, struct mpg123_frameinfo * mi);
	size_t APICALL (*mpg123_safe_buffer)(struct Mpg123IFace *Self);
	int APICALL (*mpg123_scan)(struct Mpg123IFace *Self, mpg123_handle * mh);
	off_t APICALL (*mpg123_length)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_set_filesize)(struct Mpg123IFace *Self, mpg123_handle * mh, off_t size);
	double APICALL (*mpg123_tpf)(struct Mpg123IFace *Self, mpg123_handle * mh);
	long APICALL (*mpg123_clip)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_getstate)(struct Mpg123IFace *Self, mpg123_handle * mh, enum mpg123_state key, long * val, double * fval);
	void APICALL (*mpg123_init_string)(struct Mpg123IFace *Self, mpg123_string * sb);
	void APICALL (*mpg123_free_string)(struct Mpg123IFace *Self, mpg123_string * sb);
	int APICALL (*mpg123_resize_string)(struct Mpg123IFace *Self, mpg123_string * sb, size_t news);
	int APICALL (*mpg123_grow_string)(struct Mpg123IFace *Self, mpg123_string * sb, size_t news);
	int APICALL (*mpg123_copy_string)(struct Mpg123IFace *Self, mpg123_string * sb, mpg123_string * to);
	int APICALL (*mpg123_add_string)(struct Mpg123IFace *Self, mpg123_string * sb, const char * stuff);
	int APICALL (*mpg123_add_substring)(struct Mpg123IFace *Self, mpg123_string * sb, const char * stuff, size_t from, size_t count);
	int APICALL (*mpg123_set_string)(struct Mpg123IFace *Self, mpg123_string * sb, const char * stuff);
	int APICALL (*mpg123_set_substring)(struct Mpg123IFace *Self, mpg123_string * sb, const char * stuff, size_t from, size_t count);
	size_t APICALL (*mpg123_strlen)(struct Mpg123IFace *Self, mpg123_string * sb, int utf8);
	enum mpg123_text_encoding APICALL (*mpg123_enc_from_id3)(struct Mpg123IFace *Self, unsigned char id3_enc_byte);
	int APICALL (*mpg123_store_utf8)(struct Mpg123IFace *Self, mpg123_string * sb, enum mpg123_text_encoding enc, const unsigned char * source, size_t source_size);
	int APICALL (*mpg123_meta_check)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_id3)(struct Mpg123IFace *Self, mpg123_handle * mh, mpg123_id3v1 ** v1, mpg123_id3v2 ** v2);
	int APICALL (*mpg123_icy)(struct Mpg123IFace *Self, mpg123_handle * mh, char ** icy_meta);
	char * APICALL (*mpg123_icy2utf8)(struct Mpg123IFace *Self, const char * icy_text);
	mpg123_handle * APICALL (*mpg123_parnew)(struct Mpg123IFace *Self, mpg123_pars * mp, const char * decoder, int * error);
	mpg123_pars * APICALL (*mpg123_new_pars)(struct Mpg123IFace *Self, int * error);
	void APICALL (*mpg123_delete_pars)(struct Mpg123IFace *Self, mpg123_pars * mp);
	int APICALL (*mpg123_fmt_none)(struct Mpg123IFace *Self, mpg123_pars * mp);
	int APICALL (*mpg123_fmt_all)(struct Mpg123IFace *Self, mpg123_pars * mp);
	int APICALL (*mpg123_fmt)(struct Mpg123IFace *Self, mpg123_pars * mp, long rate, int channels, int encodings);
	int APICALL (*mpg123_fmt_support)(struct Mpg123IFace *Self, mpg123_pars * mp, long rate, int encoding);
	int APICALL (*mpg123_par)(struct Mpg123IFace *Self, mpg123_pars * mp, enum mpg123_parms type, long value, double fvalue);
	int APICALL (*mpg123_getpar)(struct Mpg123IFace *Self, mpg123_pars * mp, enum mpg123_parms type, long * val, double * fval);
	int APICALL (*mpg123_replace_buffer)(struct Mpg123IFace *Self, mpg123_handle * mh, unsigned char * data, size_t size);
	size_t APICALL (*mpg123_outblock)(struct Mpg123IFace *Self, mpg123_handle * mh);
	int APICALL (*mpg123_replace_reader)(struct Mpg123IFace *Self, mpg123_handle * mh, mpg123_read_callback r_read, mpg123_lseek_callback r_lseek);
	int APICALL (*mpg123_replace_reader_handle)(struct Mpg123IFace *Self, mpg123_handle * mh, mpg123_read_handle_callback r_read, mpg123_lseek_handle_callback r_lseek, mpg123_cleanup_callback cleanup);
};

#ifdef __cplusplus
}
#ifdef __USE_AMIGAOS_NAMESPACE__
}
#endif
#endif

#endif /* MPG123_INTERFACE_DEF_H */
