Question / Help OBS DX12 / UWP Capture

chummy

Member
To those interested in see how better is NVFBC capture method than OBS, i made a good test comparison between two. Of course here is not NVENC but NVENC is something to inspire AMD VCE. Share(shadowplay) use no B-frames for recording then i used same method and settings for OBS like Share, OBS even output a lower final video 41Mb/s vs 36Mb/s. I monitored Bus load which is GPU PCI-e bus and you can notice than with NVFBC the load % is slight lower which means there is less traffic between CPU-GPU, most of the capturing work stay in GPU side apparently.

I used BF4 because it monitoring of CPU and GPU frametime, and OBS cause slighty higher CPU latency.
https://youtu.be/i6biO3DIX20

The nice feature in NVFBC is than even recording with Monitor capture it stay same method how game capture and same performance impact, differently from OBS which monitor has slighty worse performance than game capture.

There yet Windows 10 Game DVR to see how it perform against others.
 

Attachments

  • OBS vs Share(NVFBC)_000000.png
    OBS vs Share(NVFBC)_000000.png
    186 KB · Views: 188

chummy

Member
I see @Xaymar arguing before than AMD has some NVFBC equivalent(DEM) but it was removed. Maybe there will be another solution from AMD for replace this?

Mikhail said than OBS can replace the method how they transfer the frames: "OBS project may have is to avoid copy of the captured frame to system memory and transferring it back to video memory for encoding."

Will OBS make such changes or is something without prediction?
 

Markitos

New Member
so i was recording gears of war 4 in desktop mode i mean you cannot record in game capture mode so yea anyways i noticed after recording for some minutes obs will start dropping frames and it will stay like that until obs is restarted so for example i was recording in 29.97 fps and after some minutes of gameplay obs fps dropped to 15 fps and it stayed like that until i restarted obs and this happens so often and i have to restart obs frequently @Xaymar do you think you can optimize the desktop capture a bit more ? or its not up to you ?

OBS devs are working on a DX12 capture method, GOW4 is DX12 only but using screencapture is very demanding.
 

chummy

Member
OBS devs are working on a DX12 capture method, GOW4 is DX12 only but using screencapture is very demanding.
Will OBS DX12 support UWP too? Raptr and Share support capturing DX12 games but not games inside UWP. So how OBS will deal with it?
But for now there is Windows 10 Game DVR which use VCE/NVENC and can capture games from UWP.
 

Suslik V

Active Member
Absolutely useless diagrams.

What conditions?
How many tries?
What numbers meaning?
How you compare (performance\quality)?
What variable fps (from the youtube video) meaning?

and so on... Hype.
 

H4ndy

Forum Moderator
DX12 capture is planned for 0.17.0 and might even include Vulcan as well.
Regarding GPU load with OBS: OBS is using the GPU for the scene compositing which of course makes it a bit more demmanding than just saving the game output to a file like Share does.
 

Suslik V

Active Member
And what you captured? I understand this, that second application (bf4) can do up to 100fps if you encoding something at background? That first input (background) is constant for all tests? And don't say to me that you captured the same (bf4) application...
 

chummy

Member
Where there was saying something about quality? The meaning of test was to see which recorder software has the faster capture method and if this difference is a big deal.

The bitrate was at 36-41Mbits for every video so there is not quality difference you can see for them.

I dont understand what you meaning by variable framerate.
 

Suslik V

Active Member
Usually, when testers compare encoders, they use constant input (predefined input) and counting the time to complete the encoding.

OK. About variable fps. For example, you have
High Quality/ Fullscreen
2016-10-08 00:46:32 - bf4
Frames: 11433 - Time: 110000ms - Avg: 103.936 - Min: 89 - Max: 125 No Recording / fullscreen
...
How to make 60 fps video (or 59.94, or what ever else fixed value) of THIS input?
If during one second I have 125 frames, after the second I have only 124 frames for input. What frames you will throw away: each #2nd, #10th,#20th,#30th..?
Your encoder's feed is varies in type and time (the frames differ temporary and visually) from test to test. From application to application.
You can make overlay mix of all your videos and you'll see that they differ in time. And this difference fluctuate.

Disable "rendering" feedback in the test (or re-view your results - it's just a numbers).
 
Last edited:

chummy

Member
@Suslik V But even using a variable feeding the results always come almost same. When you look my video there has BF4 CPU and GPU frametimes which shows than with OBS Game and more with Monitor capture for example cause major CPU frametime variation while with NVBFC its more stable with both lines most of time connected. The Bus load is lower with NVFBC which shows it has less or no GPU>CPU>GPU additional data traffic for encoding.

Maybe the method used with variable framerate is not the best, but here was used same NVENC for both OBS and Share and the point is to see if NVFB is really giving better results for capturing the frames keeping the work in GPU instead of sending it to CPU/RAM first.

The test was not designed to say OBS is bad, but sometime ago Unwinder(developer of Afterburner) declared than not only the hardware encoding method was the major of NVIDIA benefits but the new Capture method NVIDIA created called NVFBC and NVIFR. So i was curious to see how much that difference was and if it even exist but that is not a big thing at all.

There has 5 tests with OBS and Share and in all of them NVFBC win by almost same value, i dont know how that can be so wrong. Even BF4 engine frametime explicited the difference.
 
Top