static gboolean gst_imx_blitter_video_transform_transform_meta(GstBaseTransform *trans, GstBuffer *inbuf, GstMeta *meta, GstBuffer *outbuf) { GstMetaInfo const *info = meta->info; gchar const * const *tags; tags = gst_meta_api_type_get_tags(info->api); if ( (tags != NULL) && (g_strv_length((gchar **)tags) == 1) && gst_meta_api_type_has_tag(info->api, g_quark_from_string(GST_META_TAG_VIDEO_STR)) ) return TRUE; return GST_BASE_TRANSFORM_CLASS(gst_imx_blitter_video_transform_parent_class)->transform_meta(trans, inbuf, meta, outbuf); }
static gboolean foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data) { GstRTPOpusDepay *depay = user_data; const GstMetaInfo *info = (*meta)->info; const gchar *const *tags = gst_meta_api_type_get_tags (info->api); if (!tags || (g_strv_length ((gchar **) tags) == 1 && gst_meta_api_type_has_tag (info->api, g_quark_from_string (GST_META_TAG_AUDIO_STR)))) { GST_DEBUG_OBJECT (depay, "keeping metadata %s", g_type_name (info->api)); } else { GST_DEBUG_OBJECT (depay, "dropping metadata %s", g_type_name (info->api)); *meta = NULL; } return TRUE; }
static gboolean foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data) { CopyMetaData *data = user_data; GstRtpOPUSPay *pay = data->pay; GstBuffer *outbuf = data->outbuf; const GstMetaInfo *info = (*meta)->info; const gchar *const *tags = gst_meta_api_type_get_tags (info->api); if (!tags || (g_strv_length ((gchar **) tags) == 1 && gst_meta_api_type_has_tag (info->api, g_quark_from_string (GST_META_TAG_AUDIO_STR)))) { GstMetaTransformCopy copy_data = { FALSE, 0, -1 }; GST_DEBUG_OBJECT (pay, "copy metadata %s", g_type_name (info->api)); /* simply copy then */ info->transform_func (outbuf, *meta, inbuf, _gst_meta_transform_copy, ©_data); } else { GST_DEBUG_OBJECT (pay, "not copying metadata %s", g_type_name (info->api)); } return TRUE; }