#ifndef FLAC_COMPAT112_H
#define FLAC_COMPAT112_H

#if !defined(FLAC_API_VERSION_CURRENT)

/* Basic stream decoder type */
#define FLAC__StreamDecoder FLAC__SeekableStreamDecoder

/* Stream decoder functions */
#define FLAC__StreamDecoderReadStatus FLAC__SeekableStreamDecoderReadStatus 
#define FLAC__StreamDecoderSeekStatus FLAC__SeekableStreamDecoderSeekStatus
#define FLAC__StreamDecoderTellStatus FLAC__SeekableStreamDecoderTellStatus
#define FLAC__StreamDecoderLengthStatus FLAC__SeekableStreamDecoderLengthStatus
#define FLAC__stream_decoder_new FLAC__seekable_stream_decoder_new
#define FLAC__stream_decoder_set_metadata_respond FLAC__seekable_stream_decoder_set_metadata_respond
#define FLAC__stream_decoder_process_single FLAC__seekable_stream_decoder_process_single
#define FLAC__stream_decoder_seek_absolute FLAC__seekable_stream_decoder_seek_absolute
#define FLAC__stream_decoder_get_state FLAC__seekable_stream_decoder_get_state
#define FLAC__stream_decoder_flush FLAC__seekable_stream_decoder_flush
#define FLAC__stream_decoder_reset FLAC__seekable_stream_decoder_reset
#define FLAC__stream_decoder_process_until_end_of_metadata FLAC__seekable_stream_decoder_process_until_end_of_metadata
#define FLAC__stream_decoder_delete FLAC__seekable_stream_decoder_delete
#define FLAC__StreamDecoderInitStatusString FLAC__SeekableStreamDecoderStateString
#define FLAC__StreamDecoderStateString FLAC__SeekableStreamDecoderStateString

/* Constants and types */
#define FLAC__StreamDecoderInitStatus FLAC__SeekableStreamDecoderState
#define FLAC__STREAM_DECODER_SEEK_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR
#define FLAC__STREAM_DECODER_SEEK_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK
#define FLAC__STREAM_DECODER_TELL_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR
#define FLAC__STREAM_DECODER_TELL_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK
#define FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR
#define FLAC__STREAM_DECODER_LENGTH_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK
#define FLAC__STREAM_DECODER_INIT_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_OK
#define FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK
#define FLAC__STREAM_DECODER_END_OF_STREAM FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM

FLAC__SeekableStreamDecoderState FLAC__stream_decoder_init_stream(
    FLAC__SeekableStreamDecoder*  decoder,
    FLAC__SeekableStreamDecoderReadCallback read_callback,
    FLAC__SeekableStreamDecoderSeekCallback     seek_callback,
    FLAC__SeekableStreamDecoderTellCallback     tell_callback,
    FLAC__SeekableStreamDecoderLengthCallback   length_callback,
    FLAC__SeekableStreamDecoderEofCallback      eof_callback,
    FLAC__SeekableStreamDecoderWriteCallback    write_callback,
    FLAC__SeekableStreamDecoderMetadataCallback     metadata_callback,
    FLAC__SeekableStreamDecoderErrorCallback    error_callback,
    void *      client_data);

#endif

#endif
