From: John Koleszar Date: Thu, 24 May 2012 16:40:48 +0000 (-0700) Subject: Merge "Fix another multithreaded encoder loopfilter race condition" X-Git-Tag: 1.0_branch~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d708e7fbbefb1db496a1073e1f8e3b113f073aab;hp=d790bc17797253d2fdb17490c31ff7bafdbe2a41;p=profile%2Fivi%2Flibvpx.git Merge "Fix another multithreaded encoder loopfilter race condition" --- diff --git a/vp8/common/loopfilter.c b/vp8/common/loopfilter.c index 3f05efe..b9ac0ff 100644 --- a/vp8/common/loopfilter.c +++ b/vp8/common/loopfilter.c @@ -196,18 +196,14 @@ void vp8_loop_filter_frame_init(VP8_COMMON *cm, } } -void vp8_loop_filter_frame -( - VP8_COMMON *cm, - MACROBLOCKD *mbd -) +void vp8_loop_filter_frame(VP8_COMMON *cm, + MACROBLOCKD *mbd, + int frame_type) { YV12_BUFFER_CONFIG *post = cm->frame_to_show; loop_filter_info_n *lfi_n = &cm->lf_info; loop_filter_info lfi; - FRAME_TYPE frame_type = cm->frame_type; - int mb_row; int mb_col; int mb_rows = cm->mb_rows; diff --git a/vp8/common/loopfilter.h b/vp8/common/loopfilter.h index 0fa8375..0497271 100644 --- a/vp8/common/loopfilter.h +++ b/vp8/common/loopfilter.h @@ -76,7 +76,8 @@ void vp8_loop_filter_frame_init(struct VP8Common *cm, struct macroblockd *mbd, int default_filt_lvl); -void vp8_loop_filter_frame(struct VP8Common *cm, struct macroblockd *mbd); +void vp8_loop_filter_frame(struct VP8Common *cm, struct macroblockd *mbd, + int frame_type); void vp8_loop_filter_partial_frame(struct VP8Common *cm, struct macroblockd *mbd, diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c index 50d609d..e9d1a56 100644 --- a/vp8/decoder/onyxd_if.c +++ b/vp8/decoder/onyxd_if.c @@ -471,7 +471,7 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, unsigned long size, const unsi if(cm->filter_level) { /* Apply the loop filter if appropriate. */ - vp8_loop_filter_frame(cm, &pbi->mb); + vp8_loop_filter_frame(cm, &pbi->mb, cm->frame_type); } vp8_yv12_extend_frame_borders(cm->frame_to_show); } diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 372d5aa..a0309df 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -3117,6 +3117,8 @@ static void update_reference_frames(VP8_COMMON *cm) void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm) { + const FRAME_TYPE frame_type = cm->frame_type; + if (cm->no_lpf) { cm->filter_level = 0; @@ -3134,6 +3136,11 @@ void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm) else vp8cx_pick_filter_level(cpi->Source, cpi); + if (cm->filter_level > 0) + { + vp8cx_set_alt_lf_level(cpi, cm->filter_level); + } + vpx_usec_timer_mark(&timer); cpi->time_pick_lpf += vpx_usec_timer_elapsed(&timer); } @@ -3145,8 +3152,7 @@ void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm) if (cm->filter_level > 0) { - vp8cx_set_alt_lf_level(cpi, cm->filter_level); - vp8_loop_filter_frame(cm, &cpi->mb.e_mbd); + vp8_loop_filter_frame(cm, &cpi->mb.e_mbd, frame_type); } vp8_yv12_extend_frame_borders(cm->frame_to_show);