X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-codec-support%2Fsrc%2Fcodecs%2Fh263%2Fmod.rs;h=e357778175a840552b8b794945254a5cd04935f2;hp=33d71baa580a97d56ee9349ac6ed9d4ce7b5f8e2;hb=379524159c95f1c3639976ccf35f9d47cd9732ac;hpb=b4d5b8515e75383b4fc59ea2813c90c615d59a96 diff --git a/nihav-codec-support/src/codecs/h263/mod.rs b/nihav-codec-support/src/codecs/h263/mod.rs index 33d71ba..e357778 100644 --- a/nihav-codec-support/src/codecs/h263/mod.rs +++ b/nihav-codec-support/src/codecs/h263/mod.rs @@ -1,7 +1,8 @@ use nihav_core::codecs::DecoderResult; use super::{MV, ZERO_MV}; -use nihav_core::frame::NAVideoBuffer; +use nihav_core::frame::{NAVideoBuffer, NAVideoBufferRef}; +#[allow(clippy::erasing_op)] #[allow(clippy::many_single_char_names)] pub mod code; pub mod data; @@ -19,8 +20,10 @@ pub trait BlockDecoder { pub trait BlockDSP { fn idct(&self, blk: &mut [i16; 64]); - fn copy_blocks(&self, dst: &mut NAVideoBuffer, src: &NAVideoBuffer, xpos: usize, ypos: usize, w: usize, h: usize, mv: MV); - fn avg_blocks(&self, dst: &mut NAVideoBuffer, src: &NAVideoBuffer, xpos: usize, ypos: usize, w: usize, h: usize, mv: MV); + fn copy_blocks(&self, dst: &mut NAVideoBuffer, src: NAVideoBufferRef, xpos: usize, ypos: usize, mv: MV); + fn copy_blocks8x8(&self, dst: &mut NAVideoBuffer, src: NAVideoBufferRef, xpos: usize, ypos: usize, mvs: &[MV; 4]); + fn avg_blocks(&self, dst: &mut NAVideoBuffer, src: NAVideoBufferRef, xpos: usize, ypos: usize, mv: MV); + fn avg_blocks8x8(&self, dst: &mut NAVideoBuffer, src: NAVideoBufferRef, xpos: usize, ypos: usize, mvs: &[MV; 4]); fn filter_row(&self, buf: &mut NAVideoBuffer, mb_y: usize, mb_w: usize, cbpi: &CBPInfo); } @@ -355,9 +358,9 @@ impl CBPInfo { fn new() -> Self { CBPInfo{ cbp: Vec::new(), q: Vec::new(), mb_w: 0 } } fn reset(&mut self, mb_w: usize) { self.mb_w = mb_w; - self.cbp.truncate(0); + self.cbp.clear(); self.cbp.resize(self.mb_w * 2, 0); - self.q.truncate(0); + self.q.clear(); self.q.resize(self.mb_w * 2, 0); } fn update_row(&mut self) {