Home | History | Annotate | Download | only in encoder

Lines Matching refs:denoiser

71   /* If motion_magnitude is small, making the denoiser more aggressive by
135 // When adopting aggressive denoiser, the adj_val for each pixel
141 // We don't do this for UV denoiser, since there are only 8 rows,
231 /* If motion_magnitude is small, making the denoiser more aggressive by
358 void vp8_denoiser_set_parameters(VP8_DENOISER *denoiser, int mode) {
359 assert(mode > 0); // Denoiser is allocated only if mode > 0.
361 denoiser->denoiser_mode = kDenoiserOnYOnly;
363 denoiser->denoiser_mode = kDenoiserOnYUV;
365 denoiser->denoiser_mode = kDenoiserOnYUVAggressive;
367 denoiser->denoiser_mode = kDenoiserOnYUV;
369 if (denoiser->denoiser_mode != kDenoiserOnYUVAggressive) {
370 denoiser->denoise_pars.scale_sse_thresh = 1;
371 denoiser->denoise_pars.scale_motion_thresh = 8;
372 denoiser->denoise_pars.scale_increase_filter = 0;
373 denoiser->denoise_pars.denoise_mv_bias = 95;
374 denoiser->denoise_pars.pickmode_mv_bias = 100;
375 denoiser->denoise_pars.qp_thresh = 0;
376 denoiser->denoise_pars.consec_zerolast = UINT_MAX;
377 denoiser->denoise_pars.spatial_blur = 0;
379 denoiser->denoise_pars.scale_sse_thresh = 2;
380 denoiser->denoise_pars.scale_motion_thresh = 16;
381 denoiser->denoise_pars.scale_increase_filter = 1;
382 denoiser->denoise_pars.denoise_mv_bias = 60;
383 denoiser->denoise_pars.pickmode_mv_bias = 75;
384 denoiser->denoise_pars.qp_thresh = 80;
385 denoiser->denoise_pars.consec_zerolast = 15;
386 denoiser->denoise_pars.spatial_blur = 0;
390 int vp8_denoiser_allocate(VP8_DENOISER *denoiser, int width, int height,
393 assert(denoiser);
394 denoiser->num_mb_cols = num_mb_cols;
397 denoiser->yv12_running_avg[i].flags = 0;
399 if (vp8_yv12_alloc_frame_buffer(&(denoiser->yv12_running_avg[i]), width,
401 vp8_denoiser_free(denoiser);
404 memset(denoiser->yv12_running_avg[i].buffer_alloc, 0,
405 denoiser->yv12_running_avg[i].frame_size);
407 denoiser->yv12_mc_running_avg.flags = 0;
409 if (vp8_yv12_alloc_frame_buffer(&(denoiser->yv12_mc_running_avg), width,
411 vp8_denoiser_free(denoiser);
415 memset(denoiser->yv12_mc_running_avg.buffer_alloc, 0,
416 denoiser->yv12_mc_running_avg.frame_size);
418 if (vp8_yv12_alloc_frame_buffer(&denoiser->yv12_last_source, width, height,
420 vp8_denoiser_free(denoiser);
423 memset(denoiser->yv12_last_source.buffer_alloc, 0,
424 denoiser->yv12_last_source.frame_size);
426 denoiser->denoise_state = vpx_calloc((num_mb_rows * num_mb_cols), 1);
427 if (!denoiser->denoise_state) {
428 vp8_denoiser_free(denoiser);
431 memset(denoiser->denoise_state, 0, (num_mb_rows * num_mb_cols));
432 vp8_denoiser_set_parameters(denoiser, mode);
433 denoiser->nmse_source_diff = 0;
434 denoiser->nmse_source_diff_count = 0;
435 denoiser->qp_avg = 0;
437 denoiser->qp_threshold_up = 80;
440 denoiser->qp_threshold_down = 128;
444 denoiser->bitrate_threshold = 400000; // (bits/sec).
445 denoiser->threshold_aggressive_mode = 80;
447 denoiser->bitrate_threshold = 3000000;
448 denoiser->threshold_aggressive_mode = 200;
450 denoiser->bitrate_threshold = 1200000;
451 denoiser->threshold_aggressive_mode = 120;
453 denoiser->bitrate_threshold = 600000;
454 denoiser->threshold_aggressive_mode = 100;
459 void vp8_denoiser_free(VP8_DENOISER *denoiser) {
461 assert(denoiser);
464 vp8_yv12_de_alloc_frame_buffer(&denoiser->yv12_running_avg[i]);
466 vp8_yv12_de_alloc_frame_buffer(&denoiser->yv12_mc_running_avg);
467 vp8_yv12_de_alloc_frame_buffer(&denoiser->yv12_last_source);
468 vpx_free(denoiser->denoise_state);
471 void vp8_denoiser_denoise_mb(VP8_DENOISER *denoiser, MACROBLOCK *x,
495 YV12_BUFFER_CONFIG *src = &denoiser->yv12_running_avg[frame];
496 YV12_BUFFER_CONFIG *dst = &denoiser->yv12_mc_running_avg;
503 const int zero_bias = denoiser->denoise_pars.denoise_mv_bias;
537 src = &denoiser->yv12_running_avg[zero_frame];
550 denoiser->denoise_pars.scale_motion_thresh * NOISE_MOTION_THRESHOLD;
553 denoiser->denoise_pars.scale_increase_filter * NOISE_MOTION_THRESHOLD) {
557 sse_thresh = denoiser->denoise_pars.scale_sse_thresh * SSE_THRESHOLD;
559 sse_thresh = denoiser->denoise_pars.scale_sse_thresh * SSE_THRESHOLD_HIGH;
610 denoiser->yv12_mc_running_avg.y_buffer + recon_yoffset;
611 int mc_avg_y_stride = denoiser->yv12_mc_running_avg.y_stride;
613 denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset;
614 int avg_y_stride = denoiser->yv12_running_avg[INTRA_FRAME].y_stride;
620 denoiser->denoise_state[block_index] =
623 if (denoiser->denoiser_mode != kDenoiserOnYOnly && motion_magnitude2 == 0 &&
626 denoiser->yv12_mc_running_avg.u_buffer + recon_uvoffset;
628 denoiser->yv12_running_avg[INTRA_FRAME].u_buffer + recon_uvoffset;
630 denoiser->yv12_mc_running_avg.v_buffer + recon_uvoffset;
632 denoiser->yv12_running_avg[INTRA_FRAME].v_buffer + recon_uvoffset;
633 int mc_avg_uv_stride = denoiser->yv12_mc_running_avg.uv_stride;
634 int avg_uv_stride = denoiser->yv12_running_avg[INTRA_FRAME].uv_stride;
653 denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset,
654 denoiser->yv12_running_avg[INTRA_FRAME].y_stride);
655 denoiser->denoise_state[block_index] = kNoFilter;
657 if (denoiser->denoiser_mode != kDenoiserOnYOnly) {
661 denoiser->yv12_running_avg[INTRA_FRAME].u_buffer + recon_uvoffset,
662 denoiser->yv12_running_avg[INTRA_FRAME].uv_stride);
667 denoiser->yv12_running_avg[INTRA_FRAME].v_buffer + recon_uvoffset,
668 denoiser->yv12_running_avg[INTRA_FRAME].uv_stride);
677 int y_stride = denoiser->yv12_running_avg[INTRA_FRAME].y_stride;
678 int uv_stride = denoiser->yv12_running_avg[INTRA_FRAME].uv_stride;
689 // Apply filter if there is a difference in the denoiser filter state
694 !((denoiser->denoise_state[block_index] ==
695 denoiser->denoise_state[block_index - 1]) &&
696 denoiser->denoise_state[block_index] != kFilterNonZeroMV);
701 denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset,
707 !((denoiser->denoise_state[block_index] ==
708 denoiser->denoise_state[block_index - denoiser->num_mb_cols]) &&
709 denoiser->denoise_state[block_index] != kFilterNonZeroMV);
714 denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset,
722 denoiser->yv12_running_avg[INTRA_FRAME].y_buffer + recon_yoffset,