Age | Commit message (Collapse) | Author |
|
|
|
|
|
Refactor define_gf_group_structure() to unify the single-layer,
multi-layer ARF, and GF only GOP structure setup.
Change-Id: Iebbe9c3742fc58ae4e77b1072ebecb3ee7bd26b2
|
|
|
|
Encode the next frame at max q.
For layers: post_encode_drop is only check on base
spatial layer, and if base is post-encoded-dropped,
then whole superframe is dropped.
Added API to guard postencode dropping. Turned off by default.
Added unittest.
BUG=b/112990050
Change-Id: I42fee279014aca616f7a4d9b582cb2bf5da2f2e7
|
|
Increase search area, use NSTEP, and in some cases avoid
bsize below 16x16. This for base spatial layer when many blocks
in the frame have motion (from scene detection analysis).
Improves quality for scrolling motion.
Change-Id: If77b43e738a6c43610d4727a95712667088db564
|
|
Address poor key frame detection in some content.
This patch improves on poor key frame / scene cut detection observed
with some test content. The content in question was letter boxed film
style material and also had quite low contrast. For both 1080P and 4K
multiple genuine scene cuts were being missed.
The changes alter the conditions for marking a transition as a "flash" rather
than a scene change. The new code still deals well with genuine flashes as
observed in the "crew" test clip, without falsely flagging some of the
the scene cuts in the "film" test clip.
The new film test clip also had some "flash" frames caused by a lightning
effect and in one case a flash occurred right before a scene change. This
caused a misplacement of the key frame but has been addressed by a new
clause that requires the coded error for the next frame after a candidate
key frame to be lower than the current frame.
The patch also changes the way in which neutral blocks (similar inter and
inter error) are handled in the candidate key frame decision in a way which
hopefully handles the letter boxed format better.
During wider testing some film clips still had missed key frames but this
patch does improve things. In the case of the initial test clip the encoder
correctly marks all 3 scene cuts vs 0 before the patch.
Testing with our standard (mainly short single kf) derf and NF test clips
is neutral.
Change-Id: I3b7dcfe7b2fb13fd0816ea46acc3e69c8bc581b3
|
|
Track the effective maximum layer depth in a given group of
pictures. Keep it in the GF_GROUP data structure.
Change-Id: If777c4e0f4a871c7226a91e3871f445e92f18b24
|
|
The previous value was set off by 1. Use the correct value.
Change-Id: I1ce53cc99063ce31e7ab1c43c6e444cb9a1972db
|
|
Make it a standalone operation unit. Refactor to cut off unnecessary
dependency between define_gf_group_structure() and
allocate_gf_group_bits().
Change-Id: I954fd4e96152471a994f2ffd38a72061ab517ddd
|
|
The functionality has been covered in the above
set_gf_overlay_frame_type() call.
Change-Id: Id4049cd9a1a5a9bad7ea62c412fcb557afa9a572
|
|
Make the maximum layer depth allowed a control parameter in
GF_GROUP. No coding stats would change.
Change-Id: I9d17167da322831e7013d761980e1c16375a161b
|
|
|
|
Change-Id: Ibec078c80ca1dfe6fbbc4288db89d719dac453a7
|
|
BUG=webm:1444
Change-Id: I6823635eb1a99c3fcca0a8f091878e3ab2fdd2ac
|
|
|
|
Space the quantization parameter distribution according to the
layer depth for multi-layer ARF coding structure. This allows
lower layers to have relatively smaller quantization parameters
than higher layers. It improves the compression performance
in constant q mode for multi-layer ARF system:
avg PSNR overall PSNR SSIM
lowres -0.33% -0.31% -1.44%
midres -0.29% -0.38% -1.14%
hdres -0.27% -0.49% -1.02%
Change-Id: I9cfe2f27e6c0029c30614970a46de3045840264e
|
|
|
|
lowres_bd10 midres_bd10
avg_psnr -0.897 -1.261
ovr_psnr -0.975 -1.349
Change-Id: Id54f2c419f4edaa91e89ffea52b4038b1d94e563
|
|
Change-Id: If5267a8c71113b171b7bddda5b49f0326c4266b8
|
|
|
|
|
|
|
|
|
|
|
|
Enable temporal dependency model for the base layer ARF. It
improves the multi-layer ARF compression performance (results
are tested in speed 0 vbr mode):
avg PSNR overall PSNR SSIM
lowres -0.40% -0.46% -0.32%
midres -0.59% -0.68% -0.45%
720p -0.55% -0.59% -1.07%
Change-Id: I7790b89ccfb6e61f9b7965f34d348c7440220dd0
|
|
After the frame quantizer estimate run in tpl model, reset the
actual value assigned to the current coding frame. This would
avoid certain frame update flags being overwritten by different
frame types' update.
Change-Id: Idde2ba1108f1f68747b14149b211f882965c99f0
|
|
|
|
Used 8-tap interp filter in temporal filtering to achieve more accurate
motion search result. Using 8-tap sharp gave slight better result than
using 8-tap regular.
Speed 0 borg test showed that
avg_psnr: ovr_psnr: ssim:
hdres: -0.160 -0.157 -0.173
midres: -0.083 -0.061 -0.183
lowres: -0.077 -0.099 -0.204
Speed test didn't see noticeable encoder time changes.
Change-Id: I97dc3c4864b5a5675a6c1e3952799b81eedd7d93
|
|
|
|
The use of show existing frame requries no further operation on
that coding frame. Bypass the corresponding process.
Change-Id: Ia092027a8a543be0ca54c00b4d51e453039712b8
|
|
Properly compute the extended GOP frames' buffer offsets.
Change-Id: I9aed14f4b8d623f1832e782828dce07aa546507d
|
|
Make it support both single- and multi-layer ARF GOP structure.
Change-Id: I760a95804d1b583b057120f6d6be65195a0e6c19
|
|
Change-Id: Iefa184aae80b920b054e3e922a77244c2b0d4b61
|
|
|
|
Update the Lagrangian multiplier according to the gfu_boost factor
assigned per frame. It improves the multi-layer ARF compression
performance (results below shown for speed 0):
avg PSNR overall PSNR SSIM
lowres -0.08% 0.02% -0.28%
midres -0.08% 0.03% -0.22%
hdres -0.19% -0.10% -0.39%
nflx2k -0.29% -0.18% -0.85%
Change-Id: Ifeb4b14918f880ba011ea41c1454ab00504f8855
|
|
|
|
When the ML_VAR_PARTITION experiment is turned on, replace
REFERENCE_PARTITION with ML_BASED_PARTITION at speed 5.
Coding gains(avg_psnr) compared to baseline:
ytlivehr 1.63%
ytlivelr 0.07%
Tested encoding speed with several clips from ytlivehr and ytlivelr
on linux desktop(rt, vbr, 4 threads). Encoder speed is on average
faster than baseline:
360p: 14% faster
720p: 7% faster
1080p: 1.5% faster
Change-Id: I39b00078176ff516f7306818f33ba2b1ea53dfa1
|
|
|
|
|
|
|
|
MAX_ARF_GOP_SIZE accurately reflects the maximum frame operated
per group of pictures. Use that to replace MAX_LAG_BUFFERS in
such use cases.
Change-Id: Id26f9b1b2b0c38f255dee19795356c387d06d033
|
|
* changes:
Add do_motion_search
Preserve code of doing mv search in raster order
Variant implementation of changing mv search order
Add feature_score_loc_sort
Init mv_[dist/cost]_sum in init_tpl_stats
Change mv search order according to feature_score
|
|
This will make the code cleaner.
Change-Id: I6d5c77af7261c39656b35ec40ac1451bbdbfb7a7
|
|
With this change, there will be three version of mv search scheme
on the codebase simultaneously.
We will do further experiment to evaluate which version is better
in terms of visual quality and coding performance.
Change-Id: I6bf504b4551316ef10b8a341ab3ba14d0ec977ce
|
|
This patch enables rectangular partition search on speed 1 for high
bit depth encoding. The encoding speed loss is reduced thanks to
recently added speed features.
This only affects speed 1 high bit-depth encoding.
Coding gains:
avg_psnr ovr_psnr
lowres_bd10(480p) 1.34% 1.40%
midres_bd10(720p) 1.28% 1.33%
Average speed loss:
QP=30 QP=40 QP=50 average
480p 2.5% 2.3% 2.6% 2.5%
720p 4.0% 3.9% 3.2% 3.7%
Change-Id: Id9cac4eea0769d94e093c9d170194659b3342d89
|
|
|
|
If we are using keyframe only coding - either coding a
single frame, or a sequence of keyframes - in the end-usage=q
mode, use the cq_level directly as the quality of each
coded frame, rather than boost them.
Ported from AV1: 563a0d1eb92bdc1e987df071a568d8406c4ffa92
Change-Id: I6dc929b8b4f0aa18e279139077f3a87958c92245
|
|
Following the previous patch:
(https://chromium-review.googlesource.com/c/webm/libvpx/+/1277913),
this patch modified the highbd version of applying temporal filter
in the similar way.
Change-Id: I2bb6f1fff6e32bca86f7139a497181d34aa9f3ec
|
|
We start mv search from the block with highest feature score, then
move on to the block's neighbors with with an searching order using
their feature scores.
We use max heap to help us achieve the functionality.
This feature is under flag USE_PQSORT
Change-Id: Ie5dc5ea715b0f9a7a594e5080a7cb4f5309f5597
|