[PATCH v4 1/3] libcamera: media_device: Add helper to return matching entities
Stefan Klug
stefan.klug at ideasonboard.com
Thu Apr 3 12:31:02 CEST 2025
On Wed, Apr 02, 2025 at 04:39:16PM +0900, Paul Elder wrote:
> From: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
> Provide a helper on the MediaDevice to return a list of all
> available entities which match a given function in the graph.
>
> As a drive by, also fix a whitespace error in the documentation of
> MediaDevice::setupLink.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> Reviewed-by: Daniel Scally <dan.scally at ideasonboard.com>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
Looks good to me.
Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
> include/libcamera/internal/media_device.h | 2 ++
> src/libcamera/media_device.cpp | 24 ++++++++++++++++++++++-
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/include/libcamera/internal/media_device.h b/include/libcamera/internal/media_device.h
> index e412d3a0b7e3..b3a48b98d64b 100644
> --- a/include/libcamera/internal/media_device.h
> +++ b/include/libcamera/internal/media_device.h
> @@ -55,6 +55,8 @@ public:
>
> Signal<> disconnected;
>
> + std::vector<MediaEntity *> locateEntities(unsigned int function);
> +
> protected:
> std::string logPrefix() const override;
>
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index 75abd91d736a..353f34a81eca 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -794,7 +794,7 @@ void MediaDevice::fixupEntityFlags(struct media_v2_entity *entity)
> * low-level link setup as it performs no checks on the validity of the \a
> * flags, and assumes that the supplied \a flags are valid for the link (e.g.
> * immutable links cannot be disabled).
> -*
> + *
> * \sa MediaLink::setEnabled(bool enable)
> *
> * \return 0 on success or a negative error code otherwise
> @@ -829,4 +829,26 @@ int MediaDevice::setupLink(const MediaLink *link, unsigned int flags)
> return 0;
> }
>
> +/**
> + * \brief Identify all entities of a common function in the MediaDevice
> + * \param[in] function The entity function to search for
> + *
> + * Search all entities within the graph of the MediaDevice and return
> + * a vector of those which match the given function.
> + *
> + * \return A vector of matching entities
> + */
> +std::vector<MediaEntity *> MediaDevice::locateEntities(unsigned int function)
> +{
> + std::vector<MediaEntity *> found;
> +
> + /* Gather all the entities matching the function they expose. */
> + for (MediaEntity *entity : entities()) {
> + if (entity->function() == function)
> + found.push_back(entity);
> + }
> +
> + return found;
> +}
> +
> } /* namespace libcamera */
> --
> 2.47.2
>
More information about the libcamera-devel
mailing list