[libcamera-devel] [PATCH v1 00/23] GStreamer Element for libcamera
Nicolas Dufresne
nicolas at ndufresne.ca
Wed Jan 29 04:31:47 CET 2020
From: Nicolas Dufresne <nicolas.dufresne at 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
--
2.24.1
More information about the libcamera-devel
mailing list