codec/encoder: set the medium if it's unknown

This commit is contained in:
meh 2015-10-01 23:34:59 +02:00
parent 4cc4ba3579
commit e7cd9fd94f

View File

@ -8,32 +8,65 @@ use super::{video, audio, subtitle};
pub struct Encoder(pub Context);
impl Encoder {
pub fn video(self) -> Result<video::Video, Error> {
if self.medium() == media::Type::Video {
pub fn video(mut self) -> Result<video::Video, Error> {
match self.medium() {
media::Type::Unknown => {
unsafe {
(*self.as_mut_ptr()).codec_type = media::Type::Video.into();
}
Ok(video::Video(self))
}
else {
media::Type::Video => {
Ok(video::Video(self))
}
_ => {
Err(Error::InvalidData)
}
}
}
pub fn audio(mut self) -> Result<audio::Audio, Error> {
match self.medium() {
media::Type::Unknown => {
unsafe {
(*self.as_mut_ptr()).codec_type = media::Type::Audio.into();
}
pub fn audio(self) -> Result<audio::Audio, Error> {
if self.medium() == media::Type::Audio {
Ok(audio::Audio(self))
}
else {
media::Type::Audio => {
Ok(audio::Audio(self))
}
_ => {
Err(Error::InvalidData)
}
}
}
pub fn subtitle(mut self) -> Result<subtitle::Subtitle, Error> {
match self.medium() {
media::Type::Unknown => {
unsafe {
(*self.as_mut_ptr()).codec_type = media::Type::Subtitle.into();
}
pub fn subtitle(self) -> Result<subtitle::Subtitle, Error> {
if self.medium() == media::Type::Subtitle {
Ok(subtitle::Subtitle(self))
}
else {
media::Type::Subtitle => {
Ok(subtitle::Subtitle(self))
}
_ => {
Err(Error::InvalidData)
}
}
}
pub fn set_bit_rate(&mut self, value: usize) -> &mut Self {
unsafe {