My application is capturing desktop screen(screen sharing) and send to other device.
Currently application captures screen with following method
- using GDI (Bitblt)
- using DirectX(getFrontBufferData)
- using DXGI(desktop duplication API)
depending upon windows version and use case, application uses one of them.
I am looking hardware accelerated api which do this job faster than existing implementation. As a reference we have something in Mac OS click here.
After doing some search for hardware accelerated screen capturing in windows, some of the following options are found:
- GDI based capturing
- it's a commonly used software capturing library, it support hardware acceleration in windows 7.
- Directx based capturing
- some of the option come up with direct3d9 and direct3d11 based capturing mentioned in below references. using getfrontbufferData in directx method is slower than gdi itself.
- DXGI based capturing
- it supports windows 8 and higher version of windows, it's direct3d11 base implementation in my application.
- Windows media encoder 9 based capturing
References: http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen and
Fastest method of screen capturing
But these references seems very old, is there any such functionality in latest release of windows.
First three methods are already used in my application in some way.
DXGI is better in some way as it's has hardware acceleration(uses GPU).
I am looking a windows application/library which work similar to mac application mentioned in upper part.
Our use case is simple to capture the screen frames in best possible way without affecting system performance(I hope it's only possible by using GPU, that will save cpu cycles).