19QCameraFormat QPlatformCamera::findBestCameraFormat(
const QCameraDevice &camera)
const
25 auto makeCriteria = [
this](
const QCameraFormat &fmt) {
26 constexpr float MinSufficientFrameRate = 29.f;
28 const auto isValid = fmt.pixelFormat() != QVideoFrameFormat::Format_Invalid;
29 const auto resolution = fmt.resolution();
30 const auto sufficientFrameRate = std::min(fmt.maxFrameRate(), MinSufficientFrameRate);
31 const auto pixelFormatScore =
32 cameraPixelFormatScore(fmt.pixelFormat(), QCameraFormatPrivate::getColorRange(fmt));
34 return std::make_tuple(
37 resolution.width() * resolution.height(),
42 const auto formats = camera.videoFormats();
44 return QCameraFormat{};
47 ranges::max(formats, [&](
const QCameraFormat &fmtA,
const QCameraFormat &fmtB) {
48 return makeCriteria(fmtA) < makeCriteria(fmtB);
54QVideoFrameFormat QPlatformCamera::frameFormat()
const
56 QVideoFrameFormat result(m_cameraFormat.resolution(),
57 m_framePixelFormat == QVideoFrameFormat::Format_Invalid
58 ? m_cameraFormat.pixelFormat()
59 : m_framePixelFormat);
60 result.setStreamFrameRate(m_cameraFormat.maxFrameRate());