vavpp: Fix the caps leak in the transform_caps() function.
authorHe Junyan <junyan.he@intel.com>
Sat, 12 Feb 2022 06:51:51 +0000 (14:51 +0800)
committerHe Junyan <junyan.he@intel.com>
Sat, 12 Feb 2022 12:11:46 +0000 (20:11 +0800)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1689>

subprojects/gst-plugins-bad/sys/va/gstvavpp.c

index d85bfa7..c781526 100644 (file)
@@ -986,17 +986,26 @@ gst_va_vpp_transform_caps (GstBaseTransform * trans, GstPadDirection direction,
   ret = gst_va_vpp_caps_remove_fields (caps);
 
   tmp = gst_va_vpp_complete_caps_features (ret, GST_CAPS_FEATURE_MEMORY_VA);
-  if (!gst_caps_is_subset (tmp, ret))
+  if (!gst_caps_is_subset (tmp, ret)) {
     gst_caps_append (ret, tmp);
+  } else {
+    gst_caps_unref (tmp);
+  }
 
   tmp = gst_va_vpp_complete_caps_features (ret, GST_CAPS_FEATURE_MEMORY_DMABUF);
-  if (!gst_caps_is_subset (tmp, ret))
+  if (!gst_caps_is_subset (tmp, ret)) {
     gst_caps_append (ret, tmp);
+  } else {
+    gst_caps_unref (tmp);
+  }
 
   tmp = gst_va_vpp_complete_caps_features (ret,
       GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
-  if (!gst_caps_is_subset (tmp, ret))
+  if (!gst_caps_is_subset (tmp, ret)) {
     gst_caps_append (ret, tmp);
+  } else {
+    gst_caps_unref (tmp);
+  }
 
 bail:
   if (filter) {