summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libffmpegFLAC/decoder.h
diff options
context:
space:
mode:
authorSean Bartell <wingedtachikoma@gmail.com>2011-06-25 21:32:25 -0400
committerNils Wallménius <nils@rockbox.org>2012-04-25 22:13:20 +0200
commitf40bfc9267b13b54e6379dfe7539447662879d24 (patch)
tree9b20069d5e62809ff434061ad730096836f916f2 /lib/rbcodec/codecs/libffmpegFLAC/decoder.h
parenta0009907de7a0107d49040d8a180f140e2eff299 (diff)
downloadrockbox-f40bfc9267b13b54e6379dfe7539447662879d24.zip
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.gz
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.bz2
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.xz
Add codecs to librbcodec.
Change-Id: Id7f4717d51ed02d67cb9f9cb3c0ada4a81843f97 Reviewed-on: http://gerrit.rockbox.org/137 Reviewed-by: Nils Wallménius <nils@rockbox.org> Tested-by: Nils Wallménius <nils@rockbox.org>
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 0000000..677a21a
--- /dev/null
+++ b/lib/rbcodec/codecs/libffmpegFLAC/decoder.h
@@ -0,0 +1,49 @@
+#ifndef _FLAC_DECODER_H
+#define _FLAC_DECODER_H
+
+#include "bitstream.h"
+
+#define MAX_CHANNELS 6 /* Maximum supported channels, only left/right will be played back */
+#define MAX_BLOCKSIZE 4608 /* Maxsize in samples of one uncompressed frame */
+#define MAX_FRAMESIZE 65536 /* Maxsize in bytes of one compressed frame */
+
+#define FLAC_OUTPUT_DEPTH 29 /* Provide samples left-shifted to 28 bits+sign */
+
+enum decorrelation_type {
+ INDEPENDENT,
+ LEFT_SIDE,
+ RIGHT_SIDE,
+ MID_SIDE,
+};
+
+typedef struct FLACContext {
+ GetBitContext gb;
+
+ int min_blocksize, max_blocksize;
+ int min_framesize, max_framesize;
+ int samplerate, channels;
+ int blocksize/*, last_blocksize*/;
+ int bps, curr_bps;
+ unsigned long samplenumber;
+ unsigned long totalsamples;
+ enum decorrelation_type decorrelation;
+
+ int filesize;
+ int length;
+ int bitrate;
+ int metadatalength;
+
+ int bitstream_size;
+ int bitstream_index;
+
+ int sample_skip;
+ int framesize;
+
+ int32_t *decoded[MAX_CHANNELS];
+} FLACContext;
+
+int flac_decode_frame(FLACContext *s,
+ uint8_t *buf, int buf_size,
+ void (*yield)(void)) ICODE_ATTR_FLAC;
+
+#endif