vpx/vp9
Yunqing Wang d36852b702 Add encoding option --static-thresh
This option exists in VP8, and it was rewritten in VP9 to support
skipping on different partition levels. After prediction is done,
we can check if the residuals in the partition block will be all
quantized to 0. If this is true, the skip flag is set, and only
prediction data are needed in reconstruction. Based on DCT's energy
conservation property, the skipping check can be estimated in
spatial domain.

The prediction error is calculated and compared to a threshold.
The threshold is determined by the dequant values, and also
adjusted by partition sizes. To be precise, the DC and AC parts
for Y, U, and V planes are checked to decide skipping or not.

Test showed that
1. derf set:
when static-thresh = 1, psnr loss is 0.666%;
when static-thresh = 500, psnr loss is 1.162%;
2. stdhd set:
when static-thresh = 1, psnr loss is 1.249%;
when static-thresh = 500, psnr loss is 1.668%;

For different clips, encoding speedup range is between several
percentage and 20+% when static-thresh <= 500. For example,
clip            bitrate  static-thresh psnr    time
akiyo(cif)       500        0          48.923  5.635s(50f)
akiyo            500        500        48.863  4.402s(50f)

parkjoy(1080p)   4000       0          30.380  77.54s(30f)
parkjoy          4000       500        30.384  69.59s(30f)

sunflower(1080p) 4000       0          44.461  85.2s(30f)
sunflower        4000       500        44.418  78.1s(30f)

Higher static-thresh values give larger speedup with larger
quality loss.

Change-Id: I857031ceb466ff314ab580ac5ec5d18542203c53
2013-07-25 14:28:05 -07:00
..
common Removing redundant VP9_COMMON* from function signatures. 2013-07-19 11:20:49 -07:00
decoder Removing redundant VP9_COMMON* from function signatures. 2013-07-19 11:20:49 -07:00
encoder Add encoding option --static-thresh 2013-07-25 14:28:05 -07:00
exports_dec support building vp8 and vp9 into a single lib 2012-11-15 10:46:17 -08:00
exports_enc support building vp8 and vp9 into a single lib 2012-11-15 10:46:17 -08:00
vp9_common.mk Add neon optimize vp9_short_idct8x8_add. 2013-07-18 16:40:41 -07:00
vp9_cx_iface.c use consistent framerate naming 2013-07-16 14:12:47 -07:00
vp9_dx_iface.c vp9_dx_iface: s/vp8/vp9/ where possible 2013-07-12 11:05:39 -07:00
vp9_iface_common.h yv12config: remove YUV_TYPE 2013-07-12 15:25:48 -07:00
vp9cx.mk Remove unused fwalsh/fdct x86 SIMD implementations. 2013-07-10 18:22:51 -07:00
vp9dx.mk Remove all asm offset files from VP9 2013-07-09 14:26:53 -07:00