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_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 #[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 #[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 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 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 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 #[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 #[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 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 #[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 #[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 #[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}