Age | Commit message (Collapse) | Author |
|
Fixes an issue where the tx_type was not set correctly for
sub8x8 inter and intra blocks. In the current syntax, for
sub8x8 blocks, there is still a single tx_type that is
transmitted. Ideally, this should be searched for the best
rd performance, albeit at the expense of encode speed.
For now, we just set it to DCT_DCT. Previously it was left
incorrectly as what was used for the previous non sub8x8
block.
derflr: BDRATE -0.277%
Change-Id: If76ba903bfbfd4d374cf1ac7d1daee50e92f0edd
|
|
The definition is for the number of frames to check to determine the
recent decay rate, further to determine the next key frame in the
first pass of the encoder.
Change-Id: Ic696d6eb518a86fa296842273cf8767ef0b0e27a
|
|
dead code since:
5d3327e Remove palette from VP10
Change-Id: I4a36575706ea6fffefe5bc778595112ef6ff37d8
|
|
Change-Id: Icfab58e880285d5af00985dc20db2174a67d1fe8
|
|
|
|
Change-Id: I6dbddf500fd4f64216774685700efea972165470
|
|
the lookahead buffer allocation is deferred to receipt of the first
frame to allow profile changes. if the encoder was flushed before
supplying any frames the encoder would crash trying to dereference the
NULL buffer. vp8 is unaffected.
fixes mozilla bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1237848
Change-Id: Icee4b64de760476eee0d33b568f0a1010335ff13
|
|
|
|
Change-Id: I32aacd014df6c927cf2893dc096cbe6ec7604b9b
|
|
Change-Id: I0b8eff9e74e3446024482d011ec4fb28b19136d3
|
|
Change-Id: I6a7fa6d0ae8ce8de7b426189d5eb00413f21bc17
|
|
Change-Id: I9c383d604dfd240e38b198ac5bf86ddd3456f442
|
|
This commit adds the logic for segmentation map initialization and
disable temporal update of segmentation map when error-resilient
mode is on. It fixes the enc/dec mistmates (release build) and
assertions(debug) when both aq-mode and error-resilient are on.
Change-Id: Id2155e8b28962cf1f64494f4df0c8d79499b6890
|
|
Also includes a bug fix.
Change-Id: Ia49ed00f8ffd1531c10bcf89b1f497310ee7cb82
|
|
The nominal tx_type for a given mode is used as a context
to encode the actual tx_type for intra.
Results:
derflr: -0.241% BDRATE
hevcmr: -0.366% BDRATE
Change-Id: Icfe7b0a58d79bc6497a06e3441779afec6e01e21
|
|
Otherwise, per-segment lossless might mean that some segments are not
lossless and they could still want to use another mode. The per-block
tx points remain uncoded on blocks where (per the segment id) the Q
value implies lossless.
Change-Id: If210206ab1fe3dd11976797370c77f961f13dfa0
|
|
Change-Id: Ic23c10b6d2a9fed3abe69c6bf10e910832444f2c
|
|
This also fixes a compiling error under --enable-vp9_highbitdepth.
Change-Id: I9d1dcb95d3336d797eb3c23a4702c30b04355357
|
|
* changes:
Fixed interval, fixed Q 1 pass test patch.
1 pass VBR mode bug fix.
Fixed interval, fixed Q 1 pass test patch.
|
|
|
|
For testing implemented a fixed pattern and delta, 1 pass,
fixed Q, low delay mode.
This has not in any way been tuned or optimized.
Change-Id: Icf9b57c3bb16cc5c0726d5229009212af36eb6d9
|
|
(copied from VP9)
The one pass VBR mode selects a Q range based on a
moving average of recent Q values. This calculation
should have been excluding arf overlay frames as these
are usually coded at the highest allowed value. Their
inclusion skews the average and can cause it to drift
upwards even when the clip as a whole is undershooting.
As such it can undermine correct adaptation of the allowed
Q range especially for easy content.
Change-Id: I9e12da84e12917e836b6e53ca4dfe4f150b9efb1
|
|
The culprit is on the decode side xd->lossless[i] setup was in wrong
location where segment features are not yet decoded.
Also on the encoder side, transform mode was not set consistently
between when tx_mode is selected and how tx_mode is enforced in
tx size selection.
Change-Id: I4c4c32188fda7530cadab9b46d4201f33f7ceca3
|
|
Change-Id: I7bc991abea383db1f86c1bb0f2e849837b54d90f
|
|
|
|
Change-Id: I701ab4993be7cfb15b61a1adbbaf5565bd14ae27
|
|
* changes:
Fix two msvc build issues
Fix enc/dec mismatches for aq-mode 1 and 2
|
|
Change-Id: Iece22223773dd6d0f87f8f59827705acd2ebe2a4
|
|
Change-Id: Iefad9d8d96a08dcc788a5efdca2df6a815d1205f
|
|
This change has been imported from VP9 and
alters the nature and use of exhaustive motion search.
Firstly any exhaustive search is preceded by a normal step search.
The exhaustive search is only carried out if the distortion resulting
from the step search is above a threshold value.
Secondly the simple +/- 64 exhaustive search is replaced by a
multi stage mesh based search where each stage has a range
and step/interval size. Subsequent stages use the best position from
the previous stage as the center of the search but use a reduced range
and interval size.
For example:
stage 1: Range +/- 64 interval 4
stage 2: Range +/- 32 interval 2
stage 3: Range +/- 15 interval 1
This process, especially when it follows on from a normal step
search, has shown itself to be almost as effective as a full range
exhaustive search with step 1 but greatly lowers the computational
complexity such that it can be used in some cases for speeds 0-2.
This patch also removes a double exhaustive search for sub 8x8 blocks
which also contained a bug (the two searches used different distortion
metrics).
For best quality in my test animation sequence this patch has almost
no impact on quality but improves encode speed by more than 5X.
Restricted use in good quality speeds 0-2 yields significant quality gains
on the animation test of 0.2 - 0.5 db with only a small impact on encode
speed. On most natural video clips, however, where the step search
is performing well, the quality gain and speed impact are small.
Change-Id: Iac24152ae239f42a246f39ee5f00fe62d193cb98
|
|
Fix copied over from VP9 master to VP10 master.
Do not reset the alt ref active flag when overlaying the middle
arf(s) of a multi arf group.
Change-Id: I1b7392107e7c675640d5ee1624012f39cc374c58
|
|
|
|
The range_check is not used because the bit range
in fdct# is not correct. Since we are going to merge in a new version
of fdct# from nextgenv2, we won't fix the incorrect bit range now.
Change-Id: I54f27a6507f27bf475af302b4dbedc71c5385118
|
|
Store it in nextgenv2 for now.
Change-Id: Iab0af0e15246758e3b6e8bde4a74b13c410576fc
|
|
Found with clang -fsanitize=integer
Change-Id: I2538e7483cb2d5f06bceecbd3326bdd88bfecfa1
|
|
On derflr, +0.1% for VP10; however, -0.03% on VP9.
Change-Id: I09c724232ede74254043d61d3cadc506256af0af
|
|
|
|
|
|
Change-Id: Ia59724413c4a4831390119a33d40a7d713b4b69f
|
|
This can help increase encoding speed substantially.
Change-Id: Id0c009146e6e74d9365add71c7b10b9a57a84676
|
|
The old workaround "p = 0 ? 0 : p -1" is misleading.
?: happens before =
assigning back to p truncates to one byte.
Therefore it is equivalent to (p - 1) & 0xFF, but the check just exists
to work around a first pass bug, so let's make the work around more
clear.
https://bugs.chromium.org/p/webm/issues/detail?id=1089
Change-Id: I587c44dd61c1f3767543c0126376f881889935af
|
|
|
|
This reverts commit 7f56cb29787b187c8cb1b778918ca3b80184c804.
It causes uninitialized reads in the first pass setting up later cost tables.
Change-Id: I2df498df3f5c03eff359f79edf045aed0c618dc9
|
|
Remove delta index 254 from probability remapping and subexp coding.
Saves 1-bit when the delta index is 129.
Change-Id: I88aba565fc766b1769165be458d2efd3ce45817e
|
|
Saves 2288 bytes in vp8+vp9 libvpx.a.
Change-Id: Iaa5712e59a9693ed58cea63de63781a96827e44e
|
|
|
|
|
|
This is to make future merge a bit easier.
Change-Id: I1039de381d8fe7b9988b57c23d15d0cb5f2fcd32
|
|
Add a cast on a double to unsigned assignment.
Change-Id: I4abce7cfa13e145ed0c71469844ac9b274aa1411
|
|
The old workaround "p = 0 ? 0 : p -1" is misleading.
?: happens before =
assigning back to p truncates to one byte.
Therefore it is equivalent to (p - 1) & 0xFF, but the check just exists
to work around a first pass bug, so let's make the work around more
clear.
https://code.google.com/p/webm/issues/detail?id=1089
Change-Id: Ia6dcc8922e1acbac0eeca23a4d564a355c489572
|