projects
/
nihav.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
80aaa7e
)
add flush() to decoder interface
author
Kostya Shishkov
<kostya.shishkov@gmail.com>
Sat, 9 Nov 2019 17:57:34 +0000
(18:57 +0100)
committer
Kostya Shishkov
<kostya.shishkov@gmail.com>
Sat, 9 Nov 2019 17:57:34 +0000
(18:57 +0100)
44 files changed:
nihav-commonfmt/src/codecs/aac.rs
patch
|
blob
|
blame
|
history
nihav-commonfmt/src/codecs/atrac3.rs
patch
|
blob
|
blame
|
history
nihav-commonfmt/src/codecs/clearvideo.rs
patch
|
blob
|
blame
|
history
nihav-commonfmt/src/codecs/pcm.rs
patch
|
blob
|
blame
|
history
nihav-commonfmt/src/codecs/sipro.rs
patch
|
blob
|
blame
|
history
nihav-commonfmt/src/codecs/ts102366.rs
patch
|
blob
|
blame
|
history
nihav-core/src/codecs/mod.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/dkadpcm.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/on2avc.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/truemotion1.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/truemotion2.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/truemotion2x.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/truemotionrt.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/vp3.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/vp5.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/vp56.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/vp6.rs
patch
|
blob
|
blame
|
history
nihav-duck/src/codecs/vp7.rs
patch
|
blob
|
blame
|
history
nihav-game/src/codecs/bmv.rs
patch
|
blob
|
blame
|
history
nihav-game/src/codecs/bmv3.rs
patch
|
blob
|
blame
|
history
nihav-game/src/codecs/gremlinvideo.rs
patch
|
blob
|
blame
|
history
nihav-game/src/codecs/midivid.rs
patch
|
blob
|
blame
|
history
nihav-game/src/codecs/vmd.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/imc.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/indeo2.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/indeo3.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/indeo4.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/indeo5.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/intel263.rs
patch
|
blob
|
blame
|
history
nihav-indeo/src/codecs/ivibr.rs
patch
|
blob
|
blame
|
history
nihav-rad/src/codecs/bink2.rs
patch
|
blob
|
blame
|
history
nihav-rad/src/codecs/binkaud.rs
patch
|
blob
|
blame
|
history
nihav-rad/src/codecs/binkvid.rs
patch
|
blob
|
blame
|
history
nihav-rad/src/codecs/smacker.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/cook.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/ra144.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/ra288.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/ralf.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv10.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv20.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv30.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv3040.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv40.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/codecs/rv60.rs
patch
|
blob
|
blame
|
history
diff --git
a/nihav-commonfmt/src/codecs/aac.rs
b/nihav-commonfmt/src/codecs/aac.rs
index 04fff33ec212058c872718bb992de914449d8c25..aeb2d060ff60694619e19d6103fe74383d4c7614 100644
(file)
--- a/
nihav-commonfmt/src/codecs/aac.rs
+++ b/
nihav-commonfmt/src/codecs/aac.rs
@@
-1250,6
+1250,12
@@
impl NADecoder for AACDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ for pair in self.pairs.iter_mut() {
+ pair.ics[0].delay = [0.0; 1024];
+ pair.ics[1].delay = [0.0; 1024];
+ }
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-commonfmt/src/codecs/atrac3.rs
b/nihav-commonfmt/src/codecs/atrac3.rs
index c80bd360ff676ac8c7067025c717914cbced9658..441da8923a9d3695d9e5808bc22bd8ad2a4f516d 100644
(file)
--- a/
nihav-commonfmt/src/codecs/atrac3.rs
+++ b/
nihav-commonfmt/src/codecs/atrac3.rs
@@
-687,6
+687,12
@@
impl NADecoder for Atrac3Decoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ for ch_data in self.ch_data.iter_mut() {
+ ch_data.delay = [0.0; 1024];
+ ch_data.qmf_delay = [0.0; 64 * 3];
+ }
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-commonfmt/src/codecs/clearvideo.rs
b/nihav-commonfmt/src/codecs/clearvideo.rs
index 3e913a9dcc0a769d0adfab8b215809c87de12b11..790ea3e00b369d91a2e5b4fc3a1b6faccc983ba6 100644
(file)
--- a/
nihav-commonfmt/src/codecs/clearvideo.rs
+++ b/
nihav-commonfmt/src/codecs/clearvideo.rs
@@
-698,6
+698,9
@@
impl NADecoder for ClearVideoDecoder {
}
Ok(frm.into_ref())
}
}
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.frmmgr.clear();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-commonfmt/src/codecs/pcm.rs
b/nihav-commonfmt/src/codecs/pcm.rs
index 49e9dadcb760d548bde7d229edc63b9c4dd1c929..32c8de0a0682891aae32ec0c02333c0e3ecbbe19 100644
(file)
--- a/
nihav-commonfmt/src/codecs/pcm.rs
+++ b/
nihav-commonfmt/src/codecs/pcm.rs
@@
-56,6
+56,8
@@
impl NADecoder for PCMDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-commonfmt/src/codecs/sipro.rs
b/nihav-commonfmt/src/codecs/sipro.rs
index fd035c624ecb8b7125e9f2cf1c8bb86a8381c062..745feaf82af09885190668e2e283fc1a0c858acd 100644
(file)
--- a/
nihav-commonfmt/src/codecs/sipro.rs
+++ b/
nihav-commonfmt/src/codecs/sipro.rs
@@
-732,6
+732,8
@@
impl NADecoder for SiproDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-commonfmt/src/codecs/ts102366.rs
b/nihav-commonfmt/src/codecs/ts102366.rs
index 65b1b9e28eec85640721db607e68421dd1c6a3f1..62acaebd95278d5ebc1ea4df184410cc36c0bb9a 100644
(file)
--- a/
nihav-commonfmt/src/codecs/ts102366.rs
+++ b/
nihav-commonfmt/src/codecs/ts102366.rs
@@
-1235,6
+1235,9
@@
impl NADecoder for AudioDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.delay = [[0.0; BLOCK_LEN]; MAX_CHANNELS + 1];
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-core/src/codecs/mod.rs
b/nihav-core/src/codecs/mod.rs
index ee6f5cdc2bae6d5432a540abac063ed7e1ad0206..7ce056db4143aa455420d6d39dd010a176b91897 100644
(file)
--- a/
nihav-core/src/codecs/mod.rs
+++ b/
nihav-core/src/codecs/mod.rs
@@
-255,6
+255,7
@@
impl Default for NADecoderSupport {
pub trait NADecoder {
fn init(&mut self, supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()>;
fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef>;
pub trait NADecoder {
fn init(&mut self, supp: &mut NADecoderSupport, info: NACodecInfoRef) -> DecoderResult<()>;
fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef>;
+ fn flush(&mut self);
}
#[derive(Clone,Copy)]
}
#[derive(Clone,Copy)]
diff --git
a/nihav-duck/src/codecs/dkadpcm.rs
b/nihav-duck/src/codecs/dkadpcm.rs
index d339556d56fe089da0b1143540af66610723269c..24f5b5b8d95cb48575c40cbcc08431a0753521c9 100644
(file)
--- a/
nihav-duck/src/codecs/dkadpcm.rs
+++ b/
nihav-duck/src/codecs/dkadpcm.rs
@@
-163,6
+163,8
@@
impl NADecoder for DuckADPCMDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_dk3() -> Box<dyn NADecoder> {
}
pub fn get_decoder_dk3() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/on2avc.rs
b/nihav-duck/src/codecs/on2avc.rs
index 46880fac414b92a2a7adb240a8117dc11169dd11..8273437320f7e61502e5c1e2ede792f445471644 100644
(file)
--- a/
nihav-duck/src/codecs/on2avc.rs
+++ b/
nihav-duck/src/codecs/on2avc.rs
@@
-1044,6
+1044,8
@@
impl NADecoder for AVCDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_500() -> Box<dyn NADecoder> {
}
pub fn get_decoder_500() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/truemotion1.rs
b/nihav-duck/src/codecs/truemotion1.rs
index 44ff668f6ba1d02370d56c07826eab8f4ffb75ba..c313b137677407dd1fa8cbff619f16404e365a18 100644
(file)
--- a/
nihav-duck/src/codecs/truemotion1.rs
+++ b/
nihav-duck/src/codecs/truemotion1.rs
@@
-654,6
+654,9
@@
impl NADecoder for TM1Decoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.lastframe.reset();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/truemotion2.rs
b/nihav-duck/src/codecs/truemotion2.rs
index ecfce30837ba16088d4d71106ace65b62af61e93..c222c44c5aed1b27ae01c0e40f0461a89a5d6339 100644
(file)
--- a/
nihav-duck/src/codecs/truemotion2.rs
+++ b/
nihav-duck/src/codecs/truemotion2.rs
@@
-577,6
+577,8
@@
impl NADecoder for TM2Decoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/truemotion2x.rs
b/nihav-duck/src/codecs/truemotion2x.rs
index 16d1125f71d44bb1f93d722209faba5703c2b6fc..584ee43218ebbc04729d0b08434d4ee89a789700 100644
(file)
--- a/
nihav-duck/src/codecs/truemotion2x.rs
+++ b/
nihav-duck/src/codecs/truemotion2x.rs
@@
-688,6
+688,8
@@
impl NADecoder for TM2XDecoder {
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/truemotionrt.rs
b/nihav-duck/src/codecs/truemotionrt.rs
index ba2ff17f8154090e86c476af4569015f0e20b94a..97ad981aa61127d8d6fbe1eba9af827e0d083d42 100644
(file)
--- a/
nihav-duck/src/codecs/truemotionrt.rs
+++ b/
nihav-duck/src/codecs/truemotionrt.rs
@@
-80,6
+80,8
@@
impl NADecoder for TMRTDecoder {
frm.set_frame_type(FrameType::I);
Ok(frm.into_ref())
}
frm.set_frame_type(FrameType::I);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-duck/src/codecs/vp3.rs
b/nihav-duck/src/codecs/vp3.rs
index d25d27f9480d2e2d626e1620ab7c2410167140c2..dd71c8b9cb1e1271672efbce65a0475da0087283 100644
(file)
--- a/
nihav-duck/src/codecs/vp3.rs
+++ b/
nihav-duck/src/codecs/vp3.rs
@@
-1839,6
+1839,9
@@
impl NADecoder for VP34Decoder {
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.shuf.clear();
+ }
}
pub fn get_decoder_vp3() -> Box<NADecoder> {
}
pub fn get_decoder_vp3() -> Box<NADecoder> {
diff --git
a/nihav-duck/src/codecs/vp5.rs
b/nihav-duck/src/codecs/vp5.rs
index abfd4d0af88b73a1c77c2361e55c6d000fd3f9c2..d13ffabfbd1376af8db95b38a1fa472a28cf511d 100644
(file)
--- a/
nihav-duck/src/codecs/vp5.rs
+++ b/
nihav-duck/src/codecs/vp5.rs
@@
-267,6
+267,9
@@
impl NADecoder for VP5Decoder {
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
pub fn get_decoder() -> Box<NADecoder> {
}
pub fn get_decoder() -> Box<NADecoder> {
diff --git
a/nihav-duck/src/codecs/vp56.rs
b/nihav-duck/src/codecs/vp56.rs
index d0a991f32869c6d0175c6966dc0316bace200a58..28b1f0695b82d78cde10a9d1b4475a2910ea268d 100644
(file)
--- a/
nihav-duck/src/codecs/vp56.rs
+++ b/
nihav-duck/src/codecs/vp56.rs
@@
-428,6
+428,9
@@
impl VP56Decoder {
self.set_dimensions(vinfo.get_width(), vinfo.get_height());
Ok(())
}
self.set_dimensions(vinfo.get_width(), vinfo.get_height());
Ok(())
}
+ pub fn flush(&mut self) {
+ self.shuf.clear();
+ }
pub fn decode_frame(&mut self, supp: &mut NADecoderSupport, src: &[u8], br: &mut dyn VP56Parser) -> DecoderResult<(NABufferType, FrameType)> {
let aoffset;
let mut bc;
pub fn decode_frame(&mut self, supp: &mut NADecoderSupport, src: &[u8], br: &mut dyn VP56Parser) -> DecoderResult<(NABufferType, FrameType)> {
let aoffset;
let mut bc;
diff --git
a/nihav-duck/src/codecs/vp6.rs
b/nihav-duck/src/codecs/vp6.rs
index 1cf6a78745a9bac1573911bc41d8295f54bcdfe4..803ce5ee417ead96dfddfb7253187c03eba9ac34 100644
(file)
--- a/
nihav-duck/src/codecs/vp6.rs
+++ b/
nihav-duck/src/codecs/vp6.rs
@@
-701,6
+701,9
@@
impl NADecoder for VP6Decoder {
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
pub fn get_decoder_vp6() -> Box<NADecoder> {
}
pub fn get_decoder_vp6() -> Box<NADecoder> {
diff --git
a/nihav-duck/src/codecs/vp7.rs
b/nihav-duck/src/codecs/vp7.rs
index ccdb5dd22c519721ae5e337af7c7fe23f5977d8b..b96da83bfe40832c16cfe5b074403c42085208e7 100644
(file)
--- a/
nihav-duck/src/codecs/vp7.rs
+++ b/
nihav-duck/src/codecs/vp7.rs
@@
-1392,6
+1392,9
@@
impl NADecoder for VP7Decoder {
frm.set_frame_type(if self.dstate.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.dstate.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.shuf.clear();
+ }
}
pub fn get_decoder() -> Box<NADecoder> {
}
pub fn get_decoder() -> Box<NADecoder> {
diff --git
a/nihav-game/src/codecs/bmv.rs
b/nihav-game/src/codecs/bmv.rs
index f2458af2acafe42979b57d88504e2b0159213663..902ae513bee4fc5d312bcf840bd0151cb460f29d 100644
(file)
--- a/
nihav-game/src/codecs/bmv.rs
+++ b/
nihav-game/src/codecs/bmv.rs
@@
-216,6
+216,8
@@
impl NADecoder for BMVVideoDecoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
}
@@
-293,6
+295,8
@@
impl NADecoder for BMVAudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
diff --git
a/nihav-game/src/codecs/bmv3.rs
b/nihav-game/src/codecs/bmv3.rs
index efc3c7edde037f0ba83008cb6e60d11fcaf33724..47378af1459ea64fb2a556ab239b999aff9fee17 100644
(file)
--- a/
nihav-game/src/codecs/bmv3.rs
+++ b/
nihav-game/src/codecs/bmv3.rs
@@
-499,6
+499,8
@@
impl NADecoder for BMV3VideoDecoder {
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
}
@@
-589,6
+591,8
@@
impl NADecoder for BMV3AudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
diff --git
a/nihav-game/src/codecs/gremlinvideo.rs
b/nihav-game/src/codecs/gremlinvideo.rs
index 621e23c90d741cdfeb2a2a78cddad3c73872c047..67be656be3596fdab79aeb0d7cfabbe00668241c 100644
(file)
--- a/
nihav-game/src/codecs/gremlinvideo.rs
+++ b/
nihav-game/src/codecs/gremlinvideo.rs
@@
-456,6
+456,8
@@
impl NADecoder for GremlinVideoDecoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_video() -> Box<dyn NADecoder> {
}
pub fn get_decoder_video() -> Box<dyn NADecoder> {
@@
-548,6
+550,8
@@
impl NADecoder for GremlinAudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
diff --git
a/nihav-game/src/codecs/midivid.rs
b/nihav-game/src/codecs/midivid.rs
index 299e5ac800128a779097c9275c376c20d441ad10..037248fc8c11630e0fd96d157cc824bdad247cfe 100644
(file)
--- a/
nihav-game/src/codecs/midivid.rs
+++ b/
nihav-game/src/codecs/midivid.rs
@@
-169,6
+169,9
@@
impl NADecoder for MidividDecoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.hams.clear();
+ }
}
}
diff --git
a/nihav-game/src/codecs/vmd.rs
b/nihav-game/src/codecs/vmd.rs
index 428471683f272964ab283763490ec310684f5421..e7f724f2577bd163c891e78fb1bd3dd5740438e0 100644
(file)
--- a/
nihav-game/src/codecs/vmd.rs
+++ b/
nihav-game/src/codecs/vmd.rs
@@
-264,6
+264,9
@@
impl NADecoder for VMDVideoDecoder {
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if is_intra { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.hams.clear();
+ }
}
}
@@
-436,6
+439,8
@@
impl NADecoder for VMDAudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
diff --git
a/nihav-indeo/src/codecs/imc.rs
b/nihav-indeo/src/codecs/imc.rs
index c89552273a750b70849a48e44eacc1217932ff18..4b7c9908e511bbc37e163b12ed3313def9ef2103 100644
(file)
--- a/
nihav-indeo/src/codecs/imc.rs
+++ b/
nihav-indeo/src/codecs/imc.rs
@@
-922,6
+922,8
@@
impl NADecoder for IMCDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_imc() -> Box<dyn NADecoder> {
}
pub fn get_decoder_imc() -> Box<dyn NADecoder> {
diff --git
a/nihav-indeo/src/codecs/indeo2.rs
b/nihav-indeo/src/codecs/indeo2.rs
index a022ec4af1a62d7781c72fbdf5d6819c99643219..56ec122594ce2f2e060a0d1c54d33329b6c8f1e9 100644
(file)
--- a/
nihav-indeo/src/codecs/indeo2.rs
+++ b/
nihav-indeo/src/codecs/indeo2.rs
@@
-357,6
+357,9
@@
impl NADecoder for Indeo2Decoder {
Ok(frm.into_ref())
}
}
Ok(frm.into_ref())
}
}
+ fn flush(&mut self) {
+ self.frmmgr.clear();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-indeo/src/codecs/indeo3.rs
b/nihav-indeo/src/codecs/indeo3.rs
index 9687f94a0fa217695b07200aa47c8f755a5168a3..6e03cb3b308da41ed49dc8b065d9c521fc696df0 100644
(file)
--- a/
nihav-indeo/src/codecs/indeo3.rs
+++ b/
nihav-indeo/src/codecs/indeo3.rs
@@
-783,6
+783,9
@@
impl NADecoder for Indeo3Decoder {
frm.set_frame_type(if intraframe { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if intraframe { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.bufs.reset();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-indeo/src/codecs/indeo4.rs
b/nihav-indeo/src/codecs/indeo4.rs
index 15cae6d2ad2eb80bfd33849979b627eb592d80f5..03918bed238c544604e0f43f346c1a12a07f1a3c 100644
(file)
--- a/
nihav-indeo/src/codecs/indeo4.rs
+++ b/
nihav-indeo/src/codecs/indeo4.rs
@@
-455,6
+455,9
@@
impl NADecoder for Indeo4Decoder {
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
const INDEO4_PICTURE_SIZE_TAB: [[usize; 2]; 7] = [
}
const INDEO4_PICTURE_SIZE_TAB: [[usize; 2]; 7] = [
diff --git
a/nihav-indeo/src/codecs/indeo5.rs
b/nihav-indeo/src/codecs/indeo5.rs
index eec603a08bde181e8ac39775ffa644f03bd3990c..81111647d7d64d175cdc124f9bb9b62a29c54d8f 100644
(file)
--- a/
nihav-indeo/src/codecs/indeo5.rs
+++ b/
nihav-indeo/src/codecs/indeo5.rs
@@
-530,6
+530,9
@@
impl NADecoder for Indeo5Decoder {
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
const INDEO5_PICTURE_SIZE_TAB: [[usize; 2]; 15] = [
}
const INDEO5_PICTURE_SIZE_TAB: [[usize; 2]; 15] = [
diff --git
a/nihav-indeo/src/codecs/intel263.rs
b/nihav-indeo/src/codecs/intel263.rs
index fb23bfce77894b091e3eff3dbd2d6b5a437b54f3..d7302ce444aeac643fa46508eb89e679b5fa9407 100644
(file)
--- a/
nihav-indeo/src/codecs/intel263.rs
+++ b/
nihav-indeo/src/codecs/intel263.rs
@@
-404,6
+404,9
@@
impl NADecoder for Intel263Decoder {
frm.set_frame_type(if self.dec.is_intra() { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.dec.is_intra() { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
}
diff --git
a/nihav-indeo/src/codecs/ivibr.rs
b/nihav-indeo/src/codecs/ivibr.rs
index 029b81592f11d4415d4a269a509f3c8c9ad06ebc..cfb073f8baad7fe3231e68ab742bb31dc8b6bb99 100644
(file)
--- a/
nihav-indeo/src/codecs/ivibr.rs
+++ b/
nihav-indeo/src/codecs/ivibr.rs
@@
-945,6
+945,14
@@
br.skip(skip_part as u32)?;
res
}
res
}
+ pub fn flush(&mut self) {
+ self.prev_frame = MISSING_REF;
+ self.next_frame = MISSING_REF;
+ self.iref_0 = MISSING_REF;
+ self.iref_1 = MISSING_REF;
+ self.scal_ref = MISSING_REF;
+ }
+
pub fn is_intra(&self) -> bool {
self.ftype.is_intra()
}
pub fn is_intra(&self) -> bool {
self.ftype.is_intra()
}
diff --git
a/nihav-rad/src/codecs/bink2.rs
b/nihav-rad/src/codecs/bink2.rs
index 8c094789b460b3549c041883b6f68ccb71173712..e56bff7fc192bc6137e82eab93074c98221b37ea 100644
(file)
--- a/
nihav-rad/src/codecs/bink2.rs
+++ b/
nihav-rad/src/codecs/bink2.rs
@@
-1937,6
+1937,9
@@
impl NADecoder for Bink2Decoder {
frm.set_frame_type(if self.key_frame { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.key_frame { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.ips.clear();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-rad/src/codecs/binkaud.rs
b/nihav-rad/src/codecs/binkaud.rs
index b0c4fc2305101b07702dc27898820cf065e6dfee..86f4fb0c55b1c38440515bedcaddb05da9d61bbe 100644
(file)
--- a/
nihav-rad/src/codecs/binkaud.rs
+++ b/
nihav-rad/src/codecs/binkaud.rs
@@
-273,6
+273,9
@@
impl NADecoder for BinkAudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ self.delay = [[0.0; 256]; 2];
+ }
}
pub fn get_decoder_dct() -> Box<dyn NADecoder> {
}
pub fn get_decoder_dct() -> Box<dyn NADecoder> {
diff --git
a/nihav-rad/src/codecs/binkvid.rs
b/nihav-rad/src/codecs/binkvid.rs
index 69e30fe2a65d9abbb9664a91aa822648e03901cc..6d6c14acd78fbba82d31790187fc7bdbea6dc9b9 100644
(file)
--- a/
nihav-rad/src/codecs/binkvid.rs
+++ b/
nihav-rad/src/codecs/binkvid.rs
@@
-1258,6
+1258,9
@@
println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, sel
frm.set_frame_type(FrameType::P);
Ok(frm.into_ref())
}
frm.set_frame_type(FrameType::P);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.ips.clear();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-rad/src/codecs/smacker.rs
b/nihav-rad/src/codecs/smacker.rs
index 99d40d68b4bd5dc9fac5936bf5e4b121ca740616..cb7d0ba921bc7f2a1aafcb6dfa2dca8638ecdbac 100644
(file)
--- a/
nihav-rad/src/codecs/smacker.rs
+++ b/
nihav-rad/src/codecs/smacker.rs
@@
-465,6
+465,8
@@
impl NADecoder for SmackerVideoDecoder {
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
frm.set_frame_type(ftype);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_video() -> Box<dyn NADecoder> {
}
pub fn get_decoder_video() -> Box<dyn NADecoder> {
@@
-589,6
+591,8
@@
impl NADecoder for SmackerAudioDecoder {
Err(DecoderError::InvalidData)
}
}
Err(DecoderError::InvalidData)
}
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
}
pub fn get_decoder_audio() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/cook.rs
b/nihav-realmedia/src/codecs/cook.rs
index 62a28112bfe496f1647cc5920f6bbb23909564cc..a1a32e48788592214f4c39475c095c1868e37a51 100644
(file)
--- a/
nihav-realmedia/src/codecs/cook.rs
+++ b/
nihav-realmedia/src/codecs/cook.rs
@@
-669,6
+669,11
@@
impl NADecoder for CookDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ for pair in self.pairs.iter_mut() {
+ pair.delay = [[0.0; MAX_SAMPLES]; 2];
+ }
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/ra144.rs
b/nihav-realmedia/src/codecs/ra144.rs
index 87edae96844994999a9ad8ef818e5f2c07d44674..4e8a6a549625214a11bc1bdf92c324261ef9bf74 100644
(file)
--- a/
nihav-realmedia/src/codecs/ra144.rs
+++ b/
nihav-realmedia/src/codecs/ra144.rs
@@
-307,6
+307,8
@@
impl NADecoder for RA144Decoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/ra288.rs
b/nihav-realmedia/src/codecs/ra288.rs
index 9a30ab467967958ef4ff7510a5209f1f06a77f0b..ef8faaea8e531c82e97fc63258cd99e50ebeecd5 100644
(file)
--- a/
nihav-realmedia/src/codecs/ra288.rs
+++ b/
nihav-realmedia/src/codecs/ra288.rs
@@
-197,6
+197,8
@@
impl NADecoder for RA288Decoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/ralf.rs
b/nihav-realmedia/src/codecs/ralf.rs
index c4728620098bdd328ff1ea2b69b4a94f3b655d33..7bcab6bdbfce8fc85571382e9da4e6635a2f92b5 100644
(file)
--- a/
nihav-realmedia/src/codecs/ralf.rs
+++ b/
nihav-realmedia/src/codecs/ralf.rs
@@
-467,6
+467,8
@@
impl NADecoder for RALFDecoder {
frm.set_keyframe(true);
Ok(frm.into_ref())
}
frm.set_keyframe(true);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/rv10.rs
b/nihav-realmedia/src/codecs/rv10.rs
index d6d4dc6c957e64581ddae72a1bdcffadf86968d5..9184b5718b5c735a73d42c0c96f1f0512264fe8c 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv10.rs
+++ b/
nihav-realmedia/src/codecs/rv10.rs
@@
-449,6
+449,9
@@
println!("???");
frm.set_frame_type(if self.dec.is_intra() { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
frm.set_frame_type(if self.dec.is_intra() { FrameType::I } else { FrameType::P });
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
}
diff --git
a/nihav-realmedia/src/codecs/rv20.rs
b/nihav-realmedia/src/codecs/rv20.rs
index 81556d88d9c00afddbd3c5c00627a0095480de2c..b312a128c8c4e5e4d0e60562fcb127e1185b4248 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv20.rs
+++ b/
nihav-realmedia/src/codecs/rv20.rs
@@
-503,6
+503,9
@@
impl NADecoder for RealVideo20Decoder {
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
frm.set_frame_type(self.dec.get_frame_type());
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
struct MBB { blocks: usize, bits: u8 }
}
struct MBB { blocks: usize, bits: u8 }
diff --git
a/nihav-realmedia/src/codecs/rv30.rs
b/nihav-realmedia/src/codecs/rv30.rs
index d42317642d45d9da38fe731968a86f57849d11cf..8c1141311a4265e2a361bc809f80c30ad0b88e5e 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv30.rs
+++ b/
nihav-realmedia/src/codecs/rv30.rs
@@
-159,6
+159,9
@@
println!("???");
frm.set_frame_type(ftype);//if ftype == FrameType::B { FrameType::Skip } else { ftype } );
Ok(frm.into_ref())
}
frm.set_frame_type(ftype);//if ftype == FrameType::B { FrameType::Skip } else { ftype } );
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/rv3040.rs
b/nihav-realmedia/src/codecs/rv3040.rs
index dde0b04774ae413c54ae6b0949228e2b5a60e405..640de417ebeb572a8ad0a5b145feb96a54dadb4a 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv3040.rs
+++ b/
nihav-realmedia/src/codecs/rv3040.rs
@@
-1250,4
+1250,7
@@
impl RV34Decoder {
Ok((NABufferType::Video(buf), hdr0.ftype, ts))
}
Ok((NABufferType::Video(buf), hdr0.ftype, ts))
}
+ pub fn flush(&mut self) {
+ self.ipbs.clear();
+ }
}
}
diff --git
a/nihav-realmedia/src/codecs/rv40.rs
b/nihav-realmedia/src/codecs/rv40.rs
index 7586aae78c3b8a000ace07942faaa9f71cedcb2b..bd1f75bc45482a0875e757a33c304365f253ed48 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv40.rs
+++ b/
nihav-realmedia/src/codecs/rv40.rs
@@
-352,6
+352,9
@@
println!("???");
frm.set_pts(Some(ts));
Ok(frm.into_ref())
}
frm.set_pts(Some(ts));
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.dec.flush();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {
diff --git
a/nihav-realmedia/src/codecs/rv60.rs
b/nihav-realmedia/src/codecs/rv60.rs
index a4cf919cb8337841acb5f58ace5a06ccb131e060..bf89a5151361423cddb78f8b979c18417a7aec14 100644
(file)
--- a/
nihav-realmedia/src/codecs/rv60.rs
+++ b/
nihav-realmedia/src/codecs/rv60.rs
@@
-1475,6
+1475,9
@@
println!("???");
frm.set_frame_type(hdr.ftype);
Ok(frm.into_ref())
}
frm.set_frame_type(hdr.ftype);
Ok(frm.into_ref())
}
+ fn flush(&mut self) {
+ self.ipbs.clear();
+ }
}
pub fn get_decoder() -> Box<dyn NADecoder> {
}
pub fn get_decoder() -> Box<dyn NADecoder> {