[libcamera-devel] [PATCH v2 1/2] gstreamer: Add meson devenv support

Nicolas Dufresne nicolas at ndufresne.ca
Fri Jan 19 21:08:47 CET 2024


From: Nicolas Dufresne <nicolas.dufresne at collabora.com>

This change to the build system will prepend the plugin build directory
to GST_PLUGIN_PATH environment. This makes the built plugin visible to
GStreamer inside meson devenv enabling uninstalled testing. In order to avoid
pulluting the user registry, the GST_REGISTRY environement is also set.

Signed-off-by: Nicolas Dufresne <nicolas.dufresne at collabora.com>
---
Changes in V2:
  - Use gst_ prefix for the path and env
  - Don't call fs.parent twice
  - Set GST_REGISTRY
  - Update the documentation

 README.rst                |  7 ++++---
 src/gstreamer/meson.build | 11 +++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/README.rst b/README.rst
index 315738ee..a7e0561f 100644
--- a/README.rst
+++ b/README.rst
@@ -120,12 +120,13 @@ setting the ``LIBCAMERA_LOG_LEVELS`` environment variable:
 Using GStreamer plugin
 ~~~~~~~~~~~~~~~~~~~~~~
 
-To use GStreamer plugin from source tree, set the following environment so that
-GStreamer can find it. This isn't necessary when libcamera is installed.
+To use GStreamer plugin from source tree, use meson ``devenv`` command.
+This will create a new shell instance with ``GST_PLUGIN_PATH`` environment set
+accordingly.
 
 .. code::
 
-  export GST_PLUGIN_PATH=$(pwd)/build/src/gstreamer
+  meson devenv -C build
 
 The debugging tool ``gst-launch-1.0`` can be used to construct a pipeline and
 test it. The following pipeline will stream from the camera named "Camera 1"
diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
index 20784b71..1536fd23 100644
--- a/src/gstreamer/meson.build
+++ b/src/gstreamer/meson.build
@@ -46,3 +46,14 @@ libcamera_gst = shared_library('gstlibcamera',
     install : true,
     install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')),
 )
+
+# Makes the plugin visible to GStreamer inside meson devenv
+fs = import('fs')
+gst_plugin_path = fs.parent(libcamera_gst.full_path())
+
+gst_env = environment()
+gst_env.prepend('GST_PLUGIN_PATH', gst_plugin_path)
+# Avoid polluting the system registry
+gst_env.set('GST_REGISTRY', gst_plugin_path / 'registry.data')
+
+meson.add_devenv(gst_env)
-- 
2.43.0



More information about the libcamera-devel mailing list