gstvaapisurface_drm: release image when done
authorJulien Isorce <j.isorce@samsung.com>
Sun, 4 Oct 2015 22:44:16 +0000 (23:44 +0100)
committerJulien Isorce <j.isorce@samsung.com>
Tue, 26 Apr 2016 15:06:12 +0000 (16:06 +0100)
Otherwise intel-vaapi-driver will fail to process the exported surface because
it will find it is currently derived, so considered as busy.

https://bugzilla.gnome.org/show_bug.cgi?id=755072

gst-libs/gst/vaapi/gstvaapisurface_drm.c

index 1a2ba20..426019a 100644 (file)
@@ -36,11 +36,20 @@ gst_vaapi_surface_get_drm_buf_handle (GstVaapiSurface * surface, guint type)
   if (!image)
     goto error_derive_image;
 
+  if (type == GST_VAAPI_BUFFER_MEMORY_TYPE_DMA_BUF)
+      proxy =
+          gst_vaapi_buffer_proxy_new_from_object (GST_VAAPI_OBJECT (surface),
+          image->internal_image.buf, type, NULL, NULL);
+  else
   proxy =
       gst_vaapi_buffer_proxy_new_from_object (GST_VAAPI_OBJECT (surface),
       image->internal_image.buf, type, gst_vaapi_object_unref, image);
   if (!proxy)
     goto error_alloc_export_buffer;
+
+  if (type == GST_VAAPI_BUFFER_MEMORY_TYPE_DMA_BUF)
+    gst_vaapi_object_unref (image);
+
   return proxy;
 
   /* ERRORS */