gstanalytics: Add transform function to copy the tensor meta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8825>
This commit is contained in:
parent
57e8dbfeb4
commit
700b665bf7
@ -22,6 +22,33 @@
|
|||||||
|
|
||||||
#include "gsttensormeta.h"
|
#include "gsttensormeta.h"
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_tensor_meta_transform (GstBuffer * dest, GstMeta * meta,
|
||||||
|
GstBuffer * buffer, GQuark type, gpointer data)
|
||||||
|
{
|
||||||
|
GstTensorMeta *dmeta, *smeta;
|
||||||
|
|
||||||
|
smeta = (GstTensorMeta *) meta;
|
||||||
|
|
||||||
|
if (GST_META_TRANSFORM_IS_COPY (type)) {
|
||||||
|
smeta = (GstTensorMeta *) meta;
|
||||||
|
dmeta = gst_buffer_add_tensor_meta (dest);
|
||||||
|
if (!dmeta)
|
||||||
|
return FALSE;
|
||||||
|
GST_TRACE ("copy tensor metadata");
|
||||||
|
dmeta->num_tensors = smeta->num_tensors;
|
||||||
|
dmeta->tensors = g_new (GstTensor *, smeta->num_tensors);
|
||||||
|
for (int i = 0; i < smeta->num_tensors; i++) {
|
||||||
|
dmeta->tensors[i] = gst_tensor_copy (smeta->tensors[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
GST_WARNING ("gst_tensor_meta_transform: transform type %u not supported",
|
||||||
|
type);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_tensor_meta_init (GstMeta * meta, gpointer params, GstBuffer * buffer)
|
gst_tensor_meta_init (GstMeta * meta, gpointer params, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
@ -80,7 +107,7 @@ gst_tensor_meta_get_info (void)
|
|||||||
sizeof (GstTensorMeta),
|
sizeof (GstTensorMeta),
|
||||||
gst_tensor_meta_init,
|
gst_tensor_meta_init,
|
||||||
gst_tensor_meta_free,
|
gst_tensor_meta_free,
|
||||||
NULL); /* tensor_meta_transform not implemented */
|
gst_tensor_meta_transform);
|
||||||
g_once_init_leave (&tmeta_info, meta);
|
g_once_init_leave (&tmeta_info, meta);
|
||||||
}
|
}
|
||||||
return tmeta_info;
|
return tmeta_info;
|
||||||
|
@ -718,6 +718,10 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
|
|||||||
"failed to copy meta %p of API type %s", meta,
|
"failed to copy meta %p of API type %s", meta,
|
||||||
g_type_name (info->api));
|
g_type_name (info->api));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
GST_CAT_WARNING (GST_CAT_BUFFER,
|
||||||
|
"No transform function for meta %p of API type %s\n", (void *) meta,
|
||||||
|
g_type_name (info->api));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user