void play() { m_state = QMediaPlayer::PlayingState; if (m_mediaStatus == QMediaPlayer::EndOfMedia) updateMediaStatus(QMediaPlayer::LoadedMedia); emit stateChanged(m_state); }
void QGstreamerPlayerControl::setBufferProgress(int progress) { if (m_bufferProgress == progress || m_mediaStatus == QMediaPlayer::NoMedia) return; #ifdef DEBUG_PLAYBIN qDebug() << Q_FUNC_INFO << progress; #endif m_bufferProgress = progress; if (m_resources->isGranted()) { if (m_currentState == QMediaPlayer::PlayingState && m_bufferProgress == 100 && m_session->state() != QMediaPlayer::PlayingState) m_session->play(); if (!m_session->isLiveSource() && m_bufferProgress < 100 && (m_session->state() == QMediaPlayer::PlayingState || m_session->pendingState() == QMediaPlayer::PlayingState)) m_session->pause(); } updateMediaStatus(); emit bufferStatusChanged(m_bufferProgress); }
void QGstreamerPlayerControl::handleResourcesGranted() { pushState(); //This may be triggered when there is an auto resume //from resource-policy, we need to take action according to m_userRequestedState //rather than m_currentState m_currentState = m_userRequestedState; if (m_currentState != QMediaPlayer::StoppedState) playOrPause(m_currentState); else updateMediaStatus(); popAndNotifyState(); }
void QGstreamerPlayerControl::updateSessionState(QMediaPlayer::State state) { pushState(); if (state == QMediaPlayer::StoppedState) { m_session->showPrerollFrames(false); m_currentState = QMediaPlayer::StoppedState; } if (state == QMediaPlayer::PausedState && m_currentState != QMediaPlayer::StoppedState) { if (m_pendingSeekPosition != -1 && m_session->isSeekable()) { m_session->showPrerollFrames(true); m_session->seek(m_pendingSeekPosition); } m_pendingSeekPosition = -1; if (m_currentState == QMediaPlayer::PlayingState) m_session->play(); } updateMediaStatus(); popAndNotifyState(); }