let out_info = NAVideoInfo::new(vinfo.width, vinfo.height, false, vinfo.format);
let info = NACodecInfo::new("cinepak", NACodecTypeInfo::Video(out_info.clone()), None);
- let stream = NAStream::new(StreamType::Video, stream_id, info, encinfo.tb_num, encinfo.tb_den).into_ref();
+ let mut stream = NAStream::new(StreamType::Video, stream_id, info, encinfo.tb_num, encinfo.tb_den);
+ stream.set_num(stream_id as usize);
+ let stream = stream.into_ref();
self.stream = Some(stream.clone());
self.quality = encinfo.quality;
let buf = alloc_video_buffer(out_info, 2)?;
self.lastfrm = Some(buf.get_vbuf().unwrap());
-
+
Ok(stream)
},
}
const ENCODER_OPTS: &[NAOptionDefinition] = &[
NAOptionDefinition {
- name: "key_int", description: "Keyframe interval (0 - automatic)",
+ name: KEYFRAME_OPTION, description: KEYFRAME_OPTION_DESC,
opt_type: NAOptionDefinitionType::Int(Some(0), Some(128)) },
NAOptionDefinition {
name: "nstrips", description: "Number of strips per frame (0 - automatic)",
fn get_supported_options(&self) -> &[NAOptionDefinition] { ENCODER_OPTS }
fn set_options(&mut self, options: &[NAOption]) {
for option in options.iter() {
-println!("option {}", option.name);
for opt_def in ENCODER_OPTS.iter() {
if opt_def.check(option).is_ok() {
match option.name {
- "key_int" => {
+ KEYFRAME_OPTION => {
if let NAValue::Int(intval) = option.value {
self.key_int = intval as u8;
}
}
fn query_option_value(&self, name: &str) -> Option<NAValue> {
match name {
- "key_int" => Some(NAValue::Int(i64::from(self.key_int))),
+ KEYFRAME_OPTION => Some(NAValue::Int(i64::from(self.key_int))),
"nstrips" => Some(NAValue::Int(self.nstrips as i64)),
"quant_mode" => Some(NAValue::String(self.qmode.to_string())),
_ => None,