d3d11: Update plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5258>
This commit is contained in:
Seungha Yang 2023-08-29 23:06:42 +09:00
parent 967aa2abca
commit 560faa38c5
7 changed files with 537 additions and 26 deletions

View file

@ -7624,6 +7624,18 @@
} }
}, },
"properties": { "properties": {
"dest-alpha-mode": {
"blurb": "Output alpha mode to be applied",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "unspecified (0)",
"mutable": "playing",
"readable": true,
"type": "GstD3D11AlphaMode",
"writable": true
},
"gamma-mode": { "gamma-mode": {
"blurb": "Gamma conversion mode", "blurb": "Gamma conversion mode",
"conditionally-available": false, "conditionally-available": false,
@ -7647,6 +7659,18 @@
"readable": true, "readable": true,
"type": "GstVideoPrimariesMode", "type": "GstVideoPrimariesMode",
"writable": true "writable": true
},
"src-alpha-mode": {
"blurb": "Applied input alpha mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "unspecified (0)",
"mutable": "playing",
"readable": true,
"type": "GstD3D11AlphaMode",
"writable": true
} }
}, },
"rank": "none" "rank": "none"
@ -7707,13 +7731,25 @@
"readable": true, "readable": true,
"type": "GstD3D11CompositorBackground", "type": "GstD3D11CompositorBackground",
"writable": true "writable": true
},
"ignore-inactive-pads": {
"blurb": "Avoid timing out waiting for inactive pads",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
} }
}, },
"rank": "secondary" "rank": "secondary"
}, },
"d3d11convert": { "d3d11convert": {
"author": "Seungha Yang <seungha.yang@navercorp.com>, Jeongki Kim <jeongki.kim@jeongki.kim>", "author": "Seungha Yang <seungha.yang@navercorp.com>, Jeongki Kim <jeongki.kim@jeongki.kim>",
"description": "Resizes video and allow color conversion using Direct3D11", "description": "Performs resizing, colorspace conversion, cropping, and flipping/rotating using Direct3D11",
"hierarchy": [ "hierarchy": [
"GstD3D11Convert", "GstD3D11Convert",
"GstD3D11BaseConvert", "GstD3D11BaseConvert",
@ -7767,6 +7803,18 @@
"type": "guint64", "type": "guint64",
"writable": true "writable": true
}, },
"dest-alpha-mode": {
"blurb": "Output alpha mode to be applied",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "unspecified (0)",
"mutable": "playing",
"readable": true,
"type": "GstD3D11AlphaMode",
"writable": true
},
"gamma-mode": { "gamma-mode": {
"blurb": "Gamma conversion mode", "blurb": "Gamma conversion mode",
"conditionally-available": false, "conditionally-available": false,
@ -7790,6 +7838,18 @@
"readable": true, "readable": true,
"type": "GstVideoPrimariesMode", "type": "GstVideoPrimariesMode",
"writable": true "writable": true
},
"src-alpha-mode": {
"blurb": "Applied input alpha mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "unspecified (0)",
"mutable": "playing",
"readable": true,
"type": "GstD3D11AlphaMode",
"writable": true
} }
}, },
"rank": "none" "rank": "none"
@ -8166,6 +8226,144 @@
}, },
"rank": "primary + 1" "rank": "primary + 1"
}, },
"d3d11ipcsink": {
"author": "Seungha Yang <seungha@centricular.com>",
"description": "Sends Direct3D11 shared handle to peer d3d11ipcsrc elements",
"hierarchy": [
"GstD3D11IpcSink",
"GstBaseSink",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Sink/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
}
},
"properties": {
"adapter": {
"blurb": "DXGI adapter index (-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
},
"min-buffer-size": {
"blurb": "Minumum number of buffers",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "ready",
"readable": true,
"type": "guint",
"writable": true
},
"pipe-name": {
"blurb": "The name of Win32 named pipe to communicate with clients. Validation of the pipe name is caller's responsibility",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "\\\\.\\pipe\\gst.d3d11.ipc",
"mutable": "ready",
"readable": true,
"type": "gchararray",
"writable": true
}
},
"rank": "none"
},
"d3d11ipcsrc": {
"author": "Seungha Yang <seungha@centricular.com>",
"description": "Receives Direct3D11 shared handle from the d3d11ipcsink element",
"hierarchy": [
"GstD3D11IpcSrc",
"GstBaseSrc",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Source/Video",
"pad-templates": {
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"connection-timeout": {
"blurb": "Connection timeout in seconds (0 = never timeout)",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "5",
"max": "2147483647",
"min": "0",
"mutable": "ready",
"readable": true,
"type": "guint",
"writable": true
},
"io-mode": {
"blurb": "Memory I/O mode to use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "copy (0)",
"mutable": "ready",
"readable": true,
"type": "GstD3D11IpcIOMode",
"writable": true
},
"pipe-name": {
"blurb": "The name of Win32 named pipe to communicate with clients. Validation of the pipe name is caller's responsibility",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "\\\\.\\pipe\\gst.d3d11.ipc",
"mutable": "ready",
"readable": true,
"type": "gchararray",
"writable": true
},
"processing-deadline": {
"blurb": "Maximum processing time for a buffer in nanoseconds",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "20000000",
"max": "18446744073709551615",
"min": "0",
"mutable": "playing",
"readable": true,
"type": "guint64",
"writable": true
}
},
"rank": "none"
},
"d3d11mpeg2dec": { "d3d11mpeg2dec": {
"author": "Seungha Yang <seungha@centricular.com>", "author": "Seungha Yang <seungha@centricular.com>",
"description": "Direct3D11/DXVA based MPEG2 video decoder", "description": "Direct3D11/DXVA based MPEG2 video decoder",
@ -8235,7 +8433,68 @@
"writable": false "writable": false
} }
}, },
"rank": "secondary" "rank": "primary + 1"
},
"d3d11overlay": {
"author": "Seungha Yang <seungha@centricular.com>",
"description": "Provides application renderable Direct3D11 render target view",
"hierarchy": [
"GstD3D11Overlay",
"GstD3D11BaseFilter",
"GstBaseTransform",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Filter/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { BGRA, RGBA }\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 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
},
"rank": "none",
"signals": {
"caps-changed": {
"args": [
{
"name": "arg0",
"type": "GstCaps"
}
],
"return-type": "void",
"when": "last"
},
"draw": {
"args": [
{
"name": "arg0",
"type": "GstObject"
},
{
"name": "arg1",
"type": "gpointer"
},
{
"name": "arg2",
"type": "guint64"
},
{
"name": "arg3",
"type": "guint64"
}
],
"return-type": "gboolean",
"when": "last"
}
}
}, },
"d3d11scale": { "d3d11scale": {
"author": "Seungha Yang <seungha@centricular.com>", "author": "Seungha Yang <seungha@centricular.com>",
@ -8447,6 +8706,18 @@
"type": "gboolean", "type": "gboolean",
"writable": true "writable": true
}, },
"window-capture-mode": {
"blurb": "Window capture mode to use if \"window-handle\" is set",
"conditionally-available": true,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "default (0)",
"mutable": "ready",
"readable": true,
"type": "GstD3D11WindowCaptureMode",
"writable": true
},
"window-handle": { "window-handle": {
"blurb": "A HWND handle of window to capture", "blurb": "A HWND handle of window to capture",
"conditionally-available": true, "conditionally-available": true,
@ -8498,6 +8769,32 @@
"type": "gint", "type": "gint",
"writable": true "writable": true
}, },
"alpha": {
"blurb": "Global alpha value to use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "1",
"max": "1",
"min": "0",
"mutable": "ready",
"readable": true,
"type": "gfloat",
"writable": true
},
"alpha-mode": {
"blurb": "alpha mode to use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "unspecified (0)",
"mutable": "ready",
"readable": true,
"type": "GstD3D11AlphaMode",
"writable": true
},
"is-live": { "is-live": {
"blurb": "Whether to act as a live source", "blurb": "Whether to act as a live source",
"conditionally-available": false, "conditionally-available": false,
@ -8699,6 +8996,17 @@
"type": "GstVideoPrimariesMode", "type": "GstVideoPrimariesMode",
"writable": true "writable": true
}, },
"render-rectangle": {
"blurb": "The render rectangle ('<x, y, width, height>')",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"mutable": "null",
"readable": false,
"type": "GstValueArray",
"writable": true
},
"rotate-method": { "rotate-method": {
"blurb": "Rotate method to use", "blurb": "Rotate method to use",
"conditionally-available": false, "conditionally-available": false,
@ -8904,6 +9212,26 @@
"filename": "gstd3d11", "filename": "gstd3d11",
"license": "LGPL", "license": "LGPL",
"other-types": { "other-types": {
"GstD3D11AlphaMode": {
"kind": "enum",
"values": [
{
"desc": "Unspecified",
"name": "unspecified",
"value": "0"
},
{
"desc": "Premultiplied",
"name": "premultiplied",
"value": "1"
},
{
"desc": "Straight",
"name": "straight",
"value": "2"
}
]
},
"GstD3D11BaseConvert": { "GstD3D11BaseConvert": {
"hierarchy": [ "hierarchy": [
"GstD3D11BaseConvert", "GstD3D11BaseConvert",
@ -8914,7 +9242,21 @@
"GInitiallyUnowned", "GInitiallyUnowned",
"GObject" "GObject"
], ],
"kind": "object" "kind": "object",
"properties": {
"method": {
"blurb": "Method used for sampling",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "bilinear (1)",
"mutable": "playing",
"readable": true,
"type": "GstD3D11SamplingMethod",
"writable": true
}
}
}, },
"GstD3D11BaseFilter": { "GstD3D11BaseFilter": {
"hierarchy": [ "hierarchy": [
@ -9155,6 +9497,41 @@
} }
] ]
}, },
"GstD3D11IpcIOMode": {
"kind": "enum",
"values": [
{
"desc": "Copy remote texture",
"name": "copy",
"value": "0"
},
{
"desc": "Import remote texture",
"name": "import",
"value": "1"
}
]
},
"GstD3D11SamplingMethod": {
"kind": "enum",
"values": [
{
"desc": "Nearest Neighbour",
"name": "nearest-neighbour",
"value": "0"
},
{
"desc": "Bilinear",
"name": "bilinear",
"value": "1"
},
{
"desc": "Linear minification, point magnification",
"name": "linear-minification",
"value": "2"
}
]
},
"GstD3D11ScreenCaptureAPI": { "GstD3D11ScreenCaptureAPI": {
"kind": "enum", "kind": "enum",
"values": [ "values": [
@ -9227,6 +9604,21 @@
"desc": "Checkers 8px", "desc": "Checkers 8px",
"name": "checkers-8", "name": "checkers-8",
"value": "10" "value": "10"
},
{
"desc": "Circular",
"name": "circular",
"value": "11"
},
{
"desc": "Blink",
"name": "blink",
"value": "12"
},
{
"desc": "Moving ball",
"name": "ball",
"value": "18"
} }
] ]
}, },
@ -9255,6 +9647,21 @@
} }
] ]
}, },
"GstD3D11WindowCaptureMode": {
"kind": "enum",
"values": [
{
"desc": "Capture entire window area",
"name": "default",
"value": "0"
},
{
"desc": "Capture client area",
"name": "client",
"value": "1"
}
]
},
"GstD3D11WindowFullscreenToggleMode": { "GstD3D11WindowFullscreenToggleMode": {
"kind": "flags", "kind": "flags",
"values": [ "values": [

View file

@ -48,6 +48,13 @@ static GstStaticCaps src_template_caps =
GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
GST_D3D11_SRC_FORMATS)); GST_D3D11_SRC_FORMATS));
/**
* GstD3D11SamplingMethod:
*
* Texture sampling method
*
* Since: 1.24
*/
typedef enum typedef enum
{ {
GST_D3D11_SAMPLING_METHOD_NEAREST, GST_D3D11_SAMPLING_METHOD_NEAREST,
@ -56,10 +63,27 @@ typedef enum
} GstD3D11SamplingMethod; } GstD3D11SamplingMethod;
static const GEnumValue gst_d3d11_sampling_methods[] = { static const GEnumValue gst_d3d11_sampling_methods[] = {
/**
* GstD3D11SamplingMethod::nearest-neighbour:
*
* Since: 1.24
*/
{GST_D3D11_SAMPLING_METHOD_NEAREST, {GST_D3D11_SAMPLING_METHOD_NEAREST,
"Nearest Neighbour", "nearest-neighbour"}, "Nearest Neighbour", "nearest-neighbour"},
/**
* GstD3D11SamplingMethod::bilinear:
*
* Since: 1.24
*/
{GST_D3D11_SAMPLING_METHOD_BILINEAR, {GST_D3D11_SAMPLING_METHOD_BILINEAR,
"Bilinear", "bilinear"}, "Bilinear", "bilinear"},
/**
* GstD3D11SamplingMethod::linear-minification:
*
* Since: 1.24
*/
{GST_D3D11_SAMPLING_METHOD_LINEAR_MINIFICATION, {GST_D3D11_SAMPLING_METHOD_LINEAR_MINIFICATION,
"Linear minification, point magnification", "linear-minification"}, "Linear minification, point magnification", "linear-minification"},
{0, nullptr, nullptr}, {0, nullptr, nullptr},
@ -99,7 +123,7 @@ gst_d3d11_base_convert_sampling_method_to_filter (GstD3D11SamplingMethod method)
#define DEFAULT_GAMMA_MODE GST_VIDEO_GAMMA_MODE_NONE #define DEFAULT_GAMMA_MODE GST_VIDEO_GAMMA_MODE_NONE
#define DEFAULT_PRIMARIES_MODE GST_VIDEO_PRIMARIES_MODE_NONE #define DEFAULT_PRIMARIES_MODE GST_VIDEO_PRIMARIES_MODE_NONE
#define DEFAULT_SAMPLING_METHOD GST_D3D11_SAMPLING_METHOD_BILINEAR #define DEFAULT_SAMPLING_METHOD GST_D3D11_SAMPLING_METHOD_BILINEAR
#define DEFAULT_ALPHA_MODE GST_D3D11_CONVERTER_ALPHA_MODE_UNSPECIFIED #define DEFAULT_ALPHA_MODE GST_D3D11_ALPHA_MODE_UNSPECIFIED
struct _GstD3D11BaseConvert struct _GstD3D11BaseConvert
{ {
@ -143,8 +167,8 @@ struct _GstD3D11BaseConvert
/* method previously selected and used for negotiation */ /* method previously selected and used for negotiation */
GstVideoOrientationMethod active_method; GstVideoOrientationMethod active_method;
GstD3D11ConverterAlphaMode src_alpha_mode; GstD3D11AlphaMode src_alpha_mode;
GstD3D11ConverterAlphaMode dst_alpha_mode; GstD3D11AlphaMode dst_alpha_mode;
SRWLOCK lock; SRWLOCK lock;
}; };
@ -386,6 +410,10 @@ gst_d3d11_base_convert_class_init (GstD3D11BaseConvertClass * klass)
gst_type_mark_as_plugin_api (GST_TYPE_D3D11_BASE_CONVERT, gst_type_mark_as_plugin_api (GST_TYPE_D3D11_BASE_CONVERT,
(GstPluginAPIFlags) 0); (GstPluginAPIFlags) 0);
gst_type_mark_as_plugin_api (GST_TYPE_D3D11_SAMPLING_METHOD,
(GstPluginAPIFlags) 0);
gst_type_mark_as_plugin_api (GST_TYPE_D3D11_ALPHA_MODE,
(GstPluginAPIFlags) 0);
} }
static void static void
@ -1930,8 +1958,8 @@ gst_d3d11_base_convert_need_convert (GstD3D11BaseConvert * self)
if (!self->same_caps) if (!self->same_caps)
return TRUE; return TRUE;
if (self->src_alpha_mode == GST_D3D11_CONVERTER_ALPHA_MODE_PREMULTIPLIED || if (self->src_alpha_mode == GST_D3D11_ALPHA_MODE_PREMULTIPLIED ||
self->dst_alpha_mode == GST_D3D11_CONVERTER_ALPHA_MODE_PREMULTIPLIED) { self->dst_alpha_mode == GST_D3D11_ALPHA_MODE_PREMULTIPLIED) {
return TRUE; return TRUE;
} }
@ -2213,7 +2241,7 @@ gst_d3d11_base_convert_set_sampling_method (GstD3D11BaseConvert * self,
static void static void
gst_d3d11_base_convert_set_src_alpha_mode (GstD3D11BaseConvert * self, gst_d3d11_base_convert_set_src_alpha_mode (GstD3D11BaseConvert * self,
GstD3D11ConverterAlphaMode mode) GstD3D11AlphaMode mode)
{ {
GstD3D11SRWLockGuard lk (&self->lock); GstD3D11SRWLockGuard lk (&self->lock);
@ -2224,7 +2252,7 @@ gst_d3d11_base_convert_set_src_alpha_mode (GstD3D11BaseConvert * self,
static void static void
gst_d3d11_base_convert_set_dst_alpha_mode (GstD3D11BaseConvert * self, gst_d3d11_base_convert_set_dst_alpha_mode (GstD3D11BaseConvert * self,
GstD3D11ConverterAlphaMode mode) GstD3D11AlphaMode mode)
{ {
GstD3D11SRWLockGuard lk (&self->lock); GstD3D11SRWLockGuard lk (&self->lock);
@ -2375,7 +2403,7 @@ gst_d3d11_convert_class_init (GstD3D11ConvertClass * klass)
g_object_class_install_property (gobject_class, PROP_CONVERT_SRC_ALPHA_MODE, g_object_class_install_property (gobject_class, PROP_CONVERT_SRC_ALPHA_MODE,
g_param_spec_enum ("src-alpha-mode", "Src Alpha Mode", g_param_spec_enum ("src-alpha-mode", "Src Alpha Mode",
"Applied input alpha mode", "Applied input alpha mode",
GST_TYPE_D3D11_CONVERTER_ALPHA_MODE, DEFAULT_ALPHA_MODE, GST_TYPE_D3D11_ALPHA_MODE, DEFAULT_ALPHA_MODE,
(GParamFlags) (GST_PARAM_MUTABLE_PLAYING | (GParamFlags) (GST_PARAM_MUTABLE_PLAYING |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
@ -2390,7 +2418,7 @@ gst_d3d11_convert_class_init (GstD3D11ConvertClass * klass)
g_object_class_install_property (gobject_class, PROP_CONVERT_DEST_ALPHA_MODE, g_object_class_install_property (gobject_class, PROP_CONVERT_DEST_ALPHA_MODE,
g_param_spec_enum ("dest-alpha-mode", "Dest Alpha Mode", g_param_spec_enum ("dest-alpha-mode", "Dest Alpha Mode",
"Output alpha mode to be applied", "Output alpha mode to be applied",
GST_TYPE_D3D11_CONVERTER_ALPHA_MODE, DEFAULT_ALPHA_MODE, GST_TYPE_D3D11_ALPHA_MODE, DEFAULT_ALPHA_MODE,
(GParamFlags) (GST_PARAM_MUTABLE_PLAYING | (GParamFlags) (GST_PARAM_MUTABLE_PLAYING |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
@ -2437,11 +2465,11 @@ gst_d3d11_convert_set_property (GObject * object, guint prop_id,
break; break;
case PROP_CONVERT_SRC_ALPHA_MODE: case PROP_CONVERT_SRC_ALPHA_MODE:
gst_d3d11_base_convert_set_src_alpha_mode (base, gst_d3d11_base_convert_set_src_alpha_mode (base,
(GstD3D11ConverterAlphaMode) g_value_get_enum (value)); (GstD3D11AlphaMode) g_value_get_enum (value));
break; break;
case PROP_CONVERT_DEST_ALPHA_MODE: case PROP_CONVERT_DEST_ALPHA_MODE:
gst_d3d11_base_convert_set_dst_alpha_mode (base, gst_d3d11_base_convert_set_dst_alpha_mode (base,
(GstD3D11ConverterAlphaMode) g_value_get_enum (value)); (GstD3D11AlphaMode) g_value_get_enum (value));
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -2599,7 +2627,7 @@ gst_d3d11_color_convert_class_init (GstD3D11ColorConvertClass * klass)
PROP_COLOR_CONVERT_SRC_ALPHA_MODE, PROP_COLOR_CONVERT_SRC_ALPHA_MODE,
g_param_spec_enum ("src-alpha-mode", "Src Alpha Mode", g_param_spec_enum ("src-alpha-mode", "Src Alpha Mode",
"Applied input alpha mode", "Applied input alpha mode",
GST_TYPE_D3D11_CONVERTER_ALPHA_MODE, DEFAULT_ALPHA_MODE, GST_TYPE_D3D11_ALPHA_MODE, DEFAULT_ALPHA_MODE,
(GParamFlags) (GST_PARAM_MUTABLE_PLAYING | (GParamFlags) (GST_PARAM_MUTABLE_PLAYING |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
@ -2615,7 +2643,7 @@ gst_d3d11_color_convert_class_init (GstD3D11ColorConvertClass * klass)
PROP_COLOR_CONVERT_DEST_ALPHA_MODE, PROP_COLOR_CONVERT_DEST_ALPHA_MODE,
g_param_spec_enum ("dest-alpha-mode", "Dest Alpha Mode", g_param_spec_enum ("dest-alpha-mode", "Dest Alpha Mode",
"Output alpha mode to be applied", "Output alpha mode to be applied",
GST_TYPE_D3D11_CONVERTER_ALPHA_MODE, DEFAULT_ALPHA_MODE, GST_TYPE_D3D11_ALPHA_MODE, DEFAULT_ALPHA_MODE,
(GParamFlags) (GST_PARAM_MUTABLE_PLAYING | (GParamFlags) (GST_PARAM_MUTABLE_PLAYING |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
@ -2653,11 +2681,11 @@ gst_d3d11_color_convert_set_property (GObject * object, guint prop_id,
break; break;
case PROP_COLOR_CONVERT_SRC_ALPHA_MODE: case PROP_COLOR_CONVERT_SRC_ALPHA_MODE:
gst_d3d11_base_convert_set_src_alpha_mode (base, gst_d3d11_base_convert_set_src_alpha_mode (base,
(GstD3D11ConverterAlphaMode) g_value_get_enum (value)); (GstD3D11AlphaMode) g_value_get_enum (value));
break; break;
case PROP_COLOR_CONVERT_DEST_ALPHA_MODE: case PROP_COLOR_CONVERT_DEST_ALPHA_MODE:
gst_d3d11_base_convert_set_dst_alpha_mode (base, gst_d3d11_base_convert_set_dst_alpha_mode (base,
(GstD3D11ConverterAlphaMode) g_value_get_enum (value)); (GstD3D11AlphaMode) g_value_get_enum (value));
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View file

@ -52,13 +52,35 @@ gst_d3d11_ipc_client_deinit (void)
} }
} }
/**
* GstD3D11IpcIOMode:
*
* Texture import mode
*
* Since: 1.24
*/
GType GType
gst_d3d11_ipc_io_mode_get_type (void) gst_d3d11_ipc_io_mode_get_type (void)
{ {
static GType type = 0; static GType type = 0;
static const GEnumValue io_modes[] = { static const GEnumValue io_modes[] = {
{GST_D3D11_IPC_IO_COPY, "Copy remote memory", "copy"}, /**
{GST_D3D11_IPC_IO_IMPORT, "Import remote memory", "import"}, * GstD3D11IpcIOMode::copy:
*
* Copy remote texture to newly allocated texture
*
* Since: 1.24
*/
{GST_D3D11_IPC_IO_COPY, "Copy remote texture", "copy"},
/**
* GstD3D11IpcIOMode::import:
*
* Import remote texture to without any allocation/copy
*
* Since: 1.24
*/
{GST_D3D11_IPC_IO_IMPORT, "Import remote texture", "import"},
{0, nullptr, nullptr} {0, nullptr, nullptr}
}; };

View file

@ -30,6 +30,46 @@
GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_plugin_utils_debug); GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_plugin_utils_debug);
#define GST_CAT_DEFAULT gst_d3d11_plugin_utils_debug #define GST_CAT_DEFAULT gst_d3d11_plugin_utils_debug
/**
* GstD3D11AlphaMode:
*
* Since: 1.24
*/
GType
gst_d3d11_alpha_mode_get_type (void)
{
static GType type = 0;
static const GEnumValue alpha_mode[] = {
/**
* GstD3D11AlphaMode::unspecified:
*
* Since: 1.24
*/
{GST_D3D11_ALPHA_MODE_UNSPECIFIED, "Unspecified", "unspecified"},
/**
* GstD3D11AlphaMode::premultiplied:
*
* Since: 1.24
*/
{GST_D3D11_ALPHA_MODE_PREMULTIPLIED, "Premultiplied", "premultiplied"},
/**
* GstD3D11AlphaMode::straight:
*
* Since: 1.24
*/
{GST_D3D11_ALPHA_MODE_STRAIGHT, "Straight", "straight"},
{0, nullptr, nullptr},
};
GST_D3D11_CALL_ONCE_BEGIN {
type = g_enum_register_static ("GstD3D11AlphaMode", alpha_mode);
} GST_D3D11_CALL_ONCE_END;
return type;
}
/* Max Texture Dimension for feature level 11_0 ~ 12_1 */ /* Max Texture Dimension for feature level 11_0 ~ 12_1 */
static guint _gst_d3d11_texture_max_dimension = 16384; static guint _gst_d3d11_texture_max_dimension = 16384;

View file

@ -38,6 +38,17 @@ typedef enum
GST_D3D11_DEVICE_VENDOR_XBOX, GST_D3D11_DEVICE_VENDOR_XBOX,
} GstD3D11DeviceVendor; } GstD3D11DeviceVendor;
typedef enum
{
GST_D3D11_ALPHA_MODE_UNSPECIFIED = 0,
GST_D3D11_ALPHA_MODE_PREMULTIPLIED,
GST_D3D11_ALPHA_MODE_STRAIGHT,
} GstD3D11AlphaMode;
#define GST_TYPE_D3D11_ALPHA_MODE (gst_d3d11_alpha_mode_get_type())
GType gst_d3d11_alpha_mode_get_type (void);
void gst_d3d11_plugin_utils_init (D3D_FEATURE_LEVEL feature_level); void gst_d3d11_plugin_utils_init (D3D_FEATURE_LEVEL feature_level);
GstCaps * gst_d3d11_get_updated_template_caps (GstStaticCaps * template_caps); GstCaps * gst_d3d11_get_updated_template_caps (GstStaticCaps * template_caps);

View file

@ -390,7 +390,9 @@ gst_d3d11_screen_capture_src_class_init (GstD3D11ScreenCaptureSrcClass * klass)
GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_STATIC_STRINGS))); GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_STATIC_STRINGS)));
/** /**
* GstD3D11ScreenCaptureSrc:hwnd-capture-mode: * GstD3D11ScreenCaptureSrc:window-capture-mode:
*
* Window capture mode to use
* *
* Since: 1.24 * Since: 1.24
*/ */

View file

@ -231,7 +231,7 @@ struct _GstD3D11TestSrc
ID2D1Factory *d2d_factory; ID2D1Factory *d2d_factory;
gint64 token; gint64 token;
gfloat alpha; gfloat alpha;
GstD3D11ConverterAlphaMode alpha_mode; GstD3D11AlphaMode alpha_mode;
gboolean reverse; gboolean reverse;
gint64 n_frames; gint64 n_frames;
@ -1105,7 +1105,7 @@ enum
#define DEFAULT_ADAPTER -1 #define DEFAULT_ADAPTER -1
#define DEFAULT_PATTERN GST_D3D11_TEST_SRC_SMPTE #define DEFAULT_PATTERN GST_D3D11_TEST_SRC_SMPTE
#define DEFAULT_ALPHA 1.0f #define DEFAULT_ALPHA 1.0f
#define DEFAULT_ALPHA_MODE GST_D3D11_CONVERTER_ALPHA_MODE_UNSPECIFIED #define DEFAULT_ALPHA_MODE GST_D3D11_ALPHA_MODE_UNSPECIFIED
static void gst_d3d11_test_src_dispose (GObject * object); static void gst_d3d11_test_src_dispose (GObject * object);
static void gst_d3d11_test_src_set_property (GObject * object, static void gst_d3d11_test_src_set_property (GObject * object,
@ -1186,8 +1186,7 @@ gst_d3d11_test_src_class_init (GstD3D11TestSrcClass * klass)
*/ */
g_object_class_install_property (gobject_class, PROP_ALPHA_MODE, g_object_class_install_property (gobject_class, PROP_ALPHA_MODE,
g_param_spec_enum ("alpha-mode", "Alpha Mode", g_param_spec_enum ("alpha-mode", "Alpha Mode",
"alpha mode to use", GST_TYPE_D3D11_CONVERTER_ALPHA_MODE, "alpha mode to use", GST_TYPE_D3D11_ALPHA_MODE, DEFAULT_ALPHA_MODE,
GST_D3D11_CONVERTER_ALPHA_MODE_UNSPECIFIED,
(GParamFlags) (G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | (GParamFlags) (G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY |
G_PARAM_STATIC_STRINGS))); G_PARAM_STATIC_STRINGS)));
@ -1221,6 +1220,8 @@ gst_d3d11_test_src_class_init (GstD3D11TestSrcClass * klass)
gst_type_mark_as_plugin_api (GST_TYPE_D3D11_TEST_SRC_PATTERN, gst_type_mark_as_plugin_api (GST_TYPE_D3D11_TEST_SRC_PATTERN,
(GstPluginAPIFlags) 0); (GstPluginAPIFlags) 0);
gst_type_mark_as_plugin_api (GST_TYPE_D3D11_ALPHA_MODE,
(GstPluginAPIFlags) 0);
} }
static void static void
@ -1264,7 +1265,7 @@ gst_d3d11_test_src_set_property (GObject * object, guint prop_id,
self->alpha = g_value_get_float (value); self->alpha = g_value_get_float (value);
break; break;
case PROP_ALPHA_MODE: case PROP_ALPHA_MODE:
self->alpha_mode = (GstD3D11ConverterAlphaMode) g_value_get_enum (value); self->alpha_mode = (GstD3D11AlphaMode) g_value_get_enum (value);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);