diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-08-14 17:18:49 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-22 09:16:16 +0000 |
commit | 6332cdc7c1f73551c92b8d5b27168e9f12f5788a (patch) | |
tree | f92d25be49b933fbfb72858c337108f60a426497 /src/plugins/multimedia/ffmpeg/qavfcamera.mm | |
parent | b548dcebcb17bedbeeb114f95282dc084595c717 (diff) |
Fix recognizing ambiguous formats by macOS camera implementation
The problem is that we have ambiguous conversions videotoolbox
pixel formats to QVideoFrameFormat::PixelFormat,
e.g. we interpret both
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange and
kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
as QVideoFrameFormat::Format_NV12.
Let's store color range in QCameraFormatPrivate to avoid
the ambiguous conversion.
Task-number: QTBUG-115575
Change-Id: I86dc3b85ca111855435acf63fba55ea0f87200bd
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit 35f59535360e9822150f6daf4d0c95e2efe17176)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/multimedia/ffmpeg/qavfcamera.mm')
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qavfcamera.mm | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qavfcamera.mm b/src/plugins/multimedia/ffmpeg/qavfcamera.mm index 0a22e81bd..9b87a5423 100644 --- a/src/plugins/multimedia/ffmpeg/qavfcamera.mm +++ b/src/plugins/multimedia/ffmpeg/qavfcamera.mm @@ -314,12 +314,11 @@ std::optional<int> QAVFCamera::ffmpegHWPixelFormat() const return m_hwPixelFormat == AV_PIX_FMT_NONE ? std::optional<int>{} : m_hwPixelFormat; } -int QAVFCamera::cameraPixelFormatScore(QVideoFrameFormat::PixelFormat pixFmt) const +int QAVFCamera::cameraPixelFormatScore(QVideoFrameFormat::PixelFormat pixelFormat, + QVideoFrameFormat::ColorRange colorRange) const { - unsigned cvFormat = 0; - const auto isSupported = - QAVFHelpers::toCVPixelFormat(pixFmt, cvFormat) && isCVFormatSupported(cvFormat); - return static_cast<int>(isSupported); + auto cvFormat = QAVFHelpers::toCVPixelFormat(pixelFormat, colorRange); + return static_cast<int>(isCVFormatSupported(cvFormat)); } QT_END_NAMESPACE |