mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
578 B
40 lines
578 B
3 years ago
|
#pragma once
|
||
|
|
||
|
#include "wddm.h"
|
||
|
|
||
|
#include "Capture.h"
|
||
|
|
||
|
class WDDMCapture : public Capture {
|
||
|
public:
|
||
|
void init(UINT monitorID, RECT screen)
|
||
|
{
|
||
|
this->screen = screen;
|
||
|
|
||
|
wddm.wf_dxgi_init(monitorID, screen);
|
||
|
|
||
|
}
|
||
|
int getNextFrame(RGBQUAD** pPixels)
|
||
|
{
|
||
|
int rc;
|
||
|
rc = wddm.wf_dxgi_nextFrame(3000);
|
||
|
if (rc != 0) {
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
int pitch;
|
||
|
rc = wddm.wf_dxgi_getPixelData((byte**)pPixels, &pitch, &screen);
|
||
|
if (rc != 0) {
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
void doneNextFrame()
|
||
|
{
|
||
|
int rc = wddm.wf_dxgi_releasePixelData();
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
RECT screen;
|
||
|
WDDM wddm;
|
||
|
};
|