Message ID | 20221124025133.17875-2-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Laurent On Thu, Nov 24, 2022 at 04:51:25AM +0200, Laurent Pinchart via libcamera-devel wrote: > libcamera prints stream role values in log messages. To be more > user-friendly, add a specialization of operator<<() to print the role > name as a string instead of a numerical value. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Thanks j > --- > include/libcamera/stream.h | 3 +++ > src/libcamera/stream.cpp | 19 +++++++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h > index f0ae7e62e0a3..efec695ad317 100644 > --- a/include/libcamera/stream.h > +++ b/include/libcamera/stream.h > @@ -9,6 +9,7 @@ > > #include <map> > #include <memory> > +#include <ostream> > #include <string> > #include <vector> > > @@ -70,6 +71,8 @@ enum StreamRole { > > using StreamRoles = std::vector<StreamRole>; > > +std::ostream &operator<<(std::ostream &out, StreamRole role); > + > class Stream > { > public: > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp > index 686e693bccba..67f308157fbf 100644 > --- a/src/libcamera/stream.cpp > +++ b/src/libcamera/stream.cpp > @@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const > * acceptable. > */ > > +/** > + * \brief Insert a text representation of a StreamRole into an output stream > + * \param[in] out The output stream > + * \param[in] role The StreamRole > + * \return The output stream \a out > + */ > +std::ostream &operator<<(std::ostream &out, StreamRole role) > +{ > + static constexpr std::array<const char *, 4> names{ > + "Raw", > + "StillCapture", > + "VideoRecording", > + "Viewfinder", > + }; > + > + out << names[static_cast<std::underlying_type_t<StreamRole>>(role)]; > + return out; > +} > + > /** > * \typedef StreamRoles > * \brief A vector of StreamRole > -- > Regards, > > Laurent Pinchart >
diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h index f0ae7e62e0a3..efec695ad317 100644 --- a/include/libcamera/stream.h +++ b/include/libcamera/stream.h @@ -9,6 +9,7 @@ #include <map> #include <memory> +#include <ostream> #include <string> #include <vector> @@ -70,6 +71,8 @@ enum StreamRole { using StreamRoles = std::vector<StreamRole>; +std::ostream &operator<<(std::ostream &out, StreamRole role); + class Stream { public: diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index 686e693bccba..67f308157fbf 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const * acceptable. */ +/** + * \brief Insert a text representation of a StreamRole into an output stream + * \param[in] out The output stream + * \param[in] role The StreamRole + * \return The output stream \a out + */ +std::ostream &operator<<(std::ostream &out, StreamRole role) +{ + static constexpr std::array<const char *, 4> names{ + "Raw", + "StillCapture", + "VideoRecording", + "Viewfinder", + }; + + out << names[static_cast<std::underlying_type_t<StreamRole>>(role)]; + return out; +} + /** * \typedef StreamRoles * \brief A vector of StreamRole