summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-01-18 13:38:08 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-18 14:39:27 +0000
commit0438ef9069c094ab714648efaa6ec1c9d86e7e71 (patch)
treed9e1388bf3cdf5820647b1e8bd34b5b43564c7b7
parent8a3a69d7b24616cffc53a5f5963bc974a7d7ecaf (diff)
Fix camera crash on macOS
The crash was reproduced with OBS virtual camera which doesn't provide kCVImageBufferYCbCrMatrixKey Change-Id: I9c13de41e7d892b4d58aa151f914b450dd28716e Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit a5127186701df965dd94f712c64981eacd022b0a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/plugins/multimedia/darwin/qavfhelpers.mm21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/plugins/multimedia/darwin/qavfhelpers.mm b/src/plugins/multimedia/darwin/qavfhelpers.mm
index 1863274b6..bbfcc2d85 100644
--- a/src/plugins/multimedia/darwin/qavfhelpers.mm
+++ b/src/plugins/multimedia/darwin/qavfhelpers.mm
@@ -96,16 +96,17 @@ QVideoFrameFormat QAVFHelpers::videoFormatForImageBuffer(CVImageBufferRef buffer
auto colorSpace = QVideoFrameFormat::ColorSpace_Undefined;
auto colorTransfer = QVideoFrameFormat::ColorTransfer_Unknown;
- CFStringRef cSpace = reinterpret_cast<CFStringRef>(
- CVBufferGetAttachment(buffer, kCVImageBufferYCbCrMatrixKey, nullptr));
- if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_709_2)) {
- colorSpace = QVideoFrameFormat::ColorSpace_BT709;
- } else if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_601_4) ||
- CFEqual(cSpace, kCVImageBufferYCbCrMatrix_SMPTE_240M_1995)) {
- colorSpace = QVideoFrameFormat::ColorSpace_BT601;
- } else if (@available(macOS 10.11, iOS 9.0, *)) {
- if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_2020)) {
- colorSpace = QVideoFrameFormat::ColorSpace_BT2020;
+ if (CFStringRef cSpace = reinterpret_cast<CFStringRef>(
+ CVBufferGetAttachment(buffer, kCVImageBufferYCbCrMatrixKey, nullptr))) {
+ if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_709_2)) {
+ colorSpace = QVideoFrameFormat::ColorSpace_BT709;
+ } else if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_601_4)
+ || CFEqual(cSpace, kCVImageBufferYCbCrMatrix_SMPTE_240M_1995)) {
+ colorSpace = QVideoFrameFormat::ColorSpace_BT601;
+ } else if (@available(macOS 10.11, iOS 9.0, *)) {
+ if (CFEqual(cSpace, kCVImageBufferYCbCrMatrix_ITU_R_2020)) {
+ colorSpace = QVideoFrameFormat::ColorSpace_BT2020;
+ }
}
}