vaapidecode,vaapipostproc: Disable DMAbuf from caps negotiation
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 20 May 2022 07:59:58 +0000 (09:59 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 12 Jul 2023 23:23:55 +0000 (01:23 +0200)
Given the amount of complains about artifacts when negotiating dmabuf
given incompatible drm-formats, and that there's no enough bandwidth
for a proper and quick fix in gstreamer-vaapi, this patch disables,
from decoders and postprocessor, the DMABuf caps feature.

For those who needs DMABuf can use the va elements in -bad, increasing
their ranking for autoplugging by using the environment variable
GST_PLUGIN_FEATURE_RANK=vah264dec:MAX, for example.

This can be considered a first step to the deprecation of
gstreamer-vaapi in favor of the va plugin in -bad.

Fixes: #1137
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5029>

subprojects/gstreamer-vaapi/gst/vaapi/gstvaapidecode.c
subprojects/gstreamer-vaapi/gst/vaapi/gstvaapipostproc.c

index 9f6eaba..1eb6208 100644 (file)
@@ -71,7 +71,6 @@ char *gst_vaapidecode_sink_caps_str = NULL;
 
 static const char gst_vaapidecode_src_caps_str[] =
     GST_VAAPI_MAKE_SURFACE_CAPS "; "
-    GST_VIDEO_CAPS_MAKE_WITH_FEATURES(GST_CAPS_FEATURE_MEMORY_DMABUF, GST_VAAPI_FORMATS_ALL) " ;"
 #if (GST_VAAPI_USE_GLX || GST_VAAPI_USE_EGL)
     GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS "; "
 #endif
@@ -261,14 +260,6 @@ gst_vaapidecode_ensure_allowed_srcpad_caps (GstVaapiDecode * decode)
   gst_caps_set_features_simple (va_caps,
       gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE));
 
-  if (gst_vaapi_mem_type_supports (mem_types,
-          GST_VAAPI_BUFFER_MEMORY_TYPE_DMA_BUF) ||
-      gst_vaapi_mem_type_supports (mem_types,
-          GST_VAAPI_BUFFER_MEMORY_TYPE_DMA_BUF2)) {
-    dma_caps = gst_caps_copy (base_caps);
-    gst_caps_set_features_simple (dma_caps,
-        gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_DMABUF));
-  }
 #if (GST_VAAPI_USE_GLX || GST_VAAPI_USE_EGL)
   if (!GST_VAAPI_PLUGIN_BASE_SRC_PAD_CAN_DMABUF (decode)
       && gst_vaapi_display_has_opengl (GST_VAAPI_PLUGIN_BASE_DISPLAY (decode))) {
index 436dbae..0b1debc 100644 (file)
@@ -76,9 +76,7 @@ static const char gst_vaapipostproc_src_caps_str[] =
   GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS "; "
 #endif
   GST_VIDEO_CAPS_MAKE (GST_VAAPI_FORMATS_ALL) ", "
-  GST_CAPS_INTERLACED_MODES "; "
-  GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF,
-      GST_VAAPI_FORMATS_ALL);
+  GST_CAPS_INTERLACED_MODES;
 /* *INDENT-ON* */
 
 /* *INDENT-OFF* */