When an enhancement spatial layer is skipped, we should check
for updating the layer frame counters.
Change-Id: Ib79d0955c62fb465f59ef2f9ac45240ae2614d7b
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
The largest frame is currently in choose_partitioning:
warning: stack frame size of 44156 bytes in function 'choose_partitioning'
but adding HBD amplifies other things:
warning: stack frame size of 51480 bytes in function 'dec_build_inter_predictors'
Add some padding for sanitizer and variances between compilers.
BUG=webm:1498
Change-Id: I0d94d4f94d25dafafca9d7484881c2ce5f8de371
The file contains sse2 implementations related to various block error
functions. Update the .mk file to include it only when sse2 is
requested.
BUG=webm:1500
Change-Id: I67b766faed425fd7a96db8541b13c69670b65fec
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
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
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
Changes in the function size in bytes (in lieu of performance metrics)
Before After Diff
vpx_fdct32x32_avx2 29564 -> 28334 -1230
vpx_fdct32x32_sse2 38053 -> 36309 -1744
Change-Id: Ie0b3e6ed7c3f2e9ea45f9d6a1ce1e27d068cee6b
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
This reverts commit 4e5b4b5848.
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
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
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
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