Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmpg123.h
Go to the documentation of this file.
00001 /* 00002 libmpg123: MPEG Audio Decoder library (version 1.12.3) 00003 00004 copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 00005 see COPYING and AUTHORS files in distribution or http://mpg123.org 00006 */ 00007 00008 #ifndef MPG123_LIB_H 00009 #define MPG123_LIB_H 00010 00013 /* A macro to check at compile time which set of API functions to expect. 00014 This should be incremented at least each time a new symbol is added to the header. */ 00015 #define MPG123_API_VERSION 25 00016 00017 /* These aren't actually in use... seems to work without using libtool. */ 00018 #ifdef BUILD_MPG123_DLL 00019 /* The dll exports. */ 00020 #define EXPORT __declspec(dllexport) 00021 #else 00022 #ifdef LINK_MPG123_DLL 00023 /* The exe imports. */ 00024 #define EXPORT __declspec(dllimport) 00025 #else 00026 /* Nothing on normal/UNIX builds */ 00027 #define EXPORT 00028 #endif 00029 #endif 00030 00031 #ifndef MPG123_NO_CONFIGURE /* Enable use of this file without configure. */ 00032 #include <stdlib.h> 00033 #include <sys/types.h> 00034 00035 /* Simplified large file handling. 00036 I used to have a check here that prevents building for a library with conflicting large file setup 00037 (application that uses 32 bit offsets with library that uses 64 bits). 00038 While that was perfectly fine in an environment where there is one incarnation of the library, 00039 it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the 00040 correct header matching the 32 bit library (where large files need explicit support) or 00041 the 64 bit library (where there is no distinction). 00042 00043 New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support, 00044 and thus functions with added suffix (mpg123_open_64). 00045 Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when 00046 building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now. 00047 Link failure is not the expected outcome of any half-sane usage anymore. 00048 00049 More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names. 00050 */ 00051 00052 /* 00053 Now, the renaming of large file aware functions. 00054 By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME. 00055 */ 00056 #if (!defined MPG123_NO_LARGENAME) && ((defined _FILE_OFFSET_BITS) || (defined MPG123_LARGESUFFIX)) 00057 00058 /* Need some trickery to concatenate the value(s) of the given macro(s). */ 00059 00060 #define MPG123_MACROCAT_REALLY(a, b) a ## b 00061 #define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b) 00062 #ifndef MPG123_LARGESUFFIX 00063 #define MPG123_LARGESUFFIX MPG123_MACROCAT(_, _FILE_OFFSET_BITS) 00064 #endif 00065 #define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX) 00066 00067 #define mpg123_open MPG123_LARGENAME(mpg123_open) 00068 #define mpg123_open_fd MPG123_LARGENAME(mpg123_open_fd) 00069 #define mpg123_open_handle MPG123_LARGENAME(mpg123_open_handle) 00070 #define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode) 00071 #define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame) 00072 #define mpg123_tell MPG123_LARGENAME(mpg123_tell) 00073 #define mpg123_tellframe MPG123_LARGENAME(mpg123_tellframe) 00074 #define mpg123_tell_stream MPG123_LARGENAME(mpg123_tell_stream) 00075 #define mpg123_seek MPG123_LARGENAME(mpg123_seek) 00076 #define mpg123_feedseek MPG123_LARGENAME(mpg123_feedseek) 00077 #define mpg123_seek_frame MPG123_LARGENAME(mpg123_seek_frame) 00078 #define mpg123_timeframe MPG123_LARGENAME(mpg123_timeframe) 00079 #define mpg123_index MPG123_LARGENAME(mpg123_index) 00080 #define mpg123_set_index MPG123_LARGENAME(mpg123_set_index) 00081 #define mpg123_position MPG123_LARGENAME(mpg123_position) 00082 #define mpg123_length MPG123_LARGENAME(mpg123_length) 00083 #define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize) 00084 #define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader) 00085 #define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle) 00086 00087 #endif /* largefile hackery */ 00088 00089 #endif /* MPG123_NO_CONFIGURE */ 00090 00091 #ifdef __cplusplus 00092 extern "C" { 00093 #endif 00094 00105 struct mpg123_handle_struct; 00106 00110 typedef struct mpg123_handle_struct mpg123_handle; 00111 00117 EXPORT int mpg123_init(void); 00118 00121 EXPORT void mpg123_exit(void); 00122 00129 EXPORT mpg123_handle *mpg123_new(const char* decoder, int *error); 00130 00132 EXPORT void mpg123_delete(mpg123_handle *mh); 00133 00135 enum mpg123_parms 00136 { 00137 MPG123_VERBOSE, 00138 MPG123_FLAGS, 00139 MPG123_ADD_FLAGS, 00140 MPG123_FORCE_RATE, 00141 MPG123_DOWN_SAMPLE, 00142 MPG123_RVA, 00143 MPG123_DOWNSPEED, 00144 MPG123_UPSPEED, 00145 MPG123_START_FRAME, 00146 MPG123_DECODE_FRAMES, 00147 MPG123_ICY_INTERVAL, 00148 MPG123_OUTSCALE, 00149 MPG123_TIMEOUT, 00150 MPG123_REMOVE_FLAGS, 00151 MPG123_RESYNC_LIMIT, 00152 MPG123_INDEX_SIZE 00153 ,MPG123_PREFRAMES 00154 }; 00155 00157 enum mpg123_param_flags 00158 { 00159 MPG123_FORCE_MONO = 0x7 00160 ,MPG123_MONO_LEFT = 0x1 00161 ,MPG123_MONO_RIGHT = 0x2 00162 ,MPG123_MONO_MIX = 0x4 00163 ,MPG123_FORCE_STEREO = 0x8 00164 ,MPG123_FORCE_8BIT = 0x10 00165 ,MPG123_QUIET = 0x20 00166 ,MPG123_GAPLESS = 0x40 00167 ,MPG123_NO_RESYNC = 0x80 00168 ,MPG123_SEEKBUFFER = 0x100 00169 ,MPG123_FUZZY = 0x200 00170 ,MPG123_FORCE_FLOAT = 0x400 00171 ,MPG123_PLAIN_ID3TEXT = 0x800 00172 ,MPG123_IGNORE_STREAMLENGTH = 0x1000 00173 }; 00174 00176 enum mpg123_param_rva 00177 { 00178 MPG123_RVA_OFF = 0 00179 ,MPG123_RVA_MIX = 1 00180 ,MPG123_RVA_ALBUM = 2 00181 ,MPG123_RVA_MAX = MPG123_RVA_ALBUM 00182 }; 00183 00184 /* TODO: Assess the possibilities and troubles of changing parameters during playback. */ 00185 00188 EXPORT int mpg123_param(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue); 00189 00192 EXPORT int mpg123_getparam(mpg123_handle *mh, enum mpg123_parms type, long *val, double *fval); 00193 00195 enum mpg123_feature_set 00196 { 00197 MPG123_FEATURE_ABI_UTF8OPEN = 0 00198 ,MPG123_FEATURE_OUTPUT_8BIT 00199 ,MPG123_FEATURE_OUTPUT_16BIT 00200 ,MPG123_FEATURE_OUTPUT_32BIT 00201 ,MPG123_FEATURE_INDEX 00202 ,MPG123_FEATURE_PARSE_ID3V2 00203 ,MPG123_FEATURE_DECODE_LAYER1 00204 ,MPG123_FEATURE_DECODE_LAYER2 00205 ,MPG123_FEATURE_DECODE_LAYER3 00206 ,MPG123_FEATURE_DECODE_ACCURATE 00207 ,MPG123_FEATURE_DECODE_DOWNSAMPLE 00208 ,MPG123_FEATURE_DECODE_NTOM 00209 ,MPG123_FEATURE_PARSE_ICY 00210 ,MPG123_FEATURE_TIMEOUT_READ 00211 }; 00212 00214 EXPORT int mpg123_feature(const enum mpg123_feature_set key); 00215 00216 /* @} */ 00217 00218 00232 enum mpg123_errors 00233 { 00234 MPG123_DONE=-12, 00235 MPG123_NEW_FORMAT=-11, 00236 MPG123_NEED_MORE=-10, 00237 MPG123_ERR=-1, 00238 MPG123_OK=0, 00239 MPG123_BAD_OUTFORMAT, 00240 MPG123_BAD_CHANNEL, 00241 MPG123_BAD_RATE, 00242 MPG123_ERR_16TO8TABLE, 00243 MPG123_BAD_PARAM, 00244 MPG123_BAD_BUFFER, 00245 MPG123_OUT_OF_MEM, 00246 MPG123_NOT_INITIALIZED, 00247 MPG123_BAD_DECODER, 00248 MPG123_BAD_HANDLE, 00249 MPG123_NO_BUFFERS, 00250 MPG123_BAD_RVA, 00251 MPG123_NO_GAPLESS, 00252 MPG123_NO_SPACE, 00253 MPG123_BAD_TYPES, 00254 MPG123_BAD_BAND, 00255 MPG123_ERR_NULL, 00256 MPG123_ERR_READER, 00257 MPG123_NO_SEEK_FROM_END, 00258 MPG123_BAD_WHENCE, 00259 MPG123_NO_TIMEOUT, 00260 MPG123_BAD_FILE, 00261 MPG123_NO_SEEK, 00262 MPG123_NO_READER, 00263 MPG123_BAD_PARS, 00264 MPG123_BAD_INDEX_PAR, 00265 MPG123_OUT_OF_SYNC, 00266 MPG123_RESYNC_FAIL, 00267 MPG123_NO_8BIT, 00268 MPG123_BAD_ALIGN, 00269 MPG123_NULL_BUFFER, 00270 MPG123_NO_RELSEEK, 00271 MPG123_NULL_POINTER, 00272 MPG123_BAD_KEY, 00273 MPG123_NO_INDEX, 00274 MPG123_INDEX_FAIL, 00275 MPG123_BAD_DECODER_SETUP, 00276 MPG123_MISSING_FEATURE 00277 ,MPG123_BAD_VALUE 00278 ,MPG123_LSEEK_FAILED 00279 ,MPG123_BAD_CUSTOM_IO 00280 ,MPG123_LFS_OVERFLOW 00281 }; 00282 00284 EXPORT const char* mpg123_plain_strerror(int errcode); 00285 00290 EXPORT const char* mpg123_strerror(mpg123_handle *mh); 00291 00293 EXPORT int mpg123_errcode(mpg123_handle *mh); 00294 00307 EXPORT const char **mpg123_decoders(void); 00308 00310 EXPORT const char **mpg123_supported_decoders(void); 00311 00313 EXPORT int mpg123_decoder(mpg123_handle *mh, const char* decoder_name); 00314 00320 EXPORT const char* mpg123_current_decoder(mpg123_handle *mh); 00321 00345 enum mpg123_enc_enum 00346 { 00347 MPG123_ENC_8 = 0x00f 00348 ,MPG123_ENC_16 = 0x040 00349 ,MPG123_ENC_32 = 0x100 00350 ,MPG123_ENC_SIGNED = 0x080 00351 ,MPG123_ENC_FLOAT = 0xe00 00352 ,MPG123_ENC_SIGNED_16 = (MPG123_ENC_16|MPG123_ENC_SIGNED|0x10) 00353 ,MPG123_ENC_UNSIGNED_16 = (MPG123_ENC_16|0x20) 00354 ,MPG123_ENC_UNSIGNED_8 = 0x01 00355 ,MPG123_ENC_SIGNED_8 = (MPG123_ENC_SIGNED|0x02) 00356 ,MPG123_ENC_ULAW_8 = 0x04 00357 ,MPG123_ENC_ALAW_8 = 0x08 00358 ,MPG123_ENC_SIGNED_32 = MPG123_ENC_32|MPG123_ENC_SIGNED|0x1000 00359 ,MPG123_ENC_UNSIGNED_32 = MPG123_ENC_32|0x2000 00360 ,MPG123_ENC_FLOAT_32 = 0x200 00361 ,MPG123_ENC_FLOAT_64 = 0x400 00362 ,MPG123_ENC_ANY = ( MPG123_ENC_SIGNED_16 | MPG123_ENC_UNSIGNED_16 | MPG123_ENC_UNSIGNED_8 00363 | MPG123_ENC_SIGNED_8 | MPG123_ENC_ULAW_8 | MPG123_ENC_ALAW_8 00364 | MPG123_ENC_SIGNED_32 | MPG123_ENC_UNSIGNED_32 00365 | MPG123_ENC_FLOAT_32 | MPG123_ENC_FLOAT_64 ) 00366 }; 00367 00369 enum mpg123_channelcount 00370 { 00371 MPG123_MONO = 1 00372 ,MPG123_STEREO = 2 00373 }; 00374 00380 EXPORT void mpg123_rates(const long **list, size_t *number); 00381 00386 EXPORT void mpg123_encodings(const int **list, size_t *number); 00387 00390 EXPORT int mpg123_format_none(mpg123_handle *mh); 00391 00394 EXPORT int mpg123_format_all(mpg123_handle *mh); 00395 00402 EXPORT int mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings); 00403 00408 EXPORT int mpg123_format_support(mpg123_handle *mh, long rate, int encoding); 00409 00411 EXPORT int mpg123_getformat(mpg123_handle *mh, long *rate, int *channels, int *encoding); 00412 00423 /* reading samples / triggering decoding, possible return values: */ 00430 EXPORT int mpg123_open(mpg123_handle *mh, const char *path); 00431 00435 EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd); 00436 00441 EXPORT int mpg123_open_handle(mpg123_handle *mh, void *iohandle); 00442 00446 EXPORT int mpg123_open_feed(mpg123_handle *mh); 00447 00449 EXPORT int mpg123_close(mpg123_handle *mh); 00450 00456 EXPORT int mpg123_read(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done); 00457 00463 EXPORT int mpg123_feed(mpg123_handle *mh, const unsigned char *in, size_t size); 00464 00479 EXPORT int mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, unsigned char *outmemory, size_t outmemsize, size_t *done); 00480 00487 EXPORT int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); 00488 00496 EXPORT int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); 00497 00502 EXPORT int mpg123_framebyframe_next(mpg123_handle *mh); 00503 00528 EXPORT off_t mpg123_tell(mpg123_handle *mh); 00529 00531 EXPORT off_t mpg123_tellframe(mpg123_handle *mh); 00532 00534 EXPORT off_t mpg123_tell_stream(mpg123_handle *mh); 00535 00539 EXPORT off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence); 00540 00546 EXPORT off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset); 00547 00551 EXPORT off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence); 00552 00556 EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec); 00557 00564 EXPORT int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill); 00565 00572 EXPORT int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill); 00573 00580 EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left); 00581 00590 enum mpg123_channels 00591 { 00592 MPG123_LEFT=0x1 00593 ,MPG123_RIGHT=0x2 00594 ,MPG123_LR=0x3 00595 }; 00596 00601 EXPORT int mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val); 00602 00607 EXPORT double mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band); 00608 00610 EXPORT int mpg123_reset_eq(mpg123_handle *mh); 00611 00614 EXPORT int mpg123_volume(mpg123_handle *mh, double vol); 00615 00617 EXPORT int mpg123_volume_change(mpg123_handle *mh, double change); 00618 00623 EXPORT int mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db); 00624 00625 /* TODO: Set some preamp in addition / to replace internal RVA handling? */ 00626 00636 enum mpg123_vbr { 00637 MPG123_CBR=0, 00638 MPG123_VBR, 00639 MPG123_ABR 00640 }; 00641 00643 enum mpg123_version { 00644 MPG123_1_0=0, 00645 MPG123_2_0, 00646 MPG123_2_5 00647 }; 00648 00649 00652 enum mpg123_mode { 00653 MPG123_M_STEREO=0, 00654 MPG123_M_JOINT, 00655 MPG123_M_DUAL, 00656 MPG123_M_MONO 00657 }; 00658 00659 00661 enum mpg123_flags { 00662 MPG123_CRC=0x1, 00663 MPG123_COPYRIGHT=0x2, 00664 MPG123_PRIVATE=0x4, 00665 MPG123_ORIGINAL=0x8 00666 }; 00667 00669 struct mpg123_frameinfo 00670 { 00671 enum mpg123_version version; 00672 int layer; 00673 long rate; 00674 enum mpg123_mode mode; 00675 int mode_ext; 00676 int framesize; 00677 enum mpg123_flags flags; 00678 int emphasis; 00679 int bitrate; 00680 int abr_rate; 00681 enum mpg123_vbr vbr; 00682 }; 00683 00685 EXPORT int mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi); 00686 00688 EXPORT size_t mpg123_safe_buffer(void); 00689 00696 EXPORT int mpg123_scan(mpg123_handle *mh); 00697 00700 EXPORT off_t mpg123_length(mpg123_handle *mh); 00701 00705 EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size); 00706 00708 EXPORT double mpg123_tpf(mpg123_handle *mh); 00709 00711 EXPORT long mpg123_clip(mpg123_handle *mh); 00712 00713 00715 enum mpg123_state 00716 { 00717 MPG123_ACCURATE = 1 00718 }; 00719 00726 EXPORT int mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval); 00727 00741 typedef struct 00742 { 00743 char* p; 00744 size_t size; 00745 size_t fill; 00746 } mpg123_string; 00747 00749 EXPORT void mpg123_init_string(mpg123_string* sb); 00750 00752 EXPORT void mpg123_free_string(mpg123_string* sb); 00753 00756 EXPORT int mpg123_resize_string(mpg123_string* sb, size_t news); 00757 00762 EXPORT int mpg123_grow_string(mpg123_string* sb, size_t news); 00763 00766 EXPORT int mpg123_copy_string(mpg123_string* from, mpg123_string* to); 00767 00770 EXPORT int mpg123_add_string(mpg123_string* sb, const char* stuff); 00771 00776 EXPORT int mpg123_add_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); 00777 00780 EXPORT int mpg123_set_string(mpg123_string* sb, const char* stuff); 00781 00786 EXPORT int mpg123_set_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); 00787 00789 enum mpg123_text_encoding 00790 { 00791 mpg123_text_unknown = 0 00792 ,mpg123_text_utf8 = 1 00793 ,mpg123_text_latin1 = 2 00794 ,mpg123_text_icy = 3 00795 ,mpg123_text_cp1252 = 4 00796 ,mpg123_text_utf16 = 5 00800 ,mpg123_text_utf16bom = 6 00801 ,mpg123_text_utf16be = 7 00805 ,mpg123_text_max = 7 00806 }; 00807 00809 enum mpg123_id3_enc 00810 { 00811 mpg123_id3_latin1 = 0 00812 ,mpg123_id3_utf16bom = 1 00813 ,mpg123_id3_utf16be = 2 00814 ,mpg123_id3_utf8 = 3 00815 ,mpg123_id3_enc_max = 3 00816 }; 00817 00819 EXPORT enum mpg123_text_encoding mpg123_enc_from_id3(unsigned char id3_enc_byte); 00820 00831 EXPORT int mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_encoding enc, const unsigned char *source, size_t source_size); 00832 00837 typedef struct 00838 { 00839 char lang[3]; 00840 char id[4]; 00841 mpg123_string description; 00842 mpg123_string text; 00843 } mpg123_text; 00844 00850 typedef struct 00851 { 00852 unsigned char version; 00853 mpg123_string *title; 00854 mpg123_string *artist; 00855 mpg123_string *album; 00856 mpg123_string *year; 00857 mpg123_string *genre; 00858 mpg123_string *comment; 00859 /* Encountered ID3v2 fields are appended to these lists. 00860 There can be multiple occurences, the pointers above always point to the last encountered data. */ 00861 mpg123_text *comment_list; 00862 size_t comments; 00863 mpg123_text *text; 00864 size_t texts; 00865 mpg123_text *extra; 00866 size_t extras; 00867 } mpg123_id3v2; 00868 00873 typedef struct 00874 { 00875 char tag[3]; 00876 char title[30]; 00877 char artist[30]; 00878 char album[30]; 00879 char year[4]; 00880 char comment[30]; 00881 unsigned char genre; 00882 } mpg123_id3v1; 00883 00884 #define MPG123_ID3 0x3 00885 #define MPG123_NEW_ID3 0x1 00886 #define MPG123_ICY 0xc 00887 #define MPG123_NEW_ICY 0x4 00891 EXPORT int mpg123_meta_check(mpg123_handle *mh); /* On error (no valid handle) just 0 is returned. */ 00892 00896 EXPORT int mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2); 00897 00900 EXPORT int mpg123_icy(mpg123_handle *mh, char **icy_meta); /* same for ICY meta string */ 00901 00906 EXPORT char* mpg123_icy2utf8(const char* icy_text); 00907 00908 00909 /* @} */ 00910 00911 00928 struct mpg123_pars_struct; 00929 00931 typedef struct mpg123_pars_struct mpg123_pars; 00932 00934 EXPORT mpg123_handle *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error); 00935 00937 EXPORT mpg123_pars *mpg123_new_pars(int *error); 00938 00940 EXPORT void mpg123_delete_pars(mpg123_pars* mp); 00941 00944 EXPORT int mpg123_fmt_none(mpg123_pars *mp); 00945 00948 EXPORT int mpg123_fmt_all(mpg123_pars *mp); 00949 00956 EXPORT int mpg123_fmt(mpg123_pars *mh, long rate, int channels, int encodings); /* 0 is good, -1 is error */ 00957 00962 EXPORT int mpg123_fmt_support(mpg123_pars *mh, long rate, int encoding); 00963 00966 EXPORT int mpg123_par(mpg123_pars *mp, enum mpg123_parms type, long value, double fvalue); 00967 00970 EXPORT int mpg123_getpar(mpg123_pars *mp, enum mpg123_parms type, long *val, double *fval); 00971 00972 /* @} */ 00973 00974 00982 EXPORT int mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size); 00983 00986 EXPORT size_t mpg123_outblock(mpg123_handle *mh); 00987 00995 EXPORT int mpg123_replace_reader(mpg123_handle *mh, long (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int)); 00996 01006 EXPORT int mpg123_replace_reader_handle(mpg123_handle *mh, long (*r_read) (void *, void *, size_t), off_t (*r_lseek)(void *, off_t, int), void (*cleanup)(void*)); 01007 01008 /* @} */ 01009 01010 01011 #ifdef __cplusplus 01012 } 01013 #endif 01014 01015 #endif Generated on Fri May 25 2012 04:31:42 for ReactOS by
1.7.6.1
|