d3d11upload: Don't hard overwrite caps features to support d3d11 memory passthrough
authorSeungha Yang <seungha.yang@navercorp.com>
Thu, 26 Dec 2019 07:03:31 +0000 (16:03 +0900)
committerSeungha Yang <seungha.yang@navercorp.com>
Sat, 28 Dec 2019 05:43:44 +0000 (05:43 +0000)
d3d11upload should be able to support upstream d3d11 memory, not only system memory.

Fix for following pipeline
d3d11upload ! "video/x-raw(memory:D3D11Memory)" ! d3d11videosink

sys/d3d11/gstd3d11upload.c

index 08ae56f..ff43bfe 100644 (file)
@@ -167,8 +167,12 @@ gst_d3d11_upload_transform_caps (GstBaseTransform * trans,
 
   if (direction == GST_PAD_SINK) {
     tmp = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY);
+    tmp = gst_caps_merge (gst_caps_ref (caps), tmp);
   } else {
-    tmp = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
+    GstCaps *newcaps;
+    tmp = gst_caps_ref (caps);
+    newcaps = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
+    tmp = gst_caps_merge (tmp, newcaps);
   }
 
   if (filter) {