Fix encoder real-time only configuration. Remove allocation/deallocation of stats storage. Remove full search functions in machine specific encoder inits. Remove last pass validation in validate_config. Change-Id: I7f29be69273981a4fef6e80ecdb6217c68cbad4e
diff --git a/vp8/encoder/generic/csystemdependent.c b/vp8/encoder/generic/csystemdependent.c index be00d02..4738a5b 100644 --- a/vp8/encoder/generic/csystemdependent.c +++ b/vp8/encoder/generic/csystemdependent.c
@@ -91,8 +91,9 @@ cpi->rtcd.quantize.quantb = vp8_regular_quantize_b; cpi->rtcd.quantize.fastquantb = vp8_fast_quantize_b_c; - +#if !(CONFIG_REALTIME_ONLY) cpi->rtcd.search.full_search = vp8_full_search_sad; +#endif cpi->rtcd.search.diamond_search = vp8_diamond_search_sad; cpi->rtcd.temporal.apply = vp8_temporal_filter_apply_c;
diff --git a/vp8/encoder/mcomp.c b/vp8/encoder/mcomp.c index 9b91739..d9923fb 100644 --- a/vp8/encoder/mcomp.c +++ b/vp8/encoder/mcomp.c
@@ -408,6 +408,7 @@ diag = vfp->svf_halfpix_hv(y - 1, d->pre_stride, z, b->src_stride, &sse); break; case 3: + default: this_mv.col += 4; this_mv.row += 4; diag = vfp->svf_halfpix_hv(y, d->pre_stride, z, b->src_stride, &sse); @@ -1387,8 +1388,6 @@ else return INT_MAX; } -#endif - int vp8_full_search_sadx8(MACROBLOCK *x, BLOCK *b, BLOCKD *d, MV *ref_mv, int error_per_bit, int distance, vp8_variance_fn_ptr_t *fn_ptr, int *mvcost[2], int *mvsadcost[2], MV *center_mv) { @@ -1541,6 +1540,7 @@ else return INT_MAX; } +#endif /* !(CONFIG_REALTIME_ONLY) */ #ifdef ENTROPY_STATS void print_mode_context(void)
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 47fc3f7..b7aa507 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c
@@ -314,7 +314,7 @@ vpx_free(cpi->tok); cpi->tok = 0; - // Structure used to minitor GF useage + // Structure used to monitor GF usage if (cpi->gf_active_flags != 0) vpx_free(cpi->gf_active_flags); @@ -325,6 +325,7 @@ cpi->mb.pip = 0; +#if !(CONFIG_REALTIME_ONLY) if(cpi->total_stats) vpx_free(cpi->total_stats); @@ -334,6 +335,7 @@ vpx_free(cpi->this_frame_stats); cpi->this_frame_stats = 0; +#endif } static void enable_segmentation(VP8_PTR ptr) @@ -1448,6 +1450,7 @@ cpi->gf_active_count = cm->mb_rows * cm->mb_cols; +#if !(CONFIG_REALTIME_ONLY) if(cpi->total_stats) vpx_free(cpi->total_stats); @@ -1461,6 +1464,7 @@ if(!cpi->total_stats || !cpi->this_frame_stats) vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR, "Failed to allocate firstpass stats"); +#endif } @@ -3150,8 +3154,8 @@ // Update data structure that monitors level of reference to last GF vpx_memset(cpi->gf_active_flags, 1, (cm->mb_rows * cm->mb_cols)); cpi->gf_active_count = cm->mb_rows * cm->mb_cols; - // this frame refreshes means next frames don't unless specified by user + // this frame refreshes means next frames don't unless specified by user cpi->common.frames_since_golden = 0; // Clear the alternate reference update pending flag. @@ -4362,10 +4366,6 @@ IF_RTCD(&cpi->rtcd.variance)); } - // Update the GF useage maps. - // This is done after completing the compression of a frame when all modes etc. are finalized but before loop filter - vp8_update_gf_useage_maps(cpi, cm, &cpi->mb); - // This frame's MVs are saved and will be used in next frame's MV prediction. if(cm->show_frame) //do not save for altref frame {
diff --git a/vp8/encoder/x86/x86_csystemdependent.c b/vp8/encoder/x86/x86_csystemdependent.c index c7dffc4..f9b3ea1 100644 --- a/vp8/encoder/x86/x86_csystemdependent.c +++ b/vp8/encoder/x86/x86_csystemdependent.c
@@ -323,8 +323,9 @@ cpi->rtcd.variance.sad8x16x3 = vp8_sad8x16x3_sse3; cpi->rtcd.variance.sad8x8x3 = vp8_sad8x8x3_sse3; cpi->rtcd.variance.sad4x4x3 = vp8_sad4x4x3_sse3; +#if !(CONFIG_REALTIME_ONLY) cpi->rtcd.search.full_search = vp8_full_search_sadx3; - +#endif cpi->rtcd.variance.sad16x16x4d = vp8_sad16x16x4d_sse3; cpi->rtcd.variance.sad16x8x4d = vp8_sad16x8x4d_sse3; cpi->rtcd.variance.sad8x16x4d = vp8_sad8x16x4d_sse3; @@ -353,7 +354,9 @@ cpi->rtcd.variance.sad8x16x8 = vp8_sad8x16x8_sse4; cpi->rtcd.variance.sad8x8x8 = vp8_sad8x8x8_sse4; cpi->rtcd.variance.sad4x4x8 = vp8_sad4x4x8_sse4; +#if !(CONFIG_REALTIME_ONLY) cpi->rtcd.search.full_search = vp8_full_search_sadx8; +#endif } #endif
diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c index 1c9009a..903c56c 100644 --- a/vp8/vp8_cx_iface.c +++ b/vp8/vp8_cx_iface.c
@@ -194,6 +194,7 @@ RANGE_CHECK(vp8_cfg, arnr_type, 1, 3); RANGE_CHECK(vp8_cfg, cq_level, 0, 63); +#if !(CONFIG_REALTIME_ONLY) if (cfg->g_pass == VPX_RC_LAST_PASS) { int mb_r = (cfg->g_h + 15) / 16; @@ -217,6 +218,7 @@ if ((int)(stats->count + 0.5) != n_packets - 1) ERROR("rc_twopass_stats_in missing EOS stats packet"); } +#endif return VPX_CODEC_OK; }