summaryrefslogtreecommitdiffstats
path: root/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
diff options
context:
space:
mode:
authorBernd Weimer <bweimer@blackberry.com>2014-03-18 11:29:49 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-19 15:21:03 +0100
commitd8764171d6da1b87c32835cb68adf783d258efa6 (patch)
treee5887dc15025a079305b0e34ec18904c58cda6cf /src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
parent19ce431f9feec52327d902ab7005db5aff655535 (diff)
QNX: Evaluate mm-renderer buffer status
In the playing (or paused) state the media status should reflect the buffer state, it should not stay in the loaded media state. Mm-renderer differentiates between buffer "status" and "level". Unfortunately, QMediaPlayer's buffer status maps to mm-renderer's buffer level. Change-Id: I22ea8dc83cee975fc4aa1a6de4f172def042a9a8 QT-BUG: 37166 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Diffstat (limited to 'src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp')
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
index ba3cbfdff..004eca36d 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
+++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
@@ -73,7 +73,7 @@ MmRendererMediaPlayerControl::MmRendererMediaPlayerControl(QObject *parent)
m_playAfterMediaLoaded(false),
m_inputAttached(false),
m_stopEventsToIgnore(0),
- m_bufferStatus(0)
+ m_bufferLevel(0)
{
m_loadingTimer.setSingleShot(true);
m_loadingTimer.setInterval(0);
@@ -234,8 +234,11 @@ void MmRendererMediaPlayerControl::attach()
m_inputAttached = true;
setMediaStatus(QMediaPlayer::LoadedMedia);
- m_bufferStatus = 0;
- emit bufferStatusChanged(m_bufferStatus);
+
+ // mm-renderer has buffer properties "status" and "level"
+ // QMediaPlayer's buffer status maps to mm-renderer's buffer level
+ m_bufferLevel = 0;
+ emit bufferStatusChanged(m_bufferLevel);
}
void MmRendererMediaPlayerControl::detach()
@@ -406,7 +409,9 @@ void MmRendererMediaPlayerControl::setMuted(bool muted)
int MmRendererMediaPlayerControl::bufferStatus() const
{
- return m_bufferStatus;
+ // mm-renderer has buffer properties "status" and "level"
+ // QMediaPlayer's buffer status maps to mm-renderer's buffer level
+ return m_bufferLevel;
}
bool MmRendererMediaPlayerControl::isAudioAvailable() const
@@ -585,13 +590,23 @@ void MmRendererMediaPlayerControl::setMmPosition(qint64 newPosition)
void MmRendererMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus)
{
- const int slashPos = bufferStatus.indexOf('/');
+ if (bufferStatus == QLatin1String("buffering"))
+ setMediaStatus(QMediaPlayer::BufferingMedia);
+ else if (bufferStatus == QLatin1String("playing"))
+ setMediaStatus(QMediaPlayer::BufferedMedia);
+ // ignore "idle" buffer status
+}
+
+void MmRendererMediaPlayerControl::setMmBufferLevel(const QString &bufferLevel)
+{
+ // buffer level has format level/capacity, e.g. "91319/124402"
+ const int slashPos = bufferLevel.indexOf('/');
if (slashPos != -1) {
- const int fill = bufferStatus.leftRef(slashPos).toInt();
- const int capacity = bufferStatus.midRef(slashPos + 1).toInt();
+ const int fill = bufferLevel.leftRef(slashPos).toInt();
+ const int capacity = bufferLevel.midRef(slashPos + 1).toInt();
if (capacity != 0) {
- m_bufferStatus = fill / static_cast<float>(capacity) * 100.0f;
- emit bufferStatusChanged(m_bufferStatus);
+ m_bufferLevel = fill / static_cast<float>(capacity) * 100.0f;
+ emit bufferStatusChanged(m_bufferLevel);
}
}
}