11#include <private/qmediastoragelocation_p.h> 
   13#include <camera/camera_api.h> 
   14#include <camera/camera_3a.h> 
   24    camera_focusmode_t 
qnx;
 
   36template <
typename Mapping, 
typename From, 
typename To, 
size_t N>
 
   38        From Mapping::* from, To Mapping::* to, From 
value, To defaultValue)
 
   41        const auto fromValue = 
m.*from;
 
   42        const auto toValue = 
m.*to;
 
   44        if (
value == fromValue)
 
   81    return m_qnxCamera && m_qnxCamera->isActive();
 
  100    m_qnxCamera->start();
 
  112    m_videoSink = 
nullptr;
 
  119    if (m_cameraDevice == 
camera)
 
  122    const auto cameraUnit = 
static_cast<camera_unit_t
>(
camera.id().toUInt());
 
  124    m_qnxCamera = std::make_unique<QQnxCamera>(cameraUnit);
 
  127            [
this](camera_focusmode_t 
mode) { Q_EMIT focusModeChanged(qtFocusMode(mode)); });
 
  135    updateCameraFeatures();
 
  143        qWarning(
"QQnxPlatformCamera: invalid resolution requested");
 
  147    return m_qnxCamera->setCameraFormat(resolution.
width(),
 
  153    if (m_session == session)
 
  180    m_qnxCamera->setCustomFocusPoint(point);
 
  188    const int maxDistance = m_qnxCamera->maxFocusStep();
 
  193    const int qnxDistance = maxDistance * std::min(
distance, 1.0f);
 
  195    m_qnxCamera->setManualFocusStep(qnxDistance);
 
  203    const uint32_t minZoom = m_qnxCamera->minimumZoomLevel();
 
  204    const uint32_t maxZoom = m_qnxCamera->maximumZoomLevel();
 
  206    if (maxZoom <= minZoom)
 
  216    factor = 
qBound(min, factor, max) - min;
 
  218    const uint32_t zoom = minZoom
 
  219        + 
static_cast<uint32_t
>(
qRound(factor*(maxZoom - minZoom)/(max - min)));
 
  221    if (m_qnxCamera->setZoomFactor(zoom))
 
  230    m_qnxCamera->setEvOffset(ev);
 
  238    return m_qnxCamera->manualIsoSensitivity();
 
  246    const uint32_t isoValue = std::max(0, 
value);
 
  248    m_qnxCamera->setManualIsoSensitivity(isoValue);
 
  256    m_qnxCamera->setManualExposureTime(seconds);
 
  264    return static_cast<float>(m_qnxCamera->manualExposureTime());
 
  269    if (m_maxColorTemperature != 0)
 
  281        m_qnxCamera->setWhiteBalanceMode(CAMERA_WHITEBALANCEMODE_AUTO);
 
  283        m_qnxCamera->setWhiteBalanceMode(CAMERA_WHITEBALANCEMODE_MANUAL);
 
  293    const auto normalizedTemp = std::clamp<uint32_t>(std::max(0, temperature),
 
  294            m_minColorTemperature, m_maxColorTemperature);
 
  296    if (m_qnxCamera->hasContinuousWhiteBalanceValues()) {
 
  297        m_qnxCamera->setManualWhiteBalance(normalizedTemp);
 
  299        uint32_t delta = std::numeric_limits<uint32_t>::max();
 
  300        uint32_t closestTemp = 0;
 
  302        for (uint32_t 
value : m_qnxCamera->supportedWhiteBalanceValues()) {
 
  303            const auto &[min, max] = std::minmax(
value, normalizedTemp);
 
  304            const uint32_t currentDelta = max - min;
 
  306            if (currentDelta < delta) {
 
  308                delta = currentDelta;
 
  312        m_qnxCamera->setManualWhiteBalance(closestTemp);
 
  319        qWarning(
"QQnxPlatformCamera: cannot start video recording - no no camera assigned");
 
  323    if (!isVideoEncodingSupported()) {
 
  324        qWarning(
"QQnxPlatformCamera: cannot start video recording - not supported");
 
  328    if (!m_qnxCamera->isActive()) {
 
  329        qWarning(
"QQnxPlatformCamera: cannot start video recording - camera not started");
 
  339        static void *libScreen = 
nullptr;
 
  342            libScreen = dlopen(
"/usr/lib/libscreen.so.1", RTLD_GLOBAL);
 
  347    return m_qnxCamera->startVideoRecording(
location);
 
  352    m_videoFrameRequests.emplace_back(std::move(
cb));
 
  355bool QQnxPlatformCamera::isVideoEncodingSupported()
 const 
  357    return m_qnxCamera && m_qnxCamera->hasFeature(CAMERA_FEATURE_VIDEO);
 
  370void QQnxPlatformCamera::updateCameraFeatures()
 
  375    QCamera::Features features = {};
 
  377    if (m_qnxCamera->hasFeature(CAMERA_FEATURE_REGIONFOCUS))
 
  385    const QList<uint32_t> wbValues = m_qnxCamera->supportedWhiteBalanceValues();
 
  388        m_minColorTemperature = m_maxColorTemperature = 0;
 
  390        const auto &[minTemp, maxTemp] = std::minmax_element(wbValues.
begin(), wbValues.
end());
 
  392        m_minColorTemperature = *minTemp;
 
  393        m_maxColorTemperature = *maxTemp;
 
  397void QQnxPlatformCamera::onFrameAvailable()
 
  402    std::unique_ptr<QQnxCameraFrameBuffer> currentFrame = m_qnxCamera->takeCurrentFrame();
 
  410    currentFrame.release(); 
 
  415    if (!m_videoFrameRequests.empty()) {
 
  417        m_videoFrameRequests.pop_front();
 
  424#include "moc_qqnxplatformcamera_p.cpp" 
The QCameraDevice class provides general information about camera devices.
 
The QCamera class provides interface for system camera devices.
 
WhiteBalanceMode
\value WhiteBalanceAuto Auto white balance mode.
 
FocusMode
\value FocusModeAuto Continuous auto focus mode.
 
bool isEmpty() const noexcept
 
QString preferredSuffix
the preferred suffix for the MIME type
 
QObject * parent() const
Returns a pointer to the parent object.
 
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
 
\inmodule QtCore\reentrant
 
void focusModeChanged(camera_focusmode_t mode)
 
void customFocusPointChanged(const QPointF &point)
 
constexpr int height() const noexcept
Returns the height.
 
constexpr int width() const noexcept
Returns the width.
 
constexpr bool isEmpty() const noexcept
Returns true if either of the width and height is less than or equal to 0; otherwise returns false.
 
\macro QT_RESTRICTED_CAST_FROM_ASCII
 
QString toLocalFile() const
Returns the path of this URL formatted as a local file path.
 
The QVideoFrame class represents a frame of video data.
 
Combined button and popup list for selecting options.
 
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
 
int qRound(qfloat16 d) noexcept
 
constexpr const T & qBound(const T &min, const T &val, const T &max)
 
GLsizei GLsizei GLfloat distance
 
GLint GLsizei GLsizei GLenum format
 
GLenum GLenum GLenum GLenum mapping
 
SSL_CTX int(* cb)(SSL *ssl, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
 
QSettings settings("MySoft", "Star Runner")
[0]
 
QUrl url("example.com")
[constructor-url-reference]
 
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent