Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qv4l2camera_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QV4L2CAMERA_H
5#define QV4L2CAMERA_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtMultimedia/private/qplatformcamera_p.h>
19#include <sys/time.h>
20
21QT_BEGIN_NAMESPACE
22
23class QV4L2FileDescriptor;
25class QSocketNotifier;
26
50
52uint32_t v4l2FormatForPixelFormat(QVideoFrameFormat::PixelFormat format);
53
55{
57
58public:
59 explicit QV4L2Camera(QCamera *parent);
61
62 bool isActive() const override;
63 void setActive(bool active) override;
64
65 void setCamera(const QCameraDevice &camera) override;
66 bool setCameraFormat(const QCameraFormat &format) override;
67 bool resolveCameraFormat(const QCameraFormat &format);
68
69 bool isFocusModeSupported(QCamera::FocusMode mode) const override;
70 void setFocusMode(QCamera::FocusMode /*mode*/) override;
71
72// void setCustomFocusPoint(const QPointF &/*point*/) override;
73 void setFocusDistance(float) override;
74 void zoomTo(float /*newZoomFactor*/, float /*rate*/ = -1.) override;
75
76 void setFlashMode(QCamera::FlashMode /*mode*/) override;
77 bool isFlashModeSupported(QCamera::FlashMode mode) const override;
78 bool isFlashReady() const override;
79
80 void setTorchMode(QCamera::TorchMode /*mode*/) override;
81 bool isTorchModeSupported(QCamera::TorchMode mode) const override;
82
83 void setExposureMode(QCamera::ExposureMode) override;
84 bool isExposureModeSupported(QCamera::ExposureMode mode) const override;
86 int isoSensitivity() const override;
89 float exposureTime() const override;
90
91 bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const override;
92 void setWhiteBalanceMode(QCamera::WhiteBalanceMode /*mode*/) override;
93 void setColorTemperature(int /*temperature*/) override;
94
95 QVideoFrameFormat frameFormat() const override;
96
97private Q_SLOTS:
98 void readFrame();
99
100private:
101 void setCameraBusy();
102 void initV4L2Controls();
103 void closeV4L2Fd();
104 int setV4L2ColorTemperature(int temperature);
105 bool setV4L2Parameter(quint32 id, qint32 value);
106 int getV4L2Parameter(quint32 id) const;
107
108 void setV4L2CameraFormat();
109 void initV4L2MemoryTransfer();
110 void startCapturing();
111 void stopCapturing();
112
113private:
114 bool m_active = false;
115 QCameraDevice m_cameraDevice;
116
117 std::unique_ptr<QSocketNotifier> m_notifier;
118 std::unique_ptr<QV4L2MemoryTransfer> m_memoryTransfer;
119 std::shared_ptr<QV4L2FileDescriptor> m_v4l2FileDescriptor;
120
121 V4L2CameraInfo m_v4l2Info;
122
123 timeval m_firstFrameTime = { -1, -1 };
124 quint32 m_bytesPerLine = 0;
125 quint32 m_imageSize = 0;
126 QVideoFrameFormat::ColorSpace m_colorSpace = QVideoFrameFormat::ColorSpace_Undefined;
127 qint64 m_frameDuration = -1;
128 bool m_cameraBusy = false;
129};
130
131QT_END_NAMESPACE
132
133#endif // QV4L2CAMERA_H
void zoomTo(float, float=-1.) override
void setManualIsoSensitivity(int) override
void setColorTemperature(int) override
bool isActive() const override
void setFocusMode(QCamera::FocusMode) override
QVideoFrameFormat frameFormat() const override
bool setCameraFormat(const QCameraFormat &format) override
void setTorchMode(QCamera::TorchMode) override
void setFocusDistance(float) override
bool isFocusModeSupported(QCamera::FocusMode mode) const override
void setExposureMode(QCamera::ExposureMode) override
void setActive(bool active) override
bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const override
bool isFlashReady() const override
bool resolveCameraFormat(const QCameraFormat &format)
int isoSensitivity() const override
void setExposureCompensation(float) override
void setFlashMode(QCamera::FlashMode) override
bool isFlashModeSupported(QCamera::FlashMode mode) const override
bool isTorchModeSupported(QCamera::TorchMode mode) const override
void setWhiteBalanceMode(QCamera::WhiteBalanceMode) override
~QV4L2Camera() override
bool isExposureModeSupported(QCamera::ExposureMode mode) const override
void setCamera(const QCameraDevice &camera) override
float exposureTime() const override
void setManualExposureTime(float) override
#define qCWarning(category,...)
#define qCDebug(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)
uint32_t v4l2FormatForPixelFormat(QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat::PixelFormat fmt
uint32_t v4l2Format
QVideoFrameFormat::PixelFormat formatForV4L2Format(uint32_t v4l2Format)
bool autoExposureSupported
bool colorTemperatureSupported
bool manualExposureSupported
bool autoWhiteBalanceSupported
qint32 minExposureAdjustment
qint32 maxExposureAdjustment