gstreamer/subprojects/gst-plugins-bad/sys/d3d12
Seungha Yang 37e1847464 d3d12videosink: Add support for window handle update
A large refactoring commit for adding features and improve performance

* Reuse internal converter and overlay compositor:
  Converter can be reused as long as input and display formats are not
  changed. Also overlay compositor reconstruction is required only if
  display format is changed

* Don't wait for full GPU flush on resize or close:
  D3D12 swapchain requires GPU idle in order to resize backbuffer.
  Thus CPU side waiting is required for swapchain related commands
  to be finished. However, don't need to wait for full GPU flushing.

* Support multiple sink on a single external window
  Keep installed subclass window procedure even if there's no associated
  our internal HWND. This will make window procedure hooking less racy.
  Then parent HWND's message will be transferred to our internal HWNDs
  if needed.

* Adding support for window handle update
  Application can change target HWND even when videosink is playing or
  paused state. So, users can call gst_video_overlay_set_window_handle()
  against d3d12videosink anytime. The videosink will be able to update
  internal state and setup resource upon requested.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013>
2024-06-17 16:05:00 +00:00
..
gstd3d12av1dec.cpp d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12av1dec.h d3d12: Remove d3d11 dependency 2023-12-29 14:38:59 +00:00
gstd3d12basefilter.cpp d3d12: Add a helper method for device equality check 2024-04-01 10:37:49 +00:00
gstd3d12basefilter.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12compositor.cpp d3d12converter: Add support for GPU-side external fence waiting 2024-04-28 12:49:07 +00:00
gstd3d12compositor.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12convert.cpp d3d12converter: Add support for GPU-side external fence waiting 2024-04-28 12:49:07 +00:00
gstd3d12convert.h d3d12: Add convert element 2023-12-29 14:39:00 +00:00
gstd3d12decoder.cpp d3d12: Workaround for Intel iGPU decoder crash 2024-06-17 15:15:07 +00:00
gstd3d12decoder.h d3d12vp9dec: Disallow resolution change to larger size on non-keyframe 2024-04-23 10:08:18 +00:00
gstd3d12download.cpp d3d12: Define more formats 2023-12-29 14:39:00 +00:00
gstd3d12download.h d3d12: Add d3d12download element 2023-09-19 08:52:04 +00:00
gstd3d12dpbstorage.cpp d3d12: Add H.264 video encoder 2024-01-19 12:47:35 +00:00
gstd3d12dpbstorage.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12dxgicapture.cpp d3d12screencapturesrc: Fix output to non-d3d12 element 2024-04-28 12:49:07 +00:00
gstd3d12dxgicapture.h d3d12screencapturesrc: Add support for WGC API 2024-03-08 01:05:24 +09:00
gstd3d12encoder.cpp gst: Move GstQueueArray as GstVecDeque to core 2024-05-06 18:25:42 +00:00
gstd3d12encoder.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12encoderbufferpool.cpp d3d12: Add H.264 video encoder 2024-01-19 12:47:35 +00:00
gstd3d12encoderbufferpool.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12graphicscapture.cpp d3d12screencapturesrc: Use gst_d3d12_memory_get_d3d11_texture() 2024-04-02 03:43:59 +09:00
gstd3d12graphicscapture.h d3d12screencapturesrc: Add support for WGC API 2024-03-08 01:05:24 +09:00
gstd3d12h264dec.cpp d3d12: Add header containing core features 2023-12-29 14:39:00 +00:00
gstd3d12h264dec.h d3d12: Remove d3d11 dependency 2023-12-29 14:38:59 +00:00
gstd3d12h264enc.cpp d3d12encoder: Do not print error log for not-supported feature 2024-05-29 10:45:13 +00:00
gstd3d12h264enc.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12h265dec.cpp d3d12: Add header containing core features 2023-12-29 14:39:00 +00:00
gstd3d12h265dec.h d3d12: Remove d3d11 dependency 2023-12-29 14:38:59 +00:00
gstd3d12ipc.cpp d3d12: Add IPC elements 2024-03-22 23:09:12 +09:00
gstd3d12ipc.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12ipcclient.cpp d3d12ipcclient: Fix deadlock when copying texture 2024-04-28 12:49:07 +00:00
gstd3d12ipcclient.h d3d12: Add IPC elements 2024-03-22 23:09:12 +09:00
gstd3d12ipcserver.cpp d3d12: Add IPC elements 2024-03-22 23:09:12 +09:00
gstd3d12ipcserver.h d3d12: Add IPC elements 2024-03-22 23:09:12 +09:00
gstd3d12ipcsink.cpp d3d12ipcsink: Handle external fence 2024-04-28 12:49:07 +00:00
gstd3d12ipcsink.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12ipcsrc.cpp d3d12: Add IPC elements 2024-03-22 23:09:12 +09:00
gstd3d12ipcsrc.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12mpeg2dec.cpp d3d12: Add MPEG-2 decoder 2024-01-25 11:45:23 +00:00
gstd3d12mpeg2dec.h d3d12: Add MPEG-2 decoder 2024-01-25 11:45:23 +00:00
gstd3d12overlaycompositor.cpp d3d12overlaycompositor: Remove unused parameter 2024-06-17 16:05:00 +00:00
gstd3d12overlaycompositor.h d3d12overlaycompositor: Remove unused parameter 2024-06-17 16:05:00 +00:00
gstd3d12pluginutils.cpp d3d12: Move gst_d3d12_buffer_copy_into method to library 2024-04-14 09:55:41 +00:00
gstd3d12pluginutils.h d3d12: Move gst_d3d12_buffer_copy_into method to library 2024-04-14 09:55:41 +00:00
gstd3d12screencapture.cpp d3d12screencapturesrc: Add support for WGC API 2024-03-08 01:05:24 +09:00
gstd3d12screencapture.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12screencapturedevice.cpp d3d12: Add screen capture element 2024-01-05 21:27:35 +09:00
gstd3d12screencapturedevice.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12screencapturesrc.cpp d3d12screencapturesrc: Performance improvement 2024-04-25 22:51:01 +00:00
gstd3d12screencapturesrc.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12testsrc.cpp d3d12converter: Add support for GPU-side external fence waiting 2024-04-28 12:49:07 +00:00
gstd3d12testsrc.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12upload.cpp d3d12: Define more formats 2023-12-29 14:39:00 +00:00
gstd3d12upload.h d3d12: Add upload element 2023-12-29 14:39:00 +00:00
gstd3d12videosink.cpp d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12videosink.h d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00
gstd3d12vp8dec.cpp d3d12: Add VP8 decoder 2024-02-10 21:23:51 +09:00
gstd3d12vp8dec.h d3d12: Add VP8 decoder 2024-02-10 21:23:51 +09:00
gstd3d12vp9dec.cpp d3d12vp9dec: Disallow resolution change to larger size on non-keyframe 2024-04-23 10:08:18 +00:00
gstd3d12vp9dec.h d3d12: Remove d3d11 dependency 2023-12-29 14:38:59 +00:00
gstd3d12window-swapchain-resource.h d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window-swapchain.cpp d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window-swapchain.h d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window-win32.cpp d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window-win32.h d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window.cpp d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
gstd3d12window.h d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
meson.build d3d12videosink: Add support for window handle update 2024-06-17 16:05:00 +00:00
plugin.cpp d3d12: Move core part to gst-libs 2024-04-01 10:37:50 +00:00