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_INF_RELATION_SPAN: c_int = -1;
92pub const GST_ANALYTICS_MTD_TYPE_ANY: c_int = 0;
93
94pub type GstAnalyticsRelTypes = c_uint;
96pub const GST_ANALYTICS_REL_TYPE_NONE: GstAnalyticsRelTypes = 0;
97pub const GST_ANALYTICS_REL_TYPE_IS_PART_OF: GstAnalyticsRelTypes = 2;
98pub const GST_ANALYTICS_REL_TYPE_CONTAIN: GstAnalyticsRelTypes = 4;
99pub const GST_ANALYTICS_REL_TYPE_RELATE_TO: GstAnalyticsRelTypes = 8;
100#[cfg(feature = "v1_26")]
101#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
102pub const GST_ANALYTICS_REL_TYPE_N_TO_N: GstAnalyticsRelTypes = 16;
103pub const GST_ANALYTICS_REL_TYPE_ANY: GstAnalyticsRelTypes = 2147483647;
104
105#[derive(Copy, Clone)]
107#[repr(C)]
108pub struct GstAnalyticsClsMtd {
109 pub id: c_uint,
110 pub meta: *mut GstAnalyticsRelationMeta,
111}
112
113impl ::std::fmt::Debug for GstAnalyticsClsMtd {
114 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
115 f.debug_struct(&format!("GstAnalyticsClsMtd @ {self:p}"))
116 .field("id", &self.id)
117 .field("meta", &self.meta)
118 .finish()
119 }
120}
121
122#[derive(Copy, Clone)]
123#[repr(C)]
124pub struct GstAnalyticsMtd {
125 pub id: c_uint,
126 pub meta: *mut GstAnalyticsRelationMeta,
127}
128
129impl ::std::fmt::Debug for GstAnalyticsMtd {
130 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
131 f.debug_struct(&format!("GstAnalyticsMtd @ {self:p}"))
132 .field("id", &self.id)
133 .field("meta", &self.meta)
134 .finish()
135 }
136}
137
138#[derive(Copy, Clone)]
139#[repr(C)]
140pub struct GstAnalyticsMtdImpl {
141 pub name: *const c_char,
142 pub mtd_meta_transform: Option<
143 unsafe extern "C" fn(
144 *mut gst::GstBuffer,
145 *mut GstAnalyticsMtd,
146 *mut gst::GstBuffer,
147 glib::GQuark,
148 gpointer,
149 ) -> gboolean,
150 >,
151 pub mtd_meta_clear: Option<unsafe extern "C" fn(*mut gst::GstBuffer, *mut GstAnalyticsMtd)>,
152 pub _reserved: [gpointer; 19],
153}
154
155impl ::std::fmt::Debug for GstAnalyticsMtdImpl {
156 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
157 f.debug_struct(&format!("GstAnalyticsMtdImpl @ {self:p}"))
158 .field("name", &self.name)
159 .field("mtd_meta_transform", &self.mtd_meta_transform)
160 .field("mtd_meta_clear", &self.mtd_meta_clear)
161 .finish()
162 }
163}
164
165#[derive(Copy, Clone)]
166#[repr(C)]
167pub struct GstAnalyticsODMtd {
168 pub id: c_uint,
169 pub meta: *mut GstAnalyticsRelationMeta,
170}
171
172impl ::std::fmt::Debug for GstAnalyticsODMtd {
173 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
174 f.debug_struct(&format!("GstAnalyticsODMtd @ {self:p}"))
175 .field("id", &self.id)
176 .field("meta", &self.meta)
177 .finish()
178 }
179}
180
181#[repr(C)]
182#[allow(dead_code)]
183pub struct _GstAnalyticsRelationMeta {
184 _data: [u8; 0],
185 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
186}
187
188pub type GstAnalyticsRelationMeta = _GstAnalyticsRelationMeta;
189
190#[derive(Copy, Clone)]
191#[repr(C)]
192pub struct GstAnalyticsRelationMetaInitParams {
193 pub initial_relation_order: size_t,
194 pub initial_buf_size: size_t,
195}
196
197impl ::std::fmt::Debug for GstAnalyticsRelationMetaInitParams {
198 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
199 f.debug_struct(&format!("GstAnalyticsRelationMetaInitParams @ {self:p}"))
200 .field("initial_relation_order", &self.initial_relation_order)
201 .field("initial_buf_size", &self.initial_buf_size)
202 .finish()
203 }
204}
205
206#[derive(Copy, Clone)]
207#[repr(C)]
208pub struct GstAnalyticsSegmentationMtd {
209 pub id: c_uint,
210 pub meta: *mut GstAnalyticsRelationMeta,
211}
212
213impl ::std::fmt::Debug for GstAnalyticsSegmentationMtd {
214 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
215 f.debug_struct(&format!("GstAnalyticsSegmentationMtd @ {self:p}"))
216 .field("id", &self.id)
217 .field("meta", &self.meta)
218 .finish()
219 }
220}
221
222#[derive(Copy, Clone)]
223#[repr(C)]
224pub struct GstAnalyticsTrackingMtd {
225 pub id: c_uint,
226 pub meta: *mut GstAnalyticsRelationMeta,
227}
228
229impl ::std::fmt::Debug for GstAnalyticsTrackingMtd {
230 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
231 f.debug_struct(&format!("GstAnalyticsTrackingMtd @ {self:p}"))
232 .field("id", &self.id)
233 .field("meta", &self.meta)
234 .finish()
235 }
236}
237
238#[derive(Copy, Clone)]
239#[repr(C)]
240pub struct GstTensorMeta {
241 pub meta: gst::GstMeta,
242 pub num_tensors: size_t,
243 pub tensors: *mut *mut GstTensor,
244}
245
246impl ::std::fmt::Debug for GstTensorMeta {
247 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
248 f.debug_struct(&format!("GstTensorMeta @ {self:p}"))
249 .field("meta", &self.meta)
250 .field("num_tensors", &self.num_tensors)
251 .field("tensors", &self.tensors)
252 .finish()
253 }
254}
255
256extern "C" {
257
258 pub fn gst_analytics_cls_mtd_get_index_by_quark(
262 handle: *const GstAnalyticsClsMtd,
263 quark: glib::GQuark,
264 ) -> c_int;
265 pub fn gst_analytics_cls_mtd_get_length(handle: *const GstAnalyticsClsMtd) -> size_t;
266 pub fn gst_analytics_cls_mtd_get_level(
267 handle: *const GstAnalyticsClsMtd,
268 index: size_t,
269 ) -> c_float;
270 pub fn gst_analytics_cls_mtd_get_quark(
271 handle: *const GstAnalyticsClsMtd,
272 index: size_t,
273 ) -> glib::GQuark;
274 pub fn gst_analytics_cls_mtd_get_mtd_type() -> GstAnalyticsMtdType;
275
276 pub fn gst_analytics_mtd_get_id(instance: *const GstAnalyticsMtd) -> c_uint;
280 pub fn gst_analytics_mtd_get_mtd_type(instance: *const GstAnalyticsMtd) -> GstAnalyticsMtdType;
281 pub fn gst_analytics_mtd_get_size(instance: *const GstAnalyticsMtd) -> size_t;
282 pub fn gst_analytics_mtd_type_get_name(type_: GstAnalyticsMtdType) -> *const c_char;
283
284 pub fn gst_analytics_od_mtd_get_confidence_lvl(
288 instance: *const GstAnalyticsODMtd,
289 loc_conf_lvl: *mut c_float,
290 ) -> gboolean;
291 pub fn gst_analytics_od_mtd_get_location(
292 instance: *const GstAnalyticsODMtd,
293 x: *mut c_int,
294 y: *mut c_int,
295 w: *mut c_int,
296 h: *mut c_int,
297 loc_conf_lvl: *mut c_float,
298 ) -> gboolean;
299 pub fn gst_analytics_od_mtd_get_obj_type(handle: *const GstAnalyticsODMtd) -> glib::GQuark;
300 #[cfg(feature = "v1_26")]
301 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
302 pub fn gst_analytics_od_mtd_get_oriented_location(
303 instance: *const GstAnalyticsODMtd,
304 x: *mut c_int,
305 y: *mut c_int,
306 w: *mut c_int,
307 h: *mut c_int,
308 r: *mut c_float,
309 loc_conf_lvl: *mut c_float,
310 ) -> gboolean;
311 pub fn gst_analytics_od_mtd_get_mtd_type() -> GstAnalyticsMtdType;
312
313 pub fn gst_analytics_relation_meta_add_cls_mtd(
317 instance: *mut GstAnalyticsRelationMeta,
318 length: size_t,
319 confidence_levels: *mut c_float,
320 class_quarks: *mut glib::GQuark,
321 cls_mtd: *mut GstAnalyticsClsMtd,
322 ) -> gboolean;
323 pub fn gst_analytics_relation_meta_add_mtd(
324 meta: *mut GstAnalyticsRelationMeta,
325 impl_: *const GstAnalyticsMtdImpl,
326 size: size_t,
327 rlt_mtd: *mut GstAnalyticsMtd,
328 ) -> gpointer;
329 pub fn gst_analytics_relation_meta_add_od_mtd(
330 instance: *mut GstAnalyticsRelationMeta,
331 type_: glib::GQuark,
332 x: c_int,
333 y: c_int,
334 w: c_int,
335 h: c_int,
336 loc_conf_lvl: c_float,
337 od_mtd: *mut GstAnalyticsODMtd,
338 ) -> gboolean;
339 pub fn gst_analytics_relation_meta_add_one_cls_mtd(
340 instance: *mut GstAnalyticsRelationMeta,
341 confidence_level: c_float,
342 class_quark: glib::GQuark,
343 cls_mtd: *mut GstAnalyticsClsMtd,
344 ) -> gboolean;
345 #[cfg(feature = "v1_26")]
346 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
347 pub fn gst_analytics_relation_meta_add_oriented_od_mtd(
348 instance: *mut GstAnalyticsRelationMeta,
349 type_: glib::GQuark,
350 x: c_int,
351 y: c_int,
352 w: c_int,
353 h: c_int,
354 r: c_float,
355 loc_conf_lvl: c_float,
356 od_mtd: *mut GstAnalyticsODMtd,
357 ) -> gboolean;
358 #[cfg(feature = "v1_26")]
359 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
360 pub fn gst_analytics_relation_meta_add_segmentation_mtd(
361 instance: *mut GstAnalyticsRelationMeta,
362 buffer: *mut gst::GstBuffer,
363 segmentation_type: GstSegmentationType,
364 region_count: size_t,
365 region_ids: *mut c_uint,
366 masks_loc_x: c_int,
367 masks_loc_y: c_int,
368 masks_loc_w: c_uint,
369 masks_loc_h: c_uint,
370 segmentation_mtd: *mut GstAnalyticsSegmentationMtd,
371 ) -> gboolean;
372 pub fn gst_analytics_relation_meta_add_tracking_mtd(
373 instance: *mut GstAnalyticsRelationMeta,
374 tracking_id: u64,
375 tracking_first_seen: gst::GstClockTime,
376 trk_mtd: *mut GstAnalyticsTrackingMtd,
377 ) -> gboolean;
378 pub fn gst_analytics_relation_meta_exist(
379 rmeta: *const GstAnalyticsRelationMeta,
380 an_meta_first_id: c_uint,
381 an_meta_second_id: c_uint,
382 max_relation_span: c_int,
383 cond_types: GstAnalyticsRelTypes,
384 relations_path: *mut *mut glib::GArray,
385 ) -> gboolean;
386 pub fn gst_analytics_relation_meta_get_cls_mtd(
387 meta: *mut GstAnalyticsRelationMeta,
388 an_meta_id: c_uint,
389 rlt: *mut GstAnalyticsClsMtd,
390 ) -> gboolean;
391 pub fn gst_analytics_relation_meta_get_direct_related(
392 meta: *mut GstAnalyticsRelationMeta,
393 an_meta_id: c_uint,
394 relation_type: GstAnalyticsRelTypes,
395 type_: GstAnalyticsMtdType,
396 state: *mut gpointer,
397 rlt_mtd: *mut GstAnalyticsMtd,
398 ) -> gboolean;
399 pub fn gst_analytics_relation_meta_get_mtd(
400 meta: *mut GstAnalyticsRelationMeta,
401 an_meta_id: c_uint,
402 type_: GstAnalyticsMtdType,
403 rlt: *mut GstAnalyticsMtd,
404 ) -> gboolean;
405 pub fn gst_analytics_relation_meta_get_mtd_data(
406 meta: *const GstAnalyticsRelationMeta,
407 an_meta_id: c_uint,
408 ) -> gpointer;
409 pub fn gst_analytics_relation_meta_get_od_mtd(
410 meta: *mut GstAnalyticsRelationMeta,
411 an_meta_id: c_uint,
412 rlt: *mut GstAnalyticsODMtd,
413 ) -> gboolean;
414 pub fn gst_analytics_relation_meta_get_relation(
415 meta: *const GstAnalyticsRelationMeta,
416 an_meta_first_id: c_uint,
417 an_meta_second_id: c_uint,
418 ) -> GstAnalyticsRelTypes;
419 #[cfg(feature = "v1_26")]
420 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
421 pub fn gst_analytics_relation_meta_get_segmentation_mtd(
422 meta: *mut GstAnalyticsRelationMeta,
423 an_meta_id: c_uint,
424 rlt: *mut GstAnalyticsSegmentationMtd,
425 ) -> gboolean;
426 pub fn gst_analytics_relation_meta_get_tracking_mtd(
427 meta: *mut GstAnalyticsRelationMeta,
428 an_meta_id: c_uint,
429 rlt: *mut GstAnalyticsTrackingMtd,
430 ) -> gboolean;
431 pub fn gst_analytics_relation_meta_iterate(
432 meta: *mut GstAnalyticsRelationMeta,
433 state: *mut gpointer,
434 type_: GstAnalyticsMtdType,
435 rlt_mtd: *mut GstAnalyticsMtd,
436 ) -> gboolean;
437 pub fn gst_analytics_relation_meta_set_relation(
438 meta: *mut GstAnalyticsRelationMeta,
439 type_: GstAnalyticsRelTypes,
440 an_meta_first_id: c_uint,
441 an_meta_second_id: c_uint,
442 ) -> gboolean;
443 pub fn gst_analytics_relation_meta_get_info() -> *const gst::GstMetaInfo;
444
445 #[cfg(feature = "v1_26")]
449 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
450 pub fn gst_analytics_segmentation_mtd_get_mask(
451 handle: *const GstAnalyticsSegmentationMtd,
452 masks_loc_x: *mut c_int,
453 masks_loc_y: *mut c_int,
454 masks_loc_w: *mut c_uint,
455 masks_loc_h: *mut c_uint,
456 ) -> *mut gst::GstBuffer;
457 #[cfg(feature = "v1_26")]
458 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
459 pub fn gst_analytics_segmentation_mtd_get_region_count(
460 handle: *const GstAnalyticsSegmentationMtd,
461 ) -> size_t;
462 #[cfg(feature = "v1_26")]
463 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
464 pub fn gst_analytics_segmentation_mtd_get_region_id(
465 handle: *const GstAnalyticsSegmentationMtd,
466 index: size_t,
467 ) -> c_uint;
468 #[cfg(feature = "v1_26")]
469 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
470 pub fn gst_analytics_segmentation_mtd_get_region_index(
471 handle: *const GstAnalyticsSegmentationMtd,
472 index: *mut size_t,
473 id: c_uint,
474 ) -> gboolean;
475 #[cfg(feature = "v1_26")]
476 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
477 pub fn gst_analytics_segmentation_mtd_get_mtd_type() -> GstAnalyticsMtdType;
478
479 pub fn gst_analytics_tracking_mtd_get_info(
483 instance: *const GstAnalyticsTrackingMtd,
484 tracking_id: *mut u64,
485 tracking_first_seen: *mut gst::GstClockTime,
486 tracking_last_seen: *mut gst::GstClockTime,
487 tracking_lost: *mut gboolean,
488 ) -> gboolean;
489 pub fn gst_analytics_tracking_mtd_set_lost(instance: *mut GstAnalyticsTrackingMtd) -> gboolean;
490 pub fn gst_analytics_tracking_mtd_update_last_seen(
491 instance: *mut GstAnalyticsTrackingMtd,
492 last_seen: gst::GstClockTime,
493 ) -> gboolean;
494 pub fn gst_analytics_tracking_mtd_get_mtd_type() -> GstAnalyticsMtdType;
495
496 #[cfg(feature = "v1_26")]
500 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
501 pub fn gst_tensor_get_type() -> GType;
502 #[cfg(feature = "v1_26")]
503 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
504 pub fn gst_tensor_alloc(num_dims: size_t) -> *mut GstTensor;
505 #[cfg(feature = "v1_26")]
506 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
507 pub fn gst_tensor_new_simple(
508 id: glib::GQuark,
509 data_type: GstTensorDataType,
510 data: *mut gst::GstBuffer,
511 dims_order: GstTensorDimOrder,
512 num_dims: size_t,
513 dims: *mut size_t,
514 ) -> *mut GstTensor;
515 #[cfg(feature = "v1_28")]
516 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
517 pub fn gst_tensor_check_type(
518 tensor: *const GstTensor,
519 order: GstTensorDimOrder,
520 num_dims: size_t,
521 data_type: GstTensorDataType,
522 data: *mut gst::GstBuffer,
523 ) -> gboolean;
524 #[cfg(feature = "v1_26")]
525 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
526 pub fn gst_tensor_copy(tensor: *const GstTensor) -> *mut GstTensor;
527 #[cfg(feature = "v1_26")]
528 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
529 pub fn gst_tensor_free(tensor: *mut GstTensor);
530 #[cfg(feature = "v1_26")]
531 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
532 pub fn gst_tensor_get_dims(tensor: *mut GstTensor, num_dims: *mut size_t) -> *mut size_t;
533 #[cfg(feature = "v1_28")]
534 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
535 pub fn gst_tensor_data_type_get_name(data_type: GstTensorDataType) -> *const c_char;
536
537 #[cfg(feature = "v1_26")]
541 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
542 pub fn gst_tensor_meta_get(tmeta: *mut GstTensorMeta, index: size_t) -> *const GstTensor;
543 #[cfg(feature = "v1_28")]
544 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
545 pub fn gst_tensor_meta_get_by_id(
546 tmeta: *mut GstTensorMeta,
547 id: glib::GQuark,
548 ) -> *const GstTensor;
549 #[cfg(feature = "v1_26")]
550 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
551 pub fn gst_tensor_meta_get_index_from_id(meta: *mut GstTensorMeta, id: glib::GQuark) -> c_int;
552 #[cfg(feature = "v1_28")]
553 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
554 pub fn gst_tensor_meta_get_typed_tensor(
555 tmeta: *mut GstTensorMeta,
556 tensor_id: glib::GQuark,
557 order: GstTensorDimOrder,
558 num_dims: size_t,
559 data_type: GstTensorDataType,
560 data: *mut gst::GstBuffer,
561 ) -> *const GstTensor;
562 #[cfg(feature = "v1_26")]
563 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
564 pub fn gst_tensor_meta_set(
565 tmeta: *mut GstTensorMeta,
566 num_tensors: c_uint,
567 tensors: *mut *mut GstTensor,
568 );
569 #[cfg(feature = "v1_26")]
570 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
571 pub fn gst_tensor_meta_get_info() -> *const gst::GstMetaInfo;
572
573 pub fn gst_buffer_add_analytics_relation_meta(
577 buffer: *mut gst::GstBuffer,
578 ) -> *mut GstAnalyticsRelationMeta;
579 pub fn gst_buffer_add_analytics_relation_meta_full(
580 buffer: *mut gst::GstBuffer,
581 init_params: *mut GstAnalyticsRelationMetaInitParams,
582 ) -> *mut GstAnalyticsRelationMeta;
583 #[cfg(feature = "v1_26")]
584 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
585 pub fn gst_buffer_add_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
586 pub fn gst_buffer_get_analytics_relation_meta(
587 buffer: *mut gst::GstBuffer,
588 ) -> *mut GstAnalyticsRelationMeta;
589 #[cfg(feature = "v1_26")]
590 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
591 pub fn gst_buffer_get_tensor_meta(buffer: *mut gst::GstBuffer) -> *mut GstTensorMeta;
592 #[cfg(feature = "v1_28")]
593 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
594 pub fn gst_analytics_image_util_iou_float(
595 bb1_x: c_float,
596 bb1_y: c_float,
597 bb1_w: c_float,
598 bb1_h: c_float,
599 bb2_x: c_float,
600 bb2_y: c_float,
601 bb2_w: c_float,
602 bb2_h: c_float,
603 ) -> c_float;
604 #[cfg(feature = "v1_28")]
605 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
606 pub fn gst_analytics_image_util_iou_int(
607 bb1_x: c_int,
608 bb1_y: c_int,
609 bb1_w: c_int,
610 bb1_h: c_int,
611 bb2_x: c_int,
612 bb2_y: c_int,
613 bb2_w: c_int,
614 bb2_h: c_int,
615 ) -> c_float;
616 pub fn gst_analytics_relation_get_length(instance: *const GstAnalyticsRelationMeta) -> size_t;
617 pub fn gst_analytics_relation_meta_api_get_type() -> GType;
618 #[cfg(feature = "v1_26")]
619 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
620 pub fn gst_tensor_meta_api_get_type() -> GType;
621
622}