Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>
"Avoid timing out waiting for inactive pads", FALSE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+ /**
+ * GstD3D12Compositor:async-depth:
+ *
+ * Since: 1.26
+ */
g_object_class_install_property (object_class, PROP_ASYNC_DEPTH,
g_param_spec_uint ("async-depth", "Async Depth",
"Number of in-flight GPU commands which can be scheduled without "
* Boston, MA 02110-1301, USA.
*/
+/**
+ * SECTION:element-d3d12convert
+ * @title: d3d12convert
+ * @short_description: A Direct3D12 based color conversion and video resizing element
+ *
+ * This element resizes video frames and change color space.
+ * By default the element will try to negotiate to the same size on the source
+ * and sinkpad so that no scaling is needed.
+ * It is therefore safe to insert this element in a pipeline to
+ * get more robust behaviour without any cost if no scaling is needed.
+ *
+ * ## Example launch line
+ * ```
+ * gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12 ! d3d12upload ! d3d12convert ! d3d12videosink
+ * ```
+ * This will output a test video (generated in NV12 format) in a video
+ * window. If the video sink selected does not support NV12
+ * d3d12convert will automatically convert the video to a format understood
+ * by the video sink.
+ *
+ * Since: 1.24
+ */
+
+/**
+ * SECTION:element-d3d12colorconvert
+ * @title: d3d12colorconvert
+ *
+ * A Direct3D12 based color conversion element
+ *
+ * ## Example launch line
+ * ```
+ * gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12 ! d3d12upload ! d3d12colorconvert ! d3d12download ! video/x-raw,format=RGBA ! fakesink
+ * ```
+ * This will upload a test video (generated in NV12 format) to Direct3D12
+ * memory space and convert it to RGBA format. Then a converted Direct3D12
+ * frame will be downloaded to system memory space.
+ *
+ * Since: 1.26
+ */
+
+/**
+ * SECTION:element-d3d12scale
+ * @title: d3d12scale
+ *
+ * A Direct3D12 based video resizing element
+ *
+ * ## Example launch line
+ * ```
+ * gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480 ! d3d12upload ! d3d12scale ! d3d12download ! video/x-raw,width=1280,height=720 ! fakesink
+ * ```
+ * This will upload a 640x480 resolution test video to Direct3D12
+ * memory space and resize it to 1280x720 resolution. Then a resized Direct3D12
+ * frame will be downloaded to system memory space.
+ *
+ * Since: 1.26
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
(GParamFlags) (GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS)));
+ /**
+ * GstD3D12BaseConvert:async-depth:
+ *
+ * Since: 1.26
+ */
g_object_class_install_property (object_class, PROP_ASYNC_DEPTH,
g_param_spec_uint ("async-depth", "Async Depth",
"Number of in-flight GPU commands which can be scheduled without "
* Boston, MA 02110-1301, USA.
*/
+/**
+ * SECTION:element-d3d12deinterlace
+ * @title: d3d12deinterlace
+ *
+ * A Direct3D12 based deinterlacing element
+ *
+ * Since: 1.26
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
GST_D3D12_DEINTERLACE_FIELDS_BOTTOM,
};
+/**
+ * GstD3D12DeinterlaceFields:
+ *
+ * Since: 1.26
+ */
#define GST_TYPE_D3D12_DEINTERLACE_FIELDS (gst_d3d12_deinterlace_fields_get_type())
static GType
gst_d3d12_deinterlace_fields_get_type (void)
GST_D3D12_CALL_ONCE_BEGIN {
static const GEnumValue types[] = {
+ /**
+ * GstD3D12DeinterlaceFields::all:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_FIELDS_ALL, "All fields", "all"},
+
+ /**
+ * GstD3D12DeinterlaceFields::top:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_FIELDS_TOP, "Top fields only", "top"},
+
+
+ /**
+ * GstD3D12DeinterlaceFields::bottom:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_FIELDS_BOTTOM, "Bottom fields only", "bottom"},
{0, nullptr, nullptr},
};
GST_D3D12_DEINTERLACE_ENGINE_COMPUTE,
};
+/**
+ * GstD3D12DeinterlaceEngine:
+ *
+ * Since: 1.26
+ */
#define GST_TYPE_D3D12_DEINTERLACE_ENGINE (gst_d3d12_deinterlace_engine_get_type())
static GType
gst_d3d12_deinterlace_engine_get_type (void)
GST_D3D12_CALL_ONCE_BEGIN {
static const GEnumValue types[] = {
+ /**
+ * GstD3D12DeinterlaceEngine::auto:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_ENGINE_AUTO,
"iGPU uses 3D engine, dGPU uses compute engine", "auto"},
+
+ /**
+ * GstD3D12DeinterlaceEngine::3d:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_ENGINE_3D, "3D", "3d"},
+
+ /**
+ * GstD3D12DeinterlaceEngine::compute:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_DEINTERLACE_ENGINE_COMPUTE, "Compute", "compute"},
{0, nullptr, nullptr},
};
filter_class->set_info = GST_DEBUG_FUNCPTR (gst_d3d12_deinterlace_set_info);
- gst_type_mark_as_plugin_api (GST_TYPE_D3D12_SAMPLING_METHOD,
+ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_DEINTERLACE_FIELDS,
+ (GstPluginAPIFlags) 0);
+ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_DEINTERLACE_ENGINE,
(GstPluginAPIFlags) 0);
GST_DEBUG_CATEGORY_INIT (gst_d3d12_deinterlace_debug, "d3d12deinterlace", 0,
static GstFlowReturn gst_d3d12_memory_copy_transform (GstBaseTransform * trans,
GstBuffer * inbuf, GstBuffer * outbuf);
+/**
+ * GstD3D12MemoryCopy:
+ *
+ * Since: 1.26
+ */
#define gst_d3d12_memory_copy_parent_class parent_class
G_DEFINE_ABSTRACT_TYPE (GstD3D12MemoryCopy, gst_d3d12_memory_copy,
GST_TYPE_BASE_TRANSFORM);
trans_class->transform = GST_DEBUG_FUNCPTR (gst_d3d12_memory_copy_transform);
meta_tag_video_quark = g_quark_from_static_string (GST_META_TAG_VIDEO_STR);
+
+ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_MEMORY_COPY,
+ (GstPluginAPIFlags) 0);
GST_DEBUG_CATEGORY_INIT (gst_d3d12_memory_copy_debug,
"d3d12memorycopy", 0, "d3d12memorycopy");
}
* Boston, MA 02110-1301, USA.
*/
+/**
+ * SECTION:element-d3d12mipmapping
+ * @title: d3d12mipmapping
+ * @short_description: Direct3D12 Mipmap generator element
+ *
+ * d3d12mipmapping element generates mipmap enabled Direct3D12 textures
+ * from input textures
+ *
+ * Since: 1.26
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef HAVE_WGC
/**
- * GstD3D11ScreenCaptureAPI:
+ * GstD3D12ScreenCaptureAPI:
*
* Since: 1.26
*/
*
* Since: 1.26
*/
-#define GST_TYPE_D3D12_WINDOW_CAPTURE_MODE (gst_d3d11_window_capture_mode_get_type())
+#define GST_TYPE_D3D12_WINDOW_CAPTURE_MODE (gst_d3d12_window_capture_mode_get_type())
static GType
-gst_d3d11_window_capture_mode_get_type (void)
+gst_d3d12_window_capture_mode_get_type (void)
{
static GType type = 0;
* Boston, MA 02110-1301, USA.
*/
+/**
+ * SECTION:element-d3d12swapchainsink
+ * @title: d3d12swapchainsink
+ *
+ * d3d12swapchainsink offers DXGI swapchain created via
+ * IDXGIFactory2::CreateSwapChainForComposition for
+ * DirectComposition, WinUI3, and UWP applications, and presents video frames
+ * using swapchain
+ *
+ * Since: 1.26
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
0, 1, DEFAULT_ALPHA,
(GParamFlags) (G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY |
G_PARAM_STATIC_STRINGS)));
+
+ /**
+ * GstD3D12TestSrc:async-depth:
+ *
+ * Since: 1.26
+ */
g_object_class_install_property (object_class, PROP_ASYNC_DEPTH,
g_param_spec_uint ("async-depth", "Async Depth",
"Number of in-flight GPU commands which can be scheduled without "
* creating child window. Note that once direct swapchain is configured,
* GDI will no longer work with the given window handle.
*
- * If enabled, GstVideoOverlay::set_render_rectangle() will be ignored,
+ * If enabled, GstVideoOverlay::set_render_rectangle will be ignored,
* and application should handle window positioning.
*
* Since: 1.26
* Singla handler should not assume the @device11on12 and @resource11
* are always valid handle since d3d11on12 API may not be supported.
* The @resource11 is wrapped resource created via
- * ID3D11On12Device::CreateWrappedResource(). Thus, signal handler must follow
- * required steps for d3d11on12 device, for example,
- * ID3D11On12Device::AcquireWrappedResources() must be called before recoding
- * GPU commands. Once GPU commands are recoded via d3d11 or d2d APIs,
+ * [ID3D11On12Device::CreateWrappedResource](https://learn.microsoft.com/en-us/windows/win32/api/d3d11on12/nf-d3d11on12-id3d11on12device-createwrappedresource).
+ * Thus, signal handler must follow required steps for d3d11on12 device, for example,
+ * [ID3D11On12Device::AcquireWrappedResources](https://learn.microsoft.com/en-us/windows/win32/api/d3d11on12/nf-d3d11on12-id3d11on12device-acquirewrappedresources)
+ * must be called before recoding GPU commands.
+ * Once GPU commands are recoded via d3d11 or d2d APIs,
* the resource should be released via
- * ID3D11On12Device::ReleaseWrappedResources(), and then
- * ID3D11DeviceContext::Flush() must be called in the signal handler.
+ * [ID3D11On12Device::ReleaseWrappedResources](https://learn.microsoft.com/en-us/windows/win32/api/d3d11on12/nf-d3d11on12-id3d11on12device-releasewrappedresources),
+ * and then [ID3D11DeviceContext::Flush](https://learn.microsoft.com/en-us/windows/win32/api/d3d11/nf-d3d11-id3d11devicecontext-flush)
+ * must be called in the signal handler.
*
* If "overlay-mode" is GST_D3D12_WINDOW_OVERLAY_D2D and d2d device is
* available, @context2d will be valid handle. When this signal is emitted,
gst_type_mark_as_plugin_api (GST_TYPE_D3D12_MSAA_MODE, (GstPluginAPIFlags) 0);
gst_type_mark_as_plugin_api (GST_TYPE_D3D12_SAMPLING_METHOD,
(GstPluginAPIFlags) 0);
+ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_WINDOW_OVERLAY_MODE,
+ (GstPluginAPIFlags) 0);
+ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_VIDEO_SINK_DISPLAY_FORMAT,
+ (GstPluginAPIFlags) 0);
}
static void
static guint d3d12_window_signals[SIGNAL_LAST] = { 0, };
+/**
+ * GstD3D12WindowOverlayMode:
+ *
+ * Since: 1.26
+ */
GType
gst_d3d12_window_overlay_mode_get_type (void)
{
GST_D3D12_CALL_ONCE_BEGIN {
static const GFlagsValue mode_types[] = {
+ /**
+ * GstD3D12WindowOverlayMode::none:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_WINDOW_OVERLAY_NONE, "None", "none"},
+
+ /**
+ * GstD3D12WindowOverlayMode::d3d12:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_WINDOW_OVERLAY_D3D12,
"Emits present signal with Direct3D12 resources", "d3d12"},
+
+ /**
+ * GstD3D12WindowOverlayMode::d3d11:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_WINDOW_OVERLAY_D3D11,
"Emits present signal with Direct3D12/11 resources", "d3d11"},
+
+ /**
+ * GstD3D12WindowOverlayMode::d2d:
+ *
+ * Since: 1.26
+ */
{GST_D3D12_WINDOW_OVERLAY_D2D,
"Emit present signal with Direct3D12/11 and Direct2D resources",
"d2d"},