diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-06-28 12:47:41 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-07-01 15:00:00 +0200 |
commit | 7ad70066ec001ad415b645d854b9c9f14a351299 (patch) | |
tree | ed242d297c8e2978cd48419d9d374002359a476d | |
parent | d931a5bab264c4b409b1f0d1a614fad59db98520 (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.txt | 2 | ||||
-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.cpp | 4 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediaplayer_p.h | 10 |
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 |