tracer: Add pool buffer_queue/buffer_dequeue hooks

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1664>
This commit is contained in:
Thibault Saunier 2025-03-06 23:39:04 -03:00
parent 5e6204ecc2
commit a2c9e1ef88
2 changed files with 23 additions and 38 deletions

View file

@ -1,38 +0,0 @@
[package]
name = "gstreamer-media-info"
authors = ["Thibault Saunier <tsaunier@igalia.com>"]
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"]

View file

@ -98,6 +98,13 @@ pub trait TracerImpl: GstObjectImpl + ObjectSubclass<Type: IsA<Tracer>> {
#[cfg(feature = "v1_26")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
fn memory_free_post(&self, ts: u64, mem: std::ptr::NonNull<ffi::GstMemory>) {}
#[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)
};
}