[prev in list] [next in list] [prev in thread] [next in thread] 

List:       taglib-devel
Subject:    [PATCH] Fix calculation of length and bitrate in Xing header
From:       "Xavier Duret" <xaviour.maillists () gmail ! com>
Date:       2007-01-16 19:10:28
Message-ID: d3ef58310701161110q4320f1f3r3514fd1681e863d9 () mail ! gmail ! com
[Download RAW message or body]

The previous version made the compiler use an integer division which
lead to timePerFrame being equal to 0. If this leads to the other
extreme (overflow) then a 64 bits integer could be used.

diff -ruN  taglib/mpeg/mpegproperties.cpp.old taglib/mpeg/mpegproperties.cpp
--- taglib/mpeg/mpegproperties.cpp.old  2007-01-16 18:37:30.000000000 +0100
+++ taglib/mpeg/mpegproperties.cpp      2007-01-16 18:36:03.000000000 +0100
@@ -213,8 +213,7 @@
   {
       static const int blockSize[] = { 0, 384, 1152, 1152 };

-      double timePerFrame = blockSize[firstHeader.layer()] /
firstHeader.sampleRate();
-      d->length = int(timePerFrame * d->xingHeader->totalFrames());
+      d->length = (blockSize[firstHeader.layer()] *
d->xingHeader->totalFrames()) / firstHeader.sampleRate();
       d->bitrate = d->length > 0 ? d->xingHeader->totalSize() * 8 /
d->length / 1000 : 0;
   }
   else {
_______________________________________________
taglib-devel mailing list
taglib-devel@kde.org
https://mail.kde.org/mailman/listinfo/taglib-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic