Пример #1
0
bool MusicDriver_LibTimidity::IsSongPlaying()
{
    if (_midi.status == MIDI_PLAYING) {
        _midi.song_position = mid_song_get_time(_midi.song);
        if (_midi.song_position >= _midi.song_length) {
            _midi.status = MIDI_STOPPED;
            _midi.song_position = 0;
        }
    }

    return (_midi.status == MIDI_PLAYING);
}
Пример #2
0
//private:
qint64 MidiDecoder::readData(char *data, qint64 maxlen)
{
    if (d->state != QtopiaMedia::Playing)
        return 0;

    qint64      rc = 0;

    if (maxlen > 0) {
        quint32 position = (mid_song_get_time(d->song) / 1000) * 1000;
        if (d->position != position) {
            d->position = position;
            emit positionChanged(d->position);
        }

        if ((rc = (qint64) mid_song_read_wave(d->song, data, maxlen)) == 0) {
            seek(0);
            mid_song_start(d->song);
            emit playerStateChanged(d->state = QtopiaMedia::Stopped);
        }
    }

    return rc;
}