From 92c536b465422bce94e8d47d08bf218e3f8e222c Mon Sep 17 00:00:00 2001 From: Dmitry Kovalev Date: Thu, 1 May 2014 11:35:50 -0700 Subject: [PATCH] Adding vp9_temporal_filter_init() function. Change-Id: I0d50354111df79b74aafcd3bb7dc14df3c14733a --- vp9/encoder/vp9_encoder.c | 6 +----- vp9/encoder/vp9_encoder.h | 1 - vp9/encoder/vp9_temporal_filter.c | 16 +++++++++++++--- vp9/encoder/vp9_temporal_filter.h | 1 + 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 395d26aef..f3ab4ede3 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -162,6 +162,7 @@ void vp9_initialize_enc() { vp9_rc_init_minq_luts(); vp9_entropy_mv_init(); vp9_entropy_mode_init(); + vp9_temporal_filter_init(); init_done = 1; } } @@ -536,7 +537,6 @@ static void set_tile_limits(VP9_COMP *cpi) { static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) { VP9_COMMON *const cm = &cpi->common; - int i; cpi->oxcf = *oxcf; @@ -571,10 +571,6 @@ static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) { cpi->alt_fb_idx = 2; set_tile_limits(cpi); - - cpi->fixed_divide[0] = 0; - for (i = 1; i < 512; i++) - cpi->fixed_divide[i] = 0x80000 / i; } static int get_pass(MODE mode) { diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h index edd45948d..6b9737076 100644 --- a/vp9/encoder/vp9_encoder.h +++ b/vp9/encoder/vp9_encoder.h @@ -443,7 +443,6 @@ typedef struct VP9_COMP { YV12_BUFFER_CONFIG alt_ref_buffer; YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS]; - int fixed_divide[512]; #if CONFIG_INTERNAL_STATS unsigned int mode_chosen_counts[MAX_MODES]; diff --git a/vp9/encoder/vp9_temporal_filter.c b/vp9/encoder/vp9_temporal_filter.c index ca9339155..a176bbf91 100644 --- a/vp9/encoder/vp9_temporal_filter.c +++ b/vp9/encoder/vp9_temporal_filter.c @@ -27,6 +27,8 @@ #include "vpx_ports/vpx_timer.h" #include "vpx_scale/vpx_scale.h" +static int fixed_divide[512]; + static void temporal_filter_predictors_mb_c(MACROBLOCKD *xd, uint8_t *y_mb_ptr, uint8_t *u_mb_ptr, @@ -78,6 +80,14 @@ static void temporal_filter_predictors_mb_c(MACROBLOCKD *xd, kernel, mv_precision_uv, x, y); } +void vp9_temporal_filter_init() { + int i; + + fixed_divide[0] = 0; + for (i = 1; i < 512; ++i) + fixed_divide[i] = 0x80000 / i; +} + void vp9_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, @@ -294,7 +304,7 @@ static void temporal_filter_iterate_c(VP9_COMP *cpi, for (i = 0, k = 0; i < 16; i++) { for (j = 0; j < 16; j++, k++) { unsigned int pval = accumulator[k] + (count[k] >> 1); - pval *= cpi->fixed_divide[count[k]]; + pval *= fixed_divide[count[k]]; pval >>= 19; dst1[byte] = (uint8_t)pval; @@ -315,13 +325,13 @@ static void temporal_filter_iterate_c(VP9_COMP *cpi, // U unsigned int pval = accumulator[k] + (count[k] >> 1); - pval *= cpi->fixed_divide[count[k]]; + pval *= fixed_divide[count[k]]; pval >>= 19; dst1[byte] = (uint8_t)pval; // V pval = accumulator[m] + (count[m] >> 1); - pval *= cpi->fixed_divide[count[m]]; + pval *= fixed_divide[count[m]]; pval >>= 19; dst2[byte] = (uint8_t)pval; diff --git a/vp9/encoder/vp9_temporal_filter.h b/vp9/encoder/vp9_temporal_filter.h index 3028d7884..9453dc16a 100644 --- a/vp9/encoder/vp9_temporal_filter.h +++ b/vp9/encoder/vp9_temporal_filter.h @@ -15,6 +15,7 @@ extern "C" { #endif +void vp9_temporal_filter_init(); void vp9_temporal_filter_prepare(VP9_COMP *cpi, int distance); void vp9_configure_arnr_filter(VP9_COMP *cpi, const unsigned int frames_to_arnr, -- 2.40.0