diff options
author | Scott LaVarnway <slavarnway@google.com> | 2012-03-29 11:22:04 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2012-03-29 11:22:04 -0700 |
commit | 0799cccce340847be734b3273ef396d5b3cb0e8c (patch) | |
tree | 19aaaee2f5839946b8ba9bfe57c8b5444c3ee786 /vp8/common | |
parent | c88fc5b2f96911968c3e8841509612e184e1cc84 (diff) | |
parent | 403966ae000a503b1ab3cee4ff3c9ff1553572da (diff) | |
download | libvpx-0799cccce340847be734b3273ef396d5b3cb0e8c.tar libvpx-0799cccce340847be734b3273ef396d5b3cb0e8c.tar.gz libvpx-0799cccce340847be734b3273ef396d5b3cb0e8c.tar.bz2 libvpx-0799cccce340847be734b3273ef396d5b3cb0e8c.zip |
Merge "Removed duplicate vp8_build_intra_predictors_mb y/uv"
Diffstat (limited to 'vp8/common')
-rw-r--r-- | vp8/common/reconintra.c | 293 | ||||
-rw-r--r-- | vp8/common/rtcd_defs.sh | 10 |
2 files changed, 18 insertions, 285 deletions
diff --git a/vp8/common/reconintra.c b/vp8/common/reconintra.c index 4b13777c8..f1cd12fc1 100644 --- a/vp8/common/reconintra.c +++ b/vp8/common/reconintra.c @@ -14,140 +14,17 @@ #include "vpx_mem/vpx_mem.h" #include "blockd.h" -/* For skip_recon_mb(), add vp8_build_intra_predictors_mby_s(MACROBLOCKD *x) and - * vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x). - */ - -void vp8_build_intra_predictors_mby_c(MACROBLOCKD *x) -{ - - unsigned char *yabove_row = x->dst.y_buffer - x->dst.y_stride; - unsigned char yleft_col[16]; - unsigned char ytop_left = yabove_row[-1]; - unsigned char *ypred_ptr = x->predictor; - int r, c, i; - - for (i = 0; i < 16; i++) - { - yleft_col[i] = x->dst.y_buffer [i* x->dst.y_stride -1]; - } - - /* for Y */ - switch (x->mode_info_context->mbmi.mode) - { - case DC_PRED: - { - int expected_dc; - int i; - int shift; - int average = 0; - - - if (x->up_available || x->left_available) - { - if (x->up_available) - { - for (i = 0; i < 16; i++) - { - average += yabove_row[i]; - } - } - - if (x->left_available) - { - - for (i = 0; i < 16; i++) - { - average += yleft_col[i]; - } - - } - - - - shift = 3 + x->up_available + x->left_available; - expected_dc = (average + (1 << (shift - 1))) >> shift; - } - else - { - expected_dc = 128; - } - - vpx_memset(ypred_ptr, expected_dc, 256); - } - break; - case V_PRED: - { - - for (r = 0; r < 16; r++) - { - - ((int *)ypred_ptr)[0] = ((int *)yabove_row)[0]; - ((int *)ypred_ptr)[1] = ((int *)yabove_row)[1]; - ((int *)ypred_ptr)[2] = ((int *)yabove_row)[2]; - ((int *)ypred_ptr)[3] = ((int *)yabove_row)[3]; - ypred_ptr += 16; - } - } - break; - case H_PRED: - { - - for (r = 0; r < 16; r++) - { - - vpx_memset(ypred_ptr, yleft_col[r], 16); - ypred_ptr += 16; - } - - } - break; - case TM_PRED: - { - - for (r = 0; r < 16; r++) - { - for (c = 0; c < 16; c++) - { - int pred = yleft_col[r] + yabove_row[ c] - ytop_left; - - if (pred < 0) - pred = 0; - - if (pred > 255) - pred = 255; - - ypred_ptr[c] = pred; - } - - ypred_ptr += 16; - } - - } - break; - case B_PRED: - case NEARESTMV: - case NEARMV: - case ZEROMV: - case NEWMV: - case SPLITMV: - case MB_MODE_COUNT: - break; - } -} - void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x, unsigned char * yabove_row, unsigned char * yleft, int left_stride, - unsigned char * ypred_ptr) + unsigned char * ypred_ptr, + int y_stride) { unsigned char yleft_col[16]; unsigned char ytop_left = yabove_row[-1]; int r, c, i; - int y_stride = x->dst.y_stride; - for (i = 0; i < 16; i++) { yleft_col[i] = yleft[i* left_stride]; @@ -198,7 +75,7 @@ void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x, for (r = 0; r < 16; r++) { vpx_memset(ypred_ptr, expected_dc, 16); - ypred_ptr += y_stride; /*16;*/ + ypred_ptr += y_stride; } } break; @@ -212,7 +89,7 @@ void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x, ((int *)ypred_ptr)[1] = ((int *)yabove_row)[1]; ((int *)ypred_ptr)[2] = ((int *)yabove_row)[2]; ((int *)ypred_ptr)[3] = ((int *)yabove_row)[3]; - ypred_ptr += y_stride; /*16;*/ + ypred_ptr += y_stride; } } break; @@ -223,7 +100,7 @@ void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x, { vpx_memset(ypred_ptr, yleft_col[r], 16); - ypred_ptr += y_stride; /*16;*/ + ypred_ptr += y_stride; } } @@ -246,145 +123,7 @@ void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x, ypred_ptr[c] = pred; } - ypred_ptr += y_stride; /*16;*/ - } - - } - break; - case B_PRED: - case NEARESTMV: - case NEARMV: - case ZEROMV: - case NEWMV: - case SPLITMV: - case MB_MODE_COUNT: - break; - } -} - -void vp8_build_intra_predictors_mbuv_c(MACROBLOCKD *x) -{ - unsigned char *uabove_row = x->dst.u_buffer - x->dst.uv_stride; - unsigned char uleft_col[16]; - unsigned char utop_left = uabove_row[-1]; - unsigned char *vabove_row = x->dst.v_buffer - x->dst.uv_stride; - unsigned char vleft_col[20]; - unsigned char vtop_left = vabove_row[-1]; - unsigned char *upred_ptr = &x->predictor[256]; - unsigned char *vpred_ptr = &x->predictor[320]; - int i, j; - - for (i = 0; i < 8; i++) - { - uleft_col[i] = x->dst.u_buffer [i* x->dst.uv_stride -1]; - vleft_col[i] = x->dst.v_buffer [i* x->dst.uv_stride -1]; - } - - switch (x->mode_info_context->mbmi.uv_mode) - { - case DC_PRED: - { - int expected_udc; - int expected_vdc; - int i; - int shift; - int Uaverage = 0; - int Vaverage = 0; - - if (x->up_available) - { - for (i = 0; i < 8; i++) - { - Uaverage += uabove_row[i]; - Vaverage += vabove_row[i]; - } - } - - if (x->left_available) - { - for (i = 0; i < 8; i++) - { - Uaverage += uleft_col[i]; - Vaverage += vleft_col[i]; - } - } - - if (!x->up_available && !x->left_available) - { - expected_udc = 128; - expected_vdc = 128; - } - else - { - shift = 2 + x->up_available + x->left_available; - expected_udc = (Uaverage + (1 << (shift - 1))) >> shift; - expected_vdc = (Vaverage + (1 << (shift - 1))) >> shift; - } - - - vpx_memset(upred_ptr, expected_udc, 64); - vpx_memset(vpred_ptr, expected_vdc, 64); - - - } - break; - case V_PRED: - { - int i; - - for (i = 0; i < 8; i++) - { - vpx_memcpy(upred_ptr, uabove_row, 8); - vpx_memcpy(vpred_ptr, vabove_row, 8); - upred_ptr += 8; - vpred_ptr += 8; - } - - } - break; - case H_PRED: - { - int i; - - for (i = 0; i < 8; i++) - { - vpx_memset(upred_ptr, uleft_col[i], 8); - vpx_memset(vpred_ptr, vleft_col[i], 8); - upred_ptr += 8; - vpred_ptr += 8; - } - } - - break; - case TM_PRED: - { - int i; - - for (i = 0; i < 8; i++) - { - for (j = 0; j < 8; j++) - { - int predu = uleft_col[i] + uabove_row[j] - utop_left; - int predv = vleft_col[i] + vabove_row[j] - vtop_left; - - if (predu < 0) - predu = 0; - - if (predu > 255) - predu = 255; - - if (predv < 0) - predv = 0; - - if (predv > 255) - predv = 255; - - upred_ptr[j] = predu; - vpred_ptr[j] = predv; - } - - upred_ptr += 8; - vpred_ptr += 8; + ypred_ptr += y_stride; } } @@ -407,13 +146,13 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x, unsigned char * vleft, int left_stride, unsigned char * upred_ptr, - unsigned char * vpred_ptr) + unsigned char * vpred_ptr, + int pred_stride) { unsigned char uleft_col[8]; unsigned char utop_left = uabove_row[-1]; unsigned char vleft_col[8]; unsigned char vtop_left = vabove_row[-1]; - int uv_stride = x->dst.uv_stride; int i, j; @@ -471,8 +210,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x, { vpx_memset(upred_ptr, expected_udc, 8); vpx_memset(vpred_ptr, expected_vdc, 8); - upred_ptr += uv_stride; /*8;*/ - vpred_ptr += uv_stride; /*8;*/ + upred_ptr += pred_stride; + vpred_ptr += pred_stride; } } break; @@ -484,8 +223,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x, { vpx_memcpy(upred_ptr, uabove_row, 8); vpx_memcpy(vpred_ptr, vabove_row, 8); - upred_ptr += uv_stride; /*8;*/ - vpred_ptr += uv_stride; /*8;*/ + upred_ptr += pred_stride; + vpred_ptr += pred_stride; } } @@ -498,8 +237,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x, { vpx_memset(upred_ptr, uleft_col[i], 8); vpx_memset(vpred_ptr, vleft_col[i], 8); - upred_ptr += uv_stride; /*8;*/ - vpred_ptr += uv_stride; /*8;*/ + upred_ptr += pred_stride; + vpred_ptr += pred_stride; } } @@ -531,8 +270,8 @@ void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x, vpred_ptr[j] = predv; } - upred_ptr += uv_stride; /*8;*/ - vpred_ptr += uv_stride; /*8;*/ + upred_ptr += pred_stride; + vpred_ptr += pred_stride; } } diff --git a/vp8/common/rtcd_defs.sh b/vp8/common/rtcd_defs.sh index 0fdb4fa00..fee896595 100644 --- a/vp8/common/rtcd_defs.sh +++ b/vp8/common/rtcd_defs.sh @@ -122,16 +122,10 @@ prototype void vp8_copy_mem8x4 "unsigned char *src, int src_pitch, unsigned char specialize vp8_copy_mem8x4 mmx media neon vp8_copy_mem8x4_media=vp8_copy_mem8x4_v6 -prototype void vp8_build_intra_predictors_mby "struct macroblockd *x" -specialize vp8_build_intra_predictors_mby sse2 ssse3 neon - -prototype void vp8_build_intra_predictors_mby_s "struct macroblockd *x, unsigned char * yabove_row, unsigned char * yleft, int left_stride, unsigned char * ypred_ptr" +prototype void vp8_build_intra_predictors_mby_s "struct macroblockd *x, unsigned char * yabove_row, unsigned char * yleft, int left_stride, unsigned char * ypred_ptr, int y_stride" #TODO: fix assembly --- specialize vp8_build_intra_predictors_mby_s sse2 ssse3 neon -prototype void vp8_build_intra_predictors_mbuv "struct macroblockd *x" -specialize vp8_build_intra_predictors_mbuv sse2 ssse3 - -prototype void vp8_build_intra_predictors_mbuv_s "struct macroblockd *x, unsigned char * uabove_row, unsigned char * vabove_row, unsigned char *uleft, unsigned char *vleft, int left_stride, unsigned char * upred_ptr, unsigned char * vpred_ptr" +prototype void vp8_build_intra_predictors_mbuv_s "struct macroblockd *x, unsigned char * uabove_row, unsigned char * vabove_row, unsigned char *uleft, unsigned char *vleft, int left_stride, unsigned char * upred_ptr, unsigned char * vpred_ptr, int pred_stride" #TODO: fix assembly --- specialize vp8_build_intra_predictors_mbuv_s sse2 ssse3 prototype void vp8_intra4x4_predict "unsigned char *src, int src_stride, int b_mode, unsigned char *dst, int dst_stride" |