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_iterate(
447        handle: *const GstAnalyticsGroupMtd,
448        state: *mut gpointer,
449        type_: GstAnalyticsMtdType,
450        member: *mut GstAnalyticsMtd,
451    ) -> gboolean;
452    #[cfg(feature = "v1_30")]
453    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
454    pub fn gst_analytics_group_mtd_get_mtd_type() -> GstAnalyticsMtdType;
455
456    //=========================================================================
457    // GstAnalyticsKeypointMtd
458    //=========================================================================
459    #[cfg(feature = "v1_30")]
460    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
461    pub fn gst_analytics_keypoint_mtd_get_confidence(
462        handle: *const GstAnalyticsKeypointMtd,
463        confidence: *mut c_float,
464    ) -> gboolean;
465    #[cfg(feature = "v1_30")]
466    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
467    pub fn gst_analytics_keypoint_mtd_get_position(
468        handle: *const GstAnalyticsKeypointMtd,
469        x: *mut c_int,
470        y: *mut c_int,
471        z: *mut c_int,
472        dimension: *mut GstAnalyticsKeypointDimensions,
473    ) -> gboolean;
474    #[cfg(feature = "v1_30")]
475    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
476    pub fn gst_analytics_keypoint_mtd_get_visibility_flags(
477        handle: *const GstAnalyticsKeypointMtd,
478        visibility_flags: *mut u8,
479    ) -> gboolean;
480    #[cfg(feature = "v1_30")]
481    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
482    pub fn gst_analytics_keypoint_mtd_get_mtd_type() -> GstAnalyticsMtdType;
483
484    //=========================================================================
485    // GstAnalyticsModelInfo
486    //=========================================================================
487    #[cfg(feature = "v1_28")]
488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
489    pub fn gst_analytics_modelinfo_get_type() -> GType;
490    #[cfg(feature = "v1_28")]
491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
492    pub fn gst_analytics_modelinfo_find_tensor_name(
493        modelinfo: *mut GstAnalyticsModelInfo,
494        dir: GstAnalyticsModelInfoTensorDirection,
495        index: size_t,
496        in_tensor_name: *const c_char,
497        data_type: GstTensorDataType,
498        num_dims: size_t,
499        dims: *const size_t,
500    ) -> *mut c_char;
501    #[cfg(feature = "v1_28")]
502    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
503    pub fn gst_analytics_modelinfo_free(model_info: *mut GstAnalyticsModelInfo);
504    #[cfg(feature = "v1_28")]
505    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
506    pub fn gst_analytics_modelinfo_get_dims_order(
507        modelinfo: *mut GstAnalyticsModelInfo,
508        tensor_name: *const c_char,
509    ) -> GstTensorDimOrder;
510    #[cfg(feature = "v1_28")]
511    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
512    pub fn gst_analytics_modelinfo_get_group_id(
513        modelinfo: *mut GstAnalyticsModelInfo,
514    ) -> *mut c_char;
515    #[cfg(feature = "v1_28")]
516    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
517    pub fn gst_analytics_modelinfo_get_id(
518        modelinfo: *mut GstAnalyticsModelInfo,
519        tensor_name: *const c_char,
520    ) -> *mut c_char;
521    #[cfg(feature = "v1_28")]
522    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
523    pub fn gst_analytics_modelinfo_get_input_scales_offsets(
524        modelinfo: *mut GstAnalyticsModelInfo,
525        tensor_name: *const c_char,
526        num_input_ranges: size_t,
527        input_mins: *const c_double,
528        input_maxs: *const c_double,
529        num_output_ranges: *mut size_t,
530        output_scales: *mut *mut c_double,
531        output_offsets: *mut *mut c_double,
532    ) -> gboolean;
533    #[cfg(feature = "v1_28")]
534    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
535    pub fn gst_analytics_modelinfo_get_quark_group_id(
536        modelinfo: *mut GstAnalyticsModelInfo,
537    ) -> glib::GQuark;
538    #[cfg(feature = "v1_28")]
539    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
540    pub fn gst_analytics_modelinfo_get_quark_id(
541        modelinfo: *mut GstAnalyticsModelInfo,
542        tensor_name: *const c_char,
543    ) -> glib::GQuark;
544    #[cfg(feature = "v1_28")]
545    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
546    pub fn gst_analytics_modelinfo_get_target_ranges(
547        modelinfo: *mut GstAnalyticsModelInfo,
548        tensor_name: *const c_char,
549        num_ranges: *mut size_t,
550        mins: *mut *mut c_double,
551        maxs: *mut *mut c_double,
552    ) -> gboolean;
553    #[cfg(feature = "v1_28")]
554    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
555    pub fn gst_analytics_modelinfo_get_version(
556        modelinfo: *mut GstAnalyticsModelInfo,
557    ) -> *mut c_char;
558    #[cfg(feature = "v1_28")]
559    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
560    pub fn gst_analytics_modelinfo_load(
561        model_filename: *const c_char,
562    ) -> *mut GstAnalyticsModelInfo;
563
564    //=========================================================================
565    // GstAnalyticsMtd
566    //=========================================================================
567    pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
568    pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
569    #[cfg(feature = "v1_30")]
570    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
571    pub fn gst_analytics_mtd_get_semantic_tag(instance: *const GstAnalyticsMtd) -> *mut c_char;
572    pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
573    #[cfg(feature = "v1_30")]
574    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
575    pub fn gst_analytics_mtd_has_semantic_tag(
576        instance: *const GstAnalyticsMtd,
577        tag: *const c_char,
578    ) -> gboolean;
579    #[cfg(feature = "v1_30")]
580    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
581    pub fn gst_analytics_mtd_semantic_tag_has_prefix(
582        instance: *const GstAnalyticsMtd,
583        prefix: *const c_char,
584    ) -> gboolean;
585    #[cfg(feature = "v1_30")]
586    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
587    pub fn gst_analytics_mtd_set_semantic_tag(
588        instance: *mut GstAnalyticsMtd,
589        tag: *const c_char,
590    ) -> gboolean;
591    pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
592
593    //=========================================================================
594    // GstAnalyticsODMtd
595    //=========================================================================
596    pub fn gst_analytics_od_mtd_get_confidence_lvl(
597        instance: *const GstAnalyticsODMtd,
598        loc_conf_lvl: *mut c_float,
599    ) -> gboolean;
600    pub fn gst_analytics_od_mtd_get_location(
601        instance: *const GstAnalyticsODMtd,
602        x: *mut c_int,
603        y: *mut c_int,
604        w: *mut c_int,
605        h: *mut c_int,
606        loc_conf_lvl: *mut c_float,
607    ) -> gboolean;
608    pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
609    #[cfg(feature = "v1_26")]
610    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
611    pub fn gst_analytics_od_mtd_get_oriented_location(
612        instance: *const GstAnalyticsODMtd,
613        x: *mut c_int,
614        y: *mut c_int,
615        w: *mut c_int,
616        h: *mut c_int,
617        r: *mut c_float,
618        loc_conf_lvl: *mut c_float,
619    ) -> gboolean;
620    pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
621
622    //=========================================================================
623    // GstAnalyticsRelationMeta
624    //=========================================================================
625    pub fn gst_analytics_relation_meta_add_cls_mtd(
626        instance: *mut GstAnalyticsRelationMeta,
627        length: size_t,
628        confidence_levels: *mut c_float,
629        class_quarks: *mut glib::GQuark,
630        cls_mtd: *mut GstAnalyticsClsMtd,
631    ) -> gboolean;
632    #[cfg(feature = "v1_30")]
633    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
634    pub fn gst_analytics_relation_meta_add_group_mtd(
635        instance: *mut GstAnalyticsRelationMeta,
636        pre_alloc_size: size_t,
637        group_mtd: *mut GstAnalyticsGroupMtd,
638    ) -> gboolean;
639    #[cfg(feature = "v1_30")]
640    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
641    pub fn gst_analytics_relation_meta_add_group_mtd_with_size(
642        instance: *mut GstAnalyticsRelationMeta,
643        group_size: size_t,
644        group_mtd: *mut GstAnalyticsGroupMtd,
645    ) -> gboolean;
646    #[cfg(feature = "v1_30")]
647    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
648    pub fn gst_analytics_relation_meta_add_keypoint_mtd(
649        instance: *mut GstAnalyticsRelationMeta,
650        dimension: GstAnalyticsKeypointDimensions,
651        x: c_int,
652        y: c_int,
653        z: c_int,
654        visibility_flags: u8,
655        confidence: c_float,
656        keypoint_mtd: *mut GstAnalyticsKeypointMtd,
657    ) -> gboolean;
658    #[cfg(feature = "v1_30")]
659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
660    pub fn gst_analytics_relation_meta_add_keypoints_group(
661        instance: *mut GstAnalyticsRelationMeta,
662        semantic_tag: *const c_char,
663        dimension: GstAnalyticsKeypointDimensions,
664        positions_len: size_t,
665        positions: *const c_int,
666        keypoint_count: size_t,
667        confidences: *const c_float,
668        visibilities: *const u8,
669        skeleton_pairs_len: size_t,
670        skeleton_pairs: *const c_int,
671        group_mtd: *mut GstAnalyticsGroupMtd,
672    ) -> gboolean;
673    pub fn gst_analytics_relation_meta_add_mtd(
674        meta: *mut GstAnalyticsRelationMeta,
675        impl_: *const GstAnalyticsMtdImpl,
676        size: size_t,
677        rlt_mtd: *mut GstAnalyticsMtd,
678    ) -> gpointer;
679    pub fn gst_analytics_relation_meta_add_od_mtd(
680        instance: *mut GstAnalyticsRelationMeta,
681        type_: glib::GQuark,
682        x: c_int,
683        y: c_int,
684        w: c_int,
685        h: c_int,
686        loc_conf_lvl: c_float,
687        od_mtd: *mut GstAnalyticsODMtd,
688    ) -> gboolean;
689    pub fn gst_analytics_relation_meta_add_one_cls_mtd(
690        instance: *mut GstAnalyticsRelationMeta,
691        confidence_level: c_float,
692        class_quark: glib::GQuark,
693        cls_mtd: *mut GstAnalyticsClsMtd,
694    ) -> gboolean;
695    #[cfg(feature = "v1_26")]
696    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
697    pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
698        instance: *mut GstAnalyticsRelationMeta,
699        type_: glib::GQuark,
700        x: c_int,
701        y: c_int,
702        w: c_int,
703        h: c_int,
704        r: c_float,
705        loc_conf_lvl: c_float,
706        od_mtd: *mut GstAnalyticsODMtd,
707    ) -> gboolean;
708    #[cfg(feature = "v1_26")]
709    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
710    pub fn gst_analytics_relation_meta_add_segmentation_mtd(
711        instance: *mut GstAnalyticsRelationMeta,
712        buffer: *mut gst::GstBuffer,
713        segmentation_type: GstSegmentationType,
714        region_count: size_t,
715        region_ids: *mut c_uint,
716        masks_loc_x: c_int,
717        masks_loc_y: c_int,
718        masks_loc_w: c_uint,
719        masks_loc_h: c_uint,
720        segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
721    ) -> gboolean;
722    #[cfg(feature = "v1_28")]
723    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
724    pub fn gst_analytics_relation_meta_add_tensor_mtd(
725        instance: *mut GstAnalyticsRelationMeta,
726        num_dims: size_t,
727        tensor_mtd: *mut GstAnalyticsTensorMtd,
728    ) -> gboolean;
729    #[cfg(feature = "v1_28")]
730    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
731    pub fn gst_analytics_relation_meta_add_tensor_mtd_simple(
732        instance: *mut GstAnalyticsRelationMeta,
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        tensor_mtd: *mut GstAnalyticsTensorMtd,
740    ) -> gboolean;
741    pub fn gst_analytics_relation_meta_add_tracking_mtd(
742        instance: *mut GstAnalyticsRelationMeta,
743        tracking_id: u64,
744        tracking_first_seen: gst::GstClockTime,
745        trk_mtd: *mut GstAnalyticsTrackingMtd,
746    ) -> gboolean;
747    pub fn gst_analytics_relation_meta_exist(
748        rmeta: *const GstAnalyticsRelationMeta,
749        an_meta_first_id: c_uint,
750        an_meta_second_id: c_uint,
751        max_relation_span: c_int,
752        cond_types: GstAnalyticsRelTypes,
753        relations_path: *mut *mut glib::GArray,
754    ) -> gboolean;
755    pub fn gst_analytics_relation_meta_get_cls_mtd(
756        meta: *mut GstAnalyticsRelationMeta,
757        an_meta_id: c_uint,
758        rlt: *mut GstAnalyticsClsMtd,
759    ) -> gboolean;
760    pub fn gst_analytics_relation_meta_get_direct_related(
761        meta: *mut GstAnalyticsRelationMeta,
762        an_meta_id: c_uint,
763        relation_type: GstAnalyticsRelTypes,
764        type_: GstAnalyticsMtdType,
765        state: *mut gpointer,
766        rlt_mtd: *mut GstAnalyticsMtd,
767    ) -> gboolean;
768    #[cfg(feature = "v1_30")]
769    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
770    pub fn gst_analytics_relation_meta_get_group_mtd(
771        meta: *mut GstAnalyticsRelationMeta,
772        an_meta_id: c_uint,
773        rlt: *mut GstAnalyticsGroupMtd,
774    ) -> gboolean;
775    #[cfg(feature = "v1_30")]
776    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
777    pub fn gst_analytics_relation_meta_get_keypoint_mtd(
778        meta: *mut GstAnalyticsRelationMeta,
779        an_meta_id: c_uint,
780        rlt: *mut GstAnalyticsKeypointMtd,
781    ) -> gboolean;
782    pub fn gst_analytics_relation_meta_get_mtd(
783        meta: *mut GstAnalyticsRelationMeta,
784        an_meta_id: c_uint,
785        type_: GstAnalyticsMtdType,
786        rlt: *mut GstAnalyticsMtd,
787    ) -> gboolean;
788    pub fn gst_analytics_relation_meta_get_mtd_data(
789        meta: *const GstAnalyticsRelationMeta,
790        an_meta_id: c_uint,
791    ) -> gpointer;
792    pub fn gst_analytics_relation_meta_get_od_mtd(
793        meta: *mut GstAnalyticsRelationMeta,
794        an_meta_id: c_uint,
795        rlt: *mut GstAnalyticsODMtd,
796    ) -> gboolean;
797    pub fn gst_analytics_relation_meta_get_relation(
798        meta: *const GstAnalyticsRelationMeta,
799        an_meta_first_id: c_uint,
800        an_meta_second_id: c_uint,
801    ) -> GstAnalyticsRelTypes;
802    #[cfg(feature = "v1_26")]
803    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
804    pub fn gst_analytics_relation_meta_get_segmentation_mtd(
805        meta: *mut GstAnalyticsRelationMeta,
806        an_meta_id: c_uint,
807        rlt: *mut GstAnalyticsSegmentationMtd,
808    ) -> gboolean;
809    #[cfg(feature = "v1_28")]
810    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
811    pub fn gst_analytics_relation_meta_get_tensor_mtd(
812        meta: *mut GstAnalyticsRelationMeta,
813        an_meta_id: c_uint,
814        rlt: *mut GstAnalyticsTensorMtd,
815    ) -> gboolean;
816    pub fn gst_analytics_relation_meta_get_tracking_mtd(
817        meta: *mut GstAnalyticsRelationMeta,
818        an_meta_id: c_uint,
819        rlt: *mut GstAnalyticsTrackingMtd,
820    ) -> gboolean;
821    pub fn gst_analytics_relation_meta_iterate(
822        meta: *mut GstAnalyticsRelationMeta,
823        state: *mut gpointer,
824        type_: GstAnalyticsMtdType,
825        rlt_mtd: *mut GstAnalyticsMtd,
826    ) -> gboolean;
827    pub fn gst_analytics_relation_meta_set_relation(
828        meta: *mut GstAnalyticsRelationMeta,
829        type_: GstAnalyticsRelTypes,
830        an_meta_first_id: c_uint,
831        an_meta_second_id: c_uint,
832    ) -> gboolean;
833    pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
834
835    //=========================================================================
836    // GstAnalyticsSegmentationMtd
837    //=========================================================================
838    #[cfg(feature = "v1_26")]
839    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
840    pub fn gst_analytics_segmentation_mtd_get_mask(
841        handle: *const GstAnalyticsSegmentationMtd,
842        masks_loc_x: *mut c_int,
843        masks_loc_y: *mut c_int,
844        masks_loc_w: *mut c_uint,
845        masks_loc_h: *mut c_uint,
846    ) -> *mut gst::GstBuffer;
847    #[cfg(feature = "v1_26")]
848    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
849    pub fn gst_analytics_segmentation_mtd_get_region_count(
850        handle: *const GstAnalyticsSegmentationMtd,
851    ) -> size_t;
852    #[cfg(feature = "v1_26")]
853    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
854    pub fn gst_analytics_segmentation_mtd_get_region_id(
855        handle: *const GstAnalyticsSegmentationMtd,
856        index: size_t,
857    ) -> c_uint;
858    #[cfg(feature = "v1_26")]
859    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
860    pub fn gst_analytics_segmentation_mtd_get_region_index(
861        handle: *const GstAnalyticsSegmentationMtd,
862        index: *mut size_t,
863        id: c_uint,
864    ) -> gboolean;
865    #[cfg(feature = "v1_26")]
866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
867    pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
868
869    //=========================================================================
870    // GstAnalyticsTensorMtd
871    //=========================================================================
872    #[cfg(feature = "v1_28")]
873    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
874    pub fn gst_analytics_tensor_mtd_get_tensor(
875        instance: *const GstAnalyticsTensorMtd,
876    ) -> *mut GstTensor;
877    #[cfg(feature = "v1_28")]
878    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
879    pub fn gst_analytics_tensor_mtd_get_mtd_type() -> GstAnalyticsMtdType;
880
881    //=========================================================================
882    // GstAnalyticsTrackingMtd
883    //=========================================================================
884    pub fn gst_analytics_tracking_mtd_get_info(
885        instance: *const GstAnalyticsTrackingMtd,
886        tracking_id: *mut u64,
887        tracking_first_seen: *mut gst::GstClockTime,
888        tracking_last_seen: *mut gst::GstClockTime,
889        tracking_lost: *mut gboolean,
890    ) -> gboolean;
891    pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
892    pub fn gst_analytics_tracking_mtd_update_last_seen(
893        instance: *mut GstAnalyticsTrackingMtd,
894        last_seen: gst::GstClockTime,
895    ) -> gboolean;
896    pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
897
898    //=========================================================================
899    // GstTensor
900    //=========================================================================
901    #[cfg(feature = "v1_26")]
902    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
903    pub fn gst_tensor_get_type() -> GType;
904    #[cfg(feature = "v1_26")]
905    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
906    pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
907    #[cfg(feature = "v1_26")]
908    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
909    pub fn gst_tensor_new_simple(
910        id: glib::GQuark,
911        data_type: GstTensorDataType,
912        data: *mut gst::GstBuffer,
913        dims_order: GstTensorDimOrder,
914        num_dims: size_t,
915        dims: *mut size_t,
916    ) -> *mut GstTensor;
917    #[cfg(feature = "v1_28")]
918    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
919    pub fn gst_tensor_check_type(
920        tensor: *const GstTensor,
921        data_type: GstTensorDataType,
922        order: GstTensorDimOrder,
923        num_dims: size_t,
924        dims: *const size_t,
925    ) -> gboolean;
926    #[cfg(feature = "v1_26")]
927    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
928    pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
929    #[cfg(feature = "v1_26")]
930    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
931    pub fn gst_tensor_free(tensor: *mut GstTensor);
932    #[cfg(feature = "v1_26")]
933    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
934    pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
935    #[cfg(feature = "v1_28")]
936    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
937    pub fn gst_tensor_set_simple(
938        tensor: *mut GstTensor,
939        id: glib::GQuark,
940        data_type: GstTensorDataType,
941        data: *mut gst::GstBuffer,
942        dims_order: GstTensorDimOrder,
943        num_dims: size_t,
944        dims: *mut size_t,
945    ) -> gboolean;
946    #[cfg(feature = "v1_28")]
947    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
948    pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
949
950    //=========================================================================
951    // GstTensorMeta
952    //=========================================================================
953    #[cfg(feature = "v1_26")]
954    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
955    pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
956    #[cfg(feature = "v1_28")]
957    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
958    pub fn gst_tensor_meta_get_by_id(
959        tmeta: *mut GstTensorMeta,
960        id: glib::GQuark,
961    ) -> *const GstTensor;
962    #[cfg(feature = "v1_26")]
963    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
964    pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
965    #[cfg(feature = "v1_28")]
966    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
967    pub fn gst_tensor_meta_get_typed_tensor(
968        tmeta: *mut GstTensorMeta,
969        tensor_id: glib::GQuark,
970        data_type: GstTensorDataType,
971        order: GstTensorDimOrder,
972        num_dims: size_t,
973        dims: *const size_t,
974    ) -> *const GstTensor;
975    #[cfg(feature = "v1_26")]
976    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
977    pub fn gst_tensor_meta_set(
978        tmeta: *mut GstTensorMeta,
979        num_tensors: c_uint,
980        tensors: *mut *mut GstTensor,
981    );
982    #[cfg(feature = "v1_26")]
983    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
984    pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
985
986    //=========================================================================
987    // Other functions
988    //=========================================================================
989    #[cfg(feature = "v1_28")]
990    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
991    pub fn gst_analytics_batch_meta_api_get_type() -> GType;
992    #[cfg(feature = "v1_28")]
993    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
994    pub fn gst_buffer_add_analytics_batch_meta(
995        buffer: *mut gst::GstBuffer,
996    ) -> *mut GstAnalyticsBatchMeta;
997    pub fn gst_buffer_add_analytics_relation_meta(
998        buffer: *mut gst::GstBuffer,
999    ) -> *mut GstAnalyticsRelationMeta;
1000    pub fn gst_buffer_add_analytics_relation_meta_full(
1001        buffer: *mut gst::GstBuffer,
1002        init_params: *mut GstAnalyticsRelationMetaInitParams,
1003    ) -> *mut GstAnalyticsRelationMeta;
1004    #[cfg(feature = "v1_26")]
1005    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1006    pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
1007    #[cfg(feature = "v1_28")]
1008    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
1009    pub fn gst_buffer_get_analytics_batch_meta(
1010        buffer: *mut gst::GstBuffer,
1011    ) -> *mut GstAnalyticsBatchMeta;
1012    pub fn gst_buffer_get_analytics_relation_meta(
1013        buffer: *mut gst::GstBuffer,
1014    ) -> *mut GstAnalyticsRelationMeta;
1015    #[cfg(feature = "v1_26")]
1016    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1017    pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
1018    #[cfg(feature = "v1_28")]
1019    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
1020    pub fn gst_analytics_image_util_iou_float(
1021        bb1_x: c_float,
1022        bb1_y: c_float,
1023        bb1_w: c_float,
1024        bb1_h: c_float,
1025        bb2_x: c_float,
1026        bb2_y: c_float,
1027        bb2_w: c_float,
1028        bb2_h: c_float,
1029    ) -> c_float;
1030    #[cfg(feature = "v1_28")]
1031    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
1032    pub fn gst_analytics_image_util_iou_int(
1033        bb1_x: c_int,
1034        bb1_y: c_int,
1035        bb1_w: c_int,
1036        bb1_h: c_int,
1037        bb2_x: c_int,
1038        bb2_y: c_int,
1039        bb2_w: c_int,
1040        bb2_h: c_int,
1041    ) -> c_float;
1042    pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
1043    pub fn gst_analytics_relation_meta_api_get_type() -> GType;
1044    #[cfg(feature = "v1_26")]
1045    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1046    pub fn gst_tensor_meta_api_get_type() -> GType;
1047
1048}