Skip to main content

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