From: Wim Taymans Date: Fri, 2 Mar 2012 16:35:40 +0000 (+0100) Subject: videoconvert: use base class new vmethods X-Git-Tag: RELEASE-0.11.3~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=abca785f0f4cd87aa37aa47d0d7fe81cc0dc878d;p=platform%2Fupstream%2Fgst-plugins-base.git videoconvert: use base class new vmethods Use the base class filter_meta to proxy all metadata upstream. Use the base class transform_meta to let it copy all non-colorspace dependent metadata. --- diff --git a/gst/videoconvert/gstvideoconvert.c b/gst/videoconvert/gstvideoconvert.c index a01f057..efc1c7d 100644 --- a/gst/videoconvert/gstvideoconvert.c +++ b/gst/videoconvert/gstvideoconvert.c @@ -158,6 +158,14 @@ gst_video_convert_fixate_caps (GstBaseTransform * trans, return result; } +static gboolean +gst_video_convert_filter_meta (GstBaseTransform * trans, GstQuery * query, + GType api) +{ + /* propose all metadata upstream */ + return TRUE; +} + /* The caps can be transformed into any other caps with format info removed. * However, we should prefer passthrough, so if passthrough is possible, * put it first in the list. */ @@ -186,6 +194,24 @@ gst_video_convert_transform_caps (GstBaseTransform * btrans, } static gboolean +gst_video_convert_transform_meta (GstBaseTransform * trans, GstBuffer * outbuf, + GstMeta * meta, GstBuffer * inbuf) +{ + const GstMetaInfo *info = meta->info; + gboolean ret; + + if (gst_meta_api_type_has_tag (info->api, _colorspace_quark)) { + /* don't copy colorspace specific metadata, FIXME, we need a MetaTransform + * for the colorspace metadata. */ + ret = FALSE; + } else { + /* copy other metadata */ + ret = TRUE; + } + return ret; +} + +static gboolean gst_video_convert_set_info (GstVideoFilter * filter, GstCaps * incaps, GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info) @@ -348,6 +374,10 @@ gst_video_convert_class_init (GstVideoConvertClass * klass) GST_DEBUG_FUNCPTR (gst_video_convert_transform_caps); gstbasetransform_class->fixate_caps = GST_DEBUG_FUNCPTR (gst_video_convert_fixate_caps); + gstbasetransform_class->filter_meta = + GST_DEBUG_FUNCPTR (gst_video_convert_filter_meta); + gstbasetransform_class->transform_meta = + GST_DEBUG_FUNCPTR (gst_video_convert_transform_meta); gstbasetransform_class->passthrough_on_same_caps = TRUE;