[libcamera-devel] [PATCH] libcamera: media_device: Skip all non-data links during enumeration

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Dec 6 19:50:47 CET 2021


The MediaDevice::populateLinks() function iterates over data links by
skipping interface links. This isn't very future-proof, it will break if
the kernel adds new types of links. Fix it by only considering data
links instead of blacklisting interface links.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
Let's merge this ASAP to avoid bug reports when using an older libcamera
version with a kernel that supports the soon-to-be-added ancillary
links.
---
 src/libcamera/media_device.cpp | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index 4df0a27fe193..0b7940182d0c 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -695,12 +695,9 @@ bool MediaDevice::populateLinks(const struct media_v2_topology &topology)
 					   (topology.ptr_links);
 
 	for (unsigned int i = 0; i < topology.num_links; ++i) {
-		/*
-		 * Skip links between entities and interfaces: we only care
-		 * about pad-2-pad links here.
-		 */
-		if ((mediaLinks[i].flags & MEDIA_LNK_FL_LINK_TYPE) ==
-		    MEDIA_LNK_FL_INTERFACE_LINK)
+		/* We only care about pad-2-pad links here. */
+		if ((mediaLinks[i].flags & MEDIA_LNK_FL_LINK_TYPE) !=
+		    MEDIA_LNK_FL_DATA_LINK)
 			continue;
 
 		/* Store references to source and sink pads in the link. */

base-commit: 294663eece8c067d268442724b969c9dfa081b0a
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list