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#[cfg(unix)]
23#[allow(unused_imports)]
24use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
25#[allow(unused_imports)]
26use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
27#[allow(unused_imports)]
28use std::ffi::{
29 c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
30};
31
32#[allow(unused_imports)]
33use glib::{gboolean, gconstpointer, gpointer, GType};
34
35pub type GstAnalyticsMtdType = uintptr_t;
37
38pub type GstSegmentationType = c_int;
40pub const GST_SEGMENTATION_TYPE_SEMANTIC: GstSegmentationType = 0;
41pub const GST_SEGMENTATION_TYPE_INSTANCE: GstSegmentationType = 1;
42
43pub type GstTensorDataType = c_int;
44pub const GST_TENSOR_DATA_TYPE_INT4: GstTensorDataType = 0;
45pub const GST_TENSOR_DATA_TYPE_INT8: GstTensorDataType = 1;
46pub const GST_TENSOR_DATA_TYPE_INT16: GstTensorDataType = 2;
47pub const GST_TENSOR_DATA_TYPE_INT32: GstTensorDataType = 3;
48pub const GST_TENSOR_DATA_TYPE_INT64: GstTensorDataType = 4;
49pub const GST_TENSOR_DATA_TYPE_UINT4: GstTensorDataType = 5;
50pub const GST_TENSOR_DATA_TYPE_UINT8: GstTensorDataType = 6;
51pub const GST_TENSOR_DATA_TYPE_UINT16: GstTensorDataType = 7;
52pub const GST_TENSOR_DATA_TYPE_UINT32: GstTensorDataType = 8;
53pub const GST_TENSOR_DATA_TYPE_UINT64: GstTensorDataType = 9;
54pub const GST_TENSOR_DATA_TYPE_FLOAT16: GstTensorDataType = 10;
55pub const GST_TENSOR_DATA_TYPE_FLOAT32: GstTensorDataType = 11;
56pub const GST_TENSOR_DATA_TYPE_FLOAT64: GstTensorDataType = 12;
57pub const GST_TENSOR_DATA_TYPE_BFLOAT16: GstTensorDataType = 13;
58#[cfg(feature = "v1_28")]
59#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
60pub const GST_TENSOR_DATA_TYPE_STRING: GstTensorDataType = 14;
61#[cfg(feature = "v1_28")]
62#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
63pub const GST_TENSOR_DATA_TYPE_BOOL: GstTensorDataType = 15;
64#[cfg(feature = "v1_28")]
65#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
66pub const GST_TENSOR_DATA_TYPE_COMPLEX64: GstTensorDataType = 16;
67#[cfg(feature = "v1_28")]
68#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
69pub const GST_TENSOR_DATA_TYPE_COMPLEX128: GstTensorDataType = 17;
70#[cfg(feature = "v1_28")]
71#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
72pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FN: GstTensorDataType = 18;
73#[cfg(feature = "v1_28")]
74#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
75pub const GST_TENSOR_DATA_TYPE_FLOAT8E4M3FNUZ: GstTensorDataType = 19;
76#[cfg(feature = "v1_28")]
77#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
78pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2: GstTensorDataType = 20;
79#[cfg(feature = "v1_28")]
80#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
81pub const GST_TENSOR_DATA_TYPE_FLOAT8E5M2FNUZ: GstTensorDataType = 21;
82
83pub type GstTensorDimOrder = c_int;
84pub const GST_TENSOR_DIM_ORDER_ROW_MAJOR: GstTensorDimOrder = 0;
85pub const GST_TENSOR_DIM_ORDER_COL_MAJOR: GstTensorDimOrder = 1;
86
87pub type GstTensorLayout = c_int;
88pub const GST_TENSOR_LAYOUT_CONTIGUOUS: GstTensorLayout = 0;
89
90pub const GST_CAPS_FEATURE_META_GST_ANALYTICS_BATCH_META: &[u8] = b"meta:GstAnalyticsBatchMeta\0";
92pub const GST_INF_RELATION_SPAN: c_int = -1;
93pub const GST_ANALYTICS_MTD_TYPE_ANY: c_int = 0;
94
95pub type GstAnalyticsRelTypes = c_uint;
97pub const GST_ANALYTICS_REL_TYPE_NONE: GstAnalyticsRelTypes = 0;
98pub const GST_ANALYTICS_REL_TYPE_IS_PART_OF: GstAnalyticsRelTypes = 2;
99pub const GST_ANALYTICS_REL_TYPE_CONTAIN: GstAnalyticsRelTypes = 4;
100pub const GST_ANALYTICS_REL_TYPE_RELATE_TO: GstAnalyticsRelTypes = 8;
101#[cfg(feature = "v1_26")]
102#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
103pub const GST_ANALYTICS_REL_TYPE_N_TO_N: GstAnalyticsRelTypes = 16;
104pub const GST_ANALYTICS_REL_TYPE_ANY: GstAnalyticsRelTypes = 2147483647;
105
106#[derive(Copy, Clone)]
108#[repr(C)]
109pub struct GstAnalyticsBatchMeta {
110 pub meta: gst::GstMeta,
111 pub streams: *mut GstAnalyticsBatchStream,
112 pub n_streams: size_t,
113}
114
115impl ::std::fmt::Debug for GstAnalyticsBatchMeta {
116 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
117 f.debug_struct(&format!("GstAnalyticsBatchMeta @ {self:p}"))
118 .field("meta", &self.meta)
119 .field("streams", &self.streams)
120 .field("n_streams", &self.n_streams)
121 .finish()
122 }
123}
124
125#[derive(Copy, Clone)]
126#[repr(C)]
127pub struct GstAnalyticsBatchStream {
128 pub index: c_uint,
129 pub sticky_events: *mut *mut gst::GstEvent,
130 pub n_sticky_events: size_t,
131 pub objects: *mut *mut gst::GstMiniObject,
132 pub n_objects: size_t,
133 pub padding: [gpointer; 4],
134}
135
136impl ::std::fmt::Debug for GstAnalyticsBatchStream {
137 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
138 f.debug_struct(&format!("GstAnalyticsBatchStream @ {self:p}"))
139 .field("index", &self.index)
140 .field("sticky_events", &self.sticky_events)
141 .field("n_sticky_events", &self.n_sticky_events)
142 .field("objects", &self.objects)
143 .field("n_objects", &self.n_objects)
144 .finish()
145 }
146}
147
148#[derive(Copy, Clone)]
149#[repr(C)]
150pub struct GstAnalyticsClsMtd {
151 pub id: c_uint,
152 pub meta: *mut GstAnalyticsRelationMeta,
153}
154
155impl ::std::fmt::Debug for GstAnalyticsClsMtd {
156 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
157 f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
158 .field("id", &self.id)
159 .field("meta", &self.meta)
160 .finish()
161 }
162}
163
164#[derive(Copy, Clone)]
165#[repr(C)]
166pub struct GstAnalyticsMtd {
167 pub id: c_uint,
168 pub meta: *mut GstAnalyticsRelationMeta,
169}
170
171impl ::std::fmt::Debug for GstAnalyticsMtd {
172 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
173 f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
174 .field("id", &self.id)
175 .field("meta", &self.meta)
176 .finish()
177 }
178}
179
180#[derive(Copy, Clone)]
181#[repr(C)]
182pub struct GstAnalyticsMtdImpl {
183 pub name: *const c_char,
184 pub mtd_meta_transform: Option<
185 unsafe extern "C" fn(
186 *mut gst::GstBuffer,
187 *mut GstAnalyticsMtd,
188 *mut gst::GstBuffer,
189 glib::GQuark,
190 gpointer,
191 ) -> gboolean,
192 >,
193 pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
194 pub _reserved: [gpointer; 19],
195}
196
197impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
198 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
199 f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
200 .field("name", &self.name)
201 .field("mtd_meta_transform", &self.mtd_meta_transform)
202 .field("mtd_meta_clear", &self.mtd_meta_clear)
203 .finish()
204 }
205}
206
207#[derive(Copy, Clone)]
208#[repr(C)]
209pub struct GstAnalyticsODMtd {
210 pub id: c_uint,
211 pub meta: *mut GstAnalyticsRelationMeta,
212}
213
214impl ::std::fmt::Debug for GstAnalyticsODMtd {
215 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
216 f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
217 .field("id", &self.id)
218 .field("meta", &self.meta)
219 .finish()
220 }
221}
222
223#[repr(C)]
224#[allow(dead_code)]
225pub struct _GstAnalyticsRelationMeta {
226 _data: [u8; 0],
227 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
228}
229
230pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
231
232#[derive(Copy, Clone)]
233#[repr(C)]
234pub struct GstAnalyticsRelationMetaInitParams {
235 pub initial_relation_order: size_t,
236 pub initial_buf_size: size_t,
237}
238
239impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
240 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
241 f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
242 .field("initial_relation_order", &self.initial_relation_order)
243 .field("initial_buf_size", &self.initial_buf_size)
244 .finish()
245 }
246}
247
248#[derive(Copy, Clone)]
249#[repr(C)]
250pub struct GstAnalyticsSegmentationMtd {
251 pub id: c_uint,
252 pub meta: *mut GstAnalyticsRelationMeta,
253}
254
255impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
256 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
257 f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
258 .field("id", &self.id)
259 .field("meta", &self.meta)
260 .finish()
261 }
262}
263
264#[derive(Copy, Clone)]
265#[repr(C)]
266pub struct GstAnalyticsTensorMtd {
267 pub id: c_uint,
268 pub meta: *mut GstAnalyticsRelationMeta,
269}
270
271impl ::std::fmt::Debug for GstAnalyticsTensorMtd {
272 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
273 f.debug_struct(&format!("GstAnalyticsTensorMtd @ {self:p}"))
274 .field("id", &self.id)
275 .field("meta", &self.meta)
276 .finish()
277 }
278}
279
280#[derive(Copy, Clone)]
281#[repr(C)]
282pub struct GstAnalyticsTrackingMtd {
283 pub id: c_uint,
284 pub meta: *mut GstAnalyticsRelationMeta,
285}
286
287impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
288 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
289 f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
290 .field("id", &self.id)
291 .field("meta", &self.meta)
292 .finish()
293 }
294}
295
296#[derive(Copy, Clone)]
297#[repr(C)]
298pub struct GstTensorMeta {
299 pub meta: gst::GstMeta,
300 pub num_tensors: size_t,
301 pub tensors: *mut *mut GstTensor,
302}
303
304impl ::std::fmt::Debug for GstTensorMeta {
305 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
306 f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
307 .field("meta", &self.meta)
308 .field("num_tensors", &self.num_tensors)
309 .field("tensors", &self.tensors)
310 .finish()
311 }
312}
313
314extern "C" {
315
316 #[cfg(feature = "v1_28")]
320 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
321 pub fn gst_analytics_batch_meta_get_info() -> *const gst::GstMetaInfo;
322
323 #[cfg(feature = "v1_28")]
327 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
328 pub fn gst_analytics_batch_stream_get_caps(
329 stream: *mut GstAnalyticsBatchStream,
330 ) -> *mut gst::GstCaps;
331 #[cfg(feature = "v1_28")]
332 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
333 pub fn gst_analytics_batch_stream_get_segment(
334 stream: *mut GstAnalyticsBatchStream,
335 ) -> *const gst::GstSegment;
336 #[cfg(feature = "v1_28")]
337 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
338 pub fn gst_analytics_batch_stream_get_stream_id(
339 stream: *mut GstAnalyticsBatchStream,
340 ) -> *const c_char;
341
342 pub fn gst_analytics_cls_mtd_get_index_by_quark(
346 handle: *const GstAnalyticsClsMtd,
347 quark: glib::GQuark,
348 ) -> c_int;
349 pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
350 pub fn gst_analytics_cls_mtd_get_level(
351 handle: *const GstAnalyticsClsMtd,
352 index: size_t,
353 ) -> c_float;
354 pub fn gst_analytics_cls_mtd_get_quark(
355 handle: *const GstAnalyticsClsMtd,
356 index: size_t,
357 ) -> glib::GQuark;
358 pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
359
360 pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
364 pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
365 pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
366 pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
367
368 pub fn gst_analytics_od_mtd_get_confidence_lvl(
372 instance: *const GstAnalyticsODMtd,
373 loc_conf_lvl: *mut c_float,
374 ) -> gboolean;
375 pub fn gst_analytics_od_mtd_get_location(
376 instance: *const GstAnalyticsODMtd,
377 x: *mut c_int,
378 y: *mut c_int,
379 w: *mut c_int,
380 h: *mut c_int,
381 loc_conf_lvl: *mut c_float,
382 ) -> gboolean;
383 pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
384 #[cfg(feature = "v1_26")]
385 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
386 pub fn gst_analytics_od_mtd_get_oriented_location(
387 instance: *const GstAnalyticsODMtd,
388 x: *mut c_int,
389 y: *mut c_int,
390 w: *mut c_int,
391 h: *mut c_int,
392 r: *mut c_float,
393 loc_conf_lvl: *mut c_float,
394 ) -> gboolean;
395 pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
396
397 pub fn gst_analytics_relation_meta_add_cls_mtd(
401 instance: *mut GstAnalyticsRelationMeta,
402 length: size_t,
403 confidence_levels: *mut c_float,
404 class_quarks: *mut glib::GQuark,
405 cls_mtd: *mut GstAnalyticsClsMtd,
406 ) -> gboolean;
407 pub fn gst_analytics_relation_meta_add_mtd(
408 meta: *mut GstAnalyticsRelationMeta,
409 impl_: *const GstAnalyticsMtdImpl,
410 size: size_t,
411 rlt_mtd: *mut GstAnalyticsMtd,
412 ) -> gpointer;
413 pub fn gst_analytics_relation_meta_add_od_mtd(
414 instance: *mut GstAnalyticsRelationMeta,
415 type_: glib::GQuark,
416 x: c_int,
417 y: c_int,
418 w: c_int,
419 h: c_int,
420 loc_conf_lvl: c_float,
421 od_mtd: *mut GstAnalyticsODMtd,
422 ) -> gboolean;
423 pub fn gst_analytics_relation_meta_add_one_cls_mtd(
424 instance: *mut GstAnalyticsRelationMeta,
425 confidence_level: c_float,
426 class_quark: glib::GQuark,
427 cls_mtd: *mut GstAnalyticsClsMtd,
428 ) -> gboolean;
429 #[cfg(feature = "v1_26")]
430 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
431 pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
432 instance: *mut GstAnalyticsRelationMeta,
433 type_: glib::GQuark,
434 x: c_int,
435 y: c_int,
436 w: c_int,
437 h: c_int,
438 r: c_float,
439 loc_conf_lvl: c_float,
440 od_mtd: *mut GstAnalyticsODMtd,
441 ) -> gboolean;
442 #[cfg(feature = "v1_26")]
443 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
444 pub fn gst_analytics_relation_meta_add_segmentation_mtd(
445 instance: *mut GstAnalyticsRelationMeta,
446 buffer: *mut gst::GstBuffer,
447 segmentation_type: GstSegmentationType,
448 region_count: size_t,
449 region_ids: *mut c_uint,
450 masks_loc_x: c_int,
451 masks_loc_y: c_int,
452 masks_loc_w: c_uint,
453 masks_loc_h: c_uint,
454 segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
455 ) -> gboolean;
456 #[cfg(feature = "v1_28")]
457 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
458 pub fn gst_analytics_relation_meta_add_tensor_mtd(
459 instance: *mut GstAnalyticsRelationMeta,
460 num_dims: size_t,
461 tensor_mtd: *mut GstAnalyticsTensorMtd,
462 ) -> gboolean;
463 #[cfg(feature = "v1_28")]
464 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
465 pub fn gst_analytics_relation_meta_add_tensor_mtd_simple(
466 instance: *mut GstAnalyticsRelationMeta,
467 id: glib::GQuark,
468 data_type: GstTensorDataType,
469 data: *mut gst::GstBuffer,
470 dims_order: GstTensorDimOrder,
471 num_dims: size_t,
472 dims: *mut size_t,
473 tensor_mtd: *mut GstAnalyticsTensorMtd,
474 ) -> gboolean;
475 pub fn gst_analytics_relation_meta_add_tracking_mtd(
476 instance: *mut GstAnalyticsRelationMeta,
477 tracking_id: u64,
478 tracking_first_seen: gst::GstClockTime,
479 trk_mtd: *mut GstAnalyticsTrackingMtd,
480 ) -> gboolean;
481 pub fn gst_analytics_relation_meta_exist(
482 rmeta: *const GstAnalyticsRelationMeta,
483 an_meta_first_id: c_uint,
484 an_meta_second_id: c_uint,
485 max_relation_span: c_int,
486 cond_types: GstAnalyticsRelTypes,
487 relations_path: *mut *mut glib::GArray,
488 ) -> gboolean;
489 pub fn gst_analytics_relation_meta_get_cls_mtd(
490 meta: *mut GstAnalyticsRelationMeta,
491 an_meta_id: c_uint,
492 rlt: *mut GstAnalyticsClsMtd,
493 ) -> gboolean;
494 pub fn gst_analytics_relation_meta_get_direct_related(
495 meta: *mut GstAnalyticsRelationMeta,
496 an_meta_id: c_uint,
497 relation_type: GstAnalyticsRelTypes,
498 type_: GstAnalyticsMtdType,
499 state: *mut gpointer,
500 rlt_mtd: *mut GstAnalyticsMtd,
501 ) -> gboolean;
502 pub fn gst_analytics_relation_meta_get_mtd(
503 meta: *mut GstAnalyticsRelationMeta,
504 an_meta_id: c_uint,
505 type_: GstAnalyticsMtdType,
506 rlt: *mut GstAnalyticsMtd,
507 ) -> gboolean;
508 pub fn gst_analytics_relation_meta_get_mtd_data(
509 meta: *const GstAnalyticsRelationMeta,
510 an_meta_id: c_uint,
511 ) -> gpointer;
512 pub fn gst_analytics_relation_meta_get_od_mtd(
513 meta: *mut GstAnalyticsRelationMeta,
514 an_meta_id: c_uint,
515 rlt: *mut GstAnalyticsODMtd,
516 ) -> gboolean;
517 pub fn gst_analytics_relation_meta_get_relation(
518 meta: *const GstAnalyticsRelationMeta,
519 an_meta_first_id: c_uint,
520 an_meta_second_id: c_uint,
521 ) -> GstAnalyticsRelTypes;
522 #[cfg(feature = "v1_26")]
523 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
524 pub fn gst_analytics_relation_meta_get_segmentation_mtd(
525 meta: *mut GstAnalyticsRelationMeta,
526 an_meta_id: c_uint,
527 rlt: *mut GstAnalyticsSegmentationMtd,
528 ) -> gboolean;
529 #[cfg(feature = "v1_28")]
530 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
531 pub fn gst_analytics_relation_meta_get_tensor_mtd(
532 meta: *mut GstAnalyticsRelationMeta,
533 an_meta_id: c_uint,
534 rlt: *mut GstAnalyticsTensorMtd,
535 ) -> gboolean;
536 pub fn gst_analytics_relation_meta_get_tracking_mtd(
537 meta: *mut GstAnalyticsRelationMeta,
538 an_meta_id: c_uint,
539 rlt: *mut GstAnalyticsTrackingMtd,
540 ) -> gboolean;
541 pub fn gst_analytics_relation_meta_iterate(
542 meta: *mut GstAnalyticsRelationMeta,
543 state: *mut gpointer,
544 type_: GstAnalyticsMtdType,
545 rlt_mtd: *mut GstAnalyticsMtd,
546 ) -> gboolean;
547 pub fn gst_analytics_relation_meta_set_relation(
548 meta: *mut GstAnalyticsRelationMeta,
549 type_: GstAnalyticsRelTypes,
550 an_meta_first_id: c_uint,
551 an_meta_second_id: c_uint,
552 ) -> gboolean;
553 pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
554
555 #[cfg(feature = "v1_26")]
559 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
560 pub fn gst_analytics_segmentation_mtd_get_mask(
561 handle: *const GstAnalyticsSegmentationMtd,
562 masks_loc_x: *mut c_int,
563 masks_loc_y: *mut c_int,
564 masks_loc_w: *mut c_uint,
565 masks_loc_h: *mut c_uint,
566 ) -> *mut gst::GstBuffer;
567 #[cfg(feature = "v1_26")]
568 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
569 pub fn gst_analytics_segmentation_mtd_get_region_count(
570 handle: *const GstAnalyticsSegmentationMtd,
571 ) -> size_t;
572 #[cfg(feature = "v1_26")]
573 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
574 pub fn gst_analytics_segmentation_mtd_get_region_id(
575 handle: *const GstAnalyticsSegmentationMtd,
576 index: size_t,
577 ) -> c_uint;
578 #[cfg(feature = "v1_26")]
579 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
580 pub fn gst_analytics_segmentation_mtd_get_region_index(
581 handle: *const GstAnalyticsSegmentationMtd,
582 index: *mut size_t,
583 id: c_uint,
584 ) -> gboolean;
585 #[cfg(feature = "v1_26")]
586 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
587 pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
588
589 #[cfg(feature = "v1_28")]
593 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
594 pub fn gst_analytics_tensor_mtd_get_tensor(
595 instance: *const GstAnalyticsTensorMtd,
596 ) -> *mut GstTensor;
597 #[cfg(feature = "v1_28")]
598 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
599 pub fn gst_analytics_tensor_mtd_get_mtd_type() -> GstAnalyticsMtdType;
600
601 pub fn gst_analytics_tracking_mtd_get_info(
605 instance: *const GstAnalyticsTrackingMtd,
606 tracking_id: *mut u64,
607 tracking_first_seen: *mut gst::GstClockTime,
608 tracking_last_seen: *mut gst::GstClockTime,
609 tracking_lost: *mut gboolean,
610 ) -> gboolean;
611 pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
612 pub fn gst_analytics_tracking_mtd_update_last_seen(
613 instance: *mut GstAnalyticsTrackingMtd,
614 last_seen: gst::GstClockTime,
615 ) -> gboolean;
616 pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
617
618 #[cfg(feature = "v1_26")]
622 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
623 pub fn gst_tensor_get_type() -> GType;
624 #[cfg(feature = "v1_26")]
625 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
626 pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
627 #[cfg(feature = "v1_26")]
628 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
629 pub fn gst_tensor_new_simple(
630 id: glib::GQuark,
631 data_type: GstTensorDataType,
632 data: *mut gst::GstBuffer,
633 dims_order: GstTensorDimOrder,
634 num_dims: size_t,
635 dims: *mut size_t,
636 ) -> *mut GstTensor;
637 #[cfg(feature = "v1_28")]
638 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
639 pub fn gst_tensor_check_type(
640 tensor: *const GstTensor,
641 data_type: GstTensorDataType,
642 order: GstTensorDimOrder,
643 num_dims: size_t,
644 dims: *const size_t,
645 ) -> gboolean;
646 #[cfg(feature = "v1_26")]
647 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
648 pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
649 #[cfg(feature = "v1_26")]
650 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
651 pub fn gst_tensor_free(tensor: *mut GstTensor);
652 #[cfg(feature = "v1_26")]
653 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
654 pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
655 #[cfg(feature = "v1_28")]
656 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
657 pub fn gst_tensor_set_simple(
658 tensor: *mut GstTensor,
659 id: glib::GQuark,
660 data_type: GstTensorDataType,
661 data: *mut gst::GstBuffer,
662 dims_order: GstTensorDimOrder,
663 num_dims: size_t,
664 dims: *mut size_t,
665 ) -> gboolean;
666 #[cfg(feature = "v1_28")]
667 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
668 pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
669
670 #[cfg(feature = "v1_26")]
674 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
675 pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
676 #[cfg(feature = "v1_28")]
677 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
678 pub fn gst_tensor_meta_get_by_id(
679 tmeta: *mut GstTensorMeta,
680 id: glib::GQuark,
681 ) -> *const GstTensor;
682 #[cfg(feature = "v1_26")]
683 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
684 pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
685 #[cfg(feature = "v1_28")]
686 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
687 pub fn gst_tensor_meta_get_typed_tensor(
688 tmeta: *mut GstTensorMeta,
689 tensor_id: glib::GQuark,
690 data_type: GstTensorDataType,
691 order: GstTensorDimOrder,
692 num_dims: size_t,
693 dims: *const size_t,
694 ) -> *const GstTensor;
695 #[cfg(feature = "v1_26")]
696 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
697 pub fn gst_tensor_meta_set(
698 tmeta: *mut GstTensorMeta,
699 num_tensors: c_uint,
700 tensors: *mut *mut GstTensor,
701 );
702 #[cfg(feature = "v1_26")]
703 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
704 pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
705
706 #[cfg(feature = "v1_28")]
710 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
711 pub fn gst_analytics_batch_meta_api_get_type() -> GType;
712 #[cfg(feature = "v1_28")]
713 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
714 pub fn gst_buffer_add_analytics_batch_meta(
715 buffer: *mut gst::GstBuffer,
716 ) -> *mut GstAnalyticsBatchMeta;
717 pub fn gst_buffer_add_analytics_relation_meta(
718 buffer: *mut gst::GstBuffer,
719 ) -> *mut GstAnalyticsRelationMeta;
720 pub fn gst_buffer_add_analytics_relation_meta_full(
721 buffer: *mut gst::GstBuffer,
722 init_params: *mut GstAnalyticsRelationMetaInitParams,
723 ) -> *mut GstAnalyticsRelationMeta;
724 #[cfg(feature = "v1_26")]
725 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
726 pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
727 #[cfg(feature = "v1_28")]
728 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
729 pub fn gst_buffer_get_analytics_batch_meta(
730 buffer: *mut gst::GstBuffer,
731 ) -> *mut GstAnalyticsBatchMeta;
732 pub fn gst_buffer_get_analytics_relation_meta(
733 buffer: *mut gst::GstBuffer,
734 ) -> *mut GstAnalyticsRelationMeta;
735 #[cfg(feature = "v1_26")]
736 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
737 pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
738 #[cfg(feature = "v1_28")]
739 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
740 pub fn gst_analytics_image_util_iou_float(
741 bb1_x: c_float,
742 bb1_y: c_float,
743 bb1_w: c_float,
744 bb1_h: c_float,
745 bb2_x: c_float,
746 bb2_y: c_float,
747 bb2_w: c_float,
748 bb2_h: c_float,
749 ) -> c_float;
750 #[cfg(feature = "v1_28")]
751 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
752 pub fn gst_analytics_image_util_iou_int(
753 bb1_x: c_int,
754 bb1_y: c_int,
755 bb1_w: c_int,
756 bb1_h: c_int,
757 bb2_x: c_int,
758 bb2_y: c_int,
759 bb2_w: c_int,
760 bb2_h: c_int,
761 ) -> c_float;
762 pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
763 pub fn gst_analytics_relation_meta_api_get_type() -> GType;
764 #[cfg(feature = "v1_26")]
765 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
766 pub fn gst_tensor_meta_api_get_type() -> GType;
767
768}