From 7330ea8dbf28669d1d5d0f869d671bc324b87643 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 21 Feb 2021 17:35:40 +0900 Subject: [PATCH] d3d11deinterlace: Add missing system memory caps features on templates This element can support system memory Part-of: --- sys/d3d11/gstd3d11deinterlace.cpp | 33 ++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/sys/d3d11/gstd3d11deinterlace.cpp b/sys/d3d11/gstd3d11deinterlace.cpp index 85b5b5261b..170d88a652 100644 --- a/sys/d3d11/gstd3d11deinterlace.cpp +++ b/sys/d3d11/gstd3d11deinterlace.cpp @@ -1894,7 +1894,14 @@ static GstElementClass *bin_parent_class = NULL; #define GST_D3D11_DEINTERLACE_BIN_GET_CLASS(object) \ (G_TYPE_INSTANCE_GET_CLASS ((object),G_TYPE_FROM_INSTANCE (object), \ GstD3D11DeinterlaceBinClass)) -#define GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE(features,format) \ + +#define GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE(format) \ + "video/x-raw, " \ + "format = (string) " format ", " \ + "width = (int) [64, 8192], " \ + "height = (int) [64, 8192] " + +#define GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES(features,format) \ "video/x-raw(" features "), " \ "format = (string) " format ", " \ "width = (int) [64, 8192], " \ @@ -1904,23 +1911,35 @@ static GstStaticPadTemplate bin_sink_template_caps = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE + GST_STATIC_CAPS (GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY, GST_D3D11_SINK_FORMATS) "; " - GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY "," GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, - GST_D3D11_SINK_FORMATS))); + GST_D3D11_SINK_FORMATS) "; " + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE (GST_D3D11_SINK_FORMATS) "; " + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES + (GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY "," + GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, + GST_D3D11_SINK_FORMATS) + )); static GstStaticPadTemplate bin_src_template_caps = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE + GST_STATIC_CAPS (GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY, GST_D3D11_SRC_FORMATS) "; " - GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY "," GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, - GST_D3D11_SRC_FORMATS))); + GST_D3D11_SRC_FORMATS) "; " + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE (GST_D3D11_SRC_FORMATS) "; " + GST_D3D11_DEINTERLACE_BIN_CAPS_MAKE_WITH_FEATURES + (GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY "," + GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, + GST_D3D11_SRC_FORMATS) + )); static void gst_d3d11_deinterlace_bin_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);