aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-08-04 19:15:41 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-08-04 19:15:41 +0000
commitc878d3ca598a611cc066b027a4d4a317eed7c081 (patch)
treec9a4e468ec0bf27abf1674fbbbe4b6bfc836d399 /src/plugins/Input/wildmidi/decoder_wildmidi.cpp
parentb9cc3f286ceae3972afd918b04474b162032c100 (diff)
downloadqmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.tar.gz
qmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.tar.bz2
qmmp-c878d3ca598a611cc066b027a4d4a317eed7c081.zip
midi plugin: added some improvements (still disabled)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1817 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/wildmidi/decoder_wildmidi.cpp')
-rw-r--r--src/plugins/Input/wildmidi/decoder_wildmidi.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
index f29d60fef..c11fc0fbc 100644
--- a/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
+++ b/src/plugins/Input/wildmidi/decoder_wildmidi.cpp
@@ -26,12 +26,16 @@ DecoderWildMidi::DecoderWildMidi(const QString &path) : Decoder()
{
m_path = path;
midi_ptr = 0;
+ m_sample_rate = 0;
}
DecoderWildMidi::~DecoderWildMidi()
{
if(midi_ptr)
+ {
+ WildMidiHelper::instance()->removePtr(midi_ptr);
WildMidi_Close(midi_ptr);
+ }
}
bool DecoderWildMidi::initialize()
@@ -43,20 +47,21 @@ bool DecoderWildMidi::initialize()
qWarning("DecoderWildMidi: initialization failed");
return false;
}
-
-
+ WildMidiHelper::instance()->readSettings();
midi_ptr = WildMidi_Open (m_path.toLocal8Bit());
+
if(!midi_ptr)
{
qWarning("DecoderWildMidi: unable to open file");
return false;
}
- _WM_Info *wm_info = WildMidi_GetInfo(midi_ptr);
+ WildMidiHelper::instance()->addPtr(midi_ptr);
- m_totalTime = (qint64)wm_info->approx_total_samples / 48;
-
- configure(48000, 2, Qmmp::PCM_S16LE);
+ m_sample_rate = WildMidiHelper::instance()->sampleRate();
+ _WM_Info *wm_info = WildMidi_GetInfo(midi_ptr);
+ m_totalTime = (qint64)wm_info->approx_total_samples * 1000 / WildMidiHelper::instance()->sampleRate();
+ configure(m_sample_rate, 2, Qmmp::PCM_S16LE);
qDebug("DecoderWildMidi: initialize succes");
return true;
}
@@ -68,7 +73,7 @@ qint64 DecoderWildMidi::totalTime()
void DecoderWildMidi::seek(qint64 pos)
{
- ulong sample = ulong(pos*48);
+ ulong sample = (ulong)m_sample_rate * pos / 1000;
WildMidi_FastSeek(midi_ptr, &sample);
}