I'm trying to capture the screen with 16ms of the timeout, and i'm getting 60-65 FPS when the capture is tested on full screen 4k 60fps video. CPU usage, in this case, is approximately 0-1%. But when the mouse cursor is moving on the screen, the FPS and CPU usage are rasing up to 100+ frames and 25-30%, respectively. So, there is the question: why can i get FPS greater than 70, if the timeout is set to 16?
If the timeout is set to 0: amount of FPS are captured with the same value, but CPU usage is remained stable at 20-30%, even with a static image on the screen. Amout of timeouts error, in this case, significantly increased. Does this somehow related to the previous question?
do
{
hr = lDeskDupl->AcquireNextFrame(
TimeoutMS,
&lFrameInfo,
&lDesktopResource);
if (SUCCEEDED(hr)) {
accumFramesCount += lFrameInfo.AccumulatedFrames;
break;
}
if (hr == DXGI_ERROR_INVALID_CALL)
{
lDeskDupl->ReleaseFrame();
}
if (hr == DXGI_ERROR_WAIT_TIMEOUT)
{
timeoutsCount++;
}
}
while (true);