summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/demac/libdemac')
-rw-r--r--apps/codecs/demac/libdemac/Makefile2
-rw-r--r--apps/codecs/demac/libdemac/decoder.c2
-rw-r--r--apps/codecs/demac/libdemac/parser.c14
-rw-r--r--apps/codecs/demac/libdemac/parser.h7
-rw-r--r--apps/codecs/demac/libdemac/predictor.c2
5 files changed, 19 insertions, 8 deletions
diff --git a/apps/codecs/demac/libdemac/Makefile b/apps/codecs/demac/libdemac/Makefile
index 7fc784dd5f..6ef55d7fb9 100644
--- a/apps/codecs/demac/libdemac/Makefile
+++ b/apps/codecs/demac/libdemac/Makefile
@@ -4,7 +4,7 @@
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# $Id:$ 7# $Id$
8# 8#
9 9
10INCLUDES=-I$(APPSDIR) -I.. -I. -I$(FIRMDIR)/include -I$(FIRMDIR)/export \ 10INCLUDES=-I$(APPSDIR) -I.. -I. -I$(FIRMDIR)/include -I$(FIRMDIR)/export \
diff --git a/apps/codecs/demac/libdemac/decoder.c b/apps/codecs/demac/libdemac/decoder.c
index 22b6e8d325..ba8c393a67 100644
--- a/apps/codecs/demac/libdemac/decoder.c
+++ b/apps/codecs/demac/libdemac/decoder.c
@@ -2,7 +2,7 @@
2 2
3libdemac - A Monkey's Audio decoder 3libdemac - A Monkey's Audio decoder
4 4
5$Id:$ 5$Id$
6 6
7Copyright (C) Dave Chapman 2007 7Copyright (C) Dave Chapman 2007
8 8
diff --git a/apps/codecs/demac/libdemac/parser.c b/apps/codecs/demac/libdemac/parser.c
index 4e907308b6..7e0fd8f250 100644
--- a/apps/codecs/demac/libdemac/parser.c
+++ b/apps/codecs/demac/libdemac/parser.c
@@ -92,6 +92,10 @@ int ape_parseheaderbuf(unsigned char* buf, struct ape_ctx_t* ape_ctx)
92 ape_ctx->channels = get_uint16(header + 18); 92 ape_ctx->channels = get_uint16(header + 18);
93 ape_ctx->samplerate = get_uint32(header + 20); 93 ape_ctx->samplerate = get_uint32(header + 20);
94 94
95 ape_ctx->seektablefilepos = ape_ctx->junklength +
96 ape_ctx->descriptorlength +
97 ape_ctx->headerlength;
98
95 ape_ctx->firstframe = ape_ctx->junklength + ape_ctx->descriptorlength + 99 ape_ctx->firstframe = ape_ctx->junklength + ape_ctx->descriptorlength +
96 ape_ctx->headerlength + ape_ctx->seektablelength + 100 ape_ctx->headerlength + ape_ctx->seektablelength +
97 ape_ctx->wavheaderlength; 101 ape_ctx->wavheaderlength;
@@ -133,15 +137,19 @@ int ape_parseheaderbuf(unsigned char* buf, struct ape_ctx_t* ape_ctx)
133 else 137 else
134 ape_ctx->blocksperframe = 9216; 138 ape_ctx->blocksperframe = 9216;
135 139
136 ape_ctx->firstframe = ape_ctx->junklength + ape_ctx->headerlength + 140 ape_ctx->seektablefilepos = ape_ctx->junklength + ape_ctx->headerlength +
137 ape_ctx->seektablelength + ape_ctx->wavheaderlength; 141 ape_ctx->wavheaderlength;
142
143 ape_ctx->firstframe = ape_ctx->junklength + ape_ctx->headerlength +
144 ape_ctx->wavheaderlength + ape_ctx->seektablelength;
138 } 145 }
139 146
140 ape_ctx->totalsamples = ape_ctx->finalframeblocks; 147 ape_ctx->totalsamples = ape_ctx->finalframeblocks;
141 if (ape_ctx->totalframes > 1) 148 if (ape_ctx->totalframes > 1)
142 ape_ctx->totalsamples += ape_ctx->blocksperframe * (ape_ctx->totalframes-1); 149 ape_ctx->totalsamples += ape_ctx->blocksperframe * (ape_ctx->totalframes-1);
143 150
144 /* TODO: Parse and store seektable */ 151 ape_ctx->numseekpoints = MAX(ape_ctx->maxseekpoints,
152 ape_ctx->seektablelength / sizeof(int32_t));
145 153
146 return 0; 154 return 0;
147} 155}
diff --git a/apps/codecs/demac/libdemac/parser.h b/apps/codecs/demac/libdemac/parser.h
index edf4222fd5..0e35425315 100644
--- a/apps/codecs/demac/libdemac/parser.h
+++ b/apps/codecs/demac/libdemac/parser.h
@@ -2,7 +2,7 @@
2 2
3libdemac - A Monkey's Audio decoder 3libdemac - A Monkey's Audio decoder
4 4
5$Id:$ 5$Id$
6 6
7Copyright (C) Dave Chapman 2007 7Copyright (C) Dave Chapman 2007
8 8
@@ -119,7 +119,10 @@ struct ape_ctx_t
119 uint32_t samplerate; 119 uint32_t samplerate;
120 120
121 /* Seektable */ 121 /* Seektable */
122 uint32_t* seektable; 122 uint32_t* seektable; /* Seektable buffer */
123 uint32_t maxseekpoints; /* Max seekpoints we can store (size of seektable buffer) */
124 uint32_t numseekpoints; /* Number of seekpoints */
125 int seektablefilepos; /* Location in .ape file of seektable */
123 126
124 /* Decoder state */ 127 /* Decoder state */
125 uint32_t CRC; 128 uint32_t CRC;
diff --git a/apps/codecs/demac/libdemac/predictor.c b/apps/codecs/demac/libdemac/predictor.c
index ef72fedfbd..9531786fd1 100644
--- a/apps/codecs/demac/libdemac/predictor.c
+++ b/apps/codecs/demac/libdemac/predictor.c
@@ -2,7 +2,7 @@
2 2
3libdemac - A Monkey's Audio decoder 3libdemac - A Monkey's Audio decoder
4 4
5$Id:$ 5$Id$
6 6
7Copyright (C) Dave Chapman 2007 7Copyright (C) Dave Chapman 2007
8 8