Untitled
unknown
plain_text
a year ago
1.5 kB
7
Indexable
In [70]: class Screenshot_WindowsGraphicsCapture:
...: def __init__(self, hwnd: HWND) -> None:
...: self.device = get_direct3d_device()
...: self.item = create_for_window(hwnd)
...:
...: async def get_frame(self) -> cv2.Mat:
...: event_loop = asyncio.get_running_loop()
...: # create frame pool
...: self.frame_pool = Direct3D11CaptureFramePool.create_free_threaded(
...: self.device,
...: DirectXPixelFormat.B8_G8_R8_A8_UINT_NORMALIZED,
...: 2,
...: self.item.size,
...: )
...: # create capture session
...: self.session = self.frame_pool.create_capture_session(self.item)
...: self.session.is_border_required = False
...: self.session.is_cursor_capture_enabled = False
...:
...: # callback
...: def frame_arrived_callback(
...: frame_pool: Direct3D11CaptureFramePool, event_args: Object
...: ):
...: frame = frame_pool.try_get_next_frame()
...: print(frame)
...:
...: # set callback
...: self.frame_pool.add_frame_arrived(
...: lambda fp, o: event_loop.call_soon_threadsafe(frame_arrived_callback, fp, o)
...: )
...:
...: # start capture
...: self.session.start_capture()Editor is loading...
Leave a Comment