diff --git a/src/util/frame/audio.rs b/src/util/frame/audio.rs index aadb7be..e6955a8 100644 --- a/src/util/frame/audio.rs +++ b/src/util/frame/audio.rs @@ -98,11 +98,11 @@ impl Audio { } pub fn samples(&self) -> Samples { - Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.rate(), self.sample_number(), self.channels()) + Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.rate(), self.sample_number(), self.channels(), self.channel_layout()) } pub fn samples_mut(&mut self) -> Samples { - Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.rate(), self.sample_number(), self.channels()) + Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.rate(), self.sample_number(), self.channels(), self.channel_layout()) } } diff --git a/src/util/samples.rs b/src/util/samples.rs index dcd0d75..95e18c7 100644 --- a/src/util/samples.rs +++ b/src/util/samples.rs @@ -5,7 +5,7 @@ use std::marker::{Reflect, PhantomData}; use ffi::*; use ::util::format::Sample; -use ::Error; +use ::{Error, ChannelLayout}; pub struct Samples<'a> { pub ptr: *mut AVPicture, @@ -14,12 +14,13 @@ pub struct Samples<'a> { rate: u32, number: usize, channels: u16, + layout: ChannelLayout, _marker: PhantomData<&'a ()>, } impl<'a> Samples<'a> { - pub fn wrap(ptr: *mut AVPicture, format: Sample, rate: u32, number: usize, channels: u16) -> Self { + pub fn wrap(ptr: *mut AVPicture, format: Sample, rate: u32, number: usize, channels: u16, layout: ChannelLayout) -> Self { Samples { ptr: ptr, @@ -27,6 +28,7 @@ impl<'a> Samples<'a> { rate: rate, number: number, channels: channels, + layout: layout, _marker: PhantomData, } @@ -48,6 +50,10 @@ impl<'a> Samples<'a> { self.channels } + pub fn channel_layout(&self) -> ChannelLayout { + self.layout + } + pub fn is_planar(&self) -> bool { self.format.is_planar() }