...I have let the GPU force vsync:off and let tearing. But when i check the recording, i see a skipped frame instead of the torn frame...
You want to say, here, that the previous frame was doubled not just skipped. Am I right?
About the obs process priority, I think it has more influence on encoding (when using software x264) rather than capturing.
My thoughts (
@Jim may correct me if it completely different, the way how it works) are next:
Capturing is something like:
it's time to get new image, can we copy it? Yes -> copy it to obs texture;
it's time to get new image, can we copy it? Still not ready, wait a bit, PC is busy... -> but it is time to feed something to obs, OK, just copy previous one (frame double in capture).
Encoding (mostly done by FFmpeg itself):
there is sample in the buffer, it is time to encode it. Is it encoded (encoding complete)? Yes -> OK send it to the file (muxer), you may overwrite encoded sample in the buffer;
there is sample in the buffer, it is time to encode it. Is it encoded (encoding complete)? Still not ready, wait a bit, PC is busy...
-> but there is other samples in the buffer. Is buffer full? No. -> OK, let's wait a bit more (lagged frames).
-> but there is other samples in the buffer. Is buffer full? Yes. -> OK, time to skip some samples. You may flush the buffer data (skipped frames).
Edit: https://obsproject.com/docs/backend-design.html#general-video-pipeline-overview - there is few words how you can get skipped frames, and it says about the frame double. I don't understand how frame can be skipped and doubled simultaneously (from this description). But this the best what I found here.