util/frame/audio: refactor data() and data_mut()

This commit is contained in:
meh
2015-10-26 14:44:26 +01:00
parent 8298586d9f
commit 65d5ab89bb

View File

@ -181,34 +181,28 @@ impl Audio {
} }
#[inline] #[inline]
pub fn data(&self) -> Vec<&[u8]> { pub fn data(&self, index: usize) -> &[u8] {
let mut result = Vec::new(); if index >= self.planes() {
panic!("out of bounds");
}
unsafe { unsafe {
for i in 0 .. self.planes() { slice::from_raw_parts((*self.as_ptr()).data[index],
result.push(slice::from_raw_parts( (*self.as_ptr()).linesize[index] as usize)
(*self.as_ptr()).data[i],
(*self.as_ptr()).linesize[0] as usize));
} }
} }
result
}
#[inline] #[inline]
pub fn data_mut(&mut self) -> Vec<&mut [u8]> { pub fn data_mut(&mut self, index: usize) -> &mut [u8] {
let mut result = Vec::new(); if index >= self.planes() {
panic!("out of bounds");
}
unsafe { unsafe {
for i in 0 .. self.planes() { slice::from_raw_parts_mut((*self.as_mut_ptr()).data[index],
result.push(slice::from_raw_parts_mut( (*self.as_ptr()).linesize[index] as usize)
(*self.as_mut_ptr()).data[i],
(*self.as_ptr()).linesize[0] as usize));
} }
} }
result
}
} }
impl Deref for Audio { impl Deref for Audio {