gstreamer_analytics_sys/
lib.rs

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