[{"id":3879,"web_url":"https://patchwork.libcamera.org/comment/3879/","msgid":"<20200229151631.GZ18738@pendragon.ideasonboard.com>","date":"2020-02-29T15:16:31","subject":"Re: [libcamera-devel] [PATCH v2 00/27] GStreamer Element for\n\tlibcamera","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Nicolas,\n\nOn Thu, Feb 27, 2020 at 03:03:40PM -0500, Nicolas Dufresne wrote:\n> This patchset introduces two GStreamer features for libcamera. A\n> GstDeviceProvider that allow enumerating the cameras and a libcamerasrc element\n> the allow streaming from a selected camera.\n\nGreat work ! Thanks a lot again, it's very nice to see the gstreamer\nelement nearing completion.\n\n> This is an early implementation that is not feature complete. It is designed to\n> support multiple streams even though it currently only allow one srcpad. The goal\n> of this submission is to get an inital element merged so that further\n> improvement can happen incrementally.\n> \n> To test these features, you'll need GStreamer 1.16 (downgrade might be\n\nIs this still true ?\n\n> possible). To get the list of cameras you can run the following. Regression\n> exist in the monitor of GStreamer 1.16.2 that may cause a crash, and also in\n> master that may show nothing. This will be addressed in later release of\n> GStreamer.\n> \n>   gst-device-monitor-1.0 Video/Source\n> \n> To stream from a cameram, you can use the following pipeline:\n> \n>   gst-launch-1.0 libcamerasrc ! videoconvert ! autovideosink\n\nWould you be able to add this to a README.md in the gstreamer directory\n? Maybe with just a bit of additional information to tell how to select\na camera ? And with any additional design documentation that you think\nwould be useful for the future (for instance briefly explaining the\nrationale behind some of the design decisions) to help other developers\n?\n\n> Changes since v1:\n>   - Fixed review comments\n>   - Use a C++ class for glib mutex scoped locker\n>   - Fixed a potential deadlock on exhausted buffer pool\n>   - Minimum GStreamer requirement now set to 1.14\n> \n> Jakub Adam (2):\n>   gst: utils: Factor-out the task resume helper\n>   gst: libcamerasrc: Prevent src task deadlock on exhausted buffer pool\n> \n> Nicolas Dufresne (25):\n>   Add GStreamer plugin and element skeleton\n>   gst: Add utility to convert StreamFormats to GstCaps\n>   gst: Add initial device provider\n>   gst: utils: Add simple scoped lockers for GMutex and GRectMutex\n>   gst: Add pads to the source\n>   gst: libcamerasrc: Allocate and add static pad\n>   gst: libcamerasrc: Add camera-name property\n>   gst: libcamerasrc: Add a debug category\n>   gst: libcamerasrc: Implement selection and acquisition\n>   gst: libcamerasrc: Add a task for the streaming thread\n>   gst: libcamerapad: Add a method to access the role\n>   gst: libcamerasrc: Store the srcpad in a vector\n>   gst: libcamerasrc: Send stream start event\n>   gst: utils: Add StreamConfiguration helpers\n>   gst: libcamerasrc: Implement minimal caps negotiation\n>   gst: libcamerasrc: Push segment event\n>   gst: Add a pool and an allocator implementation\n>   gst: libcamerapad: Allow storing a pool\n>   gst: libcamerasrc: Allocate and release buffers\n>   gst: Add getters for Stream and FrameBuffer\n>   gst: pad: Add method to store retrieve pending buffers\n>   gst: libcamerasrc: Implement initial streaming\n>   gst: libcamerasrc: Implement timestamp support\n>   gst: libcamerasrc: Add a TODO comment\n>   gst: Reduce GStreamer requirement to 1.14\n> \n>  meson_options.txt                       |   5 +\n>  src/gstreamer/gstlibcamera-utils.cpp    | 173 +++++++\n>  src/gstreamer/gstlibcamera-utils.h      |  73 +++\n>  src/gstreamer/gstlibcamera.c            |  27 +\n>  src/gstreamer/gstlibcameraallocator.cpp | 252 +++++++++\n>  src/gstreamer/gstlibcameraallocator.h   |  31 ++\n>  src/gstreamer/gstlibcamerapad.cpp       | 197 +++++++\n>  src/gstreamer/gstlibcamerapad.h         |  37 ++\n>  src/gstreamer/gstlibcamerapool.cpp      | 145 ++++++\n>  src/gstreamer/gstlibcamerapool.h        |  39 ++\n>  src/gstreamer/gstlibcameraprovider.cpp  | 235 +++++++++\n>  src/gstreamer/gstlibcameraprovider.h    |  23 +\n>  src/gstreamer/gstlibcamerasrc.cpp       | 654 ++++++++++++++++++++++++\n>  src/gstreamer/gstlibcamerasrc.h         |  22 +\n>  src/gstreamer/meson.build               |  30 ++\n>  src/meson.build                         |   2 +\n>  16 files changed, 1945 insertions(+)\n>  create mode 100644 src/gstreamer/gstlibcamera-utils.cpp\n>  create mode 100644 src/gstreamer/gstlibcamera-utils.h\n>  create mode 100644 src/gstreamer/gstlibcamera.c\n>  create mode 100644 src/gstreamer/gstlibcameraallocator.cpp\n>  create mode 100644 src/gstreamer/gstlibcameraallocator.h\n>  create mode 100644 src/gstreamer/gstlibcamerapad.cpp\n>  create mode 100644 src/gstreamer/gstlibcamerapad.h\n>  create mode 100644 src/gstreamer/gstlibcamerapool.cpp\n>  create mode 100644 src/gstreamer/gstlibcamerapool.h\n>  create mode 100644 src/gstreamer/gstlibcameraprovider.cpp\n>  create mode 100644 src/gstreamer/gstlibcameraprovider.h\n>  create mode 100644 src/gstreamer/gstlibcamerasrc.cpp\n>  create mode 100644 src/gstreamer/gstlibcamerasrc.h\n>  create mode 100644 src/gstreamer/meson.build","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 B64E162689\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Feb 2020 16:16:54 +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 2943233E;\n\tSat, 29 Feb 2020 16:16:54 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1582989414;\n\tbh=koapvGiQ4WzHO1X9QmYGg/XXic6beF0I2LesmxZrLPE=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=CeWWUOMPEfee3/VcfKhNqvX0M8hOnbC3U49O1xG1PNtYw27feve+2e6O5NY0P0l5K\n\t+9nUK7cQv+xrPbmg2+izq1gDYcBVugssqhsqngnHzpVKc45OqV2p1lt4oC1MwRCNMq\n\t2ldR/dRjG59LwG7tF7lJjPBV+d6MZfT+yK1TrUco=","Date":"Sat, 29 Feb 2020 17:16:31 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200229151631.GZ18738@pendragon.ideasonboard.com>","References":"<20200227200407.490616-1-nicolas.dufresne@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20200227200407.490616-1-nicolas.dufresne@collabora.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v2 00/27] GStreamer Element for\n\tlibcamera","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":"Sat, 29 Feb 2020 15:16:54 -0000"}}]