My application captures the desktop screen (screen sharing) and sends it to another device. Currently, the application captures the screen with the following method
- use of GDI (Bitblt)
- using DirectX (getFrontBufferData)
- use of DXGI (Desktop Duplication API)
Depending on the version of Windows and the use case, the application uses one of them.
I am looking for hardware acceleration api that does this job faster than the existing implementation. As a link, we have something on Mac OS click here .
After searching for hardware accelerated screen capture in the windows, you can find some of the following parameters:
- Record based on GDI
- This is a commonly used library for capturing software, it supports hardware acceleration in Windows 7.
- DirectX based recording
- some of the options came up with the direct3d9 and direct3d11 capture mentioned in the links below. using getfrontbufferData in the directx method is slower than gdi itself.
- Record based on DXGI
- it supports Windows 8 and a higher version of windows, this is the basic implementation of direct3d11 in my application.
- Encoding based on Windows Media Encoder 9
Links: http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen and
The fastest way to capture a screen
But these links seem very old, is there such functionality in the latest version of Windows.
The first three methods are already used in my application. DXGI is better in some way because it has hardware acceleration (uses a GPU).
I am looking at a Windows application / library that works similarly to the Mac application listed at the top. Our use case just fixes the screen frames in the best way, without affecting the system performance (I hope that this is possible only with the help of the GPU, which will save CPU cycles).
c ++ windows directx screen-capture ms-media-foundation
anurudh
source share