Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ndisink compatible with gstreamer 1.14.5 #77

Open
blokfyuh opened this issue Oct 8, 2021 · 7 comments
Open

Make ndisink compatible with gstreamer 1.14.5 #77

blokfyuh opened this issue Oct 8, 2021 · 7 comments

Comments

@blokfyuh
Copy link

blokfyuh commented Oct 8, 2021

Hello guys,

Would it possible to make ndisink (and its companion ndisinkcombiner) compatible with gst 1.14.5 ?

I tried to tweak Cargo.toml to remove the version assertions in the [features] block, but it complains about some missing AggregatorPad and Aggregator... I don't know if there are others incompatibilities.
Would it be feasible at all ?

I'm stuck because I'm using Nvidia Jetson Nano, and it's strongly discouraged to upgrade Gstreamer version. Their support says that a lot of stability issues could appear as all Nvidia's proprietary softwares are only tested against Gstreamer 1.14.5.

What do you think ?

@sdroege
Copy link
Contributor

sdroege commented Oct 8, 2021

Would it be feasible at all ?

With a lot of effort, probably. The combiner uses various aggregator APIs that are only available since 1.18 and not using these APIs complicates things considerably.

It would be possible to build a copy of newer aggregator/etc as part of the plugin when targetting older GStreamer versions if someone wants to bother setting up things accordingly. The fallbackswitch plugin is doing something like that. It's not beautiful but might also be sufficient here.

I'm stuck because I'm using Nvidia Jetson Nano, and it's strongly discouraged to upgrade Gstreamer version. Their support says that a lot of stability issues could appear as all Nvidia's proprietary softwares are only tested against Gstreamer 1.14.5.

The joys of proprietary platforms :)

@blokfyuh
Copy link
Author

blokfyuh commented Oct 8, 2021

Hi @sdroege,

Thanks for the quick reply.

It would be possible to build a copy of newer aggregator/etc as part of the plugin when targetting older GStreamer versions if someone wants to bother setting up things accordingly. The fallbackswitch plugin is doing something like that. It's not beautiful but might also be sufficient here.

Would you mind guiding me on this part ?

From what I understood: You have a base folder in the fallbackswitch plugin, where you copied a Gstreamer 1.18.0 gstaggregator version. Then you define a specific build process in the build.rs file, where you point to the newer aggregator implem. After that, you define your Rust wrapper classes using this newer aggreg version... And voilà... ?
Am I completely lost ?

Let's say, I copy your fallbackswitch's base folder and the build.rs file, then I replace every "Fallback" occurrences by "NDI" (for namespace purposes), and I paste them into the ndi plugin folder. Should it work as a drop-in ? Or will it be way more complicated ?

Sorry for the naive questions, but I'm not fluent in Rust, so I try to figure it out on the fly.

Thanks.

@sdroege
Copy link
Contributor

sdroege commented Oct 9, 2021

Yes that's basically all. The tricky part is to make sure that it only uses that copy if older GStreamer versions are targetted and otherwise use the one from GStreamer directly.

Give it a try :)

@blokfyuh
Copy link
Author

Thanks @sdroege. I'll give it a try.

Would you be interested in a PR about that ? To make ndisink more accessible ?
Or it's not something you want upstream anyway ?

@sdroege
Copy link
Contributor

sdroege commented Oct 12, 2021

Something for @samuvlad to answer, I guess. I don't mind either way as long as someone else makes sure to keep it up to date.

@samuvlad
Copy link
Contributor

Hello.

At the moment this plugin is not a priority for the company, so I can't dedicate too much time to it.

Personally I'm very interested in this project, but I don't have much experience in Gstreamer and I'm starting with Rust.

I'm very sorry, but I can't commit to actively maintain this project.

In the next weeks/months I will try to improve my Gstreamer, Rust and NDI skills to be able to maintain and improve the project.

@michaelgruner
Copy link

michaelgruner commented Oct 13, 2021

Hey @sdroege do you mind taking a look at #78? It adds a sink-v1_14 feature that backports the aggregator locally, as the fallback switch does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants