diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-02-15 20:00:28 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-02-15 20:00:28 +0000 |
commit | 237ca504e12c06a5cfa7cd0fb9d9c672dc588f1c (patch) | |
tree | b6454cdfaa01c749e986386f7b3bc9fdc3a5f6c8 /apps/metadata/id3tags.c | |
parent | 258626f4550be2e586c9e5acf20cb71ee001a8e4 (diff) | |
download | rockbox-237ca504e12c06a5cfa7cd0fb9d9c672dc588f1c.tar.gz rockbox-237ca504e12c06a5cfa7cd0fb9d9c672dc588f1c.zip |
All AAC-HE files will double the frame sample count, not only AAC-HE files with SBR upsampling. This change fixes issues with some m4a files reported in the forums.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29310 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/metadata/id3tags.c')
-rw-r--r-- | apps/metadata/id3tags.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/apps/metadata/id3tags.c b/apps/metadata/id3tags.c index 9ee183a1b3..9143f8ad25 100644 --- a/apps/metadata/id3tags.c +++ b/apps/metadata/id3tags.c @@ -358,8 +358,7 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos ) if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos) { /* At least part of the value was read, so we can safely try to - * parse it - */ + * parse it */ value = tag + desc_len + 1; value_len = bufferpos - (tag - entry->id3v2buf); @@ -368,8 +367,7 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos ) entry->albumartist = tag; #if CONFIG_CODEC == SWCODEC } else { - value_len = parse_replaygain(tag, value, entry, tag, - value_len); + value_len = parse_replaygain(tag, value, entry, tag, value_len); #endif } } @@ -1040,6 +1038,12 @@ void setid3v2title(int fd, struct mp3entry *entry) #endif if( tr->ppFunc ) bufferpos = tr->ppFunc(entry, tag, bufferpos); + + /* Trim. Take into account that multiple string contents will + * only be displayed up to their first null termination. All + * content after this null termination is obsolete and can be + * overwritten. */ + bufferpos -= (bytesread - strlen(tag)); /* Seek to the next frame */ if(framelen < totframelen) |