From 9e90a1264f5ca47fa4a991a577043a352bfa3b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 1 Aug 2018 19:18:15 +0300 Subject: [PATCH] Add getter for the aggregator pad segment --- gstreamer-base/src/aggregator_pad.rs | 29 ++++++++++++++++++++++++++++ gstreamer-base/src/lib.rs | 4 ++++ 2 files changed, 33 insertions(+) create mode 100644 gstreamer-base/src/aggregator_pad.rs diff --git a/gstreamer-base/src/aggregator_pad.rs b/gstreamer-base/src/aggregator_pad.rs new file mode 100644 index 000000000..19027fa75 --- /dev/null +++ b/gstreamer-base/src/aggregator_pad.rs @@ -0,0 +1,29 @@ +// Copyright (C) 2018 Sebastian Dröge +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use ffi; +use glib::translate::*; +use glib::IsA; +use gst; +use gst_ffi; +use AggregatorPad; + +pub trait AggregatorPadExtManual { + fn get_segment(&self) -> gst::Segment; +} + +impl> AggregatorPadExtManual for O { + fn get_segment(&self) -> gst::Segment { + unsafe { + let stash = self.to_glib_none(); + let ptr: &ffi::GstAggregatorPad = &*stash.0; + ::utils::MutexGuard::lock(&ptr.parent.object.lock); + from_glib_none(&ptr.segment as *const gst_ffi::GstSegment) + } + } +} diff --git a/gstreamer-base/src/lib.rs b/gstreamer-base/src/lib.rs index 85c1b5796..cf8f86e39 100644 --- a/gstreamer-base/src/lib.rs +++ b/gstreamer-base/src/lib.rs @@ -42,6 +42,8 @@ mod flow_combiner; pub use flow_combiner::*; #[cfg(any(feature = "v1_14", feature = "dox"))] mod aggregator; +#[cfg(any(feature = "v1_14", feature = "dox"))] +mod aggregator_pad; mod base_sink; mod base_src; mod base_transform; @@ -54,6 +56,8 @@ pub mod prelude { #[cfg(any(feature = "v1_14", feature = "dox"))] pub use aggregator::AggregatorExtManual; + #[cfg(any(feature = "v1_14", feature = "dox"))] + pub use aggregator_pad::AggregatorPadExtManual; pub use auto::traits::*; pub use base_sink::BaseSinkExtManual; pub use base_src::BaseSrcExtManual;