225 Commits

Author SHA1 Message Date
Seungha Yang
0c378091a0 d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration
Post device-changed instead of device-removed/device-added when
only HMONITOR or display position changed without actual device change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9472>
2025-08-01 12:51:46 +00:00
Marc-André Lureau
78f0f61523 meson: d3d12: Add support for MinGW DirectXMath package
This is a similar issue that was found for d3d11:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6495

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9464>
2025-07-31 15:09:34 +00:00
Seungha Yang
461e3946d4 d3d12: Add support for dewarping fisheye images
Add d3d12fisheyedewarp element that performs fisheye image dewarping
using D3D12. A UV remap LUT texture is generated via a compute shader,
and the actual remapping is performed in a pixel shader using this LUT

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9441>
2025-07-27 01:22:28 +09:00
Seungha Yang
4f932ee081 d3d12swapchainsink: Add last-rendered-sample action signal
Add a new action signal to allow applications to capture
the most recently rendered frame directly from the swapchain
back buffer.

Unlike the existing "last-sample" property, which exposes
the raw input sample before any sink-side processing, this
signal captures the final displayed image after any internal
image processing (e.g., UV remap, color balance, overlay) has been
applied.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9423>
2025-07-22 12:02:15 +00:00
Seungha Yang
0d1cd40097 d3d12swapchainsink: Update uv-remap signal to support background color
Allow per viewport background color setting

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9393>
2025-07-17 12:55:11 +00:00
Seungha Yang
fc73216671 d3d12swapchainsink: Fix force-aspect-ratio change in playing state
Set output updated flag so that viewport can be calculated again

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9392>
2025-07-14 17:07:35 +00:00
Seungha Yang
239a679fbf d3d12screencapture: Add support for monitor add/remove in device provider
Update device list on WM_DISPLAYCHANGE event

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4521
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9330>
2025-07-04 18:47:58 +00:00
Seungha Yang
e3d0a8d83e d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
Multiple DispatcherQueues per thread seems to be causing OS handle leak
and random crashes were observed. Instead of creating
thread/DispatcherQueue per GstD3D12GraphicsCapture object,
reuse only single thread and DispatcherQueue

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4351
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9153>
2025-06-25 14:30:56 +00:00
Seungha Yang
c5fd61c908 d3d12swapchainsink: Add uv-remap and redraw action signal
New uv-remap signal can be used for UV coordinate remap operation
in videosink, and redraw signal can allow updating view even in paused
state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9209>
2025-06-17 22:18:32 +00:00
Seungha Yang
4735e765a3 d3d12decoder: Use interlace info in input caps
... instead of relying on only parsed values from bitstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9170>
2025-06-04 16:07:24 +00:00
Seungha Yang
aa0c257d4c d3d12compositor: Fix negative position handling
Negative positions should be cropped out

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4249
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9158>
2025-06-01 18:21:28 +00:00
Seungha Yang
343cde7f87 d3d12compositor: Fix critical warnings
compositor will record rendering commands using multiple threads
(i.e., blending commands are recoded using thread pool, and
background one is recorded on aggregate thread).
And there can be temporary refcount increase (so not writable).
Updates fence once all rendering commands have been submitted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9157>
2025-06-01 23:02:33 +09:00
Seungha Yang
d5dfa3ef5e d3d12screencapturesrc: Fix desktop handle leak
Calling CloseDesktop() on a handle that is currently in use will fail.
Close the handle after current desktop handle change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9136>
2025-05-29 17:19:33 +00:00
Seungha Yang
4d87ffb8f3 d3d12decoder: Workaround for NVIDIA crash on resolution change
Recent NVIDIA driver seems to crash on resolution change
if ID3D12VideoDecoder and ID3D12VideoDecodeCommandList are reused.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4415
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8968>
2025-05-12 23:40:13 +00:00
Seungha Yang
5db574fc35 d3d12: Add d3d12remap element
Adding new element to support pixel remapping operation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8887>
2025-05-02 22:10:58 +09:00
Seungha Yang
39f4b1ee4d d3d12: Update root signature flags for old Windows10
Use root signature flags which are part of initial Direct3D12 release.
Old OS does not understand newly introduced flags

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8469>
2025-02-13 13:39:11 +00:00
Seungha Yang
967ab2dc50 d3d12screencapturesrc: Fix infinite negotiation on resolution change
Updates crop rect if previous capture got error. The error might
result from resolution change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8444>
2025-02-11 00:34:00 +00:00
Seungha Yang
1902b5ca1b d3d12screencapturesrc: Fix capturing rotated monitor
Acquired and reconstructed frames will have different resolution
if monitor is rotated. Use the copying logic of d3d11 implementation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8444>
2025-02-11 00:34:00 +00:00
Seungha Yang
561714a454 d3d12convert: Add max-mip-levels property
Add support for automatic mipmap generation depending on viewport size

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-15 03:03:47 +09:00
Seungha Yang
caf6f36276 d3d12swapchainsink: Add max-mip-level property
Add support for automatic mipmap generation depending on viewport size

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-15 03:03:42 +09:00
Seungha Yang
11d4b59b73 d3d12videosink: Add max-mip-level property
Add support for automatic mipmap generation depending on viewport size

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-14 17:23:04 +00:00
Seungha Yang
b14448dd37 d3d12mipmapping: Add support for GRAY output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-14 17:23:04 +00:00
Seungha Yang
65c23885d4 d3d12mipmapping: Skip alpha sampling if possible
If input format has no alpha and output format has no alpha,
skip alpha sampling which can reduce the number of instruction slots

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-14 17:23:04 +00:00
Seungha Yang
1e243d0960 d3d12: Move mipgen to libs
converter object will use mipgen object

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290>
2025-01-14 17:23:04 +00:00
Mathieu Duponchelle
3de86b2b97 docs: port plugins to explicit sources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273>
2025-01-13 19:17:13 +01:00
Edward Hervey
67b5414c24 d3d12: Disable implicit fallthrough checks
There are some missing explicit fallthrough statements in the direct headers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-13 12:51:46 +00:00
Seungha Yang
f7e70e5261 d3d12mipmapping: Add mip-levels property
Generating full levels would result in waste of GPU resource
depending on rendering usecase. Adding a property to make it
controllable

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255>
2025-01-08 22:46:14 +00:00
Seungha Yang
ca82e717c6 d3d12mipmapping: Add YUV and 64bits output formats
Add support for YUV and 64bits output formats to avoid
colorspace conversion and bitdepth loss

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255>
2025-01-08 22:46:13 +00:00
Seungha Yang
126d6f0815 d3d12screencapturesrc: Add support for HDR capture in DDA mode
Use IDXGIOutput5::DuplicateOutput1() if HDR is enabled.
Note that scRGB color space is not defined in GStreamer,
this element will output SDR tonemapped frame
with linear or reinhard filtering.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3834
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8227>
2025-01-02 06:55:33 +09:00
Seungha Yang
ca56fd285a d3d12: Add "Since" markers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>
2024-12-29 14:24:55 +00:00
Seungha Yang
eac069b46d d3d12: Add d3d12deinterlace element
Adding D3D12 compute shader based deinterlace element
with YADIF filtering

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8140>
2024-12-14 12:09:23 +00:00
Seungha Yang
44cb3025ff d3d12: Add gst_d3d12_flush_all_devices() method
... and removing implicit flushing behavior on GstD3D12Device::finalize

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7929>
2024-11-20 15:44:58 +00:00
Seungha Yang
43fc9525ca d3d12swapchainsink: Fix error when the sink is reused
Release backbuffer just before releasing swapchain

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7867>
2024-11-12 12:03:18 +00:00
Seungha Yang
80831f77f3 d3d12swapchainsink: Add support for GstColorBalance interface
... and adding hue, saturation, brightness, and contrast properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817>
2024-11-03 21:33:37 +00:00
Seungha Yang
c051070121 d3d12convert: Add support for GstColorBalance interface
... and adding hue, saturation, brightness, and contrast properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817>
2024-11-03 21:33:37 +00:00
Seungha Yang
dc414415a5 d3d12videosink: Add support for GstColorBalance interface
... and adding hue, saturation, brightness, and contrast properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817>
2024-11-03 21:33:37 +00:00
Seungha Yang
d33f5a1de9 d3d12videosink: Add support for mouse scroll events
Handle WM_MOUSEHWHEEL and WM_MOUSEWHEEL events

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7774>
2024-10-31 15:57:43 +00:00
Seungha Yang
8c3d516a14 d3d12: Additional fixes for MinGW build
Various fixes for GCC build, including actual bug fixes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7722>
2024-10-24 06:54:30 +09:00
Seungha Yang
703cc1783e d3d12: Fix MinGW build with installed DirectX-Headers
Required for cerbero MinGW build

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7154>
2024-10-22 21:25:11 +00:00
Seungha Yang
fb6a5c8a0c d3d12mipmapping: Fix debug category
Fixing copying-and-pasting mistake

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7701>
2024-10-20 16:01:10 +00:00
L. E. Segovia
4af2121189 meson: d3d12: fix build with MinGW GCC 14
Also apply the d3d11 fix since both use the same header.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658>
2024-10-12 19:01:46 -03:00
Seungha Yang
7c06001705 d3d12: Shorten various names
Update names of various objects and method to be shorter, for instance
GstD3D12CommandAllocator is changed to GstD3D12CmdAlloc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642>
2024-10-10 10:35:36 -04:00
Sebastian Dröge
b7b24573ce common: Use more efficient versions of GstCapsFeatures API where possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>
2024-09-26 19:26:18 +03:00
Seungha Yang
2d91521dfc d3d12: Fix resource allocation on old Windows version
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED flag was introduced as of
Windows 10 May 2020 Update, and older versions don't understand
the heap flag. Checks the feature support and enables the
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED only if it's supported by OS

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7573>
2024-09-26 12:48:55 +00:00
Seungha Yang
86af5a5f20 d3d12: Add colorconvert and scale elements
In addition to existing d3d12convert element which supports
color conversion and rescale at once, adding
separate color-conversion-only and scale-only elements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7560>
2024-09-24 20:58:47 +09:00
Seungha Yang
cef201734c d3d12: Add d3d12mipmapping element
Adding a new element for texture conversion from single mip level
texture to mipmapping enabled RGBA texture

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555>
2024-09-23 13:52:37 +00:00
Seungha Yang
51e1834e81 d3d12: Use D3D12_FILTER_MIN_MAG_MIP_LINEAR filter by default
... instead of D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT, since we supports
mipmap texture now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555>
2024-09-23 13:52:37 +00:00
Seungha Yang
71d26ee4f8 d3d12swapchainsink: Add auto-resize mode
Automatically resize swapchain backbuffer to be identical to
stream resolution if user calls resize() signal with zero resolution

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550>
2024-09-20 19:19:15 +00:00
Seungha Yang
9dee102867 d3d12swapchainsink: Add support for MSAA
Adding "msaa" property and enable MSAA if supported by device

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550>
2024-09-20 19:19:15 +00:00
Seungha Yang
ce5321be68 d3d12videosink: Use converter config for initial MSAA setup
Avoid redundant pso creation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550>
2024-09-20 19:19:15 +00:00