query/set parameters/controls from GST pipeline

Nicolas Dufresne nicolas at ndufresne.ca
Tue Mar 5 19:31:22 CET 2024


Le mardi 05 mars 2024 à 09:27 -0800, Joel Winarske a écrit :
> 
> Hi Kieran,
> 
> > > I see this commit referenced from Umang Jain's slide deck:
> > > https://gitlab.collabora.com/nicolas/libcamera/-/commit/83d67744
> > 
> > I think we're still waiting for something like that to get posted.
> > 
> > Ideally based on some autogeneration from the control definitions yaml
> > file perhaps.
> > 
> 
> 
> I can assist with building a cpp tool that transforms src/libcamera/control_ids.yaml into src/gstreamer/gstlibcamera-controls*.

That would be more then welcome !

>  
> > > I'm looking at Pipewire use cases.
> > 
> > I'm not sure if that helps Pipewire though as I think PW uses the
> > libcamera API directly?
> > 
> > Pipewire could probably be more suited to reporting controls through a
> > more introspection type handling and expose those based on their type
> > and information in the ControlInfo that it can identify at runtime?
> > 
> 
> 
> Consider this pipeline:
> 
>     gst-launch-1.0 libcamerasrc ! 'video/x-raw,width=640,height=360' ! queue leaky=downstream max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! pipewiresink stream-properties="p,node.description=camera_out,node.name=camera_out" mode=provide sync=false
> 
> * It represents an input node on a PipeWire Helvum graph.
> * It's a standalone process.
> * Control for this pipeline should cover libcamerasrc (setup/controls/properties) and the pipeline itself, allowing runtime adjustments.
> 
> The gaps I'm interested in are:
> * passing parameters back to libcamerasrc to properly configure libcamerasrc from a GST pipeline instance.
> * iterate get/set libcamerasrc properties at runtime from the same code that controls the GST pipeline instance.
> * Enabling some form of node control directly in Helvum.  https://gitlab.freedesktop.org/pipewire/helvum

This is a different approach from the upstream pipewire approach. It will
certainly yield higher latency, but then you got a more usable buffer lifetime
policy. Let us know the outcome for the "node control", this is still an open
question in regard to the in-pipewire libcamerasrc node. There was also open
questions upon if a node control can cause the number of ports to dynamically
change.

> 
> Cheers,
> Joel
> 



More information about the libcamera-devel mailing list