- IPRED_FUNCS4X4[id](frm.data, cur_yoff, frm.stride[0], &tr);
+ let mut top = [128; 4];
+ let mut left = [128; 9];
+ if y == 0 {
+ if has_top {
+ top.copy_from_slice(&sstate.top_line_y[sstate.mb_x * 16 + x * 4..][..4]);
+ }
+ } else {
+ top.copy_from_slice(&frm.data[cur_yoff - frm.stride[0]..][..4]);
+ }
+ if x == 0 {
+ if has_left {
+ for (dst, &src) in left.iter_mut().zip(sstate.left_y[y * 4..].iter()) {
+ *dst = src;
+ }
+ }
+ } else {
+ if y == 0 {
+ if x == 0 {
+ left[0] = sstate.left_y[y * 4];
+ } else if has_top {
+ left[0] = sstate.top_line_y[sstate.mb_x * 16 + x * 4 - 1];
+ }
+ } else {
+ left[0] = frm.data[cur_yoff - frm.stride[0] - 1];
+ }
+ for (dst, row) in left[1..].iter_mut().zip(frm.data[cur_yoff - 1..].chunks(frm.stride[0])) {
+ *dst = row[0];
+ }
+ }
+ IPRED_FUNCS4X4[id](&mut frm.data[cur_yoff..], frm.stride[0], &top, &left, &tr);