summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-02-15 03:03:59 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-02-15 03:03:59 +0100
commitb2606eed8fa46c3f81bb9b03ca10409a00ed134f (patch)
treec8697ca341f567ee677671f0e68fc7efc6512079
parentd509b9d8375c1ca7dba6d236a06b6c49011a981c (diff)
parentcbdf4561f5cdb6ee95583f14a3769c3124228586 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp9
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm5
2 files changed, 11 insertions, 3 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 153794801..2f1aa45c3 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -367,6 +367,13 @@ void QMediaPlayerPrivate::setMedia(const QMediaContent &media, QIODevice *stream
control->setMedia(media, file.data());
} else {
#if QT_CONFIG(temporaryfile)
+#if defined(Q_OS_ANDROID)
+ QString tempFileName = QDir::tempPath() + media.request().url().path();
+ QDir().mkpath(QFileInfo(tempFileName).path());
+ QTemporaryFile *tempFile = QTemporaryFile::createNativeFile(*file);
+ if (!tempFile->rename(tempFileName))
+ qWarning() << "Could not rename temporary file to:" << tempFileName;
+#else
QTemporaryFile *tempFile = new QTemporaryFile;
// Preserve original file extension, some backends might not load the file if it doesn't
@@ -385,7 +392,7 @@ void QMediaPlayerPrivate::setMedia(const QMediaContent &media, QIODevice *stream
tempFile->write(buffer, len);
}
tempFile->close();
-
+#endif
file.reset(tempFile);
control->setMedia(QMediaContent(QUrl::fromLocalFile(file->fileName())), nullptr);
#else
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 3e3736183..1f13fc9bb 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -686,7 +686,7 @@ void AVFMediaPlayerSession::setPosition(qint64 pos)
CMTime newTime = [playerItem currentTime];
newTime.value = (pos / 1000.0f) * newTime.timescale;
- [playerItem seekToTime:newTime];
+ [playerItem seekToTime:newTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:nil];
Q_EMIT positionChanged(pos);
@@ -928,7 +928,8 @@ void AVFMediaPlayerSession::processBufferStateChange(int bufferStatus)
} else if (status == QMediaPlayer::StalledMedia) {
status = QMediaPlayer::BufferedMedia;
// Resume playback.
- [[static_cast<AVFMediaPlayerSessionObserver*>(m_observer) player] setRate:m_rate];
+ if (m_state == QMediaPlayer::PlayingState)
+ [[static_cast<AVFMediaPlayerSessionObserver*>(m_observer) player] setRate:m_rate];
}
if (m_mediaStatus != status)