From e02bd1e7639374b7bc8384793d3f9b129445e17e Mon Sep 17 00:00:00 2001 From: meh Date: Sat, 16 May 2015 22:47:38 +0200 Subject: [PATCH] codec/encoder: add some accessors --- src/codec/encoder/mod.rs | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/codec/encoder/mod.rs b/src/codec/encoder/mod.rs index a08007b..664cc24 100644 --- a/src/codec/encoder/mod.rs +++ b/src/codec/encoder/mod.rs @@ -23,10 +23,11 @@ use std::ffi::CString; use std::ptr; use std::ops::Deref; +use libc::c_int; use ffi::*; use super::Id; use super::context::Opened; -use ::{Codec, Error}; +use ::{Codec, Error, Rational}; use ::media; pub struct Encoder(pub Opened); @@ -58,6 +59,41 @@ impl Encoder { Err(Error::from(AVERROR_INVALIDDATA)) } } + + pub fn set_rate(&mut self, value: usize) { + unsafe { + (*self.ptr).bit_rate = value as c_int; + } + } + + pub fn set_tolerance(&mut self, value: usize) { + unsafe { + (*self.ptr).bit_rate_tolerance = value as c_int; + } + } + + pub fn set_quality(&mut self, value: usize) { + unsafe { + (*self.ptr).global_quality = value as c_int; + } + } + + pub fn set_compression(&mut self, value: Option) { + unsafe { + if let Some(value) = value { + (*self.ptr).compression_level = value as c_int; + } + else { + (*self.ptr).compression_level = -1; + } + } + } + + pub fn set_time_base(&mut self, value: Rational) { + unsafe { + (*self.ptr).time_base = value.0; + } + } } impl Deref for Encoder {