Untitled

 avatar
unknown
plain_text
5 months ago
1.5 kB
4
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