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 GstAnalyticsBatchBuffer {
110 pub sticky_events: *mut *mut gst::GstEvent,
111 pub n_sticky_events: size_t,
112 pub serialized_events: *mut *mut gst::GstEvent,
113 pub n_serialized_events: size_t,
114 pub buffer: *mut gst::GstBuffer,
115 pub buffer_list: *mut gst::GstBufferList,
116 pub padding: [gpointer; 4],
117}
118
119impl ::std::fmt::Debug for GstAnalyticsBatchBuffer {
120 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
121 f.debug_struct(&format!("GstAnalyticsBatchBuffer @ {self:p}"))
122 .field("sticky_events", &self.sticky_events)
123 .field("n_sticky_events", &self.n_sticky_events)
124 .field("serialized_events", &self.serialized_events)
125 .field("n_serialized_events", &self.n_serialized_events)
126 .field("buffer", &self.buffer)
127 .field("buffer_list", &self.buffer_list)
128 .finish()
129 }
130}
131
132#[derive(Copy, Clone)]
133#[repr(C)]
134pub struct GstAnalyticsBatchMeta {
135 pub meta: gst::GstMeta,
136 pub streams: *mut GstAnalyticsBatchStream,
137 pub n_streams: size_t,
138}
139
140impl ::std::fmt::Debug for GstAnalyticsBatchMeta {
141 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
142 f.debug_struct(&format!("GstAnalyticsBatchMeta @ {self:p}"))
143 .field("meta", &self.meta)
144 .field("streams", &self.streams)
145 .field("n_streams", &self.n_streams)
146 .finish()
147 }
148}
149
150#[derive(Copy, Clone)]
151#[repr(C)]
152pub struct GstAnalyticsBatchStream {
153 pub index: c_uint,
154 pub buffers: *mut GstAnalyticsBatchBuffer,
155 pub n_buffers: size_t,
156 pub padding: [gpointer; 4],
157}
158
159impl ::std::fmt::Debug for GstAnalyticsBatchStream {
160 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
161 f.debug_struct(&format!("GstAnalyticsBatchStream @ {self:p}"))
162 .field("index", &self.index)
163 .field("buffers", &self.buffers)
164 .field("n_buffers", &self.n_buffers)
165 .finish()
166 }
167}
168
169#[derive(Copy, Clone)]
170#[repr(C)]
171pub struct GstAnalyticsClsMtd {
172 pub id: c_uint,
173 pub meta: *mut GstAnalyticsRelationMeta,
174}
175
176impl ::std::fmt::Debug for GstAnalyticsClsMtd {
177 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
178 f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
179 .field("id", &self.id)
180 .field("meta", &self.meta)
181 .finish()
182 }
183}
184
185#[derive(Copy, Clone)]
186#[repr(C)]
187pub struct GstAnalyticsMtd {
188 pub id: c_uint,
189 pub meta: *mut GstAnalyticsRelationMeta,
190}
191
192impl ::std::fmt::Debug for GstAnalyticsMtd {
193 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
194 f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
195 .field("id", &self.id)
196 .field("meta", &self.meta)
197 .finish()
198 }
199}
200
201#[derive(Copy, Clone)]
202#[repr(C)]
203pub struct GstAnalyticsMtdImpl {
204 pub name: *const c_char,
205 pub mtd_meta_transform: Option<
206 unsafe extern "C" fn(
207 *mut gst::GstBuffer,
208 *mut GstAnalyticsMtd,
209 *mut gst::GstBuffer,
210 glib::GQuark,
211 gpointer,
212 ) -> gboolean,
213 >,
214 pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
215 pub _reserved: [gpointer; 19],
216}
217
218impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
219 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
220 f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
221 .field("name", &self.name)
222 .field("mtd_meta_transform", &self.mtd_meta_transform)
223 .field("mtd_meta_clear", &self.mtd_meta_clear)
224 .finish()
225 }
226}
227
228#[derive(Copy, Clone)]
229#[repr(C)]
230pub struct GstAnalyticsODMtd {
231 pub id: c_uint,
232 pub meta: *mut GstAnalyticsRelationMeta,
233}
234
235impl ::std::fmt::Debug for GstAnalyticsODMtd {
236 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
237 f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
238 .field("id", &self.id)
239 .field("meta", &self.meta)
240 .finish()
241 }
242}
243
244#[repr(C)]
245#[allow(dead_code)]
246pub struct _GstAnalyticsRelationMeta {
247 _data: [u8; 0],
248 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
249}
250
251pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
252
253#[derive(Copy, Clone)]
254#[repr(C)]
255pub struct GstAnalyticsRelationMetaInitParams {
256 pub initial_relation_order: size_t,
257 pub initial_buf_size: size_t,
258}
259
260impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
261 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
262 f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
263 .field("initial_relation_order", &self.initial_relation_order)
264 .field("initial_buf_size", &self.initial_buf_size)
265 .finish()
266 }
267}
268
269#[derive(Copy, Clone)]
270#[repr(C)]
271pub struct GstAnalyticsSegmentationMtd {
272 pub id: c_uint,
273 pub meta: *mut GstAnalyticsRelationMeta,
274}
275
276impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
277 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
278 f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
279 .field("id", &self.id)
280 .field("meta", &self.meta)
281 .finish()
282 }
283}
284
285#[derive(Copy, Clone)]
286#[repr(C)]
287pub struct GstAnalyticsTrackingMtd {
288 pub id: c_uint,
289 pub meta: *mut GstAnalyticsRelationMeta,
290}
291
292impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
293 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
294 f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
295 .field("id", &self.id)
296 .field("meta", &self.meta)
297 .finish()
298 }
299}
300
301#[derive(Copy, Clone)]
302#[repr(C)]
303pub struct GstTensorMeta {
304 pub meta: gst::GstMeta,
305 pub num_tensors: size_t,
306 pub tensors: *mut *mut GstTensor,
307}
308
309impl ::std::fmt::Debug for GstTensorMeta {
310 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
311 f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
312 .field("meta", &self.meta)
313 .field("num_tensors", &self.num_tensors)
314 .field("tensors", &self.tensors)
315 .finish()
316 }
317}
318
319extern "C" {
320
321 #[cfg(feature = "v1_28")]
325 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
326 pub fn gst_analytics_batch_buffer_get_caps(
327 buffer: *mut GstAnalyticsBatchBuffer,
328 ) -> *mut gst::GstCaps;
329 #[cfg(feature = "v1_28")]
330 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
331 pub fn gst_analytics_batch_buffer_get_segment(
332 buffer: *mut GstAnalyticsBatchBuffer,
333 ) -> *const gst::GstSegment;
334 #[cfg(feature = "v1_28")]
335 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
336 pub fn gst_analytics_batch_buffer_get_stream_id(
337 buffer: *mut GstAnalyticsBatchBuffer,
338 ) -> *const c_char;
339
340 #[cfg(feature = "v1_28")]
344 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
345 pub fn gst_analytics_batch_meta_get_info() -> *const gst::GstMetaInfo;
346
347 pub fn gst_analytics_cls_mtd_get_index_by_quark(
351 handle: *const GstAnalyticsClsMtd,
352 quark: glib::GQuark,
353 ) -> c_int;
354 pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
355 pub fn gst_analytics_cls_mtd_get_level(
356 handle: *const GstAnalyticsClsMtd,
357 index: size_t,
358 ) -> c_float;
359 pub fn gst_analytics_cls_mtd_get_quark(
360 handle: *const GstAnalyticsClsMtd,
361 index: size_t,
362 ) -> glib::GQuark;
363 pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
364
365 pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
369 pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
370 pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
371 pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
372
373 pub fn gst_analytics_od_mtd_get_confidence_lvl(
377 instance: *const GstAnalyticsODMtd,
378 loc_conf_lvl: *mut c_float,
379 ) -> gboolean;
380 pub fn gst_analytics_od_mtd_get_location(
381 instance: *const GstAnalyticsODMtd,
382 x: *mut c_int,
383 y: *mut c_int,
384 w: *mut c_int,
385 h: *mut c_int,
386 loc_conf_lvl: *mut c_float,
387 ) -> gboolean;
388 pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
389 #[cfg(feature = "v1_26")]
390 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
391 pub fn gst_analytics_od_mtd_get_oriented_location(
392 instance: *const GstAnalyticsODMtd,
393 x: *mut c_int,
394 y: *mut c_int,
395 w: *mut c_int,
396 h: *mut c_int,
397 r: *mut c_float,
398 loc_conf_lvl: *mut c_float,
399 ) -> gboolean;
400 pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
401
402 pub fn gst_analytics_relation_meta_add_cls_mtd(
406 instance: *mut GstAnalyticsRelationMeta,
407 length: size_t,
408 confidence_levels: *mut c_float,
409 class_quarks: *mut glib::GQuark,
410 cls_mtd: *mut GstAnalyticsClsMtd,
411 ) -> gboolean;
412 pub fn gst_analytics_relation_meta_add_mtd(
413 meta: *mut GstAnalyticsRelationMeta,
414 impl_: *const GstAnalyticsMtdImpl,
415 size: size_t,
416 rlt_mtd: *mut GstAnalyticsMtd,
417 ) -> gpointer;
418 pub fn gst_analytics_relation_meta_add_od_mtd(
419 instance: *mut GstAnalyticsRelationMeta,
420 type_: glib::GQuark,
421 x: c_int,
422 y: c_int,
423 w: c_int,
424 h: c_int,
425 loc_conf_lvl: c_float,
426 od_mtd: *mut GstAnalyticsODMtd,
427 ) -> gboolean;
428 pub fn gst_analytics_relation_meta_add_one_cls_mtd(
429 instance: *mut GstAnalyticsRelationMeta,
430 confidence_level: c_float,
431 class_quark: glib::GQuark,
432 cls_mtd: *mut GstAnalyticsClsMtd,
433 ) -> gboolean;
434 #[cfg(feature = "v1_26")]
435 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
436 pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
437 instance: *mut GstAnalyticsRelationMeta,
438 type_: glib::GQuark,
439 x: c_int,
440 y: c_int,
441 w: c_int,
442 h: c_int,
443 r: c_float,
444 loc_conf_lvl: c_float,
445 od_mtd: *mut GstAnalyticsODMtd,
446 ) -> gboolean;
447 #[cfg(feature = "v1_26")]
448 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
449 pub fn gst_analytics_relation_meta_add_segmentation_mtd(
450 instance: *mut GstAnalyticsRelationMeta,
451 buffer: *mut gst::GstBuffer,
452 segmentation_type: GstSegmentationType,
453 region_count: size_t,
454 region_ids: *mut c_uint,
455 masks_loc_x: c_int,
456 masks_loc_y: c_int,
457 masks_loc_w: c_uint,
458 masks_loc_h: c_uint,
459 segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
460 ) -> gboolean;
461 pub fn gst_analytics_relation_meta_add_tracking_mtd(
462 instance: *mut GstAnalyticsRelationMeta,
463 tracking_id: u64,
464 tracking_first_seen: gst::GstClockTime,
465 trk_mtd: *mut GstAnalyticsTrackingMtd,
466 ) -> gboolean;
467 pub fn gst_analytics_relation_meta_exist(
468 rmeta: *const GstAnalyticsRelationMeta,
469 an_meta_first_id: c_uint,
470 an_meta_second_id: c_uint,
471 max_relation_span: c_int,
472 cond_types: GstAnalyticsRelTypes,
473 relations_path: *mut *mut glib::GArray,
474 ) -> gboolean;
475 pub fn gst_analytics_relation_meta_get_cls_mtd(
476 meta: *mut GstAnalyticsRelationMeta,
477 an_meta_id: c_uint,
478 rlt: *mut GstAnalyticsClsMtd,
479 ) -> gboolean;
480 pub fn gst_analytics_relation_meta_get_direct_related(
481 meta: *mut GstAnalyticsRelationMeta,
482 an_meta_id: c_uint,
483 relation_type: GstAnalyticsRelTypes,
484 type_: GstAnalyticsMtdType,
485 state: *mut gpointer,
486 rlt_mtd: *mut GstAnalyticsMtd,
487 ) -> gboolean;
488 pub fn gst_analytics_relation_meta_get_mtd(
489 meta: *mut GstAnalyticsRelationMeta,
490 an_meta_id: c_uint,
491 type_: GstAnalyticsMtdType,
492 rlt: *mut GstAnalyticsMtd,
493 ) -> gboolean;
494 pub fn gst_analytics_relation_meta_get_mtd_data(
495 meta: *const GstAnalyticsRelationMeta,
496 an_meta_id: c_uint,
497 ) -> gpointer;
498 pub fn gst_analytics_relation_meta_get_od_mtd(
499 meta: *mut GstAnalyticsRelationMeta,
500 an_meta_id: c_uint,
501 rlt: *mut GstAnalyticsODMtd,
502 ) -> gboolean;
503 pub fn gst_analytics_relation_meta_get_relation(
504 meta: *const GstAnalyticsRelationMeta,
505 an_meta_first_id: c_uint,
506 an_meta_second_id: c_uint,
507 ) -> GstAnalyticsRelTypes;
508 #[cfg(feature = "v1_26")]
509 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
510 pub fn gst_analytics_relation_meta_get_segmentation_mtd(
511 meta: *mut GstAnalyticsRelationMeta,
512 an_meta_id: c_uint,
513 rlt: *mut GstAnalyticsSegmentationMtd,
514 ) -> gboolean;
515 pub fn gst_analytics_relation_meta_get_tracking_mtd(
516 meta: *mut GstAnalyticsRelationMeta,
517 an_meta_id: c_uint,
518 rlt: *mut GstAnalyticsTrackingMtd,
519 ) -> gboolean;
520 pub fn gst_analytics_relation_meta_iterate(
521 meta: *mut GstAnalyticsRelationMeta,
522 state: *mut gpointer,
523 type_: GstAnalyticsMtdType,
524 rlt_mtd: *mut GstAnalyticsMtd,
525 ) -> gboolean;
526 pub fn gst_analytics_relation_meta_set_relation(
527 meta: *mut GstAnalyticsRelationMeta,
528 type_: GstAnalyticsRelTypes,
529 an_meta_first_id: c_uint,
530 an_meta_second_id: c_uint,
531 ) -> gboolean;
532 pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
533
534 #[cfg(feature = "v1_26")]
538 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
539 pub fn gst_analytics_segmentation_mtd_get_mask(
540 handle: *const GstAnalyticsSegmentationMtd,
541 masks_loc_x: *mut c_int,
542 masks_loc_y: *mut c_int,
543 masks_loc_w: *mut c_uint,
544 masks_loc_h: *mut c_uint,
545 ) -> *mut gst::GstBuffer;
546 #[cfg(feature = "v1_26")]
547 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
548 pub fn gst_analytics_segmentation_mtd_get_region_count(
549 handle: *const GstAnalyticsSegmentationMtd,
550 ) -> size_t;
551 #[cfg(feature = "v1_26")]
552 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
553 pub fn gst_analytics_segmentation_mtd_get_region_id(
554 handle: *const GstAnalyticsSegmentationMtd,
555 index: size_t,
556 ) -> c_uint;
557 #[cfg(feature = "v1_26")]
558 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
559 pub fn gst_analytics_segmentation_mtd_get_region_index(
560 handle: *const GstAnalyticsSegmentationMtd,
561 index: *mut size_t,
562 id: c_uint,
563 ) -> gboolean;
564 #[cfg(feature = "v1_26")]
565 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
566 pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
567
568 pub fn gst_analytics_tracking_mtd_get_info(
572 instance: *const GstAnalyticsTrackingMtd,
573 tracking_id: *mut u64,
574 tracking_first_seen: *mut gst::GstClockTime,
575 tracking_last_seen: *mut gst::GstClockTime,
576 tracking_lost: *mut gboolean,
577 ) -> gboolean;
578 pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
579 pub fn gst_analytics_tracking_mtd_update_last_seen(
580 instance: *mut GstAnalyticsTrackingMtd,
581 last_seen: gst::GstClockTime,
582 ) -> gboolean;
583 pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
584
585 #[cfg(feature = "v1_26")]
589 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
590 pub fn gst_tensor_get_type() -> GType;
591 #[cfg(feature = "v1_26")]
592 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
593 pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
594 #[cfg(feature = "v1_26")]
595 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
596 pub fn gst_tensor_new_simple(
597 id: glib::GQuark,
598 data_type: GstTensorDataType,
599 data: *mut gst::GstBuffer,
600 dims_order: GstTensorDimOrder,
601 num_dims: size_t,
602 dims: *mut size_t,
603 ) -> *mut GstTensor;
604 #[cfg(feature = "v1_28")]
605 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
606 pub fn gst_tensor_check_type(
607 tensor: *const GstTensor,
608 order: GstTensorDimOrder,
609 num_dims: size_t,
610 data_type: GstTensorDataType,
611 data: *mut gst::GstBuffer,
612 ) -> gboolean;
613 #[cfg(feature = "v1_26")]
614 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
615 pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
616 #[cfg(feature = "v1_26")]
617 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
618 pub fn gst_tensor_free(tensor: *mut GstTensor);
619 #[cfg(feature = "v1_26")]
620 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
621 pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
622 #[cfg(feature = "v1_28")]
623 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
624 pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
625
626 #[cfg(feature = "v1_26")]
630 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
631 pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
632 #[cfg(feature = "v1_28")]
633 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
634 pub fn gst_tensor_meta_get_by_id(
635 tmeta: *mut GstTensorMeta,
636 id: glib::GQuark,
637 ) -> *const GstTensor;
638 #[cfg(feature = "v1_26")]
639 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
640 pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
641 #[cfg(feature = "v1_28")]
642 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
643 pub fn gst_tensor_meta_get_typed_tensor(
644 tmeta: *mut GstTensorMeta,
645 tensor_id: glib::GQuark,
646 order: GstTensorDimOrder,
647 num_dims: size_t,
648 data_type: GstTensorDataType,
649 data: *mut gst::GstBuffer,
650 ) -> *const GstTensor;
651 #[cfg(feature = "v1_26")]
652 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
653 pub fn gst_tensor_meta_set(
654 tmeta: *mut GstTensorMeta,
655 num_tensors: c_uint,
656 tensors: *mut *mut GstTensor,
657 );
658 #[cfg(feature = "v1_26")]
659 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
660 pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
661
662 #[cfg(feature = "v1_28")]
666 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
667 pub fn gst_analytics_batch_meta_api_get_type() -> GType;
668 #[cfg(feature = "v1_28")]
669 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
670 pub fn gst_buffer_add_analytics_batch_meta(
671 buffer: *mut gst::GstBuffer,
672 ) -> *mut GstAnalyticsBatchMeta;
673 pub fn gst_buffer_add_analytics_relation_meta(
674 buffer: *mut gst::GstBuffer,
675 ) -> *mut GstAnalyticsRelationMeta;
676 pub fn gst_buffer_add_analytics_relation_meta_full(
677 buffer: *mut gst::GstBuffer,
678 init_params: *mut GstAnalyticsRelationMetaInitParams,
679 ) -> *mut GstAnalyticsRelationMeta;
680 #[cfg(feature = "v1_26")]
681 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
682 pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
683 #[cfg(feature = "v1_28")]
684 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
685 pub fn gst_buffer_get_analytics_batch_meta(
686 buffer: *mut gst::GstBuffer,
687 ) -> *mut GstAnalyticsBatchMeta;
688 pub fn gst_buffer_get_analytics_relation_meta(
689 buffer: *mut gst::GstBuffer,
690 ) -> *mut GstAnalyticsRelationMeta;
691 #[cfg(feature = "v1_26")]
692 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
693 pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
694 #[cfg(feature = "v1_28")]
695 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
696 pub fn gst_analytics_image_util_iou_float(
697 bb1_x: c_float,
698 bb1_y: c_float,
699 bb1_w: c_float,
700 bb1_h: c_float,
701 bb2_x: c_float,
702 bb2_y: c_float,
703 bb2_w: c_float,
704 bb2_h: c_float,
705 ) -> c_float;
706 #[cfg(feature = "v1_28")]
707 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
708 pub fn gst_analytics_image_util_iou_int(
709 bb1_x: c_int,
710 bb1_y: c_int,
711 bb1_w: c_int,
712 bb1_h: c_int,
713 bb2_x: c_int,
714 bb2_y: c_int,
715 bb2_w: c_int,
716 bb2_h: c_int,
717 ) -> c_float;
718 pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
719 pub fn gst_analytics_relation_meta_api_get_type() -> GType;
720 #[cfg(feature = "v1_26")]
721 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
722 pub fn gst_tensor_meta_api_get_type() -> GType;
723
724}