v4l2bufferpool: Turn cropmeta into a custom option
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 15 Apr 2014 17:20:12 +0000 (13:20 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 8 May 2014 19:56:36 +0000 (15:56 -0400)
Turn crop meta into a custom option and make sure it's there is needed.

sys/v4l2/gstv4l2bufferpool.c
sys/v4l2/gstv4l2bufferpool.h

index 65e72d4cd1bf4386499023b6dff559e923fa5a35..95140bbc77efcabe200cbb042a15e5fc05a082dc 100644 (file)
@@ -224,9 +224,16 @@ gst_v4l2_buffer_pool_set_config (GstBufferPool * bpool, GstStructure * config)
       gst_buffer_pool_config_has_option (config,
       GST_BUFFER_POOL_OPTION_VIDEO_META);
 
+  pool->add_cropmeta =
+      gst_buffer_pool_config_has_option (config,
+      GST_V4L2_BUFFER_POOL_OPTION_CROP_META);
+
   if (!pool->add_videometa && obj->need_video_meta)
     goto missing_video_api;
 
+  if (!pool->add_cropmeta && obj->need_crop_meta)
+    goto missing_crop_api;
+
   /* parse the config and keep around */
   if (!gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers,
           &max_buffers))
@@ -299,7 +306,12 @@ done:
   /* ERRORS */
 missing_video_api:
   {
-    GST_ERROR_OBJECT (pool, "missing GstMetaVideo API in config");
+    GST_ERROR_OBJECT (pool, "missing GstVideoMeta API in config");
+    return FALSE;
+  }
+missing_crop_api:
+  {
+    GST_ERROR_OBJECT (pool, "missing GstVideoCropMeta API");
     return FALSE;
   }
 wrong_config:
index 17363c8e4e1dc5711a0ec0ffb6f623e25a794d61..06415abb654a73ae72b69e2bf44091ed1ecc031b 100644 (file)
@@ -44,6 +44,8 @@ G_BEGIN_DECLS
 #define GST_V4L2_BUFFER_POOL(obj)      (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_BUFFER_POOL, GstV4l2BufferPool))
 #define GST_V4L2_BUFFER_POOL_CAST(obj) ((GstV4l2BufferPool*)(obj))
 
+#define GST_V4L2_BUFFER_POOL_OPTION_CROP_META "GstV4l2BufferPoolOptionCropMeta"
+
 struct _GstV4l2BufferPool
 {
   GstBufferPool parent;