public static void vp8_build_intra_predictors_mby_s(MACROBLOCKD x, byte *yabove_row, byte *yleft, int left_stride, byte *ypred_ptr, int y_stride) { MB_PREDICTION_MODE mode = (MB_PREDICTION_MODE)x.mode_info_context.get().mbmi.mode; //DECLARE_ALIGNED(16, uint8_t, yleft_col[16]); byte * yleft_col = stackalloc byte[16]; int i; intra_pred_fn fn; for (i = 0; i < 16; ++i) { yleft_col[i] = yleft[i * left_stride]; } if (mode == MB_PREDICTION_MODE.DC_PRED) { fn = dc_pred[x.left_available, x.up_available, (int)PredictionSizes.SIZE_16]; } else { fn = pred[(int)mode, (int)PredictionSizes.SIZE_16]; } fn(ypred_ptr, y_stride, yabove_row, yleft_col); }
public static void vp8_build_intra_predictors_mbuv_s( MACROBLOCKD x, byte *uabove_row, byte *vabove_row, byte *uleft, byte *vleft, int left_stride, byte *upred_ptr, byte *vpred_ptr, int pred_stride) { MB_PREDICTION_MODE uvmode = (MB_PREDICTION_MODE)x.mode_info_context.get().mbmi.uv_mode; byte *uleft_col = stackalloc byte[8]; byte *vleft_col = stackalloc byte[8]; int i; intra_pred_fn fn; for (i = 0; i < 8; ++i) { uleft_col[i] = uleft[i * left_stride]; vleft_col[i] = vleft[i * left_stride]; } if (uvmode == MB_PREDICTION_MODE.DC_PRED) { fn = dc_pred[x.left_available, x.up_available, (int)PredictionSizes.SIZE_8]; } else { fn = pred[(int)uvmode, (int)PredictionSizes.SIZE_8]; } fn(upred_ptr, pred_stride, uabove_row, uleft_col); fn(vpred_ptr, pred_stride, vabove_row, vleft_col); }