($c1 * 6) * ($s[$o] as i32) + ($c1 * 9) * ($s[$o + 1] as i32) + ($c1) * ($s[$o + 2] as i32)
);
($s: ident, $o: expr, $c1: expr, $d1: expr, $d2: expr) => (
($c1 * 6) * ($s[$o] as i32) + ($c1 * 9) * ($s[$o + 1] as i32) + ($c1) * ($s[$o + 2] as i32)
);
($s: ident, $o: expr, $c1: expr, $d1: expr, $d2: expr) => (
);
($s: ident, $o: expr, $ss: expr, $c1: expr, $c2: expr, $d1: expr, $d2: expr) => (
((mc_matrix!($s, $o - $ss, -1, $d1, $d2) +
);
($s: ident, $o: expr, $ss: expr, $c1: expr, $c2: expr, $d1: expr, $d2: expr) => (
((mc_matrix!($s, $o - $ss, -1, $d1, $d2) +
fn rv30_chroma_mc(dst: &mut [u8], mut didx: usize, dstride: usize, src: &[u8], mut sidx: usize, sstride: usize, size: usize, x: usize, y: usize) {
if (x == 0) && (y == 0) {
for _ in 0..size {
fn rv30_chroma_mc(dst: &mut [u8], mut didx: usize, dstride: usize, src: &[u8], mut sidx: usize, sstride: usize, size: usize, x: usize, y: usize) {
if (x == 0) && (y == 0) {
for _ in 0..size {
pub struct RV30DSP {
luma_mc: [[fn (&mut [u8], usize, usize, &[u8], usize, usize); 9]; 2],
}
pub struct RV30DSP {
luma_mc: [[fn (&mut [u8], usize, usize, &[u8], usize, usize); 9]; 2],
}
const RV30_EDGE2: [isize; 3] = [ 0, 2, 2 ];
impl RV34DSP for RV30DSP {
const RV30_EDGE2: [isize; 3] = [ 0, 2, 2 ];
impl RV34DSP for RV30DSP {
- fn loop_filter(&self, frame: &mut NAVideoBuffer<u8>, _ftype: FrameType, mbinfo: &[RV34MBInfo], mb_w: usize, row: usize) {
+ #[allow(clippy::cognitive_complexity)]
+ fn loop_filter(&self, frame: &mut NAVideoBuffer<u8>, _ftype: FrameType, mbinfo: &[RV34MBInfo], mb_w: usize, _mb_h: usize, row: usize) {
let size: usize = if use16 { 16 } else { 8 };
let dstride = frame.get_stride(0);
let doffset = frame.get_offset(0) + (if !avg { x + y * dstride } else { 0 });
let size: usize = if use16 { 16 } else { 8 };
let dstride = frame.get_stride(0);
let doffset = frame.get_offset(0) + (if !avg { x + y * dstride } else { 0 });
let dst: &mut [u8] = data.as_mut_slice();
let (w_, h_) = prev_frame.get_dimensions(0);
let dst: &mut [u8] = data.as_mut_slice();
let (w_, h_) = prev_frame.get_dimensions(0);
self.luma_mc[if use16 { 0 } else { 1 }][mode](dst, doffset, dstride, src, soffset, sstride);
} else {
let mut ebuf: [u8; 32*20] = [0; 32*20];
self.luma_mc[if use16 { 0 } else { 1 }][mode](dst, doffset, dstride, src, soffset, sstride);
} else {
let mut ebuf: [u8; 32*20] = [0; 32*20];
- edge_emu(prev_frame, (x as isize) + (dx as isize) - 1, (y as isize) + (dy as isize) - 1, 16+3, 16+3, &mut ebuf, 32, 0);
+ edge_emu(prev_frame, (x as isize) + (dx as isize) - 1, (y as isize) + (dy as isize) - 1, 16+3, 16+3, &mut ebuf, 32, 0, 4);
self.luma_mc[if use16 { 0 } else { 1 }][mode](dst, doffset, dstride, &ebuf, 32 + 1, 32);
}
}
self.luma_mc[if use16 { 0 } else { 1 }][mode](dst, doffset, dstride, &ebuf, 32 + 1, 32);
}
}
let size: usize = if use8 { 8 } else { 4 };
let dstride = frame.get_stride(comp);
let doffset = frame.get_offset(comp) + (if !avg { x + y * dstride } else { 0 });
let size: usize = if use8 { 8 } else { 4 };
let dstride = frame.get_stride(comp);
let doffset = frame.get_offset(comp) + (if !avg { x + y * dstride } else { 0 });
let dst: &mut [u8] = data.as_mut_slice();
let (w_, h_) = prev_frame.get_dimensions(comp);
let dst: &mut [u8] = data.as_mut_slice();
let (w_, h_) = prev_frame.get_dimensions(comp);
rv30_chroma_mc(dst, doffset, dstride, src, soffset, sstride, size, cx, cy);
} else {
let mut ebuf: [u8; 16*10] = [0; 16*10];
rv30_chroma_mc(dst, doffset, dstride, src, soffset, sstride, size, cx, cy);
} else {
let mut ebuf: [u8; 16*10] = [0; 16*10];
- edge_emu(prev_frame, (x as isize) + (dx as isize), (y as isize) + (dy as isize), 8+1, 8+1, &mut ebuf, 16, comp);
+ edge_emu(prev_frame, (x as isize) + (dx as isize), (y as isize) + (dy as isize), 8+1, 8+1, &mut ebuf, 16, comp, 4);
rv30_chroma_mc(dst, doffset, dstride, &ebuf, 0, 16, size, cx, cy);
}
}
rv30_chroma_mc(dst, doffset, dstride, &ebuf, 0, 16, size, cx, cy);
}
}