Decouple OBS from the New Windows Framework

terrorfrog

New Member


Short TLDR, because of windows new shiny capture API since 1809 it has the effect now that render/processing times of each frame in OBS directly affect applications and games (frame and input lags) even tough there are no framedrops or changes in frametimes in the GPU, nor is any system resource even close to be saturated.

It has simply todo with how time expensive the processing is. It even affected dual pc setups that use NDI or cloned displays as they are all now linked.
The exact reason for this i dont know, i just can guess its either a pipeline or even kind of internal vsync issue (between hooked application within the display framework)


ive testet on different machines and windows version with the same result. any operation within OBS that is time consuming (expensive filters, rescale, etc) will directly affect the application that is captured (no other). this even affects cloned displays with OBS hooked into the capture card.
even just preview on a second PC has slight effects. HQ recording then have an immediate dramatic effect on the machine with the cloned display.
Testet and reproduceable in apex legends (source engine) but reported identical issues in at least 2 other engines

my personal current working workaround is (even on a single PC setup this works) instead of OBS using game capture (or any other window capture method) i use NDI to capture - send it to a NDI Bridge in local Mode (copy only no transcode) and resend it as a source to OBS.

This eliminates any effect of OBS to the application/game and optimized correctly (frame grabber on a reserved core, exclusive fullscreen mode etc etc) inputlag is now down to near zero. It even has the same effect when done in a single PC setup (even we dramatically increase used resources here).




problem to measure is that it wont affect measured frametimes or fps (as they are produced correctly just not delivered by windows in time).
this affect every recording software in the same way. it may just not that obivious on 1080p sources but is at 1440p onwards

proposed feature would be an internal equivalent to what i do with the NDI bridge, kind of decoupling (in the workaround case done via copy to cache).
this may lead to problems on the recording (if obs takes way to long to process frames) but should work fine in most cases and in any case would at least not affect the captured application/game
 
Top