aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mpeg/decoder_mpg123.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-02-07 09:13:30 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-02-07 09:13:30 +0000
commitac6d8277a317d1f4cc1d5a1425126addd1ec19aa (patch)
tree1c325eb1b0a0481dde8b4f743e568f6b51a4ad35 /src/plugins/Input/mpeg/decoder_mpg123.cpp
parent1bf8aa77a2f34cba93d42901736b2c5c5509b671 (diff)
downloadqmmp-ac6d8277a317d1f4cc1d5a1425126addd1ec19aa.tar.gz
qmmp-ac6d8277a317d1f4cc1d5a1425126addd1ec19aa.tar.bz2
qmmp-ac6d8277a317d1f4cc1d5a1425126addd1ec19aa.zip
mpg123: skip errors
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7838 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mpeg/decoder_mpg123.cpp')
-rw-r--r--src/plugins/Input/mpeg/decoder_mpg123.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/plugins/Input/mpeg/decoder_mpg123.cpp b/src/plugins/Input/mpeg/decoder_mpg123.cpp
index f69d05bca..16d442fd0 100644
--- a/src/plugins/Input/mpeg/decoder_mpg123.cpp
+++ b/src/plugins/Input/mpeg/decoder_mpg123.cpp
@@ -67,7 +67,7 @@ DecoderMPG123::DecoderMPG123(QIODevice *i) : Decoder(i)
m_frame_info.bitrate = 0;
m_mpg123_encoding = MPG123_ENC_SIGNED_16;
m_handle = 0;
- m_resync_errors = 0;
+ m_errors = 0;
}
DecoderMPG123::~DecoderMPG123()
@@ -78,7 +78,7 @@ DecoderMPG123::~DecoderMPG123()
bool DecoderMPG123::initialize()
{
- m_resync_errors = 0;
+ m_errors = 0;
if (input()->isSequential ()) //for streams only
{
TagExtractor extractor(input());
@@ -166,14 +166,17 @@ qint64 DecoderMPG123::read(unsigned char *data, qint64 size)
if(err < 0)
{
err = mpg123_errcode(m_handle);
- if(err == MPG123_RESYNC_FAIL && m_resync_errors < 10)
+ if(!m_errors)
+ qWarning("DecoderMPG123: decoder error: %s", mpg123_plain_strerror(err));
+
+ if(m_errors < 10)
{
qWarning("DecoderMPG123: skipping resync error...");
- m_resync_errors++;
+ m_errors++;
+ if(err == MPG123_RESYNC_FAIL && done > 0)
+ memset(data, 0, done);
return done;
}
-
- qWarning("DecoderMPG123: decoder error: %s", mpg123_plain_strerror(err));
return -1;
}
else if(err != MPG123_DONE && err != MPG123_OK)
@@ -181,7 +184,7 @@ qint64 DecoderMPG123::read(unsigned char *data, qint64 size)
qWarning("DecoderMPG123: decoder error: %s", mpg123_plain_strerror(err));
return -1;
}
- m_resync_errors = 0;
+ m_errors = 0;
mpg123_info(m_handle, &m_frame_info);
return done;
}