videopool: Choose the biggest buffer size
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 12 Mar 2015 16:32:31 +0000 (16:32 +0000)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 13 Mar 2015 10:29:00 +0000 (10:29 +0000)
We should respect what has been negotiated.

gst-libs/gst/video/gstvideopool.c

index 71bd562..6b9d7dd 100644 (file)
@@ -138,6 +138,9 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
   if (!gst_video_info_from_caps (&info, caps))
     goto wrong_caps;
 
+  if (size < info.size)
+    goto wrong_size;
+
   if (!gst_buffer_pool_config_get_allocator (config, &allocator, &params))
     goto wrong_config;
 
@@ -172,6 +175,7 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
     gst_buffer_pool_config_set_video_alignment (config, &priv->video_align);
   }
   priv->info = info;
+  info.size = MAX (size, info.size);
 
   gst_buffer_pool_config_set_params (config, caps, info.size, min_buffers,
       max_buffers);
@@ -195,6 +199,13 @@ wrong_caps:
         "failed getting geometry from caps %" GST_PTR_FORMAT, caps);
     return FALSE;
   }
+wrong_size:
+  {
+    GST_WARNING_OBJECT (pool,
+        "Provided size is to small for the caps: %u", size);
+    return FALSE;
+
+  }
 }
 
 static GstFlowReturn