summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libffmpegFLAC/decoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libffmpegFLAC/decoder.h')
-rw-r--r--lib/rbcodec/codecs/libffmpegFLAC/decoder.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libffmpegFLAC/decoder.h b/lib/rbcodec/codecs/libffmpegFLAC/decoder.h
new file mode 100644
index 0000000000..677a21ac98
--- /dev/null
+++ b/lib/rbcodec/codecs/libffmpegFLAC/decoder.h
@@ -0,0 +1,49 @@
1#ifndef _FLAC_DECODER_H
2#define _FLAC_DECODER_H
3
4#include "bitstream.h"
5
6#define MAX_CHANNELS 6 /* Maximum supported channels, only left/right will be played back */
7#define MAX_BLOCKSIZE 4608 /* Maxsize in samples of one uncompressed frame */
8#define MAX_FRAMESIZE 65536 /* Maxsize in bytes of one compressed frame */
9
10#define FLAC_OUTPUT_DEPTH 29 /* Provide samples left-shifted to 28 bits+sign */
11
12enum decorrelation_type {
13 INDEPENDENT,
14 LEFT_SIDE,
15 RIGHT_SIDE,
16 MID_SIDE,
17};
18
19typedef struct FLACContext {
20 GetBitContext gb;
21
22 int min_blocksize, max_blocksize;
23 int min_framesize, max_framesize;
24 int samplerate, channels;
25 int blocksize/*, last_blocksize*/;
26 int bps, curr_bps;
27 unsigned long samplenumber;
28 unsigned long totalsamples;
29 enum decorrelation_type decorrelation;
30
31 int filesize;
32 int length;
33 int bitrate;
34 int metadatalength;
35
36 int bitstream_size;
37 int bitstream_index;
38
39 int sample_skip;
40 int framesize;
41
42 int32_t *decoded[MAX_CHANNELS];
43} FLACContext;
44
45int flac_decode_frame(FLACContext *s,
46 uint8_t *buf, int buf_size,
47 void (*yield)(void)) ICODE_ATTR_FLAC;
48
49#endif