From 91815710dd446782256aa9e24f60f3623051cef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Fri, 22 Dec 2023 19:45:35 -0500 Subject: [PATCH] analyticsmeta: Make the GstAnalyticsRelatableMtdData struct private Only ask the subclass about how much space they need, this way we can keep the allocation details more private. Part-of: --- girs/GstAnalytics-1.0.gir | 48 +---- .../analytics/gstanalyticsclassificationmtd.c | 28 +-- .../gst-libs/gst/analytics/gstanalyticsmeta.c | 203 ++++++++++-------- .../gst-libs/gst/analytics/gstanalyticsmeta.h | 28 +-- .../gstanalyticsobjectdetectionmtd.c | 39 ++-- .../analytics/gstanalyticsobjecttrackingmtd.c | 25 +-- 6 files changed, 150 insertions(+), 221 deletions(-) diff --git a/girs/GstAnalytics-1.0.gir b/girs/GstAnalytics-1.0.gir index 41bec7f28b..709971aa57 100644 --- a/girs/GstAnalytics-1.0.gir +++ b/girs/GstAnalytics-1.0.gir @@ -284,42 +284,6 @@ Quark of the class of object associated with this location. Only use for criteria. - - Base structure for analysis-metadata that can be placed in relation. Only -other analysis-metadata based on GstAnalyticsRelatableMtdData should -directly use this structure. - - - Identify the type of analysis-metadata - - - - Instance identifier. - - - - Size in bytes of the instance - - - - - - - - - - - - - - - - - - - - - @@ -362,11 +326,11 @@ directly use this structure. Add a relatable metadata to @meta. This method is meant to be used by new struct sub-classing GstAnalyticsRelatableMtd. - - New GstAnalyticsRelatableMtdData instance. + + A pointer to a memory area of size @size where to put the data Since 1.24 - + @@ -631,11 +595,11 @@ Since 1.24 - - Instance of GstAnalyticsRelatableMtdData + + Analytics data pointer Since 1.24 - + diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsclassificationmtd.c b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsclassificationmtd.c index 14913b718f..d8f1a15ae5 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsclassificationmtd.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsclassificationmtd.c @@ -39,7 +39,6 @@ struct _GstAnalyticsClsConfLvlAndClass /* * GstAnalyticsClsMtd: - * @parent: parent * @length: classes and confidence levels count * @class_quarks: (array length=length): Array of quark representing a class * @confidence_levels: (array length=length): Array of confidence levels for @@ -49,25 +48,10 @@ struct _GstAnalyticsClsConfLvlAndClass */ struct _GstAnalyticsClsMtdData { - GstAnalyticsRelatableMtdData parent; gsize length; GstAnalyticsClsConfLvlAndClass confidence_levels_and_classes[]; // Must be last }; - -static GstAnalyticsClsMtdData * -gst_analytics_cls_mtd_get_data (GstAnalyticsClsMtd * instance) -{ - GstAnalyticsRelatableMtdData *rlt_data = - gst_analytics_relation_meta_get_mtd_data (instance->meta, - instance->id); - g_return_val_if_fail (rlt_data, NULL); - g_return_val_if_fail (rlt_data->analysis_type == - gst_analytics_cls_mtd_get_type_quark (), NULL); - - return (GstAnalyticsClsMtdData *) rlt_data; -} - /** * gst_analytics_cls_mtd_get_type_quark: * Get a quark identifying #GstAnalyticsMtd type. @@ -113,7 +97,8 @@ gst_analytics_cls_mtd_get_level (GstAnalyticsClsMtd * handle, gint index) g_return_val_if_fail (index >= 0, -1.0); g_return_val_if_fail (handle->meta != NULL, -1.0); GstAnalyticsClsMtdData *cls_mtd_data; - cls_mtd_data = gst_analytics_cls_mtd_get_data (handle); + cls_mtd_data = gst_analytics_relation_meta_get_mtd_data (handle->meta, + handle->id); g_return_val_if_fail (cls_mtd_data != NULL, -1.0); g_return_val_if_fail (cls_mtd_data->length > index, -1.0); return cls_mtd_data->confidence_levels_and_classes[index].confidence_levels; @@ -136,7 +121,8 @@ gst_analytics_cls_mtd_get_index_by_quark (GstAnalyticsClsMtd * handle, g_return_val_if_fail (handle, -1); GstAnalyticsClsMtdData *cls_mtd_data; - cls_mtd_data = gst_analytics_cls_mtd_get_data (handle); + cls_mtd_data = gst_analytics_relation_meta_get_mtd_data (handle->meta, + handle->id); g_return_val_if_fail (cls_mtd_data != NULL, -1); for (gint i = 0; i < cls_mtd_data->length; i++) { @@ -159,7 +145,8 @@ gsize gst_analytics_cls_mtd_get_length (GstAnalyticsClsMtd * handle) { GstAnalyticsClsMtdData *cls_mtd_data; - cls_mtd_data = gst_analytics_cls_mtd_get_data (handle); + cls_mtd_data = gst_analytics_relation_meta_get_mtd_data (handle->meta, + handle->id); g_return_val_if_fail (cls_mtd_data != NULL, 0); return cls_mtd_data->length; } @@ -178,7 +165,8 @@ gst_analytics_cls_mtd_get_quark (GstAnalyticsClsMtd * handle, gint index) { GstAnalyticsClsMtdData *cls_mtd_data; g_return_val_if_fail (handle, 0); - cls_mtd_data = gst_analytics_cls_mtd_get_data (handle); + cls_mtd_data = gst_analytics_relation_meta_get_mtd_data (handle->meta, + handle->id); g_return_val_if_fail (cls_mtd_data != NULL, 0); return cls_mtd_data->confidence_levels_and_classes[index].class; } diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c index e299a4ba77..a88e0aa9a0 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c @@ -27,68 +27,24 @@ GST_DEBUG_CATEGORY_STATIC (an_relation_meta_debug); #define GST_CAT_AN_RELATION an_relation_meta_debug -static char invalid_type_name[] = "_invalid"; - -static guint -gst_analytics_relation_meta_get_next_id (GstAnalyticsRelationMeta * meta); - -/** - * gst_analytics_mtd_get_type_quark: - * @instance: Instance of #GstAnalyticsMtd - * Get analysis result type. +/* + * GstAnalyticsRelatableMtdData: + * @analysis_type: Identify the type of analysis-metadata + * @id: Instance identifier. + * @size: Size in bytes of the instance * - * Returns: quark associated with type. - * - * Since: 1.24 + * Base structure for analysis-metadata that can be placed in relation. Only + * other analysis-metadata based on GstAnalyticsRelatableMtdDatax should + * directly use this structure. */ -GstAnalyticsMtdType -gst_analytics_mtd_get_type_quark (GstAnalyticsMtd * handle) +typedef struct { - GstAnalyticsRelatableMtdData *rlt; - rlt = gst_analytics_relation_meta_get_mtd_data (handle->meta, handle->id); + GstAnalyticsMtdType analysis_type; + guint id; + gsize size; + gpointer data[]; +} GstAnalyticsRelatableMtdData; - g_return_val_if_fail (rlt != NULL, - g_quark_from_static_string (invalid_type_name)); - - return rlt->analysis_type; -} - -/** - * gst_analytics_mtd_get_id: - * @instance: Instance of #GstAnalyticsMtd - * Get instance id - * - * Returns: Id of @instance - * - * Since: 1.24 - */ -guint -gst_analytics_mtd_get_id (GstAnalyticsMtd * handle) -{ - return handle->id; -} - -/** - * gst_analytics_mtd_get_size: - * @instance Instance of #GstAnalyticsRelatableMtd - * Get instance size - * - * Returns: Size (in bytes) of this instance or 0 on failure. - * - * Since: 1.24 - */ -gsize -gst_analytics_mtd_get_size (GstAnalyticsMtd * handle) -{ - GstAnalyticsRelatableMtdData *rlt; - rlt = gst_analytics_relation_meta_get_mtd_data (handle->meta, handle->id); - if (rlt == NULL) { - GST_CAT_ERROR (GST_CAT_AN_RELATION, "Invalid parameter"); - return 0; - } - - return rlt->size; -} /* * GstAnalyticsRelationMeta: @@ -132,6 +88,89 @@ typedef struct _GstAnalyticsRelationMeta } GstAnalyticsRelationMeta; +static char invalid_type_name[] = "_invalid"; + +static guint +gst_analytics_relation_meta_get_next_id (GstAnalyticsRelationMeta * meta); + + +static GstAnalyticsRelatableMtdData * +gst_analytics_relation_meta_get_mtd_data_internal (GstAnalyticsRelationMeta * + meta, guint an_meta_id) +{ + GstAnalyticsRelatableMtdData *rv; + g_return_val_if_fail (meta, NULL); + if (an_meta_id >= meta->rel_order) { + GST_CAT_ERROR (GST_CAT_AN_RELATION, "Invalid parameter"); + return NULL; + } + rv = (GstAnalyticsRelatableMtdData *) + (meta->mtd_data_lookup[an_meta_id] + meta->analysis_results); + + return rv; +} + +/** + * gst_analytics_mtd_get_type_quark: + * @instance: Instance of #GstAnalyticsMtd + * Get analysis result type. + * + * Returns: quark associated with type. + * + * Since: 1.24 + */ +GstAnalyticsMtdType +gst_analytics_mtd_get_type_quark (GstAnalyticsMtd * handle) +{ + GstAnalyticsRelatableMtdData *rlt; + rlt = gst_analytics_relation_meta_get_mtd_data_internal (handle->meta, + handle->id); + + g_return_val_if_fail (rlt != NULL, + g_quark_from_static_string (invalid_type_name)); + + return rlt->analysis_type; +} + +/** + * gst_analytics_mtd_get_id: + * @instance: Instance of #GstAnalyticsMtd + * Get instance id + * + * Returns: Id of @instance + * + * Since: 1.24 + */ +guint +gst_analytics_mtd_get_id (GstAnalyticsMtd * handle) +{ + return handle->id; +} + +/** + * gst_analytics_mtd_get_size: + * @instance Instance of #GstAnalyticsRelatableMtd + * Get instance size + * + * Returns: Size (in bytes) of this instance or 0 on failure. + * + * Since: 1.24 + */ +gsize +gst_analytics_mtd_get_size (GstAnalyticsMtd * handle) +{ + GstAnalyticsRelatableMtdData *rlt; + rlt = gst_analytics_relation_meta_get_mtd_data_internal (handle->meta, + handle->id); + if (rlt == NULL) { + GST_CAT_ERROR (GST_CAT_AN_RELATION, "Invalid parameter"); + return 0; + } + + return rlt->size; +} + + /** * gst_analytics_relation_get_length: * @instance Instance of #GstAnalyticsRelationMeta @@ -256,21 +295,11 @@ static void gst_analytics_relation_meta_free (GstMeta * meta, GstBuffer * buffer) { GstAnalyticsRelationMeta *rmeta = (GstAnalyticsRelationMeta *) meta; - gpointer state = NULL; - GstAnalyticsMtd mtd; - GstAnalyticsRelatableMtdData *data; + GST_CAT_TRACE (GST_CAT_AN_RELATION, "Content analysis meta-data(%p) freed for buffer(%p)", (gpointer) rmeta, (gpointer) buffer); - /* call custom free function if set */ - while (gst_analytics_relation_meta_iterate (rmeta, &state, 0, &mtd)) { - data = gst_analytics_relation_meta_get_mtd_data (mtd.meta, mtd.id); - if (data->free != NULL) { - data->free (data); - } - } - g_free (rmeta->analysis_results); g_free (rmeta->adj_mat); g_free (rmeta->mtd_data_lookup); @@ -779,15 +808,16 @@ gst_buffer_get_analytics_relation_meta (GstBuffer * buffer) * Add a relatable metadata to @meta. This method is meant to be used by * new struct sub-classing GstAnalyticsRelatableMtd. * - * Returns: New GstAnalyticsRelatableMtdData instance. + * Returns: A pointer to a memory area of size @size where to put the data * * Since 1.24 */ -GstAnalyticsRelatableMtdData * +gpointer gst_analytics_relation_meta_add_mtd (GstAnalyticsRelationMeta * meta, GstAnalyticsMtdType type, gsize size, GstAnalyticsMtd * rlt_mtd) { - gsize new_size = size + meta->offset; + gsize object_size; + gsize new_size; GstAnalyticsRelatableMtdData *dest = NULL; gpointer mem; guint8 **new_adj_mat; @@ -795,6 +825,12 @@ gst_analytics_relation_meta_add_mtd (GstAnalyticsRelationMeta * meta, GST_CAT_TRACE (GST_CAT_AN_RELATION, "Adding relatable metadata to rmeta %p", meta); + object_size = sizeof (GstAnalyticsRelatableMtdData); + object_size += sizeof (gpointer) * (size / sizeof (gpointer)); + if (size % sizeof (gpointer)) + object_size += sizeof (gpointer); + new_size = meta->offset + object_size; + if (new_size > meta->max_size) { if (new_size > meta->max_size_increment + meta->offset) { @@ -827,9 +863,8 @@ gst_analytics_relation_meta_add_mtd (GstAnalyticsRelationMeta * meta, dest->analysis_type = type; dest->id = gst_analytics_relation_meta_get_next_id (meta); dest->size = size; - dest->free = NULL; meta->mtd_data_lookup[dest->id] = meta->offset; - meta->offset += dest->size; + meta->offset += object_size; meta->length++; rlt_mtd->id = dest->id; rlt_mtd->meta = meta; @@ -841,7 +876,7 @@ gst_analytics_relation_meta_add_mtd (GstAnalyticsRelationMeta * meta, "Failed to add relatable, out-of-space (%" G_GSIZE_FORMAT " / %" G_GSIZE_FORMAT ").", new_size, meta->max_size); } - return dest; + return &dest->data[0]; } /** @@ -876,7 +911,7 @@ gst_analytics_relation_meta_get_mtd (GstAnalyticsRelationMeta * meta, return FALSE; } - d = gst_analytics_relation_meta_get_mtd_data (meta, an_meta_id); + d = gst_analytics_relation_meta_get_mtd_data_internal (meta, an_meta_id); if (d == NULL) return FALSE; @@ -899,23 +934,17 @@ gst_analytics_relation_meta_get_mtd (GstAnalyticsRelationMeta * meta, * @meta: Instance of GstAnalyticsRelationMeta * @an_meta_id: Id of GstAnalyticsMtd instance to retrieve * - * Returns:(nullable): Instance of GstAnalyticsRelatableMtdData + * Returns:(nullable): Analytics data pointer * * Since 1.24 */ -GstAnalyticsRelatableMtdData * +gpointer gst_analytics_relation_meta_get_mtd_data (GstAnalyticsRelationMeta * meta, guint an_meta_id) { - GstAnalyticsRelatableMtdData *rv; - g_return_val_if_fail (meta, NULL); - if (an_meta_id >= meta->rel_order) { - GST_CAT_ERROR (GST_CAT_AN_RELATION, "Invalid parameter"); - return NULL; - } - rv = (GstAnalyticsRelatableMtdData *) - (meta->mtd_data_lookup[an_meta_id] + meta->analysis_results); - return rv; + GstAnalyticsRelatableMtdData *rv = + gst_analytics_relation_meta_get_mtd_data_internal (meta, an_meta_id); + return &rv->data[0]; } diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h index 2eb2ef5f7b..aff472f4e9 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h @@ -56,7 +56,6 @@ typedef guint32 GstAnalyticsMtdType; #define GST_ANALYTICS_MTD_CAST(mtd) \ ((GstAnalyticsMtd *)(mtd)) -typedef struct _GstAnalyticsRelatableMtdData GstAnalyticsRelatableMtdData; typedef struct _GstAnalyticsRelationMeta GstAnalyticsRelationMeta; /** @@ -76,29 +75,6 @@ struct _GstAnalyticsMtd GstAnalyticsRelationMeta *meta; }; -/** - * GstAnalyticsRelatableMtdData: - * @analysis_type: Identify the type of analysis-metadata - * @id: Instance identifier. - * @size: Size in bytes of the instance - * - * Base structure for analysis-metadata that can be placed in relation. Only - * other analysis-metadata based on GstAnalyticsRelatableMtdData should - * directly use this structure. - * - * Since: 1.24 - */ -struct _GstAnalyticsRelatableMtdData -{ - GstAnalyticsMtdType analysis_type; - guint id; - gsize size; - - void (*free) (GstAnalyticsRelatableMtdData * mtd_data); - - gpointer _gst_reserved[GST_PADDING]; -}; - GST_ANALYTICS_META_API GstAnalyticsMtdType gst_analytics_mtd_get_type_quark (GstAnalyticsMtd * instance); @@ -196,7 +172,7 @@ GstAnalyticsRelationMeta * gst_buffer_get_analytics_relation_meta (GstBuffer * buffer); GST_ANALYTICS_META_API -GstAnalyticsRelatableMtdData * +gpointer gst_analytics_relation_meta_add_mtd (GstAnalyticsRelationMeta * meta, GstAnalyticsMtdType type, gsize size, GstAnalyticsMtd * rlt_mtd); @@ -206,7 +182,7 @@ gst_analytics_relation_meta_get_mtd (GstAnalyticsRelationMeta * meta, guint an_meta_id, GstAnalyticsMtdType type, GstAnalyticsMtd * rlt); GST_ANALYTICS_META_API -GstAnalyticsRelatableMtdData * +gpointer gst_analytics_relation_meta_get_mtd_data (GstAnalyticsRelationMeta * meta, guint an_meta_id); diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c index a01a87eaa5..dc9ab7e5a2 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c @@ -32,7 +32,6 @@ typedef struct _GstAnalyticsODMtdData GstAnalyticsODMtdData; /** * GstAnalyticsODMtdData: - * @parent: parent #GstAnalyticsMtd * @object_type: Type of object * @x: x component of upper-left corner * @y: y component of upper-left corner @@ -46,7 +45,6 @@ typedef struct _GstAnalyticsODMtdData GstAnalyticsODMtdData; */ struct _GstAnalyticsODMtdData { - GstAnalyticsRelatableMtdData parent; GQuark object_type; gint x; gint y; @@ -84,19 +82,6 @@ gst_analytics_od_mtd_get_type_name (void) return GST_RELATABLE_MTD_OD_TYPE_NAME; } -static GstAnalyticsODMtdData * -gst_analytics_od_mtd_get_data (GstAnalyticsODMtd * instance) -{ - GstAnalyticsRelatableMtdData *rlt_data = - gst_analytics_relation_meta_get_mtd_data (instance->meta, - instance->id); - g_return_val_if_fail (rlt_data, NULL); - g_return_val_if_fail (rlt_data->analysis_type == - gst_analytics_od_mtd_get_type_quark (), NULL); - - return (GstAnalyticsODMtdData *) rlt_data; -} - /** * gst_analytics_od_mtd_get_location: * @instance: instance @@ -117,21 +102,20 @@ gboolean gst_analytics_od_mtd_get_location (GstAnalyticsODMtd * instance, gint * x, gint * y, gint * w, gint * h, gfloat * loc_conf_lvl) { - g_return_val_if_fail (instance && x && y && w && h, FALSE); GstAnalyticsODMtdData *data; - data = gst_analytics_od_mtd_get_data (instance); + + g_return_val_if_fail (instance && x && y && w && h, FALSE); + data = gst_analytics_relation_meta_get_mtd_data (instance->meta, + instance->id); g_return_val_if_fail (data != NULL, FALSE); - if (data) { - *x = data->x; - *y = data->y; - *w = data->w; - *h = data->h; + *x = data->x; + *y = data->y; + *w = data->w; + *h = data->h; - if (loc_conf_lvl) { - *loc_conf_lvl = data->location_confidence_lvl; - } - } + if (loc_conf_lvl) + *loc_conf_lvl = data->location_confidence_lvl; return TRUE; } @@ -149,7 +133,8 @@ gst_analytics_od_mtd_get_type (GstAnalyticsODMtd * handle) { GstAnalyticsODMtdData *data; g_return_val_if_fail (handle != NULL, 0); - data = gst_analytics_od_mtd_get_data (handle); + data = gst_analytics_relation_meta_get_mtd_data (handle->meta, + handle->id); g_return_val_if_fail (data != NULL, 0); return data->object_type; } diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.c b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.c index 1c066d6f24..97e614fa29 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.c @@ -30,7 +30,6 @@ typedef struct _GstAnalyticsTrackingMtdData GstAnalyticsTrackingMtdData; /** * GstAnalyticsTrackingMtd: - * @parent: parent #GstAnalyticsMtd * @tracking_id: Tracking identifier * @tracking_first_seen: Tracking creation time * @tracking_last_seen: Tracking last observation @@ -42,7 +41,6 @@ typedef struct _GstAnalyticsTrackingMtdData GstAnalyticsTrackingMtdData; */ struct _GstAnalyticsTrackingMtdData { - GstAnalyticsRelatableMtdData parent; guint64 tracking_id; GstClockTime tracking_first_seen; GstClockTime tracking_last_seen; @@ -52,20 +50,6 @@ struct _GstAnalyticsTrackingMtdData static char type[] = GST_RELATABLE_MTD_TRACKING_TYPE_NAME; -static GstAnalyticsTrackingMtdData * -gst_analytics_tracking_mtd_get_data (GstAnalyticsTrackingMtd * instance) -{ - GstAnalyticsRelatableMtdData *rlt_data = - gst_analytics_relation_meta_get_mtd_data (instance->meta, - instance->id); - g_return_val_if_fail (rlt_data, NULL); - - g_return_val_if_fail (rlt_data->analysis_type == - gst_analytics_tracking_mtd_get_type_quark (), NULL); - - return (GstAnalyticsTrackingMtdData *) rlt_data; -} - /** * gst_analytics_tracking_mtd_get_type_quark: * Returns: Quark representing the type of GstAnalyticsRelatableMtd @@ -107,7 +91,8 @@ gst_analytics_tracking_mtd_update_last_seen (GstAnalyticsTrackingMtd * instance, { GstAnalyticsTrackingMtdData *trk_mtd_data; g_return_val_if_fail (instance, FALSE); - trk_mtd_data = gst_analytics_tracking_mtd_get_data (instance); + trk_mtd_data = gst_analytics_relation_meta_get_mtd_data (instance->meta, + instance->id); g_return_val_if_fail (trk_mtd_data != NULL, FALSE); trk_mtd_data->tracking_last_seen = last_seen; @@ -128,7 +113,8 @@ gst_analytics_tracking_mtd_set_lost (GstAnalyticsTrackingMtd * instance) { GstAnalyticsTrackingMtdData *trk_mtd_data; g_return_val_if_fail (instance, FALSE); - trk_mtd_data = gst_analytics_tracking_mtd_get_data (instance); + trk_mtd_data = gst_analytics_relation_meta_get_mtd_data (instance->meta, + instance->id); g_return_val_if_fail (trk_mtd_data != NULL, FALSE); trk_mtd_data->tracking_lost = TRUE; return TRUE; @@ -154,7 +140,8 @@ gst_analytics_tracking_mtd_get_info (GstAnalyticsTrackingMtd * instance, { GstAnalyticsTrackingMtdData *trk_mtd_data; g_return_val_if_fail (instance, FALSE); - trk_mtd_data = gst_analytics_tracking_mtd_get_data (instance); + trk_mtd_data = gst_analytics_relation_meta_get_mtd_data (instance->meta, + instance->id); g_return_val_if_fail (trk_mtd_data != NULL, FALSE);