From 051f2cf3de7d6b839dea962f69a898a46f29f678 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Fri, 2 Sep 2005 07:01:08 +0000 Subject: Adjusted the file size calculation when prerecording git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7451 a1c6a512-1295-4272-9138-f99709370657 --- firmware/mpeg.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'firmware/mpeg.c') diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 933d02ce8a..cd413d60fd 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c @@ -1752,13 +1752,15 @@ static void mpeg_thread(void) if(is_prerecording) { int startpos, i; + int level; /* Go back prerecord_count seconds in the buffer */ startpos = prerecord_index - prerecord_count; if(startpos < 0) startpos += prerecording_max_seconds; - /* Read the mp3 buffer pointer from the prerecord buffer */ + /* Read the mp3 buffer pointer from the prerecord + buffer */ startpos = prerecord_buffer[startpos]; DEBUGF("Start looking at address %x (%x)\n", @@ -1770,10 +1772,16 @@ static void mpeg_thread(void) saved_header); audiobuf_read = startpos + offset; - + if(audiobuf_read >= audiobuflen) + audiobuf_read -= audiobuflen; + DEBUGF("New audiobuf_read address: %x (%x)\n", audiobuf+audiobuf_read, audiobuf_read); + level = set_irq_level(HIGHEST_IRQ_LEVEL); + num_rec_bytes = get_unsaved_space(); + set_irq_level(level); + /* Make room for headers */ audiobuf_read -= MPEG_RESERVED_HEADER_SPACE; if(audiobuf_read < 0) -- cgit v1.2.3