fn new() -> Self {
Indeo4Decoder {
info: NACodecInfo::new_dummy(),
- dec: IVIDecoder::new(),
+ dec: IVIDecoder::new(false),
}
}
}
}
impl Indeo5Decoder {
- fn new() -> Self {
+ fn new(scalable: bool) -> Self {
Indeo5Decoder {
info: NACodecInfo::new_dummy(),
- dec: IVIDecoder::new(),
+ dec: IVIDecoder::new(scalable),
ip: Indeo5Parser::new(),
}
}
];
pub fn get_decoder() -> Box<dyn NADecoder + Send> {
- Box::new(Indeo5Decoder::new())
+ Box::new(Indeo5Decoder::new(false))
+}
+
+pub fn get_decoder_scalable() -> Box<dyn NADecoder + Send> {
+ Box::new(Indeo5Decoder::new(true))
}
#[cfg(test)]
tiles: Vec<IVITile>,
num_tiles: [[usize; 4]; 4],
tile_start: [[usize; 4]; 4],
+
+ scalable: bool,
}
impl IVIDecoder {
- pub fn new() -> Self {
+ pub fn new(scalable: bool) -> Self {
let mut bands: Vec<BandHeader> = Vec::with_capacity(12);
bands.resize(12, BandHeader::new_empty(42, 42));
IVIDecoder {
bands,
band_tiles: 0,
tiles: Vec::new(), tile_start: [[0; 4]; 4], num_tiles: [[0; 4]; 4],
+
+ scalable,
}
}
DecoderInfo { name: "indeo4", get_decoder: indeo4::get_decoder },
#[cfg(feature="decoder_indeo5")]
DecoderInfo { name: "indeo5", get_decoder: indeo5::get_decoder },
+#[cfg(feature="decoder_indeo5")]
+ DecoderInfo { name: "indeo5s", get_decoder: indeo5::get_decoder_scalable },
#[cfg(feature="decoder_intel263")]
DecoderInfo { name: "intel263", get_decoder: intel263::get_decoder },
let cname = match &fcc {
b"IV31" | b"IV32" => "indeo3",
b"IV41" => "indeo4",
- b"IV50" => "indeo5",
+ b"IV50" => "indeo5s",
_ => "unknown",
};
let edata = if vhdr_size > 40 {
desc!(video; "indeo3", "Intel Indeo 3"),
desc!(video; "indeo4", "Intel Indeo 4", CODEC_CAP_REORDER | CODEC_CAP_SCALABLE),
desc!(video; "indeo5", "Intel Indeo 5", CODEC_CAP_REORDER | CODEC_CAP_SCALABLE),
+ desc!(video; "indeo5s", "Intel Indeo 5 Scalable", CODEC_CAP_SCALABLE),
desc!(video; "intel263", "Intel I263", CODEC_CAP_REORDER),
desc!(audio; "iac", "Intel Indeo audio"),
desc!(audio; "imc", "Intel Music Coder"),