Hi,
On Mon, 28 Oct 2019 at 18:22, Florent Lioult <
flo...@hihan.org> wrote:
> As long as it is unstable, keeping the GL+Video binding for gst-plugins-base in a separate project will be easier. Once stabilized however, I don't know which approach is the best. I've have a quick look at the binding for other languages, but it doesn't seem like there is a clear cut rule here. In addition, switching to a generative approach for the low-level binding could changes things a bit in this regard.
If anything, we will most likely follow what Rust does. Generating
low-level will be a major change, but the lowlevel package is non-API
- the plan is to develop it in a separate library, similarly to Rust
FFI bindings. When we get more free time or funding for it anyway!
:-\
> That being said, from a pure practical point of view, I don't see the need of separating the two bindings. Contrary to the good/bad/ugly plugins, the plugins-base is always around and makes for an essential part of GStreamer. In the same vein, having another project to store various examples doesn't seem necessary as long as the additional dependencies are kept in the test scope.
As I said, the bigger concern to date is Java dependencies not
GStreamer ones when considering whether to separate or not. So,
merging into gst1-java-core makes some sense. OTOH, the Rust bindings
are more separated than we are right now. Pros and cons to both
approaches.
> If we focus for now on the core changes I've introduced, could you give some precision on what is missing or not properly done? Beside the minor lost ClockTime problem (a merge problem, I don't even need it), I'm not sure to understand what you mean by "relying on type mapping in new mappings should be avoided". Do you mean to favor direct native calls over access to read structure? If so, how it relates to the "GstContextPtr extending GstMiniObjectPtr" usage? To ease the transition, I've trimmed down my changes by only keeping Context and NeedContextMessage and removing the Memory (saved the low-level API), Allocator and Query additions. The change set is now truly necessary and sufficient.
eg. try not to use Context in GstContextAPI, but a GstContextPtr
instead. We're trying to remove references in lowlevel to classes
elsewhere.
> Lastly, regarding my long term plans of supporting the new code, I can't give you any guarantees ;) Surely the changes made in the two projects are dearly needed and will be used for a significant duration of time. So, yes, support will be provided for this GL binding in on way or another, but not necessarily by me.
That's not that reassuring! ;-) Given that the person who ends up
having to support these things right now is usually me. OpenGL
support is on my agenda, so I'm quite happy to have a contribution
that adds it in to the core library, but a big code drop that doesn't
meet future project requirements around mapping, tests, versioning,
etc. is only partially helpful.
See also the section on contributions in the readme.
"Contributions to the library are welcomed, either to fix / enhance
current features, or bring in new ones. There is also ongoing work to
rework the lowlevel bindings.
Before opening a Pull Request please raise an issue or discuss your
contribution on the mailing list. New features must have tests,
selectively applied if targeting features in versions of GStreamer
above 1.8. All Pull Requests will be automatically tested via CI, and
all tests must pass before merging will be considered.
If you are making a large contribution to benefit a commercial
project, sponsorship of integration and support time would be
appreciated."
Thanks and best wishes,