#include "vp9/common/vp9_reconintra.h"
#include "vpx_mem/vpx_mem.h"
-// For skip_recon_mb(), add vp9_build_intra_predictors_mby_s(MACROBLOCKD *xd)
-// and vp9_build_intra_predictors_mbuv_s(MACROBLOCKD *xd).
-
// Using multiplication and shifting instead of division in diagonal prediction.
// iscale table is calculated from ((1 << 16) + (i + 2) / 2) / (i+2) and used as
// ((A + B) * iscale[i] + (1 << 15)) >> 16;
return ROUND_POWER_OF_TWO(value * iscale[i], 16);
}
-static void d27_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d27_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
r = 0;
- for (c = 0; c < n - 2; c++) {
+ for (c = 0; c < bw - 2; c++) {
int a = c & 1 ? yleft_col[r + 1]
: ROUND_POWER_OF_TWO(yleft_col[r] + yleft_col[r + 1], 1);
int b = yabove_row[c + 2];
ypred_ptr[c] = iscale_round(2 * a + (c + 1) * b, 1 + c);
}
- for (r = 1; r < n / 2 - 1; r++) {
- for (c = 0; c < n - 2 - 2 * r; c++) {
+ for (r = 1; r < bh / 2 - 1; r++) {
+ for (c = 0; c < bw - 2 - 2 * r; c++) {
int a = c & 1 ? yleft_col[r + 1]
: ROUND_POWER_OF_TWO(yleft_col[r] + yleft_col[r + 1], 1);
int b = ypred_ptr[(r - 1) * y_stride + c + 2];
}
}
- for (; r < n - 1; r++) {
- for (c = 0; c < n; c++) {
+ for (; r < bh - 1; r++) {
+ for (c = 0; c < bw; c++) {
int v = c & 1 ? yleft_col[r + 1]
: ROUND_POWER_OF_TWO(yleft_col[r] + yleft_col[r + 1], 1);
int h = r - c / 2;
}
c = 0;
- r = n - 1;
+ r = bh - 1;
ypred_ptr[r * y_stride] = ROUND_POWER_OF_TWO(ypred_ptr[(r - 1) * y_stride] +
yleft_col[r], 1);
- for (r = n - 2; r >= n / 2; --r) {
- int w = c + (n - 1 - r) * 2;
+ for (r = bh - 2; r >= bh / 2; --r) {
+ int w = c + (bh - 1 - r) * 2;
ypred_ptr[r * y_stride + w] =
ROUND_POWER_OF_TWO(ypred_ptr[(r - 1) * y_stride + w] +
ypred_ptr[r * y_stride + w - 1], 1);
}
- for (c = 1; c < n; c++) {
- for (r = n - 1; r >= n / 2 + c / 2; --r) {
- int w = c + (n - 1 - r) * 2;
+ for (c = 1; c < bw; c++) {
+ for (r = bh - 1; r >= bh / 2 + c / 2; --r) {
+ int w = c + (bh - 1 - r) * 2;
ypred_ptr[r * y_stride + w] =
ROUND_POWER_OF_TWO(ypred_ptr[(r - 1) * y_stride + w] +
ypred_ptr[r * y_stride + w - 1], 1);
}
}
-static void d63_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d63_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
c = 0;
- for (r = 0; r < n - 2; r++) {
+ for (r = 0; r < bh - 2; r++) {
int a = r & 1 ? yabove_row[c + 1]
: ROUND_POWER_OF_TWO(yabove_row[c] + yabove_row[c + 1], 1);
int b = yleft_col[r + 2];
ypred_ptr[r * y_stride] = iscale_round(2 * a + (r + 1) * b, 1 + r);
}
- for (c = 1; c < n / 2 - 1; c++) {
- for (r = 0; r < n - 2 - 2 * c; r++) {
+ for (c = 1; c < bw / 2 - 1; c++) {
+ for (r = 0; r < bh - 2 - 2 * c; r++) {
int a = r & 1 ? yabove_row[c + 1]
: ROUND_POWER_OF_TWO(yabove_row[c] + yabove_row[c + 1], 1);
int b = ypred_ptr[(r + 2) * y_stride + c - 1];
}
}
- for (; c < n - 1; ++c) {
- for (r = 0; r < n; r++) {
+ for (; c < bw - 1; ++c) {
+ for (r = 0; r < bh; r++) {
int v = r & 1 ? yabove_row[c + 1]
: ROUND_POWER_OF_TWO(yabove_row[c] + yabove_row[c + 1], 1);
int w = c - r / 2;
}
r = 0;
- c = n - 1;
+ c = bw - 1;
ypred_ptr[c] = ROUND_POWER_OF_TWO(ypred_ptr[(c - 1)] + yabove_row[c], 1);
- for (c = n - 2; c >= n / 2; --c) {
- int h = r + (n - 1 - c) * 2;
+ for (c = bw - 2; c >= bw / 2; --c) {
+ int h = r + (bw - 1 - c) * 2;
ypred_ptr[h * y_stride + c] =
ROUND_POWER_OF_TWO(ypred_ptr[h * y_stride + c - 1] +
ypred_ptr[(h - 1) * y_stride + c], 1);
}
- for (r = 1; r < n; r++) {
- for (c = n - 1; c >= n / 2 + r / 2; --c) {
- int h = r + (n - 1 - c) * 2;
+ for (r = 1; r < bh; r++) {
+ for (c = bw - 1; c >= bw / 2 + r / 2; --c) {
+ int h = r + (bw - 1 - c) * 2;
ypred_ptr[h * y_stride + c] =
ROUND_POWER_OF_TWO(ypred_ptr[h * y_stride + c - 1] +
ypred_ptr[(h - 1) * y_stride + c], 1);
}
}
-static void d45_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d45_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
- for (r = 0; r < n - 1; ++r) {
+ for (r = 0; r < bh - 1; ++r) {
for (c = 0; c <= r; ++c) {
ypred_ptr[(r - c) * y_stride + c] = iscale_round(
yabove_row[r + 1] * (c + 1) + yleft_col[r + 1] * (r - c + 1), r);
ypred_ptr[(r - c) * y_stride + c] =
iscale_round(yabove_ext * (c + 1) + yleft_ext * (r - c + 1), r);
}
- for (r = 1; r < n; ++r) {
- for (c = n - r; c < n; ++c) {
+ for (r = 1; r < bh; ++r) {
+ for (c = bw - r; c < bw; ++c) {
const int yabove_ext = ypred_ptr[(r - 1) * y_stride + c];
const int yleft_ext = ypred_ptr[r * y_stride + c - 1];
ypred_ptr[r * y_stride + c] =
}
}
-static void d117_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d117_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
- for (c = 0; c < n; c++)
+ for (c = 0; c < bw; c++)
ypred_ptr[c] = ROUND_POWER_OF_TWO(yabove_row[c - 1] + yabove_row[c], 1);
ypred_ptr += y_stride;
- for (c = 0; c < n; c++)
+ for (c = 0; c < bw; c++)
ypred_ptr[c] = yabove_row[c - 1];
ypred_ptr += y_stride;
- for (r = 2; r < n; ++r) {
+ for (r = 2; r < bh; ++r) {
ypred_ptr[0] = yleft_col[r - 2];
- for (c = 1; c < n; c++)
+ for (c = 1; c < bw; c++)
ypred_ptr[c] = ypred_ptr[-2 * y_stride + c - 1];
ypred_ptr += y_stride;
}
}
-static void d135_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d135_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
ypred_ptr[0] = yabove_row[-1];
- for (c = 1; c < n; c++)
+ for (c = 1; c < bw; c++)
ypred_ptr[c] = yabove_row[c - 1];
- for (r = 1; r < n; ++r)
+ for (r = 1; r < bh; ++r)
ypred_ptr[r * y_stride] = yleft_col[r - 1];
ypred_ptr += y_stride;
- for (r = 1; r < n; ++r) {
- for (c = 1; c < n; c++) {
+ for (r = 1; r < bh; ++r) {
+ for (c = 1; c < bw; c++) {
ypred_ptr[c] = ypred_ptr[-y_stride + c - 1];
}
ypred_ptr += y_stride;
}
}
-static void d153_predictor(uint8_t *ypred_ptr, int y_stride, int n,
+static void d153_predictor(uint8_t *ypred_ptr, int y_stride,
+ int bw, int bh,
uint8_t *yabove_row, uint8_t *yleft_col) {
int r, c;
ypred_ptr[0] = ROUND_POWER_OF_TWO(yabove_row[-1] + yleft_col[0], 1);
- for (r = 1; r < n; r++)
+ for (r = 1; r < bh; r++)
ypred_ptr[r * y_stride] =
ROUND_POWER_OF_TWO(yleft_col[r - 1] + yleft_col[r], 1);
ypred_ptr++;
ypred_ptr[0] = yabove_row[-1];
- for (r = 1; r < n; r++)
+ for (r = 1; r < bh; r++)
ypred_ptr[r * y_stride] = yleft_col[r - 1];
ypred_ptr++;
- for (c = 0; c < n - 2; c++)
+ for (c = 0; c < bw - 2; c++)
ypred_ptr[c] = yabove_row[c];
ypred_ptr += y_stride;
- for (r = 1; r < n; ++r) {
- for (c = 0; c < n - 2; c++)
+ for (r = 1; r < bh; ++r) {
+ for (c = 0; c < bw - 2; c++)
ypred_ptr[c] = ypred_ptr[-y_stride + c - 2];
ypred_ptr += y_stride;
}
}
}
-
-void vp9_build_intra_predictors_internal(uint8_t *src, int src_stride,
- uint8_t *ypred_ptr,
- int y_stride, int mode, int bsize,
- int up_available, int left_available,
- int right_available) {
+void vp9_build_intra_predictors(uint8_t *src, int src_stride,
+ uint8_t *ypred_ptr,
+ int y_stride, int mode,
+ int bw, int bh,
+ int up_available, int left_available,
+ int right_available) {
int r, c, i;
uint8_t yleft_col[64], yabove_data[65], ytop_left;
uint8_t *yabove_row = yabove_data + 1;
*/
if (left_available) {
- for (i = 0; i < bsize; i++)
+ for (i = 0; i < bh; i++)
yleft_col[i] = src[i * src_stride - 1];
} else {
- vpx_memset(yleft_col, 129, bsize);
+ vpx_memset(yleft_col, 129, bh);
}
if (up_available) {
uint8_t *yabove_ptr = src - src_stride;
- vpx_memcpy(yabove_row, yabove_ptr, bsize);
+ vpx_memcpy(yabove_row, yabove_ptr, bw);
if (left_available) {
ytop_left = yabove_ptr[-1];
} else {
ytop_left = 127;
}
} else {
- vpx_memset(yabove_row, 127, bsize);
+ vpx_memset(yabove_row, 127, bw);
ytop_left = 127;
}
yabove_row[-1] = ytop_left;
case DC_PRED: {
int expected_dc;
int i;
- int shift;
int average = 0;
- int log2_bsize_minus_1 = log2_minus_1(bsize);
+ int count = 0;
if (up_available || left_available) {
if (up_available) {
- for (i = 0; i < bsize; i++) {
+ for (i = 0; i < bw; i++) {
average += yabove_row[i];
}
+ count += bw;
}
if (left_available) {
- for (i = 0; i < bsize; i++) {
+ for (i = 0; i < bh; i++) {
average += yleft_col[i];
}
+ count += bh;
}
- shift = log2_bsize_minus_1 + up_available + left_available;
- expected_dc = ROUND_POWER_OF_TWO(average, shift);
+ expected_dc = (average + (count >> 1)) / count;
} else {
expected_dc = 128;
}
- for (r = 0; r < bsize; r++) {
- vpx_memset(ypred_ptr, expected_dc, bsize);
+ for (r = 0; r < bh; r++) {
+ vpx_memset(ypred_ptr, expected_dc, bw);
ypred_ptr += y_stride;
}
}
break;
case V_PRED:
- for (r = 0; r < bsize; r++) {
- memcpy(ypred_ptr, yabove_row, bsize);
+ for (r = 0; r < bh; r++) {
+ memcpy(ypred_ptr, yabove_row, bw);
ypred_ptr += y_stride;
}
break;
case H_PRED:
- for (r = 0; r < bsize; r++) {
- vpx_memset(ypred_ptr, yleft_col[r], bsize);
+ for (r = 0; r < bh; r++) {
+ vpx_memset(ypred_ptr, yleft_col[r], bw);
ypred_ptr += y_stride;
}
break;
case TM_PRED:
- for (r = 0; r < bsize; r++) {
- for (c = 0; c < bsize; c++) {
+ for (r = 0; r < bh; r++) {
+ for (c = 0; c < bw; c++) {
ypred_ptr[c] = clip_pixel(yleft_col[r] + yabove_row[c] - ytop_left);
}
}
break;
case D45_PRED:
- d45_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d45_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case D135_PRED:
- d135_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d135_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case D117_PRED:
- d117_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d117_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case D153_PRED:
- d153_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d153_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case D27_PRED:
- d27_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d27_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case D63_PRED:
- d63_predictor(ypred_ptr, y_stride, bsize, yabove_row, yleft_col);
+ d63_predictor(ypred_ptr, y_stride, bw, bh, yabove_row, yleft_col);
break;
case I8X8_PRED:
case B_PRED:
uint8_t *ypred,
int ystride) {
uint8_t intrapredictor[256];
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.y_buffer, xd->dst.y_stride,
intrapredictor, 16,
- xd->mode_info_context->mbmi.interintra_mode, 16,
+ xd->mode_info_context->mbmi.interintra_mode, 16, 16,
xd->up_available, xd->left_available, xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_mode,
ypred, ystride, intrapredictor, 16, 16);
int uvstride) {
uint8_t uintrapredictor[64];
uint8_t vintrapredictor[64];
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.u_buffer, xd->dst.uv_stride,
uintrapredictor, 8,
- xd->mode_info_context->mbmi.interintra_uv_mode, 8,
+ xd->mode_info_context->mbmi.interintra_uv_mode, 8, 8,
xd->up_available, xd->left_available, xd->right_available);
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.v_buffer, xd->dst.uv_stride,
vintrapredictor, 8,
- xd->mode_info_context->mbmi.interintra_uv_mode, 8,
+ xd->mode_info_context->mbmi.interintra_uv_mode, 8, 8,
xd->up_available, xd->left_available, xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode,
upred, uvstride, uintrapredictor, 8, 8);
uint8_t *ypred,
int ystride) {
uint8_t intrapredictor[1024];
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.y_buffer, xd->dst.y_stride,
intrapredictor, 32,
- xd->mode_info_context->mbmi.interintra_mode, 32,
+ xd->mode_info_context->mbmi.interintra_mode, 32, 32,
xd->up_available, xd->left_available, xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_mode,
ypred, ystride, intrapredictor, 32, 32);
int uvstride) {
uint8_t uintrapredictor[256];
uint8_t vintrapredictor[256];
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.u_buffer, xd->dst.uv_stride,
uintrapredictor, 16,
- xd->mode_info_context->mbmi.interintra_uv_mode, 16,
+ xd->mode_info_context->mbmi.interintra_uv_mode, 16, 16,
xd->up_available, xd->left_available, xd->right_available);
- vp9_build_intra_predictors_internal(
+ vp9_build_intra_predictors(
xd->dst.v_buffer, xd->dst.uv_stride,
vintrapredictor, 16,
- xd->mode_info_context->mbmi.interintra_uv_mode, 16,
+ xd->mode_info_context->mbmi.interintra_uv_mode, 16, 16,
xd->up_available, xd->left_available, xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode,
upred, uvstride, uintrapredictor, 16, 16);
int ystride) {
uint8_t intrapredictor[4096];
const int mode = xd->mode_info_context->mbmi.interintra_mode;
- vp9_build_intra_predictors_internal(xd->dst.y_buffer, xd->dst.y_stride,
- intrapredictor, 64, mode, 64,
- xd->up_available, xd->left_available,
- xd->right_available);
+ vp9_build_intra_predictors(xd->dst.y_buffer, xd->dst.y_stride,
+ intrapredictor, 64, mode, 64, 64,
+ xd->up_available, xd->left_available,
+ xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_mode,
ypred, ystride, intrapredictor, 64, 64);
}
uint8_t uintrapredictor[1024];
uint8_t vintrapredictor[1024];
const int mode = xd->mode_info_context->mbmi.interintra_uv_mode;
- vp9_build_intra_predictors_internal(xd->dst.u_buffer, xd->dst.uv_stride,
- uintrapredictor, 32, mode, 32,
- xd->up_available, xd->left_available,
- xd->right_available);
- vp9_build_intra_predictors_internal(xd->dst.v_buffer, xd->dst.uv_stride,
- vintrapredictor, 32, mode, 32,
- xd->up_available, xd->left_available,
- xd->right_available);
+ vp9_build_intra_predictors(xd->dst.u_buffer, xd->dst.uv_stride,
+ uintrapredictor, 32, mode, 32, 32,
+ xd->up_available, xd->left_available,
+ xd->right_available);
+ vp9_build_intra_predictors(xd->dst.v_buffer, xd->dst.uv_stride,
+ vintrapredictor, 32, mode, 32, 32,
+ xd->up_available, xd->left_available,
+ xd->right_available);
combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode,
upred, uvstride, uintrapredictor, 32, 32);
combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode,
}
#endif // CONFIG_COMP_INTERINTRA_PRED
+void vp9_build_intra_predictors_sby_s(MACROBLOCKD *xd,
+ BLOCK_SIZE_TYPE bsize) {
+ const int bwl = b_width_log2(bsize), bw = 4 << bwl;
+ const int bhl = b_height_log2(bsize), bh = 4 << bhl;
+
+ vp9_build_intra_predictors(xd->dst.y_buffer, xd->dst.y_stride,
+ xd->dst.y_buffer, xd->dst.y_stride,
+ xd->mode_info_context->mbmi.mode,
+ bw, bh,
+ xd->up_available, xd->left_available,
+ xd->right_available);
+}
+
+void vp9_build_intra_predictors_sbuv_s(MACROBLOCKD *xd,
+ BLOCK_SIZE_TYPE bsize) {
+ const int bwl = b_width_log2(bsize) - 1, bw = 4 << bwl;
+ const int bhl = b_height_log2(bsize) - 1, bh = 4 << bhl;
+
+ vp9_build_intra_predictors(xd->dst.u_buffer, xd->dst.uv_stride,
+ xd->dst.u_buffer, xd->dst.uv_stride,
+ xd->mode_info_context->mbmi.uv_mode,
+ bw, bh, xd->up_available,
+ xd->left_available, xd->right_available);
+ vp9_build_intra_predictors(xd->dst.v_buffer, xd->dst.uv_stride,
+ xd->dst.v_buffer, xd->dst.uv_stride,
+ xd->mode_info_context->mbmi.uv_mode,
+ bw, bh, xd->up_available,
+ xd->left_available, xd->right_available);
+}
+
+// TODO(jingning): merge mby and mbuv into the above sby and sbmu functions
void vp9_build_intra_predictors_mby(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_internal(xd->dst.y_buffer, xd->dst.y_stride,
- xd->predictor, 16,
- xd->mode_info_context->mbmi.mode, 16,
- xd->up_available, xd->left_available,
- xd->right_available);
-}
-
-void vp9_build_intra_predictors_mby_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_internal(xd->dst.y_buffer, xd->dst.y_stride,
- xd->dst.y_buffer, xd->dst.y_stride,
- xd->mode_info_context->mbmi.mode, 16,
- xd->up_available, xd->left_available,
- xd->right_available);
-}
-
-void vp9_build_intra_predictors_sby_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_internal(xd->dst.y_buffer, xd->dst.y_stride,
- xd->dst.y_buffer, xd->dst.y_stride,
- xd->mode_info_context->mbmi.mode, 32,
- xd->up_available, xd->left_available,
- xd->right_available);
-}
-
-void vp9_build_intra_predictors_sb64y_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_internal(xd->dst.y_buffer, xd->dst.y_stride,
- xd->dst.y_buffer, xd->dst.y_stride,
- xd->mode_info_context->mbmi.mode, 64,
- xd->up_available, xd->left_available,
- xd->right_available);
+ vp9_build_intra_predictors(xd->dst.y_buffer, xd->dst.y_stride,
+ xd->predictor, 16,
+ xd->mode_info_context->mbmi.mode,
+ 16, 16,
+ xd->up_available, xd->left_available,
+ xd->right_available);
}
void vp9_build_intra_predictors_mbuv_internal(MACROBLOCKD *xd,
uint8_t *vpred_ptr,
int uv_stride,
int mode, int bsize) {
- vp9_build_intra_predictors_internal(xd->dst.u_buffer, xd->dst.uv_stride,
- upred_ptr, uv_stride, mode, bsize,
- xd->up_available, xd->left_available,
- xd->right_available);
- vp9_build_intra_predictors_internal(xd->dst.v_buffer, xd->dst.uv_stride,
- vpred_ptr, uv_stride, mode, bsize,
- xd->up_available, xd->left_available,
- xd->right_available);
+ vp9_build_intra_predictors(xd->dst.u_buffer, xd->dst.uv_stride,
+ upred_ptr, uv_stride, mode,
+ bsize, bsize,
+ xd->up_available, xd->left_available,
+ xd->right_available);
+ vp9_build_intra_predictors(xd->dst.v_buffer, xd->dst.uv_stride,
+ vpred_ptr, uv_stride, mode,
+ bsize, bsize,
+ xd->up_available, xd->left_available,
+ xd->right_available);
}
void vp9_build_intra_predictors_mbuv(MACROBLOCKD *xd) {
8);
}
-void vp9_build_intra_predictors_mbuv_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_mbuv_internal(xd, xd->dst.u_buffer,
- xd->dst.v_buffer,
- xd->dst.uv_stride,
- xd->mode_info_context->mbmi.uv_mode,
- 8);
-}
-
-void vp9_build_intra_predictors_sbuv_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_mbuv_internal(xd, xd->dst.u_buffer,
- xd->dst.v_buffer, xd->dst.uv_stride,
- xd->mode_info_context->mbmi.uv_mode,
- 16);
-}
-
-void vp9_build_intra_predictors_sb64uv_s(MACROBLOCKD *xd) {
- vp9_build_intra_predictors_mbuv_internal(xd, xd->dst.u_buffer,
- xd->dst.v_buffer, xd->dst.uv_stride,
- xd->mode_info_context->mbmi.uv_mode,
- 32);
-}
-
void vp9_intra8x8_predict(MACROBLOCKD *xd,
BLOCKD *b,
int mode,
const int have_left = (block_idx & 1) || xd->left_available;
const int have_right = !(block_idx & 1) || xd->right_available;
- vp9_build_intra_predictors_internal(*(b->base_dst) + b->dst,
- b->dst_stride, predictor, pre_stride,
- mode, 8, have_top, have_left,
- have_right);
+ vp9_build_intra_predictors(*(b->base_dst) + b->dst,
+ b->dst_stride, predictor, pre_stride,
+ mode, 8, 8, have_top, have_left,
+ have_right);
}
void vp9_intra_uv4x4_predict(MACROBLOCKD *xd,
const int have_left = (block_idx & 1) || xd->left_available;
const int have_right = !(block_idx & 1) || xd->right_available;
- vp9_build_intra_predictors_internal(*(b->base_dst) + b->dst,
- b->dst_stride, predictor, pre_stride,
- mode, 4, have_top, have_left,
- have_right);
+ vp9_build_intra_predictors(*(b->base_dst) + b->dst,
+ b->dst_stride, predictor, pre_stride,
+ mode, 4, 4, have_top, have_left,
+ have_right);
}
/* TODO: try different ways of use Y-UV mode correlation