summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2018-06-20vp9-svc: Add support for spatial layer sync frames.Marco Paniconi
Add encoder control to allow application to insert spatial layer sync frame. The sync frame disables temporal prediction for that spatial layer. This is useful for RTC application to have receiver start decoding a higher spatial layer, without inserting a key frame on base spatial layer. If the layer sync is requested on the base spatial layer this then force a key frame, otherwise it only disables the temporal reference for that spatial layer, allowing temporal prediction to continue for the other layers. Although the temporal prediction is disabled and reset on a layer sync frame, the inter-layer prediction for the sync frame is enabled on INTER frames. So the meaning of INTER_LAYER_PRED_OFF_NONKEY is modified to mean disable inter-layer prediction on non-key and non-sync frames. Added unittest for inserting layer sync frames. Bump up ABI version. Change-Id: Id458acc400a77c853551f125c4e7b6d001991f03
2018-06-20Merge "Refactor partition mode cost calculation"Jingning Han
2018-06-20Merge "Add hierarchical structure in GF group"Zoe Liu
2018-06-19Add hierarchical structure in GF groupZoe Liu
Change-Id: I06fc4b0ad5a45c49e10a9601a2356fbc6e93d6da
2018-06-19Merge "Build temporal prediction dependency propagation"Jingning Han
2018-06-19Merge "vp9: Enable cyclic refresh for HBD in real-time."Jerome Jiang
2018-06-19Merge "Improve the partition search breakout speed feature"Hui Su
2018-06-18vp9: Enable cyclic refresh for HBD in real-time.Jerome Jiang
Keep denoiser and skin detection disabled since some key functions don't work with >8 bits source. Add test for HBD with denoiser and cyclic refresh enabled to make sure nothing crashes. BUG=webm:1534 Change-Id: Id61fe1e38ed1768f273870a6bdd5f163aa769fe4
2018-06-18Build temporal prediction dependency propagationJingning Han
This commit builds up the temporal prediction dependency propagation within the group of pictures. Change-Id: Id04cfc0323e6a5c4ac4a570d53e20d1229b3ee11
2018-06-18Refactor partition mode cost calculationJingning Han
Compute the coding block partition mode cost as additional rdcost to the cumulative rate-distortion cost from each coding block. This changes the coding performance slightly due to the rounding error. The compression performance change is neutral. Change-Id: Ibdccae0e79263a0e70af7592a8cb11458d795f8d
2018-06-18Improve the partition search breakout speed featureHui Su
Use a linear model to make partition search breakout decisions. Currently the model is tuned for large quantizers and small resolutions. So it is only used when q-index is larger than 200 and frame width/height is smaller than 720. Also it's not yet supported for high bit depth. Tested speed 1 and 2 on lowres and midres. Compression performance is neutral. At low bitrates, encoding speedup is up to 50% for speed 1; up to 30% for speed 2. Some sample numbers: into_tree_480p, speed 1 QP=60 before: 35.228 dB, 3488b/f, 7.78 fps now: 35.217 dB, 3475b/f, 11.57 fps QP=50 before: 37.492 dB, 7983b/f, 6.24 fps now: 37.491 dB, 7974b/f, 7.55 fps PartyScene_832x480_50, speed 1 QP=60 before: 30.104 dB, 22426b/f, 3.28 fps now: 30.109 dB, 22410b/f, 4.43 fps QP=50 before: 33.016 dB, 46984b/f, 2.78 fps now: 33.018 dB, 46998b/f, 3.35 fps into_tree_480p, speed 2 QP=60 before: 35.175 dB, 3506b/f, 10.96 fps now: 35.185 dB, 3510b/f, 13.47 fps QP=50 before: 37.448 dB, 8016b/f, 9.04 fps now: 37.459 dB, 8048b/f, 9.81 fps PartyScene_832x480_50, speed 2 QP=60 before: 30.060 dB, 22537b/f, 4.42 fps now: 30.061 dB, 22541b/f, 5.38 fps QP=50 before: 32.923 dB, 47134b/f, 3.85 fps now: 32.920 dB, 47073b/f, 4.31 fps Change-Id: I674cba4f027c4c65f7837d5ec9179d6201e6ba86
2018-06-18Merge "Enable intra prediction search for tpl model"Jingning Han
2018-06-18Merge "Enable motion compensated prediction for tpl dependency model"Jingning Han
2018-06-18Merge "Remove unneeded buffer restore calls"Jingning Han
2018-06-17Add update types for hierarchical refsZoe Liu
Change-Id: I0cd91187e1efc1441086772e5683fbf72d9371cf
2018-06-16Enable intra prediction search for tpl modelJingning Han
Support intra prediction mode search to find the best intra mode cost for temporal dependency model building. Change-Id: Ie62d6af8d0c9f65dee742876f3af9cdd5e3f1d63
2018-06-16Merge "VP9 HBD: Fix integer overflow problem in variance calc."Jerome Jiang
2018-06-15Remove unneeded buffer restore callsJingning Han
Change-Id: I89c8ad6544e0cee60b5daf49bc18c7e31f08faa2
2018-06-15Enable motion compensated prediction for tpl dependency modelJingning Han
Support the motion compensated prediction search to find the motion trajectory and hence to build the temporal dependency model. Change-Id: I861ea85a0d4cc2897cb0dfe2e95378bf7d36209f
2018-06-15VP9 HBD: Fix integer overflow problem in variance calc.Jerome Jiang
BUG=webm:1534 Change-Id: I535ac48e3dd2454cc7088c4f9a1e08ea74107da6
2018-06-15Merge changes I3436302c,I8969f5c3Jingning Han
* changes: Prepare motion estimation process for temporal dependency model Construct temporal dependency building system
2018-06-14Prepare motion estimation process for temporal dependency modelJingning Han
Set up needed stack for the motion estimation process to build up the temporal dependency model. Change-Id: I3436302c916a686e8c82572ffc106bf8023404b6
2018-06-14Construct temporal dependency building systemJingning Han
Schedule the frame processing to construct temporal dependency statistics within a group of pictures. Align the corresponding reference frames. Change-Id: I8969f5c335a4a5c2614f4530b636fe13a25a8a98
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