summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-04-19 11:33:02 +0200
committerLars Knoll <lars.knoll@qt.io>2021-04-19 11:10:20 +0000
commit55af31312a00f518b5f5aab228dcc0ede55dfeaf (patch)
tree29877e0278e29aef1de2362984aa49ba5de3056e
parentf64dd18f4dd5ecec6c52ff388f1625d8fd490657 (diff)
Fix a nullptr dereference
Change-Id: I13c484d011b689d3df5d71944d722562181e36d7 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--examples/multimedia/video/qmlvideo/Info.plist.in1
-rw-r--r--examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml9
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediaencoder.mm7
3 files changed, 13 insertions, 4 deletions
diff --git a/examples/multimedia/video/qmlvideo/Info.plist.in b/examples/multimedia/video/qmlvideo/Info.plist.in
index daa641fb7..85aa9c26e 100644
--- a/examples/multimedia/video/qmlvideo/Info.plist.in
+++ b/examples/multimedia/video/qmlvideo/Info.plist.in
@@ -42,7 +42,6 @@
<string>Qt Multimedia Example</string>
<key>NSMicrophoneUsageDescription</key>
<string>Qt Multimedia Example</string>
-
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
diff --git a/examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml b/examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml
index 8fd79c3c5..5488439f7 100644
--- a/examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml
+++ b/examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml
@@ -72,6 +72,15 @@ VideoOutput {
}
}
}
+ imageCapture: ImageCapture {
+ id: imageCapture
+ }
+
+ encoder: MediaEncoder {
+ id: encoder
+// resolution: "640x480"
+// frameRate: 30
+ }
videoOutput: root
}
diff --git a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
index 62d72dd93..69362f197 100644
--- a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
@@ -385,8 +385,6 @@ void AVFMediaEncoder::applySettings()
auto encoderSettings = m_settings;
encoderSettings.resolveFormat();
- const AVFConfigurationLock lock(session->videoCaptureDevice()); // prevents activeFormat from being overridden
-
// audio settings
m_audioSettings = avfAudioSettings(encoderSettings);
if (m_audioSettings)
@@ -394,7 +392,10 @@ void AVFMediaEncoder::applySettings()
// video settings
AVCaptureDevice *device = m_service->session()->videoCaptureDevice();
- AVCaptureConnection *conn = [m_service->session()->videoOutput()->videoDataOutput() connectionWithMediaType:AVMediaTypeVideo];
+ if (!device)
+ return;
+ const AVFConfigurationLock lock(device); // prevents activeFormat from being overridden
+ AVCaptureConnection *conn = [m_service->session()->videoOutput()->videoDataOutput() connectionWithMediaType:AVMediaTypeVideo];
m_videoSettings = avfVideoSettings(encoderSettings, device, conn);
if (m_videoSettings)
[m_videoSettings retain];