00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OggFLAC__STREAM_DECODER_H
00021 #define OggFLAC__STREAM_DECODER_H
00022
00023 #include "FLAC/stream_decoder.h"
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029
00070 typedef enum {
00071
00072 OggFLAC__STREAM_DECODER_OK = 0,
00075 OggFLAC__STREAM_DECODER_OGG_ERROR,
00078 OggFLAC__STREAM_DECODER_READ_ERROR,
00081 OggFLAC__STREAM_DECODER_FLAC_STREAM_DECODER_ERROR,
00086 OggFLAC__STREAM_DECODER_INVALID_CALLBACK,
00089 OggFLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR,
00092 OggFLAC__STREAM_DECODER_ALREADY_INITIALIZED,
00098 OggFLAC__STREAM_DECODER_UNINITIALIZED
00101 } OggFLAC__StreamDecoderState;
00102
00108 extern const char * const OggFLAC__StreamDecoderStateString[];
00109
00110
00111
00112
00113
00114
00115
00116
00117 struct OggFLAC__StreamDecoderProtected;
00118 struct OggFLAC__StreamDecoderPrivate;
00123 typedef struct {
00124 struct OggFLAC__StreamDecoderProtected *protected_;
00125 struct OggFLAC__StreamDecoderPrivate *private_;
00126 } OggFLAC__StreamDecoder;
00127
00141 typedef FLAC__StreamDecoderReadStatus (*OggFLAC__StreamDecoderReadCallback)(const OggFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data);
00142
00155 typedef FLAC__StreamDecoderWriteStatus (*OggFLAC__StreamDecoderWriteCallback)(const OggFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
00156
00166 typedef void (*OggFLAC__StreamDecoderMetadataCallback)(const OggFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
00167
00177 typedef void (*OggFLAC__StreamDecoderErrorCallback)(const OggFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
00178
00179
00180
00181
00182
00183
00184
00185
00193 OggFLAC__StreamDecoder *OggFLAC__stream_decoder_new();
00194
00201 void OggFLAC__stream_decoder_delete(OggFLAC__StreamDecoder *decoder);
00202
00203
00204
00205
00206
00207
00208
00209
00225 FLAC__bool OggFLAC__stream_decoder_set_read_callback(OggFLAC__StreamDecoder *decoder, OggFLAC__StreamDecoderReadCallback value);
00226
00242 FLAC__bool OggFLAC__stream_decoder_set_write_callback(OggFLAC__StreamDecoder *decoder, OggFLAC__StreamDecoderWriteCallback value);
00243
00259 FLAC__bool OggFLAC__stream_decoder_set_metadata_callback(OggFLAC__StreamDecoder *decoder, OggFLAC__StreamDecoderMetadataCallback value);
00260
00276 FLAC__bool OggFLAC__stream_decoder_set_error_callback(OggFLAC__StreamDecoder *decoder, OggFLAC__StreamDecoderErrorCallback value);
00277
00290 FLAC__bool OggFLAC__stream_decoder_set_client_data(OggFLAC__StreamDecoder *decoder, void *value);
00291
00305 FLAC__bool OggFLAC__stream_decoder_set_serial_number(OggFLAC__StreamDecoder *decoder, long serial_number);
00306
00320 FLAC__bool OggFLAC__stream_decoder_set_metadata_respond(OggFLAC__StreamDecoder *decoder, FLAC__MetadataType type);
00321
00336 FLAC__bool OggFLAC__stream_decoder_set_metadata_respond_application(OggFLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
00337
00349 FLAC__bool OggFLAC__stream_decoder_set_metadata_respond_all(OggFLAC__StreamDecoder *decoder);
00350
00364 FLAC__bool OggFLAC__stream_decoder_set_metadata_ignore(OggFLAC__StreamDecoder *decoder, FLAC__MetadataType type);
00365
00380 FLAC__bool OggFLAC__stream_decoder_set_metadata_ignore_application(OggFLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
00381
00393 FLAC__bool OggFLAC__stream_decoder_set_metadata_ignore_all(OggFLAC__StreamDecoder *decoder);
00394
00403 OggFLAC__StreamDecoderState OggFLAC__stream_decoder_get_state(const OggFLAC__StreamDecoder *decoder);
00404
00415 FLAC__StreamDecoderState OggFLAC__stream_decoder_get_FLAC_stream_decoder_state(const OggFLAC__StreamDecoder *decoder);
00416
00425 unsigned OggFLAC__stream_decoder_get_channels(const OggFLAC__StreamDecoder *decoder);
00426
00435 FLAC__ChannelAssignment OggFLAC__stream_decoder_get_channel_assignment(const OggFLAC__StreamDecoder *decoder);
00436
00445 unsigned OggFLAC__stream_decoder_get_bits_per_sample(const OggFLAC__StreamDecoder *decoder);
00446
00455 unsigned OggFLAC__stream_decoder_get_sample_rate(const OggFLAC__StreamDecoder *decoder);
00456
00465 unsigned OggFLAC__stream_decoder_get_blocksize(const OggFLAC__StreamDecoder *decoder);
00466
00482 OggFLAC__StreamDecoderState OggFLAC__stream_decoder_init(OggFLAC__StreamDecoder *decoder);
00483
00498 void OggFLAC__stream_decoder_finish(OggFLAC__StreamDecoder *decoder);
00499
00509 FLAC__bool OggFLAC__stream_decoder_flush(OggFLAC__StreamDecoder *decoder);
00510
00520 FLAC__bool OggFLAC__stream_decoder_reset(OggFLAC__StreamDecoder *decoder);
00521
00537 FLAC__bool OggFLAC__stream_decoder_process_single(OggFLAC__StreamDecoder *decoder);
00538
00554 FLAC__bool OggFLAC__stream_decoder_process_until_end_of_metadata(OggFLAC__StreamDecoder *decoder);
00555
00571 FLAC__bool OggFLAC__stream_decoder_process_until_end_of_stream(OggFLAC__StreamDecoder *decoder);
00572
00573
00574
00575 #ifdef __cplusplus
00576 }
00577 #endif
00578
00579 #endif