diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-04-19 11:33:02 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-04-19 11:10:20 +0000 |
commit | 55af31312a00f518b5f5aab228dcc0ede55dfeaf (patch) | |
tree | 29877e0278e29aef1de2362984aa49ba5de3056e | |
parent | f64dd18f4dd5ecec6c52ff388f1625d8fd490657 (diff) |
Fix a nullptr dereference
Change-Id: I13c484d011b689d3df5d71944d722562181e36d7
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
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]; |