aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wildmidi
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/wildmidi')
-rw-r--r--src/plugins/Input/wildmidi/decoder_wildmidi.cpp11
-rw-r--r--src/plugins/Input/wildmidi/decoderwildmidifactory.cpp19
2 files changed, 16 insertions, 14 deletions
diff --git a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
index 48b2c636e..d24ec2cd4 100644
--- a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
+++ b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
@@ -88,10 +88,7 @@ void DecoderWildMidi::flush(bool final)
}
if (m_user_stop || m_finish)
- {
- m_inited = FALSE;
m_done = TRUE;
- }
else
{
m_output_bytes -= produceSound(m_output_buf, m_output_bytes, m_bitrate, m_chan);
@@ -117,14 +114,14 @@ bool DecoderWildMidi::initialize()
m_output_size = 0;
m_seekTime = -1.0;
m_totalTime = 0.0;
- _WM_Info *wm_info = 0; //TODO fix memory leak
+ _WM_Info *wm_info = 0;
if (! m_output_buf)
m_output_buf = new char[globalBufferSize];
m_output_at = 0;
m_output_bytes = 0;
- wm_info = new _WM_Info;
+ //wm_info = new _WM_Info;
unsigned long int mixer_options = 0;
@@ -160,11 +157,12 @@ void DecoderWildMidi::seek(qint64 pos)
void DecoderWildMidi::deinit()
{
+ if (m_inited)
+ WildMidi_Shutdown();
m_inited = m_user_stop = m_done = m_finish = FALSE;
m_freq = m_bitrate = 0;
m_chan = 0;
m_output_size = 0;
- WildMidi_Shutdown();
}
void DecoderWildMidi::run()
@@ -190,7 +188,6 @@ void DecoderWildMidi::run()
if (m_seekTime >= 0.0)
{
- // WavpackSeekSample (m_context, m_seekTime * m_freq);
qint64 i = m_seekTime *44100;
long unsigned int *sample_pos = (long unsigned int *) &i;
WildMidi_FastSeek(midi_ptr, sample_pos);
diff --git a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp
index eb563ab47..6d78fd5f3 100644
--- a/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp
+++ b/src/plugins/Input/wildmidi/decoderwildmidifactory.cpp
@@ -63,6 +63,17 @@ QList<FileInfo *> DecoderWildMidiFactory::createPlayList(const QString &fileName
{
QList <FileInfo*> list;
FileInfo *info = new FileInfo(fileName);
+
+ void *midi_ptr = WildMidi_Open (fileName.toLocal8Bit());
+ if(midi_ptr)
+ {
+ //wm_info = new _WM_Info;
+ _WM_Info *wm_info = WildMidi_GetInfo(midi_ptr);
+ info->setLength(wm_info->approx_total_samples / 44100);
+ qDebug("===== %d", wm_info->approx_total_samples / 44100);
+ WildMidi_Close(midi_ptr);
+ }
+
list << info;
return list;
}
@@ -78,13 +89,7 @@ void DecoderWildMidiFactory::showSettings(QWidget *)
{}
void DecoderWildMidiFactory::showAbout(QWidget *parent)
-{
- /*QMessageBox::about (parent, tr("About WildMidi Audio Plugin"),
- tr("Qmmp WildMidi Audio Plugin")+"\n"+
- tr("WildMidi library version:") +
- QString(" %1").arg(WavpackGetLibraryVersionString ())+"\n"+
- tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>"));*/
-}
+{}
QTranslator *DecoderWildMidiFactory::createTranslator(QObject *parent)
{