6#include <QtCore/qloggingcategory.h>
17QByteArray toByteArray(std::string_view sv)
19 return QByteArray(sv.data(), qsizetype(sv.size()));
22QString toString(std::string_view sv)
24 return QString::fromUtf8(sv.data(), qsizetype(sv.size()));
32 static const bool acceptAll =
33 qEnvironmentVariableIntValue(
"QT_PIPEWIRE_CAMERA_ACCEPT_ALL") != 0;
35 const std::optional<std::string_view> mediaClass = getMediaClass(nodeProperties);
39 if (mediaClass !=
"Video/Source"sv)
45 if (getMediaRole(nodeProperties) ==
"Camera"sv)
48 const std::optional<std::string_view> deviceApi = getDeviceApi(nodeProperties);
49 return deviceApi ==
"v4l2"sv || deviceApi ==
"libcamera"sv;
55 if (
auto nodeName = getNodeName(nodeProperties))
56 return "pw:" + toByteArray(*nodeName);
59 if (
auto objectPath = getObjectPath(nodeProperties))
60 return "pw:" + toByteArray(*objectPath);
64 if (
auto serial = getObjectSerial(nodeProperties))
65 return "pw:serial:" + QByteArray::number(qulonglong(serial->value));
71 const PwPropertyDict &deviceProperties)
73 if (
auto description = getNodeDescription(nodeProperties))
74 return toString(*description);
75 if (
auto nick = getNodeNick(nodeProperties))
76 return toString(*nick);
77 if (
auto description = getDeviceDescription(deviceProperties))
78 return toString(*description);
79 if (
auto nodeName = getNodeName(nodeProperties))
80 return toString(*nodeName);
87 if (getDeviceApi(nodeProperties) !=
"libcamera"sv)
88 return QCameraDevice::UnspecifiedPosition;
90 const auto location = nodeProperties.find(
"api.libcamera.location"sv);
91 if (location == nodeProperties.end())
92 return QCameraDevice::UnspecifiedPosition;
94 if (location->second ==
"front"sv)
95 return QCameraDevice::FrontFace;
96 if (location->second ==
"back"sv)
97 return QCameraDevice::BackFace;
100 return QCameraDevice::UnspecifiedPosition;
Combined button and popup list for selecting options.
QCameraDevice::Position cameraPosition(const PwPropertyDict &nodeProperties)
QByteArray cameraDeviceId(const PwPropertyDict &nodeProperties)
bool isCameraNode(const PwPropertyDict &nodeProperties)
QString cameraDescription(const PwPropertyDict &nodeProperties, const PwPropertyDict &deviceProperties)