Files
DisplayFlow/demo/windows_sender/ScreenCapture.h

29 lines
664 B
C
Raw Normal View History

2025-12-18 23:07:14 +08:00
#pragma once
#include <d3d11.h>
#include <dxgi1_2.h>
#include <wrl/client.h>
#include <memory>
using Microsoft::WRL::ComPtr;
class ScreenCapture {
public:
ScreenCapture();
~ScreenCapture();
bool Initialize();
2025-12-22 13:48:06 +08:00
bool InitializeWithOutputIndex(int index);
2025-12-18 23:07:14 +08:00
bool CaptureFrame(ComPtr<ID3D11Texture2D>& texture);
void ReleaseFrame();
ID3D11Device* GetDevice() const { return device_.Get(); }
ID3D11DeviceContext* GetContext() const { return context_.Get(); }
private:
ComPtr<ID3D11Device> device_;
ComPtr<ID3D11DeviceContext> context_;
ComPtr<IDXGIOutputDuplication> duplication_;
bool frame_acquired_ = false;
};