42 switch (device.cameraPosition) {
43 case CAMERA_POSITION_FRONT:
44 position = QStringLiteral(
"Front");
46 case CAMERA_POSITION_BACK:
47 position = QStringLiteral(
"Back");
50 position = QStringLiteral(
"Camera");
54 switch (device.cameraType) {
55 case CAMERA_TYPE_WIDE_ANGLE:
56 type = QStringLiteral(
"Wide");
58 case CAMERA_TYPE_ULTRA_WIDE:
59 type = QStringLiteral(
"UltraWide");
61 case CAMERA_TYPE_TELEPHOTO:
62 type = QStringLiteral(
"Telephoto");
64 case CAMERA_TYPE_TRUE_DEPTH:
65 type = QStringLiteral(
"TrueDepth");
67 case CAMERA_TYPE_DEFAULT:
70 return type.isEmpty() ? position : QStringLiteral(
"%1 (%2)").arg(position, type);
94 QList<QCameraFormat> formats;
95 Camera_OutputCapability *caps =
nullptr;
96 if (OH_CameraManager_GetSupportedCameraOutputCapability(manager,
97 const_cast<Camera_Device *>(&device),
104 for (uint32_t i = 0; i < caps->videoProfilesSize; ++i) {
105 Camera_VideoProfile *profile = caps->videoProfiles[i];
108 const auto pixelFormat = pixelFormatFor(profile->format);
109 if (pixelFormat == QVideoFrameFormat::Format_Invalid)
111 auto *priv =
new QCameraFormatPrivate;
112 priv->pixelFormat = pixelFormat;
113 priv->resolution = QSize{
int(profile->size.width),
int(profile->size.height) };
114 priv->minFrameRate =
float(profile->range.min);
115 priv->maxFrameRate =
float(profile->range.max);
116 formats.append(priv->create());
119 OH_CameraManager_DeleteSupportedCameraOutputCapability(manager, caps);
130QList<QCameraDevice> QOhosVideoDevices::findVideoInputs()
const
132 Camera_Manager *manager =
nullptr;
133 if (OH_Camera_GetCameraManager(&manager) != CAMERA_OK || !manager)
136 Camera_Device *devices =
nullptr;
138 if (OH_CameraManager_GetSupportedCameras(manager, &devices, &count) != CAMERA_OK || !devices) {
139 OH_Camera_DeleteCameraManager(manager);
143 QList<QCameraDevice> result;
144 result.reserve(count);
145 for (uint32_t i = 0; i < count; ++i) {
146 const Camera_Device &dev = devices[i];
147 auto *priv =
new QCameraDevicePrivate;
148 priv->id = QByteArray{ dev.cameraId };
149 priv->description = descriptionFor(dev);
150 priv->isDefault = (i == 0);
151 priv->position = positionFor(dev.cameraPosition);
152 priv->videoFormats = collectVideoFormats(manager, dev);
153 result.append(priv->create());
156 OH_CameraManager_DeleteSupportedCameras(manager, devices, count);
157 OH_Camera_DeleteCameraManager(manager);