diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-08-04 19:15:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-08-04 19:15:41 +0000 |
| commit | c878d3ca598a611cc066b027a4d4a317eed7c081 (patch) | |
| tree | c9a4e468ec0bf27abf1674fbbbe4b6bfc836d399 /src/plugins/Input/wildmidi/decoder_wildmidi.cpp | |
| parent | b9cc3f286ceae3972afd918b04474b162032c100 (diff) | |
| download | qmmp-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.cpp | 19 |
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); } |
