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 GstAnalyticsBatchBuffer {
110    pub sticky_events: *mut *mut gst::GstEvent,
111    pub n_sticky_events: size_t,
112    pub serialized_events: *mut *mut gst::GstEvent,
113    pub n_serialized_events: size_t,
114    pub buffer: *mut gst::GstBuffer,
115    pub buffer_list: *mut gst::GstBufferList,
116    pub padding: [gpointer; 4],
117}
118
119impl ::std::fmt::Debug for GstAnalyticsBatchBuffer {
120    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
121        f.debug_struct(&format!("GstAnalyticsBatchBuffer @ {self:p}"))
122            .field("sticky_events", &self.sticky_events)
123            .field("n_sticky_events", &self.n_sticky_events)
124            .field("serialized_events", &self.serialized_events)
125            .field("n_serialized_events", &self.n_serialized_events)
126            .field("buffer", &self.buffer)
127            .field("buffer_list", &self.buffer_list)
128            .finish()
129    }
130}
131
132#[derive(Copy, Clone)]
133#[repr(C)]
134pub struct GstAnalyticsBatchMeta {
135    pub meta: gst::GstMeta,
136    pub streams: *mut GstAnalyticsBatchStream,
137    pub n_streams: size_t,
138}
139
140impl ::std::fmt::Debug for GstAnalyticsBatchMeta {
141    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
142        f.debug_struct(&format!("GstAnalyticsBatchMeta @ {self:p}"))
143            .field("meta", &self.meta)
144            .field("streams", &self.streams)
145            .field("n_streams", &self.n_streams)
146            .finish()
147    }
148}
149
150#[derive(Copy, Clone)]
151#[repr(C)]
152pub struct GstAnalyticsBatchStream {
153    pub index: c_uint,
154    pub buffers: *mut GstAnalyticsBatchBuffer,
155    pub n_buffers: size_t,
156    pub padding: [gpointer; 4],
157}
158
159impl ::std::fmt::Debug for GstAnalyticsBatchStream {
160    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
161        f.debug_struct(&format!("GstAnalyticsBatchStream @ {self:p}"))
162            .field("index", &self.index)
163            .field("buffers", &self.buffers)
164            .field("n_buffers", &self.n_buffers)
165            .finish()
166    }
167}
168
169#[derive(Copy, Clone)]
170#[repr(C)]
171pub struct GstAnalyticsClsMtd {
172    pub id: c_uint,
173    pub meta: *mut GstAnalyticsRelationMeta,
174}
175
176impl ::std::fmt::Debug for GstAnalyticsClsMtd {
177    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
178        f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
179            .field("id", &self.id)
180            .field("meta", &self.meta)
181            .finish()
182    }
183}
184
185#[derive(Copy, Clone)]
186#[repr(C)]
187pub struct GstAnalyticsMtd {
188    pub id: c_uint,
189    pub meta: *mut GstAnalyticsRelationMeta,
190}
191
192impl ::std::fmt::Debug for GstAnalyticsMtd {
193    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
194        f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
195            .field("id", &self.id)
196            .field("meta", &self.meta)
197            .finish()
198    }
199}
200
201#[derive(Copy, Clone)]
202#[repr(C)]
203pub struct GstAnalyticsMtdImpl {
204    pub name: *const c_char,
205    pub mtd_meta_transform: Option<
206        unsafe extern "C" fn(
207            *mut gst::GstBuffer,
208            *mut GstAnalyticsMtd,
209            *mut gst::GstBuffer,
210            glib::GQuark,
211            gpointer,
212        ) -> gboolean,
213    >,
214    pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
215    pub _reserved: [gpointer; 19],
216}
217
218impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
219    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
220        f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
221            .field("name", &self.name)
222            .field("mtd_meta_transform", &self.mtd_meta_transform)
223            .field("mtd_meta_clear", &self.mtd_meta_clear)
224            .finish()
225    }
226}
227
228#[derive(Copy, Clone)]
229#[repr(C)]
230pub struct GstAnalyticsODMtd {
231    pub id: c_uint,
232    pub meta: *mut GstAnalyticsRelationMeta,
233}
234
235impl ::std::fmt::Debug for GstAnalyticsODMtd {
236    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
237        f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
238            .field("id", &self.id)
239            .field("meta", &self.meta)
240            .finish()
241    }
242}
243
244#[repr(C)]
245#[allow(dead_code)]
246pub struct _GstAnalyticsRelationMeta {
247    _data: [u8; 0],
248    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
249}
250
251pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
252
253#[derive(Copy, Clone)]
254#[repr(C)]
255pub struct GstAnalyticsRelationMetaInitParams {
256    pub initial_relation_order: size_t,
257    pub initial_buf_size: size_t,
258}
259
260impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
261    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
262        f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
263            .field("initial_relation_order", &self.initial_relation_order)
264            .field("initial_buf_size", &self.initial_buf_size)
265            .finish()
266    }
267}
268
269#[derive(Copy, Clone)]
270#[repr(C)]
271pub struct GstAnalyticsSegmentationMtd {
272    pub id: c_uint,
273    pub meta: *mut GstAnalyticsRelationMeta,
274}
275
276impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
277    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
278        f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
279            .field("id", &self.id)
280            .field("meta", &self.meta)
281            .finish()
282    }
283}
284
285#[derive(Copy, Clone)]
286#[repr(C)]
287pub struct GstAnalyticsTrackingMtd {
288    pub id: c_uint,
289    pub meta: *mut GstAnalyticsRelationMeta,
290}
291
292impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
293    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
294        f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
295            .field("id", &self.id)
296            .field("meta", &self.meta)
297            .finish()
298    }
299}
300
301#[derive(Copy, Clone)]
302#[repr(C)]
303pub struct GstTensorMeta {
304    pub meta: gst::GstMeta,
305    pub num_tensors: size_t,
306    pub tensors: *mut *mut GstTensor,
307}
308
309impl ::std::fmt::Debug for GstTensorMeta {
310    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
311        f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
312            .field("meta", &self.meta)
313            .field("num_tensors", &self.num_tensors)
314            .field("tensors", &self.tensors)
315            .finish()
316    }
317}
318
319extern "C" {
320
321    //=========================================================================
322    // GstAnalyticsBatchBuffer
323    //=========================================================================
324    #[cfg(feature = "v1_28")]
325    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
326    pub fn gst_analytics_batch_buffer_get_caps(
327        buffer: *mut GstAnalyticsBatchBuffer,
328    ) -> *mut gst::GstCaps;
329    #[cfg(feature = "v1_28")]
330    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
331    pub fn gst_analytics_batch_buffer_get_segment(
332        buffer: *mut GstAnalyticsBatchBuffer,
333    ) -> *const gst::GstSegment;
334    #[cfg(feature = "v1_28")]
335    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
336    pub fn gst_analytics_batch_buffer_get_stream_id(
337        buffer: *mut GstAnalyticsBatchBuffer,
338    ) -> *const c_char;
339
340    //=========================================================================
341    // GstAnalyticsBatchMeta
342    //=========================================================================
343    #[cfg(feature = "v1_28")]
344    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
345    pub fn gst_analytics_batch_meta_get_info() -> *const gst::GstMetaInfo;
346
347    //=========================================================================
348    // GstAnalyticsClsMtd
349    //=========================================================================
350    pub fn gst_analytics_cls_mtd_get_index_by_quark(
351        handle: *const GstAnalyticsClsMtd,
352        quark: glib::GQuark,
353    ) -> c_int;
354    pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
355    pub fn gst_analytics_cls_mtd_get_level(
356        handle: *const GstAnalyticsClsMtd,
357        index: size_t,
358    ) -> c_float;
359    pub fn gst_analytics_cls_mtd_get_quark(
360        handle: *const GstAnalyticsClsMtd,
361        index: size_t,
362    ) -> glib::GQuark;
363    pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
364
365    //=========================================================================
366    // GstAnalyticsMtd
367    //=========================================================================
368    pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
369    pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
370    pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
371    pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
372
373    //=========================================================================
374    // GstAnalyticsODMtd
375    //=========================================================================
376    pub fn gst_analytics_od_mtd_get_confidence_lvl(
377        instance: *const GstAnalyticsODMtd,
378        loc_conf_lvl: *mut c_float,
379    ) -> gboolean;
380    pub fn gst_analytics_od_mtd_get_location(
381        instance: *const GstAnalyticsODMtd,
382        x: *mut c_int,
383        y: *mut c_int,
384        w: *mut c_int,
385        h: *mut c_int,
386        loc_conf_lvl: *mut c_float,
387    ) -> gboolean;
388    pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
389    #[cfg(feature = "v1_26")]
390    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
391    pub fn gst_analytics_od_mtd_get_oriented_location(
392        instance: *const GstAnalyticsODMtd,
393        x: *mut c_int,
394        y: *mut c_int,
395        w: *mut c_int,
396        h: *mut c_int,
397        r: *mut c_float,
398        loc_conf_lvl: *mut c_float,
399    ) -> gboolean;
400    pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
401
402    //=========================================================================
403    // GstAnalyticsRelationMeta
404    //=========================================================================
405    pub fn gst_analytics_relation_meta_add_cls_mtd(
406        instance: *mut GstAnalyticsRelationMeta,
407        length: size_t,
408        confidence_levels: *mut c_float,
409        class_quarks: *mut glib::GQuark,
410        cls_mtd: *mut GstAnalyticsClsMtd,
411    ) -> gboolean;
412    pub fn gst_analytics_relation_meta_add_mtd(
413        meta: *mut GstAnalyticsRelationMeta,
414        impl_: *const GstAnalyticsMtdImpl,
415        size: size_t,
416        rlt_mtd: *mut GstAnalyticsMtd,
417    ) -> gpointer;
418    pub fn gst_analytics_relation_meta_add_od_mtd(
419        instance: *mut GstAnalyticsRelationMeta,
420        type_: glib::GQuark,
421        x: c_int,
422        y: c_int,
423        w: c_int,
424        h: c_int,
425        loc_conf_lvl: c_float,
426        od_mtd: *mut GstAnalyticsODMtd,
427    ) -> gboolean;
428    pub fn gst_analytics_relation_meta_add_one_cls_mtd(
429        instance: *mut GstAnalyticsRelationMeta,
430        confidence_level: c_float,
431        class_quark: glib::GQuark,
432        cls_mtd: *mut GstAnalyticsClsMtd,
433    ) -> gboolean;
434    #[cfg(feature = "v1_26")]
435    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
436    pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
437        instance: *mut GstAnalyticsRelationMeta,
438        type_: glib::GQuark,
439        x: c_int,
440        y: c_int,
441        w: c_int,
442        h: c_int,
443        r: c_float,
444        loc_conf_lvl: c_float,
445        od_mtd: *mut GstAnalyticsODMtd,
446    ) -> gboolean;
447    #[cfg(feature = "v1_26")]
448    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
449    pub fn gst_analytics_relation_meta_add_segmentation_mtd(
450        instance: *mut GstAnalyticsRelationMeta,
451        buffer: *mut gst::GstBuffer,
452        segmentation_type: GstSegmentationType,
453        region_count: size_t,
454        region_ids: *mut c_uint,
455        masks_loc_x: c_int,
456        masks_loc_y: c_int,
457        masks_loc_w: c_uint,
458        masks_loc_h: c_uint,
459        segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
460    ) -> gboolean;
461    pub fn gst_analytics_relation_meta_add_tracking_mtd(
462        instance: *mut GstAnalyticsRelationMeta,
463        tracking_id: u64,
464        tracking_first_seen: gst::GstClockTime,
465        trk_mtd: *mut GstAnalyticsTrackingMtd,
466    ) -> gboolean;
467    pub fn gst_analytics_relation_meta_exist(
468        rmeta: *const GstAnalyticsRelationMeta,
469        an_meta_first_id: c_uint,
470        an_meta_second_id: c_uint,
471        max_relation_span: c_int,
472        cond_types: GstAnalyticsRelTypes,
473        relations_path: *mut *mut glib::GArray,
474    ) -> gboolean;
475    pub fn gst_analytics_relation_meta_get_cls_mtd(
476        meta: *mut GstAnalyticsRelationMeta,
477        an_meta_id: c_uint,
478        rlt: *mut GstAnalyticsClsMtd,
479    ) -> gboolean;
480    pub fn gst_analytics_relation_meta_get_direct_related(
481        meta: *mut GstAnalyticsRelationMeta,
482        an_meta_id: c_uint,
483        relation_type: GstAnalyticsRelTypes,
484        type_: GstAnalyticsMtdType,
485        state: *mut gpointer,
486        rlt_mtd: *mut GstAnalyticsMtd,
487    ) -> gboolean;
488    pub fn gst_analytics_relation_meta_get_mtd(
489        meta: *mut GstAnalyticsRelationMeta,
490        an_meta_id: c_uint,
491        type_: GstAnalyticsMtdType,
492        rlt: *mut GstAnalyticsMtd,
493    ) -> gboolean;
494    pub fn gst_analytics_relation_meta_get_mtd_data(
495        meta: *const GstAnalyticsRelationMeta,
496        an_meta_id: c_uint,
497    ) -> gpointer;
498    pub fn gst_analytics_relation_meta_get_od_mtd(
499        meta: *mut GstAnalyticsRelationMeta,
500        an_meta_id: c_uint,
501        rlt: *mut GstAnalyticsODMtd,
502    ) -> gboolean;
503    pub fn gst_analytics_relation_meta_get_relation(
504        meta: *const GstAnalyticsRelationMeta,
505        an_meta_first_id: c_uint,
506        an_meta_second_id: c_uint,
507    ) -> GstAnalyticsRelTypes;
508    #[cfg(feature = "v1_26")]
509    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
510    pub fn gst_analytics_relation_meta_get_segmentation_mtd(
511        meta: *mut GstAnalyticsRelationMeta,
512        an_meta_id: c_uint,
513        rlt: *mut GstAnalyticsSegmentationMtd,
514    ) -> gboolean;
515    pub fn gst_analytics_relation_meta_get_tracking_mtd(
516        meta: *mut GstAnalyticsRelationMeta,
517        an_meta_id: c_uint,
518        rlt: *mut GstAnalyticsTrackingMtd,
519    ) -> gboolean;
520    pub fn gst_analytics_relation_meta_iterate(
521        meta: *mut GstAnalyticsRelationMeta,
522        state: *mut gpointer,
523        type_: GstAnalyticsMtdType,
524        rlt_mtd: *mut GstAnalyticsMtd,
525    ) -> gboolean;
526    pub fn gst_analytics_relation_meta_set_relation(
527        meta: *mut GstAnalyticsRelationMeta,
528        type_: GstAnalyticsRelTypes,
529        an_meta_first_id: c_uint,
530        an_meta_second_id: c_uint,
531    ) -> gboolean;
532    pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
533
534    //=========================================================================
535    // GstAnalyticsSegmentationMtd
536    //=========================================================================
537    #[cfg(feature = "v1_26")]
538    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
539    pub fn gst_analytics_segmentation_mtd_get_mask(
540        handle: *const GstAnalyticsSegmentationMtd,
541        masks_loc_x: *mut c_int,
542        masks_loc_y: *mut c_int,
543        masks_loc_w: *mut c_uint,
544        masks_loc_h: *mut c_uint,
545    ) -> *mut gst::GstBuffer;
546    #[cfg(feature = "v1_26")]
547    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
548    pub fn gst_analytics_segmentation_mtd_get_region_count(
549        handle: *const GstAnalyticsSegmentationMtd,
550    ) -> size_t;
551    #[cfg(feature = "v1_26")]
552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
553    pub fn gst_analytics_segmentation_mtd_get_region_id(
554        handle: *const GstAnalyticsSegmentationMtd,
555        index: size_t,
556    ) -> c_uint;
557    #[cfg(feature = "v1_26")]
558    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
559    pub fn gst_analytics_segmentation_mtd_get_region_index(
560        handle: *const GstAnalyticsSegmentationMtd,
561        index: *mut size_t,
562        id: c_uint,
563    ) -> gboolean;
564    #[cfg(feature = "v1_26")]
565    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
566    pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
567
568    //=========================================================================
569    // GstAnalyticsTrackingMtd
570    //=========================================================================
571    pub fn gst_analytics_tracking_mtd_get_info(
572        instance: *const GstAnalyticsTrackingMtd,
573        tracking_id: *mut u64,
574        tracking_first_seen: *mut gst::GstClockTime,
575        tracking_last_seen: *mut gst::GstClockTime,
576        tracking_lost: *mut gboolean,
577    ) -> gboolean;
578    pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
579    pub fn gst_analytics_tracking_mtd_update_last_seen(
580        instance: *mut GstAnalyticsTrackingMtd,
581        last_seen: gst::GstClockTime,
582    ) -> gboolean;
583    pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
584
585    //=========================================================================
586    // GstTensor
587    //=========================================================================
588    #[cfg(feature = "v1_26")]
589    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
590    pub fn gst_tensor_get_type() -> GType;
591    #[cfg(feature = "v1_26")]
592    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
593    pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
594    #[cfg(feature = "v1_26")]
595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
596    pub fn gst_tensor_new_simple(
597        id: glib::GQuark,
598        data_type: GstTensorDataType,
599        data: *mut gst::GstBuffer,
600        dims_order: GstTensorDimOrder,
601        num_dims: size_t,
602        dims: *mut size_t,
603    ) -> *mut GstTensor;
604    #[cfg(feature = "v1_28")]
605    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
606    pub fn gst_tensor_check_type(
607        tensor: *const GstTensor,
608        order: GstTensorDimOrder,
609        num_dims: size_t,
610        data_type: GstTensorDataType,
611        data: *mut gst::GstBuffer,
612    ) -> gboolean;
613    #[cfg(feature = "v1_26")]
614    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
615    pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
616    #[cfg(feature = "v1_26")]
617    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
618    pub fn gst_tensor_free(tensor: *mut GstTensor);
619    #[cfg(feature = "v1_26")]
620    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
621    pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
622    #[cfg(feature = "v1_28")]
623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
624    pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
625
626    //=========================================================================
627    // GstTensorMeta
628    //=========================================================================
629    #[cfg(feature = "v1_26")]
630    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
631    pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
632    #[cfg(feature = "v1_28")]
633    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
634    pub fn gst_tensor_meta_get_by_id(
635        tmeta: *mut GstTensorMeta,
636        id: glib::GQuark,
637    ) -> *const GstTensor;
638    #[cfg(feature = "v1_26")]
639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
640    pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
641    #[cfg(feature = "v1_28")]
642    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
643    pub fn gst_tensor_meta_get_typed_tensor(
644        tmeta: *mut GstTensorMeta,
645        tensor_id: glib::GQuark,
646        order: GstTensorDimOrder,
647        num_dims: size_t,
648        data_type: GstTensorDataType,
649        data: *mut gst::GstBuffer,
650    ) -> *const GstTensor;
651    #[cfg(feature = "v1_26")]
652    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
653    pub fn gst_tensor_meta_set(
654        tmeta: *mut GstTensorMeta,
655        num_tensors: c_uint,
656        tensors: *mut *mut GstTensor,
657    );
658    #[cfg(feature = "v1_26")]
659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
660    pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
661
662    //=========================================================================
663    // Other functions
664    //=========================================================================
665    #[cfg(feature = "v1_28")]
666    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
667    pub fn gst_analytics_batch_meta_api_get_type() -> GType;
668    #[cfg(feature = "v1_28")]
669    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
670    pub fn gst_buffer_add_analytics_batch_meta(
671        buffer: *mut gst::GstBuffer,
672    ) -> *mut GstAnalyticsBatchMeta;
673    pub fn gst_buffer_add_analytics_relation_meta(
674        buffer: *mut gst::GstBuffer,
675    ) -> *mut GstAnalyticsRelationMeta;
676    pub fn gst_buffer_add_analytics_relation_meta_full(
677        buffer: *mut gst::GstBuffer,
678        init_params: *mut GstAnalyticsRelationMetaInitParams,
679    ) -> *mut GstAnalyticsRelationMeta;
680    #[cfg(feature = "v1_26")]
681    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
682    pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
683    #[cfg(feature = "v1_28")]
684    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
685    pub fn gst_buffer_get_analytics_batch_meta(
686        buffer: *mut gst::GstBuffer,
687    ) -> *mut GstAnalyticsBatchMeta;
688    pub fn gst_buffer_get_analytics_relation_meta(
689        buffer: *mut gst::GstBuffer,
690    ) -> *mut GstAnalyticsRelationMeta;
691    #[cfg(feature = "v1_26")]
692    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
693    pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
694    #[cfg(feature = "v1_28")]
695    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
696    pub fn gst_analytics_image_util_iou_float(
697        bb1_x: c_float,
698        bb1_y: c_float,
699        bb1_w: c_float,
700        bb1_h: c_float,
701        bb2_x: c_float,
702        bb2_y: c_float,
703        bb2_w: c_float,
704        bb2_h: c_float,
705    ) -> c_float;
706    #[cfg(feature = "v1_28")]
707    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
708    pub fn gst_analytics_image_util_iou_int(
709        bb1_x: c_int,
710        bb1_y: c_int,
711        bb1_w: c_int,
712        bb1_h: c_int,
713        bb2_x: c_int,
714        bb2_y: c_int,
715        bb2_w: c_int,
716        bb2_h: c_int,
717    ) -> c_float;
718    pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
719    pub fn gst_analytics_relation_meta_api_get_type() -> GType;
720    #[cfg(feature = "v1_26")]
721    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
722    pub fn gst_tensor_meta_api_get_type() -> GType;
723
724}