From 80941b1b7e1b00adaaddd0792376c762a27cd9df Mon Sep 17 00:00:00 2001 From: xd009642 Date: Mon, 23 Aug 2021 15:29:32 +0100 Subject: [PATCH] fix: properly support packed samples --- src/util/frame/audio.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/util/frame/audio.rs b/src/util/frame/audio.rs index b087b1b..ef4007d 100644 --- a/src/util/frame/audio.rs +++ b/src/util/frame/audio.rs @@ -149,7 +149,13 @@ impl Audio { panic!("unsupported type"); } - unsafe { slice::from_raw_parts((*self.as_ptr()).data[index] as *const T, self.samples()) } + let len = if self.is_packed() { + self.samples() * self.channels() as usize + } + else { + self.samples() + }; + unsafe { slice::from_raw_parts((*self.as_ptr()).data[index] as *const T, len) } } #[inline] @@ -162,7 +168,13 @@ impl Audio { panic!("unsupported type"); } - unsafe { slice::from_raw_parts_mut((*self.as_mut_ptr()).data[index] as *mut T, self.samples()) } + let len = if self.is_packed() { + self.samples() * self.channels() as usize + } + else { + self.samples() + }; + unsafe { slice::from_raw_parts_mut((*self.as_mut_ptr()).data[index] as *mut T, len) } } #[inline]