Update
[pcsx_rearmed.git] / deps / libchdr / flac.h
CommitLineData
ce188d4d 1// license:BSD-3-Clause\r
2// copyright-holders:Aaron Giles\r
3/***************************************************************************\r
4\r
5 flac.h\r
6\r
7 FLAC compression wrappers\r
8\r
9***************************************************************************/\r
10\r
11#pragma once\r
12\r
13#ifndef __FLAC_H__\r
14#define __FLAC_H__\r
15\r
16#include <stdint.h>\r
17#include "FLAC/all.h"\r
18\r
19//**************************************************************************\r
20// TYPE DEFINITIONS\r
21//**************************************************************************\r
22\r
23typedef struct _flac_decoder flac_decoder;\r
24struct _flac_decoder {\r
25 // output state\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
40};\r
41\r
42// ======================> flac_decoder\r
43\r
44void flac_decoder_init(flac_decoder* decoder);\r
45void flac_decoder_free(flac_decoder* decoder);\r
46int 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
47int flac_decoder_decode_interleaved(flac_decoder* decoder, int16_t *samples, uint32_t num_samples, int swap_endian);\r
48uint32_t flac_decoder_finish(flac_decoder* decoder);\r
49\r
50#endif // __FLAC_H__\r