void PlayerManager::seekBack() { Phonon::MediaObject *mediaObject = m_media[m_curOutputPath]; const qint64 total = mediaObject->totalTime(); const qint64 newtime = mediaObject->currentTime() - total / 100; const qint64 seekTo = qMax(qint64(0), newtime); stopCrossfade(); mediaObject->seek(seekTo); emit seeked(seekTo); }
/*# void LayerSound::playSound(int frame) { for(int i=0; i < sound.size(); i++) { if (frame == framesPosition.at(i)) { if (sound.at(i) != NULL && visible) sound[i]->play(); } } } #*/ void LayerSound::playSound(int frame,int fps) { //QSettings settings("Pencil","Pencil"); //int fps = settings.value("fps").toInt(); for (int i = 0; i < sound.size(); ++i) { Phonon::MediaObject* media = sound.at(i); if (media != NULL && visible) { int position = framesPosition.at(i); if (frame < position) { media->stop(); } else { Phonon::AudioOutput* audioOutput = NULL; if (outputDevices.size() <= i) { audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); outputDevices.push_back(audioOutput); } else { audioOutput = outputDevices.at(i); } int offsetInMs = floor((frame - position) * float(1000) / fps); if (media->state() == Phonon::PlayingState) { if (fabs((float)media->currentTime() - offsetInMs) > 500.0f) media->seek(offsetInMs); } else { if (frame > position) { media->pause(); media->seek(offsetInMs); } if (offsetInMs < soundSize[i]) { Phonon::createPath(media, outputDevices.at(i)); media->play(); } } } } } }