summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-05-12 17:21:52 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-15 15:12:18 +0200
commit235c863db9c495e820fe7ac53918e74f342b71e6 (patch)
tree61ba9331f069f4612dc9e75a8cf1d5c256e3e926
parentc376e13abdcce32e65512db1236cb4b41d4fa1ea (diff)
downloadqtmultimedia-235c863db9c495e820fe7ac53918e74f342b71e6.tar.gz
Android: fix QMediaPlayer::bufferStatus value.
It was returning the buffering progress for the whole media, which is not what is expected according to the documentation. It should return instead how much the playback buffer is filled. This information is not available on Android so we simply return 100% when the status is BufferedMedia or BufferingMedia, 0% otherwise. Change-Id: I9fb55a9317948ba9375291a57bbf100f186382a2 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp18
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
index f5614a57a..23ffb320c 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -54,6 +54,7 @@ QAndroidMediaPlayerControl::QAndroidMediaPlayerControl(QObject *parent)
mVideoOutput(0),
mSeekable(true),
mBufferPercent(-1),
+ mBufferFilled(false),
mAudioAvailable(false),
mVideoAvailable(false),
mBuffering(false),
@@ -221,7 +222,7 @@ void QAndroidMediaPlayerControl::setMuted(bool muted)
int QAndroidMediaPlayerControl::bufferStatus() const
{
- return mBufferPercent;
+ return mBufferFilled ? 100 : 0;
}
bool QAndroidMediaPlayerControl::isAudioAvailable() const
@@ -487,7 +488,6 @@ void QAndroidMediaPlayerControl::onBufferingChanged(qint32 percent)
{
mBuffering = percent != 100;
mBufferPercent = percent;
- Q_EMIT bufferStatusChanged(mBufferPercent);
updateAvailablePlaybackRanges();
@@ -621,6 +621,8 @@ void QAndroidMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status
mCurrentMediaStatus = status;
Q_EMIT mediaStatusChanged(mCurrentMediaStatus);
+
+ updateBufferStatus();
}
void QAndroidMediaPlayerControl::setSeekable(bool seekable)
@@ -658,7 +660,6 @@ void QAndroidMediaPlayerControl::resetBufferingProgress()
mBuffering = false;
mBufferPercent = 0;
mAvailablePlaybackRange = QMediaTimeRange();
- Q_EMIT bufferStatusChanged(mBufferPercent);
}
void QAndroidMediaPlayerControl::flushPendingStates()
@@ -694,4 +695,15 @@ void QAndroidMediaPlayerControl::flushPendingStates()
}
}
+void QAndroidMediaPlayerControl::updateBufferStatus()
+{
+ bool bufferFilled = (mCurrentMediaStatus == QMediaPlayer::BufferedMedia
+ || mCurrentMediaStatus == QMediaPlayer::BufferingMedia);
+
+ if (mBufferFilled != bufferFilled) {
+ mBufferFilled = bufferFilled;
+ Q_EMIT bufferStatusChanged(bufferStatus());
+ }
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
index 1be3b4428..27e6afc12 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
@@ -106,6 +106,7 @@ private:
QAndroidVideoOutput *mVideoOutput;
bool mSeekable;
int mBufferPercent;
+ bool mBufferFilled;
bool mAudioAvailable;
bool mVideoAvailable;
QSize mVideoSize;
@@ -127,6 +128,7 @@ private:
void updateAvailablePlaybackRanges();
void resetBufferingProgress();
void flushPendingStates();
+ void updateBufferStatus();
};
QT_END_NAMESPACE