summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2021-02-01 23:50:12 +0100
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2021-02-05 18:52:56 +0100
commitda363a20fe9b79bd142723d762c98ec271553001 (patch)
treea2d9aec7672319447afdff5ae2d1f87ffcef7825 /sys
parenta29b56008acfbf481131d46d51c7c012fef2c074 (diff)
downloadgstreamer-plugins-bad-da363a20fe9b79bd142723d762c98ec271553001.tar.gz
va: vpp: don't copy color, size or orientation video metas
If they are processed by the element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>
Diffstat (limited to 'sys')
-rw-r--r--sys/va/gstvavpp.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/sys/va/gstvavpp.c b/sys/va/gstvavpp.c
index c5334eec8..a70e5ee48 100644
--- a/sys/va/gstvavpp.c
+++ b/sys/va/gstvavpp.c
@@ -151,6 +151,12 @@ static const gchar *caps_str = GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("memory:VAMemo
#define META_TAG_COLORSPACE meta_tag_colorspace_quark
static GQuark meta_tag_colorspace_quark;
+#define META_TAG_SIZE meta_tag_size_quark
+static GQuark meta_tag_size_quark;
+#define META_TAG_ORIENTATION meta_tag_orientation_quark
+static GQuark meta_tag_orientation_quark;
+#define META_TAG_VIDEO meta_tag_video_quark
+static GQuark meta_tag_video_quark;
static void
gst_va_vpp_dispose (GObject * object)
@@ -1093,15 +1099,24 @@ gst_va_vpp_transform_meta (GstBaseTransform * trans, GstBuffer * inbuf,
tags = gst_meta_api_type_get_tags (info->api);
- if (!tags || (g_strv_length ((gchar **) tags) == 1
- && (self->op_flags & VPP_CONVERT_FORMAT)
- && gst_meta_api_type_has_tag (info->api, META_TAG_COLORSPACE))) {
- /* don't copy colorspace specific metadata, FIXME, we need a MetaTransform
- * for the colorspace metadata. */
+ if (!tags)
+ return TRUE;
+
+ /* don't copy colorspace/size/orientation specific metadata */
+ if ((self->op_flags & VPP_CONVERT_FORMAT)
+ && gst_meta_api_type_has_tag (info->api, META_TAG_COLORSPACE))
return FALSE;
- }
+ else if ((self->op_flags & VPP_CONVERT_SIZE)
+ && gst_meta_api_type_has_tag (info->api, META_TAG_SIZE))
+ return FALSE;
+ else if ((self->op_flags & VPP_CONVERT_DIRECTION)
+ && gst_meta_api_type_has_tag (info->api, META_TAG_ORIENTATION))
+ return FALSE;
+ else if (gst_meta_api_type_has_tag (info->api, META_TAG_VIDEO))
+ return TRUE;
- return TRUE;
+ return GST_BASE_TRANSFORM_CLASS (parent_class)->transform_meta (trans, outbuf,
+ meta, inbuf);
}
static GstCaps *
@@ -2212,7 +2227,14 @@ _register_debug_category (gpointer data)
GST_DEBUG_CATEGORY_INIT (gst_va_vpp_debug, "vavpp", 0,
"VA Video Postprocessor");
- meta_tag_colorspace_quark = g_quark_from_static_string ("colorspace");;
+#define D(type) \
+ G_PASTE (META_TAG_, type) = \
+ g_quark_from_static_string (G_PASTE (G_PASTE (GST_META_TAG_VIDEO_, type), _STR))
+ D (COLORSPACE);
+ D (SIZE);
+ D (ORIENTATION);
+#undef D
+ META_TAG_VIDEO = g_quark_from_static_string (GST_META_TAG_VIDEO_STR);
return NULL;
}