mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 05:31:15 +00:00
37e1847464
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>
36 lines
1.2 KiB
Meson
36 lines
1.2 KiB
Meson
if host_system != 'windows'
|
|
subdir_done()
|
|
endif
|
|
|
|
have_d2d_h = cc.has_header('d2d1_3.h')
|
|
have_dwrite_h = cc.has_header('dwrite.h')
|
|
have_d3d12video_h = cc.has_header('d3d12video.h')
|
|
dwrite_dep = cc.find_library('dwrite', required: false)
|
|
|
|
executable('d3d12enc-dynamic-reconfigure',
|
|
['d3d12enc-dynamic-reconfigure.c', '../key-handler.c'],
|
|
include_directories : [configinc],
|
|
dependencies: [gst_dep, gstbase_dep, gstvideo_dep],
|
|
c_args : gst_plugins_bad_args,
|
|
install: false
|
|
)
|
|
|
|
executable('d3d12videosink-switch',
|
|
['d3d12videosink-switch.cpp', '../key-handler.c'],
|
|
include_directories : [configinc],
|
|
dependencies: [gst_dep, gstbase_dep, gstvideo_dep],
|
|
c_args : gst_plugins_bad_args,
|
|
install: false
|
|
)
|
|
|
|
if gstd3d12_dep.found()
|
|
if have_d2d_h and have_dwrite_h and have_d3d12video_h and dwrite_dep.found()
|
|
executable('d3d12videosink-overlay', ['d3d12videosink-overlay.cpp'],
|
|
c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'],
|
|
cpp_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'],
|
|
include_directories : [configinc, libsinc],
|
|
dependencies: [gst_dep, gstvideo_dep, gstd3d12_dep, dwrite_dep],
|
|
install: false,
|
|
)
|
|
endif
|
|
endif
|