1#![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
35pub type GstAnalyticsMtdType = uintptr_t;
37
38pub 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
99pub 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
108pub 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#[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 #[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 #[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 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 #[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 #[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 #[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 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 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 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 #[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 #[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 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 #[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 #[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 #[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}