summaryrefslogtreecommitdiff
path: root/vp8/encoder/denoising.h
AgeCommit message (Collapse)Author
2018-09-15cosmetics: normalize include guardsJames Zern
use the recommended format [1] of: <PROJECT>_<PATH>_<FILE>_H_ [1] https://google.github.io/styleguide/cppguide.html#The__define_Guard "All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_." Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2016-07-15vp8: apply clang-formatclang-format
Change-Id: I7605b6678014a5426ceb45c27b54885e0c4e06ed
2016-04-19vp8: Update on sum_diff_threshold.Marco
Reset to previous values. Change-Id: Ia49bafc1d1ec5f657819ffba04d11fd701f315e8
2016-04-01vp8 denoiser: Some adjustments to usage of skin and motion.Marco
Switch to use new skin model. And fix condition for denoising skin block. Previous condition did not denoise skin blocks if the selected mode was non-zero motion in current frame. Modify condition to also force no denoising if that mode was not selected as zero motion now and for at least "x" past frames in a row (x = 2). Change-Id: I00753e3fe45b9a308a7ef43c58f11868e3bfc6b0
2016-03-18vp8-denoiser: Update on the sum_diff threshold.Marco
Change-Id: I0d459c7ba358da287aff1c706279603d6d4d3c48
2016-02-17vp8-denoiser: Update some denoiser thresholds.Marco
Change-Id: I67090d72c0fefd3105ac380415249599e053d3bd
2014-12-03Various updates to vp8.Marco
Change-Id: Icc7a816491897107764e4c936288e9000e6319b8
2014-10-08vp8: Suppress denoising with respect to old reference frames.Marco
If the GOLDEN or ALTREF frame was last updated > x frames in the past, don't use them for denoising (only consider LAST). Using an old reference frame for denoising, e.g., if it is a long-term reference or the last key frame, can cause some visible artifacts, in particular in the aggressive denoising mode. Change-Id: I239c9fbb092c36cba7e95328f1fa67a58d6a7ed9
2014-09-19vp8: Update to the adaptive denoising mode.Marco
Allow for option to apply spatial blur for temporal denoising, under the aggressive denoising mode. Change-Id: I41c5fdc0b6cf32d8f8d1d4236b25fa5aa406e89e
2014-09-09vp8: Updates for adaptive denoiser mode.Marco
Add qp/bitrate condition, update some settings. Change-Id: I1af0f102823a886393be063ad9d17d7564753cc7
2014-08-14Add an adaptive denoising mode.Marco Paniconi
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
2014-08-08vp8: Code cleanup for control of denoiser mode.Marco Paniconi
Change-Id: Icb9918dd38d15061d62852e6a2d905e8ceb2c1ac
2014-07-29vp8: Add an aggressive denoising mode.Marco Paniconi
Change-Id: Ie4686e1b15af6bcc8d59d585bbeb996f38224522
2014-07-15vp8: Allow for on/off control of UV temporal denoiser.Marco Paniconi
Use noise_sensitivity level for enabling UV denoiser. Change-Id: Ib208786a6fdf654981bcd96a3cf44e8e678025c1
2014-06-26vp8: Add temporal denoising for UV-channel.Scott LaVarnway
C version and sse2 version, and off by default. For the test clip used, the sse2 performance improved by ~5.6% Change-Id: Ic2d815968849db51b9d62085d7a490d0e01574f6
2014-06-13Allow for deblocking temporal-denoised signal.Marco Paniconi
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
2014-05-16vp8: Add increase_denoising parameter to denoiser.Marco Paniconi
Change-Id: I96ed73e109c4f89dd06f3583cf7ecf9277401fae
2014-01-23vp8/encoder: add extern "C" to headersJames Zern
Change-Id: I252f5f8a5d5ada65da08699774a7bb1eb2bd5b2e
2013-12-16vp8/encoder: normalize include guardsJames Zern
Change-Id: I82834550503a43ff7ec8422342dc65136453b287
2012-08-31Encoder denoiser performance improvementYunqing Wang
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
2012-06-11Fix pedantic compiler warningsJohn Koleszar
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 97b766a46, which removed most of these warnings for decode only builds. Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
2012-05-30Added another denoising threshold for finding DC shifts.Stefan Holmer
Compares the sum of differences between the input block and the averaged block. If they differ too much the block will not be filtered. Negligible perfomance hit. Change-Id: Ib1c31a265efd4d100b3abc4a1ea6675038c8ddde
2012-05-24fix denoiser for temporal patterns and rdJim Bankoski
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
2012-05-21Inline Intrinsic optimized DenoiserChristian Duvivier
Faster version of denoiser, cut cost by 1.7x for C path, by 3.3x for SSE2 path. Change-Id: I154786308550763bc0e3497e5fa5bfd1ce651beb
2012-03-13Adds a motion compensated temporal denoiser to the encoder.Stefan Holmer
Some refactoring in rdopt.c and pickinter.c. Change-Id: I4f50020eb3313c37f4d441d708fedcaf219d3038