gstreamer: Add meson devenv support

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 polluting the user registry, the GST_REGISTRY environment is also
set.

Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Nicolas Dufresne 2024-01-19 15:08:47 -05:00 committed by Laurent Pinchart
parent 81791d2cac
commit ebc396fc7a
2 changed files with 16 additions and 3 deletions

View file

@ -120,12 +120,13 @@ setting the ``LIBCAMERA_LOG_LEVELS`` environment variable:
Using GStreamer plugin Using GStreamer plugin
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
To use GStreamer plugin from source tree, set the following environment so that To use the GStreamer plugin from the source tree, use the meson ``devenv``
GStreamer can find it. This isn't necessary when libcamera is installed. command. This will create a new shell instance with the ``GST_PLUGIN_PATH``
environment set accordingly.
.. code:: .. 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 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" test it. The following pipeline will stream from the camera named "Camera 1"

View file

@ -46,3 +46,15 @@ libcamera_gst = shared_library('gstlibcamera',
install : true, install : true,
install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')), install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')),
) )
# Make 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)