ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mpg123.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.