I put a ROS2 node inside a Gstreamer element.
I see this being useful to people where gscam makes it hard to have multiple topics produced from one gstreamer pipeline, or where applications that support gstreamer as a plugin need to access ROS topics (OBS studio, gst-launch, etc).
It cross-compiles for the Raspberry Pi Zero W, and can be used to make OBS studio (web streaming software) subscribe to a ROS image topic.
The pipeline package hosts a gstreamer pipeline generated from a config yaml at launch, and exposes any GStreamer element properties it finds as sensibly named and typed ROS parameters that can be updated at runtime - This works on the rpicamsrc element to adjust H264 bit-rate and shutter speed on the fly.
This code is not production ready, but it’s at a point where I’m looking for criticism.
Specifically, I’d like to open a discussion how ROS clocks can or should be mapped to Gstreamer clocks; this gets really twisty when sim-time and accelerated playback gets involved.