summaryrefslogtreecommitdiff
path: root/apps/codecs/libffmpegFLAC/shndec.h
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-02-07 22:16:35 +0000
committerDave Chapman <dave@dchapman.com>2006-02-07 22:16:35 +0000
commit8e46ab85a9a1c50589920897763ce53e593c9369 (patch)
tree0a0fe757659050c39d6b5160c22311915557abbd /apps/codecs/libffmpegFLAC/shndec.h
parent6099dc8b77e1b536ff47b4b74edf20f1fafda5b6 (diff)
downloadrockbox-8e46ab85a9a1c50589920897763ce53e593c9369.tar.gz
rockbox-8e46ab85a9a1c50589920897763ce53e593c9369.zip
Patch #1426489 - Shorten codec optimisations from Mark Arigo
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8615 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libffmpegFLAC/shndec.h')
-rw-r--r--apps/codecs/libffmpegFLAC/shndec.h44
1 files changed, 30 insertions, 14 deletions
diff --git a/apps/codecs/libffmpegFLAC/shndec.h b/apps/codecs/libffmpegFLAC/shndec.h
index 6b830dcafa..713a5b56dc 100644
--- a/apps/codecs/libffmpegFLAC/shndec.h
+++ b/apps/codecs/libffmpegFLAC/shndec.h
@@ -1,11 +1,31 @@
1#include "bitstream.h" 1#include "bitstream.h"
2 2
3#define SHN_OUTPUT_DEPTH 28 3#define SHN_OUTPUT_DEPTH 28
4
5#define MAX_CHANNELS 2
6#define MAX_PRED_ORDER 16
7#define MAX_NWRAP MAX_PRED_ORDER
8#define MAX_NMEAN 4
9
10/* NUM_DEC_LOOPS should be even number */
11#define NUM_DEC_LOOPS 26
4#define DEFAULT_BLOCK_SIZE 256 12#define DEFAULT_BLOCK_SIZE 256
5#define MAX_FRAMESIZE 1024 13#define MAX_HEADER_SIZE DEFAULT_BLOCK_SIZE*4
6#define MAX_CHANNELS 2 14#define MAX_BUFFER_SIZE 2*DEFAULT_BLOCK_SIZE*NUM_DEC_LOOPS
7#define MAX_NWRAP 3 15#define MAX_DECODE_SIZE ((DEFAULT_BLOCK_SIZE*NUM_DEC_LOOPS/2) + MAX_NWRAP)
8#define MAX_NMEAN 4 16#define MAX_OFFSET_SIZE MAX_NMEAN
17
18#define FN_DIFF0 0
19#define FN_DIFF1 1
20#define FN_DIFF2 2
21#define FN_DIFF3 3
22#define FN_QUIT 4
23#define FN_BLOCKSIZE 5
24#define FN_BITSHIFT 6
25#define FN_QLPC 7
26#define FN_ZERO 8
27#define FN_VERBATIM 9
28#define FN_ERROR 10
9 29
10typedef struct ShortenContext { 30typedef struct ShortenContext {
11 GetBitContext gb; 31 GetBitContext gb;
@@ -17,20 +37,16 @@ typedef struct ShortenContext {
17 int bits_per_sample; 37 int bits_per_sample;
18 int version; 38 int version;
19 int bitshift; 39 int bitshift;
40 int last_bitshift;
20 int nmean; 41 int nmean;
21 int nwrap; 42 int nwrap;
22 int blocksize; 43 int blocksize;
23 int bitindex; 44 int bitindex;
24/* Not needed...
25 int bit_rate;
26 int block_align;
27 int chunk_size;
28*/
29} ShortenContext; 45} ShortenContext;
30 46
31int shorten_init(ShortenContext* s, uint8_t *buf, int buf_size); 47int shorten_init(ShortenContext* s, uint8_t *buf, int buf_size);
32int shorten_decode_frame(ShortenContext *s, 48int shorten_decode_frames(ShortenContext *s, int *nsamples,
33 int32_t *decoded, 49 int32_t *decoded0, int32_t *decoded1,
34 int32_t *offset, 50 int32_t *offset0, int32_t *offset1,
35 uint8_t *buf, 51 uint8_t *buf, int buf_size,
36 int buf_size) ICODE_ATTR; 52 void (*yield)(void)) ICODE_ATTR;