Related |
show
-
[libcamera-devel,v1,00/23] GStreamer Element for libcamera
-
[libcamera-devel,v1,01/23] Add GStreamer plugin and element skeleton
-
[libcamera-devel,v1,02/23] gst: Add utility to convert StreamFormats to GstCaps
-
[libcamera-devel,v1,03/23] gst: Add initial device provider
-
[libcamera-devel,v1,04/23] gst: utils: Add a macro to use a GMutexLocker
-
[libcamera-devel,v1,05/23] gst: Add pads to the source
-
[libcamera-devel,v1,06/23] gst: libcamerasrc: Allocate and add static pad
-
[libcamera-devel,v1,07/23] gst: libcamerasrc: Add camera-name property
-
[libcamera-devel,v1,08/23] gst: libcamerasrc: Add a debug category
-
[libcamera-devel,v1,09/23] gst: libcamerasrc: Implement selection and acquisition
-
[libcamera-devel,v1,10/23] gst: libcamerasrc: Start/Stop the streaming thread
-
[libcamera-devel,v1,11/23] gst: libcamerapad: Add a method to access the role
-
[libcamera-devel,v1,12/23] gst: libcamerasrc: Store the srcpad in a vector
-
[libcamera-devel,v1,13/23] gst: libcamerasrc: Send stream start event
-
[libcamera-devel,v1,14/23] gst: utils: Add StreamConfiguration helpers
-
[libcamera-devel,v1,15/23] gst: libcamerasrc: Implement minimal caps negotiation
-
[libcamera-devel,v1,16/23] gst: libcamerasrc: Push segment event
-
[libcamera-devel,v1,17/23] gst: Add a pool and an allocator implementation
-
[libcamera-devel,v1,18/23] gst: libcamerapad: Allow storing a pool
-
[libcamera-devel,v1,19/23] gst: libcamerasrc: Allocate and release buffers
-
[libcamera-devel,v1,20/23] gst: Add getters for Stream and FrameBuffer
-
[libcamera-devel,v1,21/23] gst: pad: Add method to store retrieve pending buffers
-
[libcamera-devel,v1,22/23] gst: libcamerasrc: Implement initial streaming
-
[libcamera-devel,v1,23/23] gst: libcamerasrc: Add a TODO comment
|
From: Nicolas Dufresne <nicolas.dufresne@collabora.com> This patchset introduces two GStreamer features for libcamera. A GstDeviceProvider that allow enumerating the cameras and a libcamerasrc element the allow streaming from a selected camera. This is an early implementation that is not feature complete. It is designed to support multiple streams even though it currently only allow one srcpad. The goal of this submission is to get an inital element merged so that further improvement can happen incrementally. To test these features, you'll need GStreamer 1.16 (downgrade might be possible). To get the list of cameras you can run the following. Regression exist in the monitor of GStreamer 1.16.2 that may cause a crash, and also in master that may show nothing. This will be addressed in later release of GStreamer. gst-device-monitor-1.0 Video/Source To stream from a cameram, you can use the following pipeline: gst-launch-1.0 libcamerasrc ! videoconvert ! autovideosink Nicolas Dufresne (23): Add GStreamer plugin and element skeleton gst: Add utility to convert StreamFormats to GstCaps gst: Add initial device provider gst: utils: Add a macro to use a GMutexLocker gst: Add pads to the source gst: libcamerasrc: Allocate and add static pad gst: libcamerasrc: Add camera-name property gst: libcamerasrc: Add a debug category gst: libcamerasrc: Implement selection and acquisition gst: libcamerasrc: Start/Stop the streaming thread gst: libcamerapad: Add a method to access the role gst: libcamerasrc: Store the srcpad in a vector gst: libcamerasrc: Send stream start event gst: utils: Add StreamConfiguration helpers gst: libcamerasrc: Implement minimal caps negotiation gst: libcamerasrc: Push segment event gst: Add a pool and an allocator implementation gst: libcamerapad: Allow storing a pool gst: libcamerasrc: Allocate and release buffers gst: Add getters for Stream and FrameBuffer gst: pad: Add method to store retrieve pending buffers gst: libcamerasrc: Implement initial streaming gst: libcamerasrc: Add a TODO comment meson_options.txt | 5 + src/gstreamer/gstlibcamera-utils.cpp | 163 +++++++ src/gstreamer/gstlibcamera-utils.h | 23 + src/gstreamer/gstlibcamera.c | 27 + src/gstreamer/gstlibcameraallocator.cpp | 249 ++++++++++ src/gstreamer/gstlibcameraallocator.h | 31 ++ src/gstreamer/gstlibcamerapad.cpp | 182 +++++++ src/gstreamer/gstlibcamerapad.h | 35 ++ src/gstreamer/gstlibcamerapool.cpp | 129 +++++ src/gstreamer/gstlibcamerapool.h | 34 ++ src/gstreamer/gstlibcameraprovider.cpp | 227 +++++++++ src/gstreamer/gstlibcameraprovider.h | 23 + src/gstreamer/gstlibcamerasrc.cpp | 622 ++++++++++++++++++++++++ src/gstreamer/gstlibcamerasrc.h | 22 + src/gstreamer/meson.build | 31 ++ src/meson.build | 2 + 16 files changed, 1805 insertions(+) create mode 100644 src/gstreamer/gstlibcamera-utils.cpp create mode 100644 src/gstreamer/gstlibcamera-utils.h create mode 100644 src/gstreamer/gstlibcamera.c create mode 100644 src/gstreamer/gstlibcameraallocator.cpp create mode 100644 src/gstreamer/gstlibcameraallocator.h create mode 100644 src/gstreamer/gstlibcamerapad.cpp create mode 100644 src/gstreamer/gstlibcamerapad.h create mode 100644 src/gstreamer/gstlibcamerapool.cpp create mode 100644 src/gstreamer/gstlibcamerapool.h create mode 100644 src/gstreamer/gstlibcameraprovider.cpp create mode 100644 src/gstreamer/gstlibcameraprovider.h create mode 100644 src/gstreamer/gstlibcamerasrc.cpp create mode 100644 src/gstreamer/gstlibcamerasrc.h create mode 100644 src/gstreamer/meson.build