]> granicus.if.org Git - libvpx/commit
Skip duplicate block encoding in the rd loop
authorJingning Han <jingning@google.com>
Mon, 8 Jul 2013 23:48:47 +0000 (16:48 -0700)
committerJingning Han <jingning@google.com>
Mon, 15 Jul 2013 18:08:58 +0000 (11:08 -0700)
commitfaff6ed0fbb01ece1331021b749ec2f9114332ff
tree139e9c03437fa55db49a5b33757ee70193a6da3c
parent1f14bbb6248faf223159082be30dbb1d57a7fbcd
Skip duplicate block encoding in the rd loop

This speed feature allows the encoder to largely remove the spatial
dependency between blocks inside a 64x64 superblock, thereby removing
the need to repeatedly encode superblocks per partition type in the
rate-distortion optimization loop.

A major challenge lies in the intra modes tested in the rate-distortion
optimization loop. The subsequent blocks do not have access to the
reconstructed boundary pixels without the intermediate coding steps.
This was resolved by using the original pixels for intra prediction
in the rd loop, followed by an appropriately designed distortion
modeling on the quantization parameters. Experiments also suggested
that the performance impact is more discernible at lower bit-rate/psnr
settings. Hence a quantizer dependent threshold is applied to deactivate
skip of block coding.

For bus_cif at 2000 kbps,
speed 0: runtime 269854ms -> 237774ms (12% speed-up) at 0.05dB
         performance loss.

speed 1: runtime 65312ms  -> 61536ms, (7% speed-up) at 0.04dB
         performance loss.

This operation is currently turned on in settings of speed 1.

Change-Id: Ib689741dfff8dd38365d8c1b92860a3e176f56ec
vp9/encoder/vp9_block.h
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_encodeintra.c
vp9/encoder/vp9_encodemb.c
vp9/encoder/vp9_onyx_if.c
vp9/encoder/vp9_onyx_int.h
vp9/encoder/vp9_rdopt.c
vp9/encoder/vp9_rdopt.h