From f8c396e46103a84e71406df25493c06bf0e1f2da Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 2 May 2019 22:25:21 +0000 Subject: 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 --- src/plugins/Input/mpeg/decodermpegfactory.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/plugins/Input/mpeg/decodermpegfactory.cpp') 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 #include #include +#include #include #include #include @@ -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); -- cgit v1.2.3-13-gbd6f