diff options
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qandroidcamera.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp b/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp index df583ce0e..97448c707 100644 --- a/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp +++ b/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp @@ -332,10 +332,18 @@ void QAndroidCamera::setState(QAndroidCamera::State newState) bool QAndroidCamera::setCameraFormat(const QCameraFormat &format) { - if (!format.isNull() && !m_cameraDevice.videoFormats().contains(format)) + const auto chosenFormat = format.isNull() ? getDefaultCameraFormat() : format; + + if (chosenFormat == m_cameraFormat || !m_cameraDevice.videoFormats().contains(chosenFormat)) return false; - m_cameraFormat = format.isNull() ? getDefaultCameraFormat() : format; + m_cameraFormat = chosenFormat; + + if (isActive()) { + // Restart the camera to set new camera format + setActive(false); + setActive(true); + } return true; } |