1. 04 Dec, 2014 1 commit
  2. 24 Oct, 2014 1 commit
    • Marco's avatar
      vp8: Updates to noise level estimate. · fe2fd37b
      Marco authored
      -Use full bandwidth (when temporal layers is on) for checking switching.
      -Normalize metric wrt num_blocks.
      -Rounding fix to update of average noise level metric.
      -Make default internal denoiser mode == kDenoiserOnYUV (in denoiser set_parameters()).
      -Adjust some thresholds.
      
      Change-Id: Ib827512b25a7bf1f66c76d3045f3a68ce56b1cd2
      fe2fd37b
  3. 17 Oct, 2014 1 commit
    • Marco's avatar
      Updates to aggressive denoising mode. · 6f77bff6
      Marco authored
      Fix to the noise level and bitrate threshold settings per resolution.
      
      Change-Id: I25524b7f78afa1aeb76edef7be13c17bc8976508
      6f77bff6
  4. 19 Sep, 2014 1 commit
    • Marco's avatar
      vp8: Update to the adaptive denoising mode. · 06fce6b6
      Marco authored
      Allow for option to apply spatial blur for temporal
      denoising, under the aggressive denoising mode.
      
      Change-Id: I41c5fdc0b6cf32d8f8d1d4236b25fa5aa406e89e
      06fce6b6
  5. 10 Sep, 2014 1 commit
  6. 09 Sep, 2014 1 commit
  7. 02 Sep, 2014 1 commit
  8. 26 Aug, 2014 1 commit
  9. 15 Aug, 2014 1 commit
    • Marco Paniconi's avatar
      Add an adaptive denoising mode. · 8db245b6
      Marco Paniconi authored
      On key frame, will always start with normal denoising mode,
      but based on a computed noise metric (normalized mse on source diff)
      may switch to aggressive mode (and back down again).
      
      Change-Id: I20330b2dcf3056287be37223302b2cab5fc103eb
      8db245b6
  10. 08 Aug, 2014 1 commit
  11. 29 Jul, 2014 1 commit
  12. 22 Jul, 2014 1 commit
    • Marco Paniconi's avatar
      vp8: Set default denoiser_decision to copy for UV channel. · daed770d
      Marco Paniconi authored
      Since the UV decision to denoise is based on Y, we need to set
      the default/initial denoiser decision_u/v to COPY_BLOCK,
      to make sure if no uv_denoiser is applied we still update
      (uv)running_avg with source.
      
      Change-Id: I5af1c2afbd40c498cd3de208bea88c837099b24d
      daed770d
  13. 15 Jul, 2014 1 commit
  14. 30 Jun, 2014 1 commit
  15. 26 Jun, 2014 1 commit
  16. 16 Jun, 2014 1 commit
  17. 13 Jun, 2014 1 commit
    • Marco Paniconi's avatar
      Allow for deblocking temporal-denoised signal. · d08b2ba1
      Marco Paniconi authored
      Allow for an option to selectively apply the deblocking loop filter to the denoised
      raw block, based on the denoised state (no-filter, filter with zero motion, or filter with non-zero motion)
      of the current block and its upper and left denoised block.
      This helps to reduce some blocking artifacts from the motion-compensated denoising.
      
      Change-Id: I0ac4e70076df69a98c5391979e739a2681e24ae6
      d08b2ba1
  18. 28 May, 2014 1 commit
    • Marco Paniconi's avatar
      vp8 denoiser: fix to zero_mv mode selection. · 609e91f9
      Marco Paniconi authored
      In the current logic, if the sse for zero motion is smaller
      than the sse for new_mv (i.e., best_sse), we may still end up
      using the non-zero mv for denoising (if the magnitude of new_mv is above threshold).
      This can happen for very noisy content, and can lead to artifacts.
      
      This change ensures that we always use zero_mv (over new_mv) for
      denoisng if sse_zero_mv <= best_sse.
      
      Change-Id: I8ef9294d837b077013b77a46c9a71d17c648b48a
      609e91f9
  19. 21 May, 2014 1 commit
    • Marco Paniconi's avatar
      Fix to reduce block artifacts from vp8 temporal denoiser. · 4e81ab82
      Marco Paniconi authored
      If the denoiser filter causes too big a change in the absolute pixel difference
      (between source and denoised signal), the block is not denoised, which can cause
      visual block artifacts. This change applies a second adjustment to the temporal filter
      to effectively allow for a (weaker) denoising for such blocks (which can keep
      the absolute differnence within the tolerance range in most cases).
      This helps to reduce some of the block artifacts from the denoising.
      The additional cost of re-applying the filter to this set of blocks is low,
      as the percentage of blocks per frame (with too big a change in absolute pixel difference)
      is typically small, 2-5%.
      
      Change-Id: Id9b56e59e33f3c22e79d2f89f763bdde246fdf3f
      4e81ab82
  20. 16 May, 2014 1 commit
  21. 14 May, 2014 1 commit
  22. 07 May, 2014 1 commit
  23. 02 May, 2014 1 commit
  24. 14 Mar, 2013 1 commit
  25. 06 Dec, 2012 1 commit
    • Scott LaVarnway's avatar
      added work buffer for denoiser · ef2248a2
      Scott LaVarnway authored
      The denoiser was writing to LAST_FRAME buffer.   If LAST_FRAME isn't being
      updated,  the reference frame buffers were out of sync between the encoder and the
      denoised raw buffers. This patch resolves the discrepancy by always writing to a work
      buffer (INTRA_FRAME) and then copying from that buffer to any buffers that needs to
      be updated.
      
      Change-Id: I6dd855b9749978b542bc3d515914d5f16faf25df
      ef2248a2
  26. 15 Nov, 2012 1 commit
  27. 31 Aug, 2012 1 commit
    • Yunqing Wang's avatar
      Encoder denoiser performance improvement · 64075c9b
      Yunqing Wang authored
      The denoiser function was modified to reduce the computational
      complexity.
      
      1. The denoiser c function modification:
      The original implementation calculated pixel's filter_coefficient
      based on the pixel value difference between current raw frame and last
      denoised raw frame, and stored them in lookup tables. For each pixel c,
      find its coefficient using
          filter_coefficient[c] = LUT[abs_diff[c]];
      and then apply filtering operation for the pixel.
      
      The denoising filter costed about 12% of encoding time when it was
      turned on, and half of the time was spent on finding coefficients in
      lookup tables. In order to simplify the process, a short cut was taken.
      The pixel adjustments vs. pixel diff value were calculated ahead of time.
          adjustment = filtered_value - current_raw
                     = (filter_coefficient * diff + 128) >> 8
      
      The adjustment vs. diff curve becomes flat very quick when diff increases.
      This allowed us to use only several levels to get a close approximation
      of the curve. Following the denoiser algorithm, the adjustments are
      further modified according to how big the motion magnitude is.
      
      2. The sse2 function was rewritten.
      
      This change made denoiser filter function 3x faster, and improved the
      encoder performance by 7% ~ 10% with the denoiser on.
      
      Change-Id: I93a4308963b8e80c7307f96ffa8b8c667425bf50
      64075c9b
  28. 20 Aug, 2012 1 commit
  29. 11 Jun, 2012 1 commit
    • John Koleszar's avatar
      Fix pedantic compiler warnings · 0164a1cc
      John Koleszar authored
      Allows building the library with the gcc -pedantic option, for improved
      portabilty. In particular, this commit removes usage of C99/C++ style
      single-line comments and dynamic struct initializers. This is a
      continuation of the work done in commit 97b766a4, which removed most
      of these warnings for decode only builds.
      
      Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
      0164a1cc
  30. 30 May, 2012 4 commits
  31. 24 May, 2012 1 commit
    • Jim Bankoski's avatar
      fix denoiser for temporal patterns and rd · 57faddb7
      Jim Bankoski authored
      This extends the denoiser to work for temporally scalable
      coding.
      
      I believe this also fixes a very rare but really bad bug in the original
      implementation.
      
      
      Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
      57faddb7
  32. 21 May, 2012 1 commit
  33. 04 May, 2012 1 commit
    • John Koleszar's avatar
      fix vp8_ namespace issues · 14d827f4
      John Koleszar authored
      Make functions only referenced from one translation unit static. Other
      symbols with extern linkage get a vp8/vpx prefix.
      
      Change-Id: I928c7e0d0d36e89ac78cb54ff8bb28748727834f
      14d827f4
  34. 21 Mar, 2012 1 commit
  35. 13 Mar, 2012 1 commit