summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2018-08-31Prepare multi-layer ARF coding structureJingning Han
Build the frame processing order and type queue for multi-layer ARF coding structure. Change-Id: I5e14c60279020dc65a883d2997ca1ca9ce739488
2018-08-31Build up multi-layer ARF processing orderJingning Han
Use DFS to build the multi-layer ARF processing order. Change-Id: Iba4b20476eb5c8a3db49a24b2b0dec325fade65b
2018-08-31Add element stack operations for arf index controlJingning Han
Support arf index stack operation. Change-Id: Ifcf521ffc95a520344824ffc159883b71e8fc7a0
2018-08-29Merge "Skip unnecessary motion search"Hui Su
2018-08-28Skip unnecessary motion searchHui Su
If a ref frame is masked out, we do not need to do motion search for it. It makes speed 0 a little faster. Change-Id: I68f71255b2798b24fd1d5b28ed24a2ef87251413
2018-08-28Merge "vp9: Fix ref frame update in denoiser in bypass mode."Jerome Jiang
2018-08-28Merge "Revert "Prevent double application of min rate in two pass.""Hui Su
2018-08-27Rework enc/dec mismatch detectionJingning Han
The previous enc/dec mismatch detection assumes the previously reconstructed frame would always stay at frame buffer pool index at 0. It could hence cause certain delay in enc/dec mismatch detection when the immediate reconstruction frame is not yet propagated to index 0 in the buffer map pool. This change always keeps the latest decoded show frame buffer index and directly gets the reconstructed frame from encoder and decoder buffer pools to check for mismatch. Change-Id: If53092cbc42ab78d55af5b83f12a489fc362f3ae
2018-08-27vp9: Fix ref frame update in denoiser in bypass mode.Jerome Jiang
BUG=b/112292577 Change-Id: I8fc5711e44d0317e299aa49f781e9c438bba9d82
2018-08-27Merge "SVC: extend api to specify temporal id for each spatial layers."Jerome Jiang
2018-08-23Merge "Rework the ref_frame_skip_mask feature in RDO"Hui Su
2018-08-23Revert "Prevent double application of min rate in two pass."Hui Su
This reverts commit 416b7051d7f610ed6d62dff18af7776ec520fd9c. Reason for revert: it causes visual quality drop as described in b/112953058. Original change's description: > Prevent double application of min rate in two pass. > > The initial allocation of bits in the two pass code to each frame > should be within the min max limits on the command line. However, > when forming an ARF group the cost of the ARF is shared by frames > in that group such that the residual bits for a frame could drop below > the min value. This change prevents the minimum being re-applied > after the cost of the ARF has been deducted as this may otherwise > cause low rate sections to overshoot their target. > > Test runs comparing to a baseline run with min and max section pct > 0-2000% vs one closer to the YT use case (50-150%) suggest that > this fix not only results in better rate control but also gives a better > rd outcome. > > For example the HD set vs 0-2000% baseline (opsnr, ssim). > Old code (50-150): +0.751, +1.099 > New code(50-150): +0.241, -0.009 > > Change-Id: I715da7b130bf53ba8aa609532aa9e18b84f5e2ef TBR=yaowu@google.com,paulwilkins@google.com,debargha@google.com,builds@webmproject.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Ic9849e4e0db64e9d92bbb9df9cc923230a15c4df
2018-08-22Sync prev_frame/last_show_frame update with decoderJingning Han
Make the encoder side handling of prev_frame and last_show_frame update synchronized with the decoder behavior. Change-Id: I0f265391cba182d7cc266a1c327fe6b92e24ab17
2018-08-22Skip update prev_mi frame in show_existing_frame modeJingning Han
When the current frame is coded by directly using a reference frame in buffer, no need to update the prev_mi frame information for next frame encoding control. Change-Id: I33fda8e70cdb31eb5b13b63e3dbd6e96ff85154d
2018-08-22Refactor encoder frame count updateJingning Han
This refactoring allows the encoder to skip frame count update in the show_existing_frame mode. Change-Id: Id69707976ccdad144cba93a8f5d36b6947611f91
2018-08-22Rework the ref_frame_skip_mask feature in RDOHui Su
Previously we often skip all compound inter prediction modes, causing large coding loss. This patch modifies how we set the ref_frame_skip_mask so that compound modes are considered in RDO. This affects speed>=1. Coding gains(overall psnr): lowres midres hdres average speed 1 0.54% 0.43% 0.64% 0.53% speed 2 0.59% 0.48% 0.60% 0.56% Tested encoding speed on 10 HD sequences, average speed loss is 5% for speed 1; 2% for speed 2. Change-Id: Ib8758af7ee7c9812022bd21c5fe61631e2bb8e5c
2018-08-22Set refresh_frame_context flag off in show_existing_frame modeJingning Han
Match the decoder expectation, set off refresh_fame_context flag in show_existing_frame mode. Change-Id: I5258635b715ea04f41a4a087178709f707449b71
2018-08-21Drop empty line in vp9_get_compressed_data()Jingning Han
Change-Id: Iadb043128e0f813c75cc726e5a41ce94b9d1de24
2018-08-22Merge "Allow codec to skip temporal filter for intermediate ARFs"Jingning Han
2018-08-22Merge "Control reference frame refresh flags for USE_BUF_FRAME"Jingning Han
2018-08-21Merge "Safely swap the show frame buffer pointer in show_existing mode"Jingning Han
2018-08-21Merge "Skip loop filter operation in show_existing_frame mode"Jingning Han
2018-08-21Merge "Point show frame buffer towards existing frame buffer"Jingning Han
2018-08-21Merge "Skip frame encoding when show_existing_frame is on"Jingning Han
2018-08-21Merge "Add USE_BUF_FRAME enum to FRAME_UPDATE_TYPE"Jingning Han
2018-08-21Merge "Unify set_arf_sign_bias function"Jingning Han
2018-08-21Allow codec to skip temporal filter for intermediate ARFsJingning Han
Allow the encoder to skip temporal filter for intermediate ARFs that are later used in show_existing_frame mode. Change-Id: Ieed635bf7672b62f5c287bde43765f80362a345e
2018-08-21Control reference frame refresh flags for USE_BUF_FRAMEJingning Han
The enum USE_BUF_FRAME makes the use of show_existing_frame. In this setting, all the reference frame buffer condition will stay unchanged. Change-Id: I5b7b28488dbd94982f721667128f004e4e6a00d8
2018-08-21Safely swap the show frame buffer pointer in show_existing modeJingning Han
Point the current frame buffer towards the existing reference frame. In the meantime, release the original new_fb pointer. Change-Id: Ic83a698cac5cdaaabdf61acffb936ec130a84d1c
2018-08-21Skip loop filter operation in show_existing_frame modeJingning Han
Skip the loop filtering for frame coding in show_existing_frame mode. This matches the decoder operation for show_existing_frame mode. Change-Id: I96f275cf5384eb5fe8c0404ec4142cf5b580ac16
2018-08-21Point show frame buffer towards existing frame bufferJingning Han
When the show_existing_frame mode is on, directly point the new frame pointer towards the existing reference frame buffer entry. Change-Id: Ic50b25655fe95ea702fb529afacb7701ec17adcb
2018-08-21Skip frame encoding when show_existing_frame is onJingning Han
No need to process through the frame encoding stage when a current frame is coded using show_existing_frame. Change-Id: I36c6f04e344326fa6ecc95cd0a4e4fd6f467fdcb
2018-08-21Add USE_BUF_FRAME enum to FRAME_UPDATE_TYPEJingning Han
This enum indicates the use of show existing frame, and conducts no reference frame buffer update. Change-Id: I8bf3121376640baf24b580ebea58e9ccbdd641da
2018-08-21Merge "Clean up var define in apply_temporal_filter()"Jingning Han
2018-08-20Unify set_arf_sign_bias functionJingning Han
Determine if an ARF is on the future side by checking if its offset meets the gop frame length. This unifies the support to single- and multiple-layer ARF cases. Change-Id: I5ab26f54311c345a9b574ffca5ff0a8dbcf4c031
2018-08-20Remove unneeded frame_till_gf_update_due assignmentJingning Han
This will get update after define_gf_group() is called and returned. No need to update it inside. Change-Id: Ia42c6f7ef16bca3f1ee88392f3b90b9ebe409da8
2018-08-20Add multi_layer_arf flagJingning Han
This flag will control the use of multiple layer arf + show existing frames. Change-Id: Ic6b9e8e67b2db7d32706bdf0a14663a39f57295f
2018-08-20Add a comment in init_gop_frames()Jingning Han
Make the meaning of the operations therein clearer. Change-Id: I0dce92a4c14218307df098e3da7a1c7cc45008a7
2018-08-20Merge "Skip frame bit-stream writing for show-existing frame"Jingning Han
2018-08-20Merge "Support code show_existing_frame in bit-stream header"Jingning Han
2018-08-20Merge "Refactor init_gop_frame()"Jingning Han
2018-08-17Skip frame bit-stream writing for show-existing frameJingning Han
Make the bit-stream writer match the decoder behavior, when the show existing frame feature is used. Change-Id: Ibc8153f8668da0f9a2ed8af3b42dae91a5ac08c7
2018-08-17Support code show_existing_frame in bit-stream headerJingning Han
Allow the bit-stream writer to support potential use of show_existing_frame. At this point, cm->show_existing_frame is always 0. Change-Id: I64fed1d72db6d4902d56774854ce24fb7a082e0c
2018-08-17Refactor init_gop_frame()Jingning Han
Remove implicit dependency on overlay frame update to break the gop initialization loop. Change-Id: I6a6d070cdf22a0e30c298523707bd746fd03f450
2018-08-17Clean up var define in apply_temporal_filter()Jingning Han
Change-Id: Iffb90d1ce61a70de52196247e18a31485038e6dd
2018-08-17Add inline to mod_index()Jingning Han
Change-Id: I97c03e8d7c0907e728dc183f47564f206388118b
2018-08-17Merge "Improve enhanced_full_pixel_motion_search"Hui Su
2018-08-17Merge "Refactor some swapping code with a local func."Jerome Jiang
2018-08-16Improve enhanced_full_pixel_motion_searchHui Su
Do full pixel MV search around all 3 MV candidates. Coding gains for speed 0: avg_psnr ovr_psnr ssim lowres -0.088% -0.095% -0.117% midres -0.175% -0.177% -0.148% hdres -0.115% -0.146% -0.146% Coding gains for speed 1: avg_psnr ovr_psnr ssim lowres -0.089% -0.104% -0.124% midres -0.151% -0.171% -0.195% hdres -0.110% -0.105% -0.132% Tested encoding speed with speed 1 QP=30,40 over 10 midres sequences, average speed loss is about 1%. Change-Id: I9e6de035f4ed2e814e6494aefc2f84aae333a6b4
2018-08-16Use YUV components to build the temporal filterJingning Han
Use both luma and chroma components simultaneously to estimate the non-local mean kernel and build the temporal filter. It improves the compression performance primarily for chroma components. Tested in speed 0 and vbr mode, the coding gains are: Overall PSNR SSIM PSNR_U PSNR_V low -0.10% -0.12% -0.48% -0.49% mid -0.13% -0.16% -0.58% -0.88% 720p -0.31% -0.24% -0.75% -0.72% hd -0.09% -0.10% -0.59% -0.79% nefl2k -0.30% -0.13% -0.53% -0.50% Change-Id: I24d39997818322b0d69bd9dbeda02c60cd2b2e1b