mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-09-01 17:33:50 +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 {
|
||||
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)]
|
||||
|
|
|
@ -47,6 +47,37 @@ impl TensorMeta {
|
|||
unsafe fn as_mut_ptr(&self) -> *mut ffi::GstTensorMeta {
|
||||
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 {
|
||||
|
|
Loading…
Reference in a new issue