summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2018-06-15Merge "Allocate tpl_dep_stats frame buffer"Jingning Han
2018-06-15Merge "Separate GF structure defining from bit allocation"Zoe Liu
2018-06-14Merge "Add temporal model control as a speed feature"Jingning Han
2018-06-14Separate GF structure defining from bit allocationZoe Liu
This CL separates the defining of the GF group structure from the handling of its bitrate allocation. The encoder performance should stay unchanged. Change-Id: Ib77967757702bb4b284034e429d4c41ae86d0838
2018-06-14Allocate tpl_dep_stats frame bufferJingning Han
Allocate buffers to support gather temporal dependency statistics at the encoder. Change-Id: I97d4594913a2423e8a916f20caf82ab0f5836961
2018-06-14Add temporal model control as a speed featureJingning Han
The model construction would incur 15% slowdown for speed 2. The speed change on speed 0 is unnoticeable. The current speed features set up would DISABLE temporal dependency model for all speed settings. Change-Id: Ic45dd962f3a54a8f5f0452502dc05e352dc09ca1
2018-06-14Add data structure for frame dependent mode decisionJingning Han
Add block and frame level data structures to support frame dependent mode decision. Change-Id: I996fc84155fcba8e2ec2a114bb0799d6aa5539dd
2018-06-13Unify frame_index in defining GF group structureZoe Liu
Following are completed in defining GF group structure in firstpass: 1. Remove redundant alt_frame_index; 2. Remove hard coded index value with the variable of frame_index. Change-Id: I7b56e454559bbf704afc7410ea9832b20ffcd57e
2018-06-13Merge "Remove duplicate vp9_twopass_postencode_update def"Jingning Han
2018-06-12Remove duplicate vp9_twopass_postencode_update defJingning Han
Change-Id: I370f37c85a02c032a8ba266b9b9445ee38eb0756
2018-06-12Merge "vp9 svc: Denoise golden when it's a temporal ref."Marco Paniconi
2018-06-11vp9 svc: Denoise golden when it's a temporal ref.Jerome Jiang
When golden was the inter-layer reference, a block that selected the golden ref would not be denoised. But when golden is used as a second temporal reference then we should denoise blocks that select the golden reference. This changes allows for that. Change-Id: Ifdea2ac88f6a74f73520fedcd7fec2f32c559ec9
2018-06-11VSX Version of vp9_quantize_fp_32x32Luc Trudeau
Low bit depth version only. Passes the VP9QuantizeTest test suite. VP9QuantizeTest Speed Test (POWER8 Model 2.1) 32x32 C time = 93.1 ms (±0.4 ms), VSX time = 6.5 ms (±0.2 ms) [14.4x] Change-Id: I7f1fd0fc987af86baf2b74147a25aee811289112
2018-06-11VSX Version of vp9_quantize_fpLuc Trudeau
Low bit depth version only. Passes the VP9QuantizeTest test suite. VP9QuantizeTest Speed Test (POWER8 Model 2.1) 4x4 C time = 86.3 ms (±0.7 ms), VSX time = 18.2 ms (±0.0 ms) [ 4.7x] 8x8 C time = 57.7 ms (±0.3 ms), VSX time = 7.6 ms (±0.0 ms) [ 7.6x] 16x16 C time = 50.7 ms (±0.1 ms), VSX time = 4.9 ms (±0.0 ms) [10.3x] Change-Id: Ic09bc786c57cc89bba14624064216b52996075eb
2018-06-11Merge "Small speedup of ml_pruning_partition()"Hui Su
2018-06-11Merge "vp9-svc: Fix to frames_since_golden update for SVC."Marco Paniconi
2018-06-11Merge "vp9 svc: clean up first_spatial_layer_to_encode."Jerome Jiang
2018-06-11vp9-svc: Fix to frames_since_golden update for SVC.Marco Paniconi
When the second (gf) temporal reference is used in SVC: the reference is refreshed on base TL superframes, and so the rc->frames_since_golden counter was also only updated on base TL frames. But this was disabling the golden reference from being used as a temporal reference for TL > 0 frames (since frames_since_golden was 0/not updated on TL > 0 frames). Fix is to copy the update of rc->frames_since_golden to all upper temporal layers. This allows TL > 0 frames to test the golden inter mode. Gain on RTC set: ~2%, ~8% on desktop_vga clip. Encode time increase ~5-8% on linux, 3SL-3TL run with 1 thread. For now keep this off for TL > 0 frames in speed features, so this change does not change current behavior for speed >= 7. Change-Id: I405708f3f80039ae47bd64ec53e66f92160acd9e
2018-06-08vp9 svc: clean up first_spatial_layer_to_encode.Jerome Jiang
Change-Id: I3c9aefd3ea5028797b9105d7e49b1cb2f762a9fc
2018-06-08Small speedup of ml_pruning_partition()Hui Su
Terminate early and skip neural net model when linear score is already high enough, which indicates that we should not skip split and rectangular partitions. No changes on compression; encoding speed improves slightly. Change-Id: I4e0995090200eb4889344da905d2f7048673af5f
2018-06-08Merge "Localize variable scope in vp9_rc_get_second_pass_params()"Jingning Han
2018-06-07vp9-svc: Adjust some logic on gf temporal reference.Marco Paniconi
For the feature of using second temporal reference (when inter-layer is off): move the buffer_idx assignement and refresh flag settings further down to vp9_rc_get_svc_params(), since is_key_frame is set there for every frame/layer. Otherwise it was using the setting from the previous frame/layer. This makes the refresh more consistent for both layers for 2 spatial layers case. Small/negligible change in metrics. Change-Id: I88279243bc27898448e8891dba38143d936cf6d5
2018-06-07vp9 svc: add control to set using second temporal ref.Jerome Jiang
Bump up ABI version. Change-Id: I4498d7ea4ed72994c5f847aa98e75b0150dd7f82
2018-06-07vp9-svc: Allow second temporal reference for next highest layer.Marco Paniconi
When inter-layer prediction is disabled on INTER frames, allow for next highest resolution to have second temporal reference. Current code allowed for only top/highest spatial layer. Change-Id: I102137273e3e4d57512a13d95e8ccb9c5b0a7b4b
2018-06-07Merge "VP9 SVC: Write out svc src for all spatial layers."Marco Paniconi
2018-06-06vp9-svc: Modify choose_partitioning for second temporal refMarco Paniconi
For mode where second temporal reference is used in SVC: allow for using/testing this reference (golden ref) in the variance partition scheme (choose_partitioning). Small positive gain (~0.25%) on metrics for 3 layer SVC, negligible change in speed. Change-Id: I29b8315da530e60db3d6c90faa8fb178d9f2de26
2018-06-07Merge "VP9: fix unsigned integer overflow in decoder."Jerome Jiang
2018-06-06VP9 SVC: Write out svc src for all spatial layers.Jerome Jiang
Change-Id: Ie78676e4df75f3f870ee2de0c87a8167b7ec68e0
2018-06-06vp9-svc: Enable use of second temporal reference for SVC.Marco Paniconi
When inter-layer is disabled on INTER frames, this will allow use of a second (longer term) temporal reference for SVC. Only enabled on highest resolution spatial layer. Average gains of ~4% on RTC set, speed decrease of about ~2%. Change-Id: I3c2d415653c448eb7269c828e120fe8bb2ef3f97
2018-06-06vp9-svc: Add a buffer_idx is_used parameter for SVC.Marco Paniconi
For the case where a second (long term) temoral reference is used in the SVC: this additional parameter is to make sure the buffer slot selected for this reference is available for usage, i.e., it is never used for any of the 3 references set for the fixed SVC patterns. And some code cleanup (replace cpi->svc). No change in behavior. Change-Id: Icba46edfbbefb94d5ea8e2d5c24cccd85a406ee6
2018-06-06Localize variable scope in vp9_rc_get_second_pass_params()Jingning Han
Remove unnecessary definitions. Change-Id: Ie540aaed5f3ed3768eff4e6563455666aef9c9e8
2018-06-06VP9: fix unsigned integer overflow in decoder.Jerome Jiang
The difference of two size_t variables. Change-Id: I73f35cdafc2ba64a9ddaf855cc6a410cfb63b8da
2018-06-05vp9: Move up reset of cyclic refresh under dynamic resize.Jerome Jiang
When resize happens and cyclic refresh is not applied on the current (resized) frame, the sb_index is not reset and then might be out of boundary on future frames when the cyclic refresh is applied. Change-Id: I05282fc4bc2323522d60e019ed0790d69221a2f7
2018-06-04vp9-svc: Allow usage of second (long term) temporal reference.Jerome Jiang
Allow for second temporal reference for top spatial layer in SVC, when inter-layer prediction is disabled on INTER frames. The second temporal reference is labelled as the golden reference and the update/refresh of this reference buffer is only on base temporal layer superframes. For now the period of refresh is fixed at every 20 TL0 superframes. Average gain is ~4% on RTC set, several clips up by ~8-12%. Speed loss is about ~2% on mac. Feature is disabled as default for now. Change-Id: I2e5db5052c62dbe958a3b14be97d043823b7a529
2018-05-31Merge "VP9: Allow for bilinear subpel interp at speed 9 for high motion."Jerome Jiang
2018-05-31Merge "vp9-svc: Fix to some frame metrics for real-time mode."Marco Paniconi
2018-05-31VP9: Allow for bilinear subpel interp at speed 9 for high motion.Jerome Jiang
Fixed some settings in nonrd pick mode to allow for frame-level bilinear to be set. On Galaxy S8+ it has 4% speed up on high motion clips. Almost the same for low motion. 0.17% quality loss on RTC. Change-Id: I044a7de020183754ba08bb6c96c5a78ba5c7fea2
2018-05-31Merge "Improve the ML based partition pruning"Hui Su
2018-05-31vp9-svc: Fix to some frame metrics for real-time mode.Marco Paniconi
Add condition of LAST frame to the consec_zeromv and avg_frame_low_motion metrics. This is needed for SVC as the golden reference is a spatial reference and should not be included in the metric computation. Small/negligible change in metrics on RTC set. Change-Id: I6ea16298fae566bb288c34cf50d120b509146eee
2018-05-31Improve the ML based partition pruningHui Su
Add a neural net model that uses the same features as the existing linear model. Make the pruning decision based on both the linear and the neural net model. It provides more accurate predictions, and may improve compression and/or encoding speed. This only affects speed 0. Coding gain: 0.37% on midres 0.34% on hdres 0.50% on jvet8b720p Encoding speed impact(average over locally tested 20 clips from midres and hdres): QP=20: down by 2.5%. QP=30: down by 3.9%. QP=40: donw by 4.5%. QP=50: up by 5.2%. Change-Id: I402ec799745ad3b74abf0789fa5e124fe64e704d
2018-05-30vp9-svc: Fix to compute some metrics on top spatiail layer.Marco Paniconi
The avg_frame_low_motion and consec_zeromv are frame-level metrics that are updated on every frame. For SVC these should be updated on top spatial layer (full resolution). Small/negligible change in metrics. Change-Id: Ibe14f05be3b82daa9dd60378097ff11a27f1b95e
2018-05-30vp9: Refactor code for q adjustment in CBR mode.Marco Paniconi
Move the adjustment code to separate function. Change-Id: I876b246a5c26095f262bb9a19f03d1f17077225d
2018-05-30Merge "Revert 3 slide show coding changes"James Zern
2018-05-30Revert 3 slide show coding changesJames Zern
This is a combination of the following 3 reverts. The changes cause issues on certain hardware devices. We'll pull them for now to allow for further investigation. Revert "Experiment regarding playback problems on Bravia TVs." This reverts commit 624f8105f5ae7e0bc82bdc7e10a4253295134a8b. Revert "Improved slide show coding" This reverts commit f4091bc30eef0fcacb5d5bd74ab7cfbc3c8aab5f. Revert "Improved coding on slide show content." This reverts commit 2fa333c2ae1b6fcc1864de12a7ad344a16e2ac0a. BUG=b/77492144 Change-Id: Ifba937792d644a9286307262f050216408e8ecf4
2018-05-29vp9: Adjust cyclic refresh and limit frame-level q.Marco Paniconi
For CBR mode with aq-mode=3: reduce delta-q for second segment and limit how much the frame-level q can decreae from one frame to the next. Reduces bitrate spikes in slide/sreen content. Change-Id: Id9ac4b7270f07e09690380755cfbef4aec5c26dc
2018-05-28vp9-realtime: Move frame dropper to after scene detection.Marco Paniconi
Move frame dropper to after scene detection and noise estimation. Scene detection and noise estimation operate on source data and update metrics along sequence, so they should be moved before the frame dropper. Also we don't want to drop on scene change, as the scene detection and (possible) re-encode step will be missed. Change-Id: I3d9e16d785bd5ace6707db2abce77ddc110bfef4
2018-05-28vp9-svc: Fix to allowed value of max_consec_drop.Marco Paniconi
For the max_consec_drop parameter in svc frame drop: since passing value 0 in the control would completely disable the dropper, only allow for values >= 1 to be set. Change-Id: I6b74ec9cc08a638fa571d6246a021dab9c811d14
2018-05-25Merge "VP9: Fix issues with high bitdepth in real-time."Marco Paniconi
2018-05-24VP9: Fix issues with high bitdepth in real-time.Jerome Jiang
Disable denoiser, skin detection and aq-mode for high bitdepth for now. BUG=webm:1534 Change-Id: I361a4e20b2319041148af497bf7043bfd5c5f589
2018-05-24vp9-svc: Add max_consec_drop to SVC frame drop.Marco Paniconi
For any spatial, limits the amount of consecutive frame drop. Change-Id: I692d90363f329f571f2b59e12cc680ad2e76065d