I have developed a GStreamer plugin to support Ethernet cameras compliant with the GenICam standard. The majority of the code is written in plain C and adheres to GStreamer development guidelines. However, a small portion of the implementation requires C++ due to the GenICam API, which makes extensive use of advanced C++ features such as inheritance, templates, and exceptions.
I would greatly appreciate your guidance on how to structure the plugin for potential acceptance by the GStreamer community.
C++ Integration:
How should the C++ portion of the code be incorporated? Should it be built as a separate library and placed in the lib directory as an extension, or should it be included directly with the plugin?
Header Management:
What is the recommended approach for handling the GenICam-provided headers within the GStreamer ecosystem?
As I have no prior experience with the upstream process for GStreamer plugins, any advice or best practices you can share would be highly appreciated.
Libcamera is indeed an excellent example, and I appreciate you pointing it out. However, I couldn’t find the mentioned plugin in the official GStreamer repositories. Since Libcamera is an independent project with its own repositories, it has the flexibility to maintain and propagate its plugin separately.
In my case, my goal is to upstream a GenICam-based plugin directly into the GStreamer project. From what I understand, GStreamer plugins both good established and bad are typically expected to be written in plain C. If there has been any change in GStreamer’s policy regarding the use of C++ in plugin development, I would be grateful if you could clarify.
Thanks again for your input, and I look forward to any further guidance you can provide.
Hello, I’m not affiliated with the gstreamer project and have never submitted any code or anything. But I do know that there is C++ code in the official repo, for example under gst-plugins-bad for the DirectX plugins: d3d11 and d3d12. I also know these plugins are distributed in the official windows installer. So, not trying to speak for the other replier but I think he meant that you can submit C++ code no problem?
We accept plugins in Rust (gst-plugins-rs) and in both C and C++ in the monorepo. My plan has always been to bring back the libcamerasrc plugin into GStreamer, once libcamera have a true stable API.
For genicam, a bigger focus on giving app access to the full camera configuration seems key. libcamerasrc have had a bigger focus on multistream.