-
-
Notifications
You must be signed in to change notification settings - Fork 419
6.0.0 "Visibility behavior" update (Text & logic) #1074
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
Conversation
|
Still thinking about the best way to communicate that setting. |
|
It seems the cc got lost in my email.. woops! I like the proposed solution, it's clear and direct without being too cluttered or confusing |
|
I am growing more and more a fan of this drop-down menu. BUT with one change : Change "Show Black Frame" by "Clean source. Content" And "show last frame" to "Show last source content" Why not using "frame"?
-> interestingly OBS does not use "frame" anywhere else, but refer to "Canva"/"boundary box", etc. which push me to not use frame as well. :D |
src/ndi-source.cpp
Outdated
| // ISSUE: Do we need to do both this and in `ndi_source_update`? | ||
| if (recv_desc.bandwidth == |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is needed to "clean" the Source Content when switching to Audio Only i we want to keep the original "user experience" behavior as in :
- Open NDI Source settings
- Change bandwidth to audio only
as soon as this is selected > it will "clear" the source content/frame
- On "save" > this should be calling the ndi_source_update ()
Ths goes along side with the UX we want for users : any changes made in the source settings shoud apply right away or only on save?
Default today is expected as : "apply as soon as changed". Commit to config on save. Revert on Cancel.
If we want to keep this > This should stay here.
src/ndi-source.cpp
Outdated
| // ISSUE: I am not 100% convinced that we want to do this **here**. | ||
| // It depends on how we phrase/word the UI text. | ||
| // Do we really want to blank the video here **after** it stops, | ||
| // or should we really be blanking the video just **before** it restarts? | ||
| // Why can't we just blank the video in the receiver thread? | ||
| // Isn't that what the code did before the changes in this area? | ||
| // Why was that not sufficient? What were the problems with that? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Valid suggestion. IIRC on why this was moved here was because in previous commit this was keeping a black frame when the source was part of a scene in preview > but that was a bug as well.
Technically we should be okay to have this source texture "cleaned" when we restart the thread. - Will test and confirm
|
In the last Commit on this PR before this message the key elements are :
|
Where did you find that? I do like that wording! I hesitated wording it "Pause", since that it not actually what it is doing. Given VLC's wording, I do like differentiating between Stop and Pause that way:
@Trouffman Given these terms/paradigms, there are still a few minor inconsistencies in the code variable/string names. Truly they probably are consistent, but the UI is presenting a fake "Pause", whereas the code is what is actually being done. So it really is just semantics of whether the variable/string names should follow the fake terms/paradigm, or the true code implementation. |
IIRC : Add VLC source then select a video file to playback. Then double click on that file. I really like the difference between pause and stop as well, hence why I kept them in the visible part. The "stop" in the variable name is kept as it is closer to the actual "logic". So the inconsistency should be between the front facing and the internal logic for it only. (Aka just us, the devs/maintainers. I don't mind changing it. I don't like the large if/else if part for the configuration migration. > Maybe we should have a function at loading that is "migrate to new settings" where we only address the configuration changes (so the check happen only when loading the plugin (aka once), instead of everytime it is used. - not sure how that would work tbh.) |
…loading a scene in preview and no NDI stream is detected (at launch)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is still a bug that the NDI Source does not display when:
- OBS start
- Source is ONLY in a scene in Preview
- Source is not available (so not connected)
Still figuring out why this is a problem.
EDIT : This is only happening with NDI source that do not send constant stream (like static image with no audio).
This can happen with "NDI Pattern Generator". Could not reproduce this with any other NDI Sources.
|
Confirming the following : New behavior options
New default settingThe default behavior for any new NDI Source is : the "Pause" option. Migration from previous settingsAny NDI Source that have been configured / created in prior versions will migrate to the new behavior automatically as below: ~~
EDIT : we had to drop the "backward compatibility port" this is the new migration behavior: Any NDI Source that have been configured / created in prior v6.0.0 versions will migrate to the new behavior automatically to "KeepAlive" Argument to support this new default behavior
|
src/ndi-source.cpp
Outdated
| (s->config.hw_accel_enabled != new_hw_accel_enabled); | ||
| s->config.hw_accel_enabled = new_hw_accel_enabled; | ||
|
|
||
| // Clean the frame content when settings change unless requested otherwise |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
THis might be useful only for th eaudio only afterall.
|
Seems recent changes on the main branch are impacting. Known issue so far. Issue 1 : When an NDI source is connected to the NDI Pattern Generator with a static tone, there is no sound in audio / recording right after OBS launch. This could be reproduced with other sources as well (inconsistently) Issue 2 :
Issue 3 : 12:02:43.179: [DistroAV] 'NDI 1' +ndi_source_update(…) More being tested before this can be merged. |
|
Confirmed : these issues are from the main 6.0.0, not this one. |
It's really interesting I haven't caught this bug, specially with how much I've been messing with the audio via NDI lately (Like changing audio sources on the fly) |
|
It doesn't look like we are setting reset_ndi_receiver to true when the behavior changes. Is this on purpose? |
…his help solves some dev challenges, and stay uniform with the way the other settings are managed already. Drawback : This introduce a breaking change for user of v4.14.x that configured a custom behavior.
Yes this is expected as this will be set when the source settings is confirmed, not when we pick from the dropdown. The issue was because we were not checking the frame to remenber properly. In this latest commit i had to get rid of all the "text-based" settings for the behavior and fallback to using int. It simplifies the codebase and it seems to work great, solving the challenges we had recently. There should be some more clean-up to be done before release, but this should resolve most of the bugs we had identified for this release. |
Add support for detecting changes in ndi_source_name when editing the settings of a source. Add freeing up memoery for ndi_source_name changes. Add logic to clean the frame content when resetting the ndi_receiver thread.
|
The latest commit address issues when a change of ndi source name would not be detected properly and not reset the content on a change. |
New behavior options
New default settingThe default behavior for any new NDI Source is : the "Pause" option. Migration from previous settingsAny NDI Source that have been configured / created in prior v6.0.0 versions will migrate to the new behavior automatically to "KeepAlive" All "custom" behavior set in 4.14.x are reverted to KeepAlive - This is a breaking change. |
patcreak
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
im confused





This all started with #993
I love the feature!
I even personally understand how it works and is supposed to be used.
But, it seems [to me] oddly difficult to expect other users to understand how to use it and other developers to understand how it is implemented (and how to maintain the code).☹️
It has even been the source of some tricky recent bugs.
The current UI is this:

That, at first, seems fine and mostly intuitive.
But when someone starts to use the feature things can get confusing.
Keep source connected?I could go on with at least another half dozen or more questions.
I propose something like the following that, although currently ugly, does help, I think, clear up some confusion:
This is what is implemented in this PR, but it mostly for discussion.
But, to implement [something like] this we would have to migrate the settings from the old/current values to the new values.
So that complicates the code a little bit.
What do y'all think?
CC @Trouffman @haakonnessjoen @RayneYoruka