1
0
Fork 0
forked from len0rd/rockbox

New FLAC decoder from the ffmpeg project

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7656 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2005-10-26 12:35:58 +00:00
parent 48be8e6a8b
commit 273d2e81f7
17 changed files with 2202 additions and 301 deletions

View file

@ -0,0 +1,46 @@
#ifndef _FLAC_DECODER_H
#define _FLAC_DECODER_H
#include "bitstream.h"
#define MAX_CHANNELS 2 /* Maximum supported channels */
#define MAX_BLOCKSIZE 4608 /* Maxsize in samples of one uncompressed frame */
#define MAX_FRAMESIZE 32768 /* Maxsize in bytes of one compressed frame */
#define FLAC_OUTPUT_DEPTH 28 /* Provide samples left-shifted to 28-bits */
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;
} FLACContext;
int flac_decode_frame(FLACContext *s,
int32_t* decoded0,
int32_t* decoded1,
uint8_t *buf, int buf_size,
void (*yield)(void));
#endif