aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mad
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-08-01 06:18:44 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-08-01 06:18:44 +0000
commit9b963dd173779f35317e9476eb341f2c82b5772b (patch)
treedde6e0ff7ac1886d88a5facfce61a8bb4361b4cc /src/plugins/Input/mad
parent0e5678ebc94b223d933d32a17710ae32e688af30 (diff)
downloadqmmp-9b963dd173779f35317e9476eb341f2c82b5772b.tar.gz
qmmp-9b963dd173779f35317e9476eb341f2c82b5772b.tar.bz2
qmmp-9b963dd173779f35317e9476eb341f2c82b5772b.zip
mpeg plugin: fixed duration calculation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6616 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mad')
-rw-r--r--src/plugins/Input/mad/decoder_mad.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp
index 69a4ef859..79e266ed5 100644
--- a/src/plugins/Input/mad/decoder_mad.cpp
+++ b/src/plugins/Input/mad/decoder_mad.cpp
@@ -202,6 +202,7 @@ bool DecoderMAD::findHeader()
mad_timer_t duration = mad_timer_zero;
struct mad_header header;
mad_header_init (&header);
+ uint id3v2Size = 0;
forever
{
@@ -232,7 +233,10 @@ bool DecoderMAD::findHeader()
uint tagSize = findID3v2((uchar *)m_stream.this_frame,
(ulong) (m_stream.bufend - m_stream.this_frame));
if (tagSize > 0)
+ {
mad_stream_skip(&m_stream, tagSize);
+ id3v2Size = tagSize;
+ }
continue;
}
else if (m_stream.error == MAD_ERROR_BUFLEN || MAD_RECOVERABLE(m_stream.error))
@@ -292,7 +296,7 @@ bool DecoderMAD::findHeader()
if (!is_vbr && !input()->isSequential())
{
- double time = (input()->size() * 8.0) / (header.bitrate);
+ double time = ((input()->size() - id3v2Size) * 8.0) / (header.bitrate);
double timefrac = (double)time - ((long)(time));
mad_timer_set(&duration, (long)time, (long)(timefrac*100), 100);
}