gstreamer_analytics_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gstreamer_sys as gst;
17
18mod manual;
19
20pub use manual::*;
21
22#[cfg(unix)]
23#[allow(unused_imports)]
24use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
25#[allow(unused_imports)]
26use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
27#[allow(unused_imports)]
28use std::ffi::{
29    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
30};
31
32#[allow(unused_imports)]
33use glib::{gboolean, gconstpointer, gpointer, GType};
34
35// Aliases
36pub type GstAnalyticsMtdType = uintptr_t;
37
38// Enums
39pub type GstSegmentationType = c_int;
40pub const GST_SEGMENTATION_TYPE_SEMANTIC: GstSegmentationType = 0;
41pub const GST_SEGMENTATION_TYPE_INSTANCE: GstSegmentationType = 1;
42
43pub type GstTensorDataType = c_int;
44pub const GST_TENSOR_DATA_TYPE_INT4: GstTensorDataType = 0;
45pub const GST_TENSOR_DATA_TYPE_INT8: GstTensorDataType = 1;
46pub const GST_TENSOR_DATA_TYPE_INT16: GstTensorDataType = 2;
47pub const GST_TENSOR_DATA_TYPE_INT32: GstTensorDataType = 3;
48pub const GST_TENSOR_DATA_TYPE_INT64: GstTensorDataType = 4;
49pub const GST_TENSOR_DATA_TYPE_UINT4: GstTensorDataType = 5;
50pub const GST_TENSOR_DATA_TYPE_UINT8: GstTensorDataType = 6;
51pub const GST_TENSOR_DATA_TYPE_UINT16: GstTensorDataType = 7;
52pub const GST_TENSOR_DATA_TYPE_UINT32: GstTensorDataType = 8;
53pub const GST_TENSOR_DATA_TYPE_UINT64: GstTensorDataType = 9;
54pub const GST_TENSOR_DATA_TYPE_FLOAT16: GstTensorDataType = 10;
55pub const GST_TENSOR_DATA_TYPE_FLOAT32: GstTensorDataType = 11;
56pub const GST_TENSOR_DATA_TYPE_FLOAT64: GstTensorDataType = 12;
57pub const GST_TENSOR_DATA_TYPE_BFLOAT16: GstTensorDataType = 13;
58#[cfg(feature = "v1_28")]
59#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
60pub const GST_TENSOR_DATA_TYPE_STRING: GstTensorDataType = 14;
61#[cfg(feature = "v1_28")]
62#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
63pub const GST_TENSOR_DATA_TYPE_BOOL: GstTensorDataType = 15;
64#[cfg(feature = "v1_28")]
65#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
66pub const GST_TENSOR_DATA_TYPE_COMPLEX64: GstTensorDataType = 16;
67#[cfg(feature = "v1_28")]
68#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
69pub const GST_TENSOR_DATA_TYPE_COMPLEX128: GstTensorDataType = 17;
70#[cfg(feature = "v1_28")]
71#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
72pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FN: GstTensorDataType = 18;
73#[cfg(feature = "v1_28")]
74#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
75pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FNUZ: GstTensorDataType = 19;
76#[cfg(feature = "v1_28")]
77#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
78pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2: GstTensorDataType = 20;
79#[cfg(feature = "v1_28")]
80#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
81pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2FNUZ: GstTensorDataType = 21;
82
83pub type GstTensorDimOrder = c_int;
84pub const GST_TENSOR_DIM_ORDER_ROW_MAJOR: GstTensorDimOrder = 0;
85pub const GST_TENSOR_DIM_ORDER_COL_MAJOR: GstTensorDimOrder = 1;
86
87pub type GstTensorLayout = c_int;
88pub const GST_TENSOR_LAYOUT_CONTIGUOUS: GstTensorLayout = 0;
89
90// Constants
91pub const GST_CAPS_FEATURE_META_GST_ANALYTICS_BATCH_META: &[u8] = b"meta:GstAnalyticsBatchMeta\0";
92pub const GST_INF_RELATION_SPAN: c_int = -1;
93pub const GST_ANALYTICS_MTD_TYPE_ANY: c_int = 0;
94
95// Flags
96pub type GstAnalyticsRelTypes = c_uint;
97pub const GST_ANALYTICS_REL_TYPE_NONE: GstAnalyticsRelTypes = 0;
98pub const GST_ANALYTICS_REL_TYPE_IS_PART_OF: GstAnalyticsRelTypes = 2;
99pub const GST_ANALYTICS_REL_TYPE_CONTAIN: GstAnalyticsRelTypes = 4;
100pub const GST_ANALYTICS_REL_TYPE_RELATE_TO: GstAnalyticsRelTypes = 8;
101#[cfg(feature = "v1_26")]
102#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
103pub const GST_ANALYTICS_REL_TYPE_N_TO_N: GstAnalyticsRelTypes = 16;
104pub const GST_ANALYTICS_REL_TYPE_ANY: GstAnalyticsRelTypes = 2147483647;
105
106// Records
107#[derive(Copy, Clone)]
108#[repr(C)]
109pub struct GstAnalyticsBatchMeta {
110    pub meta: gst::GstMeta,
111    pub streams: *mut GstAnalyticsBatchStream,
112    pub n_streams: size_t,
113}
114
115impl ::std::fmt::Debug for GstAnalyticsBatchMeta {
116    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
117        f.debug_struct(&format!("GstAnalyticsBatchMeta @ {self:p}"))
118            .field("meta", &self.meta)
119            .field("streams", &self.streams)
120            .field("n_streams", &self.n_streams)
121            .finish()
122    }
123}
124
125#[derive(Copy, Clone)]
126#[repr(C)]
127pub struct GstAnalyticsBatchStream {
128    pub index: c_uint,
129    pub sticky_events: *mut *mut gst::GstEvent,
130    pub n_sticky_events: size_t,
131    pub objects: *mut *mut gst::GstMiniObject,
132    pub n_objects: size_t,
133    pub padding: [gpointer; 4],
134}
135
136impl ::std::fmt::Debug for GstAnalyticsBatchStream {
137    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
138        f.debug_struct(&format!("GstAnalyticsBatchStream @ {self:p}"))
139            .field("index", &self.index)
140            .field("sticky_events", &self.sticky_events)
141            .field("n_sticky_events", &self.n_sticky_events)
142            .field("objects", &self.objects)
143            .field("n_objects", &self.n_objects)
144            .finish()
145    }
146}
147
148#[derive(Copy, Clone)]
149#[repr(C)]
150pub struct GstAnalyticsClsMtd {
151    pub id: c_uint,
152    pub meta: *mut GstAnalyticsRelationMeta,
153}
154
155impl ::std::fmt::Debug for GstAnalyticsClsMtd {
156    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
157        f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
158            .field("id", &self.id)
159            .field("meta", &self.meta)
160            .finish()
161    }
162}
163
164#[derive(Copy, Clone)]
165#[repr(C)]
166pub struct GstAnalyticsMtd {
167    pub id: c_uint,
168    pub meta: *mut GstAnalyticsRelationMeta,
169}
170
171impl ::std::fmt::Debug for GstAnalyticsMtd {
172    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
173        f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
174            .field("id", &self.id)
175            .field("meta", &self.meta)
176            .finish()
177    }
178}
179
180#[derive(Copy, Clone)]
181#[repr(C)]
182pub struct GstAnalyticsMtdImpl {
183    pub name: *const c_char,
184    pub mtd_meta_transform: Option<
185        unsafe extern "C" fn(
186            *mut gst::GstBuffer,
187            *mut GstAnalyticsMtd,
188            *mut gst::GstBuffer,
189            glib::GQuark,
190            gpointer,
191        ) -> gboolean,
192    >,
193    pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
194    pub _reserved: [gpointer; 19],
195}
196
197impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
198    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
199        f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
200            .field("name", &self.name)
201            .field("mtd_meta_transform", &self.mtd_meta_transform)
202            .field("mtd_meta_clear", &self.mtd_meta_clear)
203            .finish()
204    }
205}
206
207#[derive(Copy, Clone)]
208#[repr(C)]
209pub struct GstAnalyticsODMtd {
210    pub id: c_uint,
211    pub meta: *mut GstAnalyticsRelationMeta,
212}
213
214impl ::std::fmt::Debug for GstAnalyticsODMtd {
215    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
216        f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
217            .field("id", &self.id)
218            .field("meta", &self.meta)
219            .finish()
220    }
221}
222
223#[repr(C)]
224#[allow(dead_code)]
225pub struct _GstAnalyticsRelationMeta {
226    _data: [u8; 0],
227    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
228}
229
230pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
231
232#[derive(Copy, Clone)]
233#[repr(C)]
234pub struct GstAnalyticsRelationMetaInitParams {
235    pub initial_relation_order: size_t,
236    pub initial_buf_size: size_t,
237}
238
239impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
240    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
241        f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
242            .field("initial_relation_order", &self.initial_relation_order)
243            .field("initial_buf_size", &self.initial_buf_size)
244            .finish()
245    }
246}
247
248#[derive(Copy, Clone)]
249#[repr(C)]
250pub struct GstAnalyticsSegmentationMtd {
251    pub id: c_uint,
252    pub meta: *mut GstAnalyticsRelationMeta,
253}
254
255impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
256    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
257        f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
258            .field("id", &self.id)
259            .field("meta", &self.meta)
260            .finish()
261    }
262}
263
264#[derive(Copy, Clone)]
265#[repr(C)]
266pub struct GstAnalyticsTensorMtd {
267    pub id: c_uint,
268    pub meta: *mut GstAnalyticsRelationMeta,
269}
270
271impl ::std::fmt::Debug for GstAnalyticsTensorMtd {
272    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
273        f.debug_struct(&format!("GstAnalyticsTensorMtd @ {self:p}"))
274            .field("id", &self.id)
275            .field("meta", &self.meta)
276            .finish()
277    }
278}
279
280#[derive(Copy, Clone)]
281#[repr(C)]
282pub struct GstAnalyticsTrackingMtd {
283    pub id: c_uint,
284    pub meta: *mut GstAnalyticsRelationMeta,
285}
286
287impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
289        f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
290            .field("id", &self.id)
291            .field("meta", &self.meta)
292            .finish()
293    }
294}
295
296#[derive(Copy, Clone)]
297#[repr(C)]
298pub struct GstTensorMeta {
299    pub meta: gst::GstMeta,
300    pub num_tensors: size_t,
301    pub tensors: *mut *mut GstTensor,
302}
303
304impl ::std::fmt::Debug for GstTensorMeta {
305    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
306        f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
307            .field("meta", &self.meta)
308            .field("num_tensors", &self.num_tensors)
309            .field("tensors", &self.tensors)
310            .finish()
311    }
312}
313
314extern "C" {
315
316    //=========================================================================
317    // GstAnalyticsBatchMeta
318    //=========================================================================
319    #[cfg(feature = "v1_28")]
320    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
321    pub fn gst_analytics_batch_meta_get_info() -> *const gst::GstMetaInfo;
322
323    //=========================================================================
324    // GstAnalyticsBatchStream
325    //=========================================================================
326    #[cfg(feature = "v1_28")]
327    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
328    pub fn gst_analytics_batch_stream_get_caps(
329        stream: *mut GstAnalyticsBatchStream,
330    ) -> *mut gst::GstCaps;
331    #[cfg(feature = "v1_28")]
332    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
333    pub fn gst_analytics_batch_stream_get_segment(
334        stream: *mut GstAnalyticsBatchStream,
335    ) -> *const gst::GstSegment;
336    #[cfg(feature = "v1_28")]
337    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
338    pub fn gst_analytics_batch_stream_get_stream_id(
339        stream: *mut GstAnalyticsBatchStream,
340    ) -> *const c_char;
341
342    //=========================================================================
343    // GstAnalyticsClsMtd
344    //=========================================================================
345    pub fn gst_analytics_cls_mtd_get_index_by_quark(
346        handle: *const GstAnalyticsClsMtd,
347        quark: glib::GQuark,
348    ) -> c_int;
349    pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
350    pub fn gst_analytics_cls_mtd_get_level(
351        handle: *const GstAnalyticsClsMtd,
352        index: size_t,
353    ) -> c_float;
354    pub fn gst_analytics_cls_mtd_get_quark(
355        handle: *const GstAnalyticsClsMtd,
356        index: size_t,
357    ) -> glib::GQuark;
358    pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
359
360    //=========================================================================
361    // GstAnalyticsMtd
362    //=========================================================================
363    pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
364    pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
365    pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
366    pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
367
368    //=========================================================================
369    // GstAnalyticsODMtd
370    //=========================================================================
371    pub fn gst_analytics_od_mtd_get_confidence_lvl(
372        instance: *const GstAnalyticsODMtd,
373        loc_conf_lvl: *mut c_float,
374    ) -> gboolean;
375    pub fn gst_analytics_od_mtd_get_location(
376        instance: *const GstAnalyticsODMtd,
377        x: *mut c_int,
378        y: *mut c_int,
379        w: *mut c_int,
380        h: *mut c_int,
381        loc_conf_lvl: *mut c_float,
382    ) -> gboolean;
383    pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
384    #[cfg(feature = "v1_26")]
385    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
386    pub fn gst_analytics_od_mtd_get_oriented_location(
387        instance: *const GstAnalyticsODMtd,
388        x: *mut c_int,
389        y: *mut c_int,
390        w: *mut c_int,
391        h: *mut c_int,
392        r: *mut c_float,
393        loc_conf_lvl: *mut c_float,
394    ) -> gboolean;
395    pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
396
397    //=========================================================================
398    // GstAnalyticsRelationMeta
399    //=========================================================================
400    pub fn gst_analytics_relation_meta_add_cls_mtd(
401        instance: *mut GstAnalyticsRelationMeta,
402        length: size_t,
403        confidence_levels: *mut c_float,
404        class_quarks: *mut glib::GQuark,
405        cls_mtd: *mut GstAnalyticsClsMtd,
406    ) -> gboolean;
407    pub fn gst_analytics_relation_meta_add_mtd(
408        meta: *mut GstAnalyticsRelationMeta,
409        impl_: *const GstAnalyticsMtdImpl,
410        size: size_t,
411        rlt_mtd: *mut GstAnalyticsMtd,
412    ) -> gpointer;
413    pub fn gst_analytics_relation_meta_add_od_mtd(
414        instance: *mut GstAnalyticsRelationMeta,
415        type_: glib::GQuark,
416        x: c_int,
417        y: c_int,
418        w: c_int,
419        h: c_int,
420        loc_conf_lvl: c_float,
421        od_mtd: *mut GstAnalyticsODMtd,
422    ) -> gboolean;
423    pub fn gst_analytics_relation_meta_add_one_cls_mtd(
424        instance: *mut GstAnalyticsRelationMeta,
425        confidence_level: c_float,
426        class_quark: glib::GQuark,
427        cls_mtd: *mut GstAnalyticsClsMtd,
428    ) -> gboolean;
429    #[cfg(feature = "v1_26")]
430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
431    pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
432        instance: *mut GstAnalyticsRelationMeta,
433        type_: glib::GQuark,
434        x: c_int,
435        y: c_int,
436        w: c_int,
437        h: c_int,
438        r: c_float,
439        loc_conf_lvl: c_float,
440        od_mtd: *mut GstAnalyticsODMtd,
441    ) -> gboolean;
442    #[cfg(feature = "v1_26")]
443    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
444    pub fn gst_analytics_relation_meta_add_segmentation_mtd(
445        instance: *mut GstAnalyticsRelationMeta,
446        buffer: *mut gst::GstBuffer,
447        segmentation_type: GstSegmentationType,
448        region_count: size_t,
449        region_ids: *mut c_uint,
450        masks_loc_x: c_int,
451        masks_loc_y: c_int,
452        masks_loc_w: c_uint,
453        masks_loc_h: c_uint,
454        segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
455    ) -> gboolean;
456    #[cfg(feature = "v1_28")]
457    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
458    pub fn gst_analytics_relation_meta_add_tensor_mtd(
459        instance: *mut GstAnalyticsRelationMeta,
460        num_dims: size_t,
461        tensor_mtd: *mut GstAnalyticsTensorMtd,
462    ) -> gboolean;
463    #[cfg(feature = "v1_28")]
464    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
465    pub fn gst_analytics_relation_meta_add_tensor_mtd_simple(
466        instance: *mut GstAnalyticsRelationMeta,
467        id: glib::GQuark,
468        data_type: GstTensorDataType,
469        data: *mut gst::GstBuffer,
470        dims_order: GstTensorDimOrder,
471        num_dims: size_t,
472        dims: *mut size_t,
473        tensor_mtd: *mut GstAnalyticsTensorMtd,
474    ) -> gboolean;
475    pub fn gst_analytics_relation_meta_add_tracking_mtd(
476        instance: *mut GstAnalyticsRelationMeta,
477        tracking_id: u64,
478        tracking_first_seen: gst::GstClockTime,
479        trk_mtd: *mut GstAnalyticsTrackingMtd,
480    ) -> gboolean;
481    pub fn gst_analytics_relation_meta_exist(
482        rmeta: *const GstAnalyticsRelationMeta,
483        an_meta_first_id: c_uint,
484        an_meta_second_id: c_uint,
485        max_relation_span: c_int,
486        cond_types: GstAnalyticsRelTypes,
487        relations_path: *mut *mut glib::GArray,
488    ) -> gboolean;
489    pub fn gst_analytics_relation_meta_get_cls_mtd(
490        meta: *mut GstAnalyticsRelationMeta,
491        an_meta_id: c_uint,
492        rlt: *mut GstAnalyticsClsMtd,
493    ) -> gboolean;
494    pub fn gst_analytics_relation_meta_get_direct_related(
495        meta: *mut GstAnalyticsRelationMeta,
496        an_meta_id: c_uint,
497        relation_type: GstAnalyticsRelTypes,
498        type_: GstAnalyticsMtdType,
499        state: *mut gpointer,
500        rlt_mtd: *mut GstAnalyticsMtd,
501    ) -> gboolean;
502    pub fn gst_analytics_relation_meta_get_mtd(
503        meta: *mut GstAnalyticsRelationMeta,
504        an_meta_id: c_uint,
505        type_: GstAnalyticsMtdType,
506        rlt: *mut GstAnalyticsMtd,
507    ) -> gboolean;
508    pub fn gst_analytics_relation_meta_get_mtd_data(
509        meta: *const GstAnalyticsRelationMeta,
510        an_meta_id: c_uint,
511    ) -> gpointer;
512    pub fn gst_analytics_relation_meta_get_od_mtd(
513        meta: *mut GstAnalyticsRelationMeta,
514        an_meta_id: c_uint,
515        rlt: *mut GstAnalyticsODMtd,
516    ) -> gboolean;
517    pub fn gst_analytics_relation_meta_get_relation(
518        meta: *const GstAnalyticsRelationMeta,
519        an_meta_first_id: c_uint,
520        an_meta_second_id: c_uint,
521    ) -> GstAnalyticsRelTypes;
522    #[cfg(feature = "v1_26")]
523    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
524    pub fn gst_analytics_relation_meta_get_segmentation_mtd(
525        meta: *mut GstAnalyticsRelationMeta,
526        an_meta_id: c_uint,
527        rlt: *mut GstAnalyticsSegmentationMtd,
528    ) -> gboolean;
529    #[cfg(feature = "v1_28")]
530    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
531    pub fn gst_analytics_relation_meta_get_tensor_mtd(
532        meta: *mut GstAnalyticsRelationMeta,
533        an_meta_id: c_uint,
534        rlt: *mut GstAnalyticsTensorMtd,
535    ) -> gboolean;
536    pub fn gst_analytics_relation_meta_get_tracking_mtd(
537        meta: *mut GstAnalyticsRelationMeta,
538        an_meta_id: c_uint,
539        rlt: *mut GstAnalyticsTrackingMtd,
540    ) -> gboolean;
541    pub fn gst_analytics_relation_meta_iterate(
542        meta: *mut GstAnalyticsRelationMeta,
543        state: *mut gpointer,
544        type_: GstAnalyticsMtdType,
545        rlt_mtd: *mut GstAnalyticsMtd,
546    ) -> gboolean;
547    pub fn gst_analytics_relation_meta_set_relation(
548        meta: *mut GstAnalyticsRelationMeta,
549        type_: GstAnalyticsRelTypes,
550        an_meta_first_id: c_uint,
551        an_meta_second_id: c_uint,
552    ) -> gboolean;
553    pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
554
555    //=========================================================================
556    // GstAnalyticsSegmentationMtd
557    //=========================================================================
558    #[cfg(feature = "v1_26")]
559    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
560    pub fn gst_analytics_segmentation_mtd_get_mask(
561        handle: *const GstAnalyticsSegmentationMtd,
562        masks_loc_x: *mut c_int,
563        masks_loc_y: *mut c_int,
564        masks_loc_w: *mut c_uint,
565        masks_loc_h: *mut c_uint,
566    ) -> *mut gst::GstBuffer;
567    #[cfg(feature = "v1_26")]
568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
569    pub fn gst_analytics_segmentation_mtd_get_region_count(
570        handle: *const GstAnalyticsSegmentationMtd,
571    ) -> size_t;
572    #[cfg(feature = "v1_26")]
573    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
574    pub fn gst_analytics_segmentation_mtd_get_region_id(
575        handle: *const GstAnalyticsSegmentationMtd,
576        index: size_t,
577    ) -> c_uint;
578    #[cfg(feature = "v1_26")]
579    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
580    pub fn gst_analytics_segmentation_mtd_get_region_index(
581        handle: *const GstAnalyticsSegmentationMtd,
582        index: *mut size_t,
583        id: c_uint,
584    ) -> gboolean;
585    #[cfg(feature = "v1_26")]
586    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
587    pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
588
589    //=========================================================================
590    // GstAnalyticsTensorMtd
591    //=========================================================================
592    #[cfg(feature = "v1_28")]
593    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
594    pub fn gst_analytics_tensor_mtd_get_tensor(
595        instance: *const GstAnalyticsTensorMtd,
596    ) -> *mut GstTensor;
597    #[cfg(feature = "v1_28")]
598    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
599    pub fn gst_analytics_tensor_mtd_get_mtd_type() -> GstAnalyticsMtdType;
600
601    //=========================================================================
602    // GstAnalyticsTrackingMtd
603    //=========================================================================
604    pub fn gst_analytics_tracking_mtd_get_info(
605        instance: *const GstAnalyticsTrackingMtd,
606        tracking_id: *mut u64,
607        tracking_first_seen: *mut gst::GstClockTime,
608        tracking_last_seen: *mut gst::GstClockTime,
609        tracking_lost: *mut gboolean,
610    ) -> gboolean;
611    pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
612    pub fn gst_analytics_tracking_mtd_update_last_seen(
613        instance: *mut GstAnalyticsTrackingMtd,
614        last_seen: gst::GstClockTime,
615    ) -> gboolean;
616    pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
617
618    //=========================================================================
619    // GstTensor
620    //=========================================================================
621    #[cfg(feature = "v1_26")]
622    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
623    pub fn gst_tensor_get_type() -> GType;
624    #[cfg(feature = "v1_26")]
625    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
626    pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
627    #[cfg(feature = "v1_26")]
628    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
629    pub fn gst_tensor_new_simple(
630        id: glib::GQuark,
631        data_type: GstTensorDataType,
632        data: *mut gst::GstBuffer,
633        dims_order: GstTensorDimOrder,
634        num_dims: size_t,
635        dims: *mut size_t,
636    ) -> *mut GstTensor;
637    #[cfg(feature = "v1_28")]
638    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
639    pub fn gst_tensor_check_type(
640        tensor: *const GstTensor,
641        data_type: GstTensorDataType,
642        order: GstTensorDimOrder,
643        num_dims: size_t,
644        dims: *const size_t,
645    ) -> gboolean;
646    #[cfg(feature = "v1_26")]
647    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
648    pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
649    #[cfg(feature = "v1_26")]
650    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
651    pub fn gst_tensor_free(tensor: *mut GstTensor);
652    #[cfg(feature = "v1_26")]
653    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
654    pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
655    #[cfg(feature = "v1_28")]
656    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
657    pub fn gst_tensor_set_simple(
658        tensor: *mut GstTensor,
659        id: glib::GQuark,
660        data_type: GstTensorDataType,
661        data: *mut gst::GstBuffer,
662        dims_order: GstTensorDimOrder,
663        num_dims: size_t,
664        dims: *mut size_t,
665    ) -> gboolean;
666    #[cfg(feature = "v1_28")]
667    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
668    pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
669
670    //=========================================================================
671    // GstTensorMeta
672    //=========================================================================
673    #[cfg(feature = "v1_26")]
674    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
675    pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
676    #[cfg(feature = "v1_28")]
677    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
678    pub fn gst_tensor_meta_get_by_id(
679        tmeta: *mut GstTensorMeta,
680        id: glib::GQuark,
681    ) -> *const GstTensor;
682    #[cfg(feature = "v1_26")]
683    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
684    pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
685    #[cfg(feature = "v1_28")]
686    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
687    pub fn gst_tensor_meta_get_typed_tensor(
688        tmeta: *mut GstTensorMeta,
689        tensor_id: glib::GQuark,
690        data_type: GstTensorDataType,
691        order: GstTensorDimOrder,
692        num_dims: size_t,
693        dims: *const size_t,
694    ) -> *const GstTensor;
695    #[cfg(feature = "v1_26")]
696    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
697    pub fn gst_tensor_meta_set(
698        tmeta: *mut GstTensorMeta,
699        num_tensors: c_uint,
700        tensors: *mut *mut GstTensor,
701    );
702    #[cfg(feature = "v1_26")]
703    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
704    pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
705
706    //=========================================================================
707    // Other functions
708    //=========================================================================
709    #[cfg(feature = "v1_28")]
710    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
711    pub fn gst_analytics_batch_meta_api_get_type() -> GType;
712    #[cfg(feature = "v1_28")]
713    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
714    pub fn gst_buffer_add_analytics_batch_meta(
715        buffer: *mut gst::GstBuffer,
716    ) -> *mut GstAnalyticsBatchMeta;
717    pub fn gst_buffer_add_analytics_relation_meta(
718        buffer: *mut gst::GstBuffer,
719    ) -> *mut GstAnalyticsRelationMeta;
720    pub fn gst_buffer_add_analytics_relation_meta_full(
721        buffer: *mut gst::GstBuffer,
722        init_params: *mut GstAnalyticsRelationMetaInitParams,
723    ) -> *mut GstAnalyticsRelationMeta;
724    #[cfg(feature = "v1_26")]
725    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
726    pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
727    #[cfg(feature = "v1_28")]
728    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
729    pub fn gst_buffer_get_analytics_batch_meta(
730        buffer: *mut gst::GstBuffer,
731    ) -> *mut GstAnalyticsBatchMeta;
732    pub fn gst_buffer_get_analytics_relation_meta(
733        buffer: *mut gst::GstBuffer,
734    ) -> *mut GstAnalyticsRelationMeta;
735    #[cfg(feature = "v1_26")]
736    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
737    pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
738    #[cfg(feature = "v1_28")]
739    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
740    pub fn gst_analytics_image_util_iou_float(
741        bb1_x: c_float,
742        bb1_y: c_float,
743        bb1_w: c_float,
744        bb1_h: c_float,
745        bb2_x: c_float,
746        bb2_y: c_float,
747        bb2_w: c_float,
748        bb2_h: c_float,
749    ) -> c_float;
750    #[cfg(feature = "v1_28")]
751    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
752    pub fn gst_analytics_image_util_iou_int(
753        bb1_x: c_int,
754        bb1_y: c_int,
755        bb1_w: c_int,
756        bb1_h: c_int,
757        bb2_x: c_int,
758        bb2_y: c_int,
759        bb2_w: c_int,
760        bb2_h: c_int,
761    ) -> c_float;
762    pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
763    pub fn gst_analytics_relation_meta_api_get_type() -> GType;
764    #[cfg(feature = "v1_26")]
765    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
766    pub fn gst_tensor_meta_api_get_type() -> GType;
767
768}