summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-02-26 16:02:40 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-03-15 12:55:09 +0200
commite8f01b37e809bd7b101e6528b59c314ea3268068 (patch)
treecb65acccf7767b38de9610ae12c52b8ec8d5f5ce
parent0d2ad0cd8424e1b418cbb753bae100efc1b3d669 (diff)
libcamera: v4l2_subdevice: Replace Routing::toString() with operator<<()
The main (and only at the moment) use case for the Routing::toString() function is to print a representation of the routing table in a log message. The function is implemented using an std::stringstream, and the returned std::string is then inserted into an std::ostream. This is inefficient. Replace the function with a specialization of the operator<<() and use it in the caller. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--include/libcamera/internal/v4l2_subdevice.h7
-rw-r--r--src/libcamera/pipeline/simple/simple.cpp2
-rw-r--r--src/libcamera/v4l2_subdevice.cpp29
3 files changed, 18 insertions, 20 deletions
diff --git a/include/libcamera/internal/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h
index 6cd36730..2939dc24 100644
--- a/include/libcamera/internal/v4l2_subdevice.h
+++ b/include/libcamera/internal/v4l2_subdevice.h
@@ -95,11 +95,7 @@ public:
unsigned int stream;
};
- class Routing : public std::vector<struct v4l2_subdev_route>
- {
- public:
- std::string toString() const;
- };
+ using Routing = std::vector<struct v4l2_subdev_route>;
explicit V4L2Subdevice(const MediaEntity *entity);
~V4L2Subdevice();
@@ -178,5 +174,6 @@ static inline bool operator!=(const V4L2Subdevice::Stream &lhs,
}
std::ostream &operator<<(std::ostream &out, const V4L2Subdevice::Stream &stream);
+std::ostream &operator<<(std::ostream &out, const V4L2Subdevice::Routing &routing);
} /* namespace libcamera */
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 3d042496..feea26fd 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -1388,7 +1388,7 @@ int SimplePipelineHandler::resetRoutingTable(V4L2Subdevice *subdev)
LOG(SimplePipeline, Debug)
<< "Routing table of " << subdev->deviceNode()
- << " reset to " << routing.toString();
+ << " reset to " << routing;
return 0;
}
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index cc079425..deef681e 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -899,30 +899,31 @@ std::ostream &operator<<(std::ostream &out, const V4L2Subdevice::Stream &stream)
}
/**
- * \class V4L2Subdevice::Routing
+ * \typedef V4L2Subdevice::Routing
* \brief V4L2 subdevice routing table
*
* This class stores a subdevice routing table as a vector of routes.
*/
/**
- * \brief Assemble and return a string describing the routing table
- * \return A string describing the routing table
+ * \brief Insert a text representation of a V4L2Subdevice::Routing into an
+ * output stream
+ * \param[in] out The output stream
+ * \param[in] routing The V4L2Subdevice::Routing
+ * \return The output stream \a out
*/
-std::string V4L2Subdevice::Routing::toString() const
+std::ostream &operator<<(std::ostream &out, const V4L2Subdevice::Routing &routing)
{
- std::stringstream routing;
-
- for (const auto &[i, route] : utils::enumerate(*this)) {
- routing << "[" << i << "] "
- << route.sink_pad << "/" << route.sink_stream << " -> "
- << route.source_pad << "/" << route.source_stream
- << " (" << utils::hex(route.flags) << ")";
- if (i != size() - 1)
- routing << ", ";
+ for (const auto &[i, route] : utils::enumerate(routing)) {
+ out << "[" << i << "] "
+ << route.sink_pad << "/" << route.sink_stream << " -> "
+ << route.source_pad << "/" << route.source_stream
+ << " (" << utils::hex(route.flags) << ")";
+ if (i != routing.size() - 1)
+ out << ", ";
}
- return routing.str();
+ return out;
}
/**