diff --git a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json index 0eacb33140..5f07e2fcb8 100644 --- a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json @@ -4606,6 +4606,7 @@ "description": "Selects the right transform element based on the caps", "hierarchy": [ "GstAutoConvert", + "GstBaseAutoConvert", "GstBin", "GstElement", "GstObject", @@ -4655,11 +4656,12 @@ }, "rank": "none" }, - "autovideoconvert": { - "author": "Benjamin Gaignard ", - "description": "Selects the right color space converter based on the caps", + "autodeinterlace": { + "author": "Thibault Saunier ", + "description": "Selects the right deinterlacer based on caps", "hierarchy": [ - "GstAutoVideoConvert", + "GstAutoDeinterlace", + "GstBaseAutoConvert", "GstBin", "GstElement", "GstObject", @@ -4669,7 +4671,75 @@ "interfaces": [ "GstChildProxy" ], - "klass": "Generic/Bin", + "klass": "Bin/Colorspace/Scale/Video/Converter/Deinterlace", + "pad-templates": { + "sink": { + "caps": "ANY", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "ANY", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "fields": { + "blurb": "Fields to use for deinterlacing. Note that if the underlying implementation doesn't support the property it will be ignored.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "all (0)", + "mutable": "null", + "readable": true, + "type": "GstAutoDeinterlaceFields", + "writable": true + }, + "layout": { + "blurb": "Layout to use Note that if the underlying implementation doesn't support the property it will be ignored.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "auto (0)", + "mutable": "null", + "readable": true, + "type": "GstAutoDeinterlaceFieldLayout", + "writable": true + }, + "mode": { + "blurb": "Deinterlace Mode", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "auto (0)", + "mutable": "null", + "readable": true, + "type": "GstAutoDeinterlaceModes", + "writable": true + } + }, + "rank": "none" + }, + "autovideoconvert": { + "author": "Thibault Saunier ", + "description": "Selects the right color space converter based on the caps", + "hierarchy": [ + "GstAutoVideoConvert", + "GstBaseAutoConvert", + "GstBin", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstChildProxy" + ], + "klass": "Bin/Colorspace/Scale/Video/Converter", "long-name": "Select color space converter based on caps", "pad-templates": { "sink": { @@ -4685,11 +4755,140 @@ }, "properties": {}, "rank": "none" + }, + "autovideoflip": { + "author": "Thibault Saunier ", + "description": "Selects the right video flip element based on the caps", + "hierarchy": [ + "GstAutoVideoFlip", + "GstBaseAutoConvert", + "GstBin", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstChildProxy" + ], + "klass": "Bin/Filter/Effect/Video", + "pad-templates": { + "sink": { + "caps": "ANY", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "ANY", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "video-direction": { + "blurb": "Video direction: rotation and flipping", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": true, + "default": "identity (0)", + "mutable": "playing", + "readable": true, + "type": "GstVideoOrientationMethod", + "writable": true + } + }, + "rank": "none" } }, "filename": "gstautoconvert", "license": "LGPL", - "other-types": {}, + "other-types": { + "GstAutoDeinterlaceFieldLayout": { + "kind": "enum", + "values": [ + { + "desc": "Auto detection", + "name": "auto", + "value": "0" + }, + { + "desc": "Top field first", + "name": "tff", + "value": "1" + }, + { + "desc": "Bottom field first", + "name": "bff", + "value": "2" + } + ] + }, + "GstAutoDeinterlaceFields": { + "kind": "enum", + "values": [ + { + "desc": "All fields", + "name": "all", + "value": "0" + }, + { + "desc": "Top fields only", + "name": "top", + "value": "1" + }, + { + "desc": "Bottom fields only", + "name": "bottom", + "value": "2" + }, + { + "desc": "Automatically detect", + "name": "auto", + "value": "3" + } + ] + }, + "GstAutoDeinterlaceModes": { + "kind": "enum", + "values": [ + { + "desc": "Auto detection (best effort)", + "name": "auto", + "value": "0" + }, + { + "desc": "Force deinterlacing", + "name": "interlaced", + "value": "1" + }, + { + "desc": "Run in passthrough mode", + "name": "disabled", + "value": "2" + }, + { + "desc": "Auto detection (strict)", + "name": "auto-strict", + "value": "3" + } + ] + }, + "GstBaseAutoConvert": { + "hierarchy": [ + "GstBaseAutoConvert", + "GstBin", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstChildProxy" + ], + "kind": "object" + } + }, "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, diff --git a/subprojects/gst-plugins-bad/gst/autoconvert/gstautodeinterlace.c b/subprojects/gst-plugins-bad/gst/autoconvert/gstautodeinterlace.c index c6a406f372..721788d279 100644 --- a/subprojects/gst-plugins-bad/gst/autoconvert/gstautodeinterlace.c +++ b/subprojects/gst-plugins-bad/gst/autoconvert/gstautodeinterlace.c @@ -91,6 +91,15 @@ gst_auto_deinterlace_field_layout_get_type (void) return auto_deinterlace_field_layout_type; } +/** + * GstAutoDeinterlaceFields: + * @GST_AUTO_DEINTERLACE_FIELDS_ALL: All fields (missing data is interpolated) + * @GST_AUTO_DEINTERLACE_FIELDS_TOP: Top Fields only + * @GST_AUTO_DEINTERLACE_FIELDS_BOTTOM: Bottom Fields Only + * @GST_AUTO_DEINTERLACE_FIELDS_AUTO: Automatically detect + * + * Since: 1.24 + */ typedef enum { GST_AUTO_DEINTERLACE_FIELDS_ALL, /* All (missing data is interp.) */ @@ -767,6 +776,8 @@ gst_auto_deinterlace_class_init (GstAutoDeinterlaceClass * klass) DEFAULT_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); + gst_type_mark_as_plugin_api (GST_TYPE_AUTO_DEINTERLACE_FIELDS, 0); + gst_type_mark_as_plugin_api (GST_TYPE_AUTO_DEINTERLACE_MODES, 0); gst_type_mark_as_plugin_api (GST_TYPE_AUTO_DEINTERLACE_FIELD_LAYOUT, 0); gst_element_class_set_static_metadata (gstelement_class, diff --git a/subprojects/gst-plugins-bad/gst/autoconvert/plugin.c b/subprojects/gst-plugins-bad/gst/autoconvert/plugin.c index f85399f9e5..078f881032 100644 --- a/subprojects/gst-plugins-bad/gst/autoconvert/plugin.c +++ b/subprojects/gst-plugins-bad/gst/autoconvert/plugin.c @@ -36,6 +36,7 @@ plugin_init (GstPlugin * plugin) ret |= GST_ELEMENT_REGISTER (autovideoconvert, plugin); ret |= GST_ELEMENT_REGISTER (autodeinterlace, plugin); ret |= GST_ELEMENT_REGISTER (autovideoflip, plugin); + gst_type_mark_as_plugin_api (GST_TYPE_BASE_AUTO_CONVERT, 0); return ret; }