Fix frame buffer swap in denoiser
This commit fixes a bug in denoiser reference frame buffer swap, which disables frame buffer update. Change-Id: I39a9427180fd18f9692602064ad821f7af4714c0
This commit is contained in:
@@ -352,6 +352,7 @@ static void copy_frame(YV12_BUFFER_CONFIG dest, const YV12_BUFFER_CONFIG src) {
|
|||||||
int r;
|
int r;
|
||||||
const uint8_t *srcbuf = src.y_buffer;
|
const uint8_t *srcbuf = src.y_buffer;
|
||||||
uint8_t *destbuf = dest.y_buffer;
|
uint8_t *destbuf = dest.y_buffer;
|
||||||
|
|
||||||
assert(dest.y_width == src.y_width);
|
assert(dest.y_width == src.y_width);
|
||||||
assert(dest.y_height == src.y_height);
|
assert(dest.y_height == src.y_height);
|
||||||
|
|
||||||
@@ -362,13 +363,13 @@ static void copy_frame(YV12_BUFFER_CONFIG dest, const YV12_BUFFER_CONFIG src) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void swap_frame_buffer(YV12_BUFFER_CONFIG dest,
|
static void swap_frame_buffer(YV12_BUFFER_CONFIG *dest,
|
||||||
YV12_BUFFER_CONFIG src) {
|
YV12_BUFFER_CONFIG *src) {
|
||||||
uint8_t *tmp_buf = dest.y_buffer;
|
uint8_t *tmp_buf = dest->y_buffer;
|
||||||
assert(dest.y_width == src.y_width);
|
assert(dest->y_width == src->y_width);
|
||||||
assert(dest.y_height == src.y_height);
|
assert(dest->y_height == src->y_height);
|
||||||
dest.y_buffer = src.y_buffer;
|
dest->y_buffer = src->y_buffer;
|
||||||
src.y_buffer = tmp_buf;
|
src->y_buffer = tmp_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vp9_denoiser_update_frame_info(VP9_DENOISER *denoiser,
|
void vp9_denoiser_update_frame_info(VP9_DENOISER *denoiser,
|
||||||
@@ -387,16 +388,16 @@ void vp9_denoiser_update_frame_info(VP9_DENOISER *denoiser,
|
|||||||
|
|
||||||
/* For non key frames */
|
/* For non key frames */
|
||||||
if (refresh_alt_ref_frame) {
|
if (refresh_alt_ref_frame) {
|
||||||
swap_frame_buffer(denoiser->running_avg_y[ALTREF_FRAME],
|
swap_frame_buffer(&denoiser->running_avg_y[ALTREF_FRAME],
|
||||||
denoiser->running_avg_y[INTRA_FRAME]);
|
&denoiser->running_avg_y[INTRA_FRAME]);
|
||||||
}
|
}
|
||||||
if (refresh_golden_frame) {
|
if (refresh_golden_frame) {
|
||||||
swap_frame_buffer(denoiser->running_avg_y[GOLDEN_FRAME],
|
swap_frame_buffer(&denoiser->running_avg_y[GOLDEN_FRAME],
|
||||||
denoiser->running_avg_y[INTRA_FRAME]);
|
&denoiser->running_avg_y[INTRA_FRAME]);
|
||||||
}
|
}
|
||||||
if (refresh_last_frame) {
|
if (refresh_last_frame) {
|
||||||
swap_frame_buffer(denoiser->running_avg_y[LAST_FRAME],
|
swap_frame_buffer(&denoiser->running_avg_y[LAST_FRAME],
|
||||||
denoiser->running_avg_y[INTRA_FRAME]);
|
&denoiser->running_avg_y[INTRA_FRAME]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user