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).
Jingning Han [Tue, 30 Apr 2019 18:54:07 +0000 (11:54 -0700)]
Rework the wiener variance buffer
Support the potential frame scaling use case. The operation flow
now allows the codec to allocate the memory buffer only when
perceptual AQ mode is enabled.
Johann [Mon, 29 Apr 2019 21:38:27 +0000 (14:38 -0700)]
vp8 quantize: silence conversion warning
clang 7 integer sanitizer warns about storing any int16_t value
where the high bit is 1. Treated as an int, such number would
be positive. Treated as an int16_t, it is negative.