From 3dd7a8abe781bb931e878ad3582e2628c8c74feb Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Thu, 10 Sep 2015 21:21:46 +0200 Subject: [PATCH] Add UnknownBufferType::len() --- src/alsa/mod.rs | 4 ++++ src/lib.rs | 11 +++++++++++ src/null/mod.rs | 4 ++++ src/wasapi/voice.rs | 4 ++++ 4 files changed, 23 insertions(+) diff --git a/src/alsa/mod.rs b/src/alsa/mod.rs index 2e9dbe1..11bb99c 100644 --- a/src/alsa/mod.rs +++ b/src/alsa/mod.rs @@ -125,6 +125,10 @@ impl<'a, T> Buffer<'a, T> { &mut self.buffer } + pub fn len(&self) -> usize { + self.buffer.len() + } + pub fn finish(self) { let written = (self.buffer.len() / self.channel.num_channels as usize) as alsa::snd_pcm_uframes_t; diff --git a/src/lib.rs b/src/lib.rs index 7e77b94..7fae8d8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -181,6 +181,17 @@ pub enum UnknownTypeBuffer<'a> { F32(Buffer<'a, f32>), } +impl<'a> UnknownTypeBuffer<'a> { + /// Returns the length of the buffer in number of samples. + pub fn len(&self) -> usize { + match self { + &UnknownTypeBuffer::U16(ref buf) => buf.target.as_ref().unwrap().len(), + &UnknownTypeBuffer::I16(ref buf) => buf.target.as_ref().unwrap().len(), + &UnknownTypeBuffer::F32(ref buf) => buf.target.as_ref().unwrap().len(), + } + } +} + /// Error that can happen when enumerating the list of supported formats. #[derive(Debug)] pub enum FormatsEnumerationError { diff --git a/src/null/mod.rs b/src/null/mod.rs index ff5e1db..6840ea2 100644 --- a/src/null/mod.rs +++ b/src/null/mod.rs @@ -81,6 +81,10 @@ impl<'a, T> Buffer<'a, T> { unreachable!() } + pub fn len(&self) -> usize { + 0 + } + pub fn finish(self) { } } diff --git a/src/wasapi/voice.rs b/src/wasapi/voice.rs index f8abb04..9e0b065 100644 --- a/src/wasapi/voice.rs +++ b/src/wasapi/voice.rs @@ -322,6 +322,10 @@ impl<'a, T> Buffer<'a, T> { } } + pub fn len(&self) -> usize { + self.buffer_len + } + pub fn finish(self) { // releasing buffer unsafe {