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