[{"id":3664,"web_url":"https://patchwork.libcamera.org/comment/3664/","msgid":"<20200211192816.GC20823@pendragon.ideasonboard.com>","date":"2020-02-11T19:28:16","subject":"Re: [libcamera-devel] [PATCH v1 07/23] gst: libcamerasrc: Add\n\tcamera-name property","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Nicolas,\n\nThank you for the patch.\n\nOn Tue, Jan 28, 2020 at 10:31:54PM -0500, Nicolas Dufresne wrote:\n> From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> \n> This property will be used to select by name the camera to use.\n> \n> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> ---\n>  src/gstreamer/gstlibcamerasrc.cpp | 68 +++++++++++++++++++++++++++++++\n>  1 file changed, 68 insertions(+)\n> \n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 50bba39..74e1d7e 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -8,10 +8,17 @@\n>  \n>  #include \"gstlibcamerasrc.h\"\n>  #include \"gstlibcamerapad.h\"\n> +#include \"gstlibcamera-utils.h\"\n>  \n>  struct _GstLibcameraSrc {\n>  \tGstElement parent;\n>  \tGstPad *srcpad;\n> +\tgchar *camera_name;\n> +};\n> +\n> +enum {\n> +\tPROP_0,\n> +\tPROP_CAMERA_NAME\n>  };\n>  \n>  G_DEFINE_TYPE(GstLibcameraSrc, gst_libcamera_src, GST_TYPE_ELEMENT);\n> @@ -28,6 +35,53 @@ GstStaticPadTemplate request_src_template = {\n>  \t\"src_%s\", GST_PAD_SRC, GST_PAD_REQUEST, TEMPLATE_CAPS\n>  };\n>  \n> +static void\n> +gst_libcamera_src_set_property(GObject *object, guint prop_id,\n> +\t\t\t       const GValue *value, GParamSpec *pspec)\n> +{\n> +\tGST_OBJECT_LOCKER(object);\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(object);\n> +\n> +\tswitch (prop_id) {\n> +\tcase PROP_CAMERA_NAME:\n> +\t\tg_free (self->camera_name);\n\nExtra space after g_free.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t\tself->camera_name = g_value_dup_string(value);\n> +\t\tbreak;\n> +\tdefault:\n> +\t\tG_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);\n> +\t\tbreak;\n> +\t}\n> +}\n> +\n> +static void\n> +gst_libcamera_src_get_property(GObject *object, guint prop_id, GValue *value,\n> +\t\t\t       GParamSpec *pspec)\n> +{\n> +\tGST_OBJECT_LOCKER(object);\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(object);\n> +\n> +\tswitch (prop_id) {\n> +\tcase PROP_CAMERA_NAME:\n> +\t\tg_value_set_string(value, self->camera_name);\n> +\t\tbreak;\n> +\tdefault:\n> +\t\tG_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);\n> +\t\tbreak;\n> +\t}\n> +\n> +}\n> +\n> +static void\n> +gst_libcamera_src_finalize(GObject *object)\n> +{\n> +\tGObjectClass *klass = G_OBJECT_CLASS(gst_libcamera_src_parent_class);\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(object);\n> +\n> +\tg_free(self->camera_name);\n> +\n> +\treturn klass->finalize(object);\n> +}\n> +\n>  static void\n>  gst_libcamera_src_init(GstLibcameraSrc *self)\n>  {\n> @@ -41,6 +95,12 @@ static void\n>  gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>  {\n>  \tGstElementClass *element_class = (GstElementClass *)klass;\n> +\tGObjectClass *object_class = (GObjectClass *)klass;\n> +\tGParamSpec *spec;\n> +\n> +\tobject_class->set_property = gst_libcamera_src_set_property;\n> +\tobject_class->get_property = gst_libcamera_src_get_property;\n> +\tobject_class->finalize = gst_libcamera_src_finalize;\n>  \n>  \tgst_element_class_set_metadata(element_class,\n>  \t\t\t\t       \"LibCamera Source\", \"Source/Video\",\n> @@ -52,4 +112,12 @@ gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>  \tgst_element_class_add_static_pad_template_with_gtype(element_class,\n>  \t\t\t\t\t\t\t     &request_src_template,\n>  \t\t\t\t\t\t\t     GST_TYPE_LIBCAMERA_PAD);\n> +\n> +\tspec = g_param_spec_string(\"camera-name\", \"Camera Name\",\n> +\t\t\t\t   \"Select by name which camera to use.\", nullptr,\n> +\t\t\t\t   (GParamFlags)(GST_PARAM_MUTABLE_READY\n> +\t\t\t\t\t   | G_PARAM_CONSTRUCT\n> +\t\t\t\t\t   | G_PARAM_READWRITE\n> +\t\t\t\t\t   | G_PARAM_STATIC_STRINGS));\n> +\tg_object_class_install_property(object_class, PROP_CAMERA_NAME, spec);\n>  }","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6FFE160F3C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 11 Feb 2020 20:28:32 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BA99B9DA;\n\tTue, 11 Feb 2020 20:28:31 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1581449312;\n\tbh=IUXZPrBUns7TatPFMwjfsP+xZZVtAV6Wp8BCQQHVHDs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Ge4Ln7mVPuKSRAWegX+tKPlXHzbD6lJbnPccHYDndQ9R+DUnvkPTtLlDsKPX5fLXr\n\tRWVQckj2ctUC0LuE1C47l5O+ZTHX6T8bVNXvZ2WAmvT1vhC4h40NuTgkE8zWgKnlHE\n\tDB0xTW2G+DA2RqsGjlMexzlqms++Ehw62i4w3ZDs=","Date":"Tue, 11 Feb 2020 21:28:16 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Nicolas Dufresne <nicolas@ndufresne.ca>","Cc":"libcamera-devel@lists.libcamera.org,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Message-ID":"<20200211192816.GC20823@pendragon.ideasonboard.com>","References":"<20200129033210.278800-1-nicolas@ndufresne.ca>\n\t<20200129033210.278800-8-nicolas@ndufresne.ca>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20200129033210.278800-8-nicolas@ndufresne.ca>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v1 07/23] gst: libcamerasrc: Add\n\tcamera-name property","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 11 Feb 2020 19:28:32 -0000"}}]