summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp19
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h1
2 files changed, 15 insertions, 5 deletions
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
index 82cb407b6..ee2ba3c6a 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
@@ -81,12 +81,17 @@ void QWindowsMediaEncoder::record(QMediaEncoderSettings &settings)
if (m_state != QMediaRecorder::StoppedState)
return;
- m_mediaDeviceSession->setActive(true);
+ m_sessionWasActive = m_mediaDeviceSession->isActive();
- if (!m_mediaDeviceSession->isActive() && !m_mediaDeviceSession->isActivating()) {
- error(QMediaRecorder::ResourceError,
- QMediaRecorderPrivate::msgFailedStartRecording());
- return;
+ if (!m_sessionWasActive) {
+
+ m_mediaDeviceSession->setActive(true);
+
+ if (!m_mediaDeviceSession->isActivating()) {
+ error(QMediaRecorder::ResourceError,
+ QMediaRecorderPrivate::msgFailedStartRecording());
+ return;
+ }
}
const auto audioOnly = settings.videoCodec() == QMediaFormat::VideoCodec::Unspecified;
@@ -137,6 +142,8 @@ void QWindowsMediaEncoder::stop()
{
if (m_mediaDeviceSession && m_state != QMediaRecorder::StoppedState)
m_mediaDeviceSession->stopRecording();
+ if (!m_sessionWasActive)
+ m_mediaDeviceSession->setActive(false);
}
@@ -214,6 +221,8 @@ void QWindowsMediaEncoder::onStreamingError(int errorCode)
if (m_state != QMediaRecorder::StoppedState) {
m_mediaDeviceSession->stopRecording();
+ if (!m_sessionWasActive)
+ m_mediaDeviceSession->setActive(false);
}
}
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h
index 9269e0748..22295791a 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h
@@ -99,6 +99,7 @@ private:
QString m_fileName;
QMediaMetaData m_metaData;
qint64 m_duration = 0;
+ bool m_sessionWasActive = false;
};
QT_END_NAMESPACE