diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/multimedia/configure.json | 12 | ||||
-rw-r--r-- | src/multimedia/playback/qmediaplayer.cpp | 4 | ||||
-rw-r--r-- | src/multimedia/recording/qmediarecorder.cpp | 4 | ||||
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediarecordercontrol.mm | 10 | ||||
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm | 8 |
6 files changed, 24 insertions, 16 deletions
diff --git a/.qmake.conf b/.qmake.conf index b1c22d3b7..0dcf6d9b0 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,3 @@ load(qt_build_config) -MODULE_VERSION = 5.9.0 +MODULE_VERSION = 5.9.1 diff --git a/src/multimedia/configure.json b/src/multimedia/configure.json index 4f0532ad4..e250f2b9a 100644 --- a/src/multimedia/configure.json +++ b/src/multimedia/configure.json @@ -137,16 +137,10 @@ "type": "compile", "test": "evr" }, - "gstreamer_encodingprofiles_1_0": { - "label": "GStreamer encoding-profile.h", - "type": "compile", - "use": "gstreamer_1_0", - "test": "gstreamer_encodingprofiles" - }, - "gstreamer_encodingprofiles_0_10": { + "gstreamer_encodingprofiles": { "label": "GStreamer encoding-profile.h", "type": "compile", - "use": "gstreamer_0_10", + "use": "gstreamer", "test": "gstreamer_encodingprofiles" }, "gpu_vivante": { @@ -230,7 +224,7 @@ }, "gstreamer_encodingprofiles": { "label": "GStreamer encoding-profile.h", - "condition": "(features.gstreamer_1_0 && tests.gstreamer_encodingprofiles_1_0) || (features.gstreamer_0_10 && tests.gstreamer_encodingprofiles_0_10)", + "condition": "features.gstreamer && tests.gstreamer_encodingprofiles", "output": [ "privateFeature" ] }, "gstreamer_photography": { diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index c9b9b4fc1..16fdec8ea 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -362,6 +362,7 @@ void QMediaPlayerPrivate::setMedia(const QMediaContent &media, QIODevice *stream } else if (hasStreamPlaybackFeature) { control->setMedia(media, file.data()); } else { +#if QT_CONFIG(temporaryfile) QTemporaryFile *tempFile = new QTemporaryFile; // Preserve original file extension, some backends might not load the file if it doesn't @@ -383,6 +384,9 @@ void QMediaPlayerPrivate::setMedia(const QMediaContent &media, QIODevice *stream file.reset(tempFile); control->setMedia(QMediaContent(QUrl::fromLocalFile(file->fileName())), 0); +#else + qWarning("Qt was built with -no-feature-temporaryfile: playback from resource file is not supported!"); +#endif } } else { qrcMedia = QMediaContent(); diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp index d3962b78f..3bab3dada 100644 --- a/src/multimedia/recording/qmediarecorder.cpp +++ b/src/multimedia/recording/qmediarecorder.cpp @@ -909,6 +909,10 @@ void QMediaRecorder::stop() \enum QMediaRecorder::State \value StoppedState The recorder is not active. + If this is the state after recording then the actual created recording has + finished being written to the final location and is ready on all platforms + except on Android. On Android, due to platform limitations, there is no way + to be certain that the recording has finished writing to the final location. \value RecordingState The recording is requested. \value PausedState The recorder is paused. */ diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm b/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm index 79bf2e932..02261027d 100644 --- a/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm +++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm @@ -306,14 +306,16 @@ void AVFMediaRecorderControl::setState(QMediaRecorder::State state) } break; case QMediaRecorder::StoppedState: { - m_state = QMediaRecorder::StoppedState; + m_lastStatus = QMediaRecorder::FinalizingStatus; + Q_EMIT statusChanged(m_lastStatus); [m_movieOutput stopRecording]; unapplySettings(); } } updateStatus(); - Q_EMIT stateChanged(m_state); + if (state != m_state) + Q_EMIT stateChanged(m_state); } void AVFMediaRecorderControl::setMuted(bool muted) @@ -341,6 +343,10 @@ void AVFMediaRecorderControl::handleRecordingStarted() void AVFMediaRecorderControl::handleRecordingFinished() { m_recordingFinished = true; + if (m_state != QMediaRecorder::StoppedState) { + m_state = QMediaRecorder::StoppedState; + Q_EMIT stateChanged(m_state); + } updateStatus(); } diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm index 5f604e9a0..d657dc17d 100644 --- a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm +++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm @@ -340,7 +340,7 @@ void AVFMediaRecorderControlIOS::assetWriterFinished() Q_ASSERT(cameraControl); const QMediaRecorder::Status lastStatus = m_lastStatus; - + const QMediaRecorder::State lastState = m_state; if (cameraControl->captureMode() & QCamera::CaptureVideo) m_lastStatus = QMediaRecorder::LoadedStatus; else @@ -350,9 +350,11 @@ void AVFMediaRecorderControlIOS::assetWriterFinished() m_service->videoOutput()->resetCaptureDelegate(); [m_service->session()->captureSession() startRunning]; - + m_state = QMediaRecorder::StoppedState; if (m_lastStatus != lastStatus) Q_EMIT statusChanged(m_lastStatus); + if (m_state != lastState) + Q_EMIT stateChanged(m_state); } void AVFMediaRecorderControlIOS::captureModeChanged(QCamera::CaptureModes newMode) @@ -403,10 +405,8 @@ void AVFMediaRecorderControlIOS::cameraStatusChanged(QCamera::Status newStatus) void AVFMediaRecorderControlIOS::stopWriter() { if (m_lastStatus == QMediaRecorder::RecordingStatus) { - m_state = QMediaRecorder::StoppedState; m_lastStatus = QMediaRecorder::FinalizingStatus; - Q_EMIT stateChanged(m_state); Q_EMIT statusChanged(m_lastStatus); [m_writer stop]; |