[libcamera-devel] [PATCH v2 2/5] libcamera: media_object: Add functions to entities

Jacopo Mondi jacopo at jmondi.org
Wed Jan 16 14:59:46 CET 2019


Media entities convey information about their main function in the
'function' field of 'struct media_v2_entity'.

Store the main function in the MediaEntity function_ class member and provide
a getter function for that.

While at there update comments, keep the MediaPad description in sync
with the MediaEntity one and remove a stale TODO entry.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/libcamera/include/media_object.h |  2 ++
 src/libcamera/media_object.cpp       | 22 +++++++++++++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/libcamera/include/media_object.h b/src/libcamera/include/media_object.h
index 7fc4441..a10f7e1 100644
--- a/src/libcamera/include/media_object.h
+++ b/src/libcamera/include/media_object.h
@@ -84,6 +84,7 @@ class MediaEntity : public MediaObject
 {
 public:
 	const std::string &name() const { return name_; }
+	unsigned int function() const { return function_; }
 	unsigned int deviceMajor() const { return major_; }
 	unsigned int deviceMinor() const { return minor_; }
 
@@ -103,6 +104,7 @@ private:
 	~MediaEntity();
 
 	std::string name_;
+	unsigned int function_;
 	std::string devnode_;
 	unsigned int major_;
 	unsigned int minor_;
diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
index cb3af85..76dd326 100644
--- a/src/libcamera/media_object.cpp
+++ b/src/libcamera/media_object.cpp
@@ -166,7 +166,7 @@ MediaLink::MediaLink(const struct media_v2_link *link, MediaPad *source,
  * Pads are created from the information provided by the Media Controller API
  * in the media_v2_pad structure. They reference the entity() they belong to.
  *
- * In addition to its graph id, every media graph pad is identified by an index
+ * In addition to its graph id, media graph pads are identified by an index
  * unique in the context of the entity the pad belongs to.
  *
  * A pad can be either a 'source' pad or a 'sink' pad. This information is
@@ -242,11 +242,9 @@ void MediaPad::addLink(MediaLink *link)
  * Entities are created from the information provided by the Media Controller
  * API in the media_v2_entity structure. They reference the pads() they contain.
  *
- * In addition to its graph id, every media graph entity is identified by a
- * name() unique in the media device context.
- *
- * \todo Add support for associating a devnode to the entity when integrating
- * with DeviceEnumerator.
+ * In addition to its graph id, media graph entities are identified by a
+ * name() unique in the media device context. They implement a function() and
+ * may expose a devnode().
  */
 
 /**
@@ -255,6 +253,16 @@ void MediaPad::addLink(MediaLink *link)
  * \return The entity name
  */
 
+/**
+ * \fn MediaEntity::function()
+ * \brief Retrieve the entity's main function
+ *
+ * Media entity functions are expressed using the MEDIA_ENT_F_* macros
+ * defined by the Media Controller API.
+ *
+ * \return The entity's function
+ */
+
 /**
  * \fn MediaEntity::deviceMajor()
  * \brief Retrieve the major number of the interface associated with the entity
@@ -336,7 +344,7 @@ MediaEntity::MediaEntity(MediaDevice *dev,
 			 const struct media_v2_entity *entity,
 			 unsigned int major, unsigned int minor)
 	: MediaObject(dev, entity->id), name_(entity->name),
-	  major_(major), minor_(minor)
+	  function_(entity->function), major_(major), minor_(minor)
 {
 }
 
-- 
2.20.1



More information about the libcamera-devel mailing list