From 08a1fab72215ea7716f51adf7008f85372e80c71 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Wed, 27 Nov 2019 08:20:16 +0100 Subject: [PATCH] make decoders Send-able --- nihav-commonfmt/src/codecs/aac.rs | 2 +- nihav-commonfmt/src/codecs/atrac3.rs | 2 +- nihav-commonfmt/src/codecs/clearvideo.rs | 4 +- nihav-commonfmt/src/codecs/pcm.rs | 2 +- nihav-commonfmt/src/codecs/sipro.rs | 2 +- nihav-commonfmt/src/codecs/ts102366.rs | 2 +- nihav-core/src/codecs/mod.rs | 4 +- nihav-duck/src/codecs/dkadpcm.rs | 4 +- nihav-duck/src/codecs/on2avc.rs | 4 +- nihav-duck/src/codecs/truemotion1.rs | 2 +- nihav-duck/src/codecs/truemotion2.rs | 2 +- nihav-duck/src/codecs/truemotion2x.rs | 2 +- nihav-duck/src/codecs/truemotionrt.rs | 2 +- nihav-duck/src/codecs/vp3.rs | 4 +- nihav-duck/src/codecs/vp5.rs | 2 +- nihav-duck/src/codecs/vp6.rs | 4 +- nihav-duck/src/codecs/vp7.rs | 2 +- nihav-game/src/codecs/bmv.rs | 4 +- nihav-game/src/codecs/bmv3.rs | 4 +- nihav-game/src/codecs/gremlinvideo.rs | 4 +- nihav-game/src/codecs/midivid.rs | 2 +- nihav-game/src/codecs/vmd.rs | 4 +- nihav-indeo/src/codecs/imc.rs | 4 +- nihav-indeo/src/codecs/indeo2.rs | 2 +- nihav-indeo/src/codecs/indeo3.rs | 2 +- nihav-indeo/src/codecs/indeo4.rs | 4 +- nihav-indeo/src/codecs/indeo5.rs | 4 +- nihav-indeo/src/codecs/intel263.rs | 2 +- nihav-indeo/src/codecs/ivibr.rs | 53 ++++++++++++------------ nihav-rad/src/codecs/bink2.rs | 2 +- nihav-rad/src/codecs/binkaud.rs | 4 +- nihav-rad/src/codecs/binkvid.rs | 2 +- nihav-rad/src/codecs/smacker.rs | 4 +- nihav-realmedia/src/codecs/cook.rs | 2 +- nihav-realmedia/src/codecs/ra144.rs | 2 +- nihav-realmedia/src/codecs/ra288.rs | 2 +- nihav-realmedia/src/codecs/ralf.rs | 2 +- nihav-realmedia/src/codecs/rv10.rs | 2 +- nihav-realmedia/src/codecs/rv20.rs | 2 +- nihav-realmedia/src/codecs/rv30.rs | 2 +- nihav-realmedia/src/codecs/rv3040.rs | 8 ++-- nihav-realmedia/src/codecs/rv40.rs | 2 +- nihav-realmedia/src/codecs/rv60.rs | 2 +- 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { Box::new(ClearVideoDecoder::new(false)) } -pub fn get_decoder_rm() -> Box { +pub fn get_decoder_rm() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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, + pub get_decoder: fn () -> Box, } #[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 Box> { + pub fn find_decoder(&self, name: &str) -> Option Box> { 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 { +pub fn get_decoder_dk3() -> Box { Box::new(DuckADPCMDecoder::new(true)) } -pub fn get_decoder_dk4() -> Box { +pub fn get_decoder_dk4() -> Box { 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 { +pub fn get_decoder_500() -> Box { Box::new(AVCDecoder::new(500)) } -pub fn get_decoder_501() -> Box { +pub fn get_decoder_501() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder_vp3() -> Box { Box::new(VP34Decoder::new(3)) } -pub fn get_decoder_vp4() -> Box { +pub fn get_decoder_vp4() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder_vp6() -> Box { Box::new(VP6Decoder::new(false)) } -pub fn get_decoder_vp6_alpha() -> Box { +pub fn get_decoder_vp6_alpha() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder_video() -> Box { Box::new(BMVVideoDecoder::new()) } @@ -299,7 +299,7 @@ impl NADecoder for BMVAudioDecoder { } } -pub fn get_decoder_audio() -> Box { +pub fn get_decoder_audio() -> Box { 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 { +pub fn get_decoder_video() -> Box { Box::new(BMV3VideoDecoder::new()) } @@ -595,7 +595,7 @@ impl NADecoder for BMV3AudioDecoder { } } -pub fn get_decoder_audio() -> Box { +pub fn get_decoder_audio() -> Box { 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 { +pub fn get_decoder_video() -> Box { Box::new(GremlinVideoDecoder::new()) } @@ -554,7 +554,7 @@ impl NADecoder for GremlinAudioDecoder { } } -pub fn get_decoder_audio() -> Box { +pub fn get_decoder_audio() -> Box { 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 { +pub fn get_decoder_video() -> Box { 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 { +pub fn get_decoder_video() -> Box { Box::new(VMDVideoDecoder::new()) } @@ -443,7 +443,7 @@ impl NADecoder for VMDAudioDecoder { } } -pub fn get_decoder_audio() -> Box { +pub fn get_decoder_audio() -> Box { 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 { +pub fn get_decoder_imc() -> Box { Box::new(IMCDecoder::new(true)) } -pub fn get_decoder_iac() -> Box { +pub fn get_decoder_iac() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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>, 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 { +pub fn get_decoder() -> Box { 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>, 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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> { - Rc::new(RefCell::new(FrameData { + fn new() -> NABufferRef { + 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; fn decode_band_header(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, plane: usize, band: usize) -> DecoderResult; - fn decode_mb_info(&mut self, br: &mut BitReader, pic_hdr: &PictureHeader, band_hdr: &BandHeader, tile: &mut IVITile, ref_tile: Option>, 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>; 4], + frames: [NABufferRef; 4], cur_frame: usize, prev_frame: usize, next_frame: usize, @@ -482,7 +481,7 @@ pub struct IVIDecoder { bref: Option, bands: Vec, - tiles: Vec>>, + tiles: Vec>, 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>; + 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>; + 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder_dct() -> Box { Box::new(BinkAudioDecoder::new(true)) } -pub fn get_decoder_rdft() -> Box { +pub fn get_decoder_rdft() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder_video() -> Box { Box::new(SmackerVideoDecoder::new()) } @@ -595,7 +595,7 @@ impl NADecoder for SmackerAudioDecoder { } } -pub fn get_decoder_audio() -> Box { +pub fn get_decoder_audio() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { 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 { Ok(MV{ x, y }) } -fn do_mc_16x16(dsp: &Box, buf: &mut NAVideoBuffer, prevbuf: &NAVideoBuffer, mb_x: usize, mb_y: usize, mv: MV, avg: bool) { +fn do_mc_16x16(dsp: &Box, buf: &mut NAVideoBuffer, prevbuf: &NAVideoBuffer, 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, buf: &mut NAVideoBuffer, prevbuf: &NAVideoBuffer, mb_x: usize, xoff: usize, mb_y: usize, yoff: usize, mv: MV, avg: bool) { +fn do_mc_8x8(dsp: &Box, buf: &mut NAVideoBuffer, prevbuf: &NAVideoBuffer, 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, avg_buf: &NAVideoBu pub struct RV34Decoder { is_rv30: bool, coderead: RV34Codes, - dsp: Box, + dsp: Box, cdsp: RV34CommonDSP, width: usize, height: usize, @@ -735,7 +735,7 @@ pub struct RV34Decoder { } impl RV34Decoder { - pub fn new(is_rv30: bool, dsp: Box) -> Self { + pub fn new(is_rv30: bool, dsp: Box) -> 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 { +pub fn get_decoder() -> Box { 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 { +pub fn get_decoder() -> Box { Box::new(RealVideo60Decoder::new()) } -- 2.30.2