[libcamera-devel,v2] libcamera: pipeline: simple: walk the pipeline by following the first link
diff mbox series

Message ID 20210303152051.14172-1-dafna.hirschfeld@collabora.com
State Accepted
Headers show
Series
  • [libcamera-devel,v2] libcamera: pipeline: simple: walk the pipeline by following the first link
Related show

Commit Message

Dafna Hirschfeld March 3, 2021, 3:20 p.m. UTC
When walking the pipeline, follow the first link of each
source pad.
This patch removes a redundant condition for choosing the link:

"(link->flags() & MEDIA_LNK_FL_ENABLED) ||
 !(link->flags() & MEDIA_LNK_FL_IMMUTABLE)"

since it always returns true.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
Changes from v1: s/pipline/pipeline/ on the subject line.

 src/libcamera/pipeline/simple/simple.cpp | 23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 7fba495c..1aeabcf7 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -279,12 +279,17 @@  SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
 		if (source->function() == MEDIA_ENT_F_IO_V4L)
 			break;
 
-		/* Use the first output pad that has links. */
+		/*
+		 * Use the first output pad that has links and follow its first
+		 * link.
+		 */
 		MediaPad *sourcePad = nullptr;
+		MediaLink *sourceLink = nullptr;
 		for (MediaPad *pad : source->pads()) {
 			if ((pad->flags() & MEDIA_PAD_FL_SOURCE) &&
 			    !pad->links().empty()) {
 				sourcePad = pad;
+				sourceLink = pad->links().front();
 				break;
 			}
 		}
@@ -292,22 +297,6 @@  SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
 		if (!sourcePad)
 			return;
 
-		/*
-		 * Use the first link that is enabled or can be enabled (not
-		 * immutable).
-		 */
-		MediaLink *sourceLink = nullptr;
-		for (MediaLink *link : sourcePad->links()) {
-			if ((link->flags() & MEDIA_LNK_FL_ENABLED) ||
-			    !(link->flags() & MEDIA_LNK_FL_IMMUTABLE)) {
-				sourceLink = link;
-				break;
-			}
-		}
-
-		if (!sourceLink)
-			return;
-
 		entities_.push_back({ source, sourceLink });
 
 		source = sourceLink->sink()->entity();