summaryrefslogtreecommitdiff
path: root/cmp3.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-07-08 19:43:00 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-07-08 19:43:00 +0200
commitbb6da46236137f12be28147f93ea9654c5ccc125 (patch)
treef8be30e0cdffc6463624960adbdbc4d39f59d3e1 /cmp3.c
parentce1ae490f2c6b2d967aa4b47c69846ed2365d9d9 (diff)
[WIP] disabled most codecs, moved streaming out of psdl
Diffstat (limited to 'cmp3.c')
-rw-r--r--cmp3.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/cmp3.c b/cmp3.c
index 410fa670..0d2ceb21 100644
--- a/cmp3.c
+++ b/cmp3.c
@@ -312,6 +312,7 @@ cmp3_skip2 (float seconds) {
static int
cmp3_decode (void) {
+ int nread = 0;
for (;;) {
// read more MPEG data if needed
if(stream.buffer==NULL || stream.error==MAD_ERROR_BUFLEN) {
@@ -381,11 +382,13 @@ cmp3_decode (void) {
*((int16_t*)buffer.output) = MadFixedToSshort(synth.pcm.samples[0][i]);
buffer.output+=2;
buffer.readsize-=2;
+ nread += 2;
if(MAD_NCHANNELS(&frame.header)==2) {
*((int16_t*)buffer.output) = MadFixedToSshort(synth.pcm.samples[1][i]);
buffer.output+=2;
buffer.readsize-=2;
+ nread += 2;
}
}
else if (buffer.cachefill < CACHESIZE) {
@@ -408,14 +411,14 @@ cmp3_decode (void) {
if (buffer.readsize == 0) {
break;
}
- if (buffer.readsize > 0 && endoffile) {
- // fill rest with zeroes, and return -1
- memset (buffer.output, 0, buffer.readsize);
- return -1;
- }
+// if (buffer.readsize > 0 && endoffile) {
+// // fill rest with zeroes, and return -1
+// memset (buffer.output, 0, buffer.readsize);
+// return -1;
+// }
}
cmp3.info.position = (float)timer.seconds + (float)timer.fraction / MAD_TIMER_RESOLUTION;
- return 0;
+ return nread;
}
void
@@ -432,14 +435,13 @@ cmp3_free (void) {
int
cmp3_read (char *bytes, int size) {
int result;
- int totalread = 0;
int ret = 0;
if (buffer.cachefill > 0) {
int sz = min (size, buffer.cachefill);
memcpy (bytes, buffer.cache, sz);
bytes += sz;
size -= sz;
- totalread += sz;
+ ret += sz;
if (buffer.cachefill > sz) {
memmove (buffer.cache, &buffer.cache[sz], buffer.cachefill-sz);
buffer.cachefill -= sz;
@@ -451,8 +453,7 @@ cmp3_read (char *bytes, int size) {
if (size > 0) {
buffer.output = bytes;
buffer.readsize = size;
- ret = cmp3_decode ();
- totalread += size;
+ ret += cmp3_decode ();
}
return ret;
}