aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2019-11-27 08:20:16 +0100
committerKostya Shishkov <kostya.shishkov@gmail.com>2019-11-27 08:20:16 +0100
commit08a1fab72215ea7716f51adf7008f85372e80c71 (patch)
tree52a0cd0f586c1812fe81cf5d40f6e0fd017c3dd6
parent1ffd44c8a4064c0b57784e6791a95428692c1c41 (diff)
downloadnihav-08a1fab72215ea7716f51adf7008f85372e80c71.tar.gz
make decoders Send-able
-rw-r--r--nihav-commonfmt/src/codecs/aac.rs2
-rw-r--r--nihav-commonfmt/src/codecs/atrac3.rs2
-rw-r--r--nihav-commonfmt/src/codecs/clearvideo.rs4
-rw-r--r--nihav-commonfmt/src/codecs/pcm.rs2
-rw-r--r--nihav-commonfmt/src/codecs/sipro.rs2
-rw-r--r--nihav-commonfmt/src/codecs/ts102366.rs2
-rw-r--r--nihav-core/src/codecs/mod.rs4
-rw-r--r--nihav-duck/src/codecs/dkadpcm.rs4
-rw-r--r--nihav-duck/src/codecs/on2avc.rs4
-rw-r--r--nihav-duck/src/codecs/truemotion1.rs2
-rw-r--r--nihav-duck/src/codecs/truemotion2.rs2
-rw-r--r--nihav-duck/src/codecs/truemotion2x.rs2
-rw-r--r--nihav-duck/src/codecs/truemotionrt.rs2
-rw-r--r--nihav-duck/src/codecs/vp3.rs4
-rw-r--r--nihav-duck/src/codecs/vp5.rs2
-rw-r--r--nihav-duck/src/codecs/vp6.rs4
-rw-r--r--nihav-duck/src/codecs/vp7.rs2
-rw-r--r--nihav-game/src/codecs/bmv.rs4
-rw-r--r--nihav-game/src/codecs/bmv3.rs4
-rw-r--r--nihav-game/src/codecs/gremlinvideo.rs4
-rw-r--r--nihav-game/src/codecs/midivid.rs2
-rw-r--r--nihav-game/src/codecs/vmd.rs4
-rw-r--r--nihav-indeo/src/codecs/imc.rs4
-rw-r--r--nihav-indeo/src/codecs/indeo2.rs2
-rw-r--r--nihav-indeo/src/codecs/indeo3.rs2
-rw-r--r--nihav-indeo/src/codecs/indeo4.rs4
-rw-r--r--nihav-indeo/src/codecs/indeo5.rs4
-rw-r--r--nihav-indeo/src/codecs/intel263.rs2
-rw-r--r--nihav-indeo/src/codecs/ivibr.rs53
-rw-r--r--nihav-rad/src/codecs/bink2.rs2
-rw-r--r--nihav-rad/src/codecs/binkaud.rs4
-rw-r--r--nihav-rad/src/codecs/binkvid.rs2
-rw-r--r--nihav-rad/src/codecs/smacker.rs4
-rw-r--r--nihav-realmedia/src/codecs/cook.rs2
-rw-r--r--nihav-realmedia/src/codecs/ra144.rs2
-rw-r--r--nihav-realmedia/src/codecs/ra288.rs2
-rw-r--r--nihav-realmedia/src/codecs/ralf.rs2
-rw-r--r--nihav-realmedia/src/codecs/rv10.rs2
-rw-r--r--nihav-realmedia/src/codecs/rv20.rs2
-rw-r--r--nihav-realmedia/src/codecs/rv30.rs2
-rw-r--r--nihav-realmedia/src/codecs/rv3040.rs8
-rw-r--r--nihav-realmedia/src/codecs/rv40.rs2
-rw-r--r--nihav-realmedia/src/codecs/rv60.rs2
43 files changed, 86 insertions, 87 deletions
diff --git a/nihav-commonfmt/src/codecs/aac.rs b/nihav-commonfmt/src/codecs/aac.rs
index f24ba20..c2ef76a 100644
--- a/nihav-commonfmt/src/codecs/aac.rs
+++ b/nihav-commonfmt/src/codecs/aac.rs
@@ -1258,7 +1258,7 @@ impl NADecoder for AACDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(AACDecoder::new())
}
diff --git a/nihav-commonfmt/src/codecs/atrac3.rs b/nihav-commonfmt/src/codecs/atrac3.rs
index 86b2349..9d416e2 100644
--- a/nihav-commonfmt/src/codecs/atrac3.rs
+++ b/nihav-commonfmt/src/codecs/atrac3.rs
@@ -695,7 +695,7 @@ impl NADecoder for Atrac3Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Atrac3Decoder::new())
}
diff --git a/nihav-commonfmt/src/codecs/clearvideo.rs b/nihav-commonfmt/src/codecs/clearvideo.rs
index 953e3c0..c83666f 100644
--- a/nihav-commonfmt/src/codecs/clearvideo.rs
+++ b/nihav-commonfmt/src/codecs/clearvideo.rs
@@ -705,11 +705,11 @@ impl NADecoder for ClearVideoDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(ClearVideoDecoder::new(false))
}
-pub fn get_decoder_rm() -> Box<dyn NADecoder> {
+pub fn get_decoder_rm() -> Box<dyn NADecoder + Send> {
Box::new(ClearVideoDecoder::new(true))
}
diff --git a/nihav-commonfmt/src/codecs/pcm.rs b/nihav-commonfmt/src/codecs/pcm.rs
index 32c8de0..13eee09 100644
--- a/nihav-commonfmt/src/codecs/pcm.rs
+++ b/nihav-commonfmt/src/codecs/pcm.rs
@@ -60,6 +60,6 @@ impl NADecoder for PCMDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(PCMDecoder::new())
}
diff --git a/nihav-commonfmt/src/codecs/sipro.rs b/nihav-commonfmt/src/codecs/sipro.rs
index 44f7942..ec70bf1 100644
--- a/nihav-commonfmt/src/codecs/sipro.rs
+++ b/nihav-commonfmt/src/codecs/sipro.rs
@@ -736,7 +736,7 @@ impl NADecoder for SiproDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(SiproDecoder::new())
}
diff --git a/nihav-commonfmt/src/codecs/ts102366.rs b/nihav-commonfmt/src/codecs/ts102366.rs
index d6f2144..4675c05 100644
--- a/nihav-commonfmt/src/codecs/ts102366.rs
+++ b/nihav-commonfmt/src/codecs/ts102366.rs
@@ -1240,7 +1240,7 @@ impl NADecoder for AudioDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(AudioDecoder::new())
}
diff --git a/nihav-core/src/codecs/mod.rs b/nihav-core/src/codecs/mod.rs
index 7ce056d..9c59c40 100644
--- a/nihav-core/src/codecs/mod.rs
+++ b/nihav-core/src/codecs/mod.rs
@@ -261,7 +261,7 @@ pub trait NADecoder {
#[derive(Clone,Copy)]
pub struct DecoderInfo {
pub name: &'static str,
- pub get_decoder: fn () -> Box<dyn NADecoder>,
+ pub get_decoder: fn () -> Box<dyn NADecoder + Send>,
}
#[cfg(any(feature="blockdsp"))]
@@ -282,7 +282,7 @@ impl RegisteredDecoders {
pub fn add_decoder(&mut self, dec: DecoderInfo) {
self.decs.push(dec);
}
- pub fn find_decoder(&self, name: &str) -> Option<fn () -> Box<dyn NADecoder>> {
+ pub fn find_decoder(&self, name: &str) -> Option<fn () -> Box<dyn NADecoder + Send>> {
for &dec in self.decs.iter() {
if dec.name == name {
return Some(dec.get_decoder);
diff --git a/nihav-duck/src/codecs/dkadpcm.rs b/nihav-duck/src/codecs/dkadpcm.rs
index 755d0b7..92e2435 100644
--- a/nihav-duck/src/codecs/dkadpcm.rs
+++ b/nihav-duck/src/codecs/dkadpcm.rs
@@ -167,11 +167,11 @@ impl NADecoder for DuckADPCMDecoder {
}
}
-pub fn get_decoder_dk3() -> Box<dyn NADecoder> {
+pub fn get_decoder_dk3() -> Box<dyn NADecoder + Send> {
Box::new(DuckADPCMDecoder::new(true))
}
-pub fn get_decoder_dk4() -> Box<dyn NADecoder> {
+pub fn get_decoder_dk4() -> Box<dyn NADecoder + Send> {
Box::new(DuckADPCMDecoder::new(false))
}
diff --git a/nihav-duck/src/codecs/on2avc.rs b/nihav-duck/src/codecs/on2avc.rs
index 97c73c1..8740389 100644
--- a/nihav-duck/src/codecs/on2avc.rs
+++ b/nihav-duck/src/codecs/on2avc.rs
@@ -1048,11 +1048,11 @@ impl NADecoder for AVCDecoder {
}
}
-pub fn get_decoder_500() -> Box<dyn NADecoder> {
+pub fn get_decoder_500() -> Box<dyn NADecoder + Send> {
Box::new(AVCDecoder::new(500))
}
-pub fn get_decoder_501() -> Box<dyn NADecoder> {
+pub fn get_decoder_501() -> Box<dyn NADecoder + Send> {
Box::new(AVCDecoder::new(501))
}
diff --git a/nihav-duck/src/codecs/truemotion1.rs b/nihav-duck/src/codecs/truemotion1.rs
index d7bc8c8..4af75d1 100644
--- a/nihav-duck/src/codecs/truemotion1.rs
+++ b/nihav-duck/src/codecs/truemotion1.rs
@@ -659,7 +659,7 @@ impl NADecoder for TM1Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(TM1Decoder::new())
}
diff --git a/nihav-duck/src/codecs/truemotion2.rs b/nihav-duck/src/codecs/truemotion2.rs
index c222c44..d6b4732 100644
--- a/nihav-duck/src/codecs/truemotion2.rs
+++ b/nihav-duck/src/codecs/truemotion2.rs
@@ -581,7 +581,7 @@ impl NADecoder for TM2Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(TM2Decoder::new())
}
diff --git a/nihav-duck/src/codecs/truemotion2x.rs b/nihav-duck/src/codecs/truemotion2x.rs
index 584ee43..0effb13 100644
--- a/nihav-duck/src/codecs/truemotion2x.rs
+++ b/nihav-duck/src/codecs/truemotion2x.rs
@@ -692,7 +692,7 @@ impl NADecoder for TM2XDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(TM2XDecoder::new())
}
diff --git a/nihav-duck/src/codecs/truemotionrt.rs b/nihav-duck/src/codecs/truemotionrt.rs
index 97ad981..7119061 100644
--- a/nihav-duck/src/codecs/truemotionrt.rs
+++ b/nihav-duck/src/codecs/truemotionrt.rs
@@ -84,7 +84,7 @@ impl NADecoder for TMRTDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(TMRTDecoder::new())
}
diff --git a/nihav-duck/src/codecs/vp3.rs b/nihav-duck/src/codecs/vp3.rs
index b56c62c..acb783f 100644
--- a/nihav-duck/src/codecs/vp3.rs
+++ b/nihav-duck/src/codecs/vp3.rs
@@ -1848,11 +1848,11 @@ impl NADecoder for VP34Decoder {
}
}
-pub fn get_decoder_vp3() -> Box<NADecoder> {
+pub fn get_decoder_vp3() -> Box<NADecoder + Send> {
Box::new(VP34Decoder::new(3))
}
-pub fn get_decoder_vp4() -> Box<NADecoder> {
+pub fn get_decoder_vp4() -> Box<NADecoder + Send> {
Box::new(VP34Decoder::new(4))
}
diff --git a/nihav-duck/src/codecs/vp5.rs b/nihav-duck/src/codecs/vp5.rs
index d13ffab..0c901be 100644
--- a/nihav-duck/src/codecs/vp5.rs
+++ b/nihav-duck/src/codecs/vp5.rs
@@ -272,7 +272,7 @@ impl NADecoder for VP5Decoder {
}
}
-pub fn get_decoder() -> Box<NADecoder> {
+pub fn get_decoder() -> Box<NADecoder + Send> {
Box::new(VP5Decoder::new())
}
diff --git a/nihav-duck/src/codecs/vp6.rs b/nihav-duck/src/codecs/vp6.rs
index 803ce5e..26c4dc5 100644
--- a/nihav-duck/src/codecs/vp6.rs
+++ b/nihav-duck/src/codecs/vp6.rs
@@ -706,11 +706,11 @@ impl NADecoder for VP6Decoder {
}
}
-pub fn get_decoder_vp6() -> Box<NADecoder> {
+pub fn get_decoder_vp6() -> Box<NADecoder + Send> {
Box::new(VP6Decoder::new(false))
}
-pub fn get_decoder_vp6_alpha() -> Box<NADecoder> {
+pub fn get_decoder_vp6_alpha() -> Box<NADecoder + Send> {
Box::new(VP6Decoder::new(true))
}
diff --git a/nihav-duck/src/codecs/vp7.rs b/nihav-duck/src/codecs/vp7.rs
index 4fc7dea..a4d361c 100644
--- a/nihav-duck/src/codecs/vp7.rs
+++ b/nihav-duck/src/codecs/vp7.rs
@@ -1401,7 +1401,7 @@ impl NADecoder for VP7Decoder {
}
}
-pub fn get_decoder() -> Box<NADecoder> {
+pub fn get_decoder() -> Box<NADecoder + Send> {
Box::new(VP7Decoder::new())
}
diff --git a/nihav-game/src/codecs/bmv.rs b/nihav-game/src/codecs/bmv.rs
index 4417fb7..1ff32bb 100644
--- a/nihav-game/src/codecs/bmv.rs
+++ b/nihav-game/src/codecs/bmv.rs
@@ -221,7 +221,7 @@ impl NADecoder for BMVVideoDecoder {
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(BMVVideoDecoder::new())
}
@@ -299,7 +299,7 @@ impl NADecoder for BMVAudioDecoder {
}
}
-pub fn get_decoder_audio() -> Box<dyn NADecoder> {
+pub fn get_decoder_audio() -> Box<dyn NADecoder + Send> {
Box::new(BMVAudioDecoder::new())
}
diff --git a/nihav-game/src/codecs/bmv3.rs b/nihav-game/src/codecs/bmv3.rs
index ae1419a..8e71b8b 100644
--- a/nihav-game/src/codecs/bmv3.rs
+++ b/nihav-game/src/codecs/bmv3.rs
@@ -504,7 +504,7 @@ impl NADecoder for BMV3VideoDecoder {
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(BMV3VideoDecoder::new())
}
@@ -595,7 +595,7 @@ impl NADecoder for BMV3AudioDecoder {
}
}
-pub fn get_decoder_audio() -> Box<dyn NADecoder> {
+pub fn get_decoder_audio() -> Box<dyn NADecoder + Send> {
Box::new(BMV3AudioDecoder::new())
}
diff --git a/nihav-game/src/codecs/gremlinvideo.rs b/nihav-game/src/codecs/gremlinvideo.rs
index 67be656..0ec3861 100644
--- a/nihav-game/src/codecs/gremlinvideo.rs
+++ b/nihav-game/src/codecs/gremlinvideo.rs
@@ -460,7 +460,7 @@ impl NADecoder for GremlinVideoDecoder {
}
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(GremlinVideoDecoder::new())
}
@@ -554,7 +554,7 @@ impl NADecoder for GremlinAudioDecoder {
}
}
-pub fn get_decoder_audio() -> Box<dyn NADecoder> {
+pub fn get_decoder_audio() -> Box<dyn NADecoder + Send> {
Box::new(GremlinAudioDecoder::new())
}
diff --git a/nihav-game/src/codecs/midivid.rs b/nihav-game/src/codecs/midivid.rs
index 037248f..2a04a9e 100644
--- a/nihav-game/src/codecs/midivid.rs
+++ b/nihav-game/src/codecs/midivid.rs
@@ -175,7 +175,7 @@ impl NADecoder for MidividDecoder {
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(MidividDecoder::new())
}
diff --git a/nihav-game/src/codecs/vmd.rs b/nihav-game/src/codecs/vmd.rs
index abcb0af..a228707 100644
--- a/nihav-game/src/codecs/vmd.rs
+++ b/nihav-game/src/codecs/vmd.rs
@@ -270,7 +270,7 @@ impl NADecoder for VMDVideoDecoder {
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(VMDVideoDecoder::new())
}
@@ -443,7 +443,7 @@ impl NADecoder for VMDAudioDecoder {
}
}
-pub fn get_decoder_audio() -> Box<dyn NADecoder> {
+pub fn get_decoder_audio() -> Box<dyn NADecoder + Send> {
Box::new(VMDAudioDecoder::new())
}
diff --git a/nihav-indeo/src/codecs/imc.rs b/nihav-indeo/src/codecs/imc.rs
index 6840800..f8a4f28 100644
--- a/nihav-indeo/src/codecs/imc.rs
+++ b/nihav-indeo/src/codecs/imc.rs
@@ -926,11 +926,11 @@ impl NADecoder for IMCDecoder {
}
}
-pub fn get_decoder_imc() -> Box<dyn NADecoder> {
+pub fn get_decoder_imc() -> Box<dyn NADecoder + Send> {
Box::new(IMCDecoder::new(true))
}
-pub fn get_decoder_iac() -> Box<dyn NADecoder> {
+pub fn get_decoder_iac() -> Box<dyn NADecoder + Send> {
Box::new(IMCDecoder::new(false))
}
diff --git a/nihav-indeo/src/codecs/indeo2.rs b/nihav-indeo/src/codecs/indeo2.rs
index 56ec122..58131c8 100644
--- a/nihav-indeo/src/codecs/indeo2.rs
+++ b/nihav-indeo/src/codecs/indeo2.rs
@@ -362,7 +362,7 @@ impl NADecoder for Indeo2Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Indeo2Decoder::new())
}
diff --git a/nihav-indeo/src/codecs/indeo3.rs b/nihav-indeo/src/codecs/indeo3.rs
index 6e03cb3..2d79f63 100644
--- a/nihav-indeo/src/codecs/indeo3.rs
+++ b/nihav-indeo/src/codecs/indeo3.rs
@@ -788,7 +788,7 @@ impl NADecoder for Indeo3Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Indeo3Decoder::new())
}
diff --git a/nihav-indeo/src/codecs/indeo4.rs b/nihav-indeo/src/codecs/indeo4.rs
index 03918be..746e2eb 100644
--- a/nihav-indeo/src/codecs/indeo4.rs
+++ b/nihav-indeo/src/codecs/indeo4.rs
@@ -227,7 +227,7 @@ impl IndeoXParser for Indeo4Parser {
Ok(BandHeader::new(plane_no, band_no, mb_size, blk_size, mv_mode == 1, inherit_mv, false, inherit_qd, quant, rvmap_idx, num_corr, corr_map, blk_cb, tr, txtype))
}
- fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band: &BandHeader, tile: &mut IVITile, ref_tile: Option<Ref<IVITile>>, mv_scale: u8) -> DecoderResult<()> {
+ fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band: &BandHeader, tile: &mut IVITile, ref_tile: Option<&IVITile>, mv_scale: u8) -> DecoderResult<()> {
let mut mv_x = 0;
let mut mv_y = 0;
let mut mb_idx = 0;
@@ -761,7 +761,7 @@ const INDEO4_Q4_INTER: [&[u16; 16]; 5] = [
&INDEO4_QUANT4X4_INTER[3], &INDEO4_QUANT4X4_INTER[4]
];
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Indeo4Decoder::new())
}
diff --git a/nihav-indeo/src/codecs/indeo5.rs b/nihav-indeo/src/codecs/indeo5.rs
index 8111164..1910786 100644
--- a/nihav-indeo/src/codecs/indeo5.rs
+++ b/nihav-indeo/src/codecs/indeo5.rs
@@ -264,7 +264,7 @@ impl IndeoXParser for Indeo5Parser {
Ok(BandHeader::new(plane_no, band_no, self.mb_size[band_id], self.blk_size[band_id], self.is_hpel[band_id], inherit_mv, has_qdelta, inherit_qd, band_q, rvmap_idx, num_corr, corr_map, blk_cb, tr, txtype))
}
- fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band: &BandHeader, tile: &mut IVITile, ref_tile: Option<Ref<IVITile>>, mv_scale: u8) -> DecoderResult<()> {
+ fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band: &BandHeader, tile: &mut IVITile, ref_tile: Option<&IVITile>, mv_scale: u8) -> DecoderResult<()> {
let mut mv_x = 0;
let mut mv_y = 0;
let band_id = if pic_hdr.luma_bands == 4 { band.band_no + 1 } else { 0 };
@@ -714,7 +714,7 @@ const INDEO5_QSCALE4_INTER: [u8; 24] = [
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23
];
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Indeo5Decoder::new())
}
diff --git a/nihav-indeo/src/codecs/intel263.rs b/nihav-indeo/src/codecs/intel263.rs
index d7302ce..b42b5d2 100644
--- a/nihav-indeo/src/codecs/intel263.rs
+++ b/nihav-indeo/src/codecs/intel263.rs
@@ -410,7 +410,7 @@ impl NADecoder for Intel263Decoder {
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Intel263Decoder::new())
}
diff --git a/nihav-indeo/src/codecs/ivibr.rs b/nihav-indeo/src/codecs/ivibr.rs
index cfb073f..dd43afa 100644
--- a/nihav-indeo/src/codecs/ivibr.rs
+++ b/nihav-indeo/src/codecs/ivibr.rs
@@ -1,9 +1,8 @@
use std::mem;
-use std::rc::Rc;
-pub use std::cell::{Ref,RefCell};
use nihav_core::io::bitreader::*;
//use io::intcode::*;
use nihav_core::codecs::*;
+use nihav_core::frame::NABufferRef;
use super::ivi::*;
use super::ividsp::*;
@@ -364,12 +363,12 @@ fn align(val: usize, bits: u8) -> usize {
}
impl FrameData {
- fn new() -> Rc<RefCell<Self>> {
- Rc::new(RefCell::new(FrameData {
+ fn new() -> NABufferRef<Self> {
+ NABufferRef::new(FrameData {
plane_buf: [Vec::new(), Vec::new(), Vec::new(), Vec::new()],
plane_stride: [0, 0, 0, 0],
pic_hdr: PictureHeader::new_null(IVIFrameType::Intra),
- }))
+ })
}
fn realloc(&mut self, pic_hdr: &PictureHeader) -> DecoderResult<()> {
let width = align(pic_hdr.width, 6);
@@ -462,7 +461,7 @@ fn do_mc_b(dst: &mut [i16], dstride: usize, src1: &[i16], sstride1: usize, src2:
pub trait IndeoXParser {
fn decode_picture_header(&mut self, br: &mut BitReader) -> DecoderResult<PictureHeader>;
fn decode_band_header(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, plane: usize, band: usize) -> DecoderResult<BandHeader>;
- fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band_hdr: &BandHeader, tile: &mut IVITile, ref_tile: Option<Ref<IVITile>>, mv_scale: u8) -> DecoderResult<()>;
+ fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band_hdr: &BandHeader, tile: &mut IVITile, ref_tile: Option<&IVITile>, mv_scale: u8) -> DecoderResult<()>;
fn recombine_plane(&mut self, src: &[i16], sstride: usize, dst: &mut [u8], dstride: usize, w: usize, h: usize);
}
@@ -470,7 +469,7 @@ const MISSING_REF: usize = 42;
pub struct IVIDecoder {
ftype: IVIFrameType,
- frames: [Rc<RefCell<FrameData>>; 4],
+ frames: [NABufferRef<FrameData>; 4],
cur_frame: usize,
prev_frame: usize,
next_frame: usize,
@@ -482,7 +481,7 @@ pub struct IVIDecoder {
bref: Option<NABufferType>,
bands: Vec<BandHeader>,
- tiles: Vec<Rc<RefCell<IVITile>>>,
+ tiles: Vec<NABufferRef<IVITile>>,
num_tiles: [[usize; 4]; 4],
tile_start: [[usize; 4]; 4],
}
@@ -539,7 +538,7 @@ impl IVIDecoder {
while x < band_w {
let cur_w = if x + tile_w <= band_w { tile_w } else { band_w - x };
let tile = IVITile::new(band_xoff + x, band_yoff + y, cur_w, cur_h);
- self.tiles.push(Rc::new(RefCell::new(tile)));
+ self.tiles.push(NABufferRef::new(tile));
self.num_tiles[plane][band] += 1;
tstart += 1;
x += tile_w;
@@ -575,7 +574,7 @@ impl IVIDecoder {
};
for tile_no in tstart..tend {
{
- let mut tile = self.tiles[tile_no].borrow_mut();
+ let mut tile = self.tiles[tile_no].clone();
let mb_w = (tile.w + mb_size - 1) / mb_size;
let mb_h = (tile.h + mb_size - 1) / mb_size;
tile.mb_w = mb_w;
@@ -598,8 +597,8 @@ impl IVIDecoder {
validate!(tile_end > br.tell());
validate!(tile_end <= br.tell() + (br.left() as usize));
{
- let mut tile = self.tiles[tile_no].borrow_mut();
- let ref_tile: Option<Ref<IVITile>>;
+ let mut tile = self.tiles[tile_no].clone();
+ let ref_tile: Option<&IVITile>;
let mv_scale;
if (plane_no == 0) && (band_no == 0) {
mv_scale = 0;
@@ -607,7 +606,7 @@ impl IVIDecoder {
mv_scale = (((self.bands[0].mb_size >> 3) as i8) - ((band.mb_size >> 3) as i8)) as u8;
}
if plane_no != 0 || band_no != 0 {
- let rtile = self.tiles[0].borrow();
+ let rtile = &self.tiles[0];
if (tile.mb_w != rtile.mb_w) || (tile.mb_h != rtile.mb_h) {
ref_tile = None;
} else {
@@ -624,8 +623,8 @@ let skip_part = tile_end - br.tell();
br.skip(skip_part as u32)?;
} else {
{
- let mut tile = self.tiles[tile_no].borrow_mut();
- let ref_tile: Option<Ref<IVITile>>;
+ let mut tile = self.tiles[tile_no].clone();
+ let ref_tile: Option<&IVITile>;
let mv_scale;
if (plane_no == 0) && (band_no == 0) {
mv_scale = 0;
@@ -633,7 +632,7 @@ br.skip(skip_part as u32)?;
mv_scale = (((self.bands[0].mb_size >> 3) as i8) - ((band.mb_size >> 3) as i8)) as u8;
}
if plane_no != 0 || band_no != 0 {
- let rtile = self.tiles[0].borrow();
+ let rtile = &self.tiles[0];
if (tile.mb_w != rtile.mb_w) || (tile.mb_h != rtile.mb_h) {
ref_tile = None;
} else {
@@ -671,8 +670,8 @@ br.skip(skip_part as u32)?;
fn decode_tile(&mut self, br: &mut BitReader, band: &BandHeader, tile_no: usize, tr: &TrFunc, transform_dc: &TrFuncDC) -> DecoderResult<()> {
let mut mb_idx = 0;
let mut prev_dc: i32 = 0;
- let mut tile = self.tiles[tile_no].borrow_mut();
- let mut frame = self.frames[self.cur_frame].borrow_mut();
+ let mut tile = self.tiles[tile_no].clone();
+ let mut frame = self.frames[self.cur_frame].clone();
let stride = frame.plane_stride[band.plane_no];
let mut dstidx = tile.pos_x + tile.pos_y * stride;
@@ -700,7 +699,7 @@ br.skip(skip_part as u32)?;
} else {
idx = self.next_frame;
}
- let pf = self.frames[idx].borrow();
+ let pf = &self.frames[idx];
do_mc(&mut dst[dstidx + boff..], stride,
&pf.plane_buf[band.plane_no], pf.plane_stride[band.plane_no],
pos_x + mb_x * band.mb_size + (blk_no & 1) * band.blk_size,
@@ -708,8 +707,8 @@ br.skip(skip_part as u32)?;
pos_x, pos_x + tile_w, pos_y, pos_y + tile_h,
mb.mv_x, mb.mv_y, band.halfpel, band.blk_size);
} else {
- let pf = self.frames[self.prev_frame].borrow();
- let nf = self.frames[self.next_frame].borrow();
+ let pf = &self.frames[self.prev_frame];
+ let nf = &self.frames[self.next_frame];
do_mc_b(&mut dst[dstidx + boff..], stride,
&pf.plane_buf[band.plane_no], pf.plane_stride[band.plane_no],
&nf.plane_buf[band.plane_no], nf.plane_stride[band.plane_no],
@@ -755,7 +754,7 @@ br.skip(skip_part as u32)?;
} else {
idx = self.next_frame;
}
- let pf = self.frames[idx].borrow();
+ let pf = &self.frames[idx];
do_mc(&mut dst[dstidx + mb_x * band.blk_size..], stride,
&pf.plane_buf[band.plane_no], pf.plane_stride[band.plane_no],
pos_x + mb_x * band.mb_size,
@@ -763,8 +762,8 @@ br.skip(skip_part as u32)?;
pos_x, pos_x + tile_w, pos_y, pos_y + tile_h,
mb.mv_x, mb.mv_y, band.halfpel, band.blk_size);
} else {
- let pf = self.frames[self.prev_frame].borrow();
- let nf = self.frames[self.next_frame].borrow();
+ let pf = &self.frames[self.prev_frame];
+ let nf = &self.frames[self.next_frame];
do_mc_b(&mut dst[dstidx + mb_x * band.blk_size..], stride,
&pf.plane_buf[band.plane_no], pf.plane_stride[band.plane_no],
&nf.plane_buf[band.plane_no], nf.plane_stride[band.plane_no],
@@ -865,7 +864,7 @@ br.skip(skip_part as u32)?;
vinfo.set_height(pic_hdr.height);
let mut buftype = alloc_video_buffer(vinfo, 0)?;
self.realloc(&pic_hdr)?;
- self.frames[self.cur_frame].borrow_mut().realloc(&pic_hdr)?;
+ self.frames[self.cur_frame].realloc(&pic_hdr)?;
for plane in 0..3 {
let num_bands = if plane == 0 { pic_hdr.luma_bands } else { pic_hdr.chroma_bands };
@@ -873,7 +872,7 @@ br.skip(skip_part as u32)?;
self.decode_band(&pic_hdr, dec, br, plane, band)?;
}
if let NABufferType::Video(ref mut vb) = buftype {
- let mut frame = self.frames[self.cur_frame].borrow_mut();
+ let mut frame = self.frames[self.cur_frame].clone();
if num_bands == 1 {
frame.fill_plane(vb, plane);
} else {
@@ -887,7 +886,7 @@ br.skip(skip_part as u32)?;
}
}
if pic_hdr.transparent {
- let mut frame = self.frames[self.cur_frame].borrow_mut();
+ let mut frame = self.frames[self.cur_frame].clone();
let stride = frame.plane_stride[3];
read_trans_band_header(br, pic_hdr.width, pic_hdr.height, &mut frame.plane_buf[3], stride)?;
if let NABufferType::Video(ref mut vb) = buftype {
diff --git a/nihav-rad/src/codecs/bink2.rs b/nihav-rad/src/codecs/bink2.rs
index e56bff7..1ce05dd 100644
--- a/nihav-rad/src/codecs/bink2.rs
+++ b/nihav-rad/src/codecs/bink2.rs
@@ -1942,7 +1942,7 @@ impl NADecoder for Bink2Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(Bink2Decoder::new())
}
diff --git a/nihav-rad/src/codecs/binkaud.rs b/nihav-rad/src/codecs/binkaud.rs
index df0970e..9695ee4 100644
--- a/nihav-rad/src/codecs/binkaud.rs
+++ b/nihav-rad/src/codecs/binkaud.rs
@@ -278,11 +278,11 @@ impl NADecoder for BinkAudioDecoder {
}
}
-pub fn get_decoder_dct() -> Box<dyn NADecoder> {
+pub fn get_decoder_dct() -> Box<dyn NADecoder + Send> {
Box::new(BinkAudioDecoder::new(true))
}
-pub fn get_decoder_rdft() -> Box<dyn NADecoder> {
+pub fn get_decoder_rdft() -> Box<dyn NADecoder + Send> {
Box::new(BinkAudioDecoder::new(false))
}
diff --git a/nihav-rad/src/codecs/binkvid.rs b/nihav-rad/src/codecs/binkvid.rs
index 6d6c14a..89f9cf8 100644
--- a/nihav-rad/src/codecs/binkvid.rs
+++ b/nihav-rad/src/codecs/binkvid.rs
@@ -1263,7 +1263,7 @@ println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, sel
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(BinkDecoder::new())
}
diff --git a/nihav-rad/src/codecs/smacker.rs b/nihav-rad/src/codecs/smacker.rs
index 0faec8f..c22362b 100644
--- a/nihav-rad/src/codecs/smacker.rs
+++ b/nihav-rad/src/codecs/smacker.rs
@@ -469,7 +469,7 @@ impl NADecoder for SmackerVideoDecoder {
}
}
-pub fn get_decoder_video() -> Box<dyn NADecoder> {
+pub fn get_decoder_video() -> Box<dyn NADecoder + Send> {
Box::new(SmackerVideoDecoder::new())
}
@@ -595,7 +595,7 @@ impl NADecoder for SmackerAudioDecoder {
}
}
-pub fn get_decoder_audio() -> Box<dyn NADecoder> {
+pub fn get_decoder_audio() -> Box<dyn NADecoder + Send> {
Box::new(SmackerAudioDecoder::new())
}
diff --git a/nihav-realmedia/src/codecs/cook.rs b/nihav-realmedia/src/codecs/cook.rs
index 74364fc..5d88be6 100644
--- a/nihav-realmedia/src/codecs/cook.rs
+++ b/nihav-realmedia/src/codecs/cook.rs
@@ -676,7 +676,7 @@ impl NADecoder for CookDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(CookDecoder::new())
}
diff --git a/nihav-realmedia/src/codecs/ra144.rs b/nihav-realmedia/src/codecs/ra144.rs
index 2b70f04..394ab21 100644
--- a/nihav-realmedia/src/codecs/ra144.rs
+++ b/nihav-realmedia/src/codecs/ra144.rs
@@ -311,7 +311,7 @@ impl NADecoder for RA144Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RA144Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/ra288.rs b/nihav-realmedia/src/codecs/ra288.rs
index 251e47c..20008bb 100644
--- a/nihav-realmedia/src/codecs/ra288.rs
+++ b/nihav-realmedia/src/codecs/ra288.rs
@@ -201,7 +201,7 @@ impl NADecoder for RA288Decoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RA288Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/ralf.rs b/nihav-realmedia/src/codecs/ralf.rs
index c5a0f7f..b3cce73 100644
--- a/nihav-realmedia/src/codecs/ralf.rs
+++ b/nihav-realmedia/src/codecs/ralf.rs
@@ -471,7 +471,7 @@ impl NADecoder for RALFDecoder {
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RALFDecoder::new())
}
diff --git a/nihav-realmedia/src/codecs/rv10.rs b/nihav-realmedia/src/codecs/rv10.rs
index 9184b57..2426cd8 100644
--- a/nihav-realmedia/src/codecs/rv10.rs
+++ b/nihav-realmedia/src/codecs/rv10.rs
@@ -455,7 +455,7 @@ println!("???");
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RealVideo10Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/rv20.rs b/nihav-realmedia/src/codecs/rv20.rs
index b312a12..1db190f 100644
--- a/nihav-realmedia/src/codecs/rv20.rs
+++ b/nihav-realmedia/src/codecs/rv20.rs
@@ -519,7 +519,7 @@ const H263_MBB: &[MBB; 7] = &[
MBB{ blocks: 65536, bits: 14 },
];
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RealVideo20Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/rv30.rs b/nihav-realmedia/src/codecs/rv30.rs
index 8c11413..6da3fe2 100644
--- a/nihav-realmedia/src/codecs/rv30.rs
+++ b/nihav-realmedia/src/codecs/rv30.rs
@@ -164,7 +164,7 @@ println!("???");
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RealVideo30Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/rv3040.rs b/nihav-realmedia/src/codecs/rv3040.rs
index d19e3fe..39549eb 100644
--- a/nihav-realmedia/src/codecs/rv3040.rs
+++ b/nihav-realmedia/src/codecs/rv3040.rs
@@ -679,13 +679,13 @@ fn decode_mv(br: &mut BitReader) -> DecoderResult<MV> {
Ok(MV{ x, y })
}
-fn do_mc_16x16(dsp: &Box<dyn RV34DSP>, buf: &mut NAVideoBuffer<u8>, prevbuf: &NAVideoBuffer<u8>, mb_x: usize, mb_y: usize, mv: MV, avg: bool) {
+fn do_mc_16x16(dsp: &Box<dyn RV34DSP + Send>, buf: &mut NAVideoBuffer<u8>, prevbuf: &NAVideoBuffer<u8>, mb_x: usize, mb_y: usize, mv: MV, avg: bool) {
dsp.do_luma_mc (buf, prevbuf, mb_x * 16, mb_y * 16, mv, true, avg);
dsp.do_chroma_mc(buf, prevbuf, mb_x * 8, mb_y * 8, 1, mv, true, avg);
dsp.do_chroma_mc(buf, prevbuf, mb_x * 8, mb_y * 8, 2, mv, true, avg);
}
-fn do_mc_8x8(dsp: &Box<dyn RV34DSP>, buf: &mut NAVideoBuffer<u8>, prevbuf: &NAVideoBuffer<u8>, mb_x: usize, xoff: usize, mb_y: usize, yoff: usize, mv: MV, avg: bool) {
+fn do_mc_8x8(dsp: &Box<dyn RV34DSP + Send>, buf: &mut NAVideoBuffer<u8>, prevbuf: &NAVideoBuffer<u8>, mb_x: usize, xoff: usize, mb_y: usize, yoff: usize, mv: MV, avg: bool) {
dsp.do_luma_mc (buf, prevbuf, mb_x * 16 + xoff * 8, mb_y * 16 + yoff * 8, mv, false, avg);
dsp.do_chroma_mc(buf, prevbuf, mb_x * 8 + xoff * 4, mb_y * 8 + yoff * 4, 1, mv, false, avg);
dsp.do_chroma_mc(buf, prevbuf, mb_x * 8 + xoff * 4, mb_y * 8 + yoff * 4, 2, mv, false, avg);
@@ -717,7 +717,7 @@ fn do_avg(cdsp: &RV34CommonDSP, buf: &mut NAVideoBuffer<u8>, avg_buf: &NAVideoBu
pub struct RV34Decoder {
is_rv30: bool,
coderead: RV34Codes,
- dsp: Box<dyn RV34DSP>,
+ dsp: Box<dyn RV34DSP + Send>,
cdsp: RV34CommonDSP,
width: usize,
height: usize,
@@ -735,7 +735,7 @@ pub struct RV34Decoder {
}
impl RV34Decoder {
- pub fn new(is_rv30: bool, dsp: Box<dyn RV34DSP>) -> Self {
+ pub fn new(is_rv30: bool, dsp: Box<dyn RV34DSP + Send>) -> Self {
let tmp_vinfo = NAVideoInfo::new(16, 16, false, YUV420_FORMAT);
let vt = alloc_video_buffer(tmp_vinfo, 4).unwrap();
let vb = vt.get_vbuf();
diff --git a/nihav-realmedia/src/codecs/rv40.rs b/nihav-realmedia/src/codecs/rv40.rs
index bd1f75b..82f75f2 100644
--- a/nihav-realmedia/src/codecs/rv40.rs
+++ b/nihav-realmedia/src/codecs/rv40.rs
@@ -357,7 +357,7 @@ println!("???");
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RealVideo40Decoder::new())
}
diff --git a/nihav-realmedia/src/codecs/rv60.rs b/nihav-realmedia/src/codecs/rv60.rs
index 521025d..9fee646 100644
--- a/nihav-realmedia/src/codecs/rv60.rs
+++ b/nihav-realmedia/src/codecs/rv60.rs
@@ -1520,7 +1520,7 @@ println!("???");
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(RealVideo60Decoder::new())
}