gstreamer-rs/gstreamer-allocators/src/phys_memory.rs
2022-03-12 14:19:40 +00:00

45 lines
1.2 KiB
Rust

use std::fmt;
use glib::translate::*;
use gst::{Memory, MemoryRef};
gst::memory_object_wrapper!(
PhysMemory,
PhysMemoryRef,
gst::ffi::GstMemory,
|mem: &gst::MemoryRef| { unsafe { from_glib(ffi::gst_is_phys_memory(mem.as_mut_ptr())) } },
Memory,
MemoryRef,
);
impl fmt::Debug for PhysMemory {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
PhysMemoryRef::fmt(self, f)
}
}
impl fmt::Debug for PhysMemoryRef {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("FdMemory")
.field("ptr", unsafe { &self.as_ptr() })
.field("allocator", &self.allocator())
.field("parent", &self.parent())
.field("maxsize", &self.maxsize())
.field("align", &self.align())
.field("offset", &self.offset())
.field("size", &self.size())
.field("flags", &self.flags())
.field("phys_addr", &format!("{:x}", self.phys_addr()))
.finish()
}
}
impl PhysMemoryRef {
#[doc(alias = "gst_phys_memory_get_phys_addr")]
pub fn phys_addr(&self) -> libc::uintptr_t {
assert_initialized_main_thread!();
unsafe { ffi::gst_phys_memory_get_phys_addr(self.as_mut_ptr()) }
}
}