diff options
Diffstat (limited to 'src/plugins/symbian/openmaxal/mediaplayer/qxaplaysession.cpp')
-rw-r--r-- | src/plugins/symbian/openmaxal/mediaplayer/qxaplaysession.cpp | 610 |
1 files changed, 0 insertions, 610 deletions
diff --git a/src/plugins/symbian/openmaxal/mediaplayer/qxaplaysession.cpp b/src/plugins/symbian/openmaxal/mediaplayer/qxaplaysession.cpp deleted file mode 100644 index cff208edd..000000000 --- a/src/plugins/symbian/openmaxal/mediaplayer/qxaplaysession.cpp +++ /dev/null @@ -1,610 +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 <QMetaType> -#include "qxaplaysession.h" -#include "xaplaysessionimpl.h" -#include "qxacommon.h" -#include <COECNTRL.H> - -QXAPlaySession::QXAPlaySession(QObject *parent):QObject(parent), -m_state(QMediaPlayer::StoppedState), -m_mediaStatus(QMediaPlayer::NoMedia), -mSeekable(-1), -mNumStreams(0), -mbAudioAvailable(EFalse), -mbVideoAvailable(EFalse), -mImpl(NULL), -mVideowidgetControl(NULL), -mWidgetCtrlWindow(NULL), -mWidgetCtrlWindowId(NULL), -mVideoWindowControl(NULL), -mWindowCtrlWindow(NULL), -mWindowCtrlWindowId(NULL), -mWsSession(&(CCoeEnv::Static()->WsSession())) -{ - QT_TRACE_FUNCTION_ENTRY; - mImpl = new XAPlaySessionImpl(*this); - - if (mImpl && (mImpl->postConstruct() != KErrNone)) { - delete mImpl; - mImpl = NULL; - QT_TRACE1("Error initializing implementation"); - } - - if (!mImpl) - emit error(QMediaPlayer::ResourceError, tr("Service has not been started")); - - QT_TRACE_FUNCTION_EXIT; -} - -QXAPlaySession::~QXAPlaySession() -{ - QT_TRACE_FUNCTION_ENTRY; - delete mImpl; - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::setVideoWidgetControl( QXAVideoWidgetControl * videoWidgetControl ) -{ - QT_TRACE_FUNCTION_ENTRY; - if (mVideowidgetControl) { - disconnect(mVideowidgetControl, SIGNAL(widgetUpdated()), - this, SLOT(videoWidgetControlWidgetUpdated())); - RWindow* window = static_cast<RWindow*>(mVideowidgetControl->videoWidgetWId()->DrawableWindow()); - mImpl->removeNativeDisplay(window, mWsSession); - } - mVideowidgetControl = videoWidgetControl; - if (mVideowidgetControl) - connect(mVideowidgetControl, SIGNAL(widgetUpdated()), - this, SLOT(videoWidgetControlWidgetUpdated())); - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::unsetVideoWidgetControl( QXAVideoWidgetControl * videoWidgetControl ) -{ - QT_TRACE_FUNCTION_ENTRY; - if ((mVideowidgetControl == videoWidgetControl) && (mImpl)) { - disconnect(mVideowidgetControl, SIGNAL(widgetUpdated()), - this, SLOT(videoWidgetControlWidgetUpdated())); - RWindow* window = static_cast<RWindow*>(mVideowidgetControl->videoWidgetWId()->DrawableWindow()); - mImpl->removeNativeDisplay(window, mWsSession); - } - mVideowidgetControl = NULL; - mWidgetCtrlWindow = NULL; - mWidgetCtrlWindowId = NULL; - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::setVideoWindowControl( QXAVideoWindowControl * videoWindowControl ) -{ - QT_TRACE_FUNCTION_ENTRY; - if (mVideoWindowControl) { - disconnect(mVideoWindowControl, SIGNAL(windowUpdated()), - this, SLOT(videoWindowControlWindowUpdated())); - RWindow* window = static_cast<RWindow*>(mVideoWindowControl->winId()->DrawableWindow()); - mImpl->removeNativeDisplay(window, mWsSession); - } - mVideoWindowControl = videoWindowControl; - if (mVideoWindowControl) { - connect(mVideoWindowControl, SIGNAL(windowUpdated()), - this, SLOT(videoWindowControlWindowUpdated())); - videoWindowControlWindowUpdated(); - } - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::unsetVideoWindowControl( QXAVideoWindowControl * videoWindowControl ) -{ - QT_TRACE_FUNCTION_ENTRY; - if ((mVideoWindowControl == videoWindowControl) && (mImpl)) { - disconnect(mVideoWindowControl, SIGNAL(windowUpdated()), - this, SLOT(videoWindowControlWindowUpdated())); - RWindow* window = static_cast<RWindow*>(mVideoWindowControl->winId()->DrawableWindow()); - mImpl->removeNativeDisplay(window, mWsSession); - } - mVideoWindowControl = NULL; - mWindowCtrlWindow = NULL; - mWindowCtrlWindowId = NULL; - QT_TRACE_FUNCTION_EXIT; -} - -qint64 QXAPlaySession::duration() -{ - TInt64 dur(0); - if (mImpl) - mImpl->duration(dur); - - return (qint64)dur; -} - -qint64 QXAPlaySession::position() -{ - TInt64 pos(0); - if (mImpl) - mImpl->position(pos); - - return (qint64)pos; -} - -void QXAPlaySession::setPosition(qint64 ms) -{ - if (mImpl) { - qint64 currPos = position(); - mImpl->seek(ms); - - if(currPos != position()) { - emit positionChanged(position()); - - if(position()>=duration()) { - setMediaStatus(QMediaPlayer::EndOfMedia); - stop(); - } - } - } -} - -int QXAPlaySession::volume() -{ - if(mImpl) { - TInt v(0); - - TInt err = mImpl->volume(v); - if(KErrNone == err) - return v; - } - - return 50; -} - -void QXAPlaySession::setVolume(int v) -{ - if(mImpl) { - if(v != volume()) { - TInt err = mImpl->setVolume(v); - if(KErrNone == err) - emit volumeChanged(volume()); - } - } -} - - -bool QXAPlaySession::isMuted() -{ - if(mImpl) { - TBool bCurrMute = EFalse; - TInt err = mImpl->getMute(bCurrMute); - if(err == KErrNone) - return bCurrMute; - } - - return EFalse; -} - -void QXAPlaySession::setMuted(bool muted) -{ - if(muted != isMuted()) - { - if(mImpl) - { - TInt err = mImpl->setMute(muted); - - if(KErrNone == err) - { - emit mutedChanged(muted); - } - } - } -} - -int QXAPlaySession::bufferStatus() -{ - if(mImpl) { - TInt fillLevel = 0; - TInt err = mImpl->bufferStatus(fillLevel); - if(err == KErrNone) - return fillLevel; - } - - return 100;//default -} - -bool QXAPlaySession::isAudioAvailable() -{ - return mbAudioAvailable; -} - -bool QXAPlaySession::isVideoAvailable() -{ - return mbVideoAvailable; -} - -bool QXAPlaySession::isSeekable() -{ - return ((mSeekable==1) || (mSeekable==-1));//default seekable -} - -float QXAPlaySession::playbackRate() -{ - if(mImpl) { - TReal32 currPBRate = 0.0; - TInt ret = mImpl->getPlaybackRate(currPBRate); - if(ret == KErrNone) - return currPBRate; - } - - return 1.0; -} - -void QXAPlaySession::setPlaybackRate(float rate) -{ - if(mImpl) { - TReal32 currPBRate = 0.0; - TInt ret = mImpl->getPlaybackRate(currPBRate); - if( (ret == KErrNone) && - (rate!=currPBRate)) { - ret = mImpl->setPlaybackRate(rate); - if(ret == KErrNone) - emit playbackRateChanged(rate); - } - } -} - -QMediaContent QXAPlaySession::media() -{ - QT_TRACE_FUNCTION_ENTRY_EXIT; - return mMediaContent; -} - -void QXAPlaySession::setMedia(const QMediaContent& media) -{ - QT_TRACE_FUNCTION_ENTRY; - RET_IF_p_IS_NULL_EMIT_PLAYER_RESOURCE_ERROR(mImpl); - - if (media.isNull() || - mMediaContent == media) { - return; - } - - setMediaStatus(QMediaPlayer::NoMedia); - - QString urlStr = media.canonicalUrl().toString(); - TPtrC16 urlPtr(reinterpret_cast<const TUint16*>(urlStr.utf16())); - - setMediaStatus(QMediaPlayer::LoadingMedia); - if (mImpl->load(urlPtr) == 0) { - setMediaStatus(QMediaPlayer::LoadedMedia); - emit error(QMediaPlayer::NoError, ""); - mMediaContent = media; - setPlayerState(QMediaPlayer::StoppedState); - emit mediaChanged(mMediaContent); - - if(mImpl->isMetaDataAvailable()) { - emit metaDataAvailableChanged(true); - emit metaDataChanged(); - } - else { - emit metaDataAvailableChanged(false); - } - } - else { - setMediaStatus(QMediaPlayer::NoMedia); - emit error(QMediaPlayer::ResourceError, tr("Unable to load media")); - } - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::play() -{ - if (mImpl) { - setMediaStatus(QMediaPlayer::BufferingMedia); - - TInt err = mImpl->play(); - if (err != KErrNone) { - setMediaStatus(QMediaPlayer::NoMedia); - RET_IF_ERROR(err); - } - setPlayerState(QMediaPlayer::PlayingState); - - TInt fillLevel = 0; - err = mImpl->bufferStatus(fillLevel); - RET_IF_ERROR(err); - if (fillLevel == 100) { - setMediaStatus(QMediaPlayer::BufferedMedia); - } - } -} - -void QXAPlaySession::pause() -{ - if (mImpl) { - TInt err = mImpl->pause(); - RET_IF_ERROR(err); - setPlayerState(QMediaPlayer::PausedState); - } -} - -void QXAPlaySession::stop() -{ - if (mImpl) { - TInt err = mImpl->stop(); - RET_IF_ERROR(err); - setPlayerState(QMediaPlayer::StoppedState); - } -} - -void QXAPlaySession::cbDurationChanged(TInt64 new_dur) -{ - emit durationChanged((qint64)new_dur); -} - -void QXAPlaySession::cbPositionChanged(TInt64 new_pos) -{ - emit positionChanged((qint64)new_pos); -} - -void QXAPlaySession::cbSeekableChanged(TBool seekable) -{ - if( (mSeekable==-1) || - (seekable != (TBool)mSeekable)) { - mSeekable = seekable?1:0; - emit seekableChanged((bool)seekable); - } -} - -void QXAPlaySession::cbPlaybackStopped(TInt err) -{ - if (err) { - emit error(QMediaPlayer::ResourceError, tr("Resources Unavailable")); - SIGNAL_EMIT_TRACE1("emit error(QMediaPlayer::ResourceError, tr(\"Resources Unavailable\"))"); - emit positionChanged(position()); - setPlayerState(QMediaPlayer::StoppedState); - setMediaStatus(QMediaPlayer::NoMedia); - } - else { - setMediaStatus(QMediaPlayer::EndOfMedia); - /* Set player state to Stopped */ - stop(); - } -} - -void QXAPlaySession::cbPrefetchStatusChanged() -{ - if(mImpl) { - TInt fillLevel = 0; - TInt err = mImpl->bufferStatus(fillLevel); - if(err == KErrNone) { - emit bufferStatusChanged(fillLevel); - - if(fillLevel == 100) - setMediaStatus(QMediaPlayer::BufferedMedia); - else if(fillLevel ==0) - setMediaStatus(QMediaPlayer::StalledMedia); - } - } -} - -void QXAPlaySession::cbStreamInformation(TBool bFirstTime) -{ - updateStreamInfo(bFirstTime); -} - - - -void QXAPlaySession::videoWidgetControlWidgetUpdated() -{ - QT_TRACE_FUNCTION_ENTRY; - if (mVideowidgetControl) { - WId newId = mVideowidgetControl->videoWidgetWId(); - if ((newId != NULL) && (newId != mWidgetCtrlWindowId)) { - mWidgetCtrlWindow = static_cast<RWindow*>(newId->DrawableWindow()); - if (mWidgetCtrlWindowId == NULL) - mImpl->addNativeDisplay(mWidgetCtrlWindow, mWsSession); - else - mImpl->updateNativeDisplay(mWidgetCtrlWindow, mWsSession); - mWidgetCtrlWindowId = newId; - } - } - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::videoWindowControlWindowUpdated() -{ - QT_TRACE_FUNCTION_ENTRY; - if (mVideoWindowControl) { - WId newId = mVideoWindowControl->winId(); - if ((newId != NULL) && (newId != mWindowCtrlWindowId)) { - mWidgetCtrlWindow = static_cast<RWindow*>(newId->DrawableWindow()); - if (mWindowCtrlWindowId == NULL) - mImpl->addNativeDisplay(mWidgetCtrlWindow, mWsSession); - else - mImpl->updateNativeDisplay(mWidgetCtrlWindow, mWsSession); - mWindowCtrlWindowId = newId; - } - } - QT_TRACE_FUNCTION_EXIT; -} - -void QXAPlaySession::setMediaStatus(QMediaPlayer::MediaStatus status) -{ - if (m_mediaStatus != status) { - m_mediaStatus = status; - emit mediaStatusChanged(status); - } -} - -void QXAPlaySession::setPlayerState(QMediaPlayer::State state) -{ - if (m_state != state) { - m_state = state; - emit stateChanged(m_state); - } -} - -QStringList QXAPlaySession::availableExtendedMetaData () const -{ - QStringList list; - RET_s_IF_p_IS_NULL(mImpl, list); - list = mImpl->availableExtendedMetaData(); - return list; -} - -QList<QtMultimediaKit::MetaData> QXAPlaySession::availableMetaData () const -{ - QList<QtMultimediaKit::MetaData> list; - RET_s_IF_p_IS_NULL(mImpl, list); - return mImpl->availableMetaData(); -} - -QVariant QXAPlaySession::extendedMetaData(const QString & key ) const -{ - QVariant var; - RET_s_IF_p_IS_NULL(mImpl, var); - return mImpl->extendedMetaData(key); -} - -bool QXAPlaySession::isMetaDataAvailable() const -{ - RET_s_IF_p_IS_NULL(mImpl, false); - return mImpl->isMetaDataAvailable(); -} - -bool QXAPlaySession::isWritable() const -{ - RET_s_IF_p_IS_NULL(mImpl, false); - return mImpl->isWritable(); -} - -QVariant QXAPlaySession::metaData( QtMultimediaKit::MetaData key ) const -{ - QVariant var; - RET_s_IF_p_IS_NULL(mImpl, var); - return mImpl->metaData(key); -} - -void QXAPlaySession::setExtendedMetaData( const QString & key, const QVariant & value ) -{ - RET_IF_p_IS_NULL(mImpl); - mImpl->setExtendedMetaData(key, value); -} - -void QXAPlaySession::setMetaData( QtMultimediaKit::MetaData key, const QVariant & value ) -{ - RET_IF_p_IS_NULL(mImpl); - mImpl->setMetaData(key, value); -} - -void QXAPlaySession::updateStreamInfo(TBool emitSignal) -{ - if(mImpl) { - mNumStreams = 0; - TInt ret = mImpl->numMediaStreams(mNumStreams); - if(ret == KErrNone) { - TBool bAudioAvailable = EFalse;//lcoal variable - TBool bVideoAvailable = EFalse;//lcvoal variable - - for(TUint i = 0; i < mNumStreams; i++) { - QMediaStreamsControl::StreamType strType; - mImpl->streamType(i, strType); - if(strType == QMediaStreamsControl::AudioStream) - bAudioAvailable = ETrue; - else if(strType == QMediaStreamsControl::VideoStream) - bVideoAvailable = ETrue; - } - - if(emitSignal || (bAudioAvailable != mbAudioAvailable)) { - emit audioAvailableChanged(bAudioAvailable); - mbAudioAvailable = bAudioAvailable; - } - - if(emitSignal || (bVideoAvailable != mbVideoAvailable)) { - emit videoAvailableChanged(bVideoAvailable); - mbVideoAvailable = bVideoAvailable; - } - - emit streamsChanged(); - } - } -} - -bool QXAPlaySession::isStreamActive ( int stream ) -{ - RET_s_IF_p_IS_NULL(mImpl, false); - TBool isActive = EFalse; - mImpl->isStreamActive(stream,isActive); - return isActive; -} - -QVariant QXAPlaySession::metaData ( int /*stream*/, QtMultimediaKit::MetaData key ) -{ - return this->metaData(key); -} - -int QXAPlaySession::streamCount() -{ - return mNumStreams; -} - -QMediaStreamsControl::StreamType QXAPlaySession::streamType ( int stream ) -{ - QMediaStreamsControl::StreamType strType = QMediaStreamsControl::UnknownStream; - RET_s_IF_p_IS_NULL(mImpl, strType); - if(mImpl->streamType(stream, strType) == KErrNone) { - return strType; - } - - return QMediaStreamsControl::UnknownStream; -} - -////AspectRatioMode -void QXAPlaySession::setAspectRatioMode(Qt::AspectRatioMode aspectRatioMode) -{ - RET_IF_p_IS_NULL(mImpl); - mImpl->setAspectRatioMode(aspectRatioMode); -} - -Qt::AspectRatioMode QXAPlaySession::getAspectRatioMode() -{ - RET_s_IF_p_IS_NULL(mImpl, Qt::KeepAspectRatio); - return mImpl->getAspectRatioMode(); -} - - |