summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_picklpf.c
AgeCommit message (Collapse)Author
2019-05-16Fix section intra rating for first ARF intervalDeepa K G
The section intra rating used for the frames in the first ARF interval was based on entire key frame interval. However, for subsequent ARF intervals it was based on that ARF interval. This discrepancy is fixed. Change-Id: I3df358861d720e536c9c6f15da1cbd78f2dfffbc
2019-03-15vp9-rtc: Some adjustments for low-resolns real-timeMarco Paniconi
Force smooth_interpol filter for low resolutions at high Q, avoid the loopfilter strength reduction for similar conditon, and reduce thresh_motion for cyclic refresh turnoff. Change-Id: I4e9121d1cdc7d1b04992c741dc4f0cec281592f7
2018-08-14Make Sharpness parameter affect visual sharpnessJim Bankoski
1: Lower rdmult used in trellis optimization 2: Shut off the end of block optimization that tries end of block at every sub position if any of the coefficients are > 1. 3: Change the rounding and zbin factor according to sharpness. 4: Disable the skip block check that calculates RD using SSE from predictor. Change-Id: I247b61a26fa22f12f8b684e7cd6d4e368de7c3e4
2018-05-01Clean switch cases in vp9 encoderLinfeng Zhang
To save a branch. Change-Id: Ifa2be7583e95c6991784731c654bbd4cce31e993
2017-02-22vp9: 1pass CBR: modify condition for reducing loop filter.Marco
The reduction showed improvement on RTC when aq-mode=3 is on. Add that (cyclic refresh enabled) to the condition. Only affects 1 pass CBR. Change-Id: I5d0843002d8e31d7c165098a62e7a71146b08664
2017-01-27vp9: Fix to pick_filter_level for highbitdepth build.Marco
Change-Id: I53b3fa8bfc0a0717eb1b730c29f2b70060b1b1b7
2016-09-26vp9: Reduce frame loopfilter-level for 1 pass cbr.Marco
Reduce the filt_guess for 1 pass cbr on inter-frames. This reduces visual artifact seen in rtc clip (jimred.vga), and improves metrics on rtc set. Metrics on rtc set for cbr mode overall positive, most clips are up: Speed 7 rtc: avgPSNR/SSIM up by: ~2.6/3.9% Speed 8 rtc: avgPSNR/SSIM up by: ~1.3/2.5% Change-Id: Ia4eccea1c19d65b583516df28823cd756c49464f
2016-08-02vp9/encoder: apply clang-formatclang-format
Change-Id: I45d9fb4013f50766b24363a86365e8063e8954c2
2016-06-24Port metric computation changes from nextgenv2Yaowu Xu
Change-Id: I4aceffcdf7af59ffeb51984f0345c3a4c7e76a9f
2016-01-19Loop filter search resets on overlay frame.paulwilkins
This patch fixes a bug that causes the loop filter search to reset to a low value or zero after each arf overlay frame. We expect the overlay frames to need little or no loop filtering but this should not propagate. Change-Id: I895b28474cf200f20d82793f3de40b60b19579fd
2015-09-29VP9: move loopfilter build masks to decode loopScott LaVarnway
The loopfilter masks are now built in the decode loop. This is done so we can eventually reduce the number of MODE_INFO structs required by the decoder. The encoder builds the masks for the entire frame prior to calling the loopfilter. Change-Id: Ia2146b07e0acb8c50203e586dfae0c4c5b316f11
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-05-13Relocate memory operations for common codeJohann
With the sad functions, and hopefully the variance functions soon, moving to the vpx_dsp location, place the defines used in the reference C code in a common location. Change-Id: I4c8ce7778eb38a0a3ee674d2f1c488eda01cfeca
2015-04-28vpx_mem: remove vpx_memsetJames Zern
vestigial. replace instances with memset() which they already were being defined to. Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
2015-01-16vp9_ethread: add parallel loopfilterYunqing Wang
1. Added row-based loopfilter in encoder; 2. Moved common multi-threaded loopfilter functions from decoder to common; 3. Merged multi-threaded loopfilter code, and made encoder/ decoder call same function to reduce code duplication. Encoder tests showed that 1% - 2% speedup was seen for good-quality 2-pass mode(at speed 3); 1% - 3% speedup using 2 threads and 4% - 6% speedup using 4 threads were seen for real-time mode(at speed 7). Change-Id: I8a4ac51c2ad9bab9fa7b864e90743931c53ec1c4
2015-01-07Use 64 bit to accumulate frame sse.Paul Wilkins
When testing frame sse to choose a loop filter value and when checking ambient error in kf Q selection, use 64 bit values for accumulating the sse, to avoid risk of overflow for large image formats. Change-Id: I03765d16c843d0ade61a45b0cd46312472697e57
2014-12-04Corrected the renaming of CONFIG_VP9_HIGH ro CONFIG_VP9_HIGHBITDEPTH.Peter de Rivaz
Change 71789 renamed CONFIG_VP9_HIGH to CONFIG_VP9_HIGHBITDEPTH. However, one use of CONFIG_VP9_HIGH was missed. Change-Id: I0ebb9c71380c6d810a25708d15471abf9533e695
2014-11-24vp9_ethread: modify VP9_COMP structureYunqing Wang
This patch modified struct VP9_COMP. Created a struct ThreadData to include data that need to be copied for each thread. In multiple thread case, one thread processes one tile. all threads share one copy of VP9_COMP, (refer to VP9_COMP *cpi in the code) but each thread has its own copy of ThreadData, (refer to ThreadData *td in the code). Therefore, within the scope of encode_tiles(), both cpi and td need to be passed as function parameters. In single thread case, the FRAME_COUNTS pointer in ThreadData points to "counts" in VP9_COMMON. Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
2014-11-20Revert "vp9_ethread: include a pointer to mb in VP9_COMP"Yunqing Wang
This reverts commit 6906d218ddd1af97228a797f4558e402231d94f1. Another way will be used to handle mb struct. Change-Id: Ic1111a46b2b1ee00f8f9e3fcd4cf3eb6030b2dc4
2014-11-14vp9_ethread: include a pointer to mb in VP9_COMPYunqing Wang
Modified VP9_COMP struct to include MACROBLOCK *mb. This change makes it feasible in multi-thread case to allocate a mb for each thread. Change-Id: I624d6d1aa9c132362200753e5d90b581b1738d6e
2014-09-25Adds various high bit-depth encode functionsDeb Mukherjee
Change-Id: I6f67b171022bbc8199c6d674190b57f6bab1b62f
2014-09-16Adds high bitdepth quantization functionsDeb Mukherjee
Adds various high bitdepth quantization functions. Change-Id: I36fc0bf75a1bd15128ed271df8723de0ac134b0c
2014-09-11vp9_picklpf: search_filter_level: remove filt_errJames Zern
inspect ss_err[] directly, removes an unnecessary assignment Change-Id: I14db5e8e567e7e541a57fce73389ffe7651d5614
2014-08-08Moving pass from VP9_COMP to VP9EncoderConfig.Dmitry Kovalev
We had a very complicated way to initialize cpi->pass from cfg->g_pass: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->mode = ONE_PASS_GOOD; break; case VPX_RC_FIRST_PASS: oxcf->mode = TWO_PASS_FIRST; break; case VPX_RC_LAST_PASS: oxcf->mode = TWO_PASS_SECOND_BEST; break; } cpi->pass = get_pass(oxcf->mode). Now pass is moved to VP9EncoderConfig and initialization is simple: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->pass = 0; break; case VPX_RC_FIRST_PASS: oxcf->pass = 1; break; case VPX_RC_LAST_PASS: oxcf->pass = 2; break; } Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
2014-06-27Allow encoder to set lpf level to 0Yaowu Xu
As a way to speed-up rtc encoding at speed 7. Change-Id: Ie36a010392cf7b741dc130df21a4e733622a75b7
2014-05-12Moving loopfilter call to vp9_decode_frame().Dmitry Kovalev
Inline loopfilter has been already handled in vp9_decode_frame(). Collecting all similar code in one place now. Change-Id: I358a0280fc7c2b27cca520bc1e8c16c4eb6491dd
2014-05-12Clean up of firstpass.cPaul Wilkins
Re-factor duplicate code. Add two pass check for use of section_intra_rating as it is un-initialised in the 1 pass and rt case. Change-Id: I93120796f07961b8a21fb26e1a9f0d3d13949994
2014-04-22Renaming "onyx" to "encoder".Dmitry Kovalev
Actual renames: vp9_onyx_if.c -> vp9_encoder.c vp9_onyx_int.h -> vp9_encoder.h Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
2014-04-11Adding consts in vp9_picklpf.c.Dmitry Kovalev
Change-Id: I84af62cc52954fc2eaf0b737245be76551fc8005
2014-03-27Rewriting calc_plane_error() function.Dmitry Kovalev
Change-Id: I06bb077edd4917b967fefe28bf4891b61b4f79b5
2014-03-21Merge "Convert use_fast_lpf_pick to an enum."Dmitry Kovalev
2014-03-21Convert use_fast_lpf_pick to an enum.Alex Converse
Change-Id: I06e17b489dea74dedea356c73ef72dc5ffad3a30
2014-03-21Tiny vp9_picklpf.c cleanup.Dmitry Kovalev
Change-Id: I1804c3629c3df2b67438e87196ab35fafaddaa24
2014-03-05vp9_picklpf.c: remove unused functions and paramsYaowu Xu
Change-Id: Ib4d850227cef35694c663feb157765a2cbf84699
2014-01-31Rename a loopfilter parameterYunqing Wang
As pointed out by Dmitry and James, "partial" is a Microsoft- specific c++ keyword, and it is renamed. Change-Id: Ia0fc11ceb89e54b3195287f89f7e26edbbe9beb8
2014-01-24Cache loop filter errors.Alex Converse
This avoids fitlering a frame multiple times at the same level. Change-Id: I1fd54dd7ea257d16da8569f48036b8fad3a3ed61
2014-01-24Refactor loop filter level search.Alex Converse
Factor out the code that tries filtering a frame at a given level. Change-Id: Ia04507e3ce6b1ad6ae7d05a9d88222fd319f44b7
2014-01-24Add some consts to vp9_calc_ss_err().Alex Converse
Also change its wrongly named dest parameter to reference. Change-Id: Ide142dead31c9ccda1f09a48b221284369783fb7
2014-01-24Add a method to estimate loop filter level from quantizer and frame type.Alex Converse
Use this method with rt at speed -5. Change-Id: If3bd6fad4c05ddde72131442dad191e4145047e7
2014-01-17Cleaning up vp9_picklpf.c file.Dmitry Kovalev
Change-Id: Id54f317846f61a320cc5aeef47248e074376ee5d
2014-01-16Removing unused vp9_yv12_copy_partial_frame() function.Dmitry Kovalev
Change-Id: I3149e562fe9500914f67b6f908283edcdc381ac6
2014-01-13Removing unused calc_partial_ssl_err() function.Dmitry Kovalev
Change-Id: Iad8b0208d3a3b0fc3d7fda3933b0fc007d4d2e9e
2014-01-08Renaming 'Sharpness' to 'sharpness'.Dmitry Kovalev
Change-Id: I54513dc3b3321e0c0bb6b15ea5c34085ed80b4a4
2013-10-04cpplint issues in vp9_picklpf.cJim Bankoski
Change-Id: I62e631ca95fefbb1a993479a5e3926dc81359fe7
2013-08-09Removing redundant code and function arguments.Dmitry Kovalev
Change-Id: Ia5cdda0f755befcd1e64397452c42cb7031ca574
2013-08-09Moving loopfilter struct to VP9_COMMON.Dmitry Kovalev
Loop filter configuration doesn't belong to macroblock, so moving it from MACROBLOCKD to VP9_COMMON. Also moving the declaration of loopfilter struct from vp9_blockd.h to vp9_loopfilter.h. Change-Id: I4b3e34be9623b47cda35f9b1f9951f8c5b1d5d28
2013-08-09Added lpf level picking using partial frameYaowu Xu
Change-Id: I599ab1bd22b5f3f10d5962c609952abdef8ff67a
2013-08-09renamed vp8_yv12_copy_y to vpx_yv12_copy_yYaowu Xu
Becuase the routine is used by both vp8 and vp9 Change-Id: I2d35b287b5bc2394865d931a27da61f4ce7edeeb
2013-08-09added a speed feature on lpf level pickingYaowu Xu
Change-Id: Id578f8afdeab3702fc8386969f2d832d8f1b5420
2013-07-19Moving all loop filter related variables into new struct.Dmitry Kovalev
Adding loopfilter struct with fields from MACROBLOCKD and VP9Common. Eventually it will be moved to vp9_loopfilter.h for better code structure. Change-Id: Iaf5fb71c33719cdfa1b991f671caf071be9ea035