bool S60VideoPlayerSession::isVideoAvailable() { DP0("S60VideoPlayerSession::isVideoAvailable"); #ifdef PRE_S60_50_PLATFORM return true; // this is not supported in pre 5th platforms #else if ( mediaStatus() == QMediaPlayer::LoadingMedia || mediaStatus() == QMediaPlayer::UnknownMediaStatus || mediaStatus() == QMediaPlayer::NoMedia || (mediaStatus() == QMediaPlayer::StalledMedia && state() == QMediaPlayer::StoppedState) || mediaStatus() == QMediaPlayer::InvalidMedia) return false; if (m_player) { bool videoAvailable = false; TRAPD(err, videoAvailable = m_player->VideoEnabledL()); setError(err); return videoAvailable; } else { return false; } #endif }
bool S60VideoPlayerSession::isAudioAvailable() { DP0("S60VideoPlayerSession::isAudioAvailable"); if ( mediaStatus() == QMediaPlayer::LoadingMedia || mediaStatus() == QMediaPlayer::UnknownMediaStatus || mediaStatus() == QMediaPlayer::NoMedia || (mediaStatus() == QMediaPlayer::StalledMedia && state() == QMediaPlayer::StoppedState) || mediaStatus() == QMediaPlayer::InvalidMedia) return false; if (m_player) { bool audioAvailable = false; TRAPD(err, audioAvailable = m_player->AudioEnabledL()); setError(err); return audioAvailable; } else { return false; } }
/*! * Apply the pending changes for window. */ void S60VideoPlayerSession::applyPendingChanges(bool force) { DP0("S60VideoPlayerSession::applyPendingChanges +++"); if ( force || QMediaPlayer::LoadedMedia == mediaStatus() || QMediaPlayer::StalledMedia == mediaStatus() || QMediaPlayer::BufferingMedia == mediaStatus() || QMediaPlayer::BufferedMedia == mediaStatus() || QMediaPlayer::EndOfMedia == mediaStatus()) { int error = KErrNone; RWindow *const window = m_videoOutputDisplay ? m_videoOutputDisplay->windowHandle() : 0; const QRect extentRect = m_videoOutputDisplay ? m_videoOutputDisplay->extentRect() : QRect(); const QRect clipRect = m_videoOutputDisplay ? m_videoOutputDisplay->clipRect() : QRect(); #ifdef VIDEOOUTPUT_GRAPHICS_SURFACES if (m_pendingChanges & WindowHandle) { if (m_displayWindow) { m_player->RemoveDisplayWindow(*m_displayWindow); m_displayWindow = 0; } if (window) { TRAP(error, m_player->AddDisplayWindowL(*m_wsSession, *m_screenDevice, *window, QRect2TRect(extentRect), QRect2TRect(clipRect))); if (KErrNone == error) m_displayWindow = window; } m_pendingChanges = ScaleFactors; } if (KErrNone == error && (m_pendingChanges & DisplayRect) && m_displayWindow) { TRAP(error, m_player->SetVideoExtentL(*m_displayWindow, QRect2TRect(extentRect))); if (KErrNone == error) TRAP(error, m_player->SetWindowClipRectL(*m_displayWindow, QRect2TRect(clipRect))); m_pendingChanges ^= DisplayRect; m_pendingChanges |= ScaleFactors; } #else if (m_pendingChanges & WindowHandle || m_pendingChanges & DisplayRect) { if (window) { TRAP(error, m_player->SetDisplayWindowL(*m_wsSession, *m_screenDevice, *window, QRect2TRect(extentRect), QRect2TRect(clipRect))); if (KErrNone == error) m_displayWindow = window; } m_dsaActive = (KErrNone == error); m_dsaStopped = false; m_pendingChanges = ScaleFactors; } #endif // VIDEOOUTPUT_GRAPHICS_SURFACES if (KErrNone == error && (m_pendingChanges & ScaleFactors) && m_displayWindow && m_videoOutputDisplay) { const TVideoRotation rotation = videoRotation(m_videoOutputDisplay->rotation()); const bool swap = (rotation == EVideoRotationClockwise90 || rotation == EVideoRotationClockwise270); const QSize extentSize = swap ? QSize(extentRect.height(), extentRect.width()) : extentRect.size(); QSize scaled = m_nativeSize; if (m_videoOutputDisplay->aspectRatioMode() == Qt::IgnoreAspectRatio) scaled.scale(extentSize, Qt::IgnoreAspectRatio); else if (m_videoOutputDisplay->aspectRatioMode() == Qt::KeepAspectRatio) scaled.scale(extentSize, Qt::KeepAspectRatio); else if (m_videoOutputDisplay->aspectRatioMode() == Qt::KeepAspectRatioByExpanding) scaled.scale(extentSize, Qt::KeepAspectRatioByExpanding); const qreal width = qreal(scaled.width()) / qreal(m_nativeSize.width()) * qreal(100); const qreal height = qreal(scaled.height()) / qreal(m_nativeSize.height()) * qreal(100); #ifdef VIDEOOUTPUT_GRAPHICS_SURFACES TRAP(error, m_player->SetScaleFactorL(*m_displayWindow, width, height)); #else static const TBool antialias = ETrue; TRAP(error, m_player->SetScaleFactorL(width, height, antialias)); #endif // VIDEOOUTPUT_GRAPHICS_SURFACES m_pendingChanges ^= ScaleFactors; } if (KErrNone == error && (m_pendingChanges && Rotation) && m_displayWindow && m_videoOutputDisplay) { const TVideoRotation rotation = videoRotation(m_videoOutputDisplay->rotation()); #ifdef VIDEOOUTPUT_GRAPHICS_SURFACES TRAP(error, m_player->SetRotationL(*m_displayWindow, rotation)); #else TRAP(error, m_player->SetRotationL(rotation)); #endif // VIDEOOUTPUT_GRAPHICS_SURFACES m_pendingChanges ^= Rotation; } setError(error); } DP0("S60VideoPlayerSession::applyPendingChanges ---"); }
mediaStatusList(QObject *obj, const char *aSignal) : QObject() { QObject::connect(obj, aSignal, this, SLOT(mediaStatus(QMediaStreamsControl::StreamType))); }