diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-06-20 06:49:57 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-06-20 06:49:57 +0000 |
| commit | 30dc47d87a4e4ff591c9eef3f6a18308fa6ba532 (patch) | |
| tree | 342183ff6ad252a674cc959af76955e7eccc17e6 | |
| parent | 29ba92f7e9ad3d3f397a592f8c2b1770b9fee380 (diff) | |
| download | qmmp-30dc47d87a4e4ff591c9eef3f6a18308fa6ba532.tar.gz qmmp-30dc47d87a4e4ff591c9eef3f6a18308fa6ba532.tar.bz2 qmmp-30dc47d87a4e4ff591c9eef3f6a18308fa6ba532.zip | |
added wildmidi-0.4.0 support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6478 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/sid/decodersidfactory.cpp | 8 | ||||
| -rw-r--r-- | src/plugins/Input/wildmidi/decoder_wildmidi.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Input/wildmidi/decoder_wildmidi.h | 2 | ||||
| -rw-r--r-- | src/plugins/Input/wildmidi/decoderwildmidifactory.cpp | 19 |
4 files changed, 34 insertions, 5 deletions
diff --git a/src/plugins/Input/sid/decodersidfactory.cpp b/src/plugins/Input/sid/decodersidfactory.cpp index b58658acf..8982bfeca 100644 --- a/src/plugins/Input/sid/decodersidfactory.cpp +++ b/src/plugins/Input/sid/decodersidfactory.cpp @@ -23,6 +23,7 @@ #include <QtPlugin> #include <QRegExp> #include <QSettings> +#include <QFile> #include <sidplayfp/SidTune.h> #include <sidplayfp/SidTuneInfo.h> #include "decoder_sid.h" @@ -47,6 +48,13 @@ DecoderSIDFactory::DecoderSIDFactory() bool DecoderSIDFactory::supports(const QString &source) const { + if(source.endsWith(".mus", Qt::CaseInsensitive)) + { + QFile file(source); + file.open(QIODevice::ReadOnly); + return canDecode(&file); + } + foreach(QString filter, properties().filters) { QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard); diff --git a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp index 408755a35..ef45482c0 100644 --- a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp +++ b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2012 by Ilya Kotov * + * Copyright (C) 2008-2016 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -18,6 +18,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include <stdint.h> #include "wildmidihelper.h" #include "decoder_wildmidi.h" @@ -48,7 +49,7 @@ bool DecoderWildMidi::initialize() return false; } WildMidiHelper::instance()->readSettings(); - midi_ptr = WildMidi_Open (m_path.toLocal8Bit()); + midi_ptr = WildMidi_Open (m_path.toLocal8Bit().constData()); if(!midi_ptr) { @@ -84,5 +85,10 @@ int DecoderWildMidi::bitrate() qint64 DecoderWildMidi::read(unsigned char *data, qint64 size) { +#if defined(LIBWILDMIDI_VERSION) && (LIBWILDMIDI_VERSION >= 0x000400) + return WildMidi_GetOutput (midi_ptr, (int8_t *)data, size); +#else return WildMidi_GetOutput (midi_ptr, (char *)data, size); +#endif + } diff --git a/src/plugins/Input/wildmidi/decoder_wildmidi.h b/src/plugins/Input/wildmidi/decoder_wildmidi.h index 4cddd52da..b4f93d59f 100644 --- a/src/plugins/Input/wildmidi/decoder_wildmidi.h +++ b/src/plugins/Input/wildmidi/decoder_wildmidi.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2012 by Ilya Kotov * + * Copyright (C) 2008-2016 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp index 304616135..ecc6c5dd3 100644 --- a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp +++ b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp @@ -35,13 +35,25 @@ DecoderWildMidiFactory::DecoderWildMidiFactory() bool DecoderWildMidiFactory::supports(const QString &source) const { - return source.endsWith(".mid", Qt::CaseInsensitive); + foreach(QString filter, properties().filters) + { + QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if (regexp.exactMatch(source)) + return true; + } + return false; } bool DecoderWildMidiFactory::canDecode(QIODevice *input) const { char buf[4]; - return (input->peek(buf, 4) == 4 && !memcmp(buf, "MThd", 4)); + if(input->peek(buf, 4) != 4) + return false; +#if defined(LIBWILDMIDI_VERSION) && (LIBWILDMIDI_VERSION >= 0x000400) + return !memcmp(buf, "MThd", 4) || !memcmp(buf, "MUS", 3) || !memcmp(buf, "FORM", 4); +#else + return !memcmp(buf, "MThd", 4); +#endif } const DecoderProperties DecoderWildMidiFactory::properties() const @@ -49,6 +61,9 @@ const DecoderProperties DecoderWildMidiFactory::properties() const DecoderProperties properties; properties.name = tr("WildMidi Plugin"); properties.filters << "*.mid"; +#if defined(LIBWILDMIDI_VERSION) && (LIBWILDMIDI_VERSION >= 0x000400) + properties.filters << "*.mus" << "*.xmi"; +#endif properties.description = tr("Midi Files"); //properties.contentType = ; properties.shortName = "wildmidi"; |
