summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_denoiser.c
AgeCommit message (Collapse)Author
2016-08-02vp9/encoder: apply clang-formatclang-format
Change-Id: I45d9fb4013f50766b24363a86365e8063e8954c2
2016-07-26vp9 denoiser: Derefencing pointer should be after null check.JackyChen
BUG=webm:1267 Change-Id: I899fc9e8d784c6eefcbe27945c619845adb7b6f0
2016-04-25vp9: Fix a bug where best_sse_mv is not set properly.JackyChen
In VP9 internal denoiser, motion magnitude is computed from best_sse_mv, which should be set to 0 at the begining. This bug may cause visual aritifact in denoiser. Also, delete two improper comments. Change-Id: I8710d2acba23320bc85cf72af17d65245c19438b
2016-04-25vp9-denoiser: Bugfix and some adjustments for high noise case.Marco
Need to check that sse for non-zero mv has been set for the current block (i.e., check that nonzero-mv is tested as a mode, so newmv_sse != UINT_MAX) before forcing to not use zero-mv for denoising. Also increase some thresholds (sse and sse_diff) for high noise case, and use shift operaton instead of multiplication on a threshold computation. Change-Id: Iae7339475d57240316b7fa8b887c4ee3c0d0dbec
2016-04-22vp9: Some adjustments to denoiser under high-noise condition.Marco
Change-Id: Ib47d742d07f13c7c39cea85e228c19ae298baf4a
2016-04-22vp9: Move consec_zero_mv from cyclic refresh to cpi struct.Marco
So it can be used even with aq-mode=3 not enabled. Also cleans up some code in the places where its used. No change in behavior. Change-Id: Ib6b265308dbd483f691200da9a0be4da4b380dbc
2016-04-04vp9-denoiser: Avoid copy-block when denoising is at LowLow level.Marco
Avoid copy-block when denoising is at LowLow level (i.e., no denoising is done). Instead, don't enter denoiser at all, and when level goes back up over kLowLow do a reset in denoiser. Change-Id: I0544adf58f4dd51ecc4a4607fcb0353bfbbb7a59
2016-04-04Merge "vp9-noise estimation: Increase threshold for Low-level."Marco Paniconi
2016-04-04vp9-noise estimation: Increase threshold for Low-level.Marco
This make it more likely clean/low-noise content will be set as LowLow, and hence no denoising will be done. Also set early exit on denoising for small blocks. Change-Id: I4a72bba3e6c5e2d523d304c39deacc9c39bf216c
2016-04-04vp9-denoiser. Code cleanup and bugfix.Marco
Some cleanup and bugfix: pass mi_row/mi_col (not mv_col/mv_row) to build_inter_predictors. This only affects case where the frame is resized, but since denoising is not done on resized frames, the fix has not effect currently. Change-Id: I36617a7f0b43b6f49976745f15d400977e6ffa46
2016-04-01vp9-denoiser: Adjust usage of skin and consec_zeromv.Marco
Change-Id: I250258fc70ec0fcf1b501708c5d4b84685cf882e
2016-03-28vp9-denoiser: Incorporate consec_zeromv in skin detection for denoising.Marco
Change-Id: Ibe4e1207c0db1779e1358f4566da67c9a07bdb15
2016-03-17vp9: Improvement to skin detection.Marco
Add consec_zeromv to skin detection. Reduces false detection in steady background areas. Change-Id: Ic31c831537d29f082f58477f82ed78f313d7dd30
2016-02-08vp9-denoiser: Allow for checking skin for bsize <=32x32.Marco
Change-Id: I6c99ac6fd3735e24cf668479c55bff313c0b4970
2016-01-29vp9-denoiser: Force increase_denoising = 0 for skin block.Marco
Change-Id: Ic5af41db58a3daad4103175b4b4b9300675020c0
2016-01-19VP9: Eliminate MB_MODE_INFOScott LaVarnway
Change-Id: Ifa607dd2bb366ce09fa16dfcad3cc45a2440c185
2016-01-15vp9-denoiser: Set motion threshold for skin_map to 0.Marco
More aggresive on avoiding denoising on skin. May supplement this later by adding condtion onn consec_zeromv. Change-Id: Ied92b332f9b24e821d2009f81d1565758588d9a5
2016-01-04vp9-skin detection: Refactoring.Marco
Add function to compute skin map for a given block, as its used in several places (cyclic refresh, noise estimation, and denoising). Change-Id: Ied622908df43b6927f7fafc6c019d1867f2a24eb
2015-12-01vp9 denoiser: Re-evaluate mode selection for golden reference.Marco
Under certain denoising conditons, check for re-evaluation of zero_last mode if best mode was golden reference. Change-Id: Ic6cdfd175eef2f7d68606300c7173ab6654b3f6e
2015-11-25Merge "vp9 denoiser: Re-evaluate ZEROMV after denoiser filtering."Marco Paniconi
2015-11-24vp9 denoiser: Re-evaluate ZEROMV after denoiser filtering.Marco
For denoising, and for noise level above threshold, re-evaluate ZEROMV for mode selection after denoising. Current change only does this check if selected best mode (before denoising) was intra. Change-Id: I4b1435b68d26c78f7597b995ee7bff0ddd5f9511
2015-11-24vp9-denoiser: Fix to reset frame_stats.Marco
zeromv_lastref_sse was not reset. Change-Id: I23c12e804d63dc7dc18514f6efe71de1d1acbd6a
2015-11-20vp9 denoiser: Bias to last reference for temporal filter.Marco
Change-Id: I6a360a12e8da8cdcb8a779647512591612d64f31
2015-11-11vp9 denoiser: Add another noise level to denoising.Marco
Change-Id: Idc755ab54e4f78bb7d75bc97634c451804edad99
2015-11-02Move noise level estimate outside denoiser.Marco
Source noise level estimate is also useful for setting variance encoder parameters (variance thresholds, qp-delta, mode selection, etc), so allow it to be used also if denoising is not on. Change-Id: I4fe23d47607b4e17a35287057f489c29114beed1
2015-11-02vp9 denoiser: Don't estimate noise on resized trigger frame.Marco
Change-Id: I60461f011d1aba0b1eb6584c6940f745221915f4
2015-10-27Update to vp9-denoising.Marco
Set increase_denoising parameter for temporal filter. Change-Id: Id98bf160db98dfa9aedf76e20b43e6f7c783fb1c
2015-10-27Adjustments to vp9-denoising.Marco
Adjust variance threshold, delta-qp, and intra penalty cost, based on estimated noise level in source. Replace denoising_on with a level value=L/M/H. Change-Id: I0c017dae75a5d897367d2c42dec26f2f37e447c1
2015-10-26Code cleanup for vp9-denoiser.Marco
Change-Id: Ibb573f50c4bf2cfb382b589803f3363db0ac1285
2015-10-23VP9: Estimate noise level for denoiser.Marco
Periodically estiamte noise level in source, and only denoise if estimated noise level is above threshold. Change-Id: I54f967b3003b0c14d0b1d3dc83cb82ce8cc2d381
2015-10-08VP9 denoiser: use skin map to improve denoising.jackychen
Only denoise at small motion if it's a skin block. Change-Id: I6235cad9dd7f76ab40e7d9cdfe6180e619c20c6e
2015-10-07VP9_denoiser: pass address in copy_frame to make it faster.jackychen
Change-Id: I65269ddb3ea5f911d5be38614b93c97be7e1ba76
2015-10-07VP9 denoiser bug-fix: artifact caused by false buffer swap.jackychen
The artifact occurs periodically when VP9 denoiser is on and refresh_golden_frame happen. When refresh_golden_frame happen, we should copy the frame buffer instead of swapping the pointers. Change-Id: Ib3204c4b04db28ecf439c6d9e61f3d146f04196d
2015-10-02Fix to denoiser with dynamic resize.Marco
Temporary fix to denoiser when dynamic resizing is on. -Reallocate denoiser buffers on resized frame. -Force golden update on resized frame. -Don't denoise resized frame, and copy source into denoised buffers. Change-Id: Ife7638173b76a1c49eac7da4f2a30c9c1f4e2000
2015-08-31Include vpx_dsp_common.h when using VPXMIN/MAXJohann
Change-Id: I2e387a06484a06301f3cd6600c4ba2f4335b61ee
2015-08-26vpx_dsp_common: add VPX prefix to MIN/MAXJames Zern
prevents redeclaration warnings; vp8 has its own define which will be resolved in a future commit Change-Id: Ic941fef3dd4262fcdce48b73075fe6b375f11c9c
2015-08-14Change vp9_ prefix function names in vpx_scale to vpx_Jingning Han
Change-Id: Iac85902cbbb3e752801dc85de9a3c778e47304aa
2015-08-07Add static syntax to total_adj_strong_threshJingning Han
Change-Id: I34cc7b500d19a79f29c5ad241f602c1bc269446e
2015-07-31Code refactor on InterpKernelZoe Liu
It in essence refactors the code for both the interpolation filtering and the convolution. This change includes the moving of all the files as well as the changing of the code from vp9_ prefix to vpx_ prefix accordingly, for underneath architectures: (1) x86; (2) arm/neon; and (3) mips/msa. The work on mips/drsp2 will be done in a separate change list. Change-Id: Ic3ce7fb7f81210db7628b373c73553db68793c46
2015-04-28vpx_mem: remove vpx_memcpyJames Zern
vestigial. replace instances with memcpy() which they already were being defined to. Change-Id: Icfd1b0bc5d95b70efab91b9ae777ace1e81d2d7c
2015-04-21Revert "Remove mi_grid_* structures."Scott LaVarnway
(see I3a05cf1610679fed26e0b2eadd315a9ae91afdd6) For the test clip used, the decoder performance improved by ~2%. This is also an intermediate step towards adding back the mode_info streams. Change-Id: Idddc4a3f46e4180fbebddc156c4bbf177d5c2e0d
2015-02-20Remove a few unneccessary multiplications in denoiser.Marco
Change-Id: I3edbb7cc67203fbbf32c6fd4a08015ca9d9ed53e
2015-01-28Fix to vp9 denoiser.Marco
Prevent from using wrong mv for denoiser motion compensation. Change-Id: Ifa0f9daabdbdab0900d3c17304059fe0d15de914
2015-01-21Fix compile error in Chromium building.JackyChen
The comparison of address in the condition is not necessary, since they will constantly be non-null. Change-Id: Id0b0075283f5af65215d5761a8160a4cb2a15c9b
2015-01-16Fix frame buffer swap in denoiserJingning Han
This commit fixes a bug in denoiser reference frame buffer swap, which disables frame buffer update. Change-Id: I39a9427180fd18f9692602064ad821f7af4714c0
2015-01-08Refactor mc reference block fetch in denoiserJingning Han
This commit refactors the motion compensated reference block fetch process in denoiser. It skips the stage that generates motion compensated reference block if denoiser decides to use copy block mode. For high motion clips, this could speed up the denoising process by about 10%. Change-Id: I8ef4fa5fe766a8c4529119b9ec01faefb3d4ef53
2015-01-08Use lookup table to find pixel numbers in blockJingning Han
This could save one multiplication in each threshold funtion called by the denoiser per block. Change-Id: I35f437e09999f0a087180878ef7805f0d86e5819
2015-01-08Merge "Refactor denoiser frame buffer update"Jingning Han
2015-01-08Merge "Initalize zeromv_sse and newmv_sse in vp9_pick_inter_mode"Jingning Han
2015-01-07Refactor denoiser frame buffer updateJingning Han
Use frame buffer pointer swap instead of memcpy when possible. These two CLs make the denoiser when running on vidyo1 720p at speed -6 over 10% faster. Change-Id: I64fe8a2422cafca6787a50c7f4dfb961191c0a9d