diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2014-05-12 17:21:52 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-15 15:12:18 +0200 |
commit | 235c863db9c495e820fe7ac53918e74f342b71e6 (patch) | |
tree | 61ba9331f069f4612dc9e75a8cf1d5c256e3e926 | |
parent | c376e13abdcce32e65512db1236cb4b41d4fa1ea (diff) | |
download | qtmultimedia-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.cpp | 18 | ||||
-rw-r--r-- | src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h | 2 |
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 |