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__SEEKABLE_STREAM_DECODER_H
00033 #define FLAC__SEEKABLE_STREAM_DECODER_H
00034
00035 #include "export.h"
00036 #include "stream_decoder.h"
00037
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041
00042
00132 typedef enum {
00133
00134 FLAC__SEEKABLE_STREAM_DECODER_OK = 0,
00137 FLAC__SEEKABLE_STREAM_DECODER_SEEKING,
00140 FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM,
00143 FLAC__SEEKABLE_STREAM_DECODER_MEMORY_ALLOCATION_ERROR,
00146 FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR,
00149 FLAC__SEEKABLE_STREAM_DECODER_READ_ERROR,
00152 FLAC__SEEKABLE_STREAM_DECODER_SEEK_ERROR,
00157 FLAC__SEEKABLE_STREAM_DECODER_ALREADY_INITIALIZED,
00163 FLAC__SEEKABLE_STREAM_DECODER_INVALID_CALLBACK,
00168 FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED
00171 } FLAC__SeekableStreamDecoderState;
00172
00178 extern FLAC_API const char * const FLAC__SeekableStreamDecoderStateString[];
00179
00180
00183 typedef enum {
00184
00185 FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK,
00188 FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR
00191 } FLAC__SeekableStreamDecoderReadStatus;
00192
00198 extern FLAC_API const char * const FLAC__SeekableStreamDecoderReadStatusString[];
00199
00200
00203 typedef enum {
00204
00205 FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK,
00208 FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR
00211 } FLAC__SeekableStreamDecoderSeekStatus;
00212
00218 extern FLAC_API const char * const FLAC__SeekableStreamDecoderSeekStatusString[];
00219
00220
00223 typedef enum {
00224
00225 FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK,
00228 FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR
00231 } FLAC__SeekableStreamDecoderTellStatus;
00232
00238 extern FLAC_API const char * const FLAC__SeekableStreamDecoderTellStatusString[];
00239
00240
00243 typedef enum {
00244
00245 FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK,
00248 FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR
00251 } FLAC__SeekableStreamDecoderLengthStatus;
00252
00258 extern FLAC_API const char * const FLAC__SeekableStreamDecoderLengthStatusString[];
00259
00260
00261
00262
00263
00264
00265
00266
00267 struct FLAC__SeekableStreamDecoderProtected;
00268 struct FLAC__SeekableStreamDecoderPrivate;
00274 typedef struct {
00275 struct FLAC__SeekableStreamDecoderProtected *protected_;
00276 struct FLAC__SeekableStreamDecoderPrivate *private_;
00277 } FLAC__SeekableStreamDecoder;
00278
00292 typedef FLAC__SeekableStreamDecoderReadStatus (*FLAC__SeekableStreamDecoderReadCallback)(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
00293
00305 typedef FLAC__SeekableStreamDecoderSeekStatus (*FLAC__SeekableStreamDecoderSeekCallback)(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
00306
00318 typedef FLAC__SeekableStreamDecoderTellStatus (*FLAC__SeekableStreamDecoderTellCallback)(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
00319
00331 typedef FLAC__SeekableStreamDecoderLengthStatus (*FLAC__SeekableStreamDecoderLengthCallback)(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
00332
00342 typedef FLAC__bool (*FLAC__SeekableStreamDecoderEofCallback)(const FLAC__SeekableStreamDecoder *decoder, void *client_data);
00343
00356 typedef FLAC__StreamDecoderWriteStatus (*FLAC__SeekableStreamDecoderWriteCallback)(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
00357
00367 typedef void (*FLAC__SeekableStreamDecoderMetadataCallback)(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
00368
00378 typedef void (*FLAC__SeekableStreamDecoderErrorCallback)(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
00379
00380
00381
00382
00383
00384
00385
00386
00395 FLAC_API FLAC__SeekableStreamDecoder *FLAC__seekable_stream_decoder_new();
00396
00403 FLAC_API void FLAC__seekable_stream_decoder_delete(FLAC__SeekableStreamDecoder *decoder);
00404
00405
00406
00407
00408
00409
00410
00411
00429 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_md5_checking(FLAC__SeekableStreamDecoder *decoder, FLAC__bool value);
00430
00447 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_read_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderReadCallback value);
00448
00466 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_seek_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderSeekCallback value);
00467
00485 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_tell_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderTellCallback value);
00486
00503 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_length_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderLengthCallback value);
00504
00521 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_eof_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderEofCallback value);
00522
00539 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_write_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderWriteCallback value);
00540
00557 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderMetadataCallback value);
00558
00575 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_error_callback(FLAC__SeekableStreamDecoder *decoder, FLAC__SeekableStreamDecoderErrorCallback value);
00576
00589 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_client_data(FLAC__SeekableStreamDecoder *decoder, void *value);
00590
00604 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_respond(FLAC__SeekableStreamDecoder *decoder, FLAC__MetadataType type);
00605
00619 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_respond_application(FLAC__SeekableStreamDecoder *decoder, const FLAC__byte id[4]);
00620
00632 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_respond_all(FLAC__SeekableStreamDecoder *decoder);
00633
00647 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore(FLAC__SeekableStreamDecoder *decoder, FLAC__MetadataType type);
00648
00662 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore_application(FLAC__SeekableStreamDecoder *decoder, const FLAC__byte id[4]);
00663
00675 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore_all(FLAC__SeekableStreamDecoder *decoder);
00676
00685 FLAC_API FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_state(const FLAC__SeekableStreamDecoder *decoder);
00686
00697 FLAC_API FLAC__StreamDecoderState FLAC__seekable_stream_decoder_get_stream_decoder_state(const FLAC__SeekableStreamDecoder *decoder);
00698
00710 FLAC_API const char *FLAC__seekable_stream_decoder_get_resolved_state_string(const FLAC__SeekableStreamDecoder *decoder);
00711
00724 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_get_md5_checking(const FLAC__SeekableStreamDecoder *decoder);
00725
00735 FLAC_API unsigned FLAC__seekable_stream_decoder_get_channels(const FLAC__SeekableStreamDecoder *decoder);
00736
00746 FLAC_API FLAC__ChannelAssignment FLAC__seekable_stream_decoder_get_channel_assignment(const FLAC__SeekableStreamDecoder *decoder);
00747
00757 FLAC_API unsigned FLAC__seekable_stream_decoder_get_bits_per_sample(const FLAC__SeekableStreamDecoder *decoder);
00758
00768 FLAC_API unsigned FLAC__seekable_stream_decoder_get_sample_rate(const FLAC__SeekableStreamDecoder *decoder);
00769
00779 FLAC_API unsigned FLAC__seekable_stream_decoder_get_blocksize(const FLAC__SeekableStreamDecoder *decoder);
00780
00796 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_get_decode_position(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *position);
00797
00813 FLAC_API FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_init(FLAC__SeekableStreamDecoder *decoder);
00814
00835 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_finish(FLAC__SeekableStreamDecoder *decoder);
00836
00849 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_flush(FLAC__SeekableStreamDecoder *decoder);
00850
00866 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_reset(FLAC__SeekableStreamDecoder *decoder);
00867
00877 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_process_single(FLAC__SeekableStreamDecoder *decoder);
00878
00888 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_process_until_end_of_metadata(FLAC__SeekableStreamDecoder *decoder);
00889
00899 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_process_until_end_of_stream(FLAC__SeekableStreamDecoder *decoder);
00900
00910 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_skip_single_frame(FLAC__SeekableStreamDecoder *decoder);
00911
00923 FLAC_API FLAC__bool FLAC__seekable_stream_decoder_seek_absolute(FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 sample);
00924
00925
00926
00927 #ifdef __cplusplus
00928 }
00929 #endif
00930
00931 #endif