From 7b8bb7188b1843d368765739b2f4a89be3065b7a Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Tue, 15 Apr 2014 13:20:12 -0400 Subject: [PATCH] v4l2bufferpool: Turn cropmeta into a custom option Turn crop meta into a custom option and make sure it's there is needed. --- sys/v4l2/gstv4l2bufferpool.c | 14 +++++++++++++- sys/v4l2/gstv4l2bufferpool.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 65e72d4cd1..95140bbc77 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -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: diff --git a/sys/v4l2/gstv4l2bufferpool.h b/sys/v4l2/gstv4l2bufferpool.h index 17363c8e4e..06415abb65 100644 --- a/sys/v4l2/gstv4l2bufferpool.h +++ b/sys/v4l2/gstv4l2bufferpool.h @@ -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;