summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_denoiser.h
AgeCommit message (Collapse)Author
2017-02-21vp9: Incorporate source sum_diff into non-rd partition thresholds.Marco
Increase the variance partition thresholds for superblocks that have low sum-diff (from source analysis prior to encoding frame). Use it for now only for speed >= 7 or for denoising on. Small change on metrics for rtc set: less than ~0.1 avgPNSR decrease on RTC set, for both speed 7 and 8. Change-Id: I38325046ebd5f371f51d6e91233d68ff73561af1
2017-02-07vp9: Denoiser speed-up: increase partition and ac skip thresholds.Marco
Add factor to increase varianace partition and ac skip thresholds, under certain conditions (noise level and sum_diff), to increase denoiser speed. Change-Id: I7671140ef3598bf5f114a72623d68792bcd7b77b
2016-08-02vp9/encoder: apply clang-formatclang-format
Change-Id: I45d9fb4013f50766b24363a86365e8063e8954c2
2016-05-19vp9: Refactor some denoiser logic in vp9_pick_inter_mode.JackyChen
Move the logic for rechecking zeromv on denoised block out to simplify the function. To simplify the param passing, add a new structure VP9_PICKMODE_CTX_DEN which is only used when denoiser is enabled. Change-Id: Iaa9b4396dfcb8147236c02d4a1868a09103a4476
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-03-28vp9-denoiser: Incorporate consec_zeromv in skin detection for denoising.Marco
Change-Id: Ibe4e1207c0db1779e1358f4566da67c9a07bdb15
2016-02-01vp9_denoiser: mark total_adj_strong_thresh inlineJames Zern
avoids -Wunused-function warnings when INLINE is set Change-Id: I14a3b32837d358516b7702a2fb804bec010bb5c6
2016-01-19VP9: Eliminate MB_MODE_INFOScott LaVarnway
Change-Id: Ifa607dd2bb366ce09fa16dfcad3cc45a2440c185
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-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-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-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-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-07Add static syntax to total_adj_strong_threshJingning Han
Change-Id: I34cc7b500d19a79f29c5ad241f602c1bc269446e
2015-01-07Skip duplicate denoiser frame buffer allocationJingning Han
Allocate the frame buffer allocation for denoiser once during the encoder initialization. This avoids allocating frame buffer multiple times and overwriting the buffer pointer without proper releasing. Change-Id: I9b3baa6283449d86fd164534d344c036bb035700
2014-10-06Add SSE2 code and unit test for VP9 denoiser.JackyChen
This SSE2 is based on VP8 denoiser's SSE2 code. In VP8, there are only 16x16 blocks in denoiser, while in VP9, there are 13 different block sizes. By adding this SSE2 code, the improvement of encoder speed is around 20%(using C code vs using SSE2 code), vary for different clips. The unit test for VP9 denoiser is to confirm that the SSE2 code is bit-exact with the C code. The unit test covers all block size. Change-Id: Ic8d8ac26db4ea40a5f146b5678a065af07eaaa3d
2014-09-10Fix the bug which made VP8 denoiser not bit-exact between C code and SSE code.JackyChen
This issue is found when the denoising mode is set to kDenoiserOnYUVAggressive. Updated the C code to make it the same with SSE version. I also changed several lines in VP9 denoiser for the code style. Change-Id: I640d48cf946fe8c6a400e6e252107501d1e226d3
2014-09-04Map motion magnitude in VP9 denoiser.JackyChen
This is to keep the same with VP8 denoiser. If motion magnitude is small, make denoiser more aggressive. Change-Id: I942a6e2f2ed9aec6f0c4c1f9e5fa47066cadcc0c
2014-09-02Adds config opt for highbitdepth + misc. vpxDeb Mukherjee
Adds config parameter vp9_highbitdepth, to support highbitdepth profiles. Also includes most vpx level high bit-depth functions. However encode/decode in the highbitdepth profiles will not work until the rest of the code is in place. Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
2014-08-22vp9_denoiser_update_frame_stats: unused parm fixedJim Bankoski
Change-Id: Ic39cc0deafb3ed509434d3d9953b99713de7394a
2014-07-15VP9 Denoiser denoises after mode/bsize searchTim Kopp
In vp8, statistics are collected about the different modes as they are searched. This process is more complicated due to the variable block size. Fields were added to the PICM_MODE_CONTEXT struct to hold this information for each point in the search. The information is then taken from the appropriate part of the tree during denoising. Change-Id: I89261ab77ad637821287ae157dfdf694702b8e77
2014-07-01VP9 denoiser used s/int/enum where appropriateTim Kopp
Change-Id: Id52a7869fd1f31bb060de170e3295da7435adb9e
2014-06-27VP9 denoiser: implemented update_frame_stats()Tim Kopp
Also added reset_frame_stats() Change-Id: I8e6ca00dbd5fa85cd39485d81c9343c0ff207d6c
2014-06-19Fixes in VP9 alloc, free, and COPY_FRAME caseTim Kopp
Change-Id: I1216f17e2206ef521fe219b6d72d8e41d1ba1147
2014-06-18Changed buf_2ds in vp9 denoiser to YV12 buffersTim Kopp
Changed alloc, free, and running average code as necessary. Change-Id: Ifc4d9ccca462164214019963b3768a457791b9c1
2014-06-12Added skeleton for VP9 denoiserTim Kopp
Change-Id: Iccf6ede4c4f85646b0f8daec47050ce93e267c90