summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/mpeg.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 480cb1be57..e42623cbd9 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -1924,7 +1924,14 @@ static void mpeg_thread(void)
1924 1924
1925 /* Read the first MP3 frame from the recorded stream */ 1925 /* Read the first MP3 frame from the recorded stream */
1926 lseek(mpeg_file, MPEG_RESERVED_HEADER_SPACE, SEEK_SET); 1926 lseek(mpeg_file, MPEG_RESERVED_HEADER_SPACE, SEEK_SET);
1927 read(mpeg_file, &saved_header, 4); 1927 rc = read(mpeg_file, &saved_header, 4);
1928 if(rc <= 0)
1929 {
1930 close(mpeg_file);
1931 mpeg_file = -1;
1932 mpeg_stop_done = true;
1933 break;
1934 }
1928 1935
1929 framelen = create_xing_header(mpeg_file, 0, 1936 framelen = create_xing_header(mpeg_file, 0,
1930 num_rec_bytes, mp3buf, 1937 num_rec_bytes, mp3buf,
@@ -1980,13 +1987,21 @@ static void mpeg_thread(void)
1980 DEBUGF("Header: %08x\n", saved_header); 1987 DEBUGF("Header: %08x\n", saved_header);
1981 } 1988 }
1982 1989
1983 mem_find_next_frame(startpos, &offset, 1800, saved_header); 1990 rc = mem_find_next_frame(startpos, &offset, 1800,
1984 1991 saved_header);
1985 /* offset will now contain the number of bytes to 1992 if(rc) /* Header found? */
1986 add to startpos to find the frame boundary */ 1993 {
1987 startpos += offset; 1994 /* offset will now contain the number of bytes to
1988 if(startpos >= mp3buflen) 1995 add to startpos to find the frame boundary */
1989 startpos -= mp3buflen; 1996 startpos += offset;
1997 if(startpos >= mp3buflen)
1998 startpos -= mp3buflen;
1999 }
2000 else
2001 {
2002 /* No header found. Let's save the whole buffer. */
2003 startpos = mp3buf_write;
2004 }
1990 2005
1991 amount_to_save = startpos - mp3buf_read; 2006 amount_to_save = startpos - mp3buf_read;
1992 if(amount_to_save < 0) 2007 if(amount_to_save < 0)