void UBGraphicsAudioItemDelegate::togglePlayPause() { if ( mDelegated && mDelegated->mediaObject() ) { Phonon::MediaObject* media = mDelegated->mediaObject(); if ( media->state() == Phonon::StoppedState ) { media->play(); } else if ( media->state() == Phonon::PlayingState ) { if ( media->remainingTime() <= 0 ) { media->stop(); media->play(); } else { media->pause(); if ( mDelegated->scene() ) mDelegated->scene()->setModified ( true ); } } else if ( media->state() == Phonon::PausedState ) { if ( media->remainingTime() <= 0 ) { media->stop(); } media->play(); } else if ( media->state() == Phonon::LoadingState ) { mDelegated->mediaObject()->setCurrentSource(mDelegated->mediaFileUrl()); media->play(); } else if (media->state() == Phonon::ErrorState){ qDebug() << "Error appeared." << media->errorString(); } } }
void VideoWidget::stop() { Phonon::MediaObject* mo = player->media0bject(); if (mo->state() == Phonon::PausedState) { mo->seek(0); mo->stop(); } else { mo->stop(); } }
void AudioOutputPrivate::reset() { if ( m_output ) { m_output->stop(); m_output->setCurrentSource( Phonon::MediaSource() ); m_output->clearQueue(); } m_voiceNavigation.reset(); }
void UBGraphicsVideoItemDelegate::togglePlayPause() { if (delegated() && delegated()->mediaObject()) { Phonon::MediaObject* media = delegated()->mediaObject(); if (media->state() == Phonon::StoppedState) { media->play(); } else if (media->state() == Phonon::PlayingState) { if (media->remainingTime() <= 0) { media->stop(); media->play(); } else { media->pause(); if(delegated()->scene()) delegated()->scene()->setModified(true); } } else if (media->state() == Phonon::PausedState) { if (media->remainingTime() <= 0) { media->stop(); } media->play(); } else if ( media->state() == Phonon::LoadingState ){ delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl()); media->play(); } else{ qDebug() << "Media state "<< media->state() << " not supported"; } } }
/*# 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(); } } } } } }
void LayerSound::loadSoundAtFrame(QString filePathString, int frameNumber) { // if (getIndexAtFrame(frameNumber) == -1) addImageAtFrame(frameNumber); int index = getIndexAtFrame(frameNumber); if (index == -1) addImageAtFrame(frameNumber); index = getIndexAtFrame(frameNumber); QFileInfo fi(filePathString); if (fi.exists()) { // sound[index] = new QSound(filePathString, NULL); Phonon::MediaObject* media = new Phonon::MediaObject(); connect(media, SIGNAL(totalTimeChanged(qint64)), this, SLOT(addTimelineKey(qint64))); media->setCurrentSource(filePathString); // quick and dirty trick to calculate soundSize // totalTime() return a value only after a call to media.play() // ( and when signal totaltimechanged is emitted totalTime() returns the correct value ) Phonon::AudioOutput* audioOutput; audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); Phonon::createPath(media, audioOutput); media->play(); media->stop(); soundSize[index] = media->totalTime(); // totalTime() returns 0 now sound[index] = media; soundFilepath[index] = filePathString; framesFilename[index] = fi.fileName(); framesModified[index] = true; } else { sound[index] = NULL; soundFilepath[index] = "Wrong file"; framesFilename[index] = "Wrong file" + filePathString; } }