Seungha Yang
8a35c8a2a5
d3d11compositor: Fix typo in property description
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5481 >
2023-10-14 12:32:46 +00:00
Seungha Yang
c2ed8759c8
d3d11videosink: Don't use DXGI_ALPHA_MODE_PREMULTIPLIED for HWND swapchain
...
It's allowed only for a swapchain type which does composition
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5464 >
2023-10-11 22:22:56 +00:00
Seungha Yang
7b564619cf
d3d11videosink: Fix rendering with initial fullscreen state
...
Change fullscreen mode once the swapchain is fully configured
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5462 >
2023-10-11 21:39:11 +00:00
Seungha Yang
15248d8b84
d3d11videosink: Fix toggling between fullscreen and maximized
...
Use GetWindowPlacement() and SetWindowPlacement() APIs
to remember and restore window status, such as maximized, position,
restore position, etc.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3016
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5462 >
2023-10-11 21:39:11 +00:00
Seungha Yang
f52ecb9607
d3d11converter: Add support for HLSL precompile and bytecode caching
...
Precompile pixel shaders for simple conversion path
(without gamma/primaries conversion) in case of MSVC build.
Even if runtime compile is required (cross-compiled or complex conversion
path), do it only once and reuse the compiled bytecode.
This precompile/caching can save about 95% of time taken by
gst_d3d11_converter_new() call.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3004
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
83a576e854
d3d11: Reuse sampler object
...
The linear sampler object can be reused
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
92cc5722c8
d3d11: Pass HLSL source size to compile function
...
The string size is known at build time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
bfdea297d2
d3d11converter: Set alpha-mode using config
...
... and disallow runtime alpha-mode update for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
8fe26c8a10
d3d11: Simplify HLSL build
...
Unify source/header/entrypoint names
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
cf1286b0e9
d3d11: Add support for HLSL precompile and shader caching
...
Compile HLSL at build time in case of MSVC, and use it if device
supports shader model 5. Also cache/reuse pixel shader and vertex
shader objects.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5426 >
2023-10-03 09:42:03 +00:00
Seungha Yang
6fdcd07e59
d3d11testsrc: Use const buffer in shader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5426 >
2023-10-03 09:42:03 +00:00
Seungha Yang
a7353d8859
d3d11decoder: Fix crash on negotiate() when decoder is not configured
...
The negotiate() can be called by GstVideoDecoder baseclass on GAP event,
and decoder helper object might not be configured at the time
when negotiate() is called.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5394 >
2023-09-27 01:15:26 +09:00
Seungha Yang
39aca8a096
d3d11vp9dec: Fix critical warning
...
Don't query GPU vendor using null device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5353 >
2023-09-19 13:09:57 +00:00
Seungha Yang
2c058b3b99
d3d11decoder: Port to GstDxva
...
Use new DXVA baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:30:07 +09:00
Seungha Yang
85f01d7709
d3d11h265dec: Reconfigure decoder on max-dpb-size change
...
Decoder should create new picture pool for larger DPB size
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5338 >
2023-09-16 22:56:03 +09:00
Seungha Yang
6cf6c73712
d3d11decoder: Move common logic to decoder helper object
...
We can remove duplicated code by using the GstCodecPicture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
97fc02cfe3
av1decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a73c6d7fb6
vp9decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
4571fac946
vp8decoder: Port to GstCodecPicture struct
...
... and remove unused "pts" variable from GstVp8Picture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a5ddf7af3b
mpeg2decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
6e7cab43be
h265decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
ea3dfadbed
h264decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
560faa38c5
d3d11: Update plugin docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5258 >
2023-08-30 15:45:12 +00:00
Seungha Yang
1e381dc1cc
d3d11convert: Passthrough allocation query on same caps
...
Since d3d11convert and its variant elements does not enable basetransform's
passthrough, passthrough allocation query needs to be handled
manually in order to respect downstream element's min/max buffer
requirement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5255 >
2023-08-29 19:46:00 +09:00
Seungha Yang
ff435c80a2
d3d11videosink: Use premultiplied-alpha swapchain
...
Don't ignore alpha component if it's present
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5242 >
2023-08-25 16:54:29 +00:00
L. E. Segovia
b1a5707fcb
windows: Fix mutexes leaking into the exports table
...
Translation unit-local variables must be marked static on Windows,
otherwise they're made available to the whole binary.
See:
https://learn.microsoft.com/en-us/cpp/cpp/program-and-linkage-cpp?view=msvc-170#external-vs-internal-linkage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5185 >
2023-08-16 08:17:05 +00:00
Seungha Yang
6429f04692
meson: d3d11: Add d3d11-wgc option for Windows Graphics Capture feature
...
Make the feature requirement explicitly controllable via build option
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939 >
2023-07-06 21:20:50 +00:00
Seungha Yang
8325623051
d3d11decoder: Reduce DPB size
...
Now all codec baseclasses can inform subclasses of correct max DPB size,
and exception handling (e.g., emergency bumping in h.264) has been
improved as well. Smaller number of additional DPB frame allocation
seems to be safe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4878 >
2023-06-18 18:21:03 +00:00
Seungha Yang
c40f6dac57
d3d11overlaycompositor: Fix resource leak
...
Fixing regression since 94eadc9810
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4885 >
2023-06-19 00:13:00 +09:00
Seungha Yang
01edbf6c6b
d3d11overlaycompositor: Add support for d3d11 memory
...
If overlay buffer is d3d11 memory, use it directly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4826 >
2023-06-15 12:53:02 +00:00
Seungha Yang
94eadc9810
d3d11videosink: Fixing unexpected overlay composition meta drops
...
A buffer can hold multiple GstVideoOverlayCompositionMeta objects.
Should scan all metas on a buffer and render all overlay rectangles
if any.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4862 >
2023-06-15 00:35:09 +00:00
Seungha Yang
ebd5ff73be
d3d11convert: Add support for premultiplied alpha conversion
...
Adding "src-alpha-mode" and "dest-alpha-mode" properties
to support alpha mode conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
80878a6ea4
d3d11testsrc: Add "alpha" and "alpha-mode" properties
...
Adding global alpha and alpha mode options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
cb28a16007
d3d11overlaycompositor: Handle premultiplied alpha in pixel shader
...
Do premultiplied -> straight alpha conversion using GPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
3c5684e085
d3d11: Use gst_util_get_timestamp()
...
instead of duplicating the same code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4794 >
2023-06-08 01:02:45 +00:00
Seungha Yang
4d6a2dea89
d3d11ipcsrc: Stop asynchronously in case of io-mode=import
...
In case of import mode, d3d11ipcsrc does not know when outputted
memories will be released.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Seungha Yang
ef1853aa8d
d3d11ipc: Use unnamed shareable handle
...
Exchanging HANDLE would have smaller overhead than string
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Seungha Yang
aada49c6a6
d3d11ipcsink: Don't clear prepared sample on render
...
render() can be called multiple times for the same prepared sample
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Seungha Yang
e4c43db5d5
d3d11basefilter: Forward video related metas if needed
...
The same as in GstVideoFilter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4751 >
2023-06-02 00:33:52 +00:00
Seungha Yang
8e1677bd6a
d3d11videosink: Fix error on pause and play
...
The show_frame() can be called without prepare() call on paused to
playing state change. Thus the prepared buffer should not be cleared
on show_frame()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4700 >
2023-05-25 13:24:43 +00:00
Seungha Yang
f435d192e1
d3d11videosink: Don't use CS_OWNDC style
...
It's completely unnecessary since we never use
the device context (e.g., BeginPaint() or GetDC() never called).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4684 >
2023-05-20 03:16:47 +00:00
Seungha Yang
ad70dd64f9
d3d11videosink: Add render-rectangle property
...
... and resize HWND on GstVideoOverlay::set_render_rectangle even when
we are rendering without external HWND
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4653 >
2023-05-17 23:06:05 +00:00
Seungha Yang
d335eb8c7c
d3d11convert: Fix for runtime property update
...
Every setup happens in set_caps() method but basetransform will not
call the set_caps() if in/out caps were not changed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4646 >
2023-05-16 16:03:35 +00:00
Seungha Yang
e34397ab09
d3d11: Update element meta
...
Make them consistent, update outdated description and fix some typos
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4619 >
2023-05-12 20:13:58 +00:00
Seungha Yang
ebcebe548d
d3d11videosink: Don't clear prepared buffer on unlock_stop()
...
That can be called between prepare() and render() which results in
unexpected error flow return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4583 >
2023-05-10 16:20:41 +00:00
Seungha Yang
4449881b08
d3d11: Add support for IPC
...
Adding d3d11ipcsrc and d3d11ipcsink elements so that Direct3D11 textures
can be shared between processes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4514 >
2023-05-06 03:19:09 +09:00
Seungha Yang
4710f45e65
d3d11videosink: Fix for ignored initial render rectangle
...
Application can set target render rect before internal HWND
configuration
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2518
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4480 >
2023-04-26 19:39:09 +00:00
Seungha Yang
3811894d9c
d3d11overlay: Enhance documentation and fix typo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4455 >
2023-04-20 18:05:27 +00:00
Thibault Saunier
03ac969240
d3d11: Fix typo in interlace mode name in enum
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4414 >
2023-04-18 14:56:41 +00:00
Seungha Yang
53dc1b96e2
d3d11compositor: Reconfigure resource only when output caps is changed
...
GstD3D11Converter setup is heavy operation since it requires
shader compile, GPU resource allocation, some math, mutex, etc.
We can avoid it if negotiated caps is not changed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4439 >
2023-04-17 17:30:26 +00:00