[libcamera-devel] [PATCH 3/3] libcamera: pipeline: Register device numbers with camera

Barnabás Pőcze pobrn at protonmail.com
Wed May 3 15:58:58 CEST 2023


Hi


2023. április 19., szerda 10:58 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel at lists.libcamera.org> írta:

> Register the identified device numbers with each camera as the Devices
> property.
> 
> This facilitates camera daemons or other systems to identify which
> devices are being managed by libcamera, and can prevent duplication of
> camera resources.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  src/libcamera/pipeline_handler.cpp | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
> index f72613b8e515..66e7def51cd1 100644
> --- a/src/libcamera/pipeline_handler.cpp
> +++ b/src/libcamera/pipeline_handler.cpp
> @@ -18,6 +18,7 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/camera_manager.h>
>  #include <libcamera/framebuffer.h>
> +#include <libcamera/property_ids.h>
> 
>  #include "libcamera/internal/camera.h"
>  #include "libcamera/internal/device_enumerator.h"
> @@ -624,6 +625,13 @@ void PipelineHandler::registerCamera(std::shared_ptr<Camera> camera)
>  		}
>  	}
> 
> +	/*
> +	 * Store the associated devices as a property of the camera to allow
> +	 * systems to identify which devices are managed by libcamera.
> +	 */
> +	Camera::Private *data = camera->_d();
> +	data->properties_.set(properties::Devices, devnums);

I am getting an assertion failure while testing https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/1611

  ASSERT(elementSize == ControlValueSize[type]);

in `controls.cpp:ControlValue::set()` fails because `sizeof(dev_t) != 4`.


> +
>  	manager_->addCamera(std::move(camera), devnums);
>  }
> 
> --
> 2.34.1


Regards,
Barnabás Pőcze


More information about the libcamera-devel mailing list