summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2018-03-13Add vp9_highbd_iht16x16_256_add_neon()Linfeng Zhang
BUG=webm:1403 Change-Id: I2293c11666786be276909d48ee78dacb40a89e25
2018-03-13Fix a bug in vp9_highbd_iht8x8_64_add_neonLinfeng Zhang
This bug was introduced in 29b6a30c. BUG=webm:1403 Change-Id: I9e0bf2c7a01d8ff1c714c12236f7985b772b0540
2018-03-13Fix a bug in vp9_highbd_iht4x4_16_add_neon()Linfeng Zhang
This bug was introduced in 36363304. BUG=webm:1403 Change-Id: I695b409047e41ab7e0460981524310d78753751a
2018-03-12vp9-svc: Update layer frame counters when layer is skipped.Marco Paniconi
When an enhancement spatial layer is skipped, we should check for updating the layer frame counters. Change-Id: Ib79d0955c62fb465f59ef2f9ac45240ae2614d7b
2018-03-12vp9-SVC: Fix to choose_partition when LAST ref is NULL.Marco Paniconi
This causes assert to trigger in choose_partitioning(). This can happen in some cases when enhancement layers are enabled midway during the stream. Change-Id: I69c3c8b4b1e3f1c7d8d7294d633ca5ddca148e8b
2018-03-08Merge "Change to KF frame boost calculation."Paul Wilkins
2018-03-05Fix a bug in vp9_iht16x16_256_add_neon()Linfeng Zhang
This bug was introduced in 88c23864. BUG=webm:1403 Change-Id: If96fd6f102be6b9bda866e55e574257287746f4a
2018-03-05Fix a bug in vp9_iht8x8_64_add_neon()Linfeng Zhang
This bug was introduced in b14b616d. BUG=webm:1403 Change-Id: I84b2733734982e52b66548850d61758c772b5494
2018-03-03disable vp9_highbd_iht{4x4_16,8x8_64}_add_neonJames Zern
these causes test vector failures BUG=webm:1403 Change-Id: I08218f0bf26651eb367ece4feec6d704e0189bd8
2018-03-03disable vp9_iht8x8_64_add_neonJames Zern
this causes test vector failures BUG=webm:1403 Change-Id: I7d37a05fbf4641ea352c947053aa4eaeb7f5c318
2018-03-03disable vp9_iht16x16_256_add_neonJames Zern
this causes test vector failures BUG=webm:1403 Change-Id: Ifdb5b270c5cc70be5689e4fbda2ada3724cc65c3
2018-03-02vp9-svc: Disable partition_reuse unless 2x2 scale.Marco Paniconi
For SVC, if any of the layer scale ratios are not 2x2, then disable the partiton_reuse, which assumes 2x2 scaling between layers. Change-Id: I8b3163de0826052bbb1bfe03554a074c89510558
2018-03-02vp9-svc: Fix to downsampling filter phase_shift.Marco Paniconi
Set phase_shift = 0 if the scale factors are above 3/4. Removes artifact for scale factors close to 1. phase_shift = 8 is to get an averaging filter (decimated pixel aligns to 8/16, midway between source pixels), and only makes sense for scale factors multiples of 2 (1/2, 1/4,...). Removes artifact for high scaling ratios. Change-Id: Id0a85869d6c6156dda0032c697ded2de78fad6bd
2018-02-28iadst16x16_256_add_half1d: fix array sizeJames Zern
t[] is indexed from 0..11 Change-Id: I7d0021f1795c6608354c8770843ea9dfdea66f97
2018-02-28Change to KF frame boost calculation.paulwilkins
This change is targeted mainly at higher resolutions where typically the average error per MB is much smaller. hence this patch replaces a fixed error per MB factor with a tiered value. It also adds in a fixed offset value that acts as a minimum return score. Note also minor fix to debug stats output. The results are overall beneficial (-ve) on our test sets, most notably for higher definition formats (see below - overall psnr, ssim, psnr hvs) low res: 0.184 -0.262 -0.166 mid res: 0.094 0.075 0.049 hd res: -0.752 -0.300 -0.800 NF 2K: -0.353 1.095 -0.302 NF 4K: -1.245 -0.578 -1.205 The most notable negative case is pierseaside 2K which appears to be worse by 8-10% (which has a big impact on the overall gain for the NF 2K set). Closer inspection reveals that the drop does not relate to the key frame boost per se as in both cases the key frame substantially undershoots its target. Rather this is a side effect relating to the initial Q range allowed for the key frame and a poor initial complexity estimate. This will hopefully be improved in a later patch. Change-Id: I4773ebe554782f4024c047c3c392c763a3fe843b
2018-02-27Add vp9_iht16x16_256_add_neon()Linfeng Zhang
BUG=webm:1403 Change-Id: I1413cc3dfcb62143ba04fe9b0f8d8b010fdf69b6
2018-02-20Add vp9_highbd_iht8x8_16_add_neon()Linfeng Zhang
BUG=webm:1403 Change-Id: I11efb652f1aee371c71eee2d29e33793e4736832
2018-02-12vp9_cx_iface: Remove else when returning from the other branch.Jerome Jiang
Change-Id: I2fc15ec25cc5587cafc6621176d0a6d7c376fc7c
2018-02-09Merge "Reland "Add ROI support for VP9.""Jerome Jiang
2018-02-09Reland "Add ROI support for VP9."Jerome Jiang
Extended ROI struct suitable for VP9. ROI input from user is passed into internal struct and applied on every frame (except key frame). Enabled usage of all 4 VP9 segment features (delta_qp, delta_lf, skip, ref_frame) via the ROI map input. Made changes to nonrd_pickmode for the ref_frame feature. Only works for realtime speed >= 5. AQ_MODE needs to be turned off for ROI to take effect. Change example in the sample encoder: vpx_temporal_svc_encoder.c to be suitable for VP9. Add datarate test. Bump up ABI version. BUG=webm:1470 Change-Id: I663b8c89862328646f4cc6119752b66efc5dc9ac
2018-02-09Merge "Revert "Add ROI support for VP9.""Jerome Jiang
2018-02-09Revert "Add ROI support for VP9."Jerome Jiang
This reverts commit 4e5b4b58483e1f38e37acd49b809d725b4f66c26. Reason for revert: Commit message inaccurate. Original change's description: > Add ROI support for VP9. > > Extended ROI struct suitable for VP9. > ROI input from user is passed into internal struct and applied on every frame > (except key frame). > > Enabled usage of all 4 VP9 segment features (delta_qp, delta_lf, skip, > ref_frame) via the ROI map input. > Made changes to nonrd_pickmode for the ref_frame feature. > > Only works for realtime speed >= 5. > AQ_MODE needs to be turned off for ROI to take effect. > > Change example in the sample encoder: vpx_temporal_svc_encoder.c to be suitable > for VP9. > Add datarate test. > > Bump up ABI version. > > BUG=webm:1470 > > Change-Id: I7e0cf6890649adb98a5fda2efb6ae1fa511c7fc9 TBR=yaowu@google.com,jzern@google.com,marpan@google.com,builds@webmproject.org,jianj@google.com Change-Id: I000dbd81e0c67cb8a0dcde4013ee9bf7afb038f0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webm:1470
2018-02-09Merge "Add ROI support for VP9."Jerome Jiang
2018-02-09Improved coding on slide show content.paulwilkins
This patch adds in detection of slide show key frame groups. The detection assumes extremely low or 0 motion for all frames in the key frame group. If this case is detected the boost level is set to a very high value and the min Q to a lower value for the key frame itself. Alt refs and golden frames are disabled to save bits (up to a limiting maximum interval currently set to 240 frames). In test samples that I created, this patch gave rise to a substantial improvement in overall psnr and a drop in data rate. In some cases the average psnr fell, however, with the boost and minQ values set as they are. This is to be expected because previously a relatively poor key frame could be followed by progressively better alt refs. For example a key frame at q7.5 but subsequent alt refs improving it to lossless. Given that average psnr tends to be dominated by the best frames, a ramp like this from q7.5 to lossless may give a better average psnr than, for example, coding the entire sequence at q2.5. Overall psnr, however, will be much better in the latter case. The option exists to boost the key frame further which would insure much better results for all metrics, but at the expense of smaller bitrate savings. Given that these samples tend to have very good quality anyway this seems like a bad trade off. For slides displayed for several seconds, bitrate savings of >= 20% are likely and much larger gains are possible in some cases. Change-Id: Ib4b61e153c55d3f2f561153da13fdb56f397a52b
2018-02-08Add ROI support for VP9.Marco
Extended ROI struct suitable for VP9. ROI input from user is passed into internal struct and applied on every frame (except key frame). Enabled usage of all 4 VP9 segment features (delta_qp, delta_lf, skip, ref_frame) via the ROI map input. Made changes to nonrd_pickmode for the ref_frame feature. Only works for realtime speed >= 5. AQ_MODE needs to be turned off for ROI to take effect. Change example in the sample encoder: vpx_temporal_svc_encoder.c to be suitable for VP9. Add datarate test. Bump up ABI version. BUG=webm:1470 Change-Id: I7e0cf6890649adb98a5fda2efb6ae1fa511c7fc9
2018-02-08Adjust MAXRATE_1080P.paulwilkins
This value was originally set in response to requests from the hardware team before levels were properly defined for VP9. Even if a level is not specified for an encode, it imposes a maximum frame size for videos of dimensions <= 1080P. For larger formats the limit was set at 250 bits per MB. This patch modifies the limit to be more in line with the requirements specified for level 4 (max rate for a 4 frame group of 16 Mbits). If a lower level is specified at encode time and this mandates a smaller maximum frame size then the level requirement will still take precedence. Increasing this value allows for some slide shows or very low motion clips to code a better quality key frame. Change-Id: Ic08e0e09c8a918077152190c59732b9a1c049787
2018-02-08Merge "Fix file input pointer bug in allocate_gf_group_bits()."Paul Wilkins
2018-02-08Update iadst NEON functionsLinfeng Zhang
Use scalar multiply. No impact on clang, but improves gcc compiling. BUG=webm:1403 Change-Id: I4922e7e033d9e93282c754754100850e232e1529
2018-02-07Clean vp9_highbd_iht4x4_16_add_neon()Linfeng Zhang
Extract common code. Change-Id: I422150ada1c6915f0ce39b912149994eb3bb3f12
2018-02-06Fix file input pointer bug in allocate_gf_group_bits().paulwilkins
The stats input pointer, when passed in, already points to the frame after the golden frame so should not be advanced here. This fix has a small mostly positive effect on results in our test sets (tested using corpus vbr settings) and gives a gain of almost 0.5% in overall psnr (plus slightly smaller gains on other metrics) for the 4K set. The bug also caused a crash in calculate_group_score() in another patch which allows coding of slides in a slide show as a single long KF group without ARFs or GFs. Change-Id: I57a3a24baf442ce55dbc91fba05e056697c63a6f
2018-02-05Update tx_type switch code in idctLinfeng Zhang
Change-Id: Ia244bfd4b4eb9d703653792bc4f64c6f5358ae19
2018-02-05Add vp9_highbd_iht4x4_16_add_neon()Linfeng Zhang
BUG=webm:1403 Change-Id: Id9833e985fb70958cf4bde38f8e6303ed83c12f9
2018-02-01Merge "Further change to code detecting slide transitions."Paul Wilkins
2018-01-31vp9-svc: Add condition on allocation for scaled_temp.Marco
scaled_temp frame is used as an intermediate buffer for 2 stage down-sampling: two stages of 1/2 down-sampling for a target of 1/4x1/4. This is used in 3 layer SVC to avoid duplicate frame downsampling (on middle layer). As this allocation is only needed/used when the number_spatial_layers > 2, add this condition to avoid unneeded allocation for 1 and 2 spatial SVC. Change-Id: If342466644f685c1ea3ca5344b581793e5136c09
2018-01-31vp9-svc: Fix to initialize downsampling filters.Marco
For 3 spatial layers with 1/2 downsampling, the downsampling filter for the middle layer was not set for the very first frame, so it was defaulting to the subsample filter (no averaging/phase = 0). Its not set due to the two stage scaling that is done for 1/4 on base layer, during which the intermediate 1/2 result is saved for the middle layer. Fix for now is to set the default downsampling filter to Bilinear (averaging/non-zero phase) for all layers on init (vp9_init_layer_context):. Change-Id: Ic7407810b34c621e7e7420682508d45478bdffcf
2018-01-31Further change to code detecting slide transitions.paulwilkins
Eliminate false positives in previous patch. The previous patch did a good job of detecting slide transitions but in discussions a number of situations were identified that might trigger harmful false positives. This risk seems to be born out by some testing on a wider YT set done by yclin@. This patch adds an additional clause that requires that the best case inter and intra error for the frame are very similar,meaning it is almost as easy to code a key frame as an inter frame. This will certainly prevent the false positive conditions that Jim and I discussed and even if one does occur it should not be very damaging. The down side is that this clause may mean that we still miss some real slide transitions, especially if the images are small and similar. If this proves to be the case then some further adjustment of the threshold may be required. However, in the specific problem sample provided we do trap every transition correctly. Change-Id: I7e5e79e52dc09bc47917565bf00cc44e5cddd44c
2018-01-31vp9 svc: Make top layer non-ref: for 2 TL caseMarco Paniconi
Only affects 2 temporal layer case. Modified the flags for 2 temporal layers to make top layer (top spatial, top temporal) a non-reference frame, conistent with the 3 TL case. Add mismatch check to the datarate test of changing svc pattern on the fly, which is test for 2 temporal layers. This re-applies the change: 254e2f5501d, that was reverted in: 658eb1d675. Change-Id: Ib5fd4a7a0312c0c05329ae75baac480af34b4694
2018-01-31Merge "Revert "vp9 svc: fix to make top layer frame non-ref""Marco Paniconi
2018-01-31Revert "vp9 svc: fix to make top layer frame non-ref"Marco Paniconi
This reverts commit 254e2f5501d000ca66bc65c5f44bb6a882d4167c. Reason for revert: <INSERT REASONING HERE> Original change's description: > vp9 svc: fix to make top layer frame non-ref > > Add mismatch check to the datarate test of changing svc pattern on the > fly. > > Change-Id: I6a878736de44e6a40c077ed6430aabd7fadabdd9 TBR=marpan@google.com,builds@webmproject.org,jianj@google.com Change-Id: Ibcb600438098f8dc380fe7e1de90cb81fc367468 No-Presubmit: true No-Tree-Checks: true No-Try: true
2018-01-30Fix warning about bitwise 'not' on booleanJohann
cherry-picked from libaom: commit cf26ee5ad2b9da79fa68c33b7d22ff53c66d6509 Author: Sebastien Alaiwan <sebastien.alaiwan@allegrodvt.com> Date: Wed, 4 Oct 2017 10:09:13 +0200 BUG=webm:1491 Change-Id: I36c6e83ed716649f3d9ee10ce3aa9bb847cac2d9
2018-01-30Merge "vp9 svc: fix to make top layer frame non-ref"Marco Paniconi
2018-01-29vp9 svc: fix to make top layer frame non-refJerome Jiang
Add mismatch check to the datarate test of changing svc pattern on the fly. Change-Id: I6a878736de44e6a40c077ed6430aabd7fadabdd9
2018-01-29Update vp9_iht8x8_64_add_neon()Linfeng Zhang
Change-Id: Ie70ed8b9273df5e1fd06bc93cb469e80630941d2
2018-01-29Update vp9_iht4x4_16_add_neon()Linfeng Zhang
Change-Id: Ica8dbe5f8167e5d370d89d233c598b70bba123b7
2018-01-26Merge "vp9 svc: Update temporal_layering_mode in config change."Jerome Jiang
2018-01-26vp9 svc: Update temporal_layering_mode in config change.Jerome Jiang
temporal_layering_mode can be changed on the fly. BUG=webm:1488 Change-Id: I223fd4085184e41878ddf0f9244d2e3d07636ae3
2018-01-25vp9-svc: Adjust logic on intra mode search.Marco
For SVC, on spatial enhancement layer, intra search was disabled unless best reference frame is golden (i.e., spatial/inter-layer prediction), except for some other conditions (lower layer is key or golden is not an allowed reference). Fix is to add the base temporal layer condition, so intra search will not be force-disabled for base temporal layer frames. This improves metrics (-1-2%) for SVC 3 and 2 layer config. Some small encode time is expected, but since condition only affect base temporal layers (i.e., every 4 frames for 3 layers), increase is small. Change-Id: I10b824faef99560dfdeeb02ba8bf8e3e1eea6255
2018-01-25vp9-svc: Add QP dependency to thresh_svc_skip_golden.Marco
In nonrd-pickmode: the golden/spatial reference for inter-layer prediction may be skipped in the mode testing. Add QP dependency to reduce the threshold for skipping (i.e., check it more often) at high QP, if the lower layer was encoded at lower QP relative to the current layer. At high QP, a better quality lower resolution is more likely to provide good spatial (inter-layer) prediction. avgPSNR/SSIM metrics up by ~1% (all clips positive gain or neutral). Some decrease in encode time (~1-2%) expected at lower bitrates, for 3 layer SVC. Change-Id: I9ee0f62d4b10d4ebd30165d378ecfa4399ae5ef1
2018-01-24Merge "vp9-svc: Re-adjust some aq-mode=3 control parameters."Marco Paniconi
2018-01-24Merge "vp9_quantize_fp_avx2()"Scott LaVarnway