Merge "added work buffer for denoiser"

This commit is contained in:
Scott LaVarnway 2012-12-06 15:27:54 -08:00 committed by Gerrit Code Review
commit bc10eab41b
2 changed files with 15 additions and 13 deletions

View File

@ -140,8 +140,7 @@ int vp8_denoiser_allocate(VP8_DENOISER *denoiser, int width, int height)
int i; int i;
assert(denoiser); assert(denoiser);
/* don't need one for intra start at 1 */ for (i = 0; i < MAX_REF_FRAMES; i++)
for (i = 1; i < MAX_REF_FRAMES; i++)
{ {
denoiser->yv12_running_avg[i].flags = 0; denoiser->yv12_running_avg[i].flags = 0;
@ -175,8 +174,7 @@ void vp8_denoiser_free(VP8_DENOISER *denoiser)
int i; int i;
assert(denoiser); assert(denoiser);
/* we don't have one for intra ref frame */ for (i = 0; i < MAX_REF_FRAMES ; i++)
for (i = 1; i < MAX_REF_FRAMES ; i++)
{ {
vp8_yv12_de_alloc_frame_buffer(&denoiser->yv12_running_avg[i]); vp8_yv12_de_alloc_frame_buffer(&denoiser->yv12_running_avg[i]);
} }
@ -291,7 +289,7 @@ void vp8_denoiser_denoise_mb(VP8_DENOISER *denoiser,
{ {
/* Filter. */ /* Filter. */
decision = vp8_denoiser_filter(&denoiser->yv12_mc_running_avg, decision = vp8_denoiser_filter(&denoiser->yv12_mc_running_avg,
&denoiser->yv12_running_avg[LAST_FRAME], &denoiser->yv12_running_avg[INTRA_FRAME],
x, x,
motion_magnitude2, motion_magnitude2,
recon_yoffset, recon_uvoffset); recon_yoffset, recon_uvoffset);
@ -303,7 +301,7 @@ void vp8_denoiser_denoise_mb(VP8_DENOISER *denoiser,
*/ */
vp8_copy_mem16x16( vp8_copy_mem16x16(
x->thismb, 16, x->thismb, 16,
denoiser->yv12_running_avg[LAST_FRAME].y_buffer + recon_yoffset, denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset,
denoiser->yv12_running_avg[LAST_FRAME].y_stride); denoiser->yv12_running_avg[INTRA_FRAME].y_stride);
} }
} }

View File

@ -3177,8 +3177,6 @@ void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm)
#if CONFIG_TEMPORAL_DENOISING #if CONFIG_TEMPORAL_DENOISING
if (cpi->oxcf.noise_sensitivity) if (cpi->oxcf.noise_sensitivity)
{ {
/* we shouldn't have to keep multiple copies as we know in advance which /* we shouldn't have to keep multiple copies as we know in advance which
* buffer we should start - for now to get something up and running * buffer we should start - for now to get something up and running
* I've chosen to copy the buffers * I've chosen to copy the buffers
@ -3195,26 +3193,32 @@ void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm)
for (i = 2; i < MAX_REF_FRAMES - 1; i++) for (i = 2; i < MAX_REF_FRAMES - 1; i++)
vp8_yv12_copy_frame( vp8_yv12_copy_frame(
cpi->Source, &cpi->denoiser.yv12_running_avg[LAST_FRAME],
&cpi->denoiser.yv12_running_avg[i]); &cpi->denoiser.yv12_running_avg[i]);
} }
else /* For non key frames */ else /* For non key frames */
{ {
vp8_yv12_extend_frame_borders( vp8_yv12_extend_frame_borders(
&cpi->denoiser.yv12_running_avg[LAST_FRAME]); &cpi->denoiser.yv12_running_avg[INTRA_FRAME]);
if (cm->refresh_alt_ref_frame || cm->copy_buffer_to_arf) if (cm->refresh_alt_ref_frame || cm->copy_buffer_to_arf)
{ {
vp8_yv12_copy_frame( vp8_yv12_copy_frame(
&cpi->denoiser.yv12_running_avg[LAST_FRAME], &cpi->denoiser.yv12_running_avg[INTRA_FRAME],
&cpi->denoiser.yv12_running_avg[ALTREF_FRAME]); &cpi->denoiser.yv12_running_avg[ALTREF_FRAME]);
} }
if (cm->refresh_golden_frame || cm->copy_buffer_to_gf) if (cm->refresh_golden_frame || cm->copy_buffer_to_gf)
{ {
vp8_yv12_copy_frame( vp8_yv12_copy_frame(
&cpi->denoiser.yv12_running_avg[LAST_FRAME], &cpi->denoiser.yv12_running_avg[INTRA_FRAME],
&cpi->denoiser.yv12_running_avg[GOLDEN_FRAME]); &cpi->denoiser.yv12_running_avg[GOLDEN_FRAME]);
} }
if(cm->refresh_last_frame)
{
vp8_yv12_copy_frame(
&cpi->denoiser.yv12_running_avg[INTRA_FRAME],
&cpi->denoiser.yv12_running_avg[LAST_FRAME]);
}
} }
} }