summaryrefslogtreecommitdiff
path: root/test/svc_datarate_test.cc
AgeCommit message (Collapse)Author
2022-02-11svc_datarate_test.cc: remove stale TODOJames Zern
Bug: webm:1554 Change-Id: I547223763b86c6a24fa32851f7b30ebab4b7472a
2021-02-03svc: Fix an existing unittest for flexible modeMarco Paniconi
The flag update_pattern_ was being set to 0 (because it was set before reset) instead of 1. And the example flexible mode pattern was not setting non-reference frame on top temporal top spatial. Change-Id: I8aee56ce13cc4e0d614126592f9d0f691fe527b0
2021-02-03svc: Unittest for ksvc flexible mode with no updates on TL > 0Marco Paniconi
Catches tsan issue fixed in: 7b93b56 Change-Id: I34b17c289afd0f8691987a1e4afa533f6c7f2806
2020-06-18update googletest to v1.10.0James Zern
this moves the framework to c++11 and changes *_TEST_CASE* to _TEST_SUITE BUG=webm:1695 Change-Id: I07f2c20850312a9c7e381b38353d2f9f45889cb1
2020-06-16vp9-svc: Add svc test for denoiser and dynamic resizeMarco Paniconi
This catches the assert/crash fixed in 5174eb5. Also fix to only check for dynamic resize in SVC mode for base temporal layer. Change-Id: Ie6eb7d233cc43eafb1b78cec4aeb94fb4d7fe11a
2020-03-30rtc: Increase resize limit resoln for rtcMarco Paniconi
Increase resize limit to avoid resized frame from going below 320x180. Change-Id: If736ac3fac4731b47844e4d8c771ecf5c66550de
2020-03-04rtc: Update svc test for resizeMarco Paniconi
Add count on expected number of resizes, and use the speed_setting_ for base layer. Also allow AQ_MODE=3 for the tests with dynamic layer disabling/enabling. Change-Id: I03fb0789a2210ba00b8b153941bf79fb774d51bf
2020-03-03vp9-svc: Allow for dynamic resize for single layer SVCMarco Paniconi
Make internal dynamic resize work for SVC mode when single layer SVC is running (i.e, other layers are dropped due to 0 bitrate). Added unittest. Change-Id: Icf03e1f276d9c4ba2734c87c927f7881c6b0a116
2019-06-04vp9-rtc: Use speed 5 for postencode drop tests.Marco Paniconi
Test was running at speed 4, which is not used for real-time. With this change all Datarate tests are now running at (speed >= 5, 1 pass, real-time mode), which is what they were intended for. BUG=webm:1512 Change-Id: I47a721dadd24b73df722c44419df7cfc06c44226
2019-05-10Reland "vp9-rtc: tx_size selection for intra mode in nonrd"Jerome Jiang
Reland this change since tsan failure is fixed. Change-Id: I20e3d3d23e34befabb43a36d491d27dfc2a908b6
2019-05-06Revert "vp9-rtc: tx_size selection for intra mode in nonrd"Jerome Jiang
This reverts commit cdd40d1cd042d8c139b3426f311b8b5722d696bb. Cause tsan failure in webrtc tests. BUG=b/131414589 Change-Id: I04f98153bc1f9d013d3d1eb8d06df312fe12f8b4
2019-04-23vp9-rtc: tx_size selection for intra mode in nonrdMarco Paniconi
In nonrd_pickmode for intra modes: add tx_size selection based on Y prediction signal for the bsize. The tx selection is done in model_rd, same as inter-modes. Existing code for intra mode was first setting a tx_size based only on the bsize, and then in some cases in block_yrd (during the loop over bsize in units of tx_size) the tx_size may be set again if model_rd is called in block_yrd. This CL separates out the tx_size setting (based on Y channel prediction via model_rd), and then block_yrd is called once for whole bsize. This allows for better tuning of the tx selection for intra modes in future change. Adjust threshold in svc datarate test. Negligible/neutral change in psnr/ssim metrics for speed 7 and 8, 1 layer and SVC mode. Change-Id: I33bc8447afdc3785482e13aac5c3636e13c59644
2019-04-11vp9 svc test: test KSVC and other inter layer pred mode.Jerome Jiang
Change-Id: I6214eb63737f67bf41753f0705047e0682f3dc70
2019-03-07vp9 svc: add simulcast mode when inter-layer pred is off.Jerome Jiang
Force all upper spatial layers to be key frame if the base layer is key. Mode only works for inter-layer pred=off and non-flexible mode. Add flag to write out bitstream for each spatial layer in example encoder. Change-Id: I5db4543cf8697544ae49464f2157e692640d5256
2018-12-11Merge "Refactor svc_*_test.cc"Jerome Jiang
2018-12-10Refactor svc_*_test.ccJerome Jiang
Put test classes into svc_test namespace. Make num_nonref_frames_ and mismatched_nframes private, as they're computed by encoder/decoder hooks which shouldn't be modified outside the class. Add accessor to num_nonref_frames_. Change-Id: I3836a45426796ba6a8c98dd31e21b5aec4b8abf4
2018-12-09test/svc_*_test: fix SetConfig() signatureJames Zern
make the parameter constant to match the base class and mark the function virtual. virtual is used to match the rest of the code base, but now that c++11 is required all such functions could be changed to override. Change-Id: I551a05bbd9d05a9eddb653f42eaad68880c88141
2018-12-04Refactor datarate svc test.Jerome Jiang
Bring some repeated test set up into a function. Change-Id: I6acc545a349dc16581a23baf848c91ec36a2e83f
2018-12-04vp9: force refresh of long term ref when denoiser reset.Jerome Jiang
This will allocate extra frame buffer if long term temporal reference is used and denoiser is enabled on non-key frame. Add test. Change-Id: I0e8d1fdb9a2d697a8eed7fe6206bcb362e69f1c8
2018-11-19vp9: Fix to the svc buffer updateMarco Paniconi
Condition the pre-encode buffer update based on TS diff on temporal layers = 1 for now, as some fix is needed for the case where #temporal_layers > 1. Change-Id: I58163b956db415217e4687a31f8ba110545b09f5
2018-11-16vp9: Reorganize the buffer level for cbr modeMarco Paniconi
Refactor the code with some changes. Split update into two parts: move the fillup (with per-frame-bandwidth) before the encoding, and keep the leaking part (with encoded_frame_size) after the encoding (postencode). For SVC with ref_frame_config usage: allow usage of timestamp delta for the fillup part of buffer, instead of the (average) framerate passed in via the duration. Moving the buffer fillup (+per-frame-bandwidth) part to the pre-encode causes some difference in performance (since buffer level affects active_worst/QPand frame-dropping), but the change is observed to be small. Made small adjustment to active_worst_quality to compensate. Adjust some thresholds in datarate tests. Change-Id: I81a5562367034f318cffd451304bc4a34bf02a1d
2018-11-06vp9: postencode drop frame for screen content in CBR.Jerome Jiang
Encode the next frame at max q. For layers: post_encode_drop is only check on base spatial layer, and if base is post-encoded-dropped, then whole superframe is dropped. Added API to guard postencode dropping. Turned off by default. Added unittest. BUG=b/112990050 Change-Id: I42fee279014aca616f7a4d9b582cb2bf5da2f2e7
2018-08-16SVC: extend api to specify temporal id for each spatial layers.Jerome Jiang
BUG=b/112294545 Change-Id: I5be230c8969d69af3ad87068fdf3834ef1af11d9
2018-08-14Merge "vp9: fix memory alloc for adaptive_rd_thresh_row_mt."Jerome Jiang
2018-08-14vp9: fix memory alloc for adaptive_rd_thresh_row_mt.Jerome Jiang
When the feature is enabled and the memory is not available, allocate it. There was a case where speed feature changed in the middle of stream but the number of tiles stayed the same, memory was not re-allocated. Another case is where speed for base layer is different than that of higher quality layers (same resolution). Removed the speed constraints forcing base layer using same speed setting. Thus the memory for adaptive_rd_thresh_row_mt stayed NULL but the feature was enabled. Add an end to end test to cover this case. Change-Id: I2f1f802ef98a554571b30094d3600b9439228457
2018-08-13vp9-svc: Fixes for cyclic refresh for SVC.Marco Paniconi
Add metrics that are being updated per-frame to the layer struct, so each layer using the cyclic refresh has the correct update. This is more consistent for the rate control and refresh rate. Some improvement in screen content clips. Neutral for SVC on rtc set. Change-Id: I0a9862fb6b6a79e894e2ff30c120dc4aa26fcda5
2018-08-12vp9-svc: Unittest for screen mode with quality layersMarco Paniconi
Add datarate unittest for SVC screen content mode, with 2 quality layers. Change-Id: I9c8ad5462fd046698052bea6d7343c2b7e16668f
2018-08-09vp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG apiJerome Jiang
Add update_buffer_slot to SVC API to allow for refreshing any of the 8 reference buffers. Remove frame_flags from the struct. Remove svc tests from vp8 build. BUG=b/112292577 Change-Id: I0551c349d2b311227245a8ed1639cdbbaf5bc5db
2018-08-01vp9 svc: Adjust overshoot threshold in datarate test.Jerome Jiang
BUG=webm:1554 Change-Id: I69f9353266a290ae3c6ac9e51c960fff6e1af205
2018-07-30Enable aq mode 3 for all datarate tests.Jerome Jiang
Change-Id: I4e9c73d6d1d9ea560f04cc37aaf99d58ec2ab551
2018-07-09vp9-svc: Intra-only frame for spatial layers.Marco Paniconi
Use case is for layered (SVC) coding to allow higher resolution layers to continue decoding with temporal references, while base spatial layer is intra-only frame. Made encoder changes to real-time path for encoding intra-only frame. The intra-only frame will be followed by the overlay/copy frame (with both packed in the same superframe). Use existing control to enable intra_only frame. Intra only is only applied to base spatial layer, and only allowed under fixed/non-flexible SVC mode, and only for 1 < number_spatial_layers < 4. Added svc datarate unittest for inserting intra_only frame as sync frame. Added svc end to end tests to check mismatch. Change-Id: I2f4f0106b2c4f51ce77aa2c1c6823ba83ff2f7a0 Signed-off-by: Marco Paniconi <marpan@google.com>
2018-06-26vp9 svc: Move CheckLayerRateTargeting into class.Jerome Jiang
No need to pass arguments that are already members of the class. Change-Id: I887d33d6037b561dee5dd8d49bb112d9120cd2a7
2018-06-23VP9 SVC: Add tests for layer sync on base layer.Jerome Jiang
Create tests for sync layer. The purpose of new tests is not to check bitrate targeting, thus they're put in a new file. Create a base class for svc tests, which is also inherited by svc datarate tests, to reduce code redundancy. Start decoding in the test from the frame of layer sync. Change-Id: I7226d208279ad785873dffef51e0a8abef23b256
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-14vp9 svc: add tests for inter layer prediction.Jerome Jiang
Change-Id: Ic8e07b07790e067c014677cf33c3b016fcf4cb39
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
2018-05-19vp9-svc: Fix issue with reseting lst_fb_idx.Marco Paniconi
When encoding a given spatial layer and the same spatial layer on previous superframe was dropped (or disabled due to 0 bitrate), the lst_fb_idx for current layer is set to the buffer index that was last updated on TL0 frame (for the same spatial layer). This condition was to maintain proper temporal prediction pattern under frame drops, and it should only apply to INTER frames. But the condition was causing an assert to be triggered on spatial layers whose base are key frames. Fix is to condition this reset of lst_fb_idx on the "is_key_frame" flag. Also initialize the fb_idx_upd_tl0 to -1 and only use it for a given spatial layer if its been set. These issues can happen when superframe drop happens just before a key frame, or when stream starts with lower layers and dynamically enabled higher spatial layers. Added datarate unittest the inserts key frame after superframe drop, and verified that this fix is needed for test to pass. Also modified the existing DisableEnable spatial layer test to trigger the issue of using fb_idx_upd_tl0 when it hasn't been set for a spatial layer. Change-Id: I059d1135736aca17e1326b9b4a2b16371eb4634e
2018-05-14VP9: Add speed 9 for subpel search.Jerome Jiang
Set subpel search stop to 2 when motion vector is non zero. 10% speedup on 1 and 2 threads on Samsung Galaxy S8+. Change-Id: I7323bb913000229cf60a37495bf88bcc51d0ac96
2018-05-11vp9-svc: Fix when whole superframe is dropped.Marco Paniconi
When the whole superframe is dropped (due to rate control), don't increment the temporal layer counter. This is a temporary fix to prevent an issue where temporal prediction pattern is possibly broken. Updated svc_datarate tests to handle this case. Change-Id: Icac44fdc9d0f08a957776c937584db4b2c7927c7
2018-04-18SVC: Fix duplicated run of svc datarate tests.Jerome Jiang
Change-Id: I3f4e45b398009852f1183943461625d621c4eb80
2018-04-12vp9 svc: Refactor svc datarate test for better sharding.Jerome Jiang
Wrap denoiser tests under config flags. Change-Id: I6175c3c9d8b5b079ad35a55553383145db58a10f
2018-04-09Merge "vp9-svc: Make constrained_layer_drop default for svc."Marco Paniconi
2018-04-09vp9-svc: Make constrained_layer_drop default for svc.Marco Paniconi
Switch the order of constrained and layer drop mode, and keep constrained_layer_drop as the default. Update the svc datarate tests. Change-Id: I764270f7b4964b87b0cd3da6c2f96a628f212a30
2018-04-06Fix settings for num of tiles in samples & tests.Jerome Jiang
The control is set by log2 of number of threads (such that the number of tiles is the same of number of threads). Thus it should be log2(num_threads) instead of (num_threads >> 1). Change-Id: I2ccec5557e660048dad3e561534e1c74fc8eec1f
2018-03-30Code cleanup for datarate tests.Jerome Jiang
Add/Remove static to functions. Name change. Change-Id: I5de3efc23cd151fe8e70fe67a7a11acfcfa707dc
2018-03-29Split datarate_test.cc to vp8, vp9, svc ones.Jerome Jiang
As we add more tests to datarate_test.cc, it's growing bigger and hard to find specific test. Split it to vp8, vp9 and svc ones. Change-Id: Ie8c302010cf304a95554bee19d87ddc90498d0fb