Check if our inout buffer is still alive or default to a separate output buffer.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 08:45:57 +0000 (08:45 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 08:45:57 +0000 (08:45 +0000)
sys/vaapiconvert/gstvaapiconvert.c

index a30aceb..5e64ed4 100644 (file)
@@ -527,14 +527,13 @@ gst_vaapiconvert_prepare_output_buffer(
     GstVaapiConvert * const convert = GST_VAAPICONVERT(trans);
     GstBuffer *buffer;
 
-    if (convert->use_inout_buffers) {
-        if (!GST_VAAPI_IS_VIDEO_BUFFER(inbuf)) {
-            GST_DEBUG("GstVaapiVideoBuffer was expected");
-            return GST_FLOW_UNEXPECTED;
-        }
+    if (GST_VAAPI_IS_VIDEO_BUFFER(inbuf))
         buffer = gst_buffer_ref(inbuf);
-    }
     else {
+        if (convert->use_inout_buffers) {
+            GST_DEBUG("upstream element destroyed our inout buffer");
+            convert->use_inout_buffers = FALSE;
+        }
         buffer = gst_vaapi_video_buffer_new_from_pool(convert->surfaces);
         if (!buffer)
             return GST_FLOW_UNEXPECTED;