diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-02-07 09:13:30 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-02-07 09:13:30 +0000 |
| commit | ac6d8277a317d1f4cc1d5a1425126addd1ec19aa (patch) | |
| tree | 1c325eb1b0a0481dde8b4f743e568f6b51a4ad35 /src/plugins/Input/mpeg/decoder_mpg123.cpp | |
| parent | 1bf8aa77a2f34cba93d42901736b2c5c5509b671 (diff) | |
| download | qmmp-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.cpp | 17 |
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; } |
