mp3_afh: Take padding into account when computing frame duration.
authorAndre Noll <maan@systemlinux.org>
Sat, 30 Jul 2011 16:14:25 +0000 (18:14 +0200)
committerAndre Noll <maan@systemlinux.org>
Sat, 13 Aug 2011 10:39:13 +0000 (12:39 +0200)
Without this fix, the computed duration of a frame can be slightly
larger than its actual duration. If this happens for many frames of
an mp3 file, the chunk size will be slightly too large, which leads
to buffer underruns during streaming.

mp3_afh.c

index b83343e..b0d44ec 100644 (file)
--- a/mp3_afh.c
+++ b/mp3_afh.c
@@ -420,7 +420,7 @@ static int mp3_read_info(unsigned char *map, size_t numbytes, int fd,
                if (ret < 0)
                        continue;
                fl = ret;
-               tmp.tv_sec = fl;
+               tmp.tv_sec = fl - header.padding;
                tmp.tv_usec = 0;
                tv_divide(br * 125, &tmp, &cct);
                tv_add(&cct, &total_time, &tmp);