summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-06-28 12:47:41 +0200
committerLars Knoll <lars.knoll@qt.io>2021-07-01 15:00:00 +0200
commit7ad70066ec001ad415b645d854b9c9f14a351299 (patch)
treeed242d297c8e2978cd48419d9d374002359a476d
parentd931a5bab264c4b409b1f0d1a614fad59db98520 (diff)
Code cleanup
* Rename QAndroidMediaPlayerControl to QAndroidMediaPlayer * Initialize class members in the header * Use the infrastructure of the base class where possible Change-Id: If5f722dbe02dbbaff5e91b4423db848b51342fb0 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
-rw-r--r--src/multimedia/CMakeLists.txt2
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp (renamed from src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp)162
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayer_p.h (renamed from src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h)46
-rw-r--r--src/multimedia/platform/android/qandroidintegration.cpp4
-rw-r--r--src/multimedia/platform/qplatformmediaplayer_p.h10
5 files changed, 88 insertions, 136 deletions
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
index 9a1d43fc0..56cc2ff88 100644
--- a/src/multimedia/CMakeLists.txt
+++ b/src/multimedia/CMakeLists.txt
@@ -311,7 +311,7 @@ qt_internal_extend_target(Multimedia CONDITION ANDROID
platform/android/mediacapture/qandroidcaptureservice.cpp platform/android/mediacapture/qandroidcaptureservice_p.h
platform/android/mediacapture/qandroidcapturesession.cpp platform/android/mediacapture/qandroidcapturesession_p.h
platform/android/mediacapture/qandroidmediaencoder.cpp platform/android/mediacapture/qandroidmediaencoder_p.h
- platform/android/mediaplayer/qandroidmediaplayercontrol.cpp platform/android/mediaplayer/qandroidmediaplayercontrol_p.h
+ platform/android/mediaplayer/qandroidmediaplayer.cpp platform/android/mediaplayer/qandroidmediaplayer_p.h
platform/android/mediaplayer/qandroidmetadata.cpp platform/android/mediaplayer/qandroidmetadata_p.h
platform/android/qandroidmediadevices.cpp platform/android/qandroidmediadevices_p.h
platform/android/qandroidformatsinfo.cpp platform/android/qandroidformatsinfo_p.h
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp
index a6fbeb0d0..2a9070277 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp
@@ -37,7 +37,7 @@
**
****************************************************************************/
-#include "qandroidmediaplayercontrol_p.h"
+#include "qandroidmediaplayer_p.h"
#include "androidmediaplayer_p.h"
#include "qandroidvideooutput_p.h"
#include "qandroidmetadata_p.h"
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
class StateChangeNotifier
{
public:
- StateChangeNotifier(QAndroidMediaPlayerControl *mp)
+ StateChangeNotifier(QAndroidMediaPlayer *mp)
: mControl(mp)
, mPreviousState(mp->state())
, mPreviousMediaStatus(mp->mediaStatus())
@@ -70,34 +70,16 @@ public:
}
private:
- QAndroidMediaPlayerControl *mControl;
+ QAndroidMediaPlayer *mControl;
QMediaPlayer::PlaybackState mPreviousState;
QMediaPlayer::MediaStatus mPreviousMediaStatus;
};
-QAndroidMediaPlayerControl::QAndroidMediaPlayerControl(QMediaPlayer *parent)
+QAndroidMediaPlayer::QAndroidMediaPlayer(QMediaPlayer *parent)
: QPlatformMediaPlayer(parent),
mMediaPlayer(new AndroidMediaPlayer),
- mCurrentState(QMediaPlayer::StoppedState),
- mMediaStream(0),
- mVideoOutput(0),
- mSeekable(true),
- mBufferPercent(-1),
- mBufferFilled(false),
- mAudioAvailable(false),
- mVideoAvailable(false),
- mBuffering(false),
- mState(AndroidMediaPlayer::Uninitialized),
- mPendingState(-1),
- mPendingPosition(-1),
- mPendingSetMedia(false),
- mPendingVolume(-1),
- mPendingMute(-1),
- mReloadingMedia(false),
- mActiveStateChangeNotifiers(0),
- mPendingPlaybackRate(1.0),
- mHasPendingPlaybackRate(false)
+ mState(AndroidMediaPlayer::Uninitialized)
{
connect(mMediaPlayer,SIGNAL(bufferingChanged(qint32)),
this,SLOT(onBufferingChanged(qint32)));
@@ -115,18 +97,13 @@ QAndroidMediaPlayerControl::QAndroidMediaPlayerControl(QMediaPlayer *parent)
this,SIGNAL(durationChanged(qint64)));
}
-QAndroidMediaPlayerControl::~QAndroidMediaPlayerControl()
+QAndroidMediaPlayer::~QAndroidMediaPlayer()
{
mMediaPlayer->release();
delete mMediaPlayer;
}
-QMediaPlayer::PlaybackState QAndroidMediaPlayerControl::state() const
-{
- return mCurrentState;
-}
-
-qint64 QAndroidMediaPlayerControl::duration() const
+qint64 QAndroidMediaPlayer::duration() const
{
if ((mState & (AndroidMediaPlayer::Prepared
| AndroidMediaPlayer::Started
@@ -139,7 +116,7 @@ qint64 QAndroidMediaPlayerControl::duration() const
return mMediaPlayer->getDuration();
}
-qint64 QAndroidMediaPlayerControl::position() const
+qint64 QAndroidMediaPlayer::position() const
{
if (mediaStatus() == QMediaPlayer::EndOfMedia)
return duration();
@@ -154,9 +131,9 @@ qint64 QAndroidMediaPlayerControl::position() const
return (mPendingPosition == -1) ? 0 : mPendingPosition;
}
-void QAndroidMediaPlayerControl::setPosition(qint64 position)
+void QAndroidMediaPlayer::setPosition(qint64 position)
{
- if (!mSeekable)
+ if (!isSeekable())
return;
const int seekPosition = (position > INT_MAX) ? INT_MAX : position;
@@ -185,7 +162,7 @@ void QAndroidMediaPlayerControl::setPosition(qint64 position)
Q_EMIT positionChanged(seekPosition);
}
-void QAndroidMediaPlayerControl::setVolume(float volume)
+void QAndroidMediaPlayer::setVolume(float volume)
{
if ((mState & (AndroidMediaPlayer::Idle
| AndroidMediaPlayer::Initialized
@@ -202,7 +179,7 @@ void QAndroidMediaPlayerControl::setVolume(float volume)
mPendingVolume = -1;
}
-void QAndroidMediaPlayerControl::setMuted(bool muted)
+void QAndroidMediaPlayer::setMuted(bool muted)
{
if ((mState & (AndroidMediaPlayer::Idle
| AndroidMediaPlayer::Initialized
@@ -219,43 +196,38 @@ void QAndroidMediaPlayerControl::setMuted(bool muted)
mPendingMute = -1;
}
-QMediaMetaData QAndroidMediaPlayerControl::metaData() const
+QMediaMetaData QAndroidMediaPlayer::metaData() const
{
return QAndroidMetaData::extractMetadata(mMediaContent);
}
-float QAndroidMediaPlayerControl::bufferProgress() const
+float QAndroidMediaPlayer::bufferProgress() const
{
return mBufferFilled ? 1. : 0;
}
-bool QAndroidMediaPlayerControl::isAudioAvailable() const
+bool QAndroidMediaPlayer::isAudioAvailable() const
{
return mAudioAvailable;
}
-bool QAndroidMediaPlayerControl::isVideoAvailable() const
+bool QAndroidMediaPlayer::isVideoAvailable() const
{
return mVideoAvailable;
}
-bool QAndroidMediaPlayerControl::isSeekable() const
-{
- return mSeekable;
-}
-
-QMediaTimeRange QAndroidMediaPlayerControl::availablePlaybackRanges() const
+QMediaTimeRange QAndroidMediaPlayer::availablePlaybackRanges() const
{
return mAvailablePlaybackRange;
}
-void QAndroidMediaPlayerControl::updateAvailablePlaybackRanges()
+void QAndroidMediaPlayer::updateAvailablePlaybackRanges()
{
if (mBuffering) {
const qint64 pos = position();
const qint64 end = (duration() / 100) * mBufferPercent;
mAvailablePlaybackRange.addInterval(pos, end);
- } else if (mSeekable) {
+ } else if (isSeekable()) {
mAvailablePlaybackRange = QMediaTimeRange(0, duration());
} else {
mAvailablePlaybackRange = QMediaTimeRange();
@@ -264,7 +236,7 @@ void QAndroidMediaPlayerControl::updateAvailablePlaybackRanges()
// #### Q_EMIT availablePlaybackRangesChanged(mAvailablePlaybackRange);
}
-qreal QAndroidMediaPlayerControl::playbackRate() const
+qreal QAndroidMediaPlayer::playbackRate() const
{
if (mHasPendingPlaybackRate ||
(mState & (AndroidMediaPlayer::Initialized
@@ -279,7 +251,7 @@ qreal QAndroidMediaPlayerControl::playbackRate() const
return mMediaPlayer->playbackRate();
}
-void QAndroidMediaPlayerControl::setPlaybackRate(qreal rate)
+void QAndroidMediaPlayer::setPlaybackRate(qreal rate)
{
if ((mState & (AndroidMediaPlayer::Initialized
| AndroidMediaPlayer::Prepared
@@ -307,17 +279,17 @@ void QAndroidMediaPlayerControl::setPlaybackRate(qreal rate)
}
}
-QUrl QAndroidMediaPlayerControl::media() const
+QUrl QAndroidMediaPlayer::media() const
{
return mMediaContent;
}
-const QIODevice *QAndroidMediaPlayerControl::mediaStream() const
+const QIODevice *QAndroidMediaPlayer::mediaStream() const
{
return mMediaStream;
}
-void QAndroidMediaPlayerControl::setMedia(const QUrl &mediaContent,
+void QAndroidMediaPlayer::setMedia(const QUrl &mediaContent,
QIODevice *stream)
{
StateChangeNotifier notifier(this);
@@ -357,7 +329,7 @@ void QAndroidMediaPlayerControl::setMedia(const QUrl &mediaContent,
mReloadingMedia = false;
}
-void QAndroidMediaPlayerControl::setVideoSink(QVideoSink *sink)
+void QAndroidMediaPlayer::setVideoSink(QVideoSink *sink)
{
if (m_videoSink == sink)
return;
@@ -382,7 +354,7 @@ void QAndroidMediaPlayerControl::setVideoSink(QVideoSink *sink)
mMediaPlayer->setDisplay(mVideoOutput->surfaceTexture());
}
-void QAndroidMediaPlayerControl::setAudioOutput(QPlatformAudioOutput *output)
+void QAndroidMediaPlayer::setAudioOutput(QPlatformAudioOutput *output)
{
if (m_audioOutput == output)
return;
@@ -391,12 +363,12 @@ void QAndroidMediaPlayerControl::setAudioOutput(QPlatformAudioOutput *output)
m_audioOutput = static_cast<QAndroidAudioOutput *>(output);
if (m_audioOutput) {
// #### Implement device changes: connect(m_audioOutput->q, &QAudioOutput::deviceChanged, this, XXXX);
- connect(m_audioOutput->q, &QAudioOutput::volumeChanged, this, &QAndroidMediaPlayerControl::setVolume);
- connect(m_audioOutput->q, &QAudioOutput::mutedChanged, this, &QAndroidMediaPlayerControl::setMuted);
+ connect(m_audioOutput->q, &QAudioOutput::volumeChanged, this, &QAndroidMediaPlayer::setVolume);
+ connect(m_audioOutput->q, &QAudioOutput::mutedChanged, this, &QAndroidMediaPlayer::setMuted);
}
}
-void QAndroidMediaPlayerControl::play()
+void QAndroidMediaPlayer::play()
{
StateChangeNotifier notifier(this);
@@ -406,7 +378,7 @@ void QAndroidMediaPlayerControl::play()
}
if (!mMediaContent.isEmpty())
- setState(QMediaPlayer::PlayingState);
+ stateChanged(QMediaPlayer::PlayingState);
if ((mState & (AndroidMediaPlayer::Prepared
| AndroidMediaPlayer::Started
@@ -419,11 +391,11 @@ void QAndroidMediaPlayerControl::play()
mMediaPlayer->play();
}
-void QAndroidMediaPlayerControl::pause()
+void QAndroidMediaPlayer::pause()
{
StateChangeNotifier notifier(this);
- setState(QMediaPlayer::PausedState);
+ stateChanged(QMediaPlayer::PausedState);
if ((mState & (AndroidMediaPlayer::Started
| AndroidMediaPlayer::Paused
@@ -435,11 +407,11 @@ void QAndroidMediaPlayerControl::pause()
mMediaPlayer->pause();
}
-void QAndroidMediaPlayerControl::stop()
+void QAndroidMediaPlayer::stop()
{
StateChangeNotifier notifier(this);
- setState(QMediaPlayer::StoppedState);
+ stateChanged(QMediaPlayer::StoppedState);
if ((mState & (AndroidMediaPlayer::Prepared
| AndroidMediaPlayer::Started
@@ -454,7 +426,7 @@ void QAndroidMediaPlayerControl::stop()
mMediaPlayer->stop();
}
-void QAndroidMediaPlayerControl::onInfo(qint32 what, qint32 extra)
+void QAndroidMediaPlayer::onInfo(qint32 what, qint32 extra)
{
StateChangeNotifier notifier(this);
@@ -468,18 +440,18 @@ void QAndroidMediaPlayerControl::onInfo(qint32 what, qint32 extra)
case AndroidMediaPlayer::MEDIA_INFO_VIDEO_RENDERING_START:
break;
case AndroidMediaPlayer::MEDIA_INFO_BUFFERING_START:
- mPendingState = mCurrentState;
- setState(QMediaPlayer::PausedState);
+ mPendingState = state();
+ stateChanged(QMediaPlayer::PausedState);
setMediaStatus(QMediaPlayer::StalledMedia);
break;
case AndroidMediaPlayer::MEDIA_INFO_BUFFERING_END:
- if (mCurrentState != QMediaPlayer::StoppedState)
+ if (state() != QMediaPlayer::StoppedState)
flushPendingStates();
break;
case AndroidMediaPlayer::MEDIA_INFO_BAD_INTERLEAVING:
break;
case AndroidMediaPlayer::MEDIA_INFO_NOT_SEEKABLE:
- setSeekable(false);
+ seekableChanged(false);
break;
case AndroidMediaPlayer::MEDIA_INFO_METADATA_UPDATE:
Q_EMIT metaDataChanged();
@@ -487,7 +459,7 @@ void QAndroidMediaPlayerControl::onInfo(qint32 what, qint32 extra)
}
}
-void QAndroidMediaPlayerControl::onError(qint32 what, qint32 extra)
+void QAndroidMediaPlayer::onError(qint32 what, qint32 extra)
{
StateChangeNotifier notifier(this);
@@ -541,7 +513,7 @@ void QAndroidMediaPlayerControl::onError(qint32 what, qint32 extra)
Q_EMIT QPlatformMediaPlayer::error(error, errorString);
}
-void QAndroidMediaPlayerControl::onBufferingChanged(qint32 percent)
+void QAndroidMediaPlayer::onBufferingChanged(qint32 percent)
{
StateChangeNotifier notifier(this);
@@ -550,11 +522,11 @@ void QAndroidMediaPlayerControl::onBufferingChanged(qint32 percent)
updateAvailablePlaybackRanges();
- if (mCurrentState != QMediaPlayer::StoppedState)
+ if (state() != QMediaPlayer::StoppedState)
setMediaStatus(mBuffering ? QMediaPlayer::BufferingMedia : QMediaPlayer::BufferedMedia);
}
-void QAndroidMediaPlayerControl::onVideoSizeChanged(qint32 width, qint32 height)
+void QAndroidMediaPlayer::onVideoSizeChanged(qint32 width, qint32 height)
{
QSize newSize(width, height);
@@ -568,7 +540,7 @@ void QAndroidMediaPlayerControl::onVideoSizeChanged(qint32 width, qint32 height)
mVideoOutput->setVideoSize(mVideoSize);
}
-void QAndroidMediaPlayerControl::onStateChanged(qint32 state)
+void QAndroidMediaPlayer::onStateChanged(qint32 state)
{
// If reloading, don't report state changes unless the new state is Prepared or Error.
if ((mState & AndroidMediaPlayer::Stopped)
@@ -601,7 +573,7 @@ void QAndroidMediaPlayerControl::onStateChanged(qint32 state)
flushPendingStates();
break;
case AndroidMediaPlayer::Started:
- setState(QMediaPlayer::PlayingState);
+ stateChanged(QMediaPlayer::PlayingState);
if (mBuffering) {
setMediaStatus(mBufferPercent == 100 ? QMediaPlayer::BufferedMedia
: QMediaPlayer::BufferingMedia);
@@ -611,21 +583,21 @@ void QAndroidMediaPlayerControl::onStateChanged(qint32 state)
Q_EMIT positionChanged(position());
break;
case AndroidMediaPlayer::Paused:
- setState(QMediaPlayer::PausedState);
+ stateChanged(QMediaPlayer::PausedState);
break;
case AndroidMediaPlayer::Error:
- setState(QMediaPlayer::StoppedState);
+ stateChanged(QMediaPlayer::StoppedState);
setMediaStatus(QMediaPlayer::InvalidMedia);
mMediaPlayer->release();
Q_EMIT positionChanged(0);
break;
case AndroidMediaPlayer::Stopped:
- setState(QMediaPlayer::StoppedState);
+ stateChanged(QMediaPlayer::StoppedState);
setMediaStatus(QMediaPlayer::LoadedMedia);
Q_EMIT positionChanged(0);
break;
case AndroidMediaPlayer::PlaybackCompleted:
- setState(QMediaPlayer::StoppedState);
+ stateChanged(QMediaPlayer::StoppedState);
setMediaStatus(QMediaPlayer::EndOfMedia);
break;
case AndroidMediaPlayer::Uninitialized:
@@ -641,7 +613,7 @@ void QAndroidMediaPlayerControl::onStateChanged(qint32 state)
setAudioAvailable(false);
setVideoAvailable(false);
- setSeekable(true);
+ seekableChanged(true);
}
break;
default:
@@ -657,7 +629,7 @@ void QAndroidMediaPlayerControl::onStateChanged(qint32 state)
}
}
-void QAndroidMediaPlayerControl::onVideoOutputReady(bool ready)
+void QAndroidMediaPlayer::onVideoOutputReady(bool ready)
{
if ((mMediaPlayer->display() == 0) && mVideoOutput && ready)
mMediaPlayer->setDisplay(mVideoOutput->surfaceTexture());
@@ -665,18 +637,7 @@ void QAndroidMediaPlayerControl::onVideoOutputReady(bool ready)
flushPendingStates();
}
-void QAndroidMediaPlayerControl::setState(QMediaPlayer::PlaybackState state)
-{
- if (mCurrentState == state)
- return;
-
- if (mCurrentState == QMediaPlayer::StoppedState && state == QMediaPlayer::PausedState)
- return;
-
- mCurrentState = state;
-}
-
-void QAndroidMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status)
+void QAndroidMediaPlayer::setMediaStatus(QMediaPlayer::MediaStatus status)
{
mediaStatusChanged(status);
@@ -689,16 +650,7 @@ void QAndroidMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status
updateBufferStatus();
}
-void QAndroidMediaPlayerControl::setSeekable(bool seekable)
-{
- if (mSeekable == seekable)
- return;
-
- mSeekable = seekable;
- Q_EMIT seekableChanged(mSeekable);
-}
-
-void QAndroidMediaPlayerControl::setAudioAvailable(bool available)
+void QAndroidMediaPlayer::setAudioAvailable(bool available)
{
if (mAudioAvailable == available)
return;
@@ -707,7 +659,7 @@ void QAndroidMediaPlayerControl::setAudioAvailable(bool available)
Q_EMIT audioAvailableChanged(mAudioAvailable);
}
-void QAndroidMediaPlayerControl::setVideoAvailable(bool available)
+void QAndroidMediaPlayer::setVideoAvailable(bool available)
{
if (mVideoAvailable == available)
return;
@@ -719,14 +671,14 @@ void QAndroidMediaPlayerControl::setVideoAvailable(bool available)
Q_EMIT videoAvailableChanged(mVideoAvailable);
}
-void QAndroidMediaPlayerControl::resetBufferingProgress()
+void QAndroidMediaPlayer::resetBufferingProgress()
{
mBuffering = false;
mBufferPercent = 0;
mAvailablePlaybackRange = QMediaTimeRange();
}
-void QAndroidMediaPlayerControl::flushPendingStates()
+void QAndroidMediaPlayer::flushPendingStates()
{
if (mPendingSetMedia) {
setMedia(mMediaContent, 0);
@@ -761,7 +713,7 @@ void QAndroidMediaPlayerControl::flushPendingStates()
}
}
-void QAndroidMediaPlayerControl::updateBufferStatus()
+void QAndroidMediaPlayer::updateBufferStatus()
{
auto status = mediaStatus();
bool bufferFilled = (status == QMediaPlayer::BufferedMedia || status == QMediaPlayer::BufferingMedia);
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer_p.h
index 76a74517d..aeb8f1fa4 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer_p.h
@@ -63,20 +63,18 @@ class QAndroidTextureVideoOutput;
class QAndroidMediaPlayerVideoRendererControl;
class QAndroidAudioOutput;
-class QAndroidMediaPlayerControl : public QObject, public QPlatformMediaPlayer
+class QAndroidMediaPlayer : public QObject, public QPlatformMediaPlayer
{
Q_OBJECT
public:
- explicit QAndroidMediaPlayerControl(QMediaPlayer *parent = 0);
- ~QAndroidMediaPlayerControl() override;
+ explicit QAndroidMediaPlayer(QMediaPlayer *parent = 0);
+ ~QAndroidMediaPlayer() override;
- QMediaPlayer::PlaybackState state() const override;
qint64 duration() const override;
qint64 position() const override;
float bufferProgress() const override;
bool isAudioAvailable() const override;
bool isVideoAvailable() const override;
- bool isSeekable() const override;
QMediaTimeRange availablePlaybackRanges() const override;
qreal playbackRate() const override;
void setPlaybackRate(qreal rate) override;
@@ -106,35 +104,31 @@ private Q_SLOTS:
void onStateChanged(qint32 state);
private:
- AndroidMediaPlayer *mMediaPlayer;
+ AndroidMediaPlayer *mMediaPlayer = nullptr;
QAndroidAudioOutput *m_audioOutput = nullptr;
- QMediaPlayer::PlaybackState mCurrentState;
QUrl mMediaContent;
- QIODevice *mMediaStream;
+ QIODevice *mMediaStream = nullptr;
QAndroidTextureVideoOutput *mVideoOutput = nullptr;
QVideoSink *m_videoSink = nullptr;
- bool mSeekable;
- int mBufferPercent;
- bool mBufferFilled;
- bool mAudioAvailable;
- bool mVideoAvailable;
+ int mBufferPercent = -1;
+ bool mBufferFilled = false;
+ bool mAudioAvailable = false;
+ bool mVideoAvailable = false;
QSize mVideoSize;
- bool mBuffering;
+ bool mBuffering = false;
QMediaTimeRange mAvailablePlaybackRange;
int mState;
- int mPendingState;
- qint64 mPendingPosition;
- bool mPendingSetMedia;
- float mPendingVolume;
- int mPendingMute;
- bool mReloadingMedia;
- int mActiveStateChangeNotifiers;
- qreal mPendingPlaybackRate;
- bool mHasPendingPlaybackRate; // we need this because the rate can theoretically be negative
-
- void setState(QMediaPlayer::PlaybackState state);
+ int mPendingState = -1;
+ qint64 mPendingPosition = -1;
+ bool mPendingSetMedia = false;
+ float mPendingVolume = -1;
+ int mPendingMute = -1;
+ bool mReloadingMedia = false;
+ int mActiveStateChangeNotifiers = 0;
+ qreal mPendingPlaybackRate = 1.;
+ bool mHasPendingPlaybackRate = false; // we need this because the rate can theoretically be negative
+
void setMediaStatus(QMediaPlayer::MediaStatus status);
- void setSeekable(bool seekable);
void setAudioAvailable(bool available);
void setVideoAvailable(bool available);
void updateAvailablePlaybackRanges();
diff --git a/src/multimedia/platform/android/qandroidintegration.cpp b/src/multimedia/platform/android/qandroidintegration.cpp
index 95b8bd39e..fba7e1719 100644
--- a/src/multimedia/platform/android/qandroidintegration.cpp
+++ b/src/multimedia/platform/android/qandroidintegration.cpp
@@ -51,7 +51,7 @@
#include "private/qandroidmediaencoder_p.h"
#include "private/androidmediarecorder_p.h"
#include "private/qandroidformatsinfo_p.h"
-#include "private/qandroidmediaplayercontrol_p.h"
+#include "private/qandroidmediaplayer_p.h"
#include "private/qandroidaudiooutput_p.h"
QT_BEGIN_NAMESPACE
@@ -91,7 +91,7 @@ QPlatformMediaCaptureSession *QAndroidIntegration::createCaptureSession()
QPlatformMediaPlayer *QAndroidIntegration::createPlayer(QMediaPlayer *player)
{
- return new QAndroidMediaPlayerControl(player);
+ return new QAndroidMediaPlayer(player);
}
QPlatformCamera *QAndroidIntegration::createCamera(QCamera *camera)
diff --git a/src/multimedia/platform/qplatformmediaplayer_p.h b/src/multimedia/platform/qplatformmediaplayer_p.h
index 542c87b39..dc2be4db3 100644
--- a/src/multimedia/platform/qplatformmediaplayer_p.h
+++ b/src/multimedia/platform/qplatformmediaplayer_p.h
@@ -80,7 +80,7 @@ public:
virtual bool isAudioAvailable() const = 0;
virtual bool isVideoAvailable() const = 0;
- virtual bool isSeekable() const = 0;
+ virtual bool isSeekable() const { return m_seekable; }
virtual QMediaTimeRange availablePlaybackRanges() const = 0;
@@ -115,7 +115,12 @@ public:
void positionChanged(qint64 position) { player->positionChanged(position); }
void audioAvailableChanged(bool audioAvailable) { player->hasAudioChanged(audioAvailable); }
void videoAvailableChanged(bool videoAvailable) { player->hasVideoChanged(videoAvailable); }
- void seekableChanged(bool seekable) { player->seekableChanged(seekable); }
+ void seekableChanged(bool seekable) {
+ if (m_seekable == seekable)
+ return;
+ m_seekable = seekable;
+ player->seekableChanged(seekable);
+ }
void playbackRateChanged(qreal rate) { player->playbackRateChanged(rate); }
void bufferProgressChanged(float progress) { player->bufferProgressChanged(progress); }
void metaDataChanged() { player->metaDataChanged(); }
@@ -134,6 +139,7 @@ private:
QMediaPlayer *player = nullptr;
QMediaPlayer::MediaStatus m_status = QMediaPlayer::NoMedia;
QMediaPlayer::PlaybackState m_state = QMediaPlayer::StoppedState;
+ bool m_seekable = true;
};
QT_END_NAMESPACE