aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2022-10-13 18:21:33 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2022-10-13 18:22:10 +0200
commitf7686373872ed8a9378dbde734d6f6220ed64aef (patch)
tree3a4e5e4f65c3bf229ac91b02333c502d2df5b0c6
parente01d4987aa11af424461a7c0e6f2a4d82a458fc5 (diff)
downloadnihav-f7686373872ed8a9378dbde734d6f6220ed64aef.tar.gz
prepare for implementing scalable Indeo 5
-rw-r--r--nihav-indeo/src/codecs/indeo4.rs2
-rw-r--r--nihav-indeo/src/codecs/indeo5.rs10
-rw-r--r--nihav-indeo/src/codecs/ivibr.rs6
-rw-r--r--nihav-indeo/src/codecs/mod.rs2
-rw-r--r--nihav-indeo/src/demuxers/ivf.rs2
-rw-r--r--nihav-registry/src/register.rs1
6 files changed, 17 insertions, 6 deletions
diff --git a/nihav-indeo/src/codecs/indeo4.rs b/nihav-indeo/src/codecs/indeo4.rs
index 526668b..cc73702 100644
--- a/nihav-indeo/src/codecs/indeo4.rs
+++ b/nihav-indeo/src/codecs/indeo4.rs
@@ -422,7 +422,7 @@ impl Indeo4Decoder {
fn new() -> Self {
Indeo4Decoder {
info: NACodecInfo::new_dummy(),
- dec: IVIDecoder::new(),
+ dec: IVIDecoder::new(false),
}
}
}
diff --git a/nihav-indeo/src/codecs/indeo5.rs b/nihav-indeo/src/codecs/indeo5.rs
index 0115b2a..ec23981 100644
--- a/nihav-indeo/src/codecs/indeo5.rs
+++ b/nihav-indeo/src/codecs/indeo5.rs
@@ -499,10 +499,10 @@ struct Indeo5Decoder {
}
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(),
}
}
@@ -723,7 +723,11 @@ const INDEO5_QSCALE4_INTER: [u8; 24] = [
];
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)]
diff --git a/nihav-indeo/src/codecs/ivibr.rs b/nihav-indeo/src/codecs/ivibr.rs
index 9165d01..5831f80 100644
--- a/nihav-indeo/src/codecs/ivibr.rs
+++ b/nihav-indeo/src/codecs/ivibr.rs
@@ -488,10 +488,12 @@ pub struct IVIDecoder {
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 {
@@ -506,6 +508,8 @@ impl IVIDecoder {
bands,
band_tiles: 0,
tiles: Vec::new(), tile_start: [[0; 4]; 4], num_tiles: [[0; 4]; 4],
+
+ scalable,
}
}
diff --git a/nihav-indeo/src/codecs/mod.rs b/nihav-indeo/src/codecs/mod.rs
index a5a8ec3..2352bf9 100644
--- a/nihav-indeo/src/codecs/mod.rs
+++ b/nihav-indeo/src/codecs/mod.rs
@@ -37,6 +37,8 @@ const INDEO_CODECS: &[DecoderInfo] = &[
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 },
diff --git a/nihav-indeo/src/demuxers/ivf.rs b/nihav-indeo/src/demuxers/ivf.rs
index 952e526..6ea4623 100644
--- a/nihav-indeo/src/demuxers/ivf.rs
+++ b/nihav-indeo/src/demuxers/ivf.rs
@@ -90,7 +90,7 @@ impl<'a> DemuxCore<'a> for IVFDemuxer<'a> {
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 {
diff --git a/nihav-registry/src/register.rs b/nihav-registry/src/register.rs
index 222d921..3a37892 100644
--- a/nihav-registry/src/register.rs
+++ b/nihav-registry/src/register.rs
@@ -165,6 +165,7 @@ static CODEC_REGISTER: &[CodecDescription] = &[
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"),