spa: libcamera: use references when getting camera properties

The argument is not nullable, so use a const lvalue reference
to express that clearly.
This commit is contained in:
Barnabás Pőcze 2025-02-02 14:07:32 +01:00 committed by Wim Taymans
parent fc91f93af3
commit 41045c5e61

View file

@ -53,32 +53,25 @@ struct impl {
} }
static const libcamera::Span<const int64_t> cameraDevice( static const libcamera::Span<const int64_t> cameraDevice(const Camera& camera)
const Camera *camera)
{ {
const ControlList &props = camera->properties(); if (auto devices = camera.properties().get(properties::SystemDevices))
if (auto devices = props.get(properties::SystemDevices))
return devices.value(); return devices.value();
return {}; return {};
} }
static std::string cameraModel(const Camera *camera) static std::string cameraModel(const Camera& camera)
{ {
const ControlList &props = camera->properties(); if (auto model = camera.properties().get(properties::Model))
if (auto model = props.get(properties::Model))
return std::move(model.value()); return std::move(model.value());
return camera->id(); return camera.id();
} }
static const char *cameraLoc(const Camera *camera) static const char *cameraLoc(const Camera& camera)
{ {
const ControlList &props = camera->properties(); if (auto location = camera.properties().get(properties::Location)) {
if (auto location = props.get(properties::Location)) {
switch (location.value()) { switch (location.value()) {
case properties::CameraLocationFront: case properties::CameraLocationFront:
return "front"; return "front";
@ -92,11 +85,9 @@ static const char *cameraLoc(const Camera *camera)
return nullptr; return nullptr;
} }
static const char *cameraRot(const Camera *camera) static const char *cameraRot(const Camera& camera)
{ {
const ControlList &props = camera->properties(); if (auto rotation = camera.properties().get(properties::Rotation)) {
if (auto rotation = props.get(properties::Rotation)) {
switch (rotation.value()) { switch (rotation.value()) {
case 90: case 90:
return "90"; return "90";
@ -121,6 +112,7 @@ static int emit_info(struct impl *impl, bool full)
struct spa_param_info params[2]; struct spa_param_info params[2];
char path[256], name[256], devices_str[256]; char path[256], name[256], devices_str[256];
struct spa_strbuf buf; struct spa_strbuf buf;
Camera& camera = *impl->camera;
info = SPA_DEVICE_INFO_INIT(); info = SPA_DEVICE_INFO_INIT();
@ -133,19 +125,19 @@ static int emit_info(struct impl *impl, bool full)
ADD_ITEM(SPA_KEY_MEDIA_CLASS, "Video/Device"); ADD_ITEM(SPA_KEY_MEDIA_CLASS, "Video/Device");
ADD_ITEM(SPA_KEY_API_LIBCAMERA_PATH, impl->device_id.c_str()); ADD_ITEM(SPA_KEY_API_LIBCAMERA_PATH, impl->device_id.c_str());
if (auto location = cameraLoc(impl->camera.get())) if (auto location = cameraLoc(camera))
ADD_ITEM(SPA_KEY_API_LIBCAMERA_LOCATION, location); ADD_ITEM(SPA_KEY_API_LIBCAMERA_LOCATION, location);
if (auto rotation = cameraRot(impl->camera.get())) if (auto rotation = cameraRot(camera))
ADD_ITEM(SPA_KEY_API_LIBCAMERA_ROTATION, rotation); ADD_ITEM(SPA_KEY_API_LIBCAMERA_ROTATION, rotation);
const auto model = cameraModel(impl->camera.get()); const auto model = cameraModel(camera);
ADD_ITEM(SPA_KEY_DEVICE_PRODUCT_NAME, model.c_str()); ADD_ITEM(SPA_KEY_DEVICE_PRODUCT_NAME, model.c_str());
ADD_ITEM(SPA_KEY_DEVICE_DESCRIPTION, model.c_str()); ADD_ITEM(SPA_KEY_DEVICE_DESCRIPTION, model.c_str());
snprintf(name, sizeof(name), "libcamera_device.%s", impl->device_id.c_str()); snprintf(name, sizeof(name), "libcamera_device.%s", impl->device_id.c_str());
ADD_ITEM(SPA_KEY_DEVICE_NAME, name); ADD_ITEM(SPA_KEY_DEVICE_NAME, name);
auto device_numbers = cameraDevice(impl->camera.get()); auto device_numbers = cameraDevice(camera);
if (!device_numbers.empty()) { if (!device_numbers.empty()) {
spa_strbuf_init(&buf, devices_str, sizeof(devices_str)); spa_strbuf_init(&buf, devices_str, sizeof(devices_str));