[PATCH 1/4] libcamera: media_device: Add helper to return matching entities

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Oct 2 16:29:26 CEST 2024


Quoting Jacopo Mondi (2024-09-27 14:47:23)
> Hi Kieran
> 
> On Mon, Sep 16, 2024 at 04:02:38PM GMT, Kieran Bingham wrote:
> > 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>
> > ---
> >  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 d71dad74df70..d1e0dee2ff0f 100644
> > --- a/src/libcamera/media_device.cpp
> > +++ b/src/libcamera/media_device.cpp
> > @@ -793,7 +793,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
> > @@ -828,4 +828,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.
> 
> I would add that 'function' is expected to be expressed using the
> MEDIA_ENT_F_* macros defined by the Media Controller API.
> 

Updated to:

 * Search all entities within the graph of the MediaDevice and return
 * a vector of those which match the given function as defined by the
 * MEDIA_ENT_F_* macros of the media controller API.


> > + *
> > + * \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;
> > +}
> > +
> 
> Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> 
> Thanks
>   j
> 
> >  } /* namespace libcamera */
> > --
> > 2.46.0
> >


More information about the libcamera-devel mailing list