diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-05-02 22:25:21 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-05-02 22:25:21 +0000 |
| commit | f8c396e46103a84e71406df25493c06bf0e1f2da (patch) | |
| tree | 82b391f1280f3c282fc65923ddfb9e7185999d9b /src/plugins/Input/mpeg/decodermpegfactory.cpp | |
| parent | 184e5f86cea9a0c92a660fe4d33f0aad701d29d7 (diff) | |
| download | qmmp-f8c396e46103a84e71406df25493c06bf0e1f2da.tar.gz qmmp-f8c396e46103a84e71406df25493c06bf0e1f2da.tar.bz2 qmmp-f8c396e46103a84e71406df25493c06bf0e1f2da.zip | |
mpeg: fixed file type determination by content
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8840 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mpeg/decodermpegfactory.cpp')
| -rw-r--r-- | src/plugins/Input/mpeg/decodermpegfactory.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.cpp b/src/plugins/Input/mpeg/decodermpegfactory.cpp index 7247e3b3c..0ca79374d 100644 --- a/src/plugins/Input/mpeg/decodermpegfactory.cpp +++ b/src/plugins/Input/mpeg/decodermpegfactory.cpp @@ -23,6 +23,7 @@ #include <QSettings> #include <QFile> #include <QTextCodec> +#include <QtDebug> #include <taglib/tag.h> #include <taglib/fileref.h> #include <taglib/id3v1tag.h> @@ -108,32 +109,36 @@ bool DecoderMPEGFactory::canDecode(QIODevice *input) const QSettings settings(Qmmp::configFile(), QSettings::IniFormat); decoderName = settings.value("MPEG/decoder", "mad").toString(); #elif defined(WITH_MAD) - decoderName = "mpg123"; -#elif defined(WITH_MPG123) decoderName = "mad"; +#elif defined(WITH_MPG123) + decoderName = "mpg123"; #endif #ifdef WITH_MAD - if(decoderName == "mpg123") + if(decoderName != "mpg123") { struct mad_stream stream; struct mad_header header; int dec_res; - mad_stream_init (&stream); - mad_header_init (&header); + mad_stream_init(&stream); + mad_header_init(&header); mad_stream_buffer (&stream, (unsigned char *) buf, dataSize); stream.error = MAD_ERROR_NONE; while ((dec_res = mad_header_decode(&header, &stream)) == -1 && MAD_RECOVERABLE(stream.error)) ; - return dec_res != -1 ? true: false; + + if(dec_res == 0) + dec_res = mad_header_decode(&header, &stream); + + return dec_res == 0; } #endif #ifdef WITH_MPG123 - if (decoderName != "mpg123") + if (decoderName == "mpg123") { mpg123_init(); mpg123_handle *handle = mpg123_new(nullptr, nullptr); |
