diff options
Diffstat (limited to 'src/plugins/mediaservices/symbian/mediaplayer')
26 files changed, 0 insertions, 4649 deletions
diff --git a/src/plugins/mediaservices/symbian/mediaplayer/mediaplayer.pri b/src/plugins/mediaservices/symbian/mediaplayer/mediaplayer.pri deleted file mode 100644 index 205e014..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/mediaplayer.pri +++ /dev/null @@ -1,63 +0,0 @@ -INCLUDEPATH += $$PWD -LIBS += -lmediaclientvideo \ - -lmediaclientaudio \ - -lws32 \ - -lfbscli \ - -lcone \ - -lmmfcontrollerframework \ - -lefsrv \ - -lbitgdi \ - -lapgrfx \ - -lapmime - - -# We are building Symbian backend with media player support -DEFINES += QMEDIA_MMF_PLAYER - - -HEADERS += \ - $$PWD/s60mediaplayercontrol.h \ - $$PWD/s60mediaplayerservice.h \ - $$PWD/s60mediaplayersession.h \ - $$PWD/s60videoplayersession.h \ - $$PWD/s60mediametadataprovider.h \ - $$PWD/s60videosurface.h \ - $$PWD/s60videooverlay.h \ - $$PWD/s60videorenderer.h \ - $$PWD/s60mediarecognizer.h \ - $$PWD/s60audioplayersession.h \ - $$PWD/ms60mediaplayerresolver.h \ - $$PWD/s60videowidget.h \ - $$PWD/s60mediaplayeraudioendpointselector.h - -SOURCES += \ - $$PWD/s60mediaplayercontrol.cpp \ - $$PWD/s60mediaplayerservice.cpp \ - $$PWD/s60mediaplayersession.cpp \ - $$PWD/s60videoplayersession.cpp \ - $$PWD/s60mediametadataprovider.cpp \ - $$PWD/s60videosurface.cpp \ - $$PWD/s60videooverlay.cpp \ - $$PWD/s60videorenderer.cpp \ - $$PWD/s60mediarecognizer.cpp \ - $$PWD/s60audioplayersession.cpp \ - $$PWD/s60videowidget.cpp \ - $$PWD/s60mediaplayeraudioendpointselector.cpp - -contains(S60_VERSION, 3.1) { - - #3.1 doesn't provide audio routing in videoplayer - DEFINES += HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER - - !exists($${EPOCROOT}epoc32\release\winscw\udeb\audiooutputrouting.lib) { - MMP_RULES += "$${LITERAL_HASH}ifdef WINSCW" \ - "MACRO HAS_NO_AUDIOROUTING" \ - "$${LITERAL_HASH}else" \ - "LIBRARY audiooutputrouting.lib" \ - "$${LITERAL_HASH}endif" - } - -} else { - LIBS += -laudiooutputrouting -} - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/ms60mediaplayerresolver.h b/src/plugins/mediaservices/symbian/mediaplayer/ms60mediaplayerresolver.h deleted file mode 100644 index b655a83..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/ms60mediaplayerresolver.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MS60MEDIAPLAYERRESOLVER_H -#define MS60MEDIAPLAYERRESOLVER_H - -QT_BEGIN_NAMESPACE - -class S60MediaPlayerSession; - -class MS60MediaPlayerResolver -{ - public: - virtual S60MediaPlayerSession* PlayerSession() = 0; - virtual S60MediaPlayerSession* VideoPlayerSession() = 0; - virtual S60MediaPlayerSession* AudioPlayerSession() = 0; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.cpp deleted file mode 100644 index 1bebe0a..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60audioplayersession.h" -#include <QtCore/qdebug.h> -#include <QtCore/qvariant.h> - -#include <AudioOutput.h> -#include <MAudioOutputObserver.h> - -QT_BEGIN_NAMESPACE - -S60AudioPlayerSession::S60AudioPlayerSession(QObject *parent) - : S60MediaPlayerSession(parent) - , m_player(0) - , m_audioEndpoint("Default") -{ -#ifndef HAS_NO_AUDIOROUTING - m_audioOutput = 0; -#endif - QT_TRAP_THROWING(m_player = CAudioPlayer::NewL(*this, 0, EMdaPriorityPreferenceNone)); - m_player->RegisterForAudioLoadingNotification(*this); -} - -S60AudioPlayerSession::~S60AudioPlayerSession() -{ -#if !defined(HAS_NO_AUDIOROUTING) - if (m_audioOutput) - m_audioOutput->UnregisterObserver(*this); - delete m_audioOutput; -#endif - m_player->Close(); - delete m_player; -} - -void S60AudioPlayerSession::doLoadL(const TDesC &path) -{ -#ifndef HAS_NO_AUDIOROUTING - // 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); -} - -qint64 S60AudioPlayerSession::doGetDurationL() const -{ - return m_player->Duration().Int64() / qint64(1000); -} - -qint64 S60AudioPlayerSession::doGetPositionL() const -{ - TTimeIntervalMicroSeconds ms = 0; - m_player->GetPosition(ms); - return ms.Int64() / qint64(1000); -} - -bool S60AudioPlayerSession::isVideoAvailable() const -{ - return false; -} -bool S60AudioPlayerSession::isAudioAvailable() const -{ - return true; // this is a bit happy scenario, but we do emit error that we can't play -} - -void S60AudioPlayerSession::MaloLoadingStarted() -{ - buffering(); -} - -void S60AudioPlayerSession::MaloLoadingComplete() -{ - buffered(); -} - -void S60AudioPlayerSession::doPlay() -{ -// For some reason loading progress callbalck are not called on emulator -#ifdef __WINSCW__ - buffering(); -#endif - m_player->Play(); -#ifdef __WINSCW__ - buffered(); -#endif - -} - -void S60AudioPlayerSession::doPauseL() -{ - m_player->Pause(); -} - -void S60AudioPlayerSession::doStop() -{ - m_player->Stop(); -} - -void S60AudioPlayerSession::doSetVolumeL(int volume) -{ - m_player->SetVolume((volume / 100.0) * m_player->MaxVolume()); -} - -void S60AudioPlayerSession::doSetPositionL(qint64 microSeconds) -{ - m_player->SetPosition(TTimeIntervalMicroSeconds(microSeconds)); -} - -void S60AudioPlayerSession::updateMetaDataEntriesL() -{ - metaDataEntries().clear(); - int numberOfMetaDataEntries = 0; - - m_player->GetNumberOfMetaDataEntries(numberOfMetaDataEntries); - - for (int i = 0; i < numberOfMetaDataEntries; i++) { - CMMFMetaDataEntry *entry = NULL; - entry = m_player->GetMetaDataEntryL(i); - metaDataEntries().insert(QString::fromUtf16(entry->Name().Ptr(), entry->Name().Length()), QString::fromUtf16(entry->Value().Ptr(), entry->Value().Length())); - delete entry; - } - emit metaDataChanged(); -} - -int S60AudioPlayerSession::doGetBufferStatusL() const -{ - int progress = 0; - m_player->GetAudioLoadingProgressL(progress); - return progress; -} - -void S60AudioPlayerSession::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) -{ - Q_UNUSED(aDuration); - setError(aError); -#ifndef HAS_NO_AUDIOROUTING - TRAPD(err, - m_audioOutput = CAudioOutput::NewL(*m_player); - m_audioOutput->RegisterObserverL(*this); - ); - setActiveEndpoint(m_audioEndpoint); - setError(err); -#endif - loaded(); -} - -void S60AudioPlayerSession::MapcPlayComplete(TInt aError) -{ - setError(aError); - endOfMedia(); -} - -void S60AudioPlayerSession::doSetAudioEndpoint(const QString& audioEndpoint) -{ - m_audioEndpoint = audioEndpoint; -} - -QString S60AudioPlayerSession::activeEndpoint() const -{ - QString outputName = QString("Default"); -#if !defined(HAS_NO_AUDIOROUTING) - if (m_audioOutput) { - CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput(); - outputName = qStringFromTAudioOutputPreference(output); - } -#endif - return outputName; -} - -QString S60AudioPlayerSession::defaultEndpoint() const -{ - QString outputName = QString("Default"); -#if !defined(HAS_NO_AUDIOROUTING) - if (m_audioOutput) { - CAudioOutput::TAudioOutputPreference output = m_audioOutput->DefaultAudioOutput(); - outputName = qStringFromTAudioOutputPreference(output); - } -#endif - return outputName; -} - -void S60AudioPlayerSession::setActiveEndpoint(const QString& name) -{ -#if !defined(HAS_NO_AUDIOROUTING) - CAudioOutput::TAudioOutputPreference output = CAudioOutput::ENoPreference; - - if (name == QString("Default")) - 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); - - if (m_audioEndpoint != name) { - m_audioEndpoint = name; - emit activeEndpointChanged(name); - } - } -#endif -} - -#if !defined(HAS_NO_AUDIOROUTING) -void S60AudioPlayerSession::DefaultAudioOutputChanged(CAudioOutput& aAudioOutput, - CAudioOutput::TAudioOutputPreference aNewDefault) -{ - // Emit already implemented in setActiveEndpoint function - Q_UNUSED(aAudioOutput) - Q_UNUSED(aNewDefault) -} - -QString S60AudioPlayerSession::qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const -{ - 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 -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.h b/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.h deleted file mode 100644 index f25b722..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60audioplayersession.h +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60AUDIOPLAYERSESSION_H -#define S60AUDIOPLAYERSESSION_H - -#include "s60mediaplayersession.h" - -#include <mdaaudiosampleplayer.h> -typedef CMdaAudioPlayerUtility CAudioPlayer; -typedef MMdaAudioPlayerCallback MAudioPlayerObserver; - -#ifndef HAS_NO_AUDIOROUTING -#include <phonon/audiooutput.h> -#include <MAudioOutputObserver.h> -#endif - -QT_BEGIN_NAMESPACE - -class S60AudioPlayerSession : public S60MediaPlayerSession - , public MAudioPlayerObserver - , public MAudioLoadingObserver -#ifndef HAS_NO_AUDIOROUTING - , public MAudioOutputObserver -#endif -{ - Q_OBJECT - -public: - S60AudioPlayerSession(QObject *parent); - ~S60AudioPlayerSession(); - - //From S60MediaPlayerSession - bool isVideoAvailable() const; - bool isAudioAvailable() const; - - // From MAudioLoadingObserver - void MaloLoadingStarted(); - void MaloLoadingComplete(); - -#ifndef HAS_NO_AUDIOROUTING - // From MAudioOutputObserver - void DefaultAudioOutputChanged( CAudioOutput& aAudioOutput, - CAudioOutput::TAudioOutputPreference aNewDefault ); -#endif -public: - // From S60MediaPlayerAudioEndpointSelector - QString activeEndpoint() const; - QString defaultEndpoint() const; -public Q_SLOTS: - void setActiveEndpoint(const QString& name); -Q_SIGNALS: - void activeEndpointChanged(const QString & name); - -protected: - //From S60MediaPlayerSession - void doLoadL(const TDesC &path); - void doLoadUrlL(const TDesC &path){Q_UNUSED(path)/*empty implementation*/} - void doPlay(); - void doStop(); - void doPauseL(); - void doSetVolumeL(int volume); - qint64 doGetPositionL() const; - void doSetPositionL(qint64 microSeconds); - void updateMetaDataEntriesL(); - int doGetBufferStatusL() const; - qint64 doGetDurationL() const; - void doSetAudioEndpoint(const QString& audioEndpoint); - -private: - void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration); - void MapcPlayComplete(TInt aError); -#ifndef HAS_NO_AUDIOROUTING - QString qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const; -#endif -private: - CAudioPlayer *m_player; -#ifndef HAS_NO_AUDIOROUTING - CAudioOutput *m_audioOutput; -#endif - QString m_audioEndpoint; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.cpp deleted file mode 100644 index e80c487..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60mediametadataprovider.h" -#include "s60mediaplayersession.h" -#include <QtCore/qdebug.h> - -QT_BEGIN_NAMESPACE - -S60MediaMetaDataProvider::S60MediaMetaDataProvider(MS60MediaPlayerResolver& mediaPlayerResolver, QObject *parent) - : QMetaDataControl(parent) - , m_mediaPlayerResolver(mediaPlayerResolver) - , m_session(NULL) -{ -} - -S60MediaMetaDataProvider::~S60MediaMetaDataProvider() -{ -} - -bool S60MediaMetaDataProvider::isMetaDataAvailable() const -{ - m_session = m_mediaPlayerResolver.PlayerSession(); - if (m_session) - return m_session->isMetadataAvailable(); - return false; -} - -bool S60MediaMetaDataProvider::isWritable() const -{ - return false; -} - -QVariant S60MediaMetaDataProvider::metaData(QtMediaServices::MetaData key) const -{ - m_session = m_mediaPlayerResolver.PlayerSession(); - if (m_session && m_session->isMetadataAvailable()) - return m_session->metaData(metaDataKeyAsString(key)); - return QVariant(); -} - -void S60MediaMetaDataProvider::setMetaData(QtMediaServices::MetaData key, QVariant const &value) -{ - Q_UNUSED(key); - Q_UNUSED(value); -} -QList<QtMediaServices::MetaData> S60MediaMetaDataProvider::availableMetaData() const -{ - m_session = m_mediaPlayerResolver.PlayerSession(); - QList<QtMediaServices::MetaData> metaDataTags; - if (m_session && m_session->isMetadataAvailable()) { - for (int i = QtMediaServices::Title; i <= QtMediaServices::DeviceSettingDescription; i++) { - QString metaData = metaDataKeyAsString((QtMediaServices::MetaData)i); - if (!metaData.isEmpty()) { - if (!m_session->metaData(metaData).toString().isEmpty()) { - metaDataTags.append((QtMediaServices::MetaData)i); - } - } - } - } - return metaDataTags; -} - -QVariant S60MediaMetaDataProvider::extendedMetaData(const QString &key) const -{ - m_session = m_mediaPlayerResolver.PlayerSession(); - if (m_session && m_session->isMetadataAvailable()) - return m_session->metaData(key); - return QVariant(); -} - -void S60MediaMetaDataProvider::setExtendedMetaData(const QString &key, QVariant const &value) -{ - Q_UNUSED(key); - Q_UNUSED(value); -} - -QStringList S60MediaMetaDataProvider::availableExtendedMetaData() const -{ - m_session = m_mediaPlayerResolver.PlayerSession(); - if (m_session && m_session->isMetadataAvailable()) - return m_session->availableMetaData().keys(); - return QStringList(); -} - -QString S60MediaMetaDataProvider::metaDataKeyAsString(QtMediaServices::MetaData key) const -{ - switch(key) { - case QtMediaServices::Title: return "title"; - case QtMediaServices::AlbumArtist: return "artist"; - case QtMediaServices::Comment: return "comment"; - case QtMediaServices::Genre: return "genre"; - case QtMediaServices::Year: return "year"; - case QtMediaServices::Copyright: return "copyright"; - case QtMediaServices::AlbumTitle: return "album"; - case QtMediaServices::Composer: return "composer"; - case QtMediaServices::TrackNumber: return "albumtrack"; - case QtMediaServices::AudioBitRate: return "audiobitrate"; - case QtMediaServices::VideoBitRate: return "videobitrate"; - case QtMediaServices::Duration: return "duration"; - case QtMediaServices::MediaType: return "contenttype"; - case QtMediaServices::SubTitle: // TODO: Find the matching metadata keys - case QtMediaServices::Description: - case QtMediaServices::Category: - case QtMediaServices::Date: - case QtMediaServices::UserRating: - case QtMediaServices::Keywords: - case QtMediaServices::Language: - case QtMediaServices::Publisher: - case QtMediaServices::ParentalRating: - case QtMediaServices::RatingOrganisation: - case QtMediaServices::Size: - case QtMediaServices::AudioCodec: - case QtMediaServices::AverageLevel: - case QtMediaServices::ChannelCount: - case QtMediaServices::PeakValue: - case QtMediaServices::SampleRate: - case QtMediaServices::Author: - case QtMediaServices::ContributingArtist: - case QtMediaServices::Conductor: - case QtMediaServices::Lyrics: - case QtMediaServices::Mood: - case QtMediaServices::TrackCount: - case QtMediaServices::CoverArtUrlSmall: - case QtMediaServices::CoverArtUrlLarge: - case QtMediaServices::Resolution: - case QtMediaServices::PixelAspectRatio: - case QtMediaServices::VideoFrameRate: - case QtMediaServices::VideoCodec: - case QtMediaServices::PosterUrl: - case QtMediaServices::ChapterNumber: - case QtMediaServices::Director: - case QtMediaServices::LeadPerformer: - case QtMediaServices::Writer: - case QtMediaServices::CameraManufacturer: - case QtMediaServices::CameraModel: - case QtMediaServices::Event: - case QtMediaServices::Subject: - default: - break; - } - - return QString(); -} - -QT_END_NAMESPACE - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.h deleted file mode 100644 index 07ae494..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediametadataprovider.h +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60MEDIAMETADATAPROVIDER_H -#define S60MEDIAMETADATAPROVIDER_H - -#include <qmetadatacontrol.h> -#include "ms60mediaplayerresolver.h" - -QT_BEGIN_NAMESPACE - -class S60MediaPlayerSession; - -class S60MediaMetaDataProvider : public QMetaDataControl -{ - Q_OBJECT - -public: - S60MediaMetaDataProvider(MS60MediaPlayerResolver& mediaPlayerResolver, QObject *parent = 0); - ~S60MediaMetaDataProvider(); - - bool isMetaDataAvailable() const; - bool isWritable() const; - - QVariant metaData(QtMediaServices::MetaData key) const; - void setMetaData(QtMediaServices::MetaData key, const QVariant &value); - QList<QtMediaServices::MetaData> availableMetaData() const; - - QVariant extendedMetaData(const QString &key) const ; - void setExtendedMetaData(const QString &key, const QVariant &value); - QStringList availableExtendedMetaData() const; - -private: - QString metaDataKeyAsString(QtMediaServices::MetaData key) const; - -private: - MS60MediaPlayerResolver& m_mediaPlayerResolver; - mutable S60MediaPlayerSession *m_session; -}; - -QT_END_NAMESPACE - -#endif // S60VIDEOMETADATAPROVIDER_H diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.cpp deleted file mode 100644 index dbeed90..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60mediaplayercontrol.h" -#include "s60mediaplayersession.h" -#include "s60mediaplayeraudioendpointselector.h" - -#include <QtGui/QIcon> -#include <QtCore/QDebug> - -QT_BEGIN_NAMESPACE - -S60MediaPlayerAudioEndpointSelector::S60MediaPlayerAudioEndpointSelector(QObject *control, QObject *parent) - :QMediaControl(parent) - , m_control(0) - , m_audioEndpointNames(0) -{ - m_control = qobject_cast<S60MediaPlayerControl*>(control); -} - -S60MediaPlayerAudioEndpointSelector::~S60MediaPlayerAudioEndpointSelector() -{ - delete m_audioEndpointNames; -} - -QList<QString> S60MediaPlayerAudioEndpointSelector::availableEndpoints() const -{ - if(m_audioEndpointNames->count() == 0) { - m_audioEndpointNames->append("Default"); - m_audioEndpointNames->append("All"); - m_audioEndpointNames->append("None"); - m_audioEndpointNames->append("Earphone"); - m_audioEndpointNames->append("Speaker"); - } - return *m_audioEndpointNames; -} - -QString S60MediaPlayerAudioEndpointSelector::endpointDescription(const QString& name) const -{ - if (name == QString("Default")) //ENoPreference - return QString("Used to indicate that the playing audio can be routed to" - "any speaker. This is the default value for audio."); - else if (name == QString("All")) //EAll - return QString("Used to indicate that the playing audio should be routed to all speakers."); - else if (name == QString("None")) //ENoOutput - return QString("Used to indicate that the playing audio should not be routed to any output."); - else if (name == QString("Earphone")) //EPrivate - return QString("Used to indicate that the playing audio should be routed to" - "the default private speaker. A private speaker is one that can only" - "be heard by one person."); - else if (name == QString("Speaker")) //EPublic - return QString("Used to indicate that the playing audio should be routed to" - "the default public speaker. A public speaker is one that can " - "be heard by multiple people."); - - return QString(); -} - -QString S60MediaPlayerAudioEndpointSelector::activeEndpoint() const -{ - if (m_control->session()) - return m_control->session()->activeEndpoint(); - else - return m_control->mediaControlSettings().audioEndpoint(); -} - -QString S60MediaPlayerAudioEndpointSelector::defaultEndpoint() const -{ - if (m_control->session()) - return m_control->session()->defaultEndpoint(); - else - return m_control->mediaControlSettings().audioEndpoint(); -} - -void S60MediaPlayerAudioEndpointSelector::setActiveEndpoint(const QString& name) -{ - QString oldEndpoint = m_control->mediaControlSettings().audioEndpoint(); - - if (name != oldEndpoint && (name == QString("Default") || name == QString("All") || - name == QString("None") || name == QString("Earphone") || name == QString("Speaker"))) { - - if (m_control->session()) { - m_control->session()->setActiveEndpoint(name); - } - m_control->setAudioEndpoint(name); - } -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.h deleted file mode 100644 index a110ae8..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayeraudioendpointselector.h +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60MEDIAPLAYERAUDIOENDPOINTSELECTOR_H -#define S60MEDIAPLAYERAUDIOENDPOINTSELECTOR_H - -#include <QStringList> - -#include <QtMediaServices/qmediacontrol.h> - -QT_BEGIN_NAMESPACE - -class S60MediaPlayerControl; -class S60MediaPlayerSession; - -class S60MediaPlayerAudioEndpointSelector : public QMediaControl -{ - -Q_OBJECT - -public: - S60MediaPlayerAudioEndpointSelector(QObject *control, QObject *parent = 0); - ~S60MediaPlayerAudioEndpointSelector(); - - QList<QString> availableEndpoints() const ; - QString endpointDescription(const QString& name) const; - QString defaultEndpoint() const; - QString activeEndpoint() const; - -public Q_SLOTS: - void setActiveEndpoint(const QString& name); - -private: - S60MediaPlayerControl* m_control; - QString m_audioInput; - QList<QString> *m_audioEndpointNames; -}; - -#define QAudioEndpointSelector_iid "com.nokia.Qt.QAudioEndpointSelector/1.0" - -QT_END_NAMESPACE - -#endif // S60MEDIAPLAYERAUDIOENDPOINTSELECTOR_H diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.cpp deleted file mode 100644 index 8e03afd..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.cpp +++ /dev/null @@ -1,274 +0,0 @@ - -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60mediaplayercontrol.h" -#include "s60mediaplayersession.h" - -#include <QtCore/qdir.h> -#include <QtCore/qurl.h> -#include <QtCore/qdebug.h> - -QT_BEGIN_NAMESPACE - -S60MediaPlayerControl::S60MediaPlayerControl(MS60MediaPlayerResolver& mediaPlayerResolver, QObject *parent) - : QMediaPlayerControl(parent), - m_mediaPlayerResolver(mediaPlayerResolver), - m_session(NULL), - m_stream(NULL) -{ -} - -S60MediaPlayerControl::~S60MediaPlayerControl() -{ -} - -qint64 S60MediaPlayerControl::position() const -{ - if (m_session) - return m_session->position(); - return 0; -} - -qint64 S60MediaPlayerControl::duration() const -{ - if (m_session) - return m_session->duration(); - return -1; -} - -QMediaPlayer::State S60MediaPlayerControl::state() const -{ - if (m_session) - return m_session->state(); - return QMediaPlayer::StoppedState; -} - -QMediaPlayer::MediaStatus S60MediaPlayerControl::mediaStatus() const -{ - if (m_session) - return m_session->mediaStatus(); - return m_mediaSettings.mediaStatus(); -} - -int S60MediaPlayerControl::bufferStatus() const -{ - if (m_session) - return m_session->bufferStatus(); - return 0; -} - -int S60MediaPlayerControl::volume() const -{ - if (m_session) - return m_session->volume(); - return m_mediaSettings.volume(); -} - -bool S60MediaPlayerControl::isMuted() const -{ - if (m_session) - return m_session->isMuted(); - return m_mediaSettings.isMuted(); -} - -bool S60MediaPlayerControl::isSeekable() const -{ - if (m_session) - return m_session->isSeekable(); - return false; -} - -QMediaTimeRange S60MediaPlayerControl::availablePlaybackRanges() const -{ - QMediaTimeRange ranges; - - if(m_session && m_session->isSeekable()) - ranges.addInterval(0, m_session->duration()); - - return ranges; -} - -qreal S60MediaPlayerControl::playbackRate() const -{ - //None of symbian players supports this. - return m_mediaSettings.playbackRate(); -} - -void S60MediaPlayerControl::setPlaybackRate(qreal rate) -{ - //None of symbian players supports this. - m_mediaSettings.setPlaybackRate(rate); - emit playbackRateChanged(playbackRate()); - -} - -void S60MediaPlayerControl::setPosition(qint64 pos) -{ - if (m_session) - m_session->setPosition(pos); -} - -void S60MediaPlayerControl::play() -{ - if (m_session) - m_session->play(); -} - -void S60MediaPlayerControl::pause() -{ - if (m_session) - m_session->pause(); -} - -void S60MediaPlayerControl::stop() -{ - if (m_session) - m_session->stop(); -} - -void S60MediaPlayerControl::setVolume(int volume) -{ - int boundVolume = qBound(0, volume, 100); - if (boundVolume == m_mediaSettings.volume()) - return; - - m_mediaSettings.setVolume(boundVolume); - if (m_session) - m_session->setVolume(boundVolume); - - emit volumeChanged(boundVolume); -} - -void S60MediaPlayerControl::setMuted(bool muted) -{ - if (m_mediaSettings.isMuted() == muted) - return; - - m_mediaSettings.setMuted(muted); - if (m_session) - m_session->setMuted(muted); - - emit mutedChanged(muted); -} - -QMediaContent S60MediaPlayerControl::media() const -{ - return m_currentResource; -} - -const QIODevice *S60MediaPlayerControl::mediaStream() const -{ - return m_stream; -} - -void S60MediaPlayerControl::setMedia(const QMediaContent &source, QIODevice *stream) -{ - Q_UNUSED(stream) - // we don't want to set & load media again when it is already loaded - if (m_session && m_currentResource == source) - return; - - // store to variable as session is created based on the content type. - m_currentResource = source; - S60MediaPlayerSession *newSession = m_mediaPlayerResolver.PlayerSession(); - m_mediaSettings.setMediaStatus(QMediaPlayer::UnknownMediaStatus); - - if (m_session) - m_session->reset(); - else { - emit mediaStatusChanged(QMediaPlayer::UnknownMediaStatus); - emit error(QMediaPlayer::NoError, QString()); - } - - m_session = newSession; - - if (m_session) - m_session->load(source.canonicalUrl()); - else { - QMediaPlayer::MediaStatus status = (source.isNull()) ? QMediaPlayer::NoMedia : QMediaPlayer::InvalidMedia; - m_mediaSettings.setMediaStatus(status); - emit stateChanged(QMediaPlayer::StoppedState); - emit error((source.isNull()) ? QMediaPlayer::NoError : QMediaPlayer::ResourceError, - (source.isNull()) ? "" : tr("Media couldn't be resolved")); - emit mediaStatusChanged(status); - } - emit mediaChanged(m_currentResource); - } - -S60MediaPlayerSession* S60MediaPlayerControl::session() -{ - return m_session; -} - -void S60MediaPlayerControl::setVideoOutput(QObject *output) -{ - S60MediaPlayerSession *session = NULL; - session = m_mediaPlayerResolver.VideoPlayerSession(); - session->setVideoRenderer(output); -} - -bool S60MediaPlayerControl::isAudioAvailable() const -{ - if (m_session) - return m_session->isAudioAvailable(); - return false; -} - -bool S60MediaPlayerControl::isVideoAvailable() const -{ - if (m_session) - return m_session->isVideoAvailable(); - return false; -} - -const S60MediaSettings& S60MediaPlayerControl::mediaControlSettings() const -{ - return m_mediaSettings; -} - -void S60MediaPlayerControl::setAudioEndpoint(const QString& name) -{ - m_mediaSettings.setAudioEndpoint(name); -} - -QT_END_NAMESPACE - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.h deleted file mode 100644 index 3d26a5e..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayercontrol.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60MEDIAPLAYERCONTROL_H -#define S60MEDIAPLAYERCONTROL_H - -#include <QtCore/qobject.h> - -#include <qmediaplayercontrol.h> - -#include "ms60mediaplayerresolver.h" -#include <QtCore/qdebug.h> - -QT_BEGIN_NAMESPACE - -class QMediaPlayer; -class QMediaTimeRange; -class QMediaContent; - - -class S60MediaPlayerSession; -class S60MediaPlayerService; - -class S60MediaSettings -{ - -public: - S60MediaSettings() - : m_volume(0) - , m_muted(false) - , m_playbackRate(0) - , m_mediaStatus(QMediaPlayer::UnknownMediaStatus) - , m_audioEndpoint(QString("Default")) - { - } - - void setVolume(int volume) { m_volume = volume; } - void setMuted(bool muted) { m_muted = muted; } - void setPlaybackRate(int rate) { m_playbackRate = rate; } - void setMediaStatus(QMediaPlayer::MediaStatus status) {m_mediaStatus=status;} - void setAudioEndpoint(const QString& audioEndpoint) { m_audioEndpoint = audioEndpoint; } - - int volume() const { return m_volume; } - bool isMuted() const { return m_muted; } - qreal playbackRate() const { return m_playbackRate; } - QMediaPlayer::MediaStatus mediaStatus() const {return m_mediaStatus;} - QString audioEndpoint() const { return m_audioEndpoint; } - -private: - int m_volume; - bool m_muted; - qreal m_playbackRate; - QMediaPlayer::MediaStatus m_mediaStatus; - QString m_audioEndpoint; -}; - -class S60MediaPlayerControl : public QMediaPlayerControl -{ - Q_OBJECT - -public: - S60MediaPlayerControl(MS60MediaPlayerResolver& mediaPlayerResolver, QObject *parent = 0); - ~S60MediaPlayerControl(); - - // from QMediaPlayerControl - virtual QMediaPlayer::State state() const; - virtual QMediaPlayer::MediaStatus mediaStatus() const; - virtual qint64 duration() const; - virtual qint64 position() const; - virtual void setPosition(qint64 pos); - virtual int volume() const; - virtual void setVolume(int volume); - virtual bool isMuted() const; - virtual void setMuted(bool muted); - virtual int bufferStatus() const; - virtual bool isAudioAvailable() const; - virtual bool isVideoAvailable() const; - virtual bool isSeekable() const; - virtual QMediaTimeRange availablePlaybackRanges() const; - virtual qreal playbackRate() const; - virtual void setPlaybackRate(qreal rate); - virtual QMediaContent media() const; - virtual const QIODevice *mediaStream() const; - virtual void setMedia(const QMediaContent&, QIODevice *); - virtual void play(); - virtual void pause(); - virtual void stop(); - S60MediaPlayerSession* session(); - void setAudioEndpoint(const QString& name); - - // Own methods - void setVideoOutput(QObject *output); - const S60MediaSettings& mediaControlSettings() const; - -private: - MS60MediaPlayerResolver &m_mediaPlayerResolver; - S60MediaPlayerSession *m_session; - QMediaContent m_currentResource; - QIODevice *m_stream; - S60MediaSettings m_mediaSettings; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.cpp deleted file mode 100644 index 0b1c7d5..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.cpp +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtCore/qvariant.h> -#include <QtCore/qdebug.h> -#include <QtGui/qwidget.h> - -#include "s60mediaplayerservice.h" -#include "s60mediaplayercontrol.h" -#include "s60videoplayersession.h" -#include "s60audioplayersession.h" -#include "s60mediametadataprovider.h" -#include "s60videowidget.h" -#include "s60mediarecognizer.h" -//#include <qmediatimerange.h> -#include "s60videooverlay.h" -#include "s60videorenderer.h" -#include "s60mediaplayeraudioendpointselector.h" - -#include <qmediaplaylistnavigator.h> -#include <qmediaplaylist.h> - -QT_BEGIN_NAMESPACE - -S60MediaPlayerService::S60MediaPlayerService(QObject *parent) - : QMediaService(parent) - , m_control(NULL) - , m_videoOutput(NULL) - , m_videoPlayerSession(NULL) - , m_audioPlayerSession(NULL) - , m_metaData(NULL) - , m_videoWidget(NULL) - , m_videoWindow(NULL) - , m_videoRenderer(NULL) - , m_audioEndpointSelector(NULL) -{ - m_control = new S60MediaPlayerControl(*this, this); - m_metaData = new S60MediaMetaDataProvider(*this); - m_audioEndpointSelector = new S60MediaPlayerAudioEndpointSelector(m_control, this); -} - -S60MediaPlayerService::~S60MediaPlayerService() -{ - delete m_videoWidget; - delete m_videoRenderer; - delete m_videoWindow; - delete m_videoOutput; -} - -QMediaControl *S60MediaPlayerService::control(const char *name) const -{ - if (qstrcmp(name, QMediaPlayerControl_iid) == 0) - return m_control; - - if (qstrcmp(name, QMetaDataControl_iid) == 0) { - return m_metaData; - } - - if (qstrcmp(name, QVideoOutputControl_iid) == 0) { - if (!m_videoOutput) { - m_videoOutput = new S60VideoOutputControl; - connect(m_videoOutput, SIGNAL(outputChanged(QVideoOutputControl::Output)), - this, SLOT(videoOutputChanged(QVideoOutputControl::Output))); - m_videoOutput->setAvailableOutputs(QList<QVideoOutputControl::Output>() -// << QVideoOutputControl::RendererOutput -// << QVideoOutputControl::WindowOutput - << QVideoOutputControl::WidgetOutput); - - } - return m_videoOutput; - } - - if (qstrcmp(name, QVideoWidgetControl_iid) == 0) { - if (!m_videoWidget) - m_videoWidget = new S60VideoWidgetControl; - return m_videoWidget; - } - - if (qstrcmp(name, QVideoRendererControl_iid) == 0) { - if (m_videoRenderer) - m_videoRenderer = new S60VideoRenderer; - return m_videoRenderer; - } - - if (qstrcmp(name, QVideoWindowControl_iid) == 0) { - if (!m_videoWindow) - m_videoWindow = new S60VideoOverlay; - return m_videoWindow; - } - - if (qstrcmp(name, QAudioEndpointSelector_iid) == 0) { - return m_audioEndpointSelector; - } - - return 0; - -} - -void S60MediaPlayerService::videoOutputChanged(QVideoOutputControl::Output output) -{ - switch (output) { - case QVideoOutputControl::NoOutput: - m_control->setVideoOutput(0); - break; - - case QVideoOutputControl::RendererOutput: - m_control->setVideoOutput(m_videoRenderer); - break; - case QVideoOutputControl::WindowOutput: - m_control->setVideoOutput(m_videoWindow); - break; - - case QVideoOutputControl::WidgetOutput: - m_control->setVideoOutput(m_videoWidget); - break; - default: - qWarning("Invalid video output selection"); - break; - } -} - -S60MediaPlayerSession* S60MediaPlayerService::PlayerSession() -{ - QUrl url = m_control->media().canonicalUrl(); - - if (url.isEmpty() == true) { - return NULL; - } - - S60MediaRecognizer *m_mediaRecognizer = new S60MediaRecognizer(this); - S60MediaRecognizer::MediaType mediaType = m_mediaRecognizer->mediaType(url); - - switch (mediaType) { - case S60MediaRecognizer::Video: - case S60MediaRecognizer::Url: - return VideoPlayerSession(); - case S60MediaRecognizer::Audio: - return AudioPlayerSession(); - default: - break; - } - - return NULL; -} - -S60MediaPlayerSession* S60MediaPlayerService::VideoPlayerSession() -{ - if (!m_videoPlayerSession) { - m_videoPlayerSession = new S60VideoPlayerSession(this); - - connect(m_videoPlayerSession, SIGNAL(positionChanged(qint64)), - m_control, SIGNAL(positionChanged(qint64))); - connect(m_videoPlayerSession, SIGNAL(durationChanged(qint64)), - m_control, SIGNAL(durationChanged(qint64))); - connect(m_videoPlayerSession, SIGNAL(stateChanged(QMediaPlayer::State)), - m_control, SIGNAL(stateChanged(QMediaPlayer::State))); - connect(m_videoPlayerSession, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - m_control, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus))); - connect(m_videoPlayerSession,SIGNAL(bufferStatusChanged(int)), - m_control, SIGNAL(bufferStatusChanged(int))); - connect(m_videoPlayerSession, SIGNAL(videoAvailableChanged(bool)), - m_control, SIGNAL(videoAvailableChanged(bool))); - connect(m_videoPlayerSession, SIGNAL(audioAvailableChanged(bool)), - m_control, SIGNAL(audioAvailableChanged(bool))); - connect(m_videoPlayerSession, SIGNAL(seekableChanged(bool)), - m_control, SIGNAL(seekableChanged(bool))); - connect(m_videoPlayerSession, SIGNAL(availablePlaybackRangesChanged(const QMediaTimeRange&)), - m_control, SIGNAL(availablePlaybackRangesChanged(const QMediaTimeRange&))); - connect(m_videoPlayerSession, SIGNAL(error(int, const QString &)), - m_control, SIGNAL(error(int, const QString &))); - connect(m_videoPlayerSession, SIGNAL(metaDataChanged()), - m_metaData, SIGNAL(metaDataChanged())); - connect(m_videoPlayerSession, SIGNAL(activeEndpointChanged(const QString&)), - m_audioEndpointSelector, SIGNAL(activeEndpointChanged(const QString&))); - } - - m_videoPlayerSession->setVolume(m_control->mediaControlSettings().volume()); - m_videoPlayerSession->setMuted(m_control->mediaControlSettings().isMuted()); - m_videoPlayerSession->setAudioEndpoint(m_control->mediaControlSettings().audioEndpoint()); - return m_videoPlayerSession; -} - -S60MediaPlayerSession* S60MediaPlayerService::AudioPlayerSession() -{ - if (!m_audioPlayerSession) { - m_audioPlayerSession = new S60AudioPlayerSession(this); - - connect(m_audioPlayerSession, SIGNAL(positionChanged(qint64)), - m_control, SIGNAL(positionChanged(qint64))); - connect(m_audioPlayerSession, SIGNAL(durationChanged(qint64)), - m_control, SIGNAL(durationChanged(qint64))); - connect(m_audioPlayerSession, SIGNAL(stateChanged(QMediaPlayer::State)), - m_control, SIGNAL(stateChanged(QMediaPlayer::State))); - connect(m_audioPlayerSession, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - m_control, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus))); - connect(m_audioPlayerSession,SIGNAL(bufferStatusChanged(int)), - m_control, SIGNAL(bufferStatusChanged(int))); - connect(m_audioPlayerSession, SIGNAL(videoAvailableChanged(bool)), - m_control, SIGNAL(videoAvailableChanged(bool))); - connect(m_audioPlayerSession, SIGNAL(audioAvailableChanged(bool)), - m_control, SIGNAL(audioAvailableChanged(bool))); - connect(m_audioPlayerSession, SIGNAL(seekableChanged(bool)), - m_control, SIGNAL(seekableChanged(bool))); - connect(m_audioPlayerSession, SIGNAL(availablePlaybackRangesChanged(const QMediaTimeRange&)), - m_control, SIGNAL(availablePlaybackRangesChanged(const QMediaTimeRange&))); - connect(m_audioPlayerSession, SIGNAL(error(int, const QString &)), - m_control, SIGNAL(error(int, const QString &))); - connect(m_audioPlayerSession, SIGNAL(metaDataChanged()), - m_metaData, SIGNAL(metaDataChanged())); - connect(m_audioPlayerSession, SIGNAL(activeEndpointChanged(const QString&)), - m_audioEndpointSelector, SIGNAL(activeEndpointChanged(const QString&))); - } - - m_audioPlayerSession->setVolume(m_control->mediaControlSettings().volume()); - m_audioPlayerSession->setMuted(m_control->mediaControlSettings().isMuted()); - m_audioPlayerSession->setAudioEndpoint(m_control->mediaControlSettings().audioEndpoint()); - return m_audioPlayerSession; -} - -QT_END_NAMESPACE - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.h deleted file mode 100644 index 6c8155d..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayerservice.h +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEOPLAYERSERVICE_H -#define S60VIDEOPLAYERSERVICE_H - -#include <QtCore/qobject.h> - -#include <qmediaservice.h> -#include <qvideooutputcontrol.h> - -#include "s60videooutputcontrol.h" -#include "ms60mediaplayerresolver.h" - -#include "s60mediaplayeraudioendpointselector.h" - -QT_BEGIN_NAMESPACE - -class QMediaMetaData; -class QMediaPlayerControl; -class QMediaPlaylist; - - -class S60VideoPlayerSession; -class S60AudioPlayerSession; -class S60MediaPlayerControl; -class S60MediaMetaDataProvider; -class S60VideoWidgetControl; -class S60MediaRecognizer; -class S60VideoRenderer; -class S60VideoOverlay; - -class QMediaPlaylistNavigator; - -class S60MediaPlayerService : public QMediaService, public MS60MediaPlayerResolver -{ - Q_OBJECT - -public: - S60MediaPlayerService(QObject *parent = 0); - ~S60MediaPlayerService(); - - QMediaControl *control(const char *name) const; - -private slots: - void videoOutputChanged(QVideoOutputControl::Output output); - -protected: // From MS60MediaPlayerResolver - S60MediaPlayerSession* PlayerSession(); - S60MediaPlayerSession* VideoPlayerSession(); - S60MediaPlayerSession* AudioPlayerSession(); - -private: - S60MediaPlayerControl *m_control; - mutable S60VideoOutputControl *m_videoOutput; - S60VideoPlayerSession *m_videoPlayerSession; - S60AudioPlayerSession *m_audioPlayerSession; - mutable S60MediaMetaDataProvider *m_metaData; - mutable S60VideoWidgetControl *m_videoWidget; - mutable S60VideoOverlay *m_videoWindow; - mutable S60VideoRenderer *m_videoRenderer; - S60MediaPlayerAudioEndpointSelector *m_audioEndpointSelector; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.cpp deleted file mode 100644 index 693c103..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60mediaplayersession.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qdir.h> -#include <QtCore/qvariant.h> -#include <QtCore/qtimer.h> -#include <mmf/common/mmferrors.h> -#include <qmediatimerange.h> - -QT_BEGIN_NAMESPACE - -S60MediaPlayerSession::S60MediaPlayerSession(QObject *parent) - : QObject(parent) - , m_playbackRate(0) - , m_muted(false) - , m_volume(0) - , m_state(QMediaPlayer::StoppedState) - , m_mediaStatus(QMediaPlayer::UnknownMediaStatus) - , m_progressTimer(new QTimer(this)) - , m_stalledTimer(new QTimer(this)) - , m_error(KErrNone) - , m_play_requested(false) - , m_stream(false) -{ - connect(m_progressTimer, SIGNAL(timeout()), this, SLOT(tick())); - connect(m_stalledTimer, SIGNAL(timeout()), this, SLOT(stalled())); -} - -S60MediaPlayerSession::~S60MediaPlayerSession() -{ -} - -int S60MediaPlayerSession::volume() const -{ - return m_volume; -} - -void S60MediaPlayerSession::setVolume(int volume) -{ - if (m_volume == volume) - return; - - m_volume = volume; - // Dont set symbian players volume until media loaded. - // Leaves with KerrNotReady although documentation says otherwise. - if (!m_muted && - ( mediaStatus() == QMediaPlayer::LoadedMedia - || mediaStatus() == QMediaPlayer::StalledMedia - || mediaStatus() == QMediaPlayer::BufferingMedia - || mediaStatus() == QMediaPlayer::BufferedMedia - || mediaStatus() == QMediaPlayer::EndOfMedia)) { - TRAPD(err, doSetVolumeL(m_volume)); - setError(err); - } -} - -bool S60MediaPlayerSession::isMuted() const -{ - return m_muted; -} - -bool S60MediaPlayerSession::isSeekable() const -{ - return (m_stream)?false:true; -} - -void S60MediaPlayerSession::setMediaStatus(QMediaPlayer::MediaStatus status) -{ - if (m_mediaStatus == status) - return; - - m_mediaStatus = status; - - emit mediaStatusChanged(m_mediaStatus); - - if (m_play_requested) - play(); -} - -void S60MediaPlayerSession::setState(QMediaPlayer::State state) -{ - if (m_state == state) - return; - - m_state = state; - emit stateChanged(m_state); -} - -QMediaPlayer::State S60MediaPlayerSession::state() const -{ - return m_state; -} - -QMediaPlayer::MediaStatus S60MediaPlayerSession::mediaStatus() const -{ - return m_mediaStatus; -} - -void S60MediaPlayerSession::load(QUrl url) -{ - setMediaStatus(QMediaPlayer::LoadingMedia); - startStalledTimer(); - m_stream = (url.scheme() == "file")?false:true; - TRAPD(err, - if(m_stream) - doLoadUrlL(QString2TPtrC(url.toString())); - else - doLoadL(QString2TPtrC(QDir::toNativeSeparators(url.toLocalFile())))); - setError(err); -} - -void S60MediaPlayerSession::play() -{ - if (state() == QMediaPlayer::PlayingState - || mediaStatus() == QMediaPlayer::UnknownMediaStatus - || mediaStatus() == QMediaPlayer::NoMedia - || mediaStatus() == QMediaPlayer::InvalidMedia) - return; - - if (mediaStatus() == QMediaPlayer::LoadingMedia) { - m_play_requested = true; - return; - } - - m_play_requested = false; - setState(QMediaPlayer::PlayingState); - startProgressTimer(); - doPlay(); -} - -void S60MediaPlayerSession::pause() -{ - if (mediaStatus() == QMediaPlayer::NoMedia || - mediaStatus() == QMediaPlayer::InvalidMedia) - return; - - setState(QMediaPlayer::PausedState); - stopProgressTimer(); - TRAP_IGNORE(doPauseL()); -} - -void S60MediaPlayerSession::stop() -{ - m_play_requested = false; - setState(QMediaPlayer::StoppedState); - if (mediaStatus() == QMediaPlayer::BufferingMedia || - mediaStatus() == QMediaPlayer::BufferedMedia) - setMediaStatus(QMediaPlayer::LoadedMedia); - if (mediaStatus() == QMediaPlayer::LoadingMedia) - setMediaStatus(QMediaPlayer::UnknownMediaStatus); - stopProgressTimer(); - stopStalledTimer(); - doStop(); - emit positionChanged(0); -} -void S60MediaPlayerSession::reset() -{ - m_play_requested = false; - setError(KErrNone, QString(), true); - stopProgressTimer(); - stopStalledTimer(); - doStop(); - setState(QMediaPlayer::StoppedState); - setMediaStatus(QMediaPlayer::UnknownMediaStatus); -} - -void S60MediaPlayerSession::setVideoRenderer(QObject *renderer) -{ - Q_UNUSED(renderer); -} - -int S60MediaPlayerSession::bufferStatus() -{ - if( mediaStatus() == QMediaPlayer::LoadingMedia - || mediaStatus() == QMediaPlayer::UnknownMediaStatus - || mediaStatus() == QMediaPlayer::NoMedia - || mediaStatus() == QMediaPlayer::InvalidMedia) - return 0; - - int progress = 0; - TRAPD(err, progress = doGetBufferStatusL()); - - // If buffer status query not supported by codec return 100 - // do not set error - if(err == KErrNotSupported) - return 100; - - setError(err); - return progress; -} - -bool S60MediaPlayerSession::isMetadataAvailable() const -{ - return !m_metaDataMap.isEmpty(); -} - -QVariant S60MediaPlayerSession::metaData(const QString &key) const -{ - return m_metaDataMap.value(key); -} - -QMap<QString, QVariant> S60MediaPlayerSession::availableMetaData() const -{ - return m_metaDataMap; -} - -void S60MediaPlayerSession::setMuted(bool muted) -{ - m_muted = muted; - - if( m_mediaStatus == QMediaPlayer::LoadedMedia - || m_mediaStatus == QMediaPlayer::StalledMedia - || m_mediaStatus == QMediaPlayer::BufferingMedia - || m_mediaStatus == QMediaPlayer::BufferedMedia - || m_mediaStatus == QMediaPlayer::EndOfMedia) { - TRAPD(err, doSetVolumeL((m_muted)?0:m_volume)); - setError(err); - } -} - -qint64 S60MediaPlayerSession::duration() const -{ - if( mediaStatus() == QMediaPlayer::LoadingMedia - || mediaStatus() == QMediaPlayer::UnknownMediaStatus - || mediaStatus() == QMediaPlayer::NoMedia - || mediaStatus() == QMediaPlayer::InvalidMedia) - return -1; - - qint64 pos = 0; - TRAP_IGNORE(pos = doGetDurationL()); - return pos; -} - -qint64 S60MediaPlayerSession::position() const -{ - if( mediaStatus() == QMediaPlayer::LoadingMedia - || mediaStatus() == QMediaPlayer::UnknownMediaStatus - || mediaStatus() == QMediaPlayer::NoMedia - || mediaStatus() == QMediaPlayer::InvalidMedia) - return 0; - - qint64 pos = 0; - TRAP_IGNORE(pos = doGetPositionL()); - return pos; -} - -void S60MediaPlayerSession::setPosition(qint64 pos) -{ - if (position() == pos) - return; - - if (state() == QMediaPlayer::PlayingState) - pause(); - - TRAPD(err, doSetPositionL(pos * 1000)); - setError(err); - - if (state() == QMediaPlayer::PausedState) - play(); - - emit positionChanged(position()); -} - -void S60MediaPlayerSession::setAudioEndpoint(const QString& audioEndpoint) -{ - doSetAudioEndpoint(audioEndpoint); -} - -void S60MediaPlayerSession::loaded() -{ - stopStalledTimer(); - if (m_error == KErrNone || m_error == KErrMMPartialPlayback) { - setMediaStatus(QMediaPlayer::LoadedMedia); - TRAPD(err, updateMetaDataEntriesL()); - setError(err); - setVolume(m_volume); - setMuted(m_muted); - emit durationChanged(duration()); - emit videoAvailableChanged(isVideoAvailable()); - emit audioAvailableChanged(isAudioAvailable()); - } -} - -void S60MediaPlayerSession::endOfMedia() -{ - setMediaStatus(QMediaPlayer::EndOfMedia); - setState(QMediaPlayer::StoppedState); - emit positionChanged(0); -} - -void S60MediaPlayerSession::buffering() -{ - startStalledTimer(); - setMediaStatus(QMediaPlayer::BufferingMedia); -} - -void S60MediaPlayerSession::buffered() -{ - stopStalledTimer(); - setMediaStatus(QMediaPlayer::BufferedMedia); -} -void S60MediaPlayerSession::stalled() -{ - setMediaStatus(QMediaPlayer::StalledMedia); -} - -QMap<QString, QVariant>& S60MediaPlayerSession::metaDataEntries() -{ - return m_metaDataMap; -} - -QMediaPlayer::Error S60MediaPlayerSession::fromSymbianErrorToMultimediaError(int error) -{ - switch(error) { - case KErrNoMemory: - case KErrNotFound: - case KErrBadHandle: - case KErrAbort: - case KErrNotSupported: - case KErrCorrupt: - case KErrGeneral: - case KErrArgument: - case KErrPathNotFound: - case KErrDied: - case KErrServerTerminated: - case KErrServerBusy: - case KErrCompletion: - case KErrBadPower: - return QMediaPlayer::ResourceError; - - case KErrMMPartialPlayback: - return QMediaPlayer::FormatError; - - case KErrMMAudioDevice: - case KErrMMVideoDevice: - case KErrMMDecoder: - case KErrUnknown: - return QMediaPlayer::ServiceMissingError; - - case KErrMMNotEnoughBandwidth: - case KErrMMSocketServiceNotFound: - case KErrMMNetworkRead: - case KErrMMNetworkWrite: - case KErrMMServerSocket: - case KErrMMServerNotSupported: - case KErrMMUDPReceive: - case KErrMMInvalidProtocol: - case KErrMMInvalidURL: - case KErrMMMulticast: - case KErrMMProxyServer: - case KErrMMProxyServerNotSupported: - case KErrMMProxyServerConnect: - return QMediaPlayer::NetworkError; - - case KErrNotReady: - case KErrInUse: - case KErrAccessDenied: - case KErrLocked: - case KErrMMDRMNotAuthorized: - case KErrPermissionDenied: - case KErrCancel: - case KErrAlreadyExists: - return QMediaPlayer::AccessDeniedError; - - case KErrNone: - default: - return QMediaPlayer::NoError; - } -} - -void S60MediaPlayerSession::setError(int error, const QString &errorString, bool forceReset) -{ - if( forceReset ) { - m_error = KErrNone; - emit this->error(QMediaPlayer::NoError, QString()); - return; - } - - // If error does not change and m_error is reseted without forceReset flag - if (error == m_error || - (m_error != KErrNone && error == KErrNone)) - return; - - m_error = error; - QMediaPlayer::Error mediaError = fromSymbianErrorToMultimediaError(m_error); - QString symbianError = QString(errorString); - - if (mediaError != QMediaPlayer::NoError) { - // TODO: fix to user friendly string at some point - // These error string are only dev usable - symbianError.append("Symbian:"); - symbianError.append(QString::number(m_error)); - } - - emit this->error(mediaError, symbianError); - - switch(mediaError){ - case QMediaPlayer::ResourceError: - case QMediaPlayer::NetworkError: - case QMediaPlayer::AccessDeniedError: - case QMediaPlayer::ServiceMissingError: - m_play_requested = false; - setMediaStatus(QMediaPlayer::InvalidMedia); - stop(); - break; - } -} - -void S60MediaPlayerSession::tick() -{ - emit positionChanged(position()); - - if (bufferStatus() < 100) - emit bufferStatusChanged(bufferStatus()); -} - -void S60MediaPlayerSession::startProgressTimer() -{ - m_progressTimer->start(500); -} - -void S60MediaPlayerSession::stopProgressTimer() -{ - m_progressTimer->stop(); -} - -void S60MediaPlayerSession::startStalledTimer() -{ - m_stalledTimer->start(30000); -} - -void S60MediaPlayerSession::stopStalledTimer() -{ - m_stalledTimer->stop(); -} -QString S60MediaPlayerSession::TDesC2QString(const TDesC& aDescriptor) -{ - return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length()); -} -TPtrC S60MediaPlayerSession::QString2TPtrC( const QString& string ) -{ - // Returned TPtrC is valid as long as the given parameter is valid and unmodified - return TPtrC16(static_cast<const TUint16*>(string.utf16()), string.length()); -} -QRect S60MediaPlayerSession::TRect2QRect(const TRect& tr) -{ - return QRect(tr.iTl.iX, tr.iTl.iY, tr.Width(), tr.Height()); -} -TRect S60MediaPlayerSession::QRect2TRect(const QRect& qr) -{ - return TRect(TPoint(qr.left(), qr.top()), TSize(qr.width(), qr.height())); -} - -QT_END_NAMESPACE - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.h deleted file mode 100644 index bb9eddd..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediaplayersession.h +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60MEDIAPLAYERSESSION_H -#define S60MEDIAPLAYERSESSION_H - -#include <QtCore/qobject.h> -#include <QtCore/qurl.h> -#include <QtCore/qpair.h> -#include <qmediaplayer.h> -#include <e32cmn.h> // for TDesC -#include <QRect> -#include "s60mediaplayerservice.h" - -QT_BEGIN_NAMESPACE - -class QMediaTimeRange; - -class QTimer; - -class S60MediaPlayerSession : public QObject -{ - Q_OBJECT - -public: - S60MediaPlayerSession(QObject *parent); - virtual ~S60MediaPlayerSession(); - - // for player control interface to use - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; - qint64 duration() const; - qint64 position() const; - void setPosition(qint64 pos); - int volume() const; - void setVolume(int volume); - bool isMuted() const; - void setMuted(bool muted); - virtual bool isVideoAvailable() const = 0; - virtual bool isAudioAvailable() const = 0; - bool isSeekable() const; - void play(); - void pause(); - void stop(); - void reset(); - bool isMetadataAvailable() const; - QVariant metaData(const QString &key) const; - QMap<QString, QVariant> availableMetaData() const; - void load(QUrl url); - int bufferStatus(); - virtual void setVideoRenderer(QObject *renderer); - void setMediaStatus(QMediaPlayer::MediaStatus); - void setState(QMediaPlayer::State state); - void setAudioEndpoint(const QString& audioEndpoint); - -protected: - virtual void doLoadL(const TDesC &path) = 0; - virtual void doLoadUrlL(const TDesC &path) = 0; - virtual void doPlay() = 0; - virtual void doStop() = 0; - virtual void doPauseL() = 0; - virtual void doSetVolumeL(int volume) = 0; - virtual void doSetPositionL(qint64 microSeconds) = 0; - virtual qint64 doGetPositionL() const = 0; - virtual void updateMetaDataEntriesL() = 0; - virtual int doGetBufferStatusL() const = 0; - virtual qint64 doGetDurationL() const = 0; - virtual void doSetAudioEndpoint(const QString& audioEndpoint) = 0; - -public: - // From S60MediaPlayerAudioEndpointSelector - virtual QString activeEndpoint() const = 0; - virtual QString defaultEndpoint() const = 0; -public Q_SLOTS: - virtual void setActiveEndpoint(const QString& name) = 0; - -protected: - void setError(int error, const QString &errorString = QString(), bool forceReset = false); - void loaded(); - void buffering(); - void buffered(); - void endOfMedia(); - QMap<QString, QVariant>& metaDataEntries(); - QMediaPlayer::Error fromSymbianErrorToMultimediaError(int error); - void startProgressTimer(); - void stopProgressTimer(); - void startStalledTimer(); - void stopStalledTimer(); - QString TDesC2QString(const TDesC& aDescriptor); - TPtrC QString2TPtrC( const QString& string ); - QRect TRect2QRect(const TRect& tr); - TRect QRect2TRect(const QRect& qr); - - -protected slots: - void tick(); - void stalled(); - -signals: - void durationChanged(qint64 duration); - void positionChanged(qint64 position); - void stateChanged(QMediaPlayer::State state); - void mediaStatusChanged(QMediaPlayer::MediaStatus mediaStatus); - void videoAvailableChanged(bool videoAvailable); - void audioAvailableChanged(bool audioAvailable); - void bufferStatusChanged(int percentFilled); - void seekableChanged(bool); - void availablePlaybackRangesChanged(const QMediaTimeRange&); - void metaDataChanged(); - void error(int error, const QString &errorString); - void activeEndpointChanged(const QString &name); - -private: - qreal m_playbackRate; - QMap<QString, QVariant> m_metaDataMap; - bool m_muted; - int m_volume; - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_mediaStatus; - QTimer *m_progressTimer; - QTimer *m_stalledTimer; - int m_error; - bool m_play_requested; - bool m_stream; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.cpp deleted file mode 100644 index b563dd9..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "S60mediarecognizer.h" -#include <e32def.h> -#include <e32cmn.h> -#include <QtCore/qurl.h> -#include <QtCore/qdir.h> -#include <QtCore/qdebug.h> - -#include <apgcli.h> - -QT_BEGIN_NAMESPACE - -static const TInt KMimeTypePrefixLength = 6; // "audio/" or "video/" -_LIT(KMimeTypePrefixAudio, "audio/"); -_LIT(KMimeTypePrefixVideo, "video/"); - -S60MediaRecognizer::S60MediaRecognizer(QObject *parent) : QObject(parent) -{ -} - -S60MediaRecognizer::~S60MediaRecognizer() -{ - m_file.Close(); - m_fileServer.Close(); - m_recognizer.Close(); -} - -S60MediaRecognizer::MediaType S60MediaRecognizer::mediaType(const QUrl &url) -{ - bool isStream = (url.scheme() == "file")?false:true; - - if (isStream) - return Url; - else - return identifyMediaType(url.toLocalFile()); -} - -S60MediaRecognizer::MediaType S60MediaRecognizer::identifyMediaType(const QString& fileName) -{ - S60MediaRecognizer::MediaType result = NotSupported; - bool recognizerOpened = false; - - TInt err = m_recognizer.Connect(); - if (err == KErrNone) { - recognizerOpened = true; - } - - err = m_fileServer.Connect(); - if (err == KErrNone) { - recognizerOpened = true; - } - - // This is needed for sharing file handles for the recognizer - err = m_fileServer.ShareProtected(); - if (err == KErrNone) { - recognizerOpened = true; - } - - if (recognizerOpened) { - m_file.Close(); - err = m_file.Open(m_fileServer, QString2TPtrC(QDir::toNativeSeparators(fileName)), EFileRead | - EFileShareReadersOnly); - - if (err == KErrNone) { - TDataRecognitionResult recognizerResult; - err = m_recognizer.RecognizeData(m_file, recognizerResult); - if (err == KErrNone) { - const TPtrC mimeType = recognizerResult.iDataType.Des(); - - if (mimeType.Left(KMimeTypePrefixLength).Compare(KMimeTypePrefixAudio) == 0) { - result = Audio; - } else if (mimeType.Left(KMimeTypePrefixLength).Compare(KMimeTypePrefixVideo) == 0) { - result = Video; - } - } - } - } - return result; -} - -TPtrC S60MediaRecognizer::QString2TPtrC( const QString& string ) -{ - // Returned TPtrC is valid as long as the given parameter is valid and unmodified - return TPtrC16(static_cast<const TUint16*>(string.utf16()), string.length()); -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.h b/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.h deleted file mode 100644 index 320c34c..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60mediarecognizer.h +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60MEDIARECOGNIZER_H_ -#define S60MEDIARECOGNIZER_H_ - -#include <QtCore/qobject.h> - -#include <apgcli.h> -#include <f32file.h> - -QT_BEGIN_NAMESPACE - -class QUrl; - -class S60MediaRecognizer : public QObject -{ - Q_OBJECT - -public: - enum MediaType { - Audio, - Video, - Url, - NotSupported = -1 - }; - - S60MediaRecognizer(QObject *parent = 0); - ~S60MediaRecognizer(); - - S60MediaRecognizer::MediaType mediaType(const QUrl &url); - S60MediaRecognizer::MediaType identifyMediaType(const QString& fileName); - -protected: - TPtrC QString2TPtrC( const QString& string ); - -private: - RApaLsSession m_recognizer; - RFile m_file; - RFs m_fileServer; -}; - -QT_END_NAMESPACE - -#endif /* S60MEDIARECOGNIZER_H_ */ diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.cpp deleted file mode 100644 index 489b2e3..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtMultimedia/qvideosurfaceformat.h> -#include "s60videooverlay.h" -#include "s60videosurface.h" - -QT_BEGIN_NAMESPACE - -S60VideoOverlay::S60VideoOverlay(QObject *parent) - : QVideoWindowControl(parent) - , m_surface(new S60VideoSurface) - , m_aspectRatioMode(Qt::KeepAspectRatio) - , m_fullScreen(false) -{ - connect(m_surface, SIGNAL(surfaceFormatChanged(QVideoSurfaceFormat)), - this, SLOT(surfaceFormatChanged())); -} - -S60VideoOverlay::~S60VideoOverlay() -{ - delete m_surface; -} - -WId S60VideoOverlay::winId() const -{ - return m_surface->winId(); -} - -void S60VideoOverlay::setWinId(WId id) -{ - m_surface->setWinId(id); -} - -QRect S60VideoOverlay::displayRect() const -{ - return m_displayRect; -} - -void S60VideoOverlay::setDisplayRect(const QRect &rect) -{ - m_displayRect = rect; - - setScaledDisplayRect(); -} - -Qt::AspectRatioMode S60VideoOverlay::aspectRatioMode() const -{ - return m_aspectRatioMode; -} - -void S60VideoOverlay::setAspectRatioMode(Qt::AspectRatioMode ratio) -{ - m_aspectRatioMode = ratio; - - setScaledDisplayRect(); -} - -QSize S60VideoOverlay::customAspectRatio() const -{ - return m_aspectRatio; -} - -void S60VideoOverlay::setCustomAspectRatio(const QSize &customRatio) -{ - m_aspectRatio = customRatio; - - setScaledDisplayRect(); -} - -void S60VideoOverlay::repaint() -{ -} - -int S60VideoOverlay::brightness() const -{ - return m_surface->brightness(); -} - -void S60VideoOverlay::setBrightness(int brightness) -{ - m_surface->setBrightness(brightness); - - emit brightnessChanged(m_surface->brightness()); -} - -int S60VideoOverlay::contrast() const -{ - return m_surface->contrast(); -} - -void S60VideoOverlay::setContrast(int contrast) -{ - m_surface->setContrast(contrast); - - emit contrastChanged(m_surface->contrast()); -} - -int S60VideoOverlay::hue() const -{ - return m_surface->hue(); -} - -void S60VideoOverlay::setHue(int hue) -{ - m_surface->setHue(hue); - - emit hueChanged(m_surface->hue()); -} - -int S60VideoOverlay::saturation() const -{ - return m_surface->saturation(); -} - -void S60VideoOverlay::setSaturation(int saturation) -{ - m_surface->setSaturation(saturation); - - emit saturationChanged(m_surface->saturation()); -} - -bool S60VideoOverlay::isFullScreen() const -{ - return m_fullScreen; -} - -void S60VideoOverlay::setFullScreen(bool fullScreen) -{ - emit fullScreenChanged(m_fullScreen = fullScreen); -} - -QSize S60VideoOverlay::nativeSize() const -{ - return m_surface->surfaceFormat().sizeHint(); -} - -QAbstractVideoSurface *S60VideoOverlay::surface() const -{ - return m_surface; -} - -void S60VideoOverlay::surfaceFormatChanged() -{ - setScaledDisplayRect(); - - emit nativeSizeChanged(); -} - -void S60VideoOverlay::setScaledDisplayRect() -{ - switch (m_aspectRatioMode) { - case Qt::KeepAspectRatio: - { - QSize size = m_surface->surfaceFormat().viewport().size(); - - size.scale(m_displayRect.size(), Qt::KeepAspectRatio); - - QRect rect(QPoint(0, 0), size); - rect.moveCenter(m_displayRect.center()); - - m_surface->setDisplayRect(rect); - } - break; - case Qt::IgnoreAspectRatio: - m_surface->setDisplayRect(m_displayRect); - break; - }; -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.h b/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.h deleted file mode 100644 index d846f32..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videooverlay.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEOOVERLAY_H -#define S60VIDEOOVERLAY_H - -#include <QtCore/qobject.h> -#include <qvideowindowcontrol.h> - -QT_BEGIN_NAMESPACE - -class QAbstractVideoSurface; -class S60VideoSurface; - -class S60VideoOverlay : public QVideoWindowControl -{ - Q_OBJECT - -public: - S60VideoOverlay(QObject *parent = 0); - ~S60VideoOverlay(); - - WId winId() const; - void setWinId(WId id); - - QRect displayRect() const; - void setDisplayRect(const QRect &rect); - - bool isFullScreen() const; - void setFullScreen(bool fullScreen); - - QSize nativeSize() const; - - Qt::AspectRatioMode aspectRatioMode() const; - void setAspectRatioMode(Qt::AspectRatioMode mode); - - QSize customAspectRatio() const; - void setCustomAspectRatio(const QSize &customRatio); - - void repaint(); - - int brightness() const; - void setBrightness(int brightness); - - int contrast() const; - void setContrast(int contrast); - - int hue() const; - void setHue(int hue); - - int saturation() const; - void setSaturation(int saturation); - - QAbstractVideoSurface *surface() const; - -private slots: - void surfaceFormatChanged(); - -private: - void setScaledDisplayRect(); - - S60VideoSurface *m_surface; - Qt::AspectRatioMode m_aspectRatioMode; - QRect m_displayRect; - QSize m_aspectRatio; - bool m_fullScreen; -}; - -QT_END_NAMESPACE - -#endif // S60VIDEOOVERLAY_H diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.cpp deleted file mode 100644 index 134d5a0..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.cpp +++ /dev/null @@ -1,486 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60videoplayersession.h" -#include "s60videowidget.h" -#include "s60mediaplayerservice.h" -#include "s60videooverlay.h" - -#include <QtCore/qdebug.h> -#include <QtGui/qwidget.h> -#include <QtCore/qtimer.h> -#include <QApplication> - -#include <coecntrl.h> -#include <coemain.h> // For CCoeEnv -#include <w32std.h> -#include <mmf/common/mmfcontrollerframeworkbase.h> - -#include <AudioOutput.h> -#include <MAudioOutputObserver.h> - -QT_BEGIN_NAMESPACE - -S60VideoPlayerSession::S60VideoPlayerSession(QMediaService *service) - : S60MediaPlayerSession(service) - , m_player(0) - , m_rect(0, 0, 0, 0) - , m_output(QVideoOutputControl::NoOutput) - , m_windowId(0) - , m_dsaActive(false) - , m_dsaStopped(false) - , m_wsSession(CCoeEnv::Static()->WsSession()) - , m_screenDevice(*CCoeEnv::Static()->ScreenDevice()) - , m_window(0) - , m_service(*service) - , m_aspectRatioMode(Qt::KeepAspectRatio) - , m_originalSize(1, 1) - , m_audioOutput(0) - , m_audioEndpoint("Default") -{ - resetNativeHandles(); - QT_TRAP_THROWING(m_player = CVideoPlayerUtility::NewL( - *this, - 0, - EMdaPriorityPreferenceNone, - m_wsSession, - m_screenDevice, - *m_window, - m_rect, - m_rect)); - m_dsaActive = true; - m_player->RegisterForVideoLoadingNotification(*this); -} - -S60VideoPlayerSession::~S60VideoPlayerSession() -{ -#if !defined(HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER) - if (m_audioOutput) - m_audioOutput->UnregisterObserver(*this); - delete m_audioOutput; -#endif - m_player->Close(); - delete m_player; -} - -void S60VideoPlayerSession::doLoadL(const TDesC &path) -{ - // m_audioOutput needs to be reinitialized after MapcInitComplete - if (m_audioOutput) - m_audioOutput->UnregisterObserver(*this); - delete m_audioOutput; - m_audioOutput = NULL; - - m_player->OpenFileL(path); -} - -void S60VideoPlayerSession::doLoadUrlL(const TDesC &path) -{ - // m_audioOutput needs to be reinitialized after MapcInitComplete - if (m_audioOutput) - m_audioOutput->UnregisterObserver(*this); - delete m_audioOutput; - m_audioOutput = NULL; - - m_player->OpenUrlL(path); -} - -int S60VideoPlayerSession::doGetBufferStatusL() const -{ - int progress = 0; - m_player->GetVideoLoadingProgressL(progress); - return progress; -} - -qint64 S60VideoPlayerSession::doGetDurationL() const -{ - return m_player->DurationL().Int64() / qint64(1000); -} - -void S60VideoPlayerSession::setVideoRenderer(QObject *videoOutput) -{ - Q_UNUSED(videoOutput) - QVideoOutputControl *videoControl = qobject_cast<QVideoOutputControl *>(m_service.control(QVideoOutputControl_iid)); - - //Render changes - if (m_output != videoControl->output()) { - - if (m_output == QVideoOutputControl::WidgetOutput) { - S60VideoWidgetControl *widgetControl = qobject_cast<S60VideoWidgetControl *>(m_service.control(QVideoWidgetControl_iid)); - disconnect(widgetControl, SIGNAL(widgetUpdated()), this, SLOT(resetVideoDisplay())); - disconnect(widgetControl, SIGNAL(beginVideoWindowNativePaint()), this, SLOT(suspendDirectScreenAccess())); - disconnect(widgetControl, SIGNAL(endVideoWindowNativePaint()), this, SLOT(resumeDirectScreenAccess())); - disconnect(this, SIGNAL(stateChanged(QMediaPlayer::State)), widgetControl, SLOT(videoStateChanged(QMediaPlayer::State))); - } - - if (videoControl->output() == QVideoOutputControl::WidgetOutput) { - S60VideoWidgetControl *widgetControl = qobject_cast<S60VideoWidgetControl *>(m_service.control(QVideoWidgetControl_iid)); - connect(widgetControl, SIGNAL(widgetUpdated()), this, SLOT(resetVideoDisplay())); - connect(widgetControl, SIGNAL(beginVideoWindowNativePaint()), this, SLOT(suspendDirectScreenAccess())); - connect(widgetControl, SIGNAL(endVideoWindowNativePaint()), this, SLOT(resumeDirectScreenAccess())); - connect(this, SIGNAL(stateChanged(QMediaPlayer::State)), widgetControl, SLOT(videoStateChanged(QMediaPlayer::State))); - } - - m_output = videoControl->output(); - resetVideoDisplay(); - } -} - -bool S60VideoPlayerSession::resetNativeHandles() -{ - QVideoOutputControl* videoControl = qobject_cast<QVideoOutputControl *>(m_service.control(QVideoOutputControl_iid)); - WId newId = 0; - TRect newRect = TRect(0,0,0,0); - Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio; - - if (videoControl->output() == QVideoOutputControl::WidgetOutput) { - S60VideoWidgetControl* widgetControl = qobject_cast<S60VideoWidgetControl *>(m_service.control(QVideoWidgetControl_iid)); - QWidget *videoWidget = widgetControl->videoWidget(); - newId = widgetControl->videoWidgetWId(); - newRect = QRect2TRect(QRect(videoWidget->mapToGlobal(videoWidget->pos()), videoWidget->size())); - aspectRatioMode = widgetControl->aspectRatioMode(); - } else if (videoControl->output() == QVideoOutputControl::WindowOutput) { - S60VideoOverlay* windowControl = qobject_cast<S60VideoOverlay *>(m_service.control(QVideoWindowControl_iid)); - newId = windowControl->winId(); - newRect = TRect( newId->DrawableWindow()->AbsPosition(), newId->DrawableWindow()->Size()); - } else { - if (QApplication::activeWindow()) - newId = QApplication::activeWindow()->effectiveWinId(); - - if (!newId && QApplication::allWidgets().count()) - newId = QApplication::allWidgets().at(0)->effectiveWinId(); - - Q_ASSERT(newId != 0); - } - - if (newRect == m_rect && newId == m_windowId && aspectRatioMode == m_aspectRatioMode) - return false; - - if (newId) { - m_rect = newRect; - m_windowId = newId; - m_window = m_windowId->DrawableWindow(); - m_aspectRatioMode = aspectRatioMode; - return true; - } - return false; -} - -bool S60VideoPlayerSession::isVideoAvailable() const -{ -#ifdef PRE_S60_50_PLATFORM - return true; // this is not support in pre 5th platforms -#else - if (m_player) - return m_player->VideoEnabledL(); - else - return false; -#endif -} - -bool S60VideoPlayerSession::isAudioAvailable() const -{ - if (m_player) - return m_player->AudioEnabledL(); - else - return false; -} - -void S60VideoPlayerSession::doPlay() -{ - m_player->Play(); -} - -void S60VideoPlayerSession::doPauseL() -{ - m_player->PauseL(); -} - -void S60VideoPlayerSession::doStop() -{ - m_player->Stop(); -} - -qint64 S60VideoPlayerSession::doGetPositionL() const -{ - return m_player->PositionL().Int64() / qint64(1000); -} - -void S60VideoPlayerSession::doSetPositionL(qint64 microSeconds) -{ - m_player->SetPositionL(TTimeIntervalMicroSeconds(microSeconds)); -} - -void S60VideoPlayerSession::doSetVolumeL(int volume) -{ - m_player->SetVolumeL((volume / 100.0)* m_player->MaxVolume()); -} - -QPair<qreal, qreal> S60VideoPlayerSession::scaleFactor() -{ - QSize scaled = m_originalSize; - if (m_aspectRatioMode == Qt::IgnoreAspectRatio) - scaled.scale(TRect2QRect(m_rect).size(), Qt::IgnoreAspectRatio); - else if(m_aspectRatioMode == Qt::KeepAspectRatio) - scaled.scale(TRect2QRect(m_rect).size(), Qt::KeepAspectRatio); - - qreal width = qreal(scaled.width()) / qreal(m_originalSize.width()) * qreal(100); - qreal height = qreal(scaled.height()) / qreal(m_originalSize.height()) * qreal(100); - - return QPair<qreal, qreal>(width, height); -} - -void S60VideoPlayerSession::startDirectScreenAccess() -{ - if(m_dsaActive) - return; - - TRAPD(err, m_player->StartDirectScreenAccessL()); - if(err == KErrNone) - m_dsaActive = true; - setError(err); -} - -bool S60VideoPlayerSession::stopDirectScreenAccess() -{ - if(!m_dsaActive) - return false; - - TRAPD(err, m_player->StopDirectScreenAccessL()); - if(err == KErrNone) - m_dsaActive = false; - - setError(err); - return true; -} - -void S60VideoPlayerSession::MvpuoOpenComplete(TInt aError) -{ - setError(aError); - m_player->Prepare(); -} - -void S60VideoPlayerSession::MvpuoPrepareComplete(TInt aError) -{ - setError(aError); - TRAPD(err, - m_player->SetDisplayWindowL(m_wsSession, - m_screenDevice, - *m_window, - m_rect, - m_rect); - TSize originalSize; - m_player->VideoFrameSizeL(originalSize); - m_originalSize = QSize(originalSize.iWidth, originalSize.iHeight); - m_player->SetScaleFactorL(scaleFactor().first, scaleFactor().second, true)); - - setError(err); - m_dsaActive = true; -#if !defined(HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER) - TRAP(err, - m_audioOutput = CAudioOutput::NewL(*m_player); - m_audioOutput->RegisterObserverL(*this); - ); - setActiveEndpoint(m_audioEndpoint); - setError(err); -#endif - loaded(); -} - -void S60VideoPlayerSession::MvpuoFrameReady(CFbsBitmap &aFrame, TInt aError) -{ - Q_UNUSED(aFrame); - Q_UNUSED(aError); -} - -void S60VideoPlayerSession::MvpuoPlayComplete(TInt aError) -{ - setError(aError); - endOfMedia(); -} - -void S60VideoPlayerSession::MvpuoEvent(const TMMFEvent &aEvent) -{ - Q_UNUSED(aEvent); -} - -void 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(); -} - -void S60VideoPlayerSession::resetVideoDisplay() -{ - if (resetNativeHandles()) { - TRAPD(err, - m_player->SetDisplayWindowL(m_wsSession, - m_screenDevice, - *m_window, - m_rect, - m_rect)); - setError(err); - if( mediaStatus() == QMediaPlayer::LoadedMedia - || mediaStatus() == QMediaPlayer::StalledMedia - || mediaStatus() == QMediaPlayer::BufferingMedia - || mediaStatus() == QMediaPlayer::BufferedMedia - || mediaStatus() == QMediaPlayer::EndOfMedia) { - TRAPD(err, m_player->SetScaleFactorL(scaleFactor().first, scaleFactor().second, true)); - setError(err); - } - } -} - -void S60VideoPlayerSession::suspendDirectScreenAccess() -{ - m_dsaStopped = stopDirectScreenAccess(); -} - -void S60VideoPlayerSession::resumeDirectScreenAccess() -{ - if(!m_dsaStopped) - return; - - startDirectScreenAccess(); - m_dsaStopped = false; -} - -void S60VideoPlayerSession::MvloLoadingStarted() -{ - buffering(); -} - -void S60VideoPlayerSession::MvloLoadingComplete() -{ - buffered(); -} - -void S60VideoPlayerSession::doSetAudioEndpoint(const QString& audioEndpoint) -{ - m_audioEndpoint = audioEndpoint; -} - -QString S60VideoPlayerSession::activeEndpoint() const -{ - QString outputName = QString("Default"); -#if !defined(HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER) - if (m_audioOutput) { - CAudioOutput::TAudioOutputPreference output = m_audioOutput->AudioOutput(); - outputName = qStringFromTAudioOutputPreference(output); - } -#endif - return outputName; -} - -QString S60VideoPlayerSession::defaultEndpoint() const -{ - QString outputName = QString("Default"); -#if !defined(HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER) - if (m_audioOutput) { - CAudioOutput::TAudioOutputPreference output = m_audioOutput->DefaultAudioOutput(); - outputName = qStringFromTAudioOutputPreference(output); - } -#endif - return outputName; -} - -void S60VideoPlayerSession::setActiveEndpoint(const QString& name) -{ - CAudioOutput::TAudioOutputPreference output = CAudioOutput::ENoPreference; - - if (name == QString("Default")) - 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 !defined(HAS_NO_AUDIOROUTING_IN_VIDEOPLAYER) - if (m_audioOutput) { - TRAPD(err, m_audioOutput->SetAudioOutputL(output)); - setError(err); - - if (m_audioEndpoint != name) { - m_audioEndpoint = name; - emit activeEndpointChanged(name); - } - } -#endif -} - -void S60VideoPlayerSession::DefaultAudioOutputChanged( CAudioOutput& aAudioOutput, - CAudioOutput::TAudioOutputPreference aNewDefault ) -{ - // Emit already implemented in setActiveEndpoint function - Q_UNUSED(aAudioOutput) - Q_UNUSED(aNewDefault) -} - -QString S60VideoPlayerSession::qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const -{ - 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"); -} - -QT_END_NAMESPACE - diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.h b/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.h deleted file mode 100644 index 9aece61..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videoplayersession.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEOPLAYERSESSION_H -#define S60VIDEOPLAYERSESSION_H - -#include "s60mediaplayersession.h" -#include "s60mediaplayeraudioendpointselector.h" -#include <videoplayer.h> -#include <QtGui/qwidget.h> -#include <qvideowidget.h> - -#include <phonon/audiooutput.h> - -QT_BEGIN_NAMESPACE - -class QTimer; - -class S60VideoPlayerSession : public S60MediaPlayerSession, - public MVideoPlayerUtilityObserver, - public MVideoLoadingObserver, - public MAudioOutputObserver -{ - Q_OBJECT - -public: - S60VideoPlayerSession(QMediaService *service); - ~S60VideoPlayerSession(); - - //From S60MediaPlayerSession - bool isVideoAvailable() const; - bool isAudioAvailable() const; - void setVideoRenderer(QObject *renderer); - - //From MVideoLoadingObserver - void MvloLoadingStarted(); - void MvloLoadingComplete(); - - // From MAudioOutputObserver - void DefaultAudioOutputChanged(CAudioOutput& aAudioOutput, - CAudioOutput::TAudioOutputPreference aNewDefault); - -public: - // From S60MediaPlayerAudioEndpointSelector - QString activeEndpoint() const; - QString defaultEndpoint() const; -public Q_SLOTS: - void setActiveEndpoint(const QString& name); -Q_SIGNALS: - void activeEndpointChanged(const QString &name); - -protected: - //From S60MediaPlayerSession - void doLoadL(const TDesC &path); - void doLoadUrlL(const TDesC &path); - void doPlay(); - void doStop(); - void doPauseL(); - void doSetVolumeL(int volume); - qint64 doGetPositionL() const; - void doSetPositionL(qint64 microSeconds); - void updateMetaDataEntriesL(); - int doGetBufferStatusL() const; - qint64 doGetDurationL() const; - void doSetAudioEndpoint(const QString& audioEndpoint); - -private slots: - void resetVideoDisplay(); - void suspendDirectScreenAccess(); - void resumeDirectScreenAccess(); - -private: - bool resetNativeHandles(); - QPair<qreal, qreal> scaleFactor(); - void startDirectScreenAccess(); - bool stopDirectScreenAccess(); - QString qStringFromTAudioOutputPreference(CAudioOutput::TAudioOutputPreference output) const; - - - // From MVideoPlayerUtilityObserver - void MvpuoOpenComplete(TInt aError); - void MvpuoPrepareComplete(TInt aError); - void MvpuoFrameReady(CFbsBitmap &aFrame, TInt aError); - void MvpuoPlayComplete(TInt aError); - void MvpuoEvent(const TMMFEvent &aEvent); - -private: - // Qwn - CVideoPlayerUtility *m_player; - TRect m_rect; - QVideoOutputControl::Output m_output; - WId m_windowId; - bool m_dsaActive; - bool m_dsaStopped; - - //Reference - RWsSession &m_wsSession; - CWsScreenDevice &m_screenDevice; - RWindowBase *m_window; - QMediaService &m_service; - Qt::AspectRatioMode m_aspectRatioMode; - QSize m_originalSize; - CAudioOutput *m_audioOutput; - QString m_audioEndpoint; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.cpp deleted file mode 100644 index 269dd43..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60videorenderer.h" - -#include <QtCore/qcoreevent.h> -#include <QtGui/qapplication.h> - -QT_BEGIN_NAMESPACE - -S60VideoRenderer::S60VideoRenderer(QObject *parent) - : QVideoRendererControl(parent) -{ -} - -S60VideoRenderer::~S60VideoRenderer() -{ -} - - -QAbstractVideoSurface *S60VideoRenderer::surface() const -{ - return m_surface; -} - -void S60VideoRenderer::setSurface(QAbstractVideoSurface *surface) -{ - m_surface = surface; -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.h b/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.h deleted file mode 100644 index 260dc8b..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videorenderer.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEORENDERER_H -#define S60VIDEORENDERER_H - -#include <QtCore/qobject.h> -#include <qvideorenderercontrol.h> - -QT_BEGIN_NAMESPACE - -class S60VideoRenderer : public QVideoRendererControl -{ - Q_OBJECT - -public: - S60VideoRenderer(QObject *parent = 0); - virtual ~S60VideoRenderer(); - - QAbstractVideoSurface *surface() const; - void setSurface(QAbstractVideoSurface *surface); - -private: - - QAbstractVideoSurface *m_surface; -}; - -QT_END_NAMESPACE - -#endif // S60VIDEORENDERER_H diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.cpp deleted file mode 100644 index bfa7a13..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.cpp +++ /dev/null @@ -1,478 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//#include <QtGui/qx11info_x11.h> - -#include "s60videosurface.h" - -QT_BEGIN_NAMESPACE - -/*struct XvFormatRgb -{ - QVideoFrame::PixelFormat pixelFormat; - int bits_per_pixel; - int format; - int num_planes; - - int depth; - unsigned int red_mask; - unsigned int green_mask; - unsigned int blue_mask; - -};*/ -/* -bool operator ==(const XvImageFormatValues &format, const XvFormatRgb &rgb) -{ - return format.type == XvRGB - && format.bits_per_pixel == rgb.bits_per_pixel - && format.format == rgb.format - && format.num_planes == rgb.num_planes - && format.depth == rgb.depth - && format.red_mask == rgb.red_mask - && format.blue_mask == rgb.blue_mask; -} - -static const XvFormatRgb qt_xvRgbLookup[] = -{ - { QVideoFrame::Format_ARGB32, 32, XvPacked, 1, 32, 0x00FF0000, 0x0000FF00, 0x000000FF }, - { QVideoFrame::Format_RGB32 , 32, XvPacked, 1, 24, 0x00FF0000, 0x0000FF00, 0x000000FF }, - { QVideoFrame::Format_RGB24 , 24, XvPacked, 1, 24, 0x00FF0000, 0x0000FF00, 0x000000FF }, - { QVideoFrame::Format_RGB565, 16, XvPacked, 1, 16, 0x0000F800, 0x000007E0, 0x0000001F }, - { QVideoFrame::Format_BGRA32, 32, XvPacked, 1, 32, 0xFF000000, 0x00FF0000, 0x0000FF00 }, - { QVideoFrame::Format_BGR32 , 32, XvPacked, 1, 24, 0x00FF0000, 0x0000FF00, 0x000000FF }, - { QVideoFrame::Format_BGR24 , 24, XvPacked, 1, 24, 0x00FF0000, 0x0000FF00, 0x000000FF }, - { QVideoFrame::Format_BGR565, 16, XvPacked, 1, 16, 0x0000F800, 0x000007E0, 0x0000001F } -}; - -struct XvFormatYuv -{ - QVideoFrame::PixelFormat pixelFormat; - int bits_per_pixel; - int format; - int num_planes; - - unsigned int y_sample_bits; - unsigned int u_sample_bits; - unsigned int v_sample_bits; - unsigned int horz_y_period; - unsigned int horz_u_period; - unsigned int horz_v_period; - unsigned int vert_y_period; - unsigned int vert_u_period; - unsigned int vert_v_period; - char component_order[32]; -}; - -bool operator ==(const XvImageFormatValues &format, const XvFormatYuv &yuv) -{ - return format.type == XvYUV - && format.bits_per_pixel == yuv.bits_per_pixel - && format.format == yuv.format - && format.num_planes == yuv.num_planes - && format.y_sample_bits == yuv.y_sample_bits - && format.u_sample_bits == yuv.u_sample_bits - && format.v_sample_bits == yuv.v_sample_bits - && format.horz_y_period == yuv.horz_y_period - && format.horz_u_period == yuv.horz_u_period - && format.horz_v_period == yuv.horz_v_period - && format.horz_y_period == yuv.vert_y_period - && format.vert_u_period == yuv.vert_u_period - && format.vert_v_period == yuv.vert_v_period - && qstrncmp(format.component_order, yuv.component_order, 32) == 0; -} - -static const XvFormatYuv qt_xvYuvLookup[] = -{ - { QVideoFrame::Format_YUV444 , 24, XvPacked, 1, 8, 8, 8, 1, 1, 1, 1, 1, 1, "YUV" }, - { QVideoFrame::Format_YUV420P, 12, XvPlanar, 3, 8, 8, 8, 1, 2, 2, 1, 2, 2, "YUV" }, - { QVideoFrame::Format_YV12 , 12, XvPlanar, 3, 8, 8, 8, 1, 2, 2, 1, 2, 2, "YVU" }, - { QVideoFrame::Format_UYVY , 16, XvPacked, 1, 8, 8, 8, 1, 2, 2, 1, 1, 1, "UYVY" }, - { QVideoFrame::Format_YUYV , 16, XvPacked, 1, 8, 8, 8, 1, 2, 2, 1, 1, 1, "YUYV" }, - { QVideoFrame::Format_NV12 , 12, XvPlanar, 2, 8, 8, 8, 1, 2, 2, 1, 2, 2, "YUV" }, - { QVideoFrame::Format_NV12 , 12, XvPlanar, 2, 8, 8, 8, 1, 2, 2, 1, 2, 2, "YVU" }, - { QVideoFrame::Format_Y8 , 8 , XvPlanar, 1, 8, 0, 0, 1, 0, 0, 1, 0, 0, "Y" } -}; -*/ - -S60VideoSurface::S60VideoSurface(QObject *parent) - : QAbstractVideoSurface(parent) - , m_winId(0) - //, m_portId(0) - //, m_gc(0) - //, m_image(0) -{ -} - -S60VideoSurface::~S60VideoSurface() -{ - /*if (m_gc) - XFreeGC(QX11Info::display(), m_gc); - - if (m_portId != 0) - XvUngrabPort(QX11Info::display(), m_portId, 0); - */ -} - -WId S60VideoSurface::winId() const -{ - return m_winId; -} - -void S60VideoSurface::setWinId(WId id) -{ - /*if (id == m_winId) - return; - - if (m_image) - XFree(m_image); - - if (m_gc) { - XFreeGC(QX11Info::display(), m_gc); - m_gc = 0; - } - - if (m_portId != 0) - XvUngrabPort(QX11Info::display(), m_portId, 0); - - m_supportedPixelFormats.clear(); - m_formatIds.clear(); - - m_winId = id; - - if (m_winId && findPort()) { - querySupportedFormats(); - - m_gc = XCreateGC(QX11Info::display(), m_winId, 0, 0); - - if (m_image) { - m_image = 0; - - if (!start(surfaceFormat())) - QAbstractVideoSurface::stop(); - } - } else if (m_image) { - m_image = 0; - - QAbstractVideoSurface::stop(); - }*/ -} - -QRect S60VideoSurface::displayRect() const -{ - return m_displayRect; -} - -void S60VideoSurface::setDisplayRect(const QRect &rect) -{ - m_displayRect = rect; -} - -int S60VideoSurface::brightness() const -{ - //return getAttribute("XV_BRIGHTNESS", m_brightnessRange.first, m_brightnessRange.second); -} - -void S60VideoSurface::setBrightness(int brightness) -{ - //setAttribute("XV_BRIGHTNESS", brightness, m_brightnessRange.first, m_brightnessRange.second); -} - -int S60VideoSurface::contrast() const -{ - //return getAttribute("XV_CONTRAST", m_contrastRange.first, m_contrastRange.second); -} - -void S60VideoSurface::setContrast(int contrast) -{ - //setAttribute("XV_CONTRAST", contrast, m_contrastRange.first, m_contrastRange.second); -} - -int S60VideoSurface::hue() const -{ - //return getAttribute("XV_HUE", m_hueRange.first, m_hueRange.second); -} - -void S60VideoSurface::setHue(int hue) -{ - // setAttribute("XV_HUE", hue, m_hueRange.first, m_hueRange.second); -} - -int S60VideoSurface::saturation() const -{ - //return getAttribute("XV_SATURATION", m_saturationRange.first, m_saturationRange.second); -} - -void S60VideoSurface::setSaturation(int saturation) -{ - //setAttribute("XV_SATURATION", saturation, m_saturationRange.first, m_saturationRange.second); -} - -int S60VideoSurface::getAttribute(const char *attribute, int minimum, int maximum) const -{ - /*if (m_portId != 0) { - Display *display = QX11Info::display(); - - Atom atom = XInternAtom(display, attribute, True); - - int value = 0; - - XvGetPortAttribute(display, m_portId, atom, &value); - - return redistribute(value, minimum, maximum, -100, 100); - } else { - return 0; - }*/ -} - -void S60VideoSurface::setAttribute(const char *attribute, int value, int minimum, int maximum) -{ - /* if (m_portId != 0) { - Display *display = QX11Info::display(); - - Atom atom = XInternAtom(display, attribute, True); - - XvSetPortAttribute( - display, m_portId, atom, redistribute(value, -100, 100, minimum, maximum)); - }*/ -} - -int S60VideoSurface::redistribute( - int value, int fromLower, int fromUpper, int toLower, int toUpper) -{ - /*return fromUpper != fromLower - ? ((value - fromLower) * (toUpper - toLower) / (fromUpper - fromLower)) + toLower - : 0;*/ -} - -QList<QVideoFrame::PixelFormat> S60VideoSurface::supportedPixelFormats( - QAbstractVideoBuffer::HandleType handleType) const -{ - /*return handleType == QAbstractVideoBuffer::NoHandle - ? m_supportedPixelFormats - : QList<QVideoFrame::PixelFormat>();*/ -} - -bool S60VideoSurface::start(const QVideoSurfaceFormat &format) -{ - /*if (m_image) - XFree(m_image); - - int xvFormatId = 0; - for (int i = 0; i < m_supportedPixelFormats.count(); ++i) { - if (m_supportedPixelFormats.at(i) == format.pixelFormat()) { - xvFormatId = m_formatIds.at(i); - break; - } - } - - if (xvFormatId == 0) { - setError(UnsupportedFormatError); - } else { - XvImage *image = XvCreateImage( - QX11Info::display(), - m_portId, - xvFormatId, - 0, - format.frameWidth(), - format.frameHeight()); - - if (!image) { - setError(ResourceError); - } else { - m_viewport = format.viewport(); - m_image = image; - - return QAbstractVideoSurface::start(format); - } - } - - if (m_image) { - m_image = 0; - - QAbstractVideoSurface::stop(); - } -*/ - return false; -} - -void S60VideoSurface::stop() -{/* - if (m_image) { - XFree(m_image); - m_image = 0; - - QAbstractVideoSurface::stop(); - }*/ -} - -bool S60VideoSurface::present(const QVideoFrame &frame) -{/* - if (!m_image) { - setError(StoppedError); - return false; - } else if (m_image->width != frame.width() || m_image->height != frame.height()) { - setError(IncorrectFormatError); - return false; - } else { - QVideoFrame frameCopy(frame); - - if (!frameCopy.map(QAbstractVideoBuffer::ReadOnly)) { - setError(IncorrectFormatError); - return false; - } else { - bool presented = false; - - if (m_image->data_size > frame.numBytes()) { - qWarning("Insufficient frame buffer size"); - setError(IncorrectFormatError); - } else if (m_image->num_planes > 0 && m_image->pitches[0] != frame.bytesPerLine()) { - qWarning("Incompatible frame pitches"); - setError(IncorrectFormatError); - } else { - m_image->data = reinterpret_cast<char *>(frameCopy.bits()); - - XvPutImage( - QX11Info::display(), - m_portId, - m_winId, - m_gc, - m_image, - m_viewport.x(), - m_viewport.y(), - m_viewport.width(), - m_viewport.height(), - m_displayRect.x(), - m_displayRect.y(), - m_displayRect.width(), - m_displayRect.height()); - - m_image->data = 0; - - presented = true; - } - - frameCopy.unmap(); - - return presented; - } - }*/ -} - -bool S60VideoSurface::findPort() -{/* - unsigned int count = 0; - XvAdaptorInfo *adaptors = 0; - bool portFound = false; - - if (XvQueryAdaptors(QX11Info::display(), m_winId, &count, &adaptors) == Success) { - for (unsigned int i = 0; i < count && !portFound; ++i) { - if (adaptors[i].type & XvImageMask) { - m_portId = adaptors[i].base_id; - - for (unsigned int j = 0; j < adaptors[i].num_ports && !portFound; ++j, ++m_portId) - portFound = XvGrabPort(QX11Info::display(), m_portId, 0) == Success; - } - } - XvFreeAdaptorInfo(adaptors); - } - - return portFound;*/ -} - -void S60VideoSurface::querySupportedFormats() -{/* - int count = 0; - if (XvImageFormatValues *imageFormats = XvListImageFormats( - QX11Info::display(), m_portId, &count)) { - const int rgbCount = sizeof(qt_xvRgbLookup) / sizeof(XvFormatRgb); - const int yuvCount = sizeof(qt_xvYuvLookup) / sizeof(XvFormatYuv); - - for (int i = 0; i < count; ++i) { - switch (imageFormats[i].type) { - case XvRGB: - for (int j = 0; j < rgbCount; ++j) { - if (imageFormats[i] == qt_xvRgbLookup[j]) { - m_supportedPixelFormats.append(qt_xvRgbLookup[j].pixelFormat); - m_formatIds.append(imageFormats[i].id); - break; - } - } - break; - case XvYUV: - for (int j = 0; j < yuvCount; ++j) { - if (imageFormats[i] == qt_xvYuvLookup[j]) { - m_supportedPixelFormats.append(qt_xvYuvLookup[j].pixelFormat); - m_formatIds.append(imageFormats[i].id); - break; - } - } - break; - } - } - XFree(imageFormats); - } - - m_brightnessRange = qMakePair(0, 0); - m_contrastRange = qMakePair(0, 0); - m_hueRange = qMakePair(0, 0); - m_saturationRange = qMakePair(0, 0); - - if (XvAttribute *attributes = XvQueryPortAttributes(QX11Info::display(), m_portId, &count)) { - for (int i = 0; i < count; ++i) { - if (qstrcmp(attributes[i].name, "XV_BRIGHTNESS") == 0) - m_brightnessRange = qMakePair(attributes[i].min_value, attributes[i].max_value); - else if (qstrcmp(attributes[i].name, "XV_CONTRAST") == 0) - m_contrastRange = qMakePair(attributes[i].min_value, attributes[i].max_value); - else if (qstrcmp(attributes[i].name, "XV_HUE") == 0) - m_hueRange = qMakePair(attributes[i].min_value, attributes[i].max_value); - else if (qstrcmp(attributes[i].name, "XV_SATURATION") == 0) - m_saturationRange = qMakePair(attributes[i].min_value, attributes[i].max_value); - } - - XFree(attributes); - }*/ -} - -bool S60VideoSurface::isFormatSupported(const QVideoSurfaceFormat &format) const -{ -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.h b/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.h deleted file mode 100644 index 836e52f..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videosurface.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEOSURFACE_H -#define S60VIDEOSURFACE_H - -#include <QtGui/qwidget.h> -#include <QtMultimedia/qabstractvideosurface.h> - -QT_BEGIN_NAMESPACE - -class QVideoSurfaceFormat; - -class S60VideoSurface : public QAbstractVideoSurface -{ - Q_OBJECT -public: - S60VideoSurface(QObject *parent = 0); - ~S60VideoSurface(); - - WId winId() const; - void setWinId(WId id); - - QRect displayRect() const; - void setDisplayRect(const QRect &rect); - - int brightness() const; - void setBrightness(int brightness); - - int contrast() const; - void setContrast(int contrast); - - int hue() const; - void setHue(int hue); - - int saturation() const; - void setSaturation(int saturation); - - QList<QVideoFrame::PixelFormat> supportedPixelFormats( - QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const; - - bool isFormatSupported(const QVideoSurfaceFormat &format) const; - - bool start(const QVideoSurfaceFormat &format); - void stop(); - - bool present(const QVideoFrame &frame); - -private: - WId m_winId; - //XvPortID m_portId; - //GC m_gc; - //XvImage *m_image; - QList<QVideoFrame::PixelFormat> m_supportedPixelFormats; - QVector<int> m_formatIds; - QRect m_viewport; - QRect m_displayRect; - QPair<int, int> m_brightnessRange; - QPair<int, int> m_contrastRange; - QPair<int, int> m_hueRange; - QPair<int, int> m_saturationRange; - - bool findPort(); - void querySupportedFormats(); - - int getAttribute(const char *attribute, int minimum, int maximum) const; - void setAttribute(const char *attribute, int value, int minimum, int maximum); - - static int redistribute(int value, int fromLower, int fromUpper, int toLower, int toUpper); -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.cpp b/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.cpp deleted file mode 100644 index 84000d5..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "s60videowidget.h" -#include <QtGui/private/qwidget_p.h> -#include <QEvent> -#include <coemain.h> // For CCoeEnv - -QT_BEGIN_NAMESPACE - -QBlackWidget::QBlackWidget(QWidget *parent) - : QWidget(parent) -{ - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - setAttribute(Qt::WA_OpaquePaintEvent, true); - setAttribute(Qt::WA_NoSystemBackground, true); - setAutoFillBackground(false); - setPalette(QPalette(Qt::black)); -#if QT_VERSION >= 0x040601 && !defined(__WINSCW__) - qt_widget_private(this)->extraData()->nativePaintMode = QWExtra::ZeroFill; - qt_widget_private(this)->extraData()->receiveNativePaintEvents = true; -#endif -} - -QBlackWidget::~QBlackWidget() -{ -} - -void QBlackWidget::beginNativePaintEvent(const QRect& /*controlRect*/) -{ - emit beginVideoWindowNativePaint(); -} - -void QBlackWidget::endNativePaintEvent(const QRect& /*controlRect*/) -{ - CCoeEnv::Static()->WsSession().Flush(); - emit endVideoWindowNativePaint(); -} - -void QBlackWidget::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - // Do nothing -} - -S60VideoWidgetControl::S60VideoWidgetControl(QObject *parent) - : QVideoWidgetControl(parent) - , m_widget(0) - , m_aspectRatioMode(Qt::KeepAspectRatio) -{ - m_widget = new QBlackWidget(); - connect(m_widget, SIGNAL(beginVideoWindowNativePaint()), this, SIGNAL(beginVideoWindowNativePaint())); - connect(m_widget, SIGNAL(endVideoWindowNativePaint()), this, SIGNAL(endVideoWindowNativePaint())); - m_widget->installEventFilter(this); - m_widget->winId(); -} - -S60VideoWidgetControl::~S60VideoWidgetControl() -{ - delete m_widget; -} - -QWidget *S60VideoWidgetControl::videoWidget() -{ - return m_widget; -} - -Qt::AspectRatioMode S60VideoWidgetControl::aspectRatioMode() const -{ - return m_aspectRatioMode; -} - -void S60VideoWidgetControl::setAspectRatioMode(Qt::AspectRatioMode ratio) -{ - if (m_aspectRatioMode == ratio) - return; - - m_aspectRatioMode = ratio; - emit widgetUpdated(); -} - -bool S60VideoWidgetControl::isFullScreen() const -{ - return m_widget->isFullScreen(); -} - -void S60VideoWidgetControl::setFullScreen(bool fullScreen) -{ - emit fullScreenChanged(fullScreen); -} - -int S60VideoWidgetControl::brightness() const -{ - return 0; -} - -void S60VideoWidgetControl::setBrightness(int brightness) -{ - Q_UNUSED(brightness); -} - -int S60VideoWidgetControl::contrast() const -{ - return 0; -} - -void S60VideoWidgetControl::setContrast(int contrast) -{ - Q_UNUSED(contrast); -} - -int S60VideoWidgetControl::hue() const -{ - return 0; -} - -void S60VideoWidgetControl::setHue(int hue) -{ - Q_UNUSED(hue); -} - -int S60VideoWidgetControl::saturation() const -{ - return 0; -} - -void S60VideoWidgetControl::setSaturation(int saturation) -{ - Q_UNUSED(saturation); -} - -bool S60VideoWidgetControl::eventFilter(QObject *object, QEvent *e) -{ - if (object == m_widget) { - if ( e->type() == QEvent::Resize - || e->type() == QEvent::Move - || e->type() == QEvent::WinIdChange - || e->type() == QEvent::ParentChange - || e->type() == QEvent::Show) - emit widgetUpdated(); - } - return false; -} - -WId S60VideoWidgetControl::videoWidgetWId() -{ - if (m_widget->internalWinId()) - return m_widget->internalWinId(); - - if (m_widget->effectiveWinId()) - return m_widget->effectiveWinId(); - - return NULL; -} - -void S60VideoWidgetControl::videoStateChanged(QMediaPlayer::State state) -{ - if (state == QMediaPlayer::StoppedState) { -#if QT_VERSION <= 0x040600 && !defined(FF_QT) - qt_widget_private(m_widget)->extraData()->disableBlit = false; -#endif - m_widget->repaint(); - } else if (state == QMediaPlayer::PlayingState) { -#if QT_VERSION <= 0x040600 && !defined(FF_QT) - qt_widget_private(m_widget)->extraData()->disableBlit = true; -#endif - } -} - -QT_END_NAMESPACE diff --git a/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.h b/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.h deleted file mode 100644 index 28a1455..0000000 --- a/src/plugins/mediaservices/symbian/mediaplayer/s60videowidget.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, 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. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef S60VIDEOWIDGET_H -#define S60VIDEOWIDGET_H - -#include <qvideowidgetcontrol.h> -#include <qmediaplayer.h> - -QT_BEGIN_NAMESPACE - -class QBlackWidget : public QWidget -{ - Q_OBJECT - -public: - QBlackWidget(QWidget *parent = 0); - virtual ~QBlackWidget(); - -signals: - void beginVideoWindowNativePaint(); - void endVideoWindowNativePaint(); - -public slots: - void beginNativePaintEvent(const QRect&); - void endNativePaintEvent(const QRect&); - -protected: - void paintEvent(QPaintEvent *event); -}; - -class S60VideoWidgetControl : public QVideoWidgetControl -{ - Q_OBJECT - -public: - S60VideoWidgetControl(QObject *parent = 0); - virtual ~S60VideoWidgetControl(); - - // from QVideoWidgetControl - QWidget *videoWidget(); - Qt::AspectRatioMode aspectRatioMode() const; - void setAspectRatioMode(Qt::AspectRatioMode ratio); - bool isFullScreen() const; - void setFullScreen(bool fullScreen); - int brightness() const; - void setBrightness(int brightness); - int contrast() const; - void setContrast(int contrast); - int hue() const; - void setHue(int hue); - int saturation() const; - void setSaturation(int saturation); - - // from QObject - bool eventFilter(QObject *object, QEvent *event); - - //new methods - WId videoWidgetWId(); - -signals: - void widgetUpdated(); - void beginVideoWindowNativePaint(); - void endVideoWindowNativePaint(); - -private slots: - void videoStateChanged(QMediaPlayer::State state); - -private: - QBlackWidget *m_widget; - Qt::AspectRatioMode m_aspectRatioMode; -}; - -QT_END_NAMESPACE - - -#endif // S60VIDEOWIDGET_H |