summaryrefslogtreecommitdiff
path: root/apps/mp3data.h
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2011-03-16 18:45:03 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2011-03-16 18:45:03 +0000
commit25246f7e477eebe1cfd25741ba4744cc3b577684 (patch)
tree63a893259b1183177e7166acd65b6e9926690fb4 /apps/mp3data.h
parent8c46ddf9d719fb29f483dc21993167907953f39c (diff)
downloadrockbox-25246f7e477eebe1cfd25741ba4744cc3b577684.zip
rockbox-25246f7e477eebe1cfd25741ba4744cc3b577684.tar.gz
rockbox-25246f7e477eebe1cfd25741ba4744cc3b577684.tar.bz2
rockbox-25246f7e477eebe1cfd25741ba4744cc3b577684.tar.xz
More robust implementation of MPEG frame header search. The parser will not only search for the very first byte sequence that looks like a valid MPEG frame header. It will search for a valid MPEG frame header sequence, decode it, and probe if there is a consecutive MPEG frame header of the same type (MPEG version, layer, sampling frequency) at the expected position. This approach will reduce false detection of MPEG frame headers in case of errorous metadata or garbaged files. Fixes FS#12007.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29603 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/mp3data.h')
-rw-r--r--apps/mp3data.h32
1 files changed, 22 insertions, 10 deletions
diff --git a/apps/mp3data.h b/apps/mp3data.h
index 0fccd62..edda352 100644
--- a/apps/mp3data.h
+++ b/apps/mp3data.h
@@ -57,17 +57,29 @@ struct mp3info {
#define MAX_XING_HEADER_SIZE 576
-unsigned long find_next_frame(int fd, long *offset, long max_offset,
- unsigned long last_header);
-unsigned long mem_find_next_frame(int startpos, long *offset, long max_offset,
- unsigned long last_header);
-int get_mp3file_info(int fd, struct mp3info *info);
-int count_mp3_frames(int fd, int startpos, int filesize,
+unsigned long find_next_frame(int fd,
+ long *offset,
+ long max_offset,
+ unsigned long reference_header);
+unsigned long mem_find_next_frame(int startpos,
+ long *offset,
+ long max_offset,
+ unsigned long reference_header);
+int get_mp3file_info(int fd,
+ struct mp3info *info);
+int count_mp3_frames(int fd,
+ int startpos,
+ int filesize,
void (*progressfunc)(int));
-int create_xing_header(int fd, long startpos, long filesize,
- unsigned char *buf, unsigned long num_frames,
- unsigned long rec_time, unsigned long header_template,
- void (*progressfunc)(int), bool generate_toc);
+int create_xing_header(int fd,
+ long startpos,
+ long filesize,
+ unsigned char *buf,
+ unsigned long num_frames,
+ unsigned long rec_time,
+ unsigned long header_template,
+ void (*progressfunc)(int),
+ bool generate_toc);
extern unsigned long bytes2int(unsigned long b0,
unsigned long b1,