Implement "Keep Last Received Frame/Timeout" functionality#1330
Conversation
This is a new checkbox that is enabled by default. When it is enabled it will keep the last frame that was received on the source, no matter if the sender NDI instance was disconnected or is sending "none" frame data. When it is disabled, it will wait for up to 3 seconds to receive a new frame and, if there is no new frame, will clear it on the receiver end. The way this is possible is via. a new helper method called `is_filter_invalid` (probably not the final name) which is checking the source width and height, as well as if the filter is enabled on the source and if the source is active anywhere. Sources don't update when they aren't rendered in the main OBS view from what I can tell (e.g. a Browser Source would just seem like it's frozen) so this is in-line with the current way OBS handles it
|
Okay I've renamed Additionally, I thought a bit more about the |
|
In addition to allowing a NDI source to go black if no NDI data is received after 3 seconds, this PR also allows a second instance of OBS receiving Dedicated NDI Output from another OBS to also go black when no data is being sent. Prerequisites: Two portable OBSs (OBS 1 and OBS 2) running
Observations: |
There was a problem hiding this comment.
While reviewing this change, the naming triggered me multiple time (especially as we use this "last frame" codename for the "behavior".
After some thought I suggest the following :
- Behavior is a "Connection Behavior"
Also having only a tick box is lacking context and might lead to confusion in the same manner we had when developing the "behavior" feature.
Suggestion :
"On timeout"
- Keep last received content (frame)
- Clear/reset the source (3sec)
Much better than the checkbox, I agree - I'm not good with UI/UX and while it made sense in my head I can fully see it causing confusion for other users |
|
This should be feature-complete. Translation added in all language using machine learning except for : English, French, Spanish |
Trouffman
left a comment
There was a problem hiding this comment.
Reworked the tickbox to be a drop-down for better clarity.


This is a new checkbox that is enabled by default. When it is enabled it will keep the last frame that was received on the source, no matter if the sender NDI instance was disconnected or is sending "none" frame data. When it is disabled, it will wait for up to 3 seconds to receive a new frame and, if there is no new frame, will clear it on the receiver end.
The way this is possible is via. a new helper method called
is_filter_invalid(probably not the final name) which is checking the source width and height, as well as if the filter is enabled on the source and if the source is active anywhere. Sources don't update when they aren't rendered in the main OBS view from what I can tell (e.g. a Browser Source would just seem like it's frozen) so this is in-line with the current way OBS handles it.This PR supersedes #1276 by for example making sure the NDI connection stays alive instead of destroying it the moment the source / filter gets invalid.