vpx/vp9
Deb Mukherjee fd18d5dffe Modeling default coef probs with distribution
Replaces the default tables for single coefficient magnitudes with
those obtained from an appropriate distribution. The EOB node
is left unchanged. The model is represeted as a 256-size codebook
where the index corresponds to the probability of the Zero or the
One node. Two variations are implemented corresponding to whether
the Zero node or the One-node is used as the peg. The main advantage
is that the default prob tables will become considerably smaller and
manageable. Besides there is substantially less risk of over-fitting
for a training set.

Various distributions are tried and the one that gives the best
results is the family of Generalized Gaussian distributions with
shape parameter 0.75. The results are within about 0.2% of fully
trained tables for the Zero peg variant, and within 0.1% of the
One peg variant.

The forward updates are optionally (controlled by a macro)
model-based, i.e. restricted to only convey probabilities from the
codebook. Backward updates can also be optionally (controlled by
another macro) model-based, but is turned off by default. Currently
model-based forward updates work about the same as unconstrained
updates, but there is a drop in performance with backward-updates
being model based.

The model based approach also allows the probabilities for the key
frames to be adjusted from the defaults based on the base_qindex of
the frame. Currently the adjustment function is a placeholder that
adjusts the prob of EOB and Zero node from the nominal one at higher
quality (lower qindex) or lower quality (higher qindex) ends of the
range. The rest of the probabilities are then derived based on the
model from the adjusted prob of zero.

Change-Id: Iae050f3cbcc6d8b3f204e8dc395ae47b3b2192c9
2013-03-25 23:43:38 -07:00
..
common Modeling default coef probs with distribution 2013-03-25 23:43:38 -07:00
decoder Modeling default coef probs with distribution 2013-03-25 23:43:38 -07:00
encoder Modeling default coef probs with distribution 2013-03-25 23:43:38 -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 Merge "Add VP9_GET_REFERENCE control" into experimental 2013-03-18 11:57:31 -07:00
vp9_cx_iface.c Fix pulsing issue with scaling 2013-03-13 19:10:10 -07:00
vp9_dx_iface.c Fix pulsing issue with scaling 2013-03-13 19:10:10 -07:00
vp9_iface_common.h Add VP9_GET_REFERENCE control 2013-03-13 19:08:06 -07:00
vp9cx.mk mv dct_sse2.c dct_sse2_intrinsics.c to avoid collision 2013-02-28 13:58:15 -08:00
vp9dx.mk Optimize add_residual function 2013-03-05 16:27:45 -08:00