From 0ebf548c752ef25ff8e9a65037fd9aee6420184e Mon Sep 17 00:00:00 2001 From: Deb Mukherjee Date: Fri, 27 Jul 2012 17:46:33 -0700 Subject: [PATCH] Merging and bug-fix in enhanced_interp experiment Merged the enhanced_interp experiment. Found and fixed a bug in the include files framework, whereby certain encoder files were still using the old INTERP_EXTEND value of 3 instead of 4. The thresholds for mv range mcomp.c need a small adjustment to prevent crashes. The results are more or less unchanged. Change-Id: Iac5008390f1efc97ce1102fbb5f8989c847fb579 --- configure | 2 -- vp8/common/blockd.h | 2 -- vp8/common/filter.c | 16 ++++++--------- vp8/common/generic/systemdependent.c | 3 +-- vp8/common/reconinter.c | 2 -- vp8/common/subpixel.h | 4 ---- vp8/common/x86/x86_systemdependent.c | 12 ++++++------ vp8/decoder/decodframe.c | 8 +------- vp8/encoder/bitstream.c | 2 -- vp8/encoder/mcomp.c | 12 ++++++++---- vp8/encoder/onyx_if.c | 38 ++++++++++++------------------------ vp8/encoder/onyx_int.h | 2 -- vpx_scale/arm/scalesystemdependent.c | 2 ++ vpx_scale/yv12config.h | 8 +++----- 14 files changed, 40 insertions(+), 73 deletions(-) diff --git a/configure b/configure index 525ccd1..d001715 100755 --- a/configure +++ b/configure @@ -215,13 +215,11 @@ HAVE_LIST=" " EXPERIMENT_LIST=" csm - enhanced_interp featureupdates high_precision_mv sixteenth_subpel_uv comp_intra_pred superblocks - newintramodes pred_filter lossless hybridtransform diff --git a/vp8/common/blockd.h b/vp8/common/blockd.h index 1bbaa64..ccd1d46 100644 --- a/vp8/common/blockd.h +++ b/vp8/common/blockd.h @@ -80,13 +80,11 @@ typedef enum { SIXTAP = 0, BILINEAR = 1, -#if CONFIG_ENHANCED_INTERP EIGHTTAP = 2, EIGHTTAP_SHARP = 3, #if CONFIG_SWITCHABLE_INTERP SWITCHABLE /* should be the last one */ #endif -#endif } INTERPOLATIONFILTERTYPE; #if 0//CONFIG_SWITCHABLE_INTERP diff --git a/vp8/common/filter.c b/vp8/common/filter.c index 78c2390..1a58234 100644 --- a/vp8/common/filter.c +++ b/vp8/common/filter.c @@ -43,11 +43,10 @@ DECLARE_ALIGNED(16, const short, vp8_bilinear_filters[SUBPEL_SHIFTS][2]) = { #endif /* SUBPEL_SHIFTS==16 */ }; -#if CONFIG_ENHANCED_INTERP - #define FILTER_ALPHA 0 #define FILTER_ALPHA_SHARP 1 -DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8[SUBPEL_SHIFTS][2 * INTERP_EXTEND]) = { +DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8[SUBPEL_SHIFTS][8]) = { + #if SUBPEL_SHIFTS==16 #if FILTER_ALPHA == 0 /* Lagrangian interpolation filter */ @@ -116,7 +115,7 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8[SUBPEL_SHIFTS][2 * INTERP #endif /* SUBPEL_SHIFTS==16 */ }; -DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][2 * INTERP_EXTEND]) = { +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 */ @@ -137,6 +136,7 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][2 * INTER {-1, 3, -6, 17, 125, -13, 5, -2}, {0, 1, -3, 8, 127, -7, 3, -1} #elif FILTER_ALPHA_SHARP == 75 + /* alpha = 0.75 */ {0, 0, 0, 128, 0, 0, 0, 0}, {-1, 2, -6, 126, 9, -3, 2, -1}, {-1, 4, -11, 123, 18, -7, 3, -1}, @@ -174,6 +174,7 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][2 * INTER #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}, @@ -183,6 +184,7 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][2 * INTER {-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}, @@ -205,8 +207,6 @@ DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_8s[SUBPEL_SHIFTS][2 * INTER #endif /* SUBPEL_SHIFTS==16 */ }; -#endif // CONFIG_ENHANCED_INTERP - DECLARE_ALIGNED(16, const short, vp8_sub_pel_filters_6[SUBPEL_SHIFTS][6]) = { #if SUBPEL_SHIFTS==16 {0, 0, 128, 0, 0, 0}, @@ -590,8 +590,6 @@ void vp8_sixtap_predict_avg16x16_c 16, 16, 16, 16, VFilter); } -#if CONFIG_ENHANCED_INTERP - #undef Interp_Extend #define Interp_Extend 4 @@ -1148,8 +1146,6 @@ void vp8_eighttap_predict_avg16x16_sharp_c 16, 16, 16, 16, VFilter); } -#endif /* CONFIG_ENHANCED_INTERP */ - /**************************************************************************** * * ROUTINE : filter_block2d_bil_first_pass diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c index df16223..4414263 100644 --- a/vp8/common/generic/systemdependent.c +++ b/vp8/common/generic/systemdependent.c @@ -78,7 +78,6 @@ void vp8_machine_specific_config(VP8_COMMON *ctx) { vp8_comp_intra_uv4x4_predict; #endif -#if CONFIG_ENHANCED_INTERP rtcd->subpix.eighttap16x16 = vp8_eighttap_predict16x16_c; rtcd->subpix.eighttap8x8 = vp8_eighttap_predict8x8_c; rtcd->subpix.eighttap_avg16x16 = vp8_eighttap_predict_avg16x16_c; @@ -93,7 +92,7 @@ void vp8_machine_specific_config(VP8_COMMON *ctx) { rtcd->subpix.eighttap_avg4x4_sharp = vp8_eighttap_predict_avg4x4_sharp_c; rtcd->subpix.eighttap8x4_sharp = vp8_eighttap_predict8x4_sharp_c; rtcd->subpix.eighttap4x4_sharp = vp8_eighttap_predict_sharp_c; -#endif + rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_c; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_c; rtcd->subpix.sixtap_avg16x16 = vp8_sixtap_predict_avg16x16_c; diff --git a/vp8/common/reconinter.c b/vp8/common/reconinter.c index 6f7d963..4a828cd 100644 --- a/vp8/common/reconinter.c +++ b/vp8/common/reconinter.c @@ -38,7 +38,6 @@ void vp8_setup_interp_filters(MACROBLOCKD *xd, xd->subpixel_predict_avg16x16 = SUBPIX_INVOKE( &cm->rtcd.subpix, sixtap_avg16x16); } -#if CONFIG_ENHANCED_INTERP else if (mcomp_filter_type == EIGHTTAP #if CONFIG_SWITCHABLE_INTERP || @@ -75,7 +74,6 @@ void vp8_setup_interp_filters(MACROBLOCKD *xd, xd->subpixel_predict_avg16x16 = SUBPIX_INVOKE( &cm->rtcd.subpix, eighttap_avg16x16_sharp); } -#endif else { xd->subpixel_predict = SUBPIX_INVOKE( &cm->rtcd.subpix, bilinear4x4); diff --git a/vp8/common/subpixel.h b/vp8/common/subpixel.h index c2dae72..3b5b667 100644 --- a/vp8/common/subpixel.h +++ b/vp8/common/subpixel.h @@ -58,7 +58,6 @@ extern prototype_subpixel_predict(vp8_subpix_sixtap4x4); #endif extern prototype_subpixel_predict(vp8_subpix_sixtap_avg4x4); -#if CONFIG_ENHANCED_INTERP #ifndef vp8_subpix_eighttap16x16 #define vp8_subpix_eighttap16x16 vp8_eighttap_predict16x16_c #endif @@ -128,7 +127,6 @@ extern prototype_subpixel_predict(vp8_subpix_eighttap4x4_sharp); #define vp8_subpix_eighttap_avg4x4_sharp vp8_eighttap_predict_avg4x4_sharp_c #endif extern prototype_subpixel_predict(vp8_subpix_eighttap_avg4x4_sharp); -#endif /* CONFIG_ENAHNCED_INTERP */ #ifndef vp8_subpix_bilinear16x16 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_c @@ -167,7 +165,6 @@ extern prototype_subpixel_predict(vp8_subpix_bilinear_avg4x4); typedef prototype_subpixel_predict((*vp8_subpix_fn_t)); typedef struct { -#if CONFIG_ENHANCED_INTERP vp8_subpix_fn_t eighttap16x16; vp8_subpix_fn_t eighttap8x8; vp8_subpix_fn_t eighttap_avg16x16; @@ -182,7 +179,6 @@ typedef struct { vp8_subpix_fn_t eighttap_avg4x4_sharp; vp8_subpix_fn_t eighttap8x4_sharp; vp8_subpix_fn_t eighttap4x4_sharp; -#endif vp8_subpix_fn_t sixtap16x16; vp8_subpix_fn_t sixtap8x8; vp8_subpix_fn_t sixtap_avg16x16; diff --git a/vp8/common/x86/x86_systemdependent.c b/vp8/common/x86/x86_systemdependent.c index d60442f..2c66d9f 100644 --- a/vp8/common/x86/x86_systemdependent.c +++ b/vp8/common/x86/x86_systemdependent.c @@ -46,12 +46,12 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) { rtcd->recon.copy8x4 = vp8_copy_mem8x4_mmx; rtcd->recon.copy16x16 = vp8_copy_mem16x16_mmx; -#if CONFIG_ENHANCED_INTERP == 0 && CONFIG_HIGH_PRECISION_MV == 0 && CONFIG_SIXTEENTH_SUBPEL_UV == 0 + /* Disabled due to unsupported enhanced interpolation/high_prec mv rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_mmx; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_mmx; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_mmx; rtcd->subpix.sixtap4x4 = vp8_sixtap_predict4x4_mmx; -#endif + */ rtcd->subpix.bilinear16x16 = vp8_bilinear_predict16x16_mmx; rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_mmx; rtcd->subpix.bilinear8x4 = vp8_bilinear_predict8x4_mmx; @@ -91,11 +91,11 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) { // rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_sse2; -#if CONFIG_ENHANCED_INTERP == 0 && CONFIG_HIGH_PRECISION_MV == 0 && CONFIG_SIXTEENTH_SUBPEL_UV == 0 + /* Disabled due to unsupported enhanced interpolation/high_prec mv rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_sse2; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_sse2; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_sse2; -#endif + */ rtcd->subpix.bilinear16x16 = vp8_bilinear_predict16x16_sse2; rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_sse2; @@ -121,14 +121,14 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) { #if HAVE_SSSE3 if (flags & HAS_SSSE3) { -#if CONFIG_ENHANCED_INTERP == 0 && CONFIG_HIGH_PRECISION_MV == 0 && CONFIG_SIXTEENTH_SUBPEL_UV == 0 + /* Disabled due to unsupported enhanced interpolation/high_prec mv rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_ssse3; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_ssse3; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_ssse3; rtcd->subpix.sixtap4x4 = vp8_sixtap_predict4x4_ssse3; rtcd->subpix.bilinear16x16 = vp8_bilinear_predict16x16_ssse3; rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_ssse3; -#endif + */ /* these are disable because of unsupported diagonal pred modes rtcd->recon.build_intra_predictors_mbuv = diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index c31595d..2d91b3c 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c @@ -746,15 +746,11 @@ static void init_frame(VP8D_COMP *pbi) { } else { if (!pc->use_bilinear_mc_filter) -#if CONFIG_ENHANCED_INTERP pc->mcomp_filter_type = EIGHTTAP; -#else - pc->mcomp_filter_type = SIXTAP; -#endif else pc->mcomp_filter_type = BILINEAR; - /* To enable choice of different interploation filters */ + /* To enable choice of different interpolation filters */ vp8_setup_interp_filters(xd, pc->mcomp_filter_type, pc); } @@ -1226,7 +1222,6 @@ int vp8_decode_frame(VP8D_COMP *pbi) { /* Is high precision mv allowed */ xd->allow_high_precision_mv = (unsigned char)vp8_read_bit(bc); #endif -#if CONFIG_ENHANCED_INTERP // Read the type of subpel filter to use #if CONFIG_SWITCHABLE_INTERP if (vp8_read_bit(bc)) { @@ -1238,7 +1233,6 @@ int vp8_decode_frame(VP8D_COMP *pbi) { } /* To enable choice of different interploation filters */ vp8_setup_interp_filters(xd, pc->mcomp_filter_type, pc); -#endif } pc->refresh_entropy_probs = vp8_read_bit(bc); diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c index 97e791b..f42a2e6 100644 --- a/vp8/encoder/bitstream.c +++ b/vp8/encoder/bitstream.c @@ -2273,7 +2273,6 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size) // Signal whether to allow high MV precision vp8_write_bit(bc, (xd->allow_high_precision_mv) ? 1 : 0); #endif -#if CONFIG_ENHANCED_INTERP #if CONFIG_SWITCHABLE_INTERP if (pc->mcomp_filter_type == SWITCHABLE) { /* Check to see if only one of the filters is actually used */ @@ -2301,7 +2300,6 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size) if (pc->mcomp_filter_type != SWITCHABLE) #endif /* CONFIG_SWITCHABLE_INTERP */ vp8_write_literal(bc, (pc->mcomp_filter_type), 2); -#endif /* CONFIG_ENHANCED_INTERP */ } vp8_write_bit(bc, pc->refresh_entropy_probs); diff --git a/vp8/encoder/mcomp.c b/vp8/encoder/mcomp.c index 0b08ed3..891b479 100644 --- a/vp8/encoder/mcomp.c +++ b/vp8/encoder/mcomp.c @@ -257,10 +257,14 @@ int vp8_find_best_sub_pixel_step_iteratively(MACROBLOCK *x, BLOCK *b, BLOCKD *d, int buf_r1, buf_r2, buf_c1, buf_c2; // Clamping to avoid out-of-range data access - buf_r1 = ((bestmv->as_mv.row - INTERP_EXTEND) < x->mv_row_min) ? (bestmv->as_mv.row - x->mv_row_min) : INTERP_EXTEND; - buf_r2 = ((bestmv->as_mv.row + INTERP_EXTEND) > x->mv_row_max) ? (x->mv_row_max - bestmv->as_mv.row) : INTERP_EXTEND; - buf_c1 = ((bestmv->as_mv.col - INTERP_EXTEND) < x->mv_col_min) ? (bestmv->as_mv.col - x->mv_col_min) : INTERP_EXTEND; - buf_c2 = ((bestmv->as_mv.col + INTERP_EXTEND) > x->mv_col_max) ? (x->mv_col_max - bestmv->as_mv.col) : INTERP_EXTEND; + buf_r1 = ((bestmv->as_mv.row - INTERP_EXTEND) < x->mv_row_min) ? + (bestmv->as_mv.row - x->mv_row_min) : INTERP_EXTEND - 1; + buf_r2 = ((bestmv->as_mv.row + INTERP_EXTEND) > x->mv_row_max) ? + (x->mv_row_max - bestmv->as_mv.row) : INTERP_EXTEND - 1; + buf_c1 = ((bestmv->as_mv.col - INTERP_EXTEND) < x->mv_col_min) ? + (bestmv->as_mv.col - x->mv_col_min) : INTERP_EXTEND - 1; + buf_c2 = ((bestmv->as_mv.col + INTERP_EXTEND) > x->mv_col_max) ? + (x->mv_col_max - bestmv->as_mv.col) : INTERP_EXTEND - 1; y_stride = 32; /* Copy to intermediate buffer before searching. */ diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 5b6684a..95a32e2 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -81,17 +81,19 @@ static void set_default_lf_deltas(VP8_COMP *cpi); extern const int vp8_gf_interval_table[101]; -#if CONFIG_ENHANCED_INTERP -#define SEARCH_BEST_FILTER 0 /* to search for best filter */ +#define SEARCH_BEST_FILTER 0 /* to search exhaustively for + best filter */ #define RESET_FOREACH_FILTER 0 /* whether to reset the encoder state - * before trying each new filter */ -#define SHARP_FILTER_QTHRESH 0 /* Q threshold for 8-tap sharp filter */ -#endif + before trying each new filter */ +#define SHARP_FILTER_QTHRESH 0 /* Q threshold for 8-tap sharp filter */ + #if CONFIG_HIGH_PRECISION_MV -#define ALTREF_HIGH_PRECISION_MV 1 /* whether to use high precision mv for altref computation */ -#define HIGH_PRECISION_MV_QTHRESH 200 /* Q threshold for use of high precision mv - * Choose a very high value for now so - * that HIGH_PRECISION is always chosen */ +#define ALTREF_HIGH_PRECISION_MV 1 /* whether to use high precision mv + for altref computation */ +#define HIGH_PRECISION_MV_QTHRESH 200 /* Q threshold for use of high precision + mv. Choose a very high value for + now so that HIGH_PRECISION is always + chosen */ #endif #if CONFIG_INTERNAL_STATS @@ -778,9 +780,7 @@ void vp8_set_speed_features(VP8_COMP *cpi) { sf->first_step = 0; sf->max_step_search_steps = MAX_MVSEARCH_STEPS; -#if CONFIG_ENHANCED_INTERP sf->search_best_filter = SEARCH_BEST_FILTER; -#endif break; case 1: #if CONFIG_PRED_FILTER @@ -1586,11 +1586,7 @@ void vp8_change_config(VP8_PTR ptr, VP8_CONFIG *oxcf) { cpi->cq_target_quality = cpi->oxcf.cq_level; if (!cm->use_bilinear_mc_filter) -#if CONFIG_ENHANCED_INTERP cm->mcomp_filter_type = EIGHTTAP; -#else - cm->mcomp_filter_type = SIXTAP; -#endif else cm->mcomp_filter_type = BILINEAR; @@ -2895,7 +2891,6 @@ static void encode_frame_to_data_rate int loop_size_estimate = 0; -#if CONFIG_ENHANCED_INTERP SPEED_FEATURES *sf = &cpi->sf; #if RESET_FOREACH_FILTER int q_low0; @@ -2921,7 +2916,6 @@ static void encode_frame_to_data_rate int mcomp_filters = sizeof(mcomp_filters_to_search) / sizeof(*mcomp_filters_to_search); int mcomp_filter_index = 0; INT64 mcomp_filter_cost[4]; -#endif // Clear down mmx registers to allow floating point in what follows vp8_clear_system_state(); @@ -3137,9 +3131,7 @@ static void encode_frame_to_data_rate loop_count = 0; -#if CONFIG_HIGH_PRECISION_MV || CONFIG_ENHANCED_INTERP if (cm->frame_type != KEY_FRAME) { -#if CONFIG_ENHANCED_INTERP /* TODO: Decide this more intelligently */ if (sf->search_best_filter) { cm->mcomp_filter_type = mcomp_filters_to_search[0]; @@ -3152,13 +3144,11 @@ static void encode_frame_to_data_rate (Q < SHARP_FILTER_QTHRESH ? EIGHTTAP_SHARP : EIGHTTAP); #endif } -#endif #if CONFIG_HIGH_PRECISION_MV /* TODO: Decide this more intelligently */ xd->allow_high_precision_mv = (Q < HIGH_PRECISION_MV_QTHRESH); #endif } -#endif #if CONFIG_POSTPROC @@ -3206,7 +3196,7 @@ static void encode_frame_to_data_rate vp8_write_yuv_frame(cpi->Source); #endif -#if CONFIG_ENHANCED_INTERP && RESET_FOREACH_FILTER +#if RESET_FOREACH_FILTER if (sf->search_best_filter) { q_low0 = q_low; q_high0 = q_high; @@ -3468,7 +3458,7 @@ static void encode_frame_to_data_rate if (cpi->is_src_frame_alt_ref) Loop = FALSE; -#if CONFIG_ENHANCED_INTERP && CONFIG_SWITCHABLE_INTERP +#if CONFIG_SWITCHABLE_INTERP if (cm->frame_type != KEY_FRAME && !sf->search_best_filter && cm->mcomp_filter_type == SWITCHABLE) { @@ -3502,7 +3492,6 @@ static void encode_frame_to_data_rate } #endif -#if CONFIG_ENHANCED_INTERP if (Loop == FALSE && cm->frame_type != KEY_FRAME && sf->search_best_filter) { if (mcomp_filter_index < mcomp_filters) { INT64 err = vp8_calc_ss_err(cpi->Source, @@ -3555,7 +3544,6 @@ static void encode_frame_to_data_rate #endif } } -#endif /* CONFIG_ENHANCED_INTERP */ if (Loop == TRUE) { loop_count++; diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h index 2821aad..ef68122 100644 --- a/vp8/encoder/onyx_int.h +++ b/vp8/encoder/onyx_int.h @@ -317,9 +317,7 @@ typedef struct { int optimize_coefficients; int no_skip_block4x4_search; int improved_mv_pred; -#if CONFIG_ENHANCED_INTERP int search_best_filter; -#endif } SPEED_FEATURES; diff --git a/vpx_scale/arm/scalesystemdependent.c b/vpx_scale/arm/scalesystemdependent.c index 5c19d61..d168d05 100644 --- a/vpx_scale/arm/scalesystemdependent.c +++ b/vpx_scale/arm/scalesystemdependent.c @@ -87,9 +87,11 @@ void vp8_scale_machine_specific_config() { if (flags & HAS_NEON) #endif { +#if VP8BORDERINPIXELS == 32 vp8_yv12_extend_frame_borders_ptr = vp8_yv12_extend_frame_borders_neon; vp8_yv12_copy_frame_yonly_ptr = vp8_yv12_copy_frame_yonly_neon; vp8_yv12_copy_frame_ptr = vp8_yv12_copy_frame_neon; +#endif } #endif } diff --git a/vpx_scale/yv12config.h b/vpx_scale/yv12config.h index 1c18b09..83523e2 100644 --- a/vpx_scale/yv12config.h +++ b/vpx_scale/yv12config.h @@ -11,6 +11,9 @@ #ifndef YV12_CONFIG_H #define YV12_CONFIG_H + +#include "vpx_config.h" + #ifdef __cplusplus extern "C" { @@ -18,13 +21,8 @@ extern "C" #define VP7BORDERINPIXELS 48 -#if CONFIG_ENHANCED_INTERP #define VP8BORDERINPIXELS 64 #define INTERP_EXTEND 4 -#else -#define VP8BORDERINPIXELS 32 -#define INTERP_EXTEND 3 -#endif /************************************* For INT_YUV: -- 2.7.4