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