#pragma once #include "FrameSourceBase.h" class DesktopDuplicationFrameSource : public FrameSourceBase { public: DesktopDuplicationFrameSource() {}; virtual ~DesktopDuplicationFrameSource() {} bool Initialize() override; ComPtr GetOutput() override { return _output; } UpdateState Update() override; bool HasRoundCornerInWin11() override { return true; } private: // 消除刚进入全屏时短暂的黑屏 bool _firstFrame = true; ComPtr _dxgiRes; ComPtr _output; ComPtr _outputDup; std::vector _dupMetaData; RECT _srcClientInMonitor{}; D3D11_BOX _frameInMonitor{}; };