exeldro / obs-source-clone

GNU General Public License v2.0
120 stars 6 forks source link

Certain filters don't work with Source Clone. #1

Open ScottVordem opened 1 year ago

ScottVordem commented 1 year ago

Hello, There are some filters I want to use on a certain source where they don't work, so I got this thinking I will be able to use them on that source.

Come to find out that Source Copy does not seem to support those filters either and I am confused as to why.

I am not sure if this is a bug or not, but Source copy is missing the "Audio/Video Filters" and instead just says "Audio Filters". The filters I am trying to use work on other sources, but not Source Copy and I think this might be the reason why.

I have provided pictures to help clarify this:

This is the Video Capture Device source and I circled in red on the differences between this and Source Copy. The filters in this one are what I want to use on source copy, but can't because they won't get placed there. They show up in the list, but they simply don't appear like this. image

Here is Source Copy. Note the "Audio/Video" part is not present, just "Audio Filters". The three filters in the picture above simply won't appear there, like OBS is refusing to add them. It is only on Source Copy these don't work. image

Again, I am not sure if this is a bug, or I am missing something. I am on Windows 10, latest version and OBS 29.0.0.

exeldro commented 1 year ago

In OBS you have async sources that can have more types of filters. Source Clone is not an async source.

YorVeX commented 10 months ago

Could we have an async mirror source added as a new feature to this plugin? That would be really nice ☺️

exeldro commented 10 months ago

With not async video you can take the output from a source and put that in the clone. For async sources you need to fill the async video buffer, but there is now api to get the async buffer from a source in OBS, so the async clone will always be behind on the original source. If you want it to be able to use teleport, I would suggest that is better to make changes in teleport to allow it to support not async sources.

YorVeX commented 10 months ago

If you want it to be able to use teleport, I would suggest that is better to make changes in teleport to allow it to support not async sources.

The Teleport dev wants to keep the plugin as simple as possible by all means, he already told me he won't do that, implementing (async) filters in the first place is something he already regrets - and there don't seem to be many other people with Go knowledge willing to work on the plugin. And I totally agree with him and regret implemeting it for Beam just the same, 14 changed files with 3,000 lines of code changed only for the async filter implementation are now forever bloating previously simple and sleek code - that's not even all of it, there were also additional fix commits after that.

I will rather shoot myself in the foot than in addition to this mess now implementing the (to me) weird hack that NDI implemented to have a sync filter, with all that alien texture fiddling and output attaching using undocumented (at least they're not part of the API reference) functions that I have no clue about what the heck they're doing.

With not async video you can take the output from a source and put that in the clone. For async sources you need to fill the async video buffer, but there is now api to get the async buffer from a source in OBS, so the async clone will always be behind on the original source.

Sounds like it would be a similar or the same hack that NDI uses, if that's the case I totally understand that you don't want to do that, for the above mentioned reasons 😆

Being behind the original wouldn't be a big issue for the use case at least of A/V transmission plugins, but I guess it might be bad for other use cases.