From 7d0656537b5739f06b923d471c39c3a0b249e76c Mon Sep 17 00:00:00 2001 From: Deb Mukherjee Date: Wed, 8 Aug 2012 16:49:15 -0700 Subject: [PATCH] Merging in the sixteenth subpel uv experiment Merges this experiment in to make it easier to run tests on filter precision, vectorized implementation etc. Also removes an experimental filter. Change-Id: I1e8706bb6d4fc469815123939e9c6e0b5ae945cd --- configure | 1 - vp8/common/filter.c | 101 +------------------ vp8/common/filter.h | 4 - vp8/common/reconinter.c | 129 ++---------------------- vp8/common/x86/subpixel_ssse3.asm | 12 --- vp8/common/x86/vp8_asm_stubs.c | 7 -- vp8/encoder/arm/variance_arm.c | 4 - vp8/encoder/mcomp.c | 12 --- vp8/encoder/rdopt.c | 7 -- vp8/encoder/temporal_filter.c | 14 --- vp8/encoder/variance_c.c | 15 --- vp8/encoder/x86/variance_impl_sse2.asm | 12 --- vp8/encoder/x86/variance_impl_ssse3.asm | 12 --- vp8/encoder/x86/variance_mmx.c | 28 ----- vp8/encoder/x86/variance_sse2.c | 8 -- vp8/encoder/x86/variance_ssse3.c | 4 - 16 files changed, 8 insertions(+), 362 deletions(-) diff --git a/configure b/configure index 2593a0e60..e4b1aacd6 100755 --- a/configure +++ b/configure @@ -217,7 +217,6 @@ HAVE_LIST=" EXPERIMENT_LIST=" csm featureupdates - sixteenth_subpel_uv comp_intra_pred superblocks pred_filter diff --git a/vp8/common/filter.c b/vp8/common/filter.c index 280274422..8b96c82a2 100644 --- a/vp8/common/filter.c +++ b/vp8/common/filter.c @@ -14,7 +14,6 @@ #include "vpx_ports/mem.h" DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[SUBPEL_SHIFTS][2]) = { -#if SUBPEL_SHIFTS==16 { 128, 0 }, { 120, 8 }, { 112, 16 }, @@ -31,22 +30,11 @@ DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[SUBPEL_SHIFTS][2]) = { { 24, 104 }, { 16, 112 }, { 8, 120 } -#else - { 128, 0 }, - { 112, 16 }, - { 96, 32 }, - { 80, 48 }, - { 64, 64 }, - { 48, 80 }, - { 32, 96 }, - { 16, 112 } -#endif /* SUBPEL_SHIFTS==16 */ }; #define FILTER_ALPHA 0 #define FILTER_ALPHA_SHARP 1 DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8[SUBPEL_SHIFTS][8]) = { -#if SUBPEL_SHIFTS==16 #if FILTER_ALPHA == 0 /* Lagrangian interpolation filter */ { 0, 0, 0, 128, 0, 0, 0, 0}, @@ -90,32 +78,9 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8[SUBPEL_SHIFTS][8]) = { { 0, 2, -6, 18, 122, -10, 2, 0}, { 0, 1, -3, 8, 126, -5, 1, 0} #endif /* FILTER_ALPHA */ -#else /* SUBPEL_SHIFTS==16 */ -#if FILTER_ALPHA == 0 - { 0, 0, 0, 128, 0, 0, 0, 0}, - { -1, 3, -10, 122, 18, -6, 2, 0}, - { -1, 4, -16, 112, 37, -11, 4, -1}, - { -1, 5, -19, 97, 58, -16, 5, -1}, - { -1, 6, -19, 78, 78, -19, 6, -1}, - { -1, 5, -16, 58, 97, -19, 5, -1}, - { -1, 4, -11, 37, 112, -16, 4, -1}, - { 0, 2, -6, 18, 122, -10, 3, -1}, -#elif FILTER_ALPHA == 50 - /* alpha = 0.50 */ - { 0, 0, 0, 128, 0, 0, 0, 0}, - { 0, 2, -10, 122, 18, -6, 2, 0}, - { -1, 4, -16, 112, 37, -11, 3, 0}, - { -1, 5, -18, 96, 58, -16, 5, -1}, - { -1, 5, -18, 78, 78, -18, 5, -1}, - { -1, 5, -16, 58, 96, -18, 5, -1}, - { 0, 3, -11, 37, 112, -16, 4, -1}, - { 0, 2, -6, 18, 122, -10, 2, 0} -#endif /* FILTER_ALPHA */ -#endif /* SUBPEL_SHIFTS==16 */ }; DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][8]) = { -#if SUBPEL_SHIFTS==16 #if FILTER_ALPHA_SHARP == 1 /* dct based filter */ {0, 0, 0, 128, 0, 0, 0, 0}, @@ -152,62 +117,10 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][8]) = { {-2, 5, -10, 28, 119, -16, 6, -2}, {-1, 3, -7, 18, 123, -11, 4, -1}, {-1, 2, -3, 9, 126, -6, 2, -1} -#elif FILTER_ALPHA_SHARP == 65 - /* alpha = 0.65 */ - { 0, 0, 0, 128, 0, 0, 0, 0}, - { 0, 2, -6, 126, 8, -3, 1, 0}, - { -1, 3, -10, 123, 18, -6, 2, -1}, - { -1, 5, -14, 118, 27, -10, 4, -1}, - { -1, 5, -17, 112, 38, -13, 5, -1}, - { -2, 6, -19, 106, 48, -15, 5, -1}, - { -2, 7, -21, 98, 59, -17, 6, -2}, - { -2, 7, -21, 89, 69, -19, 7, -2}, - { -2, 7, -20, 79, 79, -20, 7, -2}, - { -2, 7, -19, 69, 89, -21, 7, -2}, - { -2, 6, -17, 59, 98, -21, 7, -2}, - { -1, 5, -15, 48, 106, -19, 6, -2}, - { -1, 5, -13, 38, 112, -17, 5, -1}, - { -1, 4, -10, 27, 118, -14, 5, -1}, - { -1, 2, -6, 18, 123, -10, 3, -1}, - { 0, 1, -3, 8, 126, -6, 2, 0} #endif /* FILTER_ALPHA_SHARP */ -#else /* SUBPEL_SHIFTS==16 */ -#if FILTER_ALPHA_SHARP == 1 - /* dct based filter */ - {0, 0, 0, 128, 0, 0, 0, 0}, - {-2, 5, -13, 125, 17, -6, 3, -1}, - {-4, 9, -20, 115, 37, -13, 6, -2}, - {-4, 10, -24, 100, 59, -19, 9, -3}, - {-4, 10, -23, 81, 81, -23, 10, -4}, - {-3, 9, -19, 59, 100, -24, 10, -4}, - {-2, 6, -13, 37, 115, -20, 9, -4}, - {-1, 3, -6, 17, 125, -13, 5, -2} -#elif FILTER_ALPHA_SHARP == 75 - /* alpha = 0.75 */ - {0, 0, 0, 128, 0, 0, 0, 0}, - {-1, 4, -11, 123, 18, -7, 3, -1}, - {-2, 7, -19, 113, 38, -13, 6, -2}, - {-3, 9, -22, 99, 59, -19, 8, -3}, - {-3, 9, -22, 80, 80, -22, 9, -3}, - {-3, 8, -19, 59, 99, -22, 9, -3}, - {-2, 6, -13, 38, 113, -19, 7, -2}, - {-1, 3, -7, 18, 123, -11, 4, -1} -#elif FILTER_ALPHA_SHARP == 65 - /* alpha = 0.65 */ - { 0, 0, 0, 128, 0, 0, 0, 0}, - { -1, 3, -10, 123, 18, -6, 2, -1}, - { -1, 5, -17, 112, 38, -13, 5, -1}, - { -2, 7, -21, 98, 59, -17, 6, -2}, - { -2, 7, -20, 79, 79, -20, 7, -2}, - { -2, 6, -17, 59, 98, -21, 7, -2}, - { -1, 5, -13, 38, 112, -17, 5, -1}, - { -1, 2, -6, 18, 123, -10, 3, -1} -#endif /* FILTER_ALPHA_SHARP */ -#endif /* SUBPEL_SHIFTS==16 */ }; DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_6[SUBPEL_SHIFTS][6]) = { -#if SUBPEL_SHIFTS==16 {0, 0, 128, 0, 0, 0}, {1, -5, 125, 8, -2, 1}, {1, -8, 122, 17, -5, 1}, @@ -224,16 +137,6 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_6[SUBPEL_SHIFTS][6]) = { {2, -8, 27, 116, -11, 2}, {1, -5, 17, 122, -8, 1}, {1, -2, 8, 125, -5, 1} -#else - { 0, 0, 128, 0, 0, 0 }, /* note that 1/8 pel positions are just as per alpha -0.5 bicubic */ - { 0, -6, 123, 12, -1, 0 }, - { 2, -11, 108, 36, -8, 1 }, /* New 1/4 pel 6 tap filter */ - { 0, -9, 93, 50, -6, 0 }, - { 3, -16, 77, 77, -16, 3 }, /* New 1/2 pel 6 tap filter */ - { 0, -6, 50, 93, -9, 0 }, - { 1, -8, 36, 108, -11, 2 }, /* New 1/4 pel 6 tap filter */ - { 0, -1, 12, 123, -6, 0 }, -#endif /* SUBPEL_SHIFTS==16 */ }; static void filter_block2d_first_pass_6 @@ -255,8 +158,8 @@ static void filter_block2d_first_pass_6 ((int)src_ptr[-1 * (int)pixel_step] * vp8_filter[1]) + ((int)src_ptr[0] * vp8_filter[2]) + ((int)src_ptr[pixel_step] * vp8_filter[3]) + - ((int)src_ptr[2 * pixel_step] * vp8_filter[4]) + - ((int)src_ptr[3 * pixel_step] * vp8_filter[5]) + + ((int)src_ptr[2 * pixel_step] * vp8_filter[4]) + + ((int)src_ptr[3 * pixel_step] * vp8_filter[5]) + (VP8_FILTER_WEIGHT >> 1); /* Rounding */ /* Normalize back to 0-255 */ diff --git a/vp8/common/filter.h b/vp8/common/filter.h index db97d1afc..fdae128e8 100644 --- a/vp8/common/filter.h +++ b/vp8/common/filter.h @@ -18,11 +18,7 @@ #define VP8_FILTER_WEIGHT 128 #define VP8_FILTER_SHIFT 7 -#if CONFIG_SIXTEENTH_SUBPEL_UV #define SUBPEL_SHIFTS 16 -#else -#define SUBPEL_SHIFTS 8 -#endif extern const short vp8_bilinear_filters[SUBPEL_SHIFTS][2]; extern const short vp8_sub_pel_filters_6[SUBPEL_SHIFTS][6]; diff --git a/vp8/common/reconinter.c b/vp8/common/reconinter.c index 4a828cda0..ce7ebbeb9 100644 --- a/vp8/common/reconinter.c +++ b/vp8/common/reconinter.c @@ -241,11 +241,7 @@ void vp8_build_inter_predictors_b(BLOCKD *d, int pitch, vp8_subpix_fn_t sppf) { if (mv.as_mv.row & 7 || mv.as_mv.col & 7) { ptr = ptr_base + d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); -#if CONFIG_SIXTEENTH_SUBPEL_UV sppf(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); -#else - sppf(ptr, d->pre_stride, mv.as_mv.col & 7, mv.as_mv.row & 7, pred_ptr, pitch); -#endif } else { ptr_base += d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); ptr = ptr_base; @@ -283,11 +279,7 @@ void vp8_build_2nd_inter_predictors_b(BLOCKD *d, int pitch, vp8_subpix_fn_t sppf if (mv.as_mv.row & 7 || mv.as_mv.col & 7) { ptr = ptr_base + d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); -#if CONFIG_SIXTEENTH_SUBPEL_UV sppf(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); -#else - sppf(ptr, d->pre_stride, mv.as_mv.col & 7, mv.as_mv.row & 7, pred_ptr, pitch); -#endif } else { ptr_base += d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); ptr = ptr_base; @@ -314,11 +306,7 @@ static void build_inter_predictors4b(MACROBLOCKD *x, BLOCKD *d, int pitch) { ptr = ptr_base + d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); if (mv.as_mv.row & 7 || mv.as_mv.col & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict8x8(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); -#else - x->subpixel_predict8x8(ptr, d->pre_stride, mv.as_mv.col & 7, mv.as_mv.row & 7, pred_ptr, pitch); -#endif } else { RECON_INVOKE(&x->rtcd->recon, copy8x8)(ptr, d->pre_stride, pred_ptr, pitch); } @@ -341,11 +329,7 @@ static void build_2nd_inter_predictors4b(MACROBLOCKD *x, BLOCKD *d, int pitch) { ptr = ptr_base + d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); if (mv.as_mv.row & 7 || mv.as_mv.col & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict_avg8x8(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); -#else - x->subpixel_predict_avg8x8(ptr, d->pre_stride, mv.as_mv.col & 7, mv.as_mv.row & 7, pred_ptr, pitch); -#endif } else { RECON_INVOKE(&x->rtcd->recon, avg8x8)(ptr, d->pre_stride, pred_ptr, pitch); } @@ -362,11 +346,7 @@ static void build_inter_predictors2b(MACROBLOCKD *x, BLOCKD *d, int pitch) { ptr = ptr_base + d->pre + (mv.as_mv.row >> 3) * d->pre_stride + (mv.as_mv.col >> 3); if (mv.as_mv.row & 7 || mv.as_mv.col & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict8x4(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); -#else - x->subpixel_predict8x4(ptr, d->pre_stride, mv.as_mv.col & 7, mv.as_mv.row & 7, pred_ptr, pitch); -#endif } else { RECON_INVOKE(&x->rtcd->recon, copy8x4)(ptr, d->pre_stride, pred_ptr, pitch); } @@ -542,7 +522,6 @@ void vp8_build_inter16x16_predictors_mbuv(MACROBLOCKD *xd) { // U & V for (i = 0; i < 2; i++) { -#if CONFIG_SIXTEENTH_SUBPEL_UV if ((omv_row | omv_col) & 15) { // Copy extended MB into Temp array, applying the spatial filter filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, @@ -551,19 +530,7 @@ void vp8_build_inter16x16_predictors_mbuv(MACROBLOCKD *xd) { // Sub-pel interpolation xd->subpixel_predict8x8(pTemp, len, omv_col & 15, omv_row & 15, pDst, 8); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if ((mv_row | mv_col) & 7) { - // Copy extended MB into Temp array, applying the spatial filter - filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, - Temp, len, len, len); - - // Sub-pel interpolation - xd->subpixel_predict8x8(pTemp, len, mv_col & 7, - mv_row & 7, pDst, 8); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { // Apply prediction filter as we copy from source to destination filter_mb(pSrc, pre_stride, pDst, 8, 8, 8); } @@ -574,18 +541,10 @@ void vp8_build_inter16x16_predictors_mbuv(MACROBLOCKD *xd) { } } else #endif -#if CONFIG_SIXTEENTH_SUBPEL_UV if ((omv_row | omv_col) & 15) { xd->subpixel_predict8x8(uptr, pre_stride, omv_col & 15, omv_row & 15, upred_ptr, 8); xd->subpixel_predict8x8(vptr, pre_stride, omv_col & 15, omv_row & 15, vpred_ptr, 8); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if ((mv_row | mv_col) & 7) { - xd->subpixel_predict8x8(uptr, pre_stride, mv_col & 7, mv_row & 7, upred_ptr, 8); - xd->subpixel_predict8x8(vptr, pre_stride, mv_col & 7, mv_row & 7, vpred_ptr, 8); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { RECON_INVOKE(&xd->rtcd->recon, copy8x8)(uptr, pre_stride, upred_ptr, 8); RECON_INVOKE(&xd->rtcd->recon, copy8x8)(vptr, pre_stride, vpred_ptr, 8); } @@ -708,13 +667,8 @@ void vp8_build_inter16x16_predictors_mby(MACROBLOCKD *xd) { Temp, len, len, len); // Sub-pel interpolation -#if CONFIG_SIXTEENTH_SUBPEL_UV xd->subpixel_predict16x16(pTemp, len, (mv_col & 7) << 1, (mv_row & 7) << 1, pred_ptr, 16); -#else - xd->subpixel_predict16x16(pTemp, len, mv_col & 7, - mv_row & 7, pred_ptr, 16); -#endif } else { // Apply spatial filter to create the prediction directly filter_mb(ptr, pre_stride, pred_ptr, 16, 16, 16); @@ -722,13 +676,8 @@ void vp8_build_inter16x16_predictors_mby(MACROBLOCKD *xd) { } else #endif if ((mv_row | mv_col) & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV xd->subpixel_predict16x16(ptr, pre_stride, (mv_col & 7) << 1, (mv_row & 7) << 1, pred_ptr, 16); -#else - xd->subpixel_predict16x16(ptr, pre_stride, mv_col & 7, - mv_row & 7, pred_ptr, 16); -#endif } else { RECON_INVOKE(&xd->rtcd->recon, copy16x16)(ptr, pre_stride, pred_ptr, 16); } @@ -808,17 +757,10 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x, Temp, len, len, len); // Sub-pel filter -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict16x16(pTemp, len, (_16x16mv.as_mv.col & 7) << 1, (_16x16mv.as_mv.row & 7) << 1, dst_y, dst_ystride); -#else - x->subpixel_predict16x16(pTemp, len, - _16x16mv.as_mv.col & 7, - _16x16mv.as_mv.row & 7, - dst_y, dst_ystride); -#endif } else { // Apply spatial filter to create the prediction directly filter_mb(ptr, pre_stride, dst_y, dst_ystride, 16, 16); @@ -826,14 +768,9 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x, } else #endif if (_16x16mv.as_int & 0x00070007) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict16x16(ptr, pre_stride, (_16x16mv.as_mv.col & 7) << 1, (_16x16mv.as_mv.row & 7) << 1, dst_y, dst_ystride); -#else - x->subpixel_predict16x16(ptr, pre_stride, _16x16mv.as_mv.col & 7, - _16x16mv.as_mv.row & 7, dst_y, dst_ystride); -#endif } else { RECON_INVOKE(&x->rtcd->recon, copy16x16)(ptr, pre_stride, dst_y, dst_ystride); @@ -873,7 +810,6 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x, // U & V for (i = 0; i < 2; i++) { -#if CONFIG_SIXTEENTH_SUBPEL_UV if (_o16x16mv.as_int & 0x000f000f) { // Copy extended MB into Temp array, applying the spatial filter filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, @@ -884,21 +820,7 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x, _o16x16mv.as_mv.col & 15, _o16x16mv.as_mv.row & 15, pDst, dst_uvstride); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if (_16x16mv.as_int & 0x00070007) { - // Copy extended MB into Temp array, applying the spatial filter - filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, - Temp, len, len, len); - - // Sub-pel filter - x->subpixel_predict8x8(pTemp, len, - _16x16mv.as_mv.col & 7, - _16x16mv.as_mv.row & 7, - pDst, dst_uvstride); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { filter_mb(pSrc, pre_stride, pDst, dst_uvstride, 8, 8); } @@ -908,18 +830,10 @@ void vp8_build_inter16x16_predictors_mb(MACROBLOCKD *x, } } else #endif -#if CONFIG_SIXTEENTH_SUBPEL_UV if (_o16x16mv.as_int & 0x000f000f) { x->subpixel_predict8x8(uptr, pre_stride, _o16x16mv.as_mv.col & 15, _o16x16mv.as_mv.row & 15, dst_u, dst_uvstride); x->subpixel_predict8x8(vptr, pre_stride, _o16x16mv.as_mv.col & 15, _o16x16mv.as_mv.row & 15, dst_v, dst_uvstride); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if (_16x16mv.as_int & 0x00070007) { - x->subpixel_predict8x8(uptr, pre_stride, _16x16mv.as_mv.col & 7, _16x16mv.as_mv.row & 7, dst_u, dst_uvstride); - x->subpixel_predict8x8(vptr, pre_stride, _16x16mv.as_mv.col & 7, _16x16mv.as_mv.row & 7, dst_v, dst_uvstride); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { RECON_INVOKE(&x->rtcd->recon, copy8x8)(uptr, pre_stride, dst_u, dst_uvstride); RECON_INVOKE(&x->rtcd->recon, copy8x8)(vptr, pre_stride, dst_v, dst_uvstride); } @@ -983,13 +897,8 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x, Temp, len, len, len); // Sub-pel filter -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict_avg16x16(pTemp, len, (mv_col & 7) << 1, (mv_row & 7) << 1, dst_y, dst_ystride); -#else - x->subpixel_predict_avg16x16(pTemp, len, mv_col & 7, - mv_row & 7, dst_y, dst_ystride); -#endif } else { // TODO Needs to AVERAGE with the dst_y // For now, do not apply the prediction filter in these cases! @@ -1000,13 +909,8 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x, #endif // CONFIG_PRED_FILTER { if ((mv_row | mv_col) & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict_avg16x16(ptr, pre_stride, (mv_col & 7) << 1, (mv_row & 7) << 1, dst_y, dst_ystride); -#else - x->subpixel_predict_avg16x16(ptr, pre_stride, mv_col & 7, - mv_row & 7, dst_y, dst_ystride); -#endif } else { RECON_INVOKE(&x->rtcd->recon, avg16x16)(ptr, pre_stride, dst_y, dst_ystride); @@ -1038,7 +942,6 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x, // U & V for (i = 0; i < 2; i++) { -#if CONFIG_SIXTEENTH_SUBPEL_UV if ((omv_row | omv_col) & 15) { // Copy extended MB into Temp array, applying the spatial filter filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, @@ -1047,19 +950,7 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x, // Sub-pel filter x->subpixel_predict_avg8x8(pTemp, len, omv_col & 15, omv_row & 15, pDst, dst_uvstride); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if ((mv_row | mv_col) & 7) { - // Copy extended MB into Temp array, applying the spatial filter - filter_mb(pSrc - (INTERP_EXTEND - 1) * (pre_stride + 1), pre_stride, - Temp, len, len, len); - - // Sub-pel filter - x->subpixel_predict_avg8x8(pTemp, len, mv_col & 7, mv_row & 7, - pDst, dst_uvstride); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { // TODO Needs to AVERAGE with the dst_[u|v] // For now, do not apply the prediction filter here! RECON_INVOKE(&x->rtcd->recon, avg8x8)(pSrc, pre_stride, pDst, @@ -1072,18 +963,10 @@ void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *x, } } else #endif // CONFIG_PRED_FILTER -#if CONFIG_SIXTEENTH_SUBPEL_UV if ((omv_row | omv_col) & 15) { x->subpixel_predict_avg8x8(uptr, pre_stride, omv_col & 15, omv_row & 15, dst_u, dst_uvstride); x->subpixel_predict_avg8x8(vptr, pre_stride, omv_col & 15, omv_row & 15, dst_v, dst_uvstride); - } -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ - if ((mv_row | mv_col) & 7) { - x->subpixel_predict_avg8x8(uptr, pre_stride, mv_col & 7, mv_row & 7, dst_u, dst_uvstride); - x->subpixel_predict_avg8x8(vptr, pre_stride, mv_col & 7, mv_row & 7, dst_v, dst_uvstride); - } -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ - else { + } else { RECON_INVOKE(&x->rtcd->recon, avg8x8)(uptr, pre_stride, dst_u, dst_uvstride); RECON_INVOKE(&x->rtcd->recon, avg8x8)(vptr, pre_stride, dst_v, dst_uvstride); } diff --git a/vp8/common/x86/subpixel_ssse3.asm b/vp8/common/x86/subpixel_ssse3.asm index 39f4f7b88..0789797b8 100644 --- a/vp8/common/x86/subpixel_ssse3.asm +++ b/vp8/common/x86/subpixel_ssse3.asm @@ -1495,7 +1495,6 @@ k2_k4: times 8 db 36, -11 times 8 db 12, -6 align 16 -%if CONFIG_SIXTEENTH_SUBPEL_UV vp8_bilinear_filters_ssse3: times 8 db 128, 0 times 8 db 120, 8 @@ -1513,15 +1512,4 @@ vp8_bilinear_filters_ssse3: times 8 db 24, 104 times 8 db 16, 112 times 8 db 8, 120 -%else -vp8_bilinear_filters_ssse3: - times 8 db 128, 0 - times 8 db 112, 16 - times 8 db 96, 32 - times 8 db 80, 48 - times 8 db 64, 64 - times 8 db 48, 80 - times 8 db 32, 96 - times 8 db 16, 112 -%endif diff --git a/vp8/common/x86/vp8_asm_stubs.c b/vp8/common/x86/vp8_asm_stubs.c index 4df4f808d..f39941258 100644 --- a/vp8/common/x86/vp8_asm_stubs.c +++ b/vp8/common/x86/vp8_asm_stubs.c @@ -13,15 +13,8 @@ #include "vpx_ports/mem.h" #include "vp8/common/subpixel.h" -#if CONFIG_SIXTEENTH_SUBPEL_UV extern const short vp8_six_tap_mmx[16][6 * 8]; extern const short vp8_bilinear_filters_mmx[16][2 * 8]; -#else -extern const short vp8_six_tap_mmx[8][6 * 8]; -extern const short vp8_bilinear_filters_mmx[8][2 * 8]; -#endif - -// #define ANNOUNCE_FUNCTION extern void vp8_filter_block1d_h6_mmx ( diff --git a/vp8/encoder/arm/variance_arm.c b/vp8/encoder/arm/variance_arm.c index b268f3e19..e11d7bbb3 100644 --- a/vp8/encoder/arm/variance_arm.c +++ b/vp8/encoder/arm/variance_arm.c @@ -13,11 +13,7 @@ #include "vp8/common/filter.h" #include "vp8/common/arm/bilinearfilter_arm.h" -#if CONFIG_SIXTEENTH_SUBPEL_UV #define HALFNDX 8 -#else -#define HALFNDX 4 -#endif #if HAVE_ARMV6 diff --git a/vp8/encoder/mcomp.c b/vp8/encoder/mcomp.c index 5a105595a..585008002 100644 --- a/vp8/encoder/mcomp.c +++ b/vp8/encoder/mcomp.c @@ -205,22 +205,14 @@ void vp8_init3smotion_compensation(MACROBLOCK *x, int stride) { */ #define PRE(r,c) (y + (((r)>>2) * y_stride + ((c)>>2) -(offset))) // pointer to predictor base of a motionvector -#if CONFIG_SIXTEENTH_SUBPEL_UV #define SP(x) (((x)&3)<<2) // convert motion vector component to offset for svf calc -#else -#define SP(x) (((x)&3)<<1) // convert motion vector component to offset for svf calc -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ #define MVC(r,c) (mvcost ? ((mvcost[0][(r)-rr] + mvcost[1][(c)-rc]) * error_per_bit + 128 )>>8 : 0) // estimated cost of a motion vector (r,c) #define DIST(r,c) vfp->svf( PRE(r,c), y_stride, SP(c),SP(r), z,b->src_stride,&sse) // returns subpixel variance error function. #define ERR(r,c) (MVC(r,c)+DIST(r,c)) // returns distortion + motion vector cost #define IFMVCV(r,c,s,e) if ( c >= minc && c <= maxc && r >= minr && r <= maxr) s else e; #define PREHP(r,c) (y + (((r)>>3) * y_stride + ((c)>>3) -(offset))) // pointer to predictor base of a motionvector -#if CONFIG_SIXTEENTH_SUBPEL_UV #define SPHP(x) (((x)&7)<<1) // convert motion vector component to offset for svf calc -#else /* CONFIG_SIXTEENTH_SUBPEL_UV */ -#define SPHP(x) ((x)&7) // convert motion vector component to offset for svf calc -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ #define DISTHP(r,c) vfp->svf( PREHP(r,c), y_stride, SPHP(c),SPHP(r), z,b->src_stride,&sse) // returns subpixel variance error function. #define ERRHP(r,c) (MVC(r,c)+DISTHP(r,c)) // returns distortion + motion vector cost #define CHECK_BETTER(v,r,c) IFMVCV(r,c,{thismse = ((xd->allow_high_precision_mv)?DISTHP(r,c):DIST(r,c)); if((v = (MVC(r,c)+thismse)) < besterr) { besterr = v; br=r; bc=c; *distortion = thismse; *sse1 = sse; }}, v=INT_MAX;)// checks if (r,c) has better score than previous best @@ -444,11 +436,7 @@ int vp8_find_best_sub_pixel_step_iteratively(MACROBLOCK *x, BLOCK *b, BLOCKD *d, #undef DISTHP #undef ERRHP -#if CONFIG_SIXTEENTH_SUBPEL_UV #define SP(x) (((x)&7)<<1) // convert motion vector component to offset for svf calc -#else -#define SP(x) ((x)&7) // convert motion vector component to offset for svf calc -#endif /* CONFIG_SIXTEENTH_SUBPEL_UV */ int vp8_find_best_sub_pixel_step(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int_mv *bestmv, int_mv *ref_mv, int error_per_bit, diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index 1a325161d..878d34476 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c @@ -518,17 +518,10 @@ int VP8_UVSSE(MACROBLOCK *x, const vp8_variance_rtcd_vtable_t *rtcd) { vptr = x->e_mbd.pre.v_buffer + offset; if ((mv_row | mv_col) & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV VARIANCE_INVOKE(rtcd, subpixvar8x8)(uptr, pre_stride, (mv_col & 7) << 1, (mv_row & 7) << 1, upred_ptr, uv_stride, &sse2); VARIANCE_INVOKE(rtcd, subpixvar8x8)(vptr, pre_stride, (mv_col & 7) << 1, (mv_row & 7) << 1, vpred_ptr, uv_stride, &sse1); -#else - VARIANCE_INVOKE(rtcd, subpixvar8x8)(uptr, pre_stride, - mv_col & 7, mv_row & 7, upred_ptr, uv_stride, &sse2); - VARIANCE_INVOKE(rtcd, subpixvar8x8)(vptr, pre_stride, - mv_col & 7, mv_row & 7, vpred_ptr, uv_stride, &sse1); -#endif sse2 += sse1; } else { VARIANCE_INVOKE(rtcd, var8x8)(uptr, pre_stride, diff --git a/vp8/encoder/temporal_filter.c b/vp8/encoder/temporal_filter.c index 964f4c856..0e86a0ca4 100644 --- a/vp8/encoder/temporal_filter.c +++ b/vp8/encoder/temporal_filter.c @@ -56,13 +56,8 @@ static void vp8_temporal_filter_predictors_mb_c yptr = y_mb_ptr + (mv_row >> 3) * stride + (mv_col >> 3); if ((mv_row | mv_col) & 7) { -#if CONFIG_SIXTEENTH_SUBPEL_UV x->subpixel_predict16x16(yptr, stride, (mv_col & 7) << 1, (mv_row & 7) << 1, &pred[0], 16); -#else - x->subpixel_predict16x16(yptr, stride, - mv_col & 7, mv_row & 7, &pred[0], 16); -#endif } else { RECON_INVOKE(&x->rtcd->recon, copy16x16)(yptr, stride, &pred[0], 16); } @@ -77,21 +72,12 @@ static void vp8_temporal_filter_predictors_mb_c uptr = u_mb_ptr + offset; vptr = v_mb_ptr + offset; -#if CONFIG_SIXTEENTH_SUBPEL_UV if ((omv_row | omv_col) & 15) { x->subpixel_predict8x8(uptr, stride, (omv_col & 15), (omv_row & 15), &pred[256], 8); x->subpixel_predict8x8(vptr, stride, (omv_col & 15), (omv_row & 15), &pred[320], 8); } -#else - if ((mv_row | mv_col) & 7) { - x->subpixel_predict8x8(uptr, stride, - mv_col & 7, mv_row & 7, &pred[256], 8); - x->subpixel_predict8x8(vptr, stride, - mv_col & 7, mv_row & 7, &pred[320], 8); - } -#endif else { RECON_INVOKE(&x->rtcd->recon, copy8x8)(uptr, stride, &pred[256], 8); RECON_INVOKE(&x->rtcd->recon, copy8x8)(vptr, stride, &pred[320], 8); diff --git a/vp8/encoder/variance_c.c b/vp8/encoder/variance_c.c index 9444ed87d..0b9d569b0 100644 --- a/vp8/encoder/variance_c.c +++ b/vp8/encoder/variance_c.c @@ -341,13 +341,8 @@ unsigned int vp8_variance_halfpixvar16x16_h_c( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 4, 0, - ref_ptr, recon_stride, sse); -#endif } @@ -357,13 +352,8 @@ unsigned int vp8_variance_halfpixvar16x16_v_c( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 0, 8, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 0, 4, - ref_ptr, recon_stride, sse); -#endif } @@ -373,13 +363,8 @@ unsigned int vp8_variance_halfpixvar16x16_hv_c( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_c(src_ptr, source_stride, 4, 4, - ref_ptr, recon_stride, sse); -#endif } diff --git a/vp8/encoder/x86/variance_impl_sse2.asm b/vp8/encoder/x86/variance_impl_sse2.asm index b13beee6e..823c2f7bf 100644 --- a/vp8/encoder/x86/variance_impl_sse2.asm +++ b/vp8/encoder/x86/variance_impl_sse2.asm @@ -1348,7 +1348,6 @@ align 16 xmm_bi_rd: times 8 dw 64 align 16 -%if CONFIG_SIXTEENTH_SUBPEL_UV vp8_bilinear_filters_sse2: dw 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0 dw 120, 120, 120, 120, 120, 120, 120, 120, 8, 8, 8, 8, 8, 8, 8, 8 @@ -1366,14 +1365,3 @@ vp8_bilinear_filters_sse2: dw 24, 24, 24, 24, 24, 24, 24, 24, 104, 104, 104, 104, 104, 104, 104, 104 dw 16, 16, 16, 16, 16, 16, 16, 16, 112, 112, 112, 112, 112, 112, 112, 112 dw 8, 8, 8, 8, 8, 8, 8, 8, 120, 120, 120, 120, 120, 120, 120, 120 -%else -vp8_bilinear_filters_sse2: - dw 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0 - dw 112, 112, 112, 112, 112, 112, 112, 112, 16, 16, 16, 16, 16, 16, 16, 16 - dw 96, 96, 96, 96, 96, 96, 96, 96, 32, 32, 32, 32, 32, 32, 32, 32 - dw 80, 80, 80, 80, 80, 80, 80, 80, 48, 48, 48, 48, 48, 48, 48, 48 - dw 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - dw 48, 48, 48, 48, 48, 48, 48, 48, 80, 80, 80, 80, 80, 80, 80, 80 - dw 32, 32, 32, 32, 32, 32, 32, 32, 96, 96, 96, 96, 96, 96, 96, 96 - dw 16, 16, 16, 16, 16, 16, 16, 16, 112, 112, 112, 112, 112, 112, 112, 112 -%endif diff --git a/vp8/encoder/x86/variance_impl_ssse3.asm b/vp8/encoder/x86/variance_impl_ssse3.asm index d60d53daa..33ba51a91 100644 --- a/vp8/encoder/x86/variance_impl_ssse3.asm +++ b/vp8/encoder/x86/variance_impl_ssse3.asm @@ -353,7 +353,6 @@ align 16 xmm_bi_rd: times 8 dw 64 align 16 -%if CONFIG_SIXTEENTH_SUBPEL_UV vp8_bilinear_filters_ssse3: times 8 db 128, 0 times 8 db 120, 8 @@ -371,14 +370,3 @@ vp8_bilinear_filters_ssse3: times 8 db 24, 104 times 8 db 16, 112 times 8 db 8, 120 -%else -vp8_bilinear_filters_ssse3: - times 8 db 128, 0 - times 8 db 112, 16 - times 8 db 96, 32 - times 8 db 80, 48 - times 8 db 64, 64 - times 8 db 48, 80 - times 8 db 32, 96 - times 8 db 16, 112 -%endif diff --git a/vp8/encoder/x86/variance_mmx.c b/vp8/encoder/x86/variance_mmx.c index 19264489d..7e63acf9b 100644 --- a/vp8/encoder/x86/variance_mmx.c +++ b/vp8/encoder/x86/variance_mmx.c @@ -198,7 +198,6 @@ unsigned int vp8_variance8x16_mmx( // the mmx function that does the bilinear filtering and var calculation // // int one pass // /////////////////////////////////////////////////////////////////////////// -#if CONFIG_SIXTEENTH_SUBPEL_UV DECLARE_ALIGNED(16, const short, vp8_vp7_bilinear_filters_mmx[16][8]) = { { 128, 128, 128, 128, 0, 0, 0, 0 }, { 120, 120, 120, 120, 8, 8, 8, 8 }, @@ -217,18 +216,6 @@ DECLARE_ALIGNED(16, const short, vp8_vp7_bilinear_filters_mmx[16][8]) = { { 16, 16, 16, 16, 112, 112, 112, 112 }, { 8, 8, 8, 8, 120, 120, 120, 120 } }; -#else -DECLARE_ALIGNED(16, const short, vp8_vp7_bilinear_filters_mmx[8][8]) = { - { 128, 128, 128, 128, 0, 0, 0, 0 }, - { 112, 112, 112, 112, 16, 16, 16, 16 }, - { 96, 96, 96, 96, 32, 32, 32, 32 }, - { 80, 80, 80, 80, 48, 48, 48, 48 }, - { 64, 64, 64, 64, 64, 64, 64, 64 }, - { 48, 48, 48, 48, 80, 80, 80, 80 }, - { 32, 32, 32, 32, 96, 96, 96, 96 }, - { 16, 16, 16, 16, 112, 112, 112, 112 } -}; -#endif unsigned int vp8_sub_pixel_variance4x4_mmx ( @@ -392,13 +379,8 @@ unsigned int vp8_variance_halfpixvar16x16_h_mmx( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 8, 0, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 4, 0, - ref_ptr, recon_stride, sse); -#endif } @@ -408,13 +390,8 @@ unsigned int vp8_variance_halfpixvar16x16_v_mmx( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 0, 8, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 0, 4, - ref_ptr, recon_stride, sse); -#endif } @@ -424,11 +401,6 @@ unsigned int vp8_variance_halfpixvar16x16_hv_mmx( const unsigned char *ref_ptr, int recon_stride, unsigned int *sse) { -#if CONFIG_SIXTEENTH_SUBPEL_UV return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 8, 8, ref_ptr, recon_stride, sse); -#else - return vp8_sub_pixel_variance16x16_mmx(src_ptr, source_stride, 4, 4, - ref_ptr, recon_stride, sse); -#endif } diff --git a/vp8/encoder/x86/variance_sse2.c b/vp8/encoder/x86/variance_sse2.c index 0d6b2372e..6dbc70b80 100644 --- a/vp8/encoder/x86/variance_sse2.c +++ b/vp8/encoder/x86/variance_sse2.c @@ -13,11 +13,7 @@ #include "vp8/common/pragmas.h" #include "vpx_ports/mem.h" -#if CONFIG_SIXTEENTH_SUBPEL_UV #define HALFNDX 8 -#else -#define HALFNDX 4 -#endif extern void filter_block1d_h6_mmx(const unsigned char *src_ptr, unsigned short *output_ptr, unsigned int src_pixels_per_line, unsigned int pixel_step, unsigned int output_height, unsigned int output_width, short *vp7_filter); extern void filter_block1d_v6_mmx(const short *src_ptr, unsigned char *output_ptr, unsigned int pixels_per_line, unsigned int pixel_step, unsigned int output_height, unsigned int output_width, short *vp7_filter); @@ -141,11 +137,7 @@ void vp8_half_vert_variance16x_h_sse2 unsigned int *sumsquared ); -#if CONFIG_SIXTEENTH_SUBPEL_UV DECLARE_ALIGNED(16, extern short, vp8_vp7_bilinear_filters_mmx[16][8]); -#else -DECLARE_ALIGNED(16, extern short, vp8_vp7_bilinear_filters_mmx[8][8]); -#endif unsigned int vp8_variance4x4_wmt( const unsigned char *src_ptr, diff --git a/vp8/encoder/x86/variance_ssse3.c b/vp8/encoder/x86/variance_ssse3.c index fc3b313f6..2e85017f1 100644 --- a/vp8/encoder/x86/variance_ssse3.c +++ b/vp8/encoder/x86/variance_ssse3.c @@ -13,11 +13,7 @@ #include "vp8/common/pragmas.h" #include "vpx_ports/mem.h" -#if CONFIG_SIXTEENTH_SUBPEL_UV #define HALFNDX 8 -#else -#define HALFNDX 4 -#endif extern unsigned int vp8_get16x16var_sse2 (