summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2018-09-08fix vp9_svc_adjust_frame_rate signatureJames Zern
match the const in the header; quiets a visual studio warning. since: 04b3d49ba vp9-svc: Allow for setting framerate per spatial layer. Change-Id: I0a216eb8fe1a689fe6822bbfac70f7c98e9b1a70
2018-09-08Merge "Fork auto-alt-ref control"Jingning Han
2018-09-08Merge "Extend auto-alt-ref parameter range"Jingning Han
2018-09-07Merge "Add NORMAL_BOOST macro"Jingning Han
2018-09-07Fork auto-alt-ref controlJingning Han
Temporarily fork the auto-alt-ref control meaning. When it is set to be 1, use single layer ARF as baseline. The value 2 would enable dual ARF system. Any number above it would trigger automatic multi- layer ARFs. We would gradually refactor and integrate dual ARF and multi-layer ARF systems next, and eventually make auto-alt-ref directly control the layer depth. Change-Id: I292d27111ae8a596b97444afecf4b896043e543f
2018-09-07Extend auto-alt-ref parameter rangeJingning Han
Extend the upper limit from 2 (dual ARFs) to maximum ARF layers. This would later allow --auto-alt-ref to directly control the ARF layer depth later on. Change-Id: I6324fe980122e73dc98f81c8d7de1193a1a16e51
2018-09-07Add NORMAL_BOOST macroJingning Han
Normal frame boost factor is set to be 100 as the baseline for ARF boost. Replace the hard coded number with a macro. Change-Id: I81ce30138f7819844e7a2d811de9e1ccbeb85da5
2018-09-06Merge "vp9-svc: Allow for setting framerate per spatial layer."Marco Paniconi
2018-09-06Merge "Fix short first kf bug."Paul Wilkins
2018-09-06Merge "Revert "Revert "Prevent double application of min rate in two pass."""Paul Wilkins
2018-09-06Merge "Adaptive ARF factor decision"Jingning Han
2018-09-06Merge "Recursive rate allocation for multi-layer ARF coding"Jingning Han
2018-09-06Merge "Enable adaptive rate allocation for multi-layer ARFs"Jingning Han
2018-09-05Merge "Initialize the best partition before partition RDO"Hui Su
2018-09-05Initialize the best partition before partition RDOHui Su
This fixes the multi-thread encoder test failure. Change-Id: I0c1845922068e71097a387db0969ca419accb3ed
2018-09-05vp9-svc: Allow for setting framerate per spatial layer.Marco Paniconi
Add duration to set_svc_ref_frame_config. BUG=b/113346831 Change-Id: I63613aed6b1183f98d04831600a6bdd645c740df
2018-09-05Adaptive ARF factor decisionJingning Han
Re-count the factors to decide bit boost factor for the intermediate layer ARFs. Make the gfu_boost factor assigned to each ARF adapt to its local factors. This and the recursive change 5bfe9eb together improves the multi-layer ARF compression performance: avg_psnr ovr_psnr ssim lowres -0.39% -0.54% -1.6% midres -0.98% -1.26% -2.3% hdres -0.95% -1.13% -2.3% Change-Id: I5fec3ea75cae58825787dc88dadc7e8697a041ea
2018-09-05Recursive rate allocation for multi-layer ARF codingJingning Han
Recursively calculate the rate boost for the ARF frames at the given layer depth from the remaining available bit resource after the prior layer ARFs consumption. Change-Id: I0e31bac4f87b895ca20605dc1307a8fc0d2a516d
2018-09-05Enable adaptive rate allocation for multi-layer ARFsJingning Han
Increase the bit allocation for the intermediate layer ARFs. The current strategy assigns higher offset to the lower layer ARFs. The needed budget is borrowed from the base layer ARF allocation. Change-Id: I16b6e9cce4dab8e73e7b097674d1a8504205026e
2018-09-05Merge "Increase encoder buffer for multi-layer ARFs"Jingning Han
2018-09-05Merge "Structure the multi-layer ARF locations"Jingning Han
2018-09-05Merge "Move partition search ML models to a seperate file"Hui Su
2018-09-04Merge "Assign target bits for multi-layer ARF system"Jingning Han
2018-09-04Move partition search ML models to a seperate fileHui Su
Clean up vp9_encodeframe.c. Change-Id: I4035fee94da746c74d72f71ca8334f91c5d10116
2018-09-04vp9-svc: Fix to first_spatial_to_encode for pattern constraint.Marco Paniconi
Change-Id: I876f69acf9420b3b013cb3048bbfa8ff059e2e50
2018-09-04Increase encoder buffer for multi-layer ARFsJingning Han
When multi-layer ARF mode is enabled, increase the encoder buffer to account for the situation where several ARFs are coded together in a frame packet. Change-Id: I4e53095f6b6ac5a3c8d79414411ac39880bf1523
2018-09-04Structure the multi-layer ARF locationsJingning Han
Fine tune the multi-layer ARF location decisions. Support deeper layer structure. Change-Id: I3e44cf52b6813f6267bcd7266f9aa1b7ded57f8e
2018-09-04Merge "ML based rectangular partition search pruning"Hui Su
2018-09-04Fix short first kf bug.Paul Wilkins
This change is in response to quality issue in b/112953058 The quality regression observed is a result of a bug that manifested because of a very short key frame group at the start of a chunk. The group was so short that it was less than the minimum allowed length of an ARF group, so the initial group was coded as a GF only group. However, group length was not set correctly and the result was a frame coded with a target of 0 bits. This causes two problems: Firstly one very poor frame that caused the issue to be raised. Secondly that one frame obviously overshoots its 0 target very heavily and this has the effect moving the needle significantly in terms of the adaptive rate control (specifically the estimate of bits per macro block used to estimate the active Q range). Consequently there is undershoot for most of the rest of the chunk and the overall rate ends up much lower than the target (14Mb/s vs a target of 22Mb/s). (The sharp drop in the overall rate is also noted in the issue. BUG=b/112953058 Change-Id: Ide9cce57acd3dee0f9496b752902e7b4735f2c7f
2018-09-04Assign target bits for multi-layer ARF systemJingning Han
Keep the ARF and P frame rate allocation distribution. All the intermediate ARFs are treated same as regular P frames. Change-Id: I7807b8e6a8f19b6e1b09b9b7d119b3c88ef90b67
2018-09-04Merge "Properly update the raw_src_frame for psnr calculation"Jingning Han
2018-09-04Merge "Build arf index stack"Jingning Han
2018-09-04Merge "vp9-svc: Add bypass flag to constrain inter_layer."Marco Paniconi
2018-09-03vp9-svc: Add bypass flag to constrain inter_layer.Marco Paniconi
The additional constraint imposed on inter-layer prediction should only be done for non-bypass (fixed) svc mode. Change-Id: Ia22cdb7bc21684776c9a13397e177a1e1c3d55a2
2018-09-03Revert "Revert "Prevent double application of min rate in two pass.""Paul Wilkins
This rate control bug in the original patch is not the underlying cause of the quality regression but simply unmasked a problem which stems from applying 0 bits to the last frame in a short KF group at the start of a chunk. This reverts commit d10b1f233657054b1465d40f0b409c20029a540b. Change-Id: I32c91a24a14d013853bb8e5587aa69600e6a0063
2018-09-02vp9-svc: Fix condition for pattern constraintsMarco Paniconi
For fixed/non-flexible SVC mode: on non-key spatial enhancement layers modify constraint on the inter-layer prediction to include the first_spatial_layer_to_encode. Change-Id: I6a59174976ad72d555653704dcd3b03c52e31b6f
2018-09-01Properly update the raw_src_frame for psnr calculationJingning Han
Update the raw_src_frame to be the current input source frame in the show_existing_frame mode. Change-Id: Ia8edf49ca948c45ffe6c60556756b36124ab092a
2018-08-31Build arf index stackJingning Han
Stack the ARF frame indexes. Use the most recent one as the ARF reference frame for frame coding. Change-Id: I88a2202fa5deb2587d861b434d27ab8de0642cf7
2018-08-31vp9-svc: Add first_spatial_layer_to_encode per superframeMarco Paniconi
VP9E_SET_SVC_LAYER_ID sets the first spatial layer to encoder per superframe, so add this parameter to svc encoder. This is needed, for example, to properly set is_key_frame for spatial layers when base spatial layer is skipped encoded. Change-Id: Ifd4ac77f539197ec021e62f4c624a6cc79d64f43
2018-08-31ML based rectangular partition search pruningHui Su
Add a ML model to predict if rectangular partition search can be skipped without much coding loss. This model is enabled for speed 0 low bitdepth only. Impact on coding performance is minor: avg_psnr ovr_psnr ssim lowres -0.005% 0.005% 0.017% midres 0.100% 0.114% 0.134% hdres 0.048% 0.083% 0.074% jvet480p 0.035% 0.027% 0.044% jvet720p 0.094% 0.090% 0.174% Tested encoding speed over 20 midres and hdres clips, average speed gain is about 8%; maximum speed gain is 23%. Change-Id: I5d4029dec7134c53ac68ab6cf0c8077dc0b767ed
2018-08-31Merge "Fix arf_src_offset calculation"Jingning Han
2018-08-31Merge "Set minimum frame size to be 1 byte"Jingning Han
2018-08-31Merge "Prepare multi-layer ARF coding structure"Jingning Han
2018-08-31Merge "Build up multi-layer ARF processing order"Jingning Han
2018-08-31Merge "Add element stack operations for arf index control"Jingning Han
2018-08-31Fix arf_src_offset calculationJingning Han
The offset should be computed with respect to the current coding process standing. Change-Id: I63fc303eb062d5fd68b8d1faa3b4172cdfcce168
2018-08-31Set minimum frame size to be 1 byteJingning Han
The show_existing_frame mode still needs to be sent to the decoder. Account for this as 1 byte. This would make the encoder properly update its state. Change-Id: I32a59ccb5d0e02cc6367c1a264b2de72dc1432a7
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