codec/threading: add threading configuration

This commit is contained in:
meh
2015-05-16 19:18:26 +02:00
parent e2039ac550
commit a0dae25b94
4 changed files with 85 additions and 1 deletions

View File

@ -1,10 +1,11 @@
use std::ops::Deref;
use std::ptr;
use libc::c_int;
use ffi::*;
use ::media;
use ::{Error, Codec, Dictionary};
use super::{Id, Debug, Compliance};
use super::{Id, Debug, Compliance, threading};
use super::decoder::Decoder;
use super::encoder::Encoder;
@ -107,6 +108,24 @@ impl Context {
(*self.ptr).debug = value.bits();
}
}
pub fn set_threading(&mut self, config: threading::Config) {
unsafe {
(*self.ptr).thread_type = config.kind.into();
(*self.ptr).thread_count = config.count as c_int;
(*self.ptr).thread_safe_callbacks = if config.safe { 1 } else { 0 };
}
}
pub fn threading(&self) -> threading::Config {
unsafe {
threading::Config {
kind: threading::Type::from((*self.ptr).active_thread_type),
count: (*self.ptr).thread_count as usize,
safe: (*self.ptr).thread_safe_callbacks != 0,
}
}
}
}
impl Drop for Context {