gstreamer/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.h
Daniel Morin d23a90cb16 analytics: base class for analytics meta
- GstAnalyticRelationMeta is a base class for analytics
  meta. It's able to store analytics results (GstAnalyticRelatableMtd)
  and describe the relation between each analysis results.
- GstAnalysisRelationMeta also contain an algorithm able to explore
  analysis results relation using a bfs.
- Relation(edge) between analysis results (vertice) are stored in an adjacency-matrix
  that allow to quickly identify if two analysis results are related and by
  which relation they related. It also work for indirect relation
  and can provide the path of analysis results by which two
  analysis results are related.
- One allocation per buffer to store analysis results. Here we rely on
  the application to guess how much space will be required to store all
  analysis results. This is something that could be improved
  significantly but it's a starting point.
- Define common analysis results, classification, object-detection,
  tracking that are subclass of GstAnalyticRelatableMtd. The also
  provide exemple of how to extend GstAnalyticRelatableMtd to have them
  benefit for the mechanim to express relation with other analysis
  results.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4962>
2023-11-21 18:04:53 +00:00

78 lines
2.5 KiB
C

/* GStreamer
* Copyright (C) 2023 Collabora Ltd
*
* gstobjecttrackingmtd.h
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef __GST_ANALYTICS_OBJECT_TRACKING_MTD__
#define __GST_ANALYTICS_OBJECT_TRACKING_MTD__
#include <gst/gst.h>
#include <gst/analytics/analytics-meta-prelude.h>
#include <gst/analytics/gstanalyticsmeta.h>
G_BEGIN_DECLS
/**
* GstAnalyticsTrackMtd:
* @id: Instance identifier.
* @meta: Instance of #GstAnalyticsRelationMeta where the analysis-metadata
* identified by @id is stored.
*
* Handle containing data required to use gst_analytics_track_mtd APIs.
* This type is generally expected to be allocated on the stack.
*
* Since: 1.24
*/
typedef struct _GstAnalyticsMtd GstAnalyticsTrackingMtd;
GST_ANALYTICS_META_API
GQuark gst_analytics_tracking_mtd_get_type_quark (void);
GST_ANALYTICS_META_API
const gchar *gst_analytics_tracking_mtd_get_type_name (void);
GST_ANALYTICS_META_API
gboolean gst_analytics_tracking_mtd_update_last_seen (GstAnalyticsTrackingMtd * instance,
GstClockTime last_seen);
GST_ANALYTICS_META_API
gboolean gst_analytics_tracking_mtd_set_lost (GstAnalyticsTrackingMtd * instance);
GST_ANALYTICS_META_API
gboolean gst_analytics_tracking_mtd_get_info (GstAnalyticsTrackingMtd * instance,
guint64 * tracking_id, GstClockTime * tracking_first_seen, GstClockTime *
tracking_last_seen, gboolean * tracking_lost);
GST_ANALYTICS_META_API
gboolean gst_analytics_relation_meta_add_tracking_mtd (
GstAnalyticsRelationMeta * instance, guint64 tracking_id,
GstClockTime tracking_first_seen, GstAnalyticsTrackingMtd * trk_mtd);
GST_ANALYTICS_META_API
gboolean
gst_analytics_relation_meta_get_tracking_mtd (GstAnalyticsRelationMeta * xbmeta,
gint an_meta_id, GstAnalyticsTrackingMtd * rlt);
G_END_DECLS
#endif // __GST_ANALYTICS_OBJECT_TRACKING_MTD__