From 8794f4b713d950eba64bda2309cf78cacb20b2a0 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 21 Feb 2021 17:38:38 +0900 Subject: [PATCH] d3d11: Documentation update * Update class metadata * for wrapper bin elements to be distinguishable from internal element. * D3D11 -> Direct3D11 for consistency * Add missing Since mark everywhere * Update plugin cache Part-of: --- docs/plugins/gst_plugins_cache.json | 2042 +++++++++++++++++++++++++++++------ sys/d3d11/gstd3d11compositor.c | 35 +- sys/d3d11/gstd3d11compositorbin.c | 35 +- sys/d3d11/gstd3d11deinterlace.cpp | 42 +- sys/d3d11/gstd3d11desktopdupsrc.c | 13 +- sys/d3d11/gstd3d11download.c | 24 +- sys/d3d11/gstd3d11h264dec.c | 19 +- sys/d3d11/gstd3d11h265dec.c | 19 +- sys/d3d11/gstd3d11mpeg2dec.c | 21 +- sys/d3d11/gstd3d11upload.c | 19 +- sys/d3d11/gstd3d11videosink.c | 44 +- sys/d3d11/gstd3d11videosinkbin.c | 63 +- sys/d3d11/gstd3d11vp8dec.c | 21 +- sys/d3d11/gstd3d11vp9dec.c | 21 +- sys/d3d11/plugin.c | 6 - 15 files changed, 2025 insertions(+), 399 deletions(-) diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index 0553a5f..995e41a 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -5307,11 +5307,12 @@ "d3d11": { "description": "Direct3D11 plugin", "elements": { - "d3d11convert": { - "author": "Seungha Yang , Jeongki Kim ", - "description": "Resizes video and allow color conversion using D3D11", + "d3d11colorconvert": { + "author": "Seungha Yang ", + "description": "Color conversion using Direct3D11", "hierarchy": [ "GstD3D11ColorConvert", + "GstD3D11BaseConvert", "GstD3D11BaseFilter", "GstBaseTransform", "GstElement", @@ -5319,199 +5320,226 @@ "GInitiallyUnowned", "GObject" ], - "klass": "Filter/Converter/Scaler/Video/Hardware", - "long-name": "Direct3D11 colorspace converter and scaler", + "klass": "Filter/Converter/Video/Hardware", + "long-name": "Direct3D11 colorspace converter", "pad-templates": { "sink": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", "presence": "always" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } }, "rank": "none" }, - "d3d11download": { - "author": "Seungha Yang ", - "description": "Downloads D3D11 texture memory into system memory", + "d3d11compositor": { + "author": "Seungha Yang ", + "description": "A Direct3D11 compositor bin", "hierarchy": [ - "GstD3D11Download", - "GstD3D11BaseFilter", - "GstBaseTransform", + "GstD3D11CompositorBin", + "GstBin", "GstElement", "GstObject", "GInitiallyUnowned", "GObject" ], - "klass": "Filter/Video", - "long-name": "Direct3D11 downloader", - "pad-templates": { - "sink": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", - "direction": "sink", - "presence": "always" - }, - "src": { - "caps": "video/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", - "direction": "src", - "presence": "always" - } - }, - "rank": "none" - }, - "d3d11h264dec": { - "author": "Seungha Yang ", - "description": "A Direct3D11 based H.264 video decoder", - "hierarchy": [ - "GstD3D11H264Dec", - "GstH264Decoder", - "GstVideoDecoder", - "GstElement", - "GstObject", - "GInitiallyUnowned", - "GObject" + "interfaces": [ + "GstChildProxy" ], - "klass": "Codec/Decoder/Video/Hardware", - "long-name": "Direct3D11 H.264 Intel(R) Iris(R) Plus Graphics Decoder", + "klass": "Filter/Editor/Video/Compositor", + "long-name": "Direct3D11 Compositor Bin", "pad-templates": { - "sink": { - "caps": "video/x-h264:\n stream-format: { (string)avc, (string)avc3, (string)byte-stream }\n alignment: au\n profile: { (string)high, (string)main, (string)constrained-baseline, (string)baseline }\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "sink_%%u": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", - "presence": "always" + "presence": "request", + "type": "GstD3D11CompositorBinInput" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: NV12\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\nvideo/x-raw:\n format: NV12\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", - "presence": "always" + "presence": "always", + "type": "GstD3D11CompositorBinPad" } }, "properties": { "adapter": { - "blurb": "DXGI Adapter index for creating device", + "blurb": "Adapter index for creating device (-1 for default)", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, "default": "0", - "max": "-1", + "max": "2147483647", + "min": "-1", + "mutable": "ready", + "readable": true, + "type": "gint", + "writable": true + }, + "background": { + "blurb": "Background type", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "checker (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBackground", + "writable": true + }, + "emit-signals": { + "blurb": "Send signals", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "latency": { + "blurb": "Additional latency in live mode to allow upstream to take longer to produce buffers for the current position (in nanoseconds)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "18446744073709551615", "min": "0", "mutable": "null", "readable": true, - "type": "guint", - "writable": false + "type": "guint64", + "writable": true }, - "device-id": { - "blurb": "DXGI Device ID", + "min-upstream-latency": { + "blurb": "When sources with a higher latency are expected to be plugged in dynamically after the aggregator has started playing, this allows overriding the minimum latency reported by the initial source(s). This is only taken into account when larger than the actually reported minimum latency. (nanoseconds)", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "35410", - "max": "-1", + "default": "0", + "max": "18446744073709551615", "min": "0", "mutable": "null", "readable": true, - "type": "guint", + "type": "guint64", + "writable": true + }, + "mixer": { + "blurb": "The d3d11 mixer chain to use", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "mutable": "null", + "readable": true, + "type": "GstElement", "writable": false }, - "vendor-id": { - "blurb": "DXGI Vendor ID", + "start-time": { + "blurb": "Start time to use if start-time-selection=set", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "32902", - "max": "-1", + "default": "18446744073709551615", + "max": "18446744073709551615", "min": "0", "mutable": "null", "readable": true, - "type": "guint", - "writable": false + "type": "guint64", + "writable": true + }, + "start-time-selection": { + "blurb": "Decides which start time is output", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "zero (0)", + "mutable": "null", + "readable": true, + "type": "GstAggregatorStartTimeSelection", + "writable": true } }, "rank": "secondary" }, - "d3d11h265dec": { - "author": "Seungha Yang ", - "description": "A Direct3D11 based H.265 video decoder", + "d3d11compositorelement": { + "author": "Seungha Yang ", + "description": "A Direct3D11 compositor", "hierarchy": [ - "GstD3D11H265Dec", - "GstH265Decoder", - "GstVideoDecoder", + "GstD3D11Compositor", + "GstVideoAggregator", + "GstAggregator", "GstElement", "GstObject", "GInitiallyUnowned", "GObject" ], - "klass": "Codec/Decoder/Video/Hardware", - "long-name": "Direct3D11 H.265 Intel(R) Iris(R) Plus Graphics Decoder", + "interfaces": [ + "GstChildProxy" + ], + "klass": "Filter/Editor/Video/Compositor", + "long-name": "Direct3D11 Compositor", "pad-templates": { - "sink": { - "caps": "video/x-h265:\n stream-format: { (string)hev1, (string)hvc1, (string)byte-stream }\n alignment: au\n framerate: [ 0/1, 2147483647/1 ]\n profile: { (string)main, (string)main-10 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "sink_%%u": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA, BGRA }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", - "presence": "always" + "presence": "request", + "type": "GstD3D11CompositorPad" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n framerate: [ 0/1, 2147483647/1 ]\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\nvideo/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA, BGRA }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", - "presence": "always" + "presence": "always", + "type": "GstAggregatorPad" } }, "properties": { "adapter": { - "blurb": "DXGI Adapter index for creating device", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "0", - "max": "-1", - "min": "0", - "mutable": "null", - "readable": true, - "type": "guint", - "writable": false - }, - "device-id": { - "blurb": "DXGI Device ID", + "blurb": "Adapter index for creating device (-1 for default)", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "35410", - "max": "-1", - "min": "0", - "mutable": "null", + "default": "-1", + "max": "2147483647", + "min": "-1", + "mutable": "ready", "readable": true, - "type": "guint", - "writable": false + "type": "gint", + "writable": true }, - "vendor-id": { - "blurb": "DXGI Vendor ID", + "background": { + "blurb": "Background type", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "32902", - "max": "-1", - "min": "0", + "default": "checker (0)", "mutable": "null", "readable": true, - "type": "guint", - "writable": false + "type": "GstD3D11CompositorBackground", + "writable": true } }, - "rank": "secondary" + "rank": "none" }, - "d3d11upload": { - "author": "Seungha Yang ", - "description": "Uploads data into D3D11 texture memory", + "d3d11convert": { + "author": "Seungha Yang , Jeongki Kim ", + "description": "Resizes video and allow color conversion using Direct3D11", "hierarchy": [ - "GstD3D11Upload", + "GstD3D11Convert", + "GstD3D11BaseConvert", "GstD3D11BaseFilter", "GstBaseTransform", "GstElement", @@ -5519,27 +5547,27 @@ "GInitiallyUnowned", "GObject" ], - "klass": "Filter/Video", - "long-name": "Direct3D11 uploader", + "klass": "Filter/Converter/Scaler/Video/Hardware", + "long-name": "Direct3D11 colorspace converter and scaler", "pad-templates": { "sink": { - "caps": "video/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", "presence": "always" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } }, "rank": "none" }, - "d3d11videosink": { - "author": "Seungha Yang ", - "description": "A Direct3D11 based videosink", + "d3d11deinterlace": { + "author": "Seungha Yang ", + "description": "A Direct3D11 based deinterlacer bin", "hierarchy": [ - "GstD3D11VideoSinkBin", + "GstD3D11DeinterlaceBin", "GstBin", "GstElement", "GstObject", @@ -5547,294 +5575,223 @@ "GObject" ], "interfaces": [ - "GstChildProxy", - "GstVideoOverlay", - "GstNavigation" + "GstChildProxy" ], - "klass": "Sink/Video", - "long-name": "Direct3D11 video sink bin", + "klass": "Filter/Effect/Video/Deinterlace/Hardware", + "long-name": "Direct3D11 Intel(R) Iris(R) Plus Graphics Deinterlacer Bin", "pad-templates": { "sink": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", "direction": "sink", "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "direction": "src", + "presence": "always" } }, "properties": { "adapter": { - "blurb": "Adapter index for creating device (-1 for default)", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "-1", - "max": "2147483647", - "min": "-1", - "mutable": "ready", - "readable": true, - "type": "gint", - "writable": true - }, - "async": { - "blurb": "Go asynchronously to PAUSED", + "blurb": "DXGI Adapter index for creating device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "true", + "default": "0", + "max": "-1", + "min": "0", "mutable": "null", "readable": true, - "type": "gboolean", - "writable": true + "type": "guint", + "writable": false }, - "blocksize": { - "blurb": "Size in bytes to pull per buffer (0 = default)", + "device-id": { + "blurb": "DXGI Device ID", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "4096", + "default": "35410", "max": "-1", "min": "0", "mutable": "null", "readable": true, "type": "guint", - "writable": true + "writable": false }, - "enable-last-sample": { - "blurb": "Enable the last-sample property", + "method": { + "blurb": "Deinterlace Method. Use can set multiple methods as a flagset and element will select one of method automatically. If deinterlacing device failed to deinterlace with given mode, fallback might happen by the device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "true", - "mutable": "null", + "default": "bob", + "mutable": "ready", "readable": true, - "type": "gboolean", + "type": "GstD3D11DeinterlaceMethod", "writable": true }, - "enable-navigation-events": { - "blurb": "When enabled, navigation events are sent upstream", + "qos": { + "blurb": "Handle Quality-of-Service events", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "true", + "default": "false", "mutable": "null", "readable": true, "type": "gboolean", "writable": true }, - "force-aspect-ratio": { - "blurb": "When enabled, scaling will respect original aspect ratio", + "supported-methods": { + "blurb": "Set of supported deinterlace methods by device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "true", + "default": "mocomp+adaptive+bob+blend", "mutable": "null", "readable": true, - "type": "gboolean", - "writable": true + "type": "GstD3D11DeinterlaceMethod", + "writable": false }, - "fullscreen": { - "blurb": "Ignored when \"fullscreen-toggle-mode\" does not include \"property\"", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "false", - "mutable": "null", - "readable": true, - "type": "gboolean", - "writable": true - }, - "fullscreen-toggle-mode": { - "blurb": "Full screen toggle mode used to trigger fullscreen mode change", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "none", - "mutable": "null", - "readable": true, - "type": "GstD3D11WindowFullscreenToggleMode", - "writable": true - }, - "last-sample": { - "blurb": "The last sample received in the sink", + "vendor-id": { + "blurb": "DXGI Vendor ID", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, + "default": "32902", + "max": "-1", + "min": "0", "mutable": "null", "readable": true, - "type": "GstSample", + "type": "guint", "writable": false + } + }, + "rank": "marginal" + }, + "d3d11deinterlaceelement": { + "author": "Seungha Yang ", + "description": "A Direct3D11 based deinterlacer", + "hierarchy": [ + "GstD3D11Deinterlace", + "GstBaseTransform", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Filter/Effect/Video/Deinterlace/Hardware", + "long-name": "Direct3D11 Intel(R) Iris(R) Plus Graphics Deinterlacer", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:D3D11Memory):\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n format: { NV12 }\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n format: { NV12 }\n", + "direction": "sink", + "presence": "always" }, - "max-bitrate": { - "blurb": "The maximum bits per second to render (0 = disabled)", + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n format: { NV12 }\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n format: { NV12 }\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "adapter": { + "blurb": "DXGI Adapter index for creating device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, "default": "0", - "max": "18446744073709551615", + "max": "-1", "min": "0", "mutable": "null", "readable": true, - "type": "guint64", - "writable": true - }, - "max-lateness": { - "blurb": "Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "5000000", - "max": "9223372036854775807", - "min": "-1", - "mutable": "null", - "readable": true, - "type": "gint64", - "writable": true + "type": "guint", + "writable": false }, - "processing-deadline": { - "blurb": "Maximum processing deadline in nanoseconds", + "device-id": { + "blurb": "DXGI Device ID", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "15000000", - "max": "18446744073709551615", + "default": "35410", + "max": "-1", "min": "0", "mutable": "null", "readable": true, - "type": "guint64", - "writable": true - }, - "qos": { - "blurb": "Generate Quality-of-Service events upstream", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "true", - "mutable": "null", - "readable": true, - "type": "gboolean", - "writable": true + "type": "guint", + "writable": false }, - "render-delay": { - "blurb": "Additional render delay of the sink in nanoseconds", + "method": { + "blurb": "Deinterlace Method. Use can set multiple methods as a flagset and element will select one of method automatically. If deinterlacing device failed to deinterlace with given mode, fallback might happen by the device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "0", - "max": "18446744073709551615", - "min": "0", - "mutable": "null", - "readable": true, - "type": "guint64", - "writable": true - }, - "show-preroll-frame": { - "blurb": "Whether to render video frames during preroll", - "conditionally-available": false, - "construct": true, - "construct-only": false, - "controllable": false, - "default": "true", - "mutable": "null", + "default": "bob", + "mutable": "ready", "readable": true, - "type": "gboolean", + "type": "GstD3D11DeinterlaceMethod", "writable": true }, - "stats": { - "blurb": "Sink Statistics", + "supported-methods": { + "blurb": "Set of supported deinterlace methods by device", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "application/x-gst-base-sink-stats, average-rate=(double)0, dropped=(guint64)0, rendered=(guint64)0;", + "default": "mocomp+adaptive+bob+blend", "mutable": "null", "readable": true, - "type": "GstStructure", + "type": "GstD3D11DeinterlaceMethod", "writable": false }, - "sync": { - "blurb": "Sync on the clock", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "true", - "mutable": "null", - "readable": true, - "type": "gboolean", - "writable": true - }, - "throttle-time": { - "blurb": "The time to keep between rendered buffers (0 = disabled)", + "vendor-id": { + "blurb": "DXGI Vendor ID", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "0", - "max": "18446744073709551615", + "default": "32902", + "max": "-1", "min": "0", "mutable": "null", "readable": true, - "type": "guint64", - "writable": true - }, - "ts-offset": { - "blurb": "Timestamp offset in nanoseconds", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "0", - "max": "9223372036854775807", - "min": "-9223372036854775808", - "mutable": "null", - "readable": true, - "type": "gint64", - "writable": true + "type": "guint", + "writable": false } }, - "rank": "primary" + "rank": "none" }, - "d3d11videosinkelement": { - "author": "Seungha Yang ", - "description": "A Direct3D11 based videosink", + "d3d11desktopdupsrc": { + "author": "Seungha Yang ", + "description": "Capture desktop image by using Desktop Duplication API", "hierarchy": [ - "GstD3D11VideoSink", - "GstVideoSink", - "GstBaseSink", + "GstD3D11DesktopDupSrc", + "GstPushSrc", + "GstBaseSrc", "GstElement", "GstObject", "GInitiallyUnowned", "GObject" ], - "interfaces": [ - "GstVideoOverlay", - "GstNavigation" - ], - "klass": "Sink/Video", - "long-name": "Direct3D11 video sink", + "klass": "Source/Video", + "long-name": "Direct3D11 desktop duplication src", "pad-templates": { - "sink": { - "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", - "direction": "sink", + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: BGRA\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "src", "presence": "always" } }, "properties": { - "adapter": { - "blurb": "Adapter index for creating device (-1 for default)", + "monitor-index": { + "blurb": "Zero-based index for monitor to capture (-1 = primary monitor)", "conditionally-available": false, "construct": false, "construct-only": false, @@ -5847,32 +5804,8 @@ "type": "gint", "writable": true }, - "enable-navigation-events": { - "blurb": "When enabled, navigation events are sent upstream", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "true", - "mutable": "null", - "readable": true, - "type": "gboolean", - "writable": true - }, - "force-aspect-ratio": { - "blurb": "When enabled, scaling will respect original aspect ratio", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "true", - "mutable": "null", - "readable": true, - "type": "gboolean", - "writable": true - }, - "fullscreen": { - "blurb": "Ignored when \"fullscreen-toggle-mode\" does not include \"property\"", + "show-cursor": { + "blurb": "Whether to show mouse cursor", "conditionally-available": false, "construct": false, "construct-only": false, @@ -5882,28 +5815,44 @@ "readable": true, "type": "gboolean", "writable": true + } + }, + "rank": "none" + }, + "d3d11download": { + "author": "Seungha Yang ", + "description": "Downloads Direct3D11 texture memory into system memory", + "hierarchy": [ + "GstD3D11Download", + "GstD3D11BaseFilter", + "GstBaseTransform", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Filter/Video", + "long-name": "Direct3D11 downloader", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" }, - "fullscreen-toggle-mode": { - "blurb": "Full screen toggle mode used to trigger fullscreen mode change", - "conditionally-available": false, - "construct": false, - "construct-only": false, - "controllable": false, - "default": "none", - "mutable": "null", - "readable": true, - "type": "GstD3D11WindowFullscreenToggleMode", - "writable": true + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "src", + "presence": "always" } }, "rank": "none" }, - "d3d11vp8dec": { + "d3d11h264dec": { "author": "Seungha Yang ", - "description": "A Direct3D11 based VP8 video decoder", + "description": "A Direct3D11/DXVA H.264 video decoder", "hierarchy": [ - "GstD3D11Vp8Dec", - "GstVp8Decoder", + "GstD3D11H264Dec", + "GstH264Decoder", "GstVideoDecoder", "GstElement", "GstObject", @@ -5911,15 +5860,15 @@ "GObject" ], "klass": "Codec/Decoder/Video/Hardware", - "long-name": "Direct3D11 VP8 Intel(R) Iris(R) Plus Graphics Decoder", + "long-name": "Direct3D11/DXVA H.264 Intel(R) Iris(R) Plus Graphics Decoder", "pad-templates": { "sink": { - "caps": "video/x-vp8:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "caps": "video/x-h264:\n stream-format: { (string)avc, (string)avc3, (string)byte-stream }\n alignment: au\n profile: { (string)high, (string)progressive-high, (string)constrained-high, (string)main, (string)constrained-baseline, (string)baseline }\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", "direction": "sink", "presence": "always" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n framerate: [ 0/1, 2147483647/1 ]\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\nvideo/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\nvideo/x-raw:\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", "direction": "src", "presence": "always" } @@ -5970,12 +5919,12 @@ }, "rank": "secondary" }, - "d3d11vp9dec": { + "d3d11h265dec": { "author": "Seungha Yang ", - "description": "A Direct3D11 based VP9 video decoder", + "description": "A Direct3D11/DXVA H.265 video decoder", "hierarchy": [ - "GstD3D11Vp9Dec", - "GstVp9Decoder", + "GstD3D11H265Dec", + "GstH265Decoder", "GstVideoDecoder", "GstElement", "GstObject", @@ -5983,15 +5932,15 @@ "GObject" ], "klass": "Codec/Decoder/Video/Hardware", - "long-name": "Direct3D11 VP9 Intel(R) Iris(R) Plus Graphics Decoder", + "long-name": "Direct3D11/DXVA H.265 Intel(R) Iris(R) Plus Graphics Decoder", "pad-templates": { "sink": { - "caps": "video/x-vp9:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "caps": "video/x-h265:\n stream-format: { (string)hev1, (string)hvc1, (string)byte-stream }\n alignment: au\n profile: { (string)main, (string)main-10 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", "direction": "sink", "presence": "always" }, "src": { - "caps": "video/x-raw(memory:D3D11Memory):\n framerate: [ 0/1, 2147483647/1 ]\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\nvideo/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "caps": "video/x-raw:\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n\nvideo/x-raw(format:Interlaced):\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n interlace-mode: alternate\n\nvideo/x-raw(memory:D3D11Memory):\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", "direction": "src", "presence": "always" } @@ -6041,13 +5990,85 @@ } }, "rank": "secondary" - } - }, - "filename": "gstd3d11", - "license": "LGPL", - "other-types": { - "GstD3D11BaseFilter": { + }, + "d3d11mpeg2dec": { + "author": "Seungha Yang ", + "description": "A Direct3D11/DXVA MPEG2 video decoder", + "hierarchy": [ + "GstD3D11Mpeg2Dec", + "GstMpeg2Decoder", + "GstVideoDecoder", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Codec/Decoder/Video/Hardware", + "long-name": "Direct3D11/DXVA MPEG2 Intel(R) Iris(R) Plus Graphics Decoder", + "pad-templates": { + "sink": { + "caps": "video/mpeg:\n mpegversion: 2\n systemstream: false\n profile: { (string)main, (string)simple }\n width: [ 64, 1920 ]\n height: [ 64, 1920 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: NV12\n width: [ 64, 1920 ]\n height: [ 64, 1920 ]\nvideo/x-raw:\n format: NV12\n width: [ 64, 1920 ]\n height: [ 64, 1920 ]\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "adapter": { + "blurb": "DXGI Adapter index for creating device", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "device-id": { + "blurb": "DXGI Device ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "35410", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "vendor-id": { + "blurb": "DXGI Vendor ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "32902", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + } + }, + "rank": "secondary" + }, + "d3d11scale": { + "author": "Seungha Yang ", + "description": "Resizes video using Direct3D11", "hierarchy": [ + "GstD3D11Scale", + "GstD3D11BaseConvert", "GstD3D11BaseFilter", "GstBaseTransform", "GstElement", @@ -6055,7 +6076,75 @@ "GInitiallyUnowned", "GObject" ], - "kind": "object", + "klass": "Filter/Converter/Video/Scaler/Hardware", + "long-name": "Direct3D11 scaler", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "src", + "presence": "always" + } + }, + "rank": "none" + }, + "d3d11upload": { + "author": "Seungha Yang ", + "description": "Uploads data into Direct3D11 texture memory", + "hierarchy": [ + "GstD3D11Upload", + "GstD3D11BaseFilter", + "GstBaseTransform", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Filter/Video", + "long-name": "Direct3D11 uploader", + "pad-templates": { + "sink": { + "caps": "video/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "src", + "presence": "always" + } + }, + "rank": "none" + }, + "d3d11videosink": { + "author": "Seungha Yang ", + "description": "A Direct3D11 based videosink bin", + "hierarchy": [ + "GstD3D11VideoSinkBin", + "GstBin", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstChildProxy", + "GstVideoOverlay", + "GstNavigation" + ], + "klass": "Sink/Video", + "long-name": "Direct3D11 video sink bin", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" + } + }, "properties": { "adapter": { "blurb": "Adapter index for creating device (-1 for default)", @@ -6070,8 +6159,1253 @@ "readable": true, "type": "gint", "writable": true - } - } + }, + "async": { + "blurb": "Go asynchronously to PAUSED", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "blocksize": { + "blurb": "Size in bytes to pull per buffer (0 = default)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "4096", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "draw-on-shared-texture": { + "blurb": "Draw on user provided shared texture instead of window. When enabled, user can pass application's own texture to sink by using \"draw\" action signal on \"begin-draw\" signal handler, so that sink can draw video data on application's texture. Supported texture formats for user texture are DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM, and DXGI_FORMAT_R10G10B10A2_UNORM.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "enable-last-sample": { + "blurb": "Enable the last-sample property", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "enable-navigation-events": { + "blurb": "When enabled, navigation events are sent upstream", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "force-aspect-ratio": { + "blurb": "When enabled, scaling will respect original aspect ratio", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "fullscreen": { + "blurb": "Ignored when \"fullscreen-toggle-mode\" does not include \"property\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "fullscreen-toggle-mode": { + "blurb": "Full screen toggle mode used to trigger fullscreen mode change", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "none", + "mutable": "null", + "readable": true, + "type": "GstD3D11WindowFullscreenToggleMode", + "writable": true + }, + "last-sample": { + "blurb": "The last sample received in the sink", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "mutable": "null", + "readable": true, + "type": "GstSample", + "writable": false + }, + "max-bitrate": { + "blurb": "The maximum bits per second to render (0 = disabled)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "18446744073709551615", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint64", + "writable": true + }, + "max-lateness": { + "blurb": "Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "5000000", + "max": "9223372036854775807", + "min": "-1", + "mutable": "null", + "readable": true, + "type": "gint64", + "writable": true + }, + "processing-deadline": { + "blurb": "Maximum processing deadline in nanoseconds", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "15000000", + "max": "18446744073709551615", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint64", + "writable": true + }, + "qos": { + "blurb": "Generate Quality-of-Service events upstream", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "render-delay": { + "blurb": "Additional render delay of the sink in nanoseconds", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "18446744073709551615", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint64", + "writable": true + }, + "show-preroll-frame": { + "blurb": "Whether to render video frames during preroll", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "stats": { + "blurb": "Sink Statistics", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "application/x-gst-base-sink-stats, average-rate=(double)0, dropped=(guint64)0, rendered=(guint64)0;", + "mutable": "null", + "readable": true, + "type": "GstStructure", + "writable": false + }, + "sync": { + "blurb": "Sync on the clock", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "throttle-time": { + "blurb": "The time to keep between rendered buffers (0 = disabled)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "18446744073709551615", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint64", + "writable": true + }, + "ts-offset": { + "blurb": "Timestamp offset in nanoseconds", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "9223372036854775807", + "min": "-9223372036854775808", + "mutable": "null", + "readable": true, + "type": "gint64", + "writable": true + } + }, + "rank": "primary", + "signals": { + "begin-draw": { + "args": [], + "return-type": "void", + "when": "last" + }, + "draw": { + "action": true, + "args": [ + { + "name": "arg0", + "type": "gpointer" + }, + { + "name": "arg1", + "type": "guint" + }, + { + "name": "arg2", + "type": "guint64" + }, + { + "name": "arg3", + "type": "guint64" + } + ], + "return-type": "gboolean", + "when": "last" + } + } + }, + "d3d11videosinkelement": { + "author": "Seungha Yang ", + "description": "A Direct3D11 based videosink", + "hierarchy": [ + "GstD3D11VideoSink", + "GstVideoSink", + "GstBaseSink", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstVideoOverlay", + "GstNavigation" + ], + "klass": "Sink/Video", + "long-name": "Direct3D11 video sink", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { BGRA, RGBA, RGB10A2_LE, VUYA, NV12, P010_10LE, P016_LE, I420, I420_10LE, YUY2, UYVY, VYUY, Y210, Y410 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" + } + }, + "properties": { + "adapter": { + "blurb": "Adapter index for creating device (-1 for default)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "-1", + "max": "2147483647", + "min": "-1", + "mutable": "ready", + "readable": true, + "type": "gint", + "writable": true + }, + "draw-on-shared-texture": { + "blurb": "Draw on user provided shared texture instead of window. When enabled, user can pass application's own texture to sink by using \"draw\" action signal on \"begin-draw\" signal handler, so that sink can draw video data on application's texture. Supported texture formats for user texture are DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM, and DXGI_FORMAT_R10G10B10A2_UNORM.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "enable-navigation-events": { + "blurb": "When enabled, navigation events are sent upstream", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "force-aspect-ratio": { + "blurb": "When enabled, scaling will respect original aspect ratio", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "fullscreen": { + "blurb": "Ignored when \"fullscreen-toggle-mode\" does not include \"property\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "fullscreen-toggle-mode": { + "blurb": "Full screen toggle mode used to trigger fullscreen mode change", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "none", + "mutable": "null", + "readable": true, + "type": "GstD3D11WindowFullscreenToggleMode", + "writable": true + } + }, + "rank": "none", + "signals": { + "begin-draw": { + "args": [], + "return-type": "void", + "when": "last" + }, + "draw": { + "action": true, + "args": [ + { + "name": "arg0", + "type": "gpointer" + }, + { + "name": "arg1", + "type": "guint" + }, + { + "name": "arg2", + "type": "guint64" + }, + { + "name": "arg3", + "type": "guint64" + } + ], + "return-type": "gboolean", + "when": "last" + } + } + }, + "d3d11vp8dec": { + "author": "Seungha Yang ", + "description": "A Direct3D11/DXVA VP8 video decoder", + "hierarchy": [ + "GstD3D11Vp8Dec", + "GstVp8Decoder", + "GstVideoDecoder", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Codec/Decoder/Video/Hardware", + "long-name": "Direct3D11/DXVA VP8 Intel(R) Iris(R) Plus Graphics Decoder", + "pad-templates": { + "sink": { + "caps": "video/x-vp8:\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\nvideo/x-raw:\n format: NV12\n width: [ 64, 4096 ]\n height: [ 64, 4096 ]\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "adapter": { + "blurb": "DXGI Adapter index for creating device", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "device-id": { + "blurb": "DXGI Device ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "35410", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "vendor-id": { + "blurb": "DXGI Vendor ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "32902", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + } + }, + "rank": "secondary" + }, + "d3d11vp9dec": { + "author": "Seungha Yang ", + "description": "A Direct3D11/DXVA VP9 video decoder", + "hierarchy": [ + "GstD3D11Vp9Dec", + "GstVp9Decoder", + "GstVideoDecoder", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Codec/Decoder/Video/Hardware", + "long-name": "Direct3D11/DXVA VP9 Intel(R) Iris(R) Plus Graphics Decoder", + "pad-templates": { + "sink": { + "caps": "video/x-vp9:\n alignment: frame\n profile: { (string)0, (string)2 }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:D3D11Memory):\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\nvideo/x-raw:\n format: { NV12, P010_10LE }\n width: [ 64, 8192 ]\n height: [ 64, 8192 ]\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "adapter": { + "blurb": "DXGI Adapter index for creating device", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "device-id": { + "blurb": "DXGI Device ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "35410", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + }, + "vendor-id": { + "blurb": "DXGI Vendor ID", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "32902", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": false + } + }, + "rank": "secondary" + } + }, + "filename": "gstd3d11", + "license": "LGPL", + "other-types": { + "GstD3D11BaseConvert": { + "hierarchy": [ + "GstD3D11BaseConvert", + "GstD3D11BaseFilter", + "GstBaseTransform", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "kind": "object" + }, + "GstD3D11BaseFilter": { + "hierarchy": [ + "GstD3D11BaseFilter", + "GstBaseTransform", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "kind": "object", + "properties": { + "adapter": { + "blurb": "Adapter index for creating device (-1 for default)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "-1", + "max": "2147483647", + "min": "-1", + "mutable": "ready", + "readable": true, + "type": "gint", + "writable": true + } + } + }, + "GstD3D11CompositorBackground": { + "kind": "enum", + "values": [ + { + "desc": "Checker pattern", + "name": "checker", + "value": "0" + }, + { + "desc": "Black", + "name": "black", + "value": "1" + }, + { + "desc": "White", + "name": "white", + "value": "2" + }, + { + "desc": "Transparent Background to enable further compositing", + "name": "transparent", + "value": "3" + } + ] + }, + "GstD3D11CompositorBinInput": { + "hierarchy": [ + "GstD3D11CompositorBinInput", + "GstD3D11CompositorBinPad", + "GstGhostPad", + "GstProxyPad", + "GstPad", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "kind": "object", + "properties": { + "alpha": { + "blurb": "Alpha of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gdouble", + "writable": true + }, + "blend-dest-alpha": { + "blurb": "Blend factor for destination alpha, \"*-color\" values are not allowed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "zero (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-dest-rgb": { + "blurb": "Blend factor for destination RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "zero (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-factor-alpha": { + "blurb": "Blend factor for alpha component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-blue": { + "blurb": "Blend factor for blue component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-green": { + "blurb": "Blend factor for green component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-red": { + "blurb": "Blend factor for red component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-op-alpha": { + "blurb": "Blend equation for alpha", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "add (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlendOperation", + "writable": true + }, + "blend-op-rgb": { + "blurb": "Blend equation for RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "add (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlendOperation", + "writable": true + }, + "blend-src-alpha": { + "blurb": "Blend factor for source alpha, \"*-color\" values are not allowed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "zero (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-src-rgb": { + "blurb": "Blend factor for source RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "zero (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "height": { + "blurb": "Height of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "max-last-buffer-repeat": { + "blurb": "Repeat last buffer for time (in ns, -1=until EOS), behaviour on EOS is not affected", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "18446744073709551615", + "min": "0", + "mutable": "playing", + "readable": true, + "type": "guint64", + "writable": true + }, + "repeat-after-eos": { + "blurb": "Repeat the last frame after EOS until all pads are EOS", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "width": { + "blurb": "Width of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "xpos": { + "blurb": "X position of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "ypos": { + "blurb": "Y position of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "zorder": { + "blurb": "Z Order of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + } + } + }, + "GstD3D11CompositorBinPad": { + "hierarchy": [ + "GstD3D11CompositorBinPad", + "GstGhostPad", + "GstProxyPad", + "GstPad", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "kind": "object", + "properties": { + "emit-signals": { + "blurb": "Send signals to signal data consumption", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + } + }, + "signals": { + "buffer-consumed": { + "args": [ + { + "name": "arg0", + "type": "GstBuffer" + } + ], + "return-type": "void", + "when": "first" + } + } + }, + "GstD3D11CompositorBlend": { + "kind": "enum", + "values": [ + { + "desc": "The blend factor is (0, 0, 0, 0)", + "name": "zero", + "value": "0" + }, + { + "desc": "The blend factor is (1, 1, 1, 1)", + "name": "one", + "value": "1" + }, + { + "desc": "The blend factor is (Rs, Gs, Bs, As)", + "name": "src-color", + "value": "2" + }, + { + "desc": "The blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As)", + "name": "inv-src-color", + "value": "3" + }, + { + "desc": "The blend factor is (As, As, As, As)", + "name": "src-alpha", + "value": "4" + }, + { + "desc": "The blend factor is (1 - As, 1 - As, 1 - As, 1 - As)", + "name": "inv-src-alpha", + "value": "5" + }, + { + "desc": "The blend factor is (Ad, Ad, Ad, Ad)", + "name": "dest-alpha", + "value": "6" + }, + { + "desc": "The blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad)", + "name": "inv-dest-alpha", + "value": "7" + }, + { + "desc": "The blend factor is (Rd, Gd, Bd, Ad)", + "name": "dest-color", + "value": "8" + }, + { + "desc": "The blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad)", + "name": "inv-dest-color", + "value": "9" + }, + { + "desc": "The blend factor is (f, f, f, 1); where f = min(As, 1 - Ad)", + "name": "src-alpha-sat", + "value": "10" + }, + { + "desc": "User defined blend factor", + "name": "blend-factor", + "value": "11" + }, + { + "desc": "Inverse of user defined blend factor", + "name": "inv-blend-factor", + "value": "12" + } + ] + }, + "GstD3D11CompositorBlendOperation": { + "kind": "enum", + "values": [ + { + "desc": "Add source and background", + "name": "add", + "value": "0" + }, + { + "desc": "Subtract source from background", + "name": "subtract", + "value": "1" + }, + { + "desc": "Subtract background from source", + "name": "rev-subtract", + "value": "2" + }, + { + "desc": "Minimum of source and background", + "name": "min", + "value": "3" + }, + { + "desc": "Maximum of source and background", + "name": "max", + "value": "4" + } + ] + }, + "GstD3D11CompositorPad": { + "hierarchy": [ + "GstD3D11CompositorPad", + "GstVideoAggregatorPad", + "GstAggregatorPad", + "GstPad", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "kind": "object", + "properties": { + "alpha": { + "blurb": "Alpha of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "1", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gdouble", + "writable": true + }, + "blend-dest-alpha": { + "blurb": "Blend factor for destination alpha, \"*-color\" values are not allowed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "inv-src-alpha (5)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-dest-rgb": { + "blurb": "Blend factor for destination RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "inv-src-alpha (5)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-factor-alpha": { + "blurb": "Blend factor for alpha component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "1", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-blue": { + "blurb": "Blend factor for blue component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "1", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-green": { + "blurb": "Blend factor for green component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "1", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-factor-red": { + "blurb": "Blend factor for red component when blend type is \"blend-factor\" or \"inv-blend-factor\"", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "1", + "max": "1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "gfloat", + "writable": true + }, + "blend-op-alpha": { + "blurb": "Blend equation for alpha", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "add (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlendOperation", + "writable": true + }, + "blend-op-rgb": { + "blurb": "Blend equation for RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "add (0)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlendOperation", + "writable": true + }, + "blend-src-alpha": { + "blurb": "Blend factor for source alpha, \"*-color\" values are not allowed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "one (1)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "blend-src-rgb": { + "blurb": "Blend factor for source RGB", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "src-alpha (4)", + "mutable": "null", + "readable": true, + "type": "GstD3D11CompositorBlend", + "writable": true + }, + "height": { + "blurb": "Height of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "width": { + "blurb": "Width of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "xpos": { + "blurb": "X position of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, + "ypos": { + "blurb": "Y position of the picture", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": true, + "default": "0", + "max": "2147483647", + "min": "-2147483648", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + } + } + }, + "GstD3D11DeinterlaceMethod": { + "kind": "flags", + "values": [ + { + "desc": "Blend: Blending top/bottom field pictures into one frame. Framerate will be preserved (e.g., 60i -> 30p)", + "name": "blend", + "value": "0x00000001" + }, + { + "desc": "Bob: Interpolating missing lines by using the adjacent lines. Framerate will be doubled (e,g, 60i -> 60p)", + "name": "bob", + "value": "0x00000002" + }, + { + "desc": "Adaptive: Interpolating missing lines by using spatial/temporal references. Framerate will be doubled (e,g, 60i -> 60p)", + "name": "adaptive", + "value": "0x00000004" + }, + { + "desc": "Motion Compensation: Recreating missing lines by using motion vector. Framerate will be doubled (e,g, 60i -> 60p)", + "name": "mocomp", + "value": "0x00000008" + } + ] }, "GstD3D11WindowFullscreenToggleMode": { "kind": "flags", diff --git a/sys/d3d11/gstd3d11compositor.c b/sys/d3d11/gstd3d11compositor.c index f8bad28..4a41cc9 100644 --- a/sys/d3d11/gstd3d11compositor.c +++ b/sys/d3d11/gstd3d11compositor.c @@ -22,6 +22,16 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11compositorelement + * @title: d3d11compositorelement + * + * A Direct3D11 based video compositing element. + * + * Since: 1.20 + * + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -47,6 +57,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_compositor_debug); * Find the minimum of source 1 and source 2 * @GST_D3D11_COMPOSITOR_BLEND_OP_MAX: * Find the maximum of source 1 and source 2 + * + * Since: 1.20 */ GType gst_d3d11_compositor_blend_operation_get_type (void) @@ -167,6 +179,8 @@ gst_d3d11_compositor_blend_operation_to_native (GstD3D11CompositorBlendOperation * ID3D11DeviceContext::OMSetBlendState. * The pre-blend operation inverts the blend factor, * generating 1 - blend_factor. + * + * Since: 1.20 */ GType gst_d3d11_compositor_blend_get_type (void) @@ -290,6 +304,13 @@ gst_d3d11_compositor_blend_to_native (GstD3D11CompositorBlend blend) return D3D11_BLEND_ZERO; } +/** + * GstD3D11CompositorBackground: + * + * Background mode + * + * Since: 1.20 + */ GType gst_d3d11_compositor_background_get_type (void) { @@ -359,6 +380,11 @@ static const gchar checker_ps_src[] = "}\n"; /* *INDENT-ON* */ +/** + * GstD3D11CompositorPad: + * + * Since: 1.20 + */ struct _GstD3D11CompositorPad { GstVideoAggregatorConvertPad parent; @@ -566,6 +592,9 @@ gst_d3d11_compositor_pad_class_init (GstD3D11CompositorPadClass * klass) GST_DEBUG_FUNCPTR (gst_d3d11_compositor_pad_prepare_frame); vaggpadclass->clean_frame = GST_DEBUG_FUNCPTR (gst_d3d11_compositor_pad_clean_frame); + + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_COMPOSITOR_BLEND, 0); + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_COMPOSITOR_BLEND_OPERATION, 0); } static void @@ -1329,8 +1358,10 @@ gst_d3d11_compositor_class_init (GstD3D11CompositorClass * klass) gst_element_class_set_static_metadata (element_class, "Direct3D11 Compositor", "Filter/Editor/Video/Compositor", - "Composite multiple video streams via D3D11 API", - "Seungha Yang "); + "A Direct3D11 compositor", "Seungha Yang "); + + gst_type_mark_as_plugin_api (GST_TYPE_COMPOSITOR_BACKGROUND, 0); + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_COMPOSITOR_PAD, 0); } static void diff --git a/sys/d3d11/gstd3d11compositorbin.c b/sys/d3d11/gstd3d11compositorbin.c index 25fb07c..e50c1a2 100644 --- a/sys/d3d11/gstd3d11compositorbin.c +++ b/sys/d3d11/gstd3d11compositorbin.c @@ -19,6 +19,25 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11compositor + * @title: d3d11compositor + * + * A convenient bin which wraps #d3d11compositorelement for video composition + * with other helper elements to handle color conversion and memory transfer + * between Direct3D11 and system memory space. + * + * ## Example launch line + * ``` + * gst-launch-1.0 d3d11compositor name=c ! d3d11videosink \ + * videotestsrc ! video/x-raw,width=320,height=240 ! c. \ + * videotestsrc pattern=ball ! video/x-raw,width=100,height=100 ! c. + * ``` + * + * Since: 1.20 + * + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -54,6 +73,11 @@ enum static guint gst_d3d11_compositor_bin_pad_signals[SIGNAL_PAD_LAST] = { 0 }; +/** + * GstD3D11CompositorBinPad: + * + * Since: 1.20 + */ struct _GstD3D11CompositorBinPad { GstGhostPad parent; @@ -225,6 +249,11 @@ enum #define DEFAULT_INPUT_BLEND_DEST_RGB GST_D3D11_COMPOSITOR_BLEND_INV_SRC_ALPHA #define DEFAULT_INPUT_BLEND_DEST_ALPHA GST_D3D11_COMPOSITOR_BLEND_INV_SRC_ALPHA +/** + * GstD3D11CompositorBinInput: + * + * Since: 1.20 + */ struct _GstD3D11CompositorBinInput { GstD3D11CompositorBinPad parent; @@ -544,8 +573,7 @@ gst_d3d11_compositor_bin_class_init (GstD3D11CompositorBinClass * klass) gst_element_class_set_static_metadata (element_class, "Direct3D11 Compositor Bin", "Filter/Editor/Video/Compositor", - "Composite multiple video streams via D3D11 API", - "Seungha Yang "); + "A Direct3D11 compositor bin", "Seungha Yang "); caps = gst_d3d11_get_updated_template_caps (&sink_template_caps); gst_element_class_add_pad_template (element_class, @@ -612,6 +640,9 @@ gst_d3d11_compositor_bin_class_init (GstD3D11CompositorBinClass * klass) g_param_spec_enum ("background", "Background", "Background type", GST_TYPE_COMPOSITOR_BACKGROUND, DEFAULT_BACKGROUND, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_COMPOSITOR_BIN_PAD, 0); + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_COMPOSITOR_BIN_INPUT, 0); } static void diff --git a/sys/d3d11/gstd3d11deinterlace.cpp b/sys/d3d11/gstd3d11deinterlace.cpp index 170d88a..8188b8e 100644 --- a/sys/d3d11/gstd3d11deinterlace.cpp +++ b/sys/d3d11/gstd3d11deinterlace.cpp @@ -17,6 +17,19 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11deinterlaceelement + * @title: d3d11deinterlaceelement + * + * Deinterlacing interlaced video frames to progressive video frames by using + * ID3D11VideoProcessor API. Depending on the hardware it runs on, + * this element will only support a very limited set of video formats. + * Use #d3d11deinterlace instead, which will take care of conversion. + * + * Since: 1.20 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -101,6 +114,13 @@ typedef enum /* TODO: INVERSE_TELECINE */ } GstD3D11DeinterlaceMethod; +/** + * GstD3D11DeinterlaceMethod: + * + * Deinterlacing method + * + * Since: 1.20 + */ #define GST_TYPE_D3D11_DEINTERLACE_METHOD (gst_d3d11_deinterlace_method_type()) static GType @@ -400,6 +420,9 @@ gst_d3d11_deinterlace_class_init (GstD3D11DeinterlaceClass * klass, klass->device_caps = cdata->device_caps; gst_d3d11_deinterlace_class_data_unref (cdata); + + gst_type_mark_as_plugin_api (GST_TYPE_D3D11_DEINTERLACE_METHOD, + (GstPluginAPIFlags) 0); } static void @@ -1853,6 +1876,23 @@ done: return ret; } +/** + * SECTION:element-d3d11deinterlace + * @title: d3d11deinterlace + * @short_description: A Direct3D11 based deinterlace element + * + * Deinterlacing interlaced video frames to progressive video frames by using + * ID3D11VideoProcessor API. + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/h264/file ! parsebin ! d3d11h264dec ! d3d11deinterlace ! d3d11videosink + * ``` + * + * Since: 1.20 + * + */ + /* GstD3D11DeinterlaceBin */ enum { @@ -1999,7 +2039,7 @@ gst_d3d11_deinterlace_bin_class_init (GstD3D11DeinterlaceBinClass * klass, cdata->description); gst_element_class_set_metadata (element_class, long_name, "Filter/Effect/Video/Deinterlace/Hardware", - "A Direct3D11 based deinterlacer", + "A Direct3D11 based deinterlacer bin", "Seungha Yang "); g_free (long_name); diff --git a/sys/d3d11/gstd3d11desktopdupsrc.c b/sys/d3d11/gstd3d11desktopdupsrc.c index 191ef6e..5d8bbb3 100644 --- a/sys/d3d11/gstd3d11desktopdupsrc.c +++ b/sys/d3d11/gstd3d11desktopdupsrc.c @@ -22,15 +22,14 @@ * SECTION:element-d3d11desktopdupsrc * @title: d3d11desktopdupsrc * - * This element uses DXGI Desktop Duplication API. - * The default is capturing the whole desktop, but #GstD3D11DesktopDupSrc:x, - * #GstD3D11DesktopDupSrc:y, #GstD3D11DesktopDupSrc:width and - * #GstD3D11DesktopDupSrc:height can be used to select a particular region. + * A DXGI Desktop Duplication API based screen capture element * - * ## Example pipelines - * |[ + * ## Example launch line + * ``` * gst-launch-1.0 d3d11desktopdupsrc ! queue ! d3d11videosink - * ]| Capture the desktop and display it. + * ``` + * + * Since: 1.20 */ #ifdef HAVE_CONFIG_H diff --git a/sys/d3d11/gstd3d11download.c b/sys/d3d11/gstd3d11download.c index d2ce883..8191bd5 100644 --- a/sys/d3d11/gstd3d11download.c +++ b/sys/d3d11/gstd3d11download.c @@ -17,6 +17,28 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11download + * @title: d3d11download + * @short_description: Downloads Direct3D11 texture memory into system memory + * + * Downloads Direct3D11 texture memory into system memory + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=test_h264.mp4 ! parsebin ! d3d11h264dec ! \ + * d3d11convert ! d3d11download ! video/x-raw,width=640,height=480 ! mfh264enc ! \ + * h264parse ! mp4mux ! filesink location=output.mp4 + * ``` + * This pipeline will resize decoded (by #d3d11h264dec) frames to 640x480 + * resolution by using #d3d11convert. Then it will be copied into system memory + * by d3d11download. Finally downloaded frames will be encoded as a new + * H.264 stream via #mfh264enc and muxed via mp4mux + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H # include #endif @@ -102,7 +124,7 @@ gst_d3d11_download_class_init (GstD3D11DownloadClass * klass) gst_element_class_set_static_metadata (element_class, "Direct3D11 downloader", "Filter/Video", - "Downloads D3D11 texture memory into system memory", + "Downloads Direct3D11 texture memory into system memory", "Seungha Yang "); trans_class->passthrough_on_same_caps = TRUE; diff --git a/sys/d3d11/gstd3d11h264dec.c b/sys/d3d11/gstd3d11h264dec.c index f265535..104a5f1 100644 --- a/sys/d3d11/gstd3d11h264dec.c +++ b/sys/d3d11/gstd3d11h264dec.c @@ -47,6 +47,21 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/** + * SECTION:element-d3d11h264dec + * @title: d3d11h264dec + * + * A Direct3D11/DXVA based H.264 video decoder + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/h264/file ! parsebin ! d3d11h264dec ! d3d11videosink + * ``` + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -202,11 +217,11 @@ gst_d3d11_h264_dec_class_init (GstD3D11H264DecClass * klass, gpointer data) element_class->set_context = GST_DEBUG_FUNCPTR (gst_d3d11_h264_dec_set_context); - long_name = g_strdup_printf ("Direct3D11 H.264 %s Decoder", + long_name = g_strdup_printf ("Direct3D11/DXVA H.264 %s Decoder", cdata->description); gst_element_class_set_metadata (element_class, long_name, "Codec/Decoder/Video/Hardware", - "A Direct3D11 based H.264 video decoder", + "A Direct3D11/DXVA H.264 video decoder", "Seungha Yang "); g_free (long_name); diff --git a/sys/d3d11/gstd3d11h265dec.c b/sys/d3d11/gstd3d11h265dec.c index 7f5b0e5..9bd8cc1 100644 --- a/sys/d3d11/gstd3d11h265dec.c +++ b/sys/d3d11/gstd3d11h265dec.c @@ -17,6 +17,21 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11h265dec + * @title: d3d11h265dec + * + * A Direct3D11/DXVA based H.265 video decoder + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/hevc/file ! parsebin ! d3d11h265dec ! d3d11videosink + * ``` + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -174,11 +189,11 @@ gst_d3d11_h265_dec_class_init (GstD3D11H265DecClass * klass, gpointer data) element_class->set_context = GST_DEBUG_FUNCPTR (gst_d3d11_h265_dec_set_context); - long_name = g_strdup_printf ("Direct3D11 H.265 %s Decoder", + long_name = g_strdup_printf ("Direct3D11/DXVA H.265 %s Decoder", cdata->description); gst_element_class_set_metadata (element_class, long_name, "Codec/Decoder/Video/Hardware", - "A Direct3D11 based H.265 video decoder", + "A Direct3D11/DXVA H.265 video decoder", "Seungha Yang "); g_free (long_name); diff --git a/sys/d3d11/gstd3d11mpeg2dec.c b/sys/d3d11/gstd3d11mpeg2dec.c index f9b6da9..b9682d8 100644 --- a/sys/d3d11/gstd3d11mpeg2dec.c +++ b/sys/d3d11/gstd3d11mpeg2dec.c @@ -17,6 +17,21 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11mpeg2dec + * @title: d3d11mpeg2dec + * + * A Direct3D11/DXVA based MPEG-2 video decoder + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/mpeg2/file ! parsebin ! d3d11mpeg2dec ! d3d11videosink + * ``` + * + * Since: 1.20 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -167,9 +182,9 @@ gst_d3d11_mpeg2_dec_class_init (GstD3D11Mpeg2DecClass * klass, gpointer data) GST_DEBUG_FUNCPTR (gst_d3d11_mpeg2_dec_set_context); long_name = - g_strdup_printf ("Direct3D11 MPEG2 %s Decoder", cdata->description); + g_strdup_printf ("Direct3D11/DXVA MPEG2 %s Decoder", cdata->description); gst_element_class_set_metadata (element_class, long_name, - "Codec/Decoder/Video/Hardware", "A Direct3D11 based MPEG2 video decoder", + "Codec/Decoder/Video/Hardware", "A Direct3D11/DXVA MPEG2 video decoder", "Seungha Yang "); g_free (long_name); @@ -606,6 +621,7 @@ gst_d3d11_mpeg2_dec_start_picture (GstMpeg2Decoder * decoder, break; } + /* *INDENT-OFF* */ pic_params.wPicWidthInMBminus1 = self->width_in_mb - 1; pic_params.wPicHeightInMBminus1 = (self->height_in_mb >> is_field) - 1; pic_params.bMacroblockWidthMinus1 = 15; @@ -624,6 +640,7 @@ gst_d3d11_mpeg2_dec_start_picture (GstMpeg2Decoder * decoder, pic_params.bPicScanMethod = slice->pic_ext->alternate_scan; pic_params.wBitstreamFcodes = _pack_f_codes (slice->pic_ext->f_code); pic_params.wBitstreamPCEelements = _pack_pce_elements (slice); + /* *INDENT-ON* */ GST_TRACE_OBJECT (self, "Getting picture param decoder buffer"); if (!gst_d3d11_decoder_get_decoder_buffer (self->d3d11_decoder, diff --git a/sys/d3d11/gstd3d11upload.c b/sys/d3d11/gstd3d11upload.c index 73ea368..39794cc 100644 --- a/sys/d3d11/gstd3d11upload.c +++ b/sys/d3d11/gstd3d11upload.c @@ -17,6 +17,23 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11upload + * @title: d3d11upload + * + * Upload video frame to Direct3D11 texture memory + * + * ## Example launch line + * ``` + * gst-launch-1.0 videotestsrc ! d3d11upload ! d3d11videosinkelement + * ``` + * This pipeline will upload video test frame (system memory) into Direct3D11 + * textures and d3d11videosinkelement will display frames on screen. + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H # include #endif @@ -102,7 +119,7 @@ gst_d3d11_upload_class_init (GstD3D11UploadClass * klass) gst_element_class_set_static_metadata (element_class, "Direct3D11 uploader", "Filter/Video", - "Uploads data into D3D11 texture memory", + "Uploads data into Direct3D11 texture memory", "Seungha Yang "); trans_class->passthrough_on_same_caps = TRUE; diff --git a/sys/d3d11/gstd3d11videosink.c b/sys/d3d11/gstd3d11videosink.c index c9c3fc7..98d43d3 100644 --- a/sys/d3d11/gstd3d11videosink.c +++ b/sys/d3d11/gstd3d11videosink.c @@ -18,6 +18,24 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11videosinkelement + * @title: d3d11videosinkelement + * + * Direct3D11 based video render element. This element allows only Direct3D11 + * textures as a input. Use #d3d11videosink instead which is a convenient + * wrapper of #d3d11videosinkelement with #d3d11upload. + * + * ## Example launch line + * ``` + * gst-launch-1.0 videotestsrc ! d3d11upload ! d3d11videosinkelement + * ``` + * This pipeline will display test video stream on screen via d3d11videosinkelement + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -221,9 +239,10 @@ gst_d3d11_video_sink_class_init (GstD3D11VideoSinkClass * klass) /** * GstD3D11VideoSink:draw-on-shared-texture: * - * Instrcut the sink to draw on a shared texture provided by user. - * User must watch "begin-draw" signal and should call "draw" method - * on the "begin-draw" signal handler. + * Instruct the sink to draw on a shared texture provided by user. + * User must watch #d3d11videosinkelement::begin-draw signal and should call + * #d3d11videosinkelement::draw method on the #d3d11videosinkelement::begin-draw + * signal handler. * * Currently supported formats for user texture are: * - DXGI_FORMAT_R8G8B8A8_UNORM @@ -247,11 +266,12 @@ gst_d3d11_video_sink_class_init (GstD3D11VideoSinkClass * klass) G_PARAM_STATIC_STRINGS)); /** - * GstD3D11VideoSink:begin-draw: - * @videosink: the d3d11videosink + * GstD3D11VideoSink::begin-draw: + * @videosink: the #d3d11videosinkelement * - * Signal that sink has a texture to draw. Application needs to invoke "draw" - * action signal before returning from "begin-draw" signal handler. + * Emitted when sink has a texture to draw. Application needs to invoke + * #d3d11videosinkelement::draw action signal before returning from + * #d3d11videosinkelement::begin-draw signal handler. * * Since: 1.20 */ @@ -261,18 +281,18 @@ gst_d3d11_video_sink_class_init (GstD3D11VideoSinkClass * klass) NULL, NULL, NULL, G_TYPE_NONE, 0, G_TYPE_NONE); /** - * GstD3D11VideoSink:draw: - * @videosink: the d3d11videosink + * GstD3D11VideoSink::draw: + * @videosink: the #d3d11videosinkelement * @shard_handle: a pointer to HANDLE * @texture_misc_flags: a D3D11_RESOURCE_MISC_FLAG value * @acquire_key: a key value used for IDXGIKeyedMutex::AcquireSync * @release_key: a key value used for IDXGIKeyedMutex::ReleaseSync * - * Draws on shared texture. @shard_handle must be a valid pointer to HANDLE - * which was obtained via IDXGIResource::GetSharedHandle or + * Draws on a shared texture. @shard_handle must be a valid pointer to + * a HANDLE which was obtained via IDXGIResource::GetSharedHandle or * IDXGIResource1::CreateSharedHandle. * - * If texture was created with D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX flag, + * If the texture was created with D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX flag, * caller must specify valid @acquire_key and @release_key. * Otherwise (i.e., created with D3D11_RESOURCE_MISC_SHARED flag), * @acquire_key and @release_key will be ignored. diff --git a/sys/d3d11/gstd3d11videosinkbin.c b/sys/d3d11/gstd3d11videosinkbin.c index c73d7fe..5107ce8 100644 --- a/sys/d3d11/gstd3d11videosinkbin.c +++ b/sys/d3d11/gstd3d11videosinkbin.c @@ -18,6 +18,22 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11videosink + * @title: d3d11videosink + * + * Direct3D11 based video render element + * + * ## Example launch line + * ``` + * gst-launch-1.0 videotestsrc ! d3d11videosink + * ``` + * This pipeline will display test video stream on screen via #d3d11videosink + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -264,6 +280,22 @@ gst_d3d11_video_sink_bin_class_init (GstD3D11VideoSinkBinClass * klass) GST_PARAM_CONDITIONALLY_AVAILABLE | GST_PARAM_MUTABLE_READY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); #endif + + /** + * GstD3D11VideoSinkBin:draw-on-shared-texture: + * + * Instruct the sink to draw on a shared texture provided by user. + * User must watch #d3d11videosink::begin-draw signal and should call + * #d3d11videosink::draw method on the #d3d11videosink::begin-draw + * signal handler. + * + * Currently supported formats for user texture are: + * - DXGI_FORMAT_R8G8B8A8_UNORM + * - DXGI_FORMAT_B8G8R8A8_UNORM + * - DXGI_FORMAT_R10G10B10A2_UNORM + * + * Since: 1.20 + */ g_object_class_install_property (gobject_class, PROP_DRAW_ON_SHARED_TEXTURE, g_param_spec_boolean ("draw-on-shared-texture", "Draw on shared texture", @@ -278,11 +310,40 @@ gst_d3d11_video_sink_bin_class_init (GstD3D11VideoSinkBinClass * klass) G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | G_PARAM_STATIC_STRINGS)); + /** + * GstD3D11VideoSinkBin::begin-draw: + * @videosink: the #d3d11videosink + * + * Emitted when sink has a texture to draw. Application needs to invoke + * #d3d11videosink::draw action signal before returning from + * #d3d11videosink::begin-draw signal handler. + * + * Since: 1.20 + */ gst_d3d11_video_sink_bin_signals[SIGNAL_BEGIN_DRAW] = g_signal_new ("begin-draw", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstD3D11VideoSinkBinClass, begin_draw), NULL, NULL, NULL, G_TYPE_NONE, 0, G_TYPE_NONE); + /** + * GstD3D11VideoSinkBin::draw: + * @videosink: the #d3d11videosink + * @shard_handle: a pointer to HANDLE + * @texture_misc_flags: a D3D11_RESOURCE_MISC_FLAG value + * @acquire_key: a key value used for IDXGIKeyedMutex::AcquireSync + * @release_key: a key value used for IDXGIKeyedMutex::ReleaseSync + * + * Draws on a shared texture. @shard_handle must be a valid pointer to + * a HANDLE which was obtained via IDXGIResource::GetSharedHandle or + * IDXGIResource1::CreateSharedHandle. + * + * If the texture was created with D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX flag, + * caller must specify valid @acquire_key and @release_key. + * Otherwise (i.e., created with D3D11_RESOURCE_MISC_SHARED flag), + * @acquire_key and @release_key will be ignored. + * + * Since: 1.20 + */ gst_d3d11_video_sink_bin_signals[SIGNAL_DRAW] = g_signal_new ("draw", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, @@ -294,7 +355,7 @@ gst_d3d11_video_sink_bin_class_init (GstD3D11VideoSinkBinClass * klass) gst_element_class_set_static_metadata (element_class, "Direct3D11 video sink bin", "Sink/Video", - "A Direct3D11 based videosink", + "A Direct3D11 based videosink bin", "Seungha Yang "); caps = gst_d3d11_get_updated_template_caps (&pad_template_caps); diff --git a/sys/d3d11/gstd3d11vp8dec.c b/sys/d3d11/gstd3d11vp8dec.c index 78394e2..0990fc0 100644 --- a/sys/d3d11/gstd3d11vp8dec.c +++ b/sys/d3d11/gstd3d11vp8dec.c @@ -17,6 +17,21 @@ * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-d3d11vp8dec + * @title: d3d11vp8dec + * + * A Direct3D11/DXVA based VP8 video decoder + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/vp8/file ! parsebin ! d3d11vp8dec ! d3d11videosink + * ``` + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -142,10 +157,10 @@ gst_d3d11_vp8_dec_class_init (GstD3D11Vp8DecClass * klass, gpointer data) element_class->set_context = GST_DEBUG_FUNCPTR (gst_d3d11_vp8_dec_set_context); - long_name = g_strdup_printf ("Direct3D11 VP8 %s Decoder", cdata->description); + long_name = + g_strdup_printf ("Direct3D11/DXVA VP8 %s Decoder", cdata->description); gst_element_class_set_metadata (element_class, long_name, - "Codec/Decoder/Video/Hardware", - "A Direct3D11 based VP8 video decoder", + "Codec/Decoder/Video/Hardware", "A Direct3D11/DXVA VP8 video decoder", "Seungha Yang "); g_free (long_name); diff --git a/sys/d3d11/gstd3d11vp9dec.c b/sys/d3d11/gstd3d11vp9dec.c index f98fb7c..c74961b 100644 --- a/sys/d3d11/gstd3d11vp9dec.c +++ b/sys/d3d11/gstd3d11vp9dec.c @@ -47,6 +47,21 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/** + * SECTION:element-d3d11vp9dec + * @title: d3d11vp9dec + * + * A Direct3D11/DXVA based VP9 video decoder + * + * ## Example launch line + * ``` + * gst-launch-1.0 filesrc location=/path/to/vp9/file ! parsebin ! d3d11vp9dec ! d3d11videosink + * ``` + * + * Since: 1.18 + * + */ + #ifdef HAVE_CONFIG_H #include #endif @@ -180,10 +195,10 @@ gst_d3d11_vp9_dec_class_init (GstD3D11Vp9DecClass * klass, gpointer data) element_class->set_context = GST_DEBUG_FUNCPTR (gst_d3d11_vp9_dec_set_context); - long_name = g_strdup_printf ("Direct3D11 VP9 %s Decoder", cdata->description); + long_name = + g_strdup_printf ("Direct3D11/DXVA VP9 %s Decoder", cdata->description); gst_element_class_set_metadata (element_class, long_name, - "Codec/Decoder/Video/Hardware", - "A Direct3D11 based VP9 video decoder", + "Codec/Decoder/Video/Hardware", "A Direct3D11/DXVA VP9 video decoder", "Seungha Yang "); g_free (long_name); diff --git a/sys/d3d11/plugin.c b/sys/d3d11/plugin.c index eaaaf6f..f3d2037 100644 --- a/sys/d3d11/plugin.c +++ b/sys/d3d11/plugin.c @@ -81,12 +81,6 @@ plugin_init (GstPlugin * plugin) D3D_FEATURE_LEVEL max_feature_level = D3D_FEATURE_LEVEL_9_3; guint i; - /** - * plugin-d3d11: - * - * Since: 1.18 - */ - GST_DEBUG_CATEGORY_INIT (gst_d3d11_debug, "d3d11", 0, "direct3d 11 plugin"); GST_DEBUG_CATEGORY_INIT (gst_d3d11_shader_debug, "d3d11shader", 0, "d3d11shader"); -- 2.7.4