diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/mpeg.c | 12 |
1 files changed, 10 insertions, 2 deletions
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) | |||
1752 | if(is_prerecording) | 1752 | if(is_prerecording) |
1753 | { | 1753 | { |
1754 | int startpos, i; | 1754 | int startpos, i; |
1755 | int level; | ||
1755 | 1756 | ||
1756 | /* Go back prerecord_count seconds in the buffer */ | 1757 | /* Go back prerecord_count seconds in the buffer */ |
1757 | startpos = prerecord_index - prerecord_count; | 1758 | startpos = prerecord_index - prerecord_count; |
1758 | if(startpos < 0) | 1759 | if(startpos < 0) |
1759 | startpos += prerecording_max_seconds; | 1760 | startpos += prerecording_max_seconds; |
1760 | 1761 | ||
1761 | /* Read the mp3 buffer pointer from the prerecord buffer */ | 1762 | /* Read the mp3 buffer pointer from the prerecord |
1763 | buffer */ | ||
1762 | startpos = prerecord_buffer[startpos]; | 1764 | startpos = prerecord_buffer[startpos]; |
1763 | 1765 | ||
1764 | DEBUGF("Start looking at address %x (%x)\n", | 1766 | DEBUGF("Start looking at address %x (%x)\n", |
@@ -1770,10 +1772,16 @@ static void mpeg_thread(void) | |||
1770 | saved_header); | 1772 | saved_header); |
1771 | 1773 | ||
1772 | audiobuf_read = startpos + offset; | 1774 | audiobuf_read = startpos + offset; |
1773 | 1775 | if(audiobuf_read >= audiobuflen) | |
1776 | audiobuf_read -= audiobuflen; | ||
1777 | |||
1774 | DEBUGF("New audiobuf_read address: %x (%x)\n", | 1778 | DEBUGF("New audiobuf_read address: %x (%x)\n", |
1775 | audiobuf+audiobuf_read, audiobuf_read); | 1779 | audiobuf+audiobuf_read, audiobuf_read); |
1776 | 1780 | ||
1781 | level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
1782 | num_rec_bytes = get_unsaved_space(); | ||
1783 | set_irq_level(level); | ||
1784 | |||
1777 | /* Make room for headers */ | 1785 | /* Make room for headers */ |
1778 | audiobuf_read -= MPEG_RESERVED_HEADER_SPACE; | 1786 | audiobuf_read -= MPEG_RESERVED_HEADER_SPACE; |
1779 | if(audiobuf_read < 0) | 1787 | if(audiobuf_read < 0) |