summaryrefslogtreecommitdiffstats
path: root/src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp')
-rw-r--r--src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp1124
1 files changed, 0 insertions, 1124 deletions
diff --git a/src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp b/src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp
deleted file mode 100644
index a9e1d4508..000000000
--- a/src/plugins/symbian/mmf/mediaplayer/s60videoplayersession.cpp
+++ /dev/null
@@ -1,1124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Mobility Components.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "DebugMacros.h"
-
-#include "s60videoplayersession.h"
-#include "s60mediaplayerservice.h"
-#include "s60videowidgetcontrol.h"
-#include "s60videowidgetdisplay.h"
-#include "s60videowindowcontrol.h"
-#include "s60videowindowdisplay.h"
-
-#include <QtCore/QTimer>
-#include <QtGui/QApplication>
-#include <QtGui/QDesktopWidget>
-#include <QtGui/QSymbianEvent>
-#include <QtGui/QWidget>
-
-#include <coecntrl.h>
-#include <coemain.h> // For CCoeEnv
-#include <w32std.h>
-#include <mmf/common/mmferrors.h>
-#include <mmf/common/mmfcontrollerframeworkbase.h>
-#include <MMFROPCustomCommandConstants.h>
-#ifdef HTTP_COOKIES_ENABLED
-#include <MMFSessionInfoCustomCommandConstants.h>
-#endif
-
-const QString DefaultAudioEndpoint = QLatin1String("Default");
-const TUid KHelixUID = {0x101F8514};
-
-//Hard-coding the command to support older versions.
-const TInt KMMFROPControllerEnablePausedLoadingStatus = 7;
-
-TVideoRotation videoRotation(qreal angle)
-{
- // Convert to clockwise
- angle = 360.0f - angle;
- while (angle >= 360.0f)
- angle -= 360.0f;
- TVideoRotation result = EVideoRotationNone;
- if (angle >= 45.0f && angle < 135.0f)
- result = EVideoRotationClockwise90;
- else if (angle >= 135.0f && angle < 225.0f)
- result = EVideoRotationClockwise180;
- else if (angle >= 225.0f && angle < 315.0f)
- result = EVideoRotationClockwise270;
- return result;
-}
-
-S60VideoPlayerEventHandler *S60VideoPlayerEventHandler::m_instance = 0;
-QCoreApplication::EventFilter S60VideoPlayerEventHandler::m_eventFilter = 0;
-QList<ApplicationFocusObserver *> S60VideoPlayerEventHandler::m_applicationFocusObservers;
-
-S60VideoPlayerEventHandler *S60VideoPlayerEventHandler::instance()
-{
- if (!m_instance)
- m_instance = new S60VideoPlayerEventHandler();
- return m_instance;
-}
-
-S60VideoPlayerEventHandler::S60VideoPlayerEventHandler()
-{
- m_eventFilter = QCoreApplication::instance()->setEventFilter(filterEvent);
-}
-
-S60VideoPlayerEventHandler::~S60VideoPlayerEventHandler()
-{
- QCoreApplication::instance()->setEventFilter(m_eventFilter);
-}
-
-void S60VideoPlayerEventHandler::addApplicationFocusObserver(ApplicationFocusObserver *observer)
-{
- m_applicationFocusObservers.append(observer);
-}
-
-void S60VideoPlayerEventHandler::removeApplicationFocusObserver(ApplicationFocusObserver *observer)
-{
- m_applicationFocusObservers.removeAt(m_applicationFocusObservers.indexOf(observer));
- if (m_applicationFocusObservers.count() == 0) {
- delete m_instance;
- m_instance = 0;
- }
-}
-
-bool S60VideoPlayerEventHandler::filterEvent(void *message, long *result)
-{
- if (const QSymbianEvent *symbianEvent = reinterpret_cast<const QSymbianEvent*>(message)) {
- switch (symbianEvent->type()) {
- case QSymbianEvent::WindowServerEvent:
- {
- const TWsEvent *wsEvent = symbianEvent->windowServerEvent();
- if (EEventFocusLost == wsEvent->Type() || EEventFocusGained == wsEvent->Type()) {
- for (QList<ApplicationFocusObserver *>::const_iterator it = m_applicationFocusObservers.constBegin();
- it != m_applicationFocusObservers.constEnd(); ++it) {
- if (EEventFocusLost == wsEvent->Type())
- (*it)->applicationLostFocus();
- else if (EEventFocusGained == wsEvent->Type())
- (*it)->applicationGainedFocus();
- }
- }
- }
- break;
- default:
- break;
- }
- }
- bool ret = false;
- if (m_eventFilter)
- ret = m_eventFilter(message, result);
- return ret;
-}
-
-/*!
- Constructs the CVideoPlayerUtility2 object with given \a service and \a object.
- And Registers for Video Loading Notifications.
-*/
-S60VideoPlayerSession::S60VideoPlayerSession(QMediaService *service, S60MediaNetworkAccessControl *object)
- : S60MediaPlayerSession(service)
- , m_accessPointId(0)
- , m_wsSession(&CCoeEnv::Static()->WsSession())
- , m_screenDevice(CCoeEnv::Static()->ScreenDevice())
- , m_service(service)
- , m_player(0)
-#ifndef VIDEOOUTPUT_GRAPHICS_SURFACES
- , m_dsaActive(false)
- , m_dsaStopped(false)
-#endif
- , m_videoOutputControl(0)
- , m_videoOutputDisplay(0)
- , m_displayWindow(0)
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- , m_audioOutput(0)
-#endif
- , m_audioEndpoint(DefaultAudioEndpoint)
- , m_pendingChanges(0)
- , m_backendInitiatedPause(false)
-#ifdef HTTP_COOKIES_ENABLED
- , m_destinationPckg(KUidInterfaceMMFControllerSessionInfo)
-#endif
-{
- DP0("S60VideoPlayerSession::S60VideoPlayerSession +++");
-
- m_networkAccessControl = object;
-#ifdef VIDEOOUTPUT_GRAPHICS_SURFACES
- QT_TRAP_THROWING(m_player = CVideoPlayerUtility2::NewL(
- *this,
- 0,
- EMdaPriorityPreferenceNone
- ));
- m_player->RegisterForVideoLoadingNotification(*this);
-#else
- RWindow *window = 0;
- QRect extentRect;
- QWidget *widget = QApplication::activeWindow();
- if (!widget)
- widget = QApplication::allWidgets().at(0);
- Q_ASSERT(widget);
- WId wid = widget->effectiveWinId();
- if (!wid)
- wid = widget->winId();
- window = static_cast<RWindow *>(wid->DrawableWindow());
- extentRect = QRect(widget->mapToGlobal(widget->pos()), widget->size());
- TRect clipRect = QRect2TRect(extentRect);
- const TRect desktopRect = QRect2TRect(QApplication::desktop()->screenGeometry());
- clipRect.Intersection(desktopRect);
- QT_TRAP_THROWING(m_player = CVideoPlayerUtility::NewL(
- *this,
- 0,
- EMdaPriorityPreferenceNone,
- *m_wsSession,
- *m_screenDevice,
- *window,
- QRect2TRect(extentRect),
- clipRect));
- m_dsaActive = true;
- m_player->RegisterForVideoLoadingNotification(*this);
-#endif // VIDEOOUTPUT_GRAPHICS_SURFACES
- S60VideoPlayerEventHandler::instance()->addApplicationFocusObserver(this);
- DP0("S60VideoPlayerSession::S60VideoPlayerSession ---");
-}
-
-/*!
- Destroys the CVideoPlayerUtility2 object.
-
- And Unregister the observer.
-*/
-
-S60VideoPlayerSession::~S60VideoPlayerSession()
-{
- DP0("S60VideoPlayerSession::~S60VideoPlayerSession +++");
- S60VideoPlayerEventHandler::instance()->removeApplicationFocusObserver(this);
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- if (m_audioOutput)
- m_audioOutput->UnregisterObserver(*this);
- delete m_audioOutput;
-#endif
- m_player->Close();
- delete m_player;
-
- DP0("S60VideoPlayerSession::~S60VideoPlayerSession ---");
-}
-
-void S60VideoPlayerSession::applicationGainedFocus()
-{
- if (m_backendInitiatedPause) {
- m_backendInitiatedPause = false;
- play();
- }
- if (QMediaPlayer::PausedState == state()) {
- TRAPD(err, m_player->RefreshFrameL());
- setError(err);
- }
-}
-
-void S60VideoPlayerSession::applicationLostFocus()
-{
- if (QMediaPlayer::PlayingState == state()) {
- m_backendInitiatedPause = true;
- pause();
- }
-}
-
-/*!
-
- Opens the a file from \a path.
-*/
-
-void S60VideoPlayerSession::doLoadL(const TDesC &path)
-{
- DP0("S60VideoPlayerSession::doLoadL +++");
-
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- // m_audioOutput needs to be reinitialized after MapcInitComplete
- if (m_audioOutput)
- m_audioOutput->UnregisterObserver(*this);
- delete m_audioOutput;
- m_audioOutput = NULL;
-#endif
- m_player->OpenFileL(path, KHelixUID);
-
- DP0("S60VideoPlayerSession::doLoadL ---");
-}
-
-/*!
- Sets the playbackRate with \a rate.
-*/
-
-void S60VideoPlayerSession::setPlaybackRate(qreal rate)
-{
- DP0("S60VideoPlayerSession::setPlaybackRate +++");
-
- DP1("S60VideoPlayerSession::setPlaybackRate - ", rate);
-
- /*
- * setPlaybackRate is not supported in S60 3.1 and 3.2
- * This flag will be defined for 3.1 and 3.2
- */
-#ifndef PLAY_RATE_NOT_SUPPORTED
- //setPlayVelocity requires rate in the form of
- //50 = 0.5x ;100 = 1.x ; 200 = 2.x ; 300 = 3.x
- //so multiplying rate with 100
- TRAPD(err, m_player->SetPlayVelocityL((TInt)(rate*100)));
- if (KErrNone == err)
- emit playbackRateChanged(rate);
- else
- setError(err);
-#endif
-
- DP0("S60VideoPlayerSession::setPlaybackRate ---");
-}
-
-/*!
-
- Opens the a Url from \a path for streaming the source.
-*/
-
-void S60VideoPlayerSession::doLoadUrlL(const TDesC &path)
-{
- DP0("S60VideoPlayerSession::doLoadUrlL +++");
-
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- // m_audioOutput needs to be reinitialized after MapcInitComplete
- if (m_audioOutput)
- m_audioOutput->UnregisterObserver(*this);
- delete m_audioOutput;
- m_audioOutput = NULL;
-#endif
- m_accessPointId = m_networkAccessControl->accessPointId();
- m_player->OpenUrlL(path, m_accessPointId, KNullDesC8, KHelixUID);
-
- DP0("S60VideoPlayerSession::doLoadUrlL ---");
-}
-
-/*!
-
- Returns the percentage of the video clip loaded.
-*/
-
-int S60VideoPlayerSession::doGetBufferStatusL() const
-{
- // DP0("S60VideoPlayerSession::doGetBufferStatusL +++");
-
- int progress = 0;
- m_player->GetVideoLoadingProgressL(progress);
-
- // DP0("S60VideoPlayerSession::doGetBufferStatusL ---");
-
- return progress;
-}
-
-/*!
- Returns the duration of the video sample in microseconds.
-*/
-
-qint64 S60VideoPlayerSession::doGetDurationL() const
-{
- // DP0("S60VideoPlayerSession::doGetDurationL");
-
- return m_player->DurationL().Int64() / qint64(1000);
-}
-
-/*!
- * Sets the \a videooutput for video rendering.
-*/
-
-void S60VideoPlayerSession::setVideoRenderer(QObject *videoOutput)
-{
- DP0("S60VideoPlayerSession::setVideoRenderer +++");
- if (videoOutput != m_videoOutputControl) {
- if (m_videoOutputDisplay) {
- disconnect(m_videoOutputDisplay);
- m_videoOutputDisplay->disconnect(this);
- m_videoOutputDisplay = 0;
- }
- if (videoOutput) {
- if (S60VideoWidgetControl *control = qobject_cast<S60VideoWidgetControl *>(videoOutput))
- m_videoOutputDisplay = control->display();
- if (!m_videoOutputDisplay)
- return;
- m_videoOutputDisplay->setNativeSize(m_nativeSize);
- connect(this, SIGNAL(nativeSizeChanged(QSize)), m_videoOutputDisplay, SLOT(setNativeSize(QSize)));
- connect(m_videoOutputDisplay, SIGNAL(windowHandleChanged(RWindow *)), this, SLOT(windowHandleChanged()));
- connect(m_videoOutputDisplay, SIGNAL(displayRectChanged(QRect, QRect)), this, SLOT(displayRectChanged()));
- connect(m_videoOutputDisplay, SIGNAL(aspectRatioModeChanged(Qt::AspectRatioMode)), this, SLOT(aspectRatioChanged()));
- connect(m_videoOutputDisplay, SIGNAL(rotationChanged(qreal)), this, SLOT(rotationChanged()));
-#ifndef VIDEOOUTPUT_GRAPHICS_SURFACES
- connect(m_videoOutputDisplay, SIGNAL(beginVideoWindowNativePaint()), this, SLOT(suspendDirectScreenAccess()));
- connect(m_videoOutputDisplay, SIGNAL(endVideoWindowNativePaint()), this, SLOT(resumeDirectScreenAccess()));
-#endif
- }
- m_videoOutputControl = videoOutput;
- windowHandleChanged();
- }
-
- DP0("S60VideoPlayerSession::setVideoRenderer ---");
-}
-
-/*!
- * 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 ---");
-}
-
-/*!
- * \return TRUE if video is available.
-*/
-
-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
-
-}
-
-/*!
- * \return TRUE if Audio available.
-*/
-
-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;
- }
-}
-
-/*!
- Start or resume playing the current source.
-*/
-
-void S60VideoPlayerSession::doPlay()
-{
- DP0("S60VideoPlayerSession::doPlay +++");
-
- m_player->Play();
-
- DP0("S60VideoPlayerSession::doPlay ---");
-}
-
-/*!
- Pause playing the current source.
-*/
-
-void S60VideoPlayerSession::doPauseL()
-{
- DP0("S60VideoPlayerSession::doPauseL +++");
-
- m_player->PauseL();
-
- DP0("S60VideoPlayerSession::doPauseL ---");
-}
-
-/*!
-
- Stop playing, and reset the play position to the beginning.
-*/
-
-void S60VideoPlayerSession::doStop()
-{
- DP0("S60VideoPlayerSession::doStop +++");
-
- if (m_stream)
- m_networkAccessControl->resetIndex();
-
- m_player->Stop();
-
- DP0("S60VideoPlayerSession::doStop ---");
-}
-
-/*!
- Closes the current audio clip (allowing another clip to be opened)
-*/
-
-void S60VideoPlayerSession::doClose()
-{
- DP0("S60VideoPlayerSession::doClose +++");
-
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- if (m_audioOutput) {
- m_audioOutput->UnregisterObserver(*this);
- delete m_audioOutput;
- m_audioOutput = NULL;
- }
-#endif
-
- m_player->Close();
-
-// close will remove the window handle in media clint video.
-// So mark it in pending changes.
- m_pendingChanges |= WindowHandle;
-
- DP0("S60VideoPlayerSession::doClose ---");
-}
-
-/*!
- * Returns the current playback position in microseconds from the start of the clip.
-
-*/
-
-qint64 S60VideoPlayerSession::doGetPositionL() const
-{
- // DP0("S60VideoPlayerSession::doGetPositionL");
-
- return m_player->PositionL().Int64() / qint64(1000);
-}
-
-/*!
- Sets the current playback position to \a microSeconds from the start of the clip.
-*/
-
-void S60VideoPlayerSession::doSetPositionL(qint64 microSeconds)
-{
- // DP0("S60VideoPlayerSession::doSetPositionL");
-
- m_player->SetPositionL(TTimeIntervalMicroSeconds(microSeconds));
-}
-
-/*!
-
- Changes the current playback volume to specified \a value.
-*/
-
-void S60VideoPlayerSession::doSetVolumeL(int volume)
-{
- DP0("S60VideoPlayerSession::doSetVolumeL +++");
-
- DP1("S60VideoPlayerSession::doSetVolumeL - ", volume);
-
- m_player->SetVolumeL(volume * m_player->MaxVolume() / 100);
-
- DP0("S60VideoPlayerSession::doSetVolumeL ---");
-}
-
-/*!
- * Notification to the client that the opening of the video clip has completed.
- * If successful then an \a aError will be ZERO else system wide error.
-*/
-
-void S60VideoPlayerSession::MvpuoOpenComplete(TInt aError)
-{
- DP0("S60VideoPlayerSession::MvpuoOpenComplete +++");
-
- DP1("S60VideoPlayerSession::MvpuoOpenComplete - aError:", aError);
-
- setError(aError);
-#ifdef HTTP_COOKIES_ENABLED
- if (KErrNone == aError) {
- TInt err(KErrNone);
- const QByteArray userAgentString("User-Agent");
- TInt uasize = m_source.canonicalRequest().rawHeader(userAgentString).size();
- TPtrC8 userAgent((const unsigned char*)(m_source.canonicalRequest().rawHeader(userAgentString).constData()), uasize);
- if (userAgent.Length()) {
- err = m_player->CustomCommandSync(m_destinationPckg, EMMFSetSessionInfo, _L8("User-Agent"), userAgent);
- if (err != KErrNone) {
- setError(err);
- return;
- }
- }
- const QByteArray refererString("Referer");
- TInt refsize = m_source.canonicalRequest().rawHeader(refererString).size();
- TPtrC8 referer((const unsigned char*)m_source.canonicalRequest().rawHeader(refererString).constData(),refsize);
- if (referer.Length()) {
- err = m_player->CustomCommandSync(m_destinationPckg, EMMFSetSessionInfo, _L8("Referer"), referer);
- if (err != KErrNone) {
- setError(err);
- return;
- }
- }
- const QByteArray cookieString("Cookie");
- TInt cksize = m_source.canonicalRequest().rawHeader(cookieString).size();
- TPtrC8 cookie((const unsigned char*)m_source.canonicalRequest().rawHeader(cookieString).constData(),cksize);
- if (cookie.Length()) {
- err = m_player->CustomCommandSync(m_destinationPckg, EMMFSetSessionInfo, _L8("Cookie"), cookie);
- if (err != KErrNone) {
- setError(err);
- return;
- }
- }
- m_player->Prepare();
- }
-#else
- if (KErrNone == aError)
- m_player->Prepare();
-#endif
- const TMMFMessageDestinationPckg dest( KUidInterfaceMMFROPController );
- TRAP_IGNORE(m_player->CustomCommandSync(dest, KMMFROPControllerEnablePausedLoadingStatus, KNullDesC8, KNullDesC8));
-
- DP0("S60VideoPlayerSession::MvpuoOpenComplete ---");
-}
-
-/*!
- * Notification to the client that the opening of the video clip has been preapred.
- * If successful then an \a aError will be ZERO else system wide error.
-*/
-
-void S60VideoPlayerSession::MvpuoPrepareComplete(TInt aError)
-{
- DP0("S60VideoPlayerSession::MvpuoPrepareComplete +++");
-
- DP1("S60VideoPlayerSession::MvpuoPrepareComplete - aError:", aError);
-
- if (KErrNone == aError && m_stream) {
- emit accessPointChanged(m_accessPointId);
- }
- if (KErrCouldNotConnect == aError && !(m_networkAccessControl->isLastAccessPoint())) {
- load(m_source);
- return;
- }
- TInt error = aError;
- if (KErrNone == error || KErrMMPartialPlayback == error) {
- TSize originalSize;
- TRAP(error, m_player->VideoFrameSizeL(originalSize));
- if (KErrNone == error) {
- m_nativeSize = QSize(originalSize.iWidth, originalSize.iHeight);
- emit nativeSizeChanged(m_nativeSize);
- m_pendingChanges |= ScaleFactors;
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- Q_ASSERT(!m_audioOutput);
- TRAP(error, m_audioOutput = CAudioOutput::NewL(*m_player));
- if (KErrNone == error) {
- TRAP(error, m_audioOutput->RegisterObserverL(*this));
- if (KErrNone == error)
- setActiveEndpoint(m_audioEndpoint);
- }
-#endif
- }
- if (KErrNone == error) {
- applyPendingChanges(true); // force apply even though state is not Loaded
- if (KErrNone == this->error()) // applyPendingChanges() can call setError()
- loaded();
- }
- } else {
- setError(error);
- }
-
- DP0("S60VideoPlayerSession::MvpuoPrepareComplete ---");
-}
-
-/*!
- * Notification that frame requested by a call to GetFrameL is ready.
-*/
-
-void S60VideoPlayerSession::MvpuoFrameReady(CFbsBitmap &aFrame, TInt aError)
-{
- DP0("S60VideoPlayerSession::MvpuoFrameReady +++");
-
- Q_UNUSED(aFrame);
- Q_UNUSED(aError);
-
- DP0("S60VideoPlayerSession::MvpuoFrameReady ---");
-}
-
-/*!
- * Notification that video playback has completed.
- * If successful then \a aError will be ZERO else system wide error.
- * This not called if playback is explicitly stopped by calling stop.
-*/
-
-void S60VideoPlayerSession::MvpuoPlayComplete(TInt aError)
-{
- DP0("S60VideoPlayerSession::MvpuoPlayComplete +++");
-
- DP1("S60VideoPlayerSession::MvpuoPlayComplete - aError", aError);
-
- if (m_stream)
- m_networkAccessControl->resetIndex();
-
- if (aError != KErrNone) {
- setError(aError);
- doClose();
- } else {
- endOfMedia();
- }
-
- DP0("S60VideoPlayerSession::MvpuoPlayComplete ---");
-}
-
-
-/*!
- * General \a event notification from controller.
- * These events are specified by the supplier of the controller.
-*/
-
-void S60VideoPlayerSession::MvpuoEvent(const TMMFEvent &aEvent)
-{
- DP0("S60VideoPlayerSession::MvpuoEvent +++");
-
- Q_UNUSED(aEvent);
-
- DP0("S60VideoPlayerSession::MvpuoEvent ---");
-}
-
-/*!
-
- Updates meta data entries in the current video clip.
-*/
-
-void S60VideoPlayerSession::updateMetaDataEntriesL()
-{
- DP0("S60VideoPlayerSession::updateMetaDataEntriesL +++");
-
- metaDataEntries().clear();
- int numberOfMetaDataEntries = 0;
- numberOfMetaDataEntries = m_player->NumberOfMetaDataEntriesL();
- for (int i = 0; i < numberOfMetaDataEntries; i++) {
- CMMFMetaDataEntry *entry = NULL;
- entry = m_player->MetaDataEntryL(i);
- metaDataEntries().insert(TDesC2QString(entry->Name()), TDesC2QString(entry->Value()));
- delete entry;
- }
- emit metaDataChanged();
-
- DP0("S60VideoPlayerSession::updateMetaDataEntriesL ---");
-}
-
-/*!
- * Apply the window changes when window handle changes.
-*/
-
-void S60VideoPlayerSession::windowHandleChanged()
-{
- DP0("S60VideoPlayerSession::windowHandleChanged +++");
-
- m_pendingChanges |= WindowHandle;
- applyPendingChanges();
-
- DP0("S60VideoPlayerSession::windowHandleChanged ---");
-}
-
-/*!
- * Apply the window changes when display Rect changes.
-*/
-
-void S60VideoPlayerSession::displayRectChanged()
-{
- DP0("S60VideoPlayerSession::displayRectChanged +++");
-
- m_pendingChanges |= DisplayRect;
- applyPendingChanges();
-
- DP0("S60VideoPlayerSession::displayRectChanged ---");
-}
-
-/*!
- * Apply the window changes when aspect Ratio changes.
-*/
-
-void S60VideoPlayerSession::aspectRatioChanged()
-{
- DP0("S60VideoPlayerSession::aspectRatioChanged +++");
-
- m_pendingChanges |= ScaleFactors;
- applyPendingChanges();
-
- DP0("S60VideoPlayerSession::aspectRatioChanged ---");
-}
-
-void S60VideoPlayerSession::rotationChanged()
-{
- m_pendingChanges |= ScaleFactors;
- m_pendingChanges |= Rotation;
- applyPendingChanges();
-}
-
-#ifndef VIDEOOUTPUT_GRAPHICS_SURFACES
-void S60VideoPlayerSession::suspendDirectScreenAccess()
-{
- DP0("S60VideoPlayerSession::suspendDirectScreenAccess +++");
-
- m_dsaStopped = stopDirectScreenAccess();
-
- DP0("S60VideoPlayerSession::suspendDirectScreenAccess ---");
-}
-
-void S60VideoPlayerSession::resumeDirectScreenAccess()
-{
- DP0("S60VideoPlayerSession::resumeDirectScreenAccess +++");
-
- if (!m_dsaStopped)
- return;
- startDirectScreenAccess();
- m_dsaStopped = false;
-
- DP0("S60VideoPlayerSession::resumeDirectScreenAccess ---");
-}
-
-void S60VideoPlayerSession::startDirectScreenAccess()
-{
- DP0("S60VideoPlayerSession::startDirectScreenAccess +++");
-
- if (m_dsaActive)
- return;
- TRAPD(err, m_player->StartDirectScreenAccessL());
- if (err == KErrNone)
- m_dsaActive = true;
- setError(err);
-
- DP0("S60VideoPlayerSession::startDirectScreenAccess ---");
-}
-
-bool S60VideoPlayerSession::stopDirectScreenAccess()
-{
- DP0("S60VideoPlayerSession::stopDirectScreenAccess");
-
- if (!m_dsaActive)
- return false;
- TRAPD(err, m_player->StopDirectScreenAccessL());
- if (err == KErrNone)
- m_dsaActive = false;
- setError(err);
- return true;
-}
-#endif
-
-/*!
- * The percentage of the temporary buffer filling before playback begins.
-*/
-
-void S60VideoPlayerSession::MvloLoadingStarted()
-{
- DP0("S60VideoPlayerSession::MvloLoadingStarted +++");
-
- buffering();
-
- DP0("S60VideoPlayerSession::MvloLoadingStarted ---");
-}
-
-/*!
- * Buffer is filled with data and to for continuing/start playback.
-*/
-
-void S60VideoPlayerSession::MvloLoadingComplete()
-{
- DP0("S60VideoPlayerSession::MvloLoadingComplete +++");
-
- buffered();
-
- DP0("S60VideoPlayerSession::MvloLoadingComplete ---");
-}
-
-/*!
- Defiens which Audio End point to use.
-
- \a audioEndpoint audioEndpoint name.
-*/
-
-void S60VideoPlayerSession::doSetAudioEndpoint(const QString& audioEndpoint)
-{
- DP0("S60VideoPlayerSession::doSetAudioEndpoint +++");
-
- DP1("S60VideoPlayerSession::doSetAudioEndpoint - ", audioEndpoint);
-
- m_audioEndpoint = audioEndpoint;
-
- DP0("S60VideoPlayerSession::doSetAudioEndpoint ---");
-}
-
-/*!
-
- Returns audioEndpoint name.
-*/
-
-QString S60VideoPlayerSession::activeEndpoint() const
-{
- DP0("S60VideoPlayerSession::activeEndpoint +++");
-
- QString outputName = m_audioEndpoint;
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- if (m_audioOutput) {
- CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput();
- outputName = qStringFromTAudioOutputPreference(output);
- }
-#endif
-
- DP1("S60VideoPlayerSession::activeEndpoint- outputName:", outputName);
- DP0("S60VideoPlayerSession::activeEndpoint ---");
- return outputName;
-}
-
-/*!
- * Returns default Audio End point in use.
-*/
-
-QString S60VideoPlayerSession::defaultEndpoint() const
-{
- DP0("S60VideoPlayerSession::defaultEndpoint +++");
-
- QString outputName = DefaultAudioEndpoint;
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- if (m_audioOutput) {
- CAudioOutput::TAudioOutputPreference output = m_audioOutput->DefaultAudioOutput();
- outputName = qStringFromTAudioOutputPreference(output);
- }
-#endif
-
- DP1("S60VideoPlayerSession::defaultEndpoint, outputName:", outputName);
- DP0("S60VideoPlayerSession::defaultEndpoint ---");
-
- return outputName;
-}
-
-/*!
- Sets active end \a name as an Audio End point.
-*/
-
-void S60VideoPlayerSession::setActiveEndpoint(const QString& name)
-{
- DP0("S60VideoPlayerSession::setActiveEndpoint +++");
-
- DP1("S60VideoPlayerSession::setActiveEndpoint - ", name);
-
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
- CAudioOutput::TAudioOutputPreference output = CAudioOutput::ENoPreference;
- if (name == DefaultAudioEndpoint)
- output = CAudioOutput::ENoPreference;
- else if (name == QString("All"))
- output = CAudioOutput::EAll;
- else if (name == QString("None"))
- output = CAudioOutput::ENoOutput;
- else if (name == QString("Earphone"))
- output = CAudioOutput::EPrivate;
- else if (name == QString("Speaker"))
- output = CAudioOutput::EPublic;
- if (m_audioOutput) {
- TRAPD(err, m_audioOutput->SetAudioOutputL(output));
- setError(err);
- }
-#endif
-
- DP0("S60VideoPlayerSession::setActiveEndpoint ---");
-}
-
-/*!
- The default Audio output has been changed.
-
- \a aAudioOutput Audio Output object.
-
- \a aNewDefault is CAudioOutput::TAudioOutputPreference.
-*/
-
-#ifdef HAS_AUDIOROUTING_IN_VIDEOPLAYER
-void S60VideoPlayerSession::DefaultAudioOutputChanged( CAudioOutput& aAudioOutput,
- CAudioOutput::TAudioOutputPreference aNewDefault)
-{
- DP0("S60VideoPlayerSession::DefaultAudioOutputChanged +++");
-
- // Emit already implemented in setActiveEndpoint function
- Q_UNUSED(aAudioOutput)
- Q_UNUSED(aNewDefault)
-
- DP0("S60VideoPlayerSession::DefaultAudioOutputChanged ---");
-}
-
-/*!
- * \return CAudioOutput::ENoOutput by converting it to QString.
-*/
-
-QString S60VideoPlayerSession::qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const
-{
- DP0("S60VideoPlayerSession::qStringFromTAudioOutputPreference");
-
- if (output == CAudioOutput::ENoPreference)
- return QString("Default");
- else if (output == CAudioOutput::EAll)
- return QString("All");
- else if (output == CAudioOutput::ENoOutput)
- return QString("None");
- else if (output == CAudioOutput::EPrivate)
- return QString("Earphone");
- else if (output == CAudioOutput::EPublic)
- return QString("Speaker");
- return QString("Default");
-}
-#endif //HAS_AUDIOROUTING_IN_VIDEOPLAYER)
-
-/*!
- * \return TRUE if video is Seekable else FALSE.
-*/
-
-bool S60VideoPlayerSession::getIsSeekable() const
-{
- DP0("S60VideoPlayerSession::getIsSeekable +++");
-
- bool seekable = ETrue;
- int numberOfMetaDataEntries = 0;
-
- TRAPD(err, numberOfMetaDataEntries = m_player->NumberOfMetaDataEntriesL());
- if (err)
- return seekable;
-
- for (int i = 0; i < numberOfMetaDataEntries; i++) {
- CMMFMetaDataEntry *entry = NULL;
- TRAP(err, entry = m_player->MetaDataEntryL(i));
-
- if (err)
- return seekable;
-
- if (!entry->Name().Compare(KSeekable)) {
- if (!entry->Value().Compare(KFalse))
- seekable = EFalse;
- break;
- }
- }
- DP0("S60VideoPlayerSession::getIsSeekable ---");
-
- return seekable;
-}