mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-09-02 01:43:49 +00:00
analytics: Add bindings for new tensor convenience API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1743>
This commit is contained in:
parent
6aa870ba6d
commit
1a75edba3f
2 changed files with 52 additions and 0 deletions
|
@ -78,6 +78,27 @@ impl Tensor {
|
||||||
pub fn dims_order(&self) -> TensorDimOrder {
|
pub fn dims_order(&self) -> TensorDimOrder {
|
||||||
unsafe { from_glib(self.inner.dims_order) }
|
unsafe { from_glib(self.inner.dims_order) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "v1_28")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
|
||||||
|
#[doc(alias = "gst_tensor_check_type")]
|
||||||
|
pub fn check_type(
|
||||||
|
&self,
|
||||||
|
order: crate::TensorDimOrder,
|
||||||
|
num_dims: usize,
|
||||||
|
data_type: crate::TensorDataType,
|
||||||
|
data: &gst::BufferRef,
|
||||||
|
) -> bool {
|
||||||
|
unsafe {
|
||||||
|
from_glib(ffi::gst_tensor_check_type(
|
||||||
|
self.to_glib_none().0,
|
||||||
|
order.into_glib(),
|
||||||
|
num_dims,
|
||||||
|
data_type.into_glib(),
|
||||||
|
mut_override(data.as_ptr()),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -47,6 +47,37 @@ impl TensorMeta {
|
||||||
unsafe fn as_mut_ptr(&self) -> *mut ffi::GstTensorMeta {
|
unsafe fn as_mut_ptr(&self) -> *mut ffi::GstTensorMeta {
|
||||||
mut_override(&self.0)
|
mut_override(&self.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "v1_28")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
|
||||||
|
#[doc(alias = "gst_tensor_meta_get_typed_tensor")]
|
||||||
|
pub fn typed_tensor(
|
||||||
|
&self,
|
||||||
|
id: glib::Quark,
|
||||||
|
order: crate::TensorDimOrder,
|
||||||
|
num_dims: usize,
|
||||||
|
data_type: crate::TensorDataType,
|
||||||
|
data: &gst::BufferRef,
|
||||||
|
) -> Option<&crate::Tensor> {
|
||||||
|
unsafe {
|
||||||
|
let res = ffi::gst_tensor_meta_get_typed_tensor(
|
||||||
|
self.as_mut_ptr(),
|
||||||
|
id.into_glib(),
|
||||||
|
order.into_glib(),
|
||||||
|
num_dims,
|
||||||
|
data_type.into_glib(),
|
||||||
|
mut_override(data.as_ptr()),
|
||||||
|
);
|
||||||
|
if res.is_null() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
// FIXME: This is not ideal but otherwise we can't return a reference safely
|
||||||
|
self.as_slice()
|
||||||
|
.iter()
|
||||||
|
.find(|t| t.as_ptr() == res as *mut ffi::GstTensor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl MetaAPI for TensorMeta {
|
unsafe impl MetaAPI for TensorMeta {
|
||||||
|
|
Loading…
Reference in a new issue