From 55af31312a00f518b5f5aab228dcc0ede55dfeaf Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 19 Apr 2021 11:33:02 +0200 Subject: Fix a nullptr dereference Change-Id: I13c484d011b689d3df5d71944d722562181e36d7 Reviewed-by: Doris Verria Reviewed-by: Lars Knoll --- examples/multimedia/video/qmlvideo/Info.plist.in | 1 - examples/multimedia/video/qmlvideo/qml/qmlvideo/CameraItem.qml | 9 +++++++++ src/multimedia/platform/darwin/camera/avfmediaencoder.mm | 7 ++++--- 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 @@ Qt Multimedia Example NSMicrophoneUsageDescription Qt Multimedia Example - NSSupportsAutomaticGraphicsSwitching 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]; -- cgit v1.2.3