diff options
author | Jingning Han <jingning@google.com> | 2015-01-08 11:16:14 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2015-01-08 11:16:14 -0800 |
commit | e535ad50672e3e9c2c874eec38adbe9dc4e4ed99 (patch) | |
tree | 2d8f69dcb9e1c5adba6a530daf2ba994055d69b2 /vp9 | |
parent | 97dc782635bfa208b1c3b9182d800fd3abe770c5 (diff) | |
parent | ea061a885deea564e52145d3affaf33c0f7871a6 (diff) | |
download | libvpx-e535ad50672e3e9c2c874eec38adbe9dc4e4ed99.tar libvpx-e535ad50672e3e9c2c874eec38adbe9dc4e4ed99.tar.gz libvpx-e535ad50672e3e9c2c874eec38adbe9dc4e4ed99.tar.bz2 libvpx-e535ad50672e3e9c2c874eec38adbe9dc4e4ed99.zip |
Merge "Refactor denoiser frame buffer update"
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_denoiser.c | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/vp9/encoder/vp9_denoiser.c b/vp9/encoder/vp9_denoiser.c index 9e037e1dd..febad495b 100644 --- a/vp9/encoder/vp9_denoiser.c +++ b/vp9/encoder/vp9_denoiser.c @@ -365,6 +365,15 @@ static void copy_frame(YV12_BUFFER_CONFIG dest, const YV12_BUFFER_CONFIG src) { } } +static void swap_frame_buffer(YV12_BUFFER_CONFIG dest, + YV12_BUFFER_CONFIG src) { + uint8_t *tmp_buf = dest.y_buffer; + assert(dest.y_width == src.y_width); + assert(dest.y_height == src.y_height); + dest.y_buffer = src.y_buffer; + src.y_buffer = tmp_buf; +} + void vp9_denoiser_update_frame_info(VP9_DENOISER *denoiser, YV12_BUFFER_CONFIG src, FRAME_TYPE frame_type, @@ -374,22 +383,23 @@ void vp9_denoiser_update_frame_info(VP9_DENOISER *denoiser, if (frame_type == KEY_FRAME) { int i; // Start at 1 so as not to overwrite the INTRA_FRAME - for (i = 1; i < MAX_REF_FRAMES; ++i) { + for (i = 1; i < MAX_REF_FRAMES; ++i) copy_frame(denoiser->running_avg_y[i], src); - } - } else { /* For non key frames */ - if (refresh_alt_ref_frame) { - copy_frame(denoiser->running_avg_y[ALTREF_FRAME], - denoiser->running_avg_y[INTRA_FRAME]); - } - if (refresh_golden_frame) { - copy_frame(denoiser->running_avg_y[GOLDEN_FRAME], - denoiser->running_avg_y[INTRA_FRAME]); - } - if (refresh_last_frame) { - copy_frame(denoiser->running_avg_y[LAST_FRAME], - denoiser->running_avg_y[INTRA_FRAME]); - } + return; + } + + /* For non key frames */ + if (refresh_alt_ref_frame) { + swap_frame_buffer(denoiser->running_avg_y[ALTREF_FRAME], + denoiser->running_avg_y[INTRA_FRAME]); + } + if (refresh_golden_frame) { + swap_frame_buffer(denoiser->running_avg_y[GOLDEN_FRAME], + denoiser->running_avg_y[INTRA_FRAME]); + } + if (refresh_last_frame) { + swap_frame_buffer(denoiser->running_avg_y[LAST_FRAME], + denoiser->running_avg_y[INTRA_FRAME]); } } |