Comments (4)
First, make sure you're setting the CPUAccessFlags
to D3D11_CPU_ACCESS_READ
. Second, I wouldn't bother with the swap chain unless you intend to put the swap chain on screen. The sample uses it purely to show you what the capture looks like. You probably want to use the capture API like this: https://github.com/robmikh/CaptureVideoSample/blob/master/CaptureVideoSample/CaptureFrameGenerator.cpp
When frames come in they will be queued up, and calling TryGetNextFrame will give you a queued frame or block until it receives one.
from windows.ui.composition-win32-samples.
Oh, one more thing, you'll want to observe the RowPitch
field from the D3D11_MAPPED_SUBRESOURCE
struct when accessing the bytes of the texture. The stride of your texture may exceed the width. See this helper method:
from windows.ui.composition-win32-samples.
Thanks so much for your reply! I've updated my code here based on your suggestions, but still can't capture the image. The OnFrameArrived function doesn't seem to be triggered. What should I do next?
Hereβs my test code:
// add DXGICapture.lib to library
#include "pch.h"
#include <iostream>
#include "DXGICapture.h"
int main()
{
HWND hwnd = FindWindow(NULL, L"Ice.mp4 - PotPlayer");
if (hwnd == NULL)
{
std::cout << "FindWindow failed" << std::endl;
return 1;
}
auto cap = CreateCapture(hwnd);
StartCapture(cap);
BYTE* buffer = new BYTE[1920 * 1080 * 4];
Grab(cap, buffer);
// delay
Sleep(1000);
}
from windows.ui.composition-win32-samples.
Since you're calling Direct3D11CaptureFramePool::Create
, you need to be pumping messages. Given that you're using a lock in the FrameArrived
callback, you should call Direct3D11CaptureFramePool::CreateFreeThreaded
instead. That removes the message pumping requirement and causes the FrameArrived
callback to fire on an internal worker thread.
from windows.ui.composition-win32-samples.
Related Issues (20)
- Some samples use `WindowsRuntimeMarshal` class, that is no longer available in .NET 5+ HOT 4
- Cannot use IGraphicsCaptureItemInterop::CreateForWindow with electron apps HOT 6
- This repo is missing important files HOT 4
- How to capture Windows10/11 Virtual Desktop via Windows.Graphics.Capture ? HOT 2
- Accessing screen capture image bytes with MapFlags.DoNotWait for better CPU usage HOT 3
- Can I do successive captures on two different windows HOT 8
- ScreenCapture Sample - write capture stream to disk mp4? HOT 5
- Capture area of a monitor HOT 4
- Memory Leak? HOT 5
- BSODs on 4 separate Hard Drives HOT 3
- Multiple screen captures in a loop cause explorer.exe and native Windows app to lag? HOT 11
- Capture OnFrame Callback very slow on Win11 23H2 HOT 7
- access_denied in CreateForMonitor in some cases HOT 5
- Cannot catch errors in CreateCaptureItemForWindow HOT 3
- WGC CaptureFrame returns wrong SystemRelativeTime in window capture mode HOT 2
- Cursor may become invisible when recording some fullscreen games using WGC HOT 6
- Frame has issue after change window state (maximize from normal/ normal from maximize/ ...) HOT 1
- ScreenCaptureforHWND sample leaks handles leading to "Out of memory" crash HOT 1
- ScreenCaptureforHWND sample main thread hang HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from windows.ui.composition-win32-samples.