diff options
Diffstat (limited to 'plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp')
-rw-r--r-- | plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp | 231 |
1 files changed, 39 insertions, 192 deletions
diff --git a/plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp b/plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp index cb7b556867..6b88198706 100644 --- a/plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp +++ b/plugins/multimedia/symbian/mmf/mediaplayer/s60mediaplayercontrol.cpp @@ -1,4 +1,3 @@ - /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). @@ -40,40 +39,27 @@ ** ****************************************************************************/ +#include <QtCore/QDir> +#include <QtCore/QUrl> #include "s60mediaplayercontrol.h" #include "s60mediaplayersession.h" #include "s60mmtrace.h" -#include <QtCore/qdir.h> -#include <QtCore/qurl.h> -#include <QtCore/qdebug.h> - -/*! - Constructs a new media player control with the given \a parent. -*/ - S60MediaPlayerControl::S60MediaPlayerControl(S60MediaPlayerService *service) - : QMediaPlayerControl(service), - m_service(service), - m_session(NULL), - m_stream(NULL) + : QMediaPlayerControl(service) + , m_service(service) + , m_session(0) + , m_stream(0) + , m_mediaSettings(new S60MediaSettings(this)) { TRACE("S60MediaPlayerControl::S60MediaPlayerControl" << qtThisPtr()); } -/*! - Destroys a media player control. -*/ - S60MediaPlayerControl::~S60MediaPlayerControl() { TRACE("S60MediaPlayerControl::~S60MediaPlayerControl" << qtThisPtr()); } -/*! - \return the current playback position in milliseconds. -*/ - qint64 S60MediaPlayerControl::position() const { if (m_session) @@ -81,10 +67,6 @@ qint64 S60MediaPlayerControl::position() const return 0; } -/*! - \return the duration of the current media in milliseconds. -*/ - qint64 S60MediaPlayerControl::duration() const { if (m_session) @@ -92,10 +74,6 @@ qint64 S60MediaPlayerControl::duration() const return -1; } -/*! - \return the state of a player control. -*/ - QMediaPlayer::State S60MediaPlayerControl::state() const { if (m_session) @@ -103,22 +81,13 @@ QMediaPlayer::State S60MediaPlayerControl::state() const return QMediaPlayer::StoppedState; } -/*! - \return the status of the current media. -*/ - QMediaPlayer::MediaStatus S60MediaPlayerControl::mediaStatus() const { if (m_session) return m_session->mediaStatus(); - return m_mediaSettings.mediaStatus(); + return m_mediaSettings->mediaStatus(); } -/*! - \return the buffering progress of the current media. Progress is measured in the percentage - of the buffer filled. -*/ - int S60MediaPlayerControl::bufferStatus() const { if (m_session) @@ -126,230 +95,132 @@ int S60MediaPlayerControl::bufferStatus() const return 0; } -/*! - \return the audio volume of a player control. -*/ - int S60MediaPlayerControl::volume() const { if (m_session) return m_session->volume(); - return m_mediaSettings.volume(); + return m_mediaSettings->volume(); } -/*! - \return the mute state of a player control. -*/ - bool S60MediaPlayerControl::isMuted() const { if (m_session) - return m_session->isMuted(); - return m_mediaSettings.isMuted(); + return m_session->isMuted(); + return m_mediaSettings->isMuted(); } -/*! - Identifies if the current media is seekable. - - \return true if it possible to seek within the current media, and false otherwise. -*/ - bool S60MediaPlayerControl::isSeekable() const { if (m_session) - return m_session->isSeekable(); + return m_session->isSeekable(); return false; } -/*! - \return a range of times in milliseconds that can be played back. - - Usually for local files this is a continuous interval equal to [0..duration()] - or an empty time range if seeking is not supported, but for network sources - it refers to the buffered parts of the media. -*/ - QMediaTimeRange S60MediaPlayerControl::availablePlaybackRanges() const { QMediaTimeRange ranges; - - if(m_session && m_session->isSeekable()) + if (m_session && m_session->isSeekable()) ranges.addInterval(0, m_session->duration()); - return ranges; } -/*! - \return the rate of playback. -*/ - qreal S60MediaPlayerControl::playbackRate() const { - return m_mediaSettings.playbackRate(); + return m_mediaSettings->playbackRate(); } -/*! - Sets the \a rate of playback. -*/ - void S60MediaPlayerControl::setPlaybackRate(qreal rate) { TRACE("S60MediaPlayerControl::setPlaybackRate" << qtThisPtr() << "rate" << rate); - - //getting the current playbackrate - qreal currentPBrate = m_mediaSettings.playbackRate(); - //checking if we need to change the Playback rate - if (!qFuzzyCompare(currentPBrate,rate)) + qreal currentRate = m_mediaSettings->playbackRate(); + if (!qFuzzyCompare(currentRate, rate)) { - if(m_session) + if (m_session) m_session->setPlaybackRate(rate); - - m_mediaSettings.setPlaybackRate(rate); + m_mediaSettings->setPlaybackRate(rate); } } -/*! - Sets the playback \a pos of the current media. This will initiate a seek and it may take - some time for playback to reach the position set. -*/ - void S60MediaPlayerControl::setPosition(qint64 pos) { TRACE("S60MediaPlayerControl::setPosition" << qtThisPtr() << "pos" << pos); - if (m_session) m_session->setPosition(pos); } -/*! - Starts playback of the current media. - - If successful the player control will immediately enter the \l {QMediaPlayer::PlayingState} - {playing} state. -*/ - void S60MediaPlayerControl::play() { TRACE("S60MediaPlayerControl::play" << qtThisPtr()); - if (m_session) m_session->play(); } -/*! - Pauses playback of the current media. - - If sucessful the player control will immediately enter the \l {QMediaPlayer::PausedState} - {paused} state. -*/ - void S60MediaPlayerControl::pause() { TRACE("S60MediaPlayerControl::pause" << qtThisPtr()); - if (m_session) m_session->pause(); } -/*! - Stops playback of the current media. - - If successful the player control will immediately enter the \l {QMediaPlayer::StoppedState} - {stopped} state. -*/ - void S60MediaPlayerControl::stop() { TRACE("S60MediaPlayerControl::stop" << qtThisPtr()); - if (m_session) m_session->stop(); } -/*! - Sets the audio \a volume of a player control. -*/ - void S60MediaPlayerControl::setVolume(int volume) { int boundVolume = qBound(0, volume, 100); - if (boundVolume == m_mediaSettings.volume()) + if (boundVolume == m_mediaSettings->volume()) return; - TRACE("S60MediaPlayerControl::setVolume" << qtThisPtr() << "volume" << volume << "boundVolume" << boundVolume); - - m_mediaSettings.setVolume(boundVolume); - + m_mediaSettings->setVolume(boundVolume); if (m_session) m_session->setVolume(boundVolume); } -/*! - Sets the \a muted state of a player control. -*/ - void S60MediaPlayerControl::setMuted(bool muted) { - if (m_mediaSettings.isMuted() == muted) + if (m_mediaSettings->isMuted() == muted) return; - TRACE("S60MediaPlayerControl::setMuted" << qtThisPtr() << "muted" << muted); - - m_mediaSettings.setMuted(muted); - + m_mediaSettings->setMuted(muted); if (m_session) m_session->setMuted(muted); } -/*! - * \return the current media source. -*/ - QMediaContent S60MediaPlayerControl::media() const { return m_media; } -/*! - \return the current media stream. This is only a valid if a stream was passed to setMedia(). - - \sa setMedia() -*/ - const QIODevice *S60MediaPlayerControl::mediaStream() const { return m_stream; } -/*! - Sets the current \a source media source. If a \a stream is supplied; data will be read from that - instead of attempting to resolve the media source. The media source may still be used to - supply media information such as mime type. - - Setting the media to a null QMediaContent will cause the control to discard all - information relating to the current media source and to cease all I/O operations related - to that media. -*/ - void S60MediaPlayerControl::setMedia(const QMediaContent &source, QIODevice *stream) { TRACE("S60MediaPlayerControl::setMedia" << qtThisPtr() << "source" << source.canonicalUrl().toString()); Q_UNUSED(stream) - if (m_session && (m_media == source)) { + if (m_session && (m_media == source)&& !source.canonicalUrl().isEmpty()) { if (m_session->isStreaming()) m_session->load(source); } else { + if (!source.canonicalUrl().isEmpty()) { delete m_session; m_session = 0; m_session = m_service->createPlayerSession(source); + } QMediaPlayer::MediaStatus mediaStatus = QMediaPlayer::NoMedia; if (m_session && !source.canonicalUrl().isEmpty()) { m_session->load(source); mediaStatus = m_session->mediaStatus(); } - m_mediaSettings.setMediaStatus(mediaStatus); + m_mediaSettings->setMediaStatus(mediaStatus); } emit stateChanged(QMediaPlayer::StoppedState); if (m_media != source) { @@ -358,42 +229,32 @@ void S60MediaPlayerControl::setMedia(const QMediaContent &source, QIODevice *str } } -/*! - * \return media player session. -*/ S60MediaPlayerSession* S60MediaPlayerControl::session() { return m_session; } -/*! - * Sets \a output as a VideoOutput. -*/ - void S60MediaPlayerControl::setVideoOutput(QObject *output) { TRACE("S60MediaPlayerControl::setVideoOutput" << qtThisPtr() << "output" << output); - m_mediaSettings.setVideoOutput(output); + m_mediaSettings->setVideoOutput(output); if (m_session) m_session->setVideoRenderer(output); } -/*! - * \return TRUE if Audio available or else FALSE. -*/ +QObject *S60MediaPlayerControl::videoOutput() const +{ + return m_mediaSettings->videoOutput(); +} bool S60MediaPlayerControl::isAudioAvailable() const { if (m_session) - return m_session->isAudioAvailable(); + return m_session->isAudioAvailable(); return false; } -/*! - * \return TRUE if Video available or else FALSE. -*/ - bool S60MediaPlayerControl::isVideoAvailable() const { if (m_session) @@ -401,36 +262,22 @@ bool S60MediaPlayerControl::isVideoAvailable() const return false; } -/*! - * \return media settings. - * - * Media Settings include volume, muted, playbackRate, mediaStatus, audioEndpoint. -*/ -const S60MediaSettings& S60MediaPlayerControl::mediaControlSettings() const +const S60MediaSettings &S60MediaPlayerControl::mediaControlSettings() const { - return m_mediaSettings; + return *m_mediaSettings; } -/*! - * Set the audio endpoint to \a name. -*/ - -void S60MediaPlayerControl::setAudioEndpoint(const QString& name) +void S60MediaPlayerControl::setAudioEndpoint(const QString &name) { TRACE("S60MediaPlayerControl::setAudioEndpoint" << qtThisPtr() << "name" << name); - - m_mediaSettings.setAudioEndpoint(name); + m_mediaSettings->setAudioEndpoint(name); } -/*! - * Sets media type \a type as Unknown, Video, Audio, Data. -*/ - -void S60MediaPlayerControl::setMediaType(S60MediaSettings::TMediaType type) +void S60MediaPlayerControl::setMediaType(S60MediaSettings::MediaType type) { TRACE("S60MediaPlayerControl::setMediaType" << qtThisPtr() << "type" << type); - - m_mediaSettings.setMediaType(type); + m_mediaSettings->setMediaType(type); } + |