From 9657f4ce785722e62088989fa087da51c1de946c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 18 Dec 2019 15:35:24 +0200 Subject: [PATCH] gstreamer-audio: Add Debug and Clone impls for AudioRingBufferSpec --- gstreamer-audio/src/audio_ring_buffer_spec.rs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gstreamer-audio/src/audio_ring_buffer_spec.rs b/gstreamer-audio/src/audio_ring_buffer_spec.rs index 07b5b35c8..ce55f59f7 100644 --- a/gstreamer-audio/src/audio_ring_buffer_spec.rs +++ b/gstreamer-audio/src/audio_ring_buffer_spec.rs @@ -5,6 +5,8 @@ use gst_audio_sys::GstAudioRingBufferSpec; use AudioInfo; use AudioRingBufferFormatType; +use std::fmt; + #[repr(C)] pub struct AudioRingBufferSpec(pub(crate) GstAudioRingBufferSpec); @@ -65,3 +67,37 @@ impl AudioRingBufferSpec { self.0.seglatency = value; } } + +impl Clone for AudioRingBufferSpec { + fn clone(&self) -> Self { + unsafe { + let spec = self.0; + gst_sys::gst_mini_object_ref(spec.caps as *mut gst_sys::GstMiniObject); + + AudioRingBufferSpec(spec) + } + } +} + +impl Drop for AudioRingBufferSpec { + fn drop(&mut self) { + unsafe { + gst_sys::gst_mini_object_unref(self.0.caps as *mut gst_sys::GstMiniObject); + } + } +} + +impl fmt::Debug for AudioRingBufferSpec { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + f.debug_struct("AudioRingBufferSpec") + .field("type", &self.get_type()) + .field("caps", &self.get_caps()) + .field("audio_info", &self.get_audio_info()) + .field("latency_time", &self.get_latency_time()) + .field("buffer_time", &self.get_buffer_time()) + .field("segsize", &self.get_segsize()) + .field("segtotal", &self.get_segtotal()) + .field("seglatency", &self.get_seglatency()) + .finish() + } +}