1 // license:BSD-3-Clause
\r
2 // copyright-holders:Aaron Giles
\r
3 /***************************************************************************
\r
7 FLAC compression wrappers
\r
9 ***************************************************************************/
\r
17 #include "FLAC/all.h"
\r
19 //**************************************************************************
\r
21 //**************************************************************************
\r
23 typedef struct _flac_decoder flac_decoder;
\r
24 struct _flac_decoder {
\r
26 FLAC__StreamDecoder* decoder; // actual encoder
\r
27 uint32_t sample_rate; // decoded sample rate
\r
28 uint8_t channels; // decoded number of channels
\r
29 uint8_t bits_per_sample; // decoded bits per sample
\r
30 uint32_t compressed_offset; // current offset in compressed data
\r
31 const FLAC__byte * compressed_start; // start of compressed data
\r
32 uint32_t compressed_length; // length of compressed data
\r
33 const FLAC__byte * compressed2_start; // start of compressed data
\r
34 uint32_t compressed2_length; // length of compressed data
\r
35 int16_t * uncompressed_start[8]; // pointer to start of uncompressed data (up to 8 streams)
\r
36 uint32_t uncompressed_offset; // current position in uncompressed data
\r
37 uint32_t uncompressed_length; // length of uncompressed data
\r
38 int uncompressed_swap; // swap uncompressed sample data
\r
39 uint8_t custom_header[0x2a]; // custom header
\r
42 // ======================> flac_decoder
\r
44 void flac_decoder_init(flac_decoder* decoder);
\r
45 void flac_decoder_free(flac_decoder* decoder);
\r
46 int flac_decoder_reset(flac_decoder* decoder, uint32_t sample_rate, uint8_t num_channels, uint32_t block_size, const void *buffer, uint32_t length);
\r
47 int flac_decoder_decode_interleaved(flac_decoder* decoder, int16_t *samples, uint32_t num_samples, int swap_endian);
\r
48 uint32_t flac_decoder_finish(flac_decoder* decoder);
\r
50 #endif // __FLAC_H__
\r