aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/sid/decodersidfactory.cpp8
-rw-r--r--src/plugins/Input/wildmidi/decoder_wildmidi.cpp10
-rw-r--r--src/plugins/Input/wildmidi/decoder_wildmidi.h2
-rw-r--r--src/plugins/Input/wildmidi/decoderwildmidifactory.cpp19
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";