summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_picklpf.c
AgeCommit message (Collapse)Author
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
2013-07-19Renaming TXFM_MODE to TX_MODE (like TX_SIZE, TX_TYPE).Dmitry Kovalev
Moving TX_MODE enum to vp9_enums.h. Renaming txfm_mode variables to tx_mode. Change-Id: I459d1af6dd928ce7fccdf8ce30b6f1ca057bef92
2013-05-25Remove loop dering experiment.Paul Wilkins
Change-Id: I1a979bf74c286b157c31bab6bdcba0494acb4918
2013-04-10Remove obselete codeYaowu Xu
The strategy to run fast loop filter picking for encoder speed-up should be revisited at a later stage. Change-Id: I3b75e06d767cff41be952a42e63b3292f4eab996