[libcamera-devel] [PATCH v3 07/13] libcamera: stream: Turn StreamRole into scoped enumeration
Jacopo Mondi
jacopo at jmondi.org
Wed Oct 26 17:09:39 CEST 2022
Hi Laurent
On Mon, Oct 24, 2022 at 03:03:50AM +0300, Laurent Pinchart via libcamera-devel wrote:
> The StreamRole enum has enumerators such as 'Raw' that are too generic
> to be in the global libcamera namespace. Turn it into a scoped enum to
> avoid namespace clashes, and update users accordingly.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> include/libcamera/stream.h | 2 +-
> src/apps/lc-compliance/capture_test.cpp | 17 ++++++++++++-----
> src/gstreamer/gstlibcamerapad.cpp | 20 +++++++++++++++-----
> 3 files changed, 28 insertions(+), 11 deletions(-)
>
> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
> index efec695ad317..29235ddf0d8a 100644
> --- a/include/libcamera/stream.h
> +++ b/include/libcamera/stream.h
> @@ -62,7 +62,7 @@ private:
> StreamFormats formats_;
> };
>
> -enum StreamRole {
> +enum class StreamRole {
> Raw,
> StillCapture,
> VideoRecording,
> diff --git a/src/apps/lc-compliance/capture_test.cpp b/src/apps/lc-compliance/capture_test.cpp
> index 52578207c11f..1dcfcf92fc8c 100644
> --- a/src/apps/lc-compliance/capture_test.cpp
> +++ b/src/apps/lc-compliance/capture_test.cpp
> @@ -16,7 +16,12 @@
> using namespace libcamera;
>
> const std::vector<int> NUMREQUESTS = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };
> -const std::vector<StreamRole> ROLES = { Raw, StillCapture, VideoRecording, Viewfinder };
> +const std::vector<StreamRole> ROLES = {
> + StreamRole::Raw,
> + StreamRole::StillCapture,
> + StreamRole::VideoRecording,
> + StreamRole::Viewfinder
> +};
>
> class SingleStream : public testing::TestWithParam<std::tuple<StreamRole, int>>
> {
> @@ -54,10 +59,12 @@ void SingleStream::TearDown()
>
> std::string SingleStream::nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info)
> {
> - std::map<StreamRole, std::string> rolesMap = { { Raw, "Raw" },
> - { StillCapture, "StillCapture" },
> - { VideoRecording, "VideoRecording" },
> - { Viewfinder, "Viewfinder" } };
> + std::map<StreamRole, std::string> rolesMap = {
> + { StreamRole::Raw, "Raw" },
> + { StreamRole::StillCapture, "StillCapture" },
> + { StreamRole::VideoRecording, "VideoRecording" },
> + { StreamRole::Viewfinder, "Viewfinder" }
> + };
>
> std::string roleName = rolesMap[std::get<0>(info.param)];
> std::string numRequestsName = std::to_string(std::get<1>(info.param));
> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp
> index 87b4057ac101..9e710a479368 100644
> --- a/src/gstreamer/gstlibcamerapad.cpp
> +++ b/src/gstreamer/gstlibcamerapad.cpp
> @@ -54,7 +54,7 @@ gst_libcamera_pad_get_property(GObject *object, guint prop_id, GValue *value,
>
> switch (prop_id) {
> case PROP_STREAM_ROLE:
> - g_value_set_enum(value, self->role);
> + g_value_set_enum(value, static_cast<gint>(self->role));
> break;
> default:
> G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
> @@ -87,9 +87,19 @@ gst_libcamera_stream_role_get_type()
> {
> static GType type = 0;
> static const GEnumValue values[] = {
> - { StillCapture, "libcamera::StillCapture", "still-capture" },
> - { VideoRecording, "libcamera::VideoRecording", "video-recording" },
> - { Viewfinder, "libcamera::Viewfinder", "view-finder" },
> + {
> + static_cast<gint>(StreamRole::StillCapture),
> + "libcamera::StillCapture",
> + "still-capture",
> + }, {
> + static_cast<gint>(StreamRole::VideoRecording),
> + "libcamera::VideoRecording",
> + "video-recording",
> + }, {
> + static_cast<gint>(StreamRole::Viewfinder),
> + "libcamera::Viewfinder",
> + "view-finder",
> + },
> { 0, NULL, NULL }
> };
>
> @@ -110,7 +120,7 @@ gst_libcamera_pad_class_init(GstLibcameraPadClass *klass)
> auto *spec = g_param_spec_enum("stream-role", "Stream Role",
> "The selected stream role",
> gst_libcamera_stream_role_get_type(),
> - VideoRecording,
> + static_cast<gint>(StreamRole::VideoRecording),
> (GParamFlags)(GST_PARAM_MUTABLE_READY
> | G_PARAM_CONSTRUCT
> | G_PARAM_READWRITE
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list