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
59pub type GstTensorDimOrder = c_int;
60pub const GST_TENSOR_DIM_ORDER_ROW_MAJOR: GstTensorDimOrder = 0;
61pub const GST_TENSOR_DIM_ORDER_COL_MAJOR: GstTensorDimOrder = 1;
62
63pub type GstTensorLayout = c_int;
64pub const GST_TENSOR_LAYOUT_CONTIGUOUS: GstTensorLayout = 0;
65
66// Constants
67pub const GST_INF_RELATION_SPAN: c_int = -1;
68pub const GST_ANALYTICS_MTD_TYPE_ANY: c_int = 0;
69
70// Flags
71pub type GstAnalyticsRelTypes = c_uint;
72pub const GST_ANALYTICS_REL_TYPE_NONE: GstAnalyticsRelTypes = 0;
73pub const GST_ANALYTICS_REL_TYPE_IS_PART_OF: GstAnalyticsRelTypes = 2;
74pub const GST_ANALYTICS_REL_TYPE_CONTAIN: GstAnalyticsRelTypes = 4;
75pub const GST_ANALYTICS_REL_TYPE_RELATE_TO: GstAnalyticsRelTypes = 8;
76#[cfg(feature = "v1_26")]
77#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
78pub const GST_ANALYTICS_REL_TYPE_N_TO_N: GstAnalyticsRelTypes = 16;
79pub const GST_ANALYTICS_REL_TYPE_ANY: GstAnalyticsRelTypes = 2147483647;
80
81// Records
82#[derive(Copy, Clone)]
83#[repr(C)]
84pub struct GstAnalyticsClsMtd {
85    pub id: c_uint,
86    pub meta: *mut GstAnalyticsRelationMeta,
87}
88
89impl ::std::fmt::Debug for GstAnalyticsClsMtd {
90    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
91        f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
92            .field("id", &self.id)
93            .field("meta", &self.meta)
94            .finish()
95    }
96}
97
98#[derive(Copy, Clone)]
99#[repr(C)]
100pub struct GstAnalyticsMtd {
101    pub id: c_uint,
102    pub meta: *mut GstAnalyticsRelationMeta,
103}
104
105impl ::std::fmt::Debug for GstAnalyticsMtd {
106    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
107        f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
108            .field("id", &self.id)
109            .field("meta", &self.meta)
110            .finish()
111    }
112}
113
114#[derive(Copy, Clone)]
115#[repr(C)]
116pub struct GstAnalyticsMtdImpl {
117    pub name: *const c_char,
118    pub mtd_meta_transform: Option<
119        unsafe extern "C" fn(
120            *mut gst::GstBuffer,
121            *mut GstAnalyticsMtd,
122            *mut gst::GstBuffer,
123            glib::GQuark,
124            gpointer,
125        ) -> gboolean,
126    >,
127    pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
128    pub _reserved: [gpointer; 19],
129}
130
131impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
132    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
133        f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
134            .field("name", &self.name)
135            .field("mtd_meta_transform", &self.mtd_meta_transform)
136            .field("mtd_meta_clear", &self.mtd_meta_clear)
137            .finish()
138    }
139}
140
141#[derive(Copy, Clone)]
142#[repr(C)]
143pub struct GstAnalyticsODMtd {
144    pub id: c_uint,
145    pub meta: *mut GstAnalyticsRelationMeta,
146}
147
148impl ::std::fmt::Debug for GstAnalyticsODMtd {
149    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
150        f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
151            .field("id", &self.id)
152            .field("meta", &self.meta)
153            .finish()
154    }
155}
156
157#[repr(C)]
158#[allow(dead_code)]
159pub struct _GstAnalyticsRelationMeta {
160    _data: [u8; 0],
161    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
162}
163
164pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
165
166#[derive(Copy, Clone)]
167#[repr(C)]
168pub struct GstAnalyticsRelationMetaInitParams {
169    pub initial_relation_order: size_t,
170    pub initial_buf_size: size_t,
171}
172
173impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
174    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
175        f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
176            .field("initial_relation_order", &self.initial_relation_order)
177            .field("initial_buf_size", &self.initial_buf_size)
178            .finish()
179    }
180}
181
182#[derive(Copy, Clone)]
183#[repr(C)]
184pub struct GstAnalyticsSegmentationMtd {
185    pub id: c_uint,
186    pub meta: *mut GstAnalyticsRelationMeta,
187}
188
189impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
190    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
191        f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
192            .field("id", &self.id)
193            .field("meta", &self.meta)
194            .finish()
195    }
196}
197
198#[derive(Copy, Clone)]
199#[repr(C)]
200pub struct GstAnalyticsTrackingMtd {
201    pub id: c_uint,
202    pub meta: *mut GstAnalyticsRelationMeta,
203}
204
205impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
206    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
207        f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
208            .field("id", &self.id)
209            .field("meta", &self.meta)
210            .finish()
211    }
212}
213
214#[derive(Copy, Clone)]
215#[repr(C)]
216pub struct GstTensorMeta {
217    pub meta: gst::GstMeta,
218    pub num_tensors: size_t,
219    pub tensors: *mut *mut GstTensor,
220}
221
222impl ::std::fmt::Debug for GstTensorMeta {
223    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
224        f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
225            .field("meta", &self.meta)
226            .field("num_tensors", &self.num_tensors)
227            .field("tensors", &self.tensors)
228            .finish()
229    }
230}
231
232extern "C" {
233
234    //=========================================================================
235    // GstAnalyticsClsMtd
236    //=========================================================================
237    pub fn gst_analytics_cls_mtd_get_index_by_quark(
238        handle: *const GstAnalyticsClsMtd,
239        quark: glib::GQuark,
240    ) -> c_int;
241    pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
242    pub fn gst_analytics_cls_mtd_get_level(
243        handle: *const GstAnalyticsClsMtd,
244        index: size_t,
245    ) -> c_float;
246    pub fn gst_analytics_cls_mtd_get_quark(
247        handle: *const GstAnalyticsClsMtd,
248        index: size_t,
249    ) -> glib::GQuark;
250    pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
251
252    //=========================================================================
253    // GstAnalyticsMtd
254    //=========================================================================
255    pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
256    pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
257    pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
258    pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
259
260    //=========================================================================
261    // GstAnalyticsODMtd
262    //=========================================================================
263    pub fn gst_analytics_od_mtd_get_confidence_lvl(
264        instance: *const GstAnalyticsODMtd,
265        loc_conf_lvl: *mut c_float,
266    ) -> gboolean;
267    pub fn gst_analytics_od_mtd_get_location(
268        instance: *const GstAnalyticsODMtd,
269        x: *mut c_int,
270        y: *mut c_int,
271        w: *mut c_int,
272        h: *mut c_int,
273        loc_conf_lvl: *mut c_float,
274    ) -> gboolean;
275    pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
276    #[cfg(feature = "v1_26")]
277    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
278    pub fn gst_analytics_od_mtd_get_oriented_location(
279        instance: *const GstAnalyticsODMtd,
280        x: *mut c_int,
281        y: *mut c_int,
282        w: *mut c_int,
283        h: *mut c_int,
284        r: *mut c_float,
285        loc_conf_lvl: *mut c_float,
286    ) -> gboolean;
287    pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
288
289    //=========================================================================
290    // GstAnalyticsRelationMeta
291    //=========================================================================
292    pub fn gst_analytics_relation_meta_add_cls_mtd(
293        instance: *mut GstAnalyticsRelationMeta,
294        length: size_t,
295        confidence_levels: *mut c_float,
296        class_quarks: *mut glib::GQuark,
297        cls_mtd: *mut GstAnalyticsClsMtd,
298    ) -> gboolean;
299    pub fn gst_analytics_relation_meta_add_mtd(
300        meta: *mut GstAnalyticsRelationMeta,
301        impl_: *const GstAnalyticsMtdImpl,
302        size: size_t,
303        rlt_mtd: *mut GstAnalyticsMtd,
304    ) -> gpointer;
305    pub fn gst_analytics_relation_meta_add_od_mtd(
306        instance: *mut GstAnalyticsRelationMeta,
307        type_: glib::GQuark,
308        x: c_int,
309        y: c_int,
310        w: c_int,
311        h: c_int,
312        loc_conf_lvl: c_float,
313        od_mtd: *mut GstAnalyticsODMtd,
314    ) -> gboolean;
315    pub fn gst_analytics_relation_meta_add_one_cls_mtd(
316        instance: *mut GstAnalyticsRelationMeta,
317        confidence_level: c_float,
318        class_quark: glib::GQuark,
319        cls_mtd: *mut GstAnalyticsClsMtd,
320    ) -> gboolean;
321    #[cfg(feature = "v1_26")]
322    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
323    pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
324        instance: *mut GstAnalyticsRelationMeta,
325        type_: glib::GQuark,
326        x: c_int,
327        y: c_int,
328        w: c_int,
329        h: c_int,
330        r: c_float,
331        loc_conf_lvl: c_float,
332        od_mtd: *mut GstAnalyticsODMtd,
333    ) -> gboolean;
334    #[cfg(feature = "v1_26")]
335    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
336    pub fn gst_analytics_relation_meta_add_segmentation_mtd(
337        instance: *mut GstAnalyticsRelationMeta,
338        buffer: *mut gst::GstBuffer,
339        segmentation_type: GstSegmentationType,
340        region_count: size_t,
341        region_ids: *mut c_uint,
342        masks_loc_x: c_int,
343        masks_loc_y: c_int,
344        masks_loc_w: c_uint,
345        masks_loc_h: c_uint,
346        segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
347    ) -> gboolean;
348    pub fn gst_analytics_relation_meta_add_tracking_mtd(
349        instance: *mut GstAnalyticsRelationMeta,
350        tracking_id: u64,
351        tracking_first_seen: gst::GstClockTime,
352        trk_mtd: *mut GstAnalyticsTrackingMtd,
353    ) -> gboolean;
354    pub fn gst_analytics_relation_meta_exist(
355        rmeta: *const GstAnalyticsRelationMeta,
356        an_meta_first_id: c_uint,
357        an_meta_second_id: c_uint,
358        max_relation_span: c_int,
359        cond_types: GstAnalyticsRelTypes,
360        relations_path: *mut *mut glib::GArray,
361    ) -> gboolean;
362    pub fn gst_analytics_relation_meta_get_cls_mtd(
363        meta: *mut GstAnalyticsRelationMeta,
364        an_meta_id: c_uint,
365        rlt: *mut GstAnalyticsClsMtd,
366    ) -> gboolean;
367    pub fn gst_analytics_relation_meta_get_direct_related(
368        meta: *mut GstAnalyticsRelationMeta,
369        an_meta_id: c_uint,
370        relation_type: GstAnalyticsRelTypes,
371        type_: GstAnalyticsMtdType,
372        state: *mut gpointer,
373        rlt_mtd: *mut GstAnalyticsMtd,
374    ) -> gboolean;
375    pub fn gst_analytics_relation_meta_get_mtd(
376        meta: *mut GstAnalyticsRelationMeta,
377        an_meta_id: c_uint,
378        type_: GstAnalyticsMtdType,
379        rlt: *mut GstAnalyticsMtd,
380    ) -> gboolean;
381    pub fn gst_analytics_relation_meta_get_mtd_data(
382        meta: *const GstAnalyticsRelationMeta,
383        an_meta_id: c_uint,
384    ) -> gpointer;
385    pub fn gst_analytics_relation_meta_get_od_mtd(
386        meta: *mut GstAnalyticsRelationMeta,
387        an_meta_id: c_uint,
388        rlt: *mut GstAnalyticsODMtd,
389    ) -> gboolean;
390    pub fn gst_analytics_relation_meta_get_relation(
391        meta: *const GstAnalyticsRelationMeta,
392        an_meta_first_id: c_uint,
393        an_meta_second_id: c_uint,
394    ) -> GstAnalyticsRelTypes;
395    #[cfg(feature = "v1_26")]
396    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
397    pub fn gst_analytics_relation_meta_get_segmentation_mtd(
398        meta: *mut GstAnalyticsRelationMeta,
399        an_meta_id: c_uint,
400        rlt: *mut GstAnalyticsSegmentationMtd,
401    ) -> gboolean;
402    pub fn gst_analytics_relation_meta_get_tracking_mtd(
403        meta: *mut GstAnalyticsRelationMeta,
404        an_meta_id: c_uint,
405        rlt: *mut GstAnalyticsTrackingMtd,
406    ) -> gboolean;
407    pub fn gst_analytics_relation_meta_iterate(
408        meta: *mut GstAnalyticsRelationMeta,
409        state: *mut gpointer,
410        type_: GstAnalyticsMtdType,
411        rlt_mtd: *mut GstAnalyticsMtd,
412    ) -> gboolean;
413    pub fn gst_analytics_relation_meta_set_relation(
414        meta: *mut GstAnalyticsRelationMeta,
415        type_: GstAnalyticsRelTypes,
416        an_meta_first_id: c_uint,
417        an_meta_second_id: c_uint,
418    ) -> gboolean;
419    pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
420
421    //=========================================================================
422    // GstAnalyticsSegmentationMtd
423    //=========================================================================
424    #[cfg(feature = "v1_26")]
425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
426    pub fn gst_analytics_segmentation_mtd_get_mask(
427        handle: *const GstAnalyticsSegmentationMtd,
428        masks_loc_x: *mut c_int,
429        masks_loc_y: *mut c_int,
430        masks_loc_w: *mut c_uint,
431        masks_loc_h: *mut c_uint,
432    ) -> *mut gst::GstBuffer;
433    #[cfg(feature = "v1_26")]
434    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
435    pub fn gst_analytics_segmentation_mtd_get_region_count(
436        handle: *const GstAnalyticsSegmentationMtd,
437    ) -> size_t;
438    #[cfg(feature = "v1_26")]
439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
440    pub fn gst_analytics_segmentation_mtd_get_region_id(
441        handle: *const GstAnalyticsSegmentationMtd,
442        index: size_t,
443    ) -> c_uint;
444    #[cfg(feature = "v1_26")]
445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
446    pub fn gst_analytics_segmentation_mtd_get_region_index(
447        handle: *const GstAnalyticsSegmentationMtd,
448        index: *mut size_t,
449        id: c_uint,
450    ) -> gboolean;
451    #[cfg(feature = "v1_26")]
452    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
453    pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
454
455    //=========================================================================
456    // GstAnalyticsTrackingMtd
457    //=========================================================================
458    pub fn gst_analytics_tracking_mtd_get_info(
459        instance: *const GstAnalyticsTrackingMtd,
460        tracking_id: *mut u64,
461        tracking_first_seen: *mut gst::GstClockTime,
462        tracking_last_seen: *mut gst::GstClockTime,
463        tracking_lost: *mut gboolean,
464    ) -> gboolean;
465    pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
466    pub fn gst_analytics_tracking_mtd_update_last_seen(
467        instance: *mut GstAnalyticsTrackingMtd,
468        last_seen: gst::GstClockTime,
469    ) -> gboolean;
470    pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
471
472    //=========================================================================
473    // GstTensor
474    //=========================================================================
475    #[cfg(feature = "v1_26")]
476    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
477    pub fn gst_tensor_get_type() -> GType;
478    #[cfg(feature = "v1_26")]
479    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
480    pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
481    #[cfg(feature = "v1_26")]
482    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
483    pub fn gst_tensor_new_simple(
484        id: glib::GQuark,
485        data_type: GstTensorDataType,
486        data: *mut gst::GstBuffer,
487        dims_order: GstTensorDimOrder,
488        num_dims: size_t,
489        dims: *mut size_t,
490    ) -> *mut GstTensor;
491    #[cfg(feature = "v1_26")]
492    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
493    pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
494    #[cfg(feature = "v1_26")]
495    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
496    pub fn gst_tensor_free(tensor: *mut GstTensor);
497    #[cfg(feature = "v1_26")]
498    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
499    pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
500
501    //=========================================================================
502    // GstTensorMeta
503    //=========================================================================
504    #[cfg(feature = "v1_26")]
505    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
506    pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
507    #[cfg(feature = "v1_26")]
508    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
509    pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
510    #[cfg(feature = "v1_26")]
511    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
512    pub fn gst_tensor_meta_set(
513        tmeta: *mut GstTensorMeta,
514        num_tensors: c_uint,
515        tensors: *mut *mut GstTensor,
516    );
517    #[cfg(feature = "v1_26")]
518    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
519    pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
520
521    //=========================================================================
522    // Other functions
523    //=========================================================================
524    pub fn gst_buffer_add_analytics_relation_meta(
525        buffer: *mut gst::GstBuffer,
526    ) -> *mut GstAnalyticsRelationMeta;
527    pub fn gst_buffer_add_analytics_relation_meta_full(
528        buffer: *mut gst::GstBuffer,
529        init_params: *mut GstAnalyticsRelationMetaInitParams,
530    ) -> *mut GstAnalyticsRelationMeta;
531    #[cfg(feature = "v1_26")]
532    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
533    pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
534    pub fn gst_buffer_get_analytics_relation_meta(
535        buffer: *mut gst::GstBuffer,
536    ) -> *mut GstAnalyticsRelationMeta;
537    #[cfg(feature = "v1_26")]
538    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
539    pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
540    pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
541    pub fn gst_analytics_relation_meta_api_get_type() -> GType;
542    #[cfg(feature = "v1_26")]
543    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
544    pub fn gst_tensor_meta_api_get_type() -> GType;
545
546}