From 29d586b462f2c37bd468dd51cf32ef5982777056 Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Wed, 30 Jun 2010 09:42:39 -0400 Subject: [PATCH] Add loopfilter initialization fix in multithreading code Modified loopfilter initialization to avoid unnecessary operations. Change-Id: I9fd1a5a49edc1cb8116c2a72a6908b1e437459ec --- vp8/common/onyxc_int.h | 1 + vp8/decoder/threading.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/vp8/common/onyxc_int.h b/vp8/common/onyxc_int.h index 4d5d9878..33a54337 100644 --- a/vp8/common/onyxc_int.h +++ b/vp8/common/onyxc_int.h @@ -201,6 +201,7 @@ typedef struct VP8Common void vp8_adjust_mb_lf_value(MACROBLOCKD *mbd, int *filter_level); void vp8_init_loop_filter(VP8_COMMON *cm); +void vp8_frame_init_loop_filter(loop_filter_info *lfi, int frame_type); extern void vp8_loop_filter_frame(VP8_COMMON *cm, MACROBLOCKD *mbd, int filt_val); #endif diff --git a/vp8/decoder/threading.c b/vp8/decoder/threading.c index 38d60421..18c8da07 100644 --- a/vp8/decoder/threading.c +++ b/vp8/decoder/threading.c @@ -281,11 +281,11 @@ THREAD_FUNCTION vp8_thread_loop_filter(void *p_data) YV12_BUFFER_CONFIG *post = &cm->new_frame; loop_filter_info *lfi = cm->lf_info; + int frame_type = cm->frame_type; int mb_row; int mb_col; - int baseline_filter_level[MAX_MB_SEGMENTS]; int filter_level; int alt_flt_enabled = mbd->segmentation_enabled; @@ -319,7 +319,10 @@ THREAD_FUNCTION vp8_thread_loop_filter(void *p_data) } // Initialize the loop filter for this frame. - vp8_init_loop_filter(cm); + if ((cm->last_filter_type != cm->filter_type) || (cm->last_sharpness_level != cm->sharpness_level)) + vp8_init_loop_filter(cm); + else if (frame_type != cm->last_frame_type) + vp8_frame_init_loop_filter(lfi, frame_type); // Set up the buffer pointers y_ptr = post->y_buffer; -- 2.11.4.GIT