From 33df565584d23f8f8d1d2f1e56ff855948440329 Mon Sep 17 00:00:00 2001 From: Michael Giacomelli Date: Fri, 2 Jul 2010 18:39:11 +0000 Subject: Commit FS#7831. Corrects our flac decoder to not reject files that have samplecount set to 0. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27244 a1c6a512-1295-4272-9138-f99709370657 --- apps/metadata/flac.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/metadata/flac.c b/apps/metadata/flac.c index b8f440c3ed..29937173fd 100644 --- a/apps/metadata/flac.c +++ b/apps/metadata/flac.c @@ -86,17 +86,24 @@ bool get_flac_metadata(int fd, struct mp3entry* id3) /* totalsamples is a 36-bit field, but we assume <= 32 bits are used */ totalsamples = get_long_be(&buf[14]); - - /* Calculate track length (in ms) and estimate the bitrate (in kbit/s) */ - id3->length = ((int64_t) totalsamples * 1000) / id3->frequency; - - if (id3->length <= 0) + + if(totalsamples > 0) + { + /* Calculate track length (in ms) and estimate the bitrate (in kbit/s) */ + id3->length = ((int64_t) totalsamples * 1000) / id3->frequency; + id3->bitrate = (id3->filesize * 8) / id3->length; + } + else if (totalsamples == 0) + { + id3->length = 0; + id3->bitrate = 0; + } + else { logf("flac length invalid!"); return false; } - id3->bitrate = ((int64_t) id3->filesize * 8) / id3->length; } else if (type == 4) /* 4 is the VORBIS_COMMENT block */ { -- cgit v1.2.3