00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 #ifndef FLAC__FILE_DECODER_H
00033 #define FLAC__FILE_DECODER_H
00034 
00035 #include "export.h"
00036 #include "seekable_stream_decoder.h"
00037 
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041 
00042 
00121 typedef enum {
00122 
00123     FLAC__FILE_DECODER_OK = 0,
00126     FLAC__FILE_DECODER_END_OF_FILE,
00129     FLAC__FILE_DECODER_ERROR_OPENING_FILE,
00132     FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR,
00135     FLAC__FILE_DECODER_SEEK_ERROR,
00138     FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR,
00141     FLAC__FILE_DECODER_ALREADY_INITIALIZED,
00147     FLAC__FILE_DECODER_INVALID_CALLBACK,
00152     FLAC__FILE_DECODER_UNINITIALIZED
00155 } FLAC__FileDecoderState;
00156 
00162 extern FLAC_API const char * const FLAC__FileDecoderStateString[];
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 struct FLAC__FileDecoderProtected;
00172 struct FLAC__FileDecoderPrivate;
00177 typedef struct {
00178     struct FLAC__FileDecoderProtected *protected_; 
00179     struct FLAC__FileDecoderPrivate *private_; 
00180 } FLAC__FileDecoder;
00181 
00194 typedef FLAC__StreamDecoderWriteStatus (*FLAC__FileDecoderWriteCallback)(const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
00195 
00205 typedef void (*FLAC__FileDecoderMetadataCallback)(const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
00206 
00216 typedef void (*FLAC__FileDecoderErrorCallback)(const FLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00224 
00232 FLAC_API FLAC__FileDecoder *FLAC__file_decoder_new();
00233 
00240 FLAC_API void FLAC__file_decoder_delete(FLAC__FileDecoder *decoder);
00241 
00242 
00243 
00244 
00245 
00246 
00247 
00248 
00261 FLAC_API FLAC__bool FLAC__file_decoder_set_md5_checking(FLAC__FileDecoder *decoder, FLAC__bool value);
00262 
00275 FLAC_API FLAC__bool FLAC__file_decoder_set_filename(FLAC__FileDecoder *decoder, const char *value);
00276 
00293 FLAC_API FLAC__bool FLAC__file_decoder_set_write_callback(FLAC__FileDecoder *decoder, FLAC__FileDecoderWriteCallback value);
00294 
00311 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_callback(FLAC__FileDecoder *decoder, FLAC__FileDecoderMetadataCallback value);
00312 
00329 FLAC_API FLAC__bool FLAC__file_decoder_set_error_callback(FLAC__FileDecoder *decoder, FLAC__FileDecoderErrorCallback value);
00330 
00343 FLAC_API FLAC__bool FLAC__file_decoder_set_client_data(FLAC__FileDecoder *decoder, void *value);
00344 
00358 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_respond(FLAC__FileDecoder *decoder, FLAC__MetadataType type);
00359 
00373 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_respond_application(FLAC__FileDecoder *decoder, const FLAC__byte id[4]);
00374 
00386 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_respond_all(FLAC__FileDecoder *decoder);
00387 
00401 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_ignore(FLAC__FileDecoder *decoder, FLAC__MetadataType type);
00402 
00416 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_ignore_application(FLAC__FileDecoder *decoder, const FLAC__byte id[4]);
00417 
00429 FLAC_API FLAC__bool FLAC__file_decoder_set_metadata_ignore_all(FLAC__FileDecoder *decoder);
00430 
00439 FLAC_API FLAC__FileDecoderState FLAC__file_decoder_get_state(const FLAC__FileDecoder *decoder);
00440 
00451 FLAC_API FLAC__SeekableStreamDecoderState FLAC__file_decoder_get_seekable_stream_decoder_state(const FLAC__FileDecoder *decoder);
00452 
00464 FLAC_API FLAC__StreamDecoderState FLAC__file_decoder_get_stream_decoder_state(const FLAC__FileDecoder *decoder);
00465 
00477 FLAC_API const char *FLAC__file_decoder_get_resolved_state_string(const FLAC__FileDecoder *decoder);
00478 
00489 FLAC_API FLAC__bool FLAC__file_decoder_get_md5_checking(const FLAC__FileDecoder *decoder);
00490 
00500 FLAC_API unsigned FLAC__file_decoder_get_channels(const FLAC__FileDecoder *decoder);
00501 
00511 FLAC_API FLAC__ChannelAssignment FLAC__file_decoder_get_channel_assignment(const FLAC__FileDecoder *decoder);
00512 
00522 FLAC_API unsigned FLAC__file_decoder_get_bits_per_sample(const FLAC__FileDecoder *decoder);
00523 
00533 FLAC_API unsigned FLAC__file_decoder_get_sample_rate(const FLAC__FileDecoder *decoder);
00534 
00544 FLAC_API unsigned FLAC__file_decoder_get_blocksize(const FLAC__FileDecoder *decoder);
00545 
00558 FLAC_API FLAC__bool FLAC__file_decoder_get_decode_position(const FLAC__FileDecoder *decoder, FLAC__uint64 *position);
00559 
00574 FLAC_API FLAC__FileDecoderState FLAC__file_decoder_init(FLAC__FileDecoder *decoder);
00575 
00595 FLAC_API FLAC__bool FLAC__file_decoder_finish(FLAC__FileDecoder *decoder);
00596 
00606 FLAC_API FLAC__bool FLAC__file_decoder_process_single(FLAC__FileDecoder *decoder);
00607 
00617 FLAC_API FLAC__bool FLAC__file_decoder_process_until_end_of_metadata(FLAC__FileDecoder *decoder);
00618 
00628 FLAC_API FLAC__bool FLAC__file_decoder_process_until_end_of_file(FLAC__FileDecoder *decoder);
00629 
00639 FLAC_API FLAC__bool FLAC__file_decoder_skip_single_frame(FLAC__FileDecoder *decoder);
00640 
00652 FLAC_API FLAC__bool FLAC__file_decoder_seek_absolute(FLAC__FileDecoder *decoder, FLAC__uint64 sample);
00653 
00654 
00655 
00656 #ifdef __cplusplus
00657 }
00658 #endif
00659 
00660 #endif