From e1e6e8cca7e2f1ab318ffce518643914a74807f0 Mon Sep 17 00:00:00 2001 From: meh Date: Sun, 27 Sep 2015 20:30:14 +0200 Subject: [PATCH] codec/encoder/audio: check the passed frame is in the proper format --- src/codec/encoder/audio.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/codec/encoder/audio.rs b/src/codec/encoder/audio.rs index 1fe07d5..fdaba2e 100644 --- a/src/codec/encoder/audio.rs +++ b/src/codec/encoder/audio.rs @@ -130,6 +130,10 @@ pub struct Encoder(pub Audio); impl Encoder { pub fn encode(&mut self, frame: &frame::Audio, out: &mut Packet) -> Result { unsafe { + if self.format() != frame.format() { + return Err(Error::InvalidData); + } + let mut got: c_int = 0; match avcodec_encode_audio2(self.0.as_mut_ptr(), out.as_mut_ptr(), frame.as_ptr(), &mut got) { @@ -141,7 +145,12 @@ impl Encoder { pub fn flush(&mut self, out: &mut Packet) -> Result { unsafe { - self.encode(&frame::Audio::wrap(ptr::null_mut()), out) + let mut got: c_int = 0; + + match avcodec_encode_audio2(self.0.as_mut_ptr(), out.as_mut_ptr(), ptr::null(), &mut got) { + e if e < 0 => Err(Error::from(e)), + _ => Ok(got != 0) + } } }