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 GstAnalyticsModelInfoTensorDirection = c_int;
40pub const MODELINFO_DIRECTION_UNKNOWN: GstAnalyticsModelInfoTensorDirection = 0;
41pub const MODELINFO_DIRECTION_INPUT: GstAnalyticsModelInfoTensorDirection = 1;
42pub const MODELINFO_DIRECTION_OUTPUT: GstAnalyticsModelInfoTensorDirection = 2;
43
44pub type GstSegmentationType = c_int;
45pub const GST_SEGMENTATION_TYPE_SEMANTIC: GstSegmentationType = 0;
46pub const GST_SEGMENTATION_TYPE_INSTANCE: GstSegmentationType = 1;
47
48pub type GstTensorDataType = c_int;
49pub const GST_TENSOR_DATA_TYPE_INT4: GstTensorDataType = 0;
50pub const GST_TENSOR_DATA_TYPE_INT8: GstTensorDataType = 1;
51pub const GST_TENSOR_DATA_TYPE_INT16: GstTensorDataType = 2;
52pub const GST_TENSOR_DATA_TYPE_INT32: GstTensorDataType = 3;
53pub const GST_TENSOR_DATA_TYPE_INT64: GstTensorDataType = 4;
54pub const GST_TENSOR_DATA_TYPE_UINT4: GstTensorDataType = 5;
55pub const GST_TENSOR_DATA_TYPE_UINT8: GstTensorDataType = 6;
56pub const GST_TENSOR_DATA_TYPE_UINT16: GstTensorDataType = 7;
57pub const GST_TENSOR_DATA_TYPE_UINT32: GstTensorDataType = 8;
58pub const GST_TENSOR_DATA_TYPE_UINT64: GstTensorDataType = 9;
59pub const GST_TENSOR_DATA_TYPE_FLOAT16: GstTensorDataType = 10;
60pub const GST_TENSOR_DATA_TYPE_FLOAT32: GstTensorDataType = 11;
61pub const GST_TENSOR_DATA_TYPE_FLOAT64: GstTensorDataType = 12;
62pub const GST_TENSOR_DATA_TYPE_BFLOAT16: GstTensorDataType = 13;
63#[cfg(feature = "v1_28")]
64#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
65pub const GST_TENSOR_DATA_TYPE_STRING: GstTensorDataType = 14;
66#[cfg(feature = "v1_28")]
67#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
68pub const GST_TENSOR_DATA_TYPE_BOOL: GstTensorDataType = 15;
69#[cfg(feature = "v1_28")]
70#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
71pub const GST_TENSOR_DATA_TYPE_COMPLEX64: GstTensorDataType = 16;
72#[cfg(feature = "v1_28")]
73#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
74pub const GST_TENSOR_DATA_TYPE_COMPLEX128: GstTensorDataType = 17;
75#[cfg(feature = "v1_28")]
76#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
77pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FN: GstTensorDataType = 18;
78#[cfg(feature = "v1_28")]
79#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
80pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FNUZ: GstTensorDataType = 19;
81#[cfg(feature = "v1_28")]
82#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
83pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2: GstTensorDataType = 20;
84#[cfg(feature = "v1_28")]
85#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
86pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2FNUZ: GstTensorDataType = 21;
87
88pub type GstTensorDimOrder = c_int;
89pub const GST_TENSOR_DIM_ORDER_ROW_MAJOR: GstTensorDimOrder = 0;
90pub const GST_TENSOR_DIM_ORDER_COL_MAJOR: GstTensorDimOrder = 1;
91
92pub type GstTensorLayout = c_int;
93pub const GST_TENSOR_LAYOUT_CONTIGUOUS: GstTensorLayout = 0;
94
95pub const GST_CAPS_FEATURE_META_GST_ANALYTICS_BATCH_META: &[u8] = b"meta:GstAnalyticsBatchMeta\0";
97pub const GST_INF_RELATION_SPAN: c_int = -1;
98pub const GST_MODELINFO_SECTION_NAME: &[u8] = b"modelinfo\0";
99pub const GST_MODELINFO_VERSION_MAJOR: c_int = 1;
100pub const GST_MODELINFO_VERSION_MINOR: c_int = 0;
101pub const GST_MODELINFO_VERSION_STR: &[u8] = b"1.0\0";
102pub const GST_ANALYTICS_MTD_TYPE_ANY: c_int = 0;
103
104pub type GstAnalyticsRelTypes = c_uint;
106pub const GST_ANALYTICS_REL_TYPE_NONE: GstAnalyticsRelTypes = 0;
107pub const GST_ANALYTICS_REL_TYPE_IS_PART_OF: GstAnalyticsRelTypes = 2;
108pub const GST_ANALYTICS_REL_TYPE_CONTAIN: GstAnalyticsRelTypes = 4;
109pub const GST_ANALYTICS_REL_TYPE_RELATE_TO: GstAnalyticsRelTypes = 8;
110#[cfg(feature = "v1_26")]
111#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
112pub const GST_ANALYTICS_REL_TYPE_N_TO_N: GstAnalyticsRelTypes = 16;
113pub const GST_ANALYTICS_REL_TYPE_ANY: GstAnalyticsRelTypes = 2147483647;
114
115#[derive(Copy, Clone)]
117#[repr(C)]
118pub struct GstAnalyticsBatchMeta {
119 pub meta: gst::GstMeta,
120 pub streams: *mut GstAnalyticsBatchStream,
121 pub n_streams: size_t,
122}
123
124impl ::std::fmt::Debug for GstAnalyticsBatchMeta {
125 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
126 f.debug_struct(&format!("GstAnalyticsBatchMeta @ {self:p}"))
127 .field("meta", &self.meta)
128 .field("streams", &self.streams)
129 .field("n_streams", &self.n_streams)
130 .finish()
131 }
132}
133
134#[derive(Copy, Clone)]
135#[repr(C)]
136pub struct GstAnalyticsBatchStream {
137 pub index: c_uint,
138 pub sticky_events: *mut *mut gst::GstEvent,
139 pub n_sticky_events: size_t,
140 pub objects: *mut *mut gst::GstMiniObject,
141 pub n_objects: size_t,
142 pub padding: [gpointer; 4],
143}
144
145impl ::std::fmt::Debug for GstAnalyticsBatchStream {
146 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
147 f.debug_struct(&format!("GstAnalyticsBatchStream @ {self:p}"))
148 .field("index", &self.index)
149 .field("sticky_events", &self.sticky_events)
150 .field("n_sticky_events", &self.n_sticky_events)
151 .field("objects", &self.objects)
152 .field("n_objects", &self.n_objects)
153 .finish()
154 }
155}
156
157#[derive(Copy, Clone)]
158#[repr(C)]
159pub struct GstAnalyticsClsMtd {
160 pub id: c_uint,
161 pub meta: *mut GstAnalyticsRelationMeta,
162}
163
164impl ::std::fmt::Debug for GstAnalyticsClsMtd {
165 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
166 f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
167 .field("id", &self.id)
168 .field("meta", &self.meta)
169 .finish()
170 }
171}
172
173#[repr(C)]
174#[allow(dead_code)]
175pub struct GstAnalyticsModelInfo {
176 _data: [u8; 0],
177 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
178}
179
180impl ::std::fmt::Debug for GstAnalyticsModelInfo {
181 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
182 f.debug_struct(&format!("GstAnalyticsModelInfo @ {self:p}"))
183 .finish()
184 }
185}
186
187#[derive(Copy, Clone)]
188#[repr(C)]
189pub struct GstAnalyticsMtd {
190 pub id: c_uint,
191 pub meta: *mut GstAnalyticsRelationMeta,
192}
193
194impl ::std::fmt::Debug for GstAnalyticsMtd {
195 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
196 f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
197 .field("id", &self.id)
198 .field("meta", &self.meta)
199 .finish()
200 }
201}
202
203#[derive(Copy, Clone)]
204#[repr(C)]
205pub struct GstAnalyticsMtdImpl {
206 pub name: *const c_char,
207 pub mtd_meta_transform: Option<
208 unsafe extern "C" fn(
209 *mut gst::GstBuffer,
210 *mut GstAnalyticsMtd,
211 *mut gst::GstBuffer,
212 glib::GQuark,
213 gpointer,
214 ) -> gboolean,
215 >,
216 pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
217 pub _reserved: [gpointer; 19],
218}
219
220impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
221 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
222 f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
223 .field("name", &self.name)
224 .field("mtd_meta_transform", &self.mtd_meta_transform)
225 .field("mtd_meta_clear", &self.mtd_meta_clear)
226 .finish()
227 }
228}
229
230#[derive(Copy, Clone)]
231#[repr(C)]
232pub struct GstAnalyticsODMtd {
233 pub id: c_uint,
234 pub meta: *mut GstAnalyticsRelationMeta,
235}
236
237impl ::std::fmt::Debug for GstAnalyticsODMtd {
238 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
239 f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
240 .field("id", &self.id)
241 .field("meta", &self.meta)
242 .finish()
243 }
244}
245
246#[repr(C)]
247#[allow(dead_code)]
248pub struct _GstAnalyticsRelationMeta {
249 _data: [u8; 0],
250 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
251}
252
253pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
254
255#[derive(Copy, Clone)]
256#[repr(C)]
257pub struct GstAnalyticsRelationMetaInitParams {
258 pub initial_relation_order: size_t,
259 pub initial_buf_size: size_t,
260}
261
262impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
263 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
264 f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
265 .field("initial_relation_order", &self.initial_relation_order)
266 .field("initial_buf_size", &self.initial_buf_size)
267 .finish()
268 }
269}
270
271#[derive(Copy, Clone)]
272#[repr(C)]
273pub struct GstAnalyticsSegmentationMtd {
274 pub id: c_uint,
275 pub meta: *mut GstAnalyticsRelationMeta,
276}
277
278impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
279 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
280 f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
281 .field("id", &self.id)
282 .field("meta", &self.meta)
283 .finish()
284 }
285}
286
287#[derive(Copy, Clone)]
288#[repr(C)]
289pub struct GstAnalyticsTensorMtd {
290 pub id: c_uint,
291 pub meta: *mut GstAnalyticsRelationMeta,
292}
293
294impl ::std::fmt::Debug for GstAnalyticsTensorMtd {
295 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
296 f.debug_struct(&format!("GstAnalyticsTensorMtd @ {self:p}"))
297 .field("id", &self.id)
298 .field("meta", &self.meta)
299 .finish()
300 }
301}
302
303#[derive(Copy, Clone)]
304#[repr(C)]
305pub struct GstAnalyticsTrackingMtd {
306 pub id: c_uint,
307 pub meta: *mut GstAnalyticsRelationMeta,
308}
309
310impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
311 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
312 f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
313 .field("id", &self.id)
314 .field("meta", &self.meta)
315 .finish()
316 }
317}
318
319#[derive(Copy, Clone)]
320#[repr(C)]
321pub struct GstTensorMeta {
322 pub meta: gst::GstMeta,
323 pub num_tensors: size_t,
324 pub tensors: *mut *mut GstTensor,
325}
326
327impl ::std::fmt::Debug for GstTensorMeta {
328 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
329 f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
330 .field("meta", &self.meta)
331 .field("num_tensors", &self.num_tensors)
332 .field("tensors", &self.tensors)
333 .finish()
334 }
335}
336
337unsafe extern "C" {
338
339 #[cfg(feature = "v1_28")]
343 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
344 pub fn gst_analytics_batch_meta_get_info() -> *const gst::GstMetaInfo;
345
346 #[cfg(feature = "v1_28")]
350 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
351 pub fn gst_analytics_batch_stream_get_caps(
352 stream: *mut GstAnalyticsBatchStream,
353 ) -> *mut gst::GstCaps;
354 #[cfg(feature = "v1_28")]
355 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
356 pub fn gst_analytics_batch_stream_get_segment(
357 stream: *mut GstAnalyticsBatchStream,
358 ) -> *const gst::GstSegment;
359 #[cfg(feature = "v1_28")]
360 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
361 pub fn gst_analytics_batch_stream_get_stream_id(
362 stream: *mut GstAnalyticsBatchStream,
363 ) -> *const c_char;
364
365 pub fn gst_analytics_cls_mtd_get_index_by_quark(
369 handle: *const GstAnalyticsClsMtd,
370 quark: glib::GQuark,
371 ) -> c_int;
372 pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
373 pub fn gst_analytics_cls_mtd_get_level(
374 handle: *const GstAnalyticsClsMtd,
375 index: size_t,
376 ) -> c_float;
377 pub fn gst_analytics_cls_mtd_get_quark(
378 handle: *const GstAnalyticsClsMtd,
379 index: size_t,
380 ) -> glib::GQuark;
381 pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
382
383 #[cfg(feature = "v1_28")]
387 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
388 pub fn gst_analytics_modelinfo_get_type() -> GType;
389 #[cfg(feature = "v1_28")]
390 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
391 pub fn gst_analytics_modelinfo_find_tensor_name(
392 modelinfo: *mut GstAnalyticsModelInfo,
393 dir: GstAnalyticsModelInfoTensorDirection,
394 index: size_t,
395 in_tensor_name: *const c_char,
396 data_type: GstTensorDataType,
397 num_dims: size_t,
398 dims: *const size_t,
399 ) -> *mut c_char;
400 #[cfg(feature = "v1_28")]
401 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
402 pub fn gst_analytics_modelinfo_free(model_info: *mut GstAnalyticsModelInfo);
403 #[cfg(feature = "v1_28")]
404 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
405 pub fn gst_analytics_modelinfo_get_dims_order(
406 modelinfo: *mut GstAnalyticsModelInfo,
407 tensor_name: *const c_char,
408 ) -> GstTensorDimOrder;
409 #[cfg(feature = "v1_28")]
410 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
411 pub fn gst_analytics_modelinfo_get_group_id(
412 modelinfo: *mut GstAnalyticsModelInfo,
413 ) -> *mut c_char;
414 #[cfg(feature = "v1_28")]
415 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
416 pub fn gst_analytics_modelinfo_get_id(
417 modelinfo: *mut GstAnalyticsModelInfo,
418 tensor_name: *const c_char,
419 ) -> *mut c_char;
420 #[cfg(feature = "v1_28")]
421 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
422 pub fn gst_analytics_modelinfo_get_input_scales_offsets(
423 modelinfo: *mut GstAnalyticsModelInfo,
424 tensor_name: *const c_char,
425 num_input_ranges: size_t,
426 input_mins: *const c_double,
427 input_maxs: *const c_double,
428 num_output_ranges: *mut size_t,
429 output_scales: *mut *mut c_double,
430 output_offsets: *mut *mut c_double,
431 ) -> gboolean;
432 #[cfg(feature = "v1_28")]
433 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
434 pub fn gst_analytics_modelinfo_get_quark_group_id(
435 modelinfo: *mut GstAnalyticsModelInfo,
436 ) -> glib::GQuark;
437 #[cfg(feature = "v1_28")]
438 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
439 pub fn gst_analytics_modelinfo_get_quark_id(
440 modelinfo: *mut GstAnalyticsModelInfo,
441 tensor_name: *const c_char,
442 ) -> glib::GQuark;
443 #[cfg(feature = "v1_28")]
444 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
445 pub fn gst_analytics_modelinfo_get_target_ranges(
446 modelinfo: *mut GstAnalyticsModelInfo,
447 tensor_name: *const c_char,
448 num_ranges: *mut size_t,
449 mins: *mut *mut c_double,
450 maxs: *mut *mut c_double,
451 ) -> gboolean;
452 #[cfg(feature = "v1_28")]
453 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
454 pub fn gst_analytics_modelinfo_get_version(
455 modelinfo: *mut GstAnalyticsModelInfo,
456 ) -> *mut c_char;
457 #[cfg(feature = "v1_28")]
458 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
459 pub fn gst_analytics_modelinfo_load(
460 model_filename: *const c_char,
461 ) -> *mut GstAnalyticsModelInfo;
462
463 pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
467 pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
468 pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
469 pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
470
471 pub fn gst_analytics_od_mtd_get_confidence_lvl(
475 instance: *const GstAnalyticsODMtd,
476 loc_conf_lvl: *mut c_float,
477 ) -> gboolean;
478 pub fn gst_analytics_od_mtd_get_location(
479 instance: *const GstAnalyticsODMtd,
480 x: *mut c_int,
481 y: *mut c_int,
482 w: *mut c_int,
483 h: *mut c_int,
484 loc_conf_lvl: *mut c_float,
485 ) -> gboolean;
486 pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
487 #[cfg(feature = "v1_26")]
488 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
489 pub fn gst_analytics_od_mtd_get_oriented_location(
490 instance: *const GstAnalyticsODMtd,
491 x: *mut c_int,
492 y: *mut c_int,
493 w: *mut c_int,
494 h: *mut c_int,
495 r: *mut c_float,
496 loc_conf_lvl: *mut c_float,
497 ) -> gboolean;
498 pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
499
500 pub fn gst_analytics_relation_meta_add_cls_mtd(
504 instance: *mut GstAnalyticsRelationMeta,
505 length: size_t,
506 confidence_levels: *mut c_float,
507 class_quarks: *mut glib::GQuark,
508 cls_mtd: *mut GstAnalyticsClsMtd,
509 ) -> gboolean;
510 pub fn gst_analytics_relation_meta_add_mtd(
511 meta: *mut GstAnalyticsRelationMeta,
512 impl_: *const GstAnalyticsMtdImpl,
513 size: size_t,
514 rlt_mtd: *mut GstAnalyticsMtd,
515 ) -> gpointer;
516 pub fn gst_analytics_relation_meta_add_od_mtd(
517 instance: *mut GstAnalyticsRelationMeta,
518 type_: glib::GQuark,
519 x: c_int,
520 y: c_int,
521 w: c_int,
522 h: c_int,
523 loc_conf_lvl: c_float,
524 od_mtd: *mut GstAnalyticsODMtd,
525 ) -> gboolean;
526 pub fn gst_analytics_relation_meta_add_one_cls_mtd(
527 instance: *mut GstAnalyticsRelationMeta,
528 confidence_level: c_float,
529 class_quark: glib::GQuark,
530 cls_mtd: *mut GstAnalyticsClsMtd,
531 ) -> gboolean;
532 #[cfg(feature = "v1_26")]
533 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
534 pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
535 instance: *mut GstAnalyticsRelationMeta,
536 type_: glib::GQuark,
537 x: c_int,
538 y: c_int,
539 w: c_int,
540 h: c_int,
541 r: c_float,
542 loc_conf_lvl: c_float,
543 od_mtd: *mut GstAnalyticsODMtd,
544 ) -> gboolean;
545 #[cfg(feature = "v1_26")]
546 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
547 pub fn gst_analytics_relation_meta_add_segmentation_mtd(
548 instance: *mut GstAnalyticsRelationMeta,
549 buffer: *mut gst::GstBuffer,
550 segmentation_type: GstSegmentationType,
551 region_count: size_t,
552 region_ids: *mut c_uint,
553 masks_loc_x: c_int,
554 masks_loc_y: c_int,
555 masks_loc_w: c_uint,
556 masks_loc_h: c_uint,
557 segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
558 ) -> gboolean;
559 #[cfg(feature = "v1_28")]
560 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
561 pub fn gst_analytics_relation_meta_add_tensor_mtd(
562 instance: *mut GstAnalyticsRelationMeta,
563 num_dims: size_t,
564 tensor_mtd: *mut GstAnalyticsTensorMtd,
565 ) -> gboolean;
566 #[cfg(feature = "v1_28")]
567 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
568 pub fn gst_analytics_relation_meta_add_tensor_mtd_simple(
569 instance: *mut GstAnalyticsRelationMeta,
570 id: glib::GQuark,
571 data_type: GstTensorDataType,
572 data: *mut gst::GstBuffer,
573 dims_order: GstTensorDimOrder,
574 num_dims: size_t,
575 dims: *mut size_t,
576 tensor_mtd: *mut GstAnalyticsTensorMtd,
577 ) -> gboolean;
578 pub fn gst_analytics_relation_meta_add_tracking_mtd(
579 instance: *mut GstAnalyticsRelationMeta,
580 tracking_id: u64,
581 tracking_first_seen: gst::GstClockTime,
582 trk_mtd: *mut GstAnalyticsTrackingMtd,
583 ) -> gboolean;
584 pub fn gst_analytics_relation_meta_exist(
585 rmeta: *const GstAnalyticsRelationMeta,
586 an_meta_first_id: c_uint,
587 an_meta_second_id: c_uint,
588 max_relation_span: c_int,
589 cond_types: GstAnalyticsRelTypes,
590 relations_path: *mut *mut glib::GArray,
591 ) -> gboolean;
592 pub fn gst_analytics_relation_meta_get_cls_mtd(
593 meta: *mut GstAnalyticsRelationMeta,
594 an_meta_id: c_uint,
595 rlt: *mut GstAnalyticsClsMtd,
596 ) -> gboolean;
597 pub fn gst_analytics_relation_meta_get_direct_related(
598 meta: *mut GstAnalyticsRelationMeta,
599 an_meta_id: c_uint,
600 relation_type: GstAnalyticsRelTypes,
601 type_: GstAnalyticsMtdType,
602 state: *mut gpointer,
603 rlt_mtd: *mut GstAnalyticsMtd,
604 ) -> gboolean;
605 pub fn gst_analytics_relation_meta_get_mtd(
606 meta: *mut GstAnalyticsRelationMeta,
607 an_meta_id: c_uint,
608 type_: GstAnalyticsMtdType,
609 rlt: *mut GstAnalyticsMtd,
610 ) -> gboolean;
611 pub fn gst_analytics_relation_meta_get_mtd_data(
612 meta: *const GstAnalyticsRelationMeta,
613 an_meta_id: c_uint,
614 ) -> gpointer;
615 pub fn gst_analytics_relation_meta_get_od_mtd(
616 meta: *mut GstAnalyticsRelationMeta,
617 an_meta_id: c_uint,
618 rlt: *mut GstAnalyticsODMtd,
619 ) -> gboolean;
620 pub fn gst_analytics_relation_meta_get_relation(
621 meta: *const GstAnalyticsRelationMeta,
622 an_meta_first_id: c_uint,
623 an_meta_second_id: c_uint,
624 ) -> GstAnalyticsRelTypes;
625 #[cfg(feature = "v1_26")]
626 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
627 pub fn gst_analytics_relation_meta_get_segmentation_mtd(
628 meta: *mut GstAnalyticsRelationMeta,
629 an_meta_id: c_uint,
630 rlt: *mut GstAnalyticsSegmentationMtd,
631 ) -> gboolean;
632 #[cfg(feature = "v1_28")]
633 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
634 pub fn gst_analytics_relation_meta_get_tensor_mtd(
635 meta: *mut GstAnalyticsRelationMeta,
636 an_meta_id: c_uint,
637 rlt: *mut GstAnalyticsTensorMtd,
638 ) -> gboolean;
639 pub fn gst_analytics_relation_meta_get_tracking_mtd(
640 meta: *mut GstAnalyticsRelationMeta,
641 an_meta_id: c_uint,
642 rlt: *mut GstAnalyticsTrackingMtd,
643 ) -> gboolean;
644 pub fn gst_analytics_relation_meta_iterate(
645 meta: *mut GstAnalyticsRelationMeta,
646 state: *mut gpointer,
647 type_: GstAnalyticsMtdType,
648 rlt_mtd: *mut GstAnalyticsMtd,
649 ) -> gboolean;
650 pub fn gst_analytics_relation_meta_set_relation(
651 meta: *mut GstAnalyticsRelationMeta,
652 type_: GstAnalyticsRelTypes,
653 an_meta_first_id: c_uint,
654 an_meta_second_id: c_uint,
655 ) -> gboolean;
656 pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
657
658 #[cfg(feature = "v1_26")]
662 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
663 pub fn gst_analytics_segmentation_mtd_get_mask(
664 handle: *const GstAnalyticsSegmentationMtd,
665 masks_loc_x: *mut c_int,
666 masks_loc_y: *mut c_int,
667 masks_loc_w: *mut c_uint,
668 masks_loc_h: *mut c_uint,
669 ) -> *mut gst::GstBuffer;
670 #[cfg(feature = "v1_26")]
671 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
672 pub fn gst_analytics_segmentation_mtd_get_region_count(
673 handle: *const GstAnalyticsSegmentationMtd,
674 ) -> size_t;
675 #[cfg(feature = "v1_26")]
676 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
677 pub fn gst_analytics_segmentation_mtd_get_region_id(
678 handle: *const GstAnalyticsSegmentationMtd,
679 index: size_t,
680 ) -> c_uint;
681 #[cfg(feature = "v1_26")]
682 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
683 pub fn gst_analytics_segmentation_mtd_get_region_index(
684 handle: *const GstAnalyticsSegmentationMtd,
685 index: *mut size_t,
686 id: c_uint,
687 ) -> gboolean;
688 #[cfg(feature = "v1_26")]
689 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
690 pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
691
692 #[cfg(feature = "v1_28")]
696 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
697 pub fn gst_analytics_tensor_mtd_get_tensor(
698 instance: *const GstAnalyticsTensorMtd,
699 ) -> *mut GstTensor;
700 #[cfg(feature = "v1_28")]
701 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
702 pub fn gst_analytics_tensor_mtd_get_mtd_type() -> GstAnalyticsMtdType;
703
704 pub fn gst_analytics_tracking_mtd_get_info(
708 instance: *const GstAnalyticsTrackingMtd,
709 tracking_id: *mut u64,
710 tracking_first_seen: *mut gst::GstClockTime,
711 tracking_last_seen: *mut gst::GstClockTime,
712 tracking_lost: *mut gboolean,
713 ) -> gboolean;
714 pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
715 pub fn gst_analytics_tracking_mtd_update_last_seen(
716 instance: *mut GstAnalyticsTrackingMtd,
717 last_seen: gst::GstClockTime,
718 ) -> gboolean;
719 pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
720
721 #[cfg(feature = "v1_26")]
725 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
726 pub fn gst_tensor_get_type() -> GType;
727 #[cfg(feature = "v1_26")]
728 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
729 pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
730 #[cfg(feature = "v1_26")]
731 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
732 pub fn gst_tensor_new_simple(
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 ) -> *mut GstTensor;
740 #[cfg(feature = "v1_28")]
741 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
742 pub fn gst_tensor_check_type(
743 tensor: *const GstTensor,
744 data_type: GstTensorDataType,
745 order: GstTensorDimOrder,
746 num_dims: size_t,
747 dims: *const size_t,
748 ) -> gboolean;
749 #[cfg(feature = "v1_26")]
750 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
751 pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
752 #[cfg(feature = "v1_26")]
753 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
754 pub fn gst_tensor_free(tensor: *mut GstTensor);
755 #[cfg(feature = "v1_26")]
756 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
757 pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
758 #[cfg(feature = "v1_28")]
759 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
760 pub fn gst_tensor_set_simple(
761 tensor: *mut GstTensor,
762 id: glib::GQuark,
763 data_type: GstTensorDataType,
764 data: *mut gst::GstBuffer,
765 dims_order: GstTensorDimOrder,
766 num_dims: size_t,
767 dims: *mut size_t,
768 ) -> gboolean;
769 #[cfg(feature = "v1_28")]
770 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
771 pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
772
773 #[cfg(feature = "v1_26")]
777 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
778 pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
779 #[cfg(feature = "v1_28")]
780 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
781 pub fn gst_tensor_meta_get_by_id(
782 tmeta: *mut GstTensorMeta,
783 id: glib::GQuark,
784 ) -> *const GstTensor;
785 #[cfg(feature = "v1_26")]
786 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
787 pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
788 #[cfg(feature = "v1_28")]
789 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
790 pub fn gst_tensor_meta_get_typed_tensor(
791 tmeta: *mut GstTensorMeta,
792 tensor_id: glib::GQuark,
793 data_type: GstTensorDataType,
794 order: GstTensorDimOrder,
795 num_dims: size_t,
796 dims: *const size_t,
797 ) -> *const GstTensor;
798 #[cfg(feature = "v1_26")]
799 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
800 pub fn gst_tensor_meta_set(
801 tmeta: *mut GstTensorMeta,
802 num_tensors: c_uint,
803 tensors: *mut *mut GstTensor,
804 );
805 #[cfg(feature = "v1_26")]
806 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
807 pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
808
809 #[cfg(feature = "v1_28")]
813 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
814 pub fn gst_analytics_batch_meta_api_get_type() -> GType;
815 #[cfg(feature = "v1_28")]
816 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
817 pub fn gst_buffer_add_analytics_batch_meta(
818 buffer: *mut gst::GstBuffer,
819 ) -> *mut GstAnalyticsBatchMeta;
820 pub fn gst_buffer_add_analytics_relation_meta(
821 buffer: *mut gst::GstBuffer,
822 ) -> *mut GstAnalyticsRelationMeta;
823 pub fn gst_buffer_add_analytics_relation_meta_full(
824 buffer: *mut gst::GstBuffer,
825 init_params: *mut GstAnalyticsRelationMetaInitParams,
826 ) -> *mut GstAnalyticsRelationMeta;
827 #[cfg(feature = "v1_26")]
828 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
829 pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
830 #[cfg(feature = "v1_28")]
831 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
832 pub fn gst_buffer_get_analytics_batch_meta(
833 buffer: *mut gst::GstBuffer,
834 ) -> *mut GstAnalyticsBatchMeta;
835 pub fn gst_buffer_get_analytics_relation_meta(
836 buffer: *mut gst::GstBuffer,
837 ) -> *mut GstAnalyticsRelationMeta;
838 #[cfg(feature = "v1_26")]
839 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
840 pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
841 #[cfg(feature = "v1_28")]
842 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
843 pub fn gst_analytics_image_util_iou_float(
844 bb1_x: c_float,
845 bb1_y: c_float,
846 bb1_w: c_float,
847 bb1_h: c_float,
848 bb2_x: c_float,
849 bb2_y: c_float,
850 bb2_w: c_float,
851 bb2_h: c_float,
852 ) -> c_float;
853 #[cfg(feature = "v1_28")]
854 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
855 pub fn gst_analytics_image_util_iou_int(
856 bb1_x: c_int,
857 bb1_y: c_int,
858 bb1_w: c_int,
859 bb1_h: c_int,
860 bb2_x: c_int,
861 bb2_y: c_int,
862 bb2_w: c_int,
863 bb2_h: c_int,
864 ) -> c_float;
865 pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
866 pub fn gst_analytics_relation_meta_api_get_type() -> GType;
867 #[cfg(feature = "v1_26")]
868 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
869 pub fn gst_tensor_meta_api_get_type() -> GType;
870
871}