Reason for revert: Quality regression
(VP9/EndToEndTestLarge.EndtoEndPSNRTest/195 failed)
BUG=webm:1635
Original change's description:
> Set up frame contexts based on frame type
>
> In single layer ARF case, use different frame
> contexts for KF, ARF/GF, LF, OVERLAY update types.
>
> Change-Id: Iebb7f9bb430e483dea1e75fc122b9b67645ce804
fmemopen is not preferred during fuzzing.
Removed all file operations.
Removed need for allocating a different input buffer.
data buffer is appropriately incremented and passed directly to decoder
This will also test input being sent in an unaligned buffer to the library.
Removed read_frame function and did the required parsing inline.
Deepa K G [Tue, 9 Apr 2019 12:25:36 +0000 (17:55 +0530)]
Use previous ARF as GOLDEN frame for the next GOP
This patch uses ARF itself as the GOLDEN frame for the
next gf group instead of replacing it with the overlay
frame. By doing so, bits consumed by the overlay frame
will be reduced.
81de00c Check there is only one settings per ContentCompression 5623013 Fixes a double free in ContentEncoding 93b2ba0 mkvparser: quiet static analysis warnings
sdeng [Thu, 6 Jun 2019 03:40:16 +0000 (20:40 -0700)]
Update performance test results for tune=SSIM
I made a mistake (used the outdated baseline) in the CL I
submitted earlier this week:
https://chromium-review.googlesource.com/c/webm/libvpx/+/1638854
The corrected results are following:
The additional gains/loss on top of the tune=ssim are:
Data Set Overall PSNR SSIM MS-SSIM
Lowres 3.490 -3.164 -2.267
Midres 2.245 -2.270 -2.287
HDres 2.562 -1.804 -1.681
Lowres_10bd 3.477 -2.399 -2.689
Midres_10bd 3.467 -1.534 -1.636
The overall gains/loss comparing to tune=psnr are:
Data Set Overall PSNR SSIM MS-SSIM
Lowres 6.127 -5.818 -4.783
Midres 4.574 -5.383 -6.242
HDres 4.908 -6.218 -7.106
Lowres_10bd 6.115 -6.212 -7.790
Midres_10bd 6.238 -6.064 -7.249
sdeng [Tue, 4 Jun 2019 20:54:18 +0000 (13:54 -0700)]
Fix a bug in best RD cost updating
This CL fixed a bug that sometimes we calculate the best rd cost using
uninitialized rd_div. This CL also includes a small refactoring of
rd_pick_partition().
Speed change: (the smaller the better)
Performance counter stats for './vpxenc park_joy_480p.y4m --limit=50
-o output.webm':
with this CL: 297,086,181,136 instructions:u
without this CL: 299,285,835,104 instructions:u
Marco Paniconi [Tue, 4 Jun 2019 17:07:11 +0000 (10:07 -0700)]
vp9-rtc: Use speed 5 for postencode drop tests.
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.
sdeng [Sat, 1 Jun 2019 00:25:09 +0000 (17:25 -0700)]
Hierarchical rdmult scaling when tune=ssim
Use different lagrangian multiplier scaling factor for different block
size. The blocks whose sizes are less than 16x16 share the same multiplier
of their parent block.
The additional gains/loss on top of the tune=ssim are:
Data Set Overall PSNR SSIM MS-SSIM
Lowres 2.918 -3.691 -2.596
Midres 1.708 -2.656 -2.624
HDres 1.619 -2.496 -2.391
Midres_10bd 1.518 -3.263 -3.561
The overall gains/loss comparing to tune=psnr are:
Data Set Overall PSNR SSIM MS-SSIM
Lowres 5.583 -6.208 -4.978
Midres 4.024 -5.610 -6.411
HDres 4.102 -6.614 -7.457
Midres_10bd 4.647 -7.181 -8.614
Sai Deng [Mon, 3 Jun 2019 16:19:06 +0000 (16:19 +0000)]
Merge changes I7b1d1482,I01588758,I6f17864e
* changes:
Update rdcost using the rd_mult in current block
Use distortion and rate of best_rd as the params
Use distortion and rate recursively in rd_pick_partition()
sdeng [Fri, 31 May 2019 22:11:53 +0000 (15:11 -0700)]
Update rdcost using the rd_mult in current block
This CL is a preparation for implementing hierarchical SSIM rdmult scaling.
There is very little impact on metrics and speed:
avg_psnr ovr_psnr ssim
midres 0.009 0.009 0.015
perf stat -e instructions:u ./vpxenc park_joy_480p.y4m --limit=50
with this cl: 317,722,808,461
before: 317,700,108,619
sdeng [Fri, 31 May 2019 20:10:08 +0000 (13:10 -0700)]
Use distortion and rate recursively in rd_pick_partition()
This CL is a preparation for implementing hierarchical SSIM rdmult scaling,
There is very little impact on metrics and speed:
avg_psnr ovr_psnr ssim
midres -0.04 0.005 0.012
perf stat -e instructions:u ./vpxenc park_joy_480p.y4m --limit=50
with this cl: 317,669,279,763
before: 317,717,562,045
Johann [Tue, 21 May 2019 21:15:18 +0000 (14:15 -0700)]
remove unused svc exports
The spatial svc implementation has moved outside the library:
commit ed8f189cccda9168fd400d1ba6661b1bc14a3afa
Refactor: move svc example files to from vpx/ to examples/
Deepa K G [Mon, 27 May 2019 12:32:00 +0000 (18:02 +0530)]
Fix calculations in GF only group case
- Fix the number of frames considered in calculation of
twopass active worst quality. For GF only group, frames
considered should be one less than baseline gf interval
accounting for the golden frame.
- Fix in calculation of normal_frames. As baseline gf
interval includes the golden frame, the number of
normal frames should be one less than baseline gf
interval.
Original change's description:
> Fix calculations in GF only group case
>
> - Fix the number of frames considered in calculation of
> twopass active worst quality. For GF only group, frames
> considered should be one less than baseline gf interval
> accounting for the golden frame.
> - Fix in calculation of normal_frames. As baseline gf
> interval includes the golden frame, the number of
> normal frames should be one less than baseline gf
> interval.
>
> Change-Id: I6c0cd0a39db23586fc390a6fba5d7aebc0dfce08
Marco Paniconi [Tue, 14 May 2019 22:47:23 +0000 (15:47 -0700)]
vp8: Disallow copy flag behavior under forced refresh
Don't allow the setting of copy_buffer_to_arf when the
application/user sets the refresh/update flags. Add new flag
(ext_refresh_frame_flags_pending) to indicate user sets the flags.
Marco Paniconi [Fri, 17 May 2019 17:50:42 +0000 (10:50 -0700)]
vp9-rtc: Increase qp thresh for overshoot detection
For video mode (non-screen) in CBR real-time mode:
increase the qp thresh to trigger setting to active_worst
on scene changes. Avoid big overshoots in content with
scene changes.
Ravi Chaudhary [Mon, 22 Apr 2019 13:25:12 +0000 (18:55 +0530)]
Increase active best quality linearly
The ARF frames in last few gf intervals, would be
used as a reference by fewer ARF frames in the same
kf interval. Also, the ARF frames in the last GF
group would not be used as a reference in future.
Hence the active best quality for these ARF frames
is increased based on their temporal distance from
the next key frame.
Deepa K G [Fri, 26 Apr 2019 10:09:13 +0000 (15:39 +0530)]
Fix calculations in GF only group case
- Fix the number of frames considered in calculation of
twopass active worst quality. For GF only group, frames
considered should be one less than baseline gf interval
accounting for the golden frame.
- Fix in calculation of normal_frames. As baseline gf
interval includes the golden frame, the number of
normal frames should be one less than baseline gf
interval.
Deepa K G [Tue, 14 May 2019 08:40:21 +0000 (14:10 +0530)]
Fix section intra rating for first ARF interval
The section intra rating used for the frames in the
first ARF interval was based on entire key frame
interval. However, for subsequent ARF intervals it was
based on that ARF interval. This discrepancy is fixed.
Reason for revert:
This has not been reproduced on hardware. There is a strange
libc bug which may account for the behavior on arm because
the environment qemu is using is somewhat old. See discussion
on the webm bug.
To work around the failures in the nightly test the jenkins
job has been switched to use the hardfloat compiler and qemu
environment. Even though this is the same version, it has
not shown the hanging behavior.
Original change's description:
> disable row mt test
>
> deadlock is being investigated in attached bug.
>
> BUG=webm:1626
>
> Change-Id: Ia6d7020b8b1d274433aa89f36c9ed5b9facc5808
Jerome Jiang [Fri, 10 May 2019 04:04:11 +0000 (21:04 -0700)]
Fix tsan failure in webrtc test.
plane block size is used when computing model rd for uv.
However, it iterates thru sub-blocks based on tx size on uv planes
and plane block size could be bigger than that, which leads to reading
beyond tile boundary when the block is on it.
Jingning Han [Mon, 6 May 2019 21:09:18 +0000 (14:09 -0700)]
Cap arf boost in perceptual quality mode
When the perceptual AQ mode is enabled, cap the ARF boost to 2.5x
of the regular frame. This allows more consistent frame quality
across consecutive frames and sufficient bit rate allocation at
frame level for AQ mode.
Add a macro to to exclude VP9 specific assembly files from build if VP9
is not configured. This would otherwise cause a linking error for VP8
only builds.
Deepa K G [Mon, 29 Apr 2019 13:09:14 +0000 (18:39 +0530)]
Avoid two GF only groups just before a kf
Trap the case where we end up with two short GF only groups just
before a key frame. For example, if the KF is 22 frames away
we are better doing one ARF group of size 16 followed by a GF
only group of 6 than two GF only groups of size 11 (when
min_gf_interval is 12).