StreamType::Video if !profile.vname.is_empty() => {
oopts.enc_name = profile.vname.to_owned();
for (name, argument) in profile.voptions.iter() {
- oopts.enc_opts.push(OptionArgs { name: name.to_string(), value: argument.map(|val| val.to_string()) });
+ match *name {
+ "pixfmt" => {
+ if let Some(arg) = argument {
+ if oopts.enc_params.format == NACodecTypeInfo::None {
+ oopts.enc_params.format = istr.get_info().get_properties();
+ }
+ if let NACodecTypeInfo::Video(ref mut vinfo) = oopts.enc_params.format {
+ if let Ok(val) = arg.parse::<NAPixelFormaton>() {
+ vinfo.format = val;
+ } else {
+ println!("invalid pixel format");
+ }
+ }
+ } else {
+ println!("pixfmt requires an argument");
+ }
+ },
+ "width" => {
+ if let Some(arg) = argument {
+ if oopts.enc_params.format == NACodecTypeInfo::None {
+ oopts.enc_params.format = istr.get_info().get_properties();
+ }
+ if let NACodecTypeInfo::Video(ref mut vinfo) = oopts.enc_params.format {
+ if let Ok(val) = arg.parse::<usize>() {
+ vinfo.width = val;
+ } else {
+ println!("invalid width");
+ }
+ }
+ } else {
+ println!("width requires an argument");
+ }
+ },
+ "height" => {
+ if let Some(arg) = argument {
+ if oopts.enc_params.format == NACodecTypeInfo::None {
+ oopts.enc_params.format = istr.get_info().get_properties();
+ }
+ if let NACodecTypeInfo::Video(ref mut vinfo) = oopts.enc_params.format {
+ if let Ok(val) = arg.parse::<usize>() {
+ vinfo.height = val;
+ } else {
+ println!("invalid height");
+ }
+ }
+ } else {
+ println!("height requires an argument");
+ }
+ },
+ _ => {
+ oopts.enc_opts.push(OptionArgs { name: name.to_string(), value: argument.map(|val| val.to_string()) });
+ }
+ }
}
},
_ => {},
return RegisterResult::Failed;
}
let mut encoder = (enc_create.unwrap())();
- oopts.enc_params.format = istr.get_info().get_properties();
+ if oopts.enc_params.format == NACodecTypeInfo::None {
+ oopts.enc_params.format = istr.get_info().get_properties();
+ }
if self.global_tb != (0, 0) {
oopts.enc_params.tb_num = self.global_tb.0;
oopts.enc_params.tb_den = self.global_tb.1;