Chris@1: Chris@1:
Chris@1:#include <decoder.h>
Chris@1: Chris@1:
Inheritance diagram for FLAC::Decoder::File: Chris@1:
Chris@1: The usage of this class is similar to FLAC__StreamDecoder, except instead of providing callbacks to FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(), you will inherit from this class and override the virtual callback functions with your own implementations, then call init() or init_off(). The rest of the calls work the same as in the C layer.
Chris@1: Only the write, and error callbacks from FLAC::Decoder::Stream are mandatory. The others are optional; this class provides full working implementations for all other callbacks and supports seeking. Chris@1:
Chris@1:
Public Member Functions | |
virtual ::FLAC__StreamDecoderInitStatus | init (FILE *file) |
virtual ::FLAC__StreamDecoderInitStatus | init (const char *filename) |
virtual ::FLAC__StreamDecoderInitStatus | init (const std::string &filename) |
virtual ::FLAC__StreamDecoderInitStatus | init_ogg (FILE *file) |
virtual ::FLAC__StreamDecoderInitStatus | init_ogg (const char *filename) |
virtual ::FLAC__StreamDecoderInitStatus | init_ogg (const std::string &filename) |
virtual bool | is_valid () const |
operator bool () const | |
virtual bool | set_ogg_serial_number (long value) |
virtual bool | set_md5_checking (bool value) |
virtual bool | set_metadata_respond (::FLAC__MetadataType type) |
virtual bool | set_metadata_respond_application (const FLAC__byte id[4]) |
virtual bool | set_metadata_respond_all () |
virtual bool | set_metadata_ignore (::FLAC__MetadataType type) |
virtual bool | set_metadata_ignore_application (const FLAC__byte id[4]) |
virtual bool | set_metadata_ignore_all () |
State | get_state () const |
virtual bool | get_md5_checking () const |
virtual FLAC__uint64 | get_total_samples () const |
virtual unsigned | get_channels () const |
virtual ::FLAC__ChannelAssignment | get_channel_assignment () const |
virtual unsigned | get_bits_per_sample () const |
virtual unsigned | get_sample_rate () const |
virtual unsigned | get_blocksize () const |
virtual bool | get_decode_position (FLAC__uint64 *position) const |
virtual ::FLAC__StreamDecoderInitStatus | init () |
virtual ::FLAC__StreamDecoderInitStatus | init_ogg () |
virtual bool | finish () |
virtual bool | flush () |
virtual bool | reset () |
virtual bool | process_single () |
virtual bool | process_until_end_of_metadata () |
virtual bool | process_until_end_of_stream () |
virtual bool | skip_single_frame () |
virtual bool | seek_absolute (FLAC__uint64 sample) |
Protected Member Functions | |
virtual ::FLAC__StreamDecoderReadStatus | read_callback (FLAC__byte buffer[], size_t *bytes) |
virtual ::FLAC__StreamDecoderSeekStatus | seek_callback (FLAC__uint64 absolute_byte_offset) |
virtual ::FLAC__StreamDecoderTellStatus | tell_callback (FLAC__uint64 *absolute_byte_offset) |
virtual ::FLAC__StreamDecoderLengthStatus | length_callback (FLAC__uint64 *stream_length) |
virtual bool | eof_callback () |
virtual ::FLAC__StreamDecoderWriteStatus | write_callback (const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0 |
virtual void | metadata_callback (const ::FLAC__StreamMetadata *metadata) |
virtual void | error_callback (::FLAC__StreamDecoderErrorStatus status)=0 |
Static Protected Member Functions | |
Chris@1: ::FLAC__StreamDecoderReadStatus | read_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) |
Chris@1: ::FLAC__StreamDecoderSeekStatus | seek_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) |
Chris@1: ::FLAC__StreamDecoderTellStatus | tell_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) |
Chris@1: ::FLAC__StreamDecoderLengthStatus | length_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) |
Chris@1: static FLAC__bool | eof_callback_ (const ::FLAC__StreamDecoder *decoder, void *client_data) |
Chris@1: ::FLAC__StreamDecoderWriteStatus | write_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) |
Chris@1: static void | metadata_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data) |
Chris@1: static void | error_callback_ (const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data) |
Protected Attributes | |
Chris@1: ::FLAC__StreamDecoder * | decoder_ |
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_FILE(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_file(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_file(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_ogg_FILE(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_ogg_file(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_init_ogg_file(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderReadCallback Chris@1: Chris@1: Chris@1: Chris@1: Implements FLAC::Decoder::Stream. |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: Call after construction to check the that the object was created successfully. If not, use get_state() to find out why not. |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See is_valid(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_ogg_serial_number(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_md5_checking(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_respond(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_respond_application(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_respond_all(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_ignore(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_ignore_application(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_set_metadata_ignore_all(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_state(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_md5_checking(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_total_samples(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_channels(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_channel_assignment(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_bits_per_sample(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_sample_rate(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_blocksize(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_get_decode_position(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: Seek FLAC__stream_decoder_init_stream(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: Seek FLAC__stream_decoder_init_ogg_stream(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_finish(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_flush(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_reset(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_process_single(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_process_until_end_of_metadata(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_process_until_end_of_stream(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_skip_single_frame(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: See FLAC__stream_decoder_seek_absolute(). Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderSeekCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderTellCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderLengthCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderEofCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderWriteCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderMetadataCallback Chris@1: Chris@1: |
Chris@1:
Chris@1:
Chris@1:
|
Chris@1:
Chris@1: Chris@1: | Chris@1:
Chris@1:
Chris@1: Chris@1: see FLAC__StreamDecoderErrorCallback Chris@1: Chris@1: |
Chris@1: