Hopefully fix red now and reduce binsize for HWCODEC targets. This change implements a local read_uint32be() function within the mp3data parser.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29606 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ea61fb8023
commit
3706d6d0b5
3 changed files with 16 additions and 4 deletions
|
@ -198,8 +198,8 @@ gui/usb_screen.c
|
||||||
metadata.c
|
metadata.c
|
||||||
metadata/id3tags.c
|
metadata/id3tags.c
|
||||||
metadata/mp3.c
|
metadata/mp3.c
|
||||||
metadata/metadata_common.c
|
|
||||||
#if CONFIG_CODEC == SWCODEC
|
#if CONFIG_CODEC == SWCODEC
|
||||||
|
metadata/metadata_common.c
|
||||||
metadata/aiff.c
|
metadata/aiff.c
|
||||||
metadata/ape.c
|
metadata/ape.c
|
||||||
metadata/asf.c
|
metadata/asf.c
|
||||||
|
|
|
@ -213,7 +213,6 @@ unsigned long get_itunes_int32(char* value, int count)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_CODEC == SWCODEC
|
|
||||||
/* Skip an ID3v2 tag if it can be found. We assume the tag is located at the
|
/* Skip an ID3v2 tag if it can be found. We assume the tag is located at the
|
||||||
* start of the file, which should be true in all cases where we need to skip it.
|
* start of the file, which should be true in all cases where we need to skip it.
|
||||||
* Returns true if successfully skipped or not skipped, and false if
|
* Returns true if successfully skipped or not skipped, and false if
|
||||||
|
@ -360,4 +359,3 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3,
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
|
@ -213,6 +213,19 @@ static bool headers_have_same_type(unsigned long header1,
|
||||||
return header1 ? (header1 == header2) : true;
|
return header1 ? (header1 == header2) : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper function to read 4-byte in big endian format. */
|
||||||
|
static void read_uint32be_mp3data(int fd, unsigned long *data, long *pos)
|
||||||
|
{
|
||||||
|
#ifdef ROCKBOX_BIG_ENDIAN
|
||||||
|
(void)read(fd, (char*)data, 4);
|
||||||
|
#else
|
||||||
|
char tmp[4];
|
||||||
|
(void)read(fd, tmp, 4);
|
||||||
|
*data = (tmp[0]<<24) | (tmp[1]<<16) | (tmp[2]<<8) | tmp[3];
|
||||||
|
#endif
|
||||||
|
*pos += 4;
|
||||||
|
}
|
||||||
|
|
||||||
static unsigned long __find_next_frame(int fd, long *offset, long max_offset,
|
static unsigned long __find_next_frame(int fd, long *offset, long max_offset,
|
||||||
unsigned long reference_header,
|
unsigned long reference_header,
|
||||||
int(*getfunc)(int fd, unsigned char *c),
|
int(*getfunc)(int fd, unsigned char *c),
|
||||||
|
@ -259,7 +272,8 @@ static unsigned long __find_next_frame(int fd, long *offset, long max_offset,
|
||||||
/* Read possible next frame header and seek back to last frame
|
/* Read possible next frame header and seek back to last frame
|
||||||
* headers byte position. */
|
* headers byte position. */
|
||||||
reference_header = 0;
|
reference_header = 0;
|
||||||
read_uint32be(fd, (uint32_t*)&reference_header);
|
read_uint32be_mp3data(fd, &reference_header, &pos);
|
||||||
|
//
|
||||||
lseek(fd, -info.frame_size, SEEK_CUR);
|
lseek(fd, -info.frame_size, SEEK_CUR);
|
||||||
|
|
||||||
/* If the current header is of the same type as the previous
|
/* If the current header is of the same type as the previous
|
||||||
|
|
Loading…
Reference in a new issue