use nihav_core::io::byteio::ByteReader;
use nihav_allstuff::*;
use crate::null::*;
+use crate::imgseq::*;
pub struct FullRegister {
pub dmx_reg: RegisteredDemuxers,
Normal(Demuxer<'a>),
Raw(RawDemuxer<'a>, Vec<Option<Box<dyn NAPacketiser + Send>>>, bool),
RawStream(RawStreamCtx<'a>),
+ ImageSequence(ImgSeqDemuxer),
}
impl<'a> DemuxerObject<'a> {
DemuxerObject::None
}
}
+ pub fn create_imgseq(isd: ImgSeqDemuxer) -> Self {
+ DemuxerObject::ImageSequence(isd)
+ }
pub fn is_none(&self) -> bool {
matches!(*self, DemuxerObject::None)
}
DemuxerObject::Normal(ref dmx) => dmx.get_num_streams(),
DemuxerObject::Raw(ref dmx, _, _) => dmx.get_num_streams(),
DemuxerObject::RawStream(_) => 1,
+ DemuxerObject::ImageSequence(_) => 1,
}
}
pub fn get_stream(&self, idx: usize) -> Option<NAStreamRef> {
DemuxerObject::Normal(ref dmx) => dmx.get_stream(idx),
DemuxerObject::Raw(ref dmx, _, _) => dmx.get_stream(idx),
DemuxerObject::RawStream(ref ctx) if idx == 0 => Some(ctx.stream.clone()),
+ DemuxerObject::ImageSequence(ref ctx) if idx == 0 => Some(ctx.stream.clone()),
_ => None,
}
}
DemuxerObject::Normal(ref dmx) => dmx.get_streams(),
DemuxerObject::Raw(ref dmx, _, _) => dmx.get_streams(),
DemuxerObject::RawStream(ref ctx) => ctx.sm.iter(),
+ DemuxerObject::ImageSequence(ref ctx) => ctx.sm.iter(),
_ => unreachable!(),
}
}
DemuxerObject::Normal(ref dmx) => dmx.get_stream_manager(),
DemuxerObject::Raw(ref dmx, _, _) => dmx.get_stream_manager(),
DemuxerObject::RawStream(ref ctx) => &ctx.sm,
+ DemuxerObject::ImageSequence(ref ctx) => &ctx.sm,
_ => unreachable!(),
}
}
};
}
},
+ DemuxerObject::ImageSequence(ref mut ctx) => ctx.get_frame(),
_ => unreachable!(),
}
}
match *self {
DemuxerObject::Normal(ref mut dmx) => dmx.seek(seek_time),
DemuxerObject::Raw(ref mut dmx, _, _) => dmx.seek(seek_time),
+ DemuxerObject::ImageSequence(ref mut ctx) => ctx.seek(seek_time),
_ => Err(DemuxerError::NotImplemented),
}
}
match *self {
DemuxerObject::Normal(ref dmx) => dmx.get_supported_options(),
DemuxerObject::Raw(ref dmx, _, _) => dmx.get_supported_options(),
+ DemuxerObject::ImageSequence(ref ctx) => ctx.get_supported_options(),
_ => &[],
}
}
match *self {
DemuxerObject::Normal(ref mut dmx) => dmx.set_options(options),
DemuxerObject::Raw(ref mut dmx, _, _) => dmx.set_options(options),
+ DemuxerObject::ImageSequence(ref mut ctx) => ctx.set_options(options),
_ => {},
}
}
match *self {
DemuxerObject::Normal(ref dmx) => dmx.query_option_value(name),
DemuxerObject::Raw(ref dmx, _, _) => dmx.query_option_value(name),
+ DemuxerObject::ImageSequence(ref ctx) => ctx.query_option_value(name),
_ => None,
}
}