util/frame/audio: add samples accessor

This commit is contained in:
meh
2015-06-01 16:52:19 +02:00
parent fd7ff33f68
commit 72895052e6
5 changed files with 150 additions and 5 deletions

View File

@ -3,6 +3,7 @@ use std::mem;
use std::ops::{Deref, DerefMut};
use ffi::*;
use ::Samples;
use ::util::format;
use super::Frame;
@ -21,7 +22,7 @@ impl Audio {
let mut frame = Audio::empty();
frame.set_format(format);
frame.set_samples(samples);
frame.set_sample_number(samples);
frame.set_channel_layout(layout);
av_frame_get_buffer(frame.ptr, 1);
@ -83,17 +84,25 @@ impl Audio {
}
}
pub fn samples(&self) -> usize {
pub fn sample_number(&self) -> usize {
unsafe {
(*self.ptr).nb_samples as usize
}
}
pub fn set_samples(&mut self, value: usize) {
pub fn set_sample_number(&mut self, value: usize) {
unsafe {
(*self.ptr).nb_samples = value as c_int;
}
}
pub fn samples(&self) -> Samples {
Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.sample_number(), self.channels())
}
pub fn samples_mut(&mut self) -> Samples {
Samples::wrap(self.ptr as *mut AVPicture, self.format(), self.sample_number(), self.channels())
}
}
unsafe impl Send for Audio { }
@ -114,7 +123,7 @@ impl DerefMut for Audio {
impl Clone for Audio {
fn clone(&self) -> Self {
let mut cloned = Audio::new(self.format(), self.samples(), self.channel_layout());
let mut cloned = Audio::new(self.format(), self.sample_number(), self.channel_layout());
cloned.clone_from(self);
cloned