From a2c9e1ef8856c0fe94d518f76bfb8ffe5e42c14c Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Thu, 6 Mar 2025 23:39:04 -0300 Subject: [PATCH] tracer: Add pool buffer_queue/buffer_dequeue hooks Part-of: --- gstreamer-media-info/Cargo.toml | 38 -------------------------------- gstreamer/src/subclass/tracer.rs | 23 +++++++++++++++++++ 2 files changed, 23 insertions(+), 38 deletions(-) delete mode 100644 gstreamer-media-info/Cargo.toml diff --git a/gstreamer-media-info/Cargo.toml b/gstreamer-media-info/Cargo.toml deleted file mode 100644 index 1a1327e90..000000000 --- a/gstreamer-media-info/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "gstreamer-media-info" -authors = ["Thibault Saunier "] -categories = ["multimedia"] -description = "Exposes an API to inspect media streams" -license = "MIT/Apache-2.0" -readme = "README.md" -documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/stable/latest/docs/gstreamer_media_info/" -keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] -version.workspace = true -repository.workspace = true -homepage.workspace = true -edition.workspace = true -rust-version.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -gst = { workspace = true } -tokio = { version = "1.0", features = ["rt", "rt-multi-thread"] } -futures = "0.3" -anyhow = "1.0" -url = "2.3" -once_cell = "1" - -[dev-dependencies] -futures = { version = "0.3", features = ["executor"] } - -[features] -default = [] -v1_22 = [] -v1_24 = ["v1_22"] -v1_26 = ["v1_24"] -v1_28 = ["v1_26"] -[package.metadata.docs.rs] -all-features = true -rustc-args = ["--cfg", "docsrs"] -rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"] diff --git a/gstreamer/src/subclass/tracer.rs b/gstreamer/src/subclass/tracer.rs index a04f14341..005d41acb 100644 --- a/gstreamer/src/subclass/tracer.rs +++ b/gstreamer/src/subclass/tracer.rs @@ -98,6 +98,13 @@ pub trait TracerImpl: GstObjectImpl + ObjectSubclass> { #[cfg(feature = "v1_26")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] fn memory_free_post(&self, ts: u64, mem: std::ptr::NonNull) {} + + #[cfg(feature = "v1_28")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] + fn pool_buffer_queued(&self, ts: u64, pool: &crate::BufferPool, buffer: &Buffer) {} + #[cfg(feature = "v1_28")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] + fn pool_buffer_dequeued(&self, ts: u64, pool: &crate::BufferPool, buffer: &Buffer) {} } #[cfg(not(feature = "v1_26"))] @@ -503,4 +510,20 @@ define_tracer_hooks! { MemoryFreePost("memory-free-post") = |this, ts, memory: *mut ffi::GstMemory| { this.memory_free_post(ts, std::ptr::NonNull::new_unchecked(memory)) }; + #[cfg(feature = "v1_28")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] + PoolBufferQueued("pool-buffer-queued") = |this, ts, pool: *mut ffi::GstBufferPool, buffer: *mut ffi::GstBuffer| { + let pool = crate::BufferPool::from_glib_borrow(pool); + let b = Buffer::from_glib_borrow(buffer); + + this.pool_buffer_queued(ts, &pool, &b) + }; + #[cfg(feature = "v1_28")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] + PoolBufferDequeued("pool-buffer-dequeued") = |this, ts, pool: *mut ffi::GstBufferPool, buffer: *mut ffi::GstBuffer| { + let pool = crate::BufferPool::from_glib_borrow(pool); + let b = Buffer::from_glib_borrow(buffer); + + this.pool_buffer_dequeued(ts, &pool, &b) + }; }