diff options
author | Deb Mukherjee <debargha@google.com> | 2012-07-26 13:42:07 -0700 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2012-09-06 08:28:21 -0700 |
commit | 00f9eb659034cb5cef0bf063c1b72c72c6333f36 (patch) | |
tree | 760c659d32debf97ec1c0a6ecb5c9e834be4a915 /vp8/encoder/onyx_int.h | |
parent | de6dfa6bb0cd680ca446a15b52b2a026859eb1e6 (diff) | |
download | libvpx-00f9eb659034cb5cef0bf063c1b72c72c6333f36.tar libvpx-00f9eb659034cb5cef0bf063c1b72c72c6333f36.tar.gz libvpx-00f9eb659034cb5cef0bf063c1b72c72c6333f36.tar.bz2 libvpx-00f9eb659034cb5cef0bf063c1b72c72c6333f36.zip |
New motion vector entropy coding
Adds a new experiment with redesigned/refactored motion vector entropy
coding. The patch also takes a first step towards separating the
integer and fractional pel components of a MV. However the fractional
pel encoding still depends on the integer pel part and so they are
not fully independent. Further experiments are in progress to see
how much they can be decoupled without affecting performance.
All components including entropy coding/decoding, costing for MV
search, forward updates and backward updates to probability tables,
have been implemented.
Results so far:
derf: +0.19%
std-hd: +0.28%
yt: +0.80%
hd: +1.15%
Patch: Simplifies the fractional pel models:
derf: +0.284%
std-hd: +0.289%
yt: +0.849%
hd: +1.254%
Patch: Some changes in the models, rebased.
derf: +0.330%
std-hd: +0.306%
yt: +0.816%
hd: +1.225%
Change-Id: I646b3c48f3587f4cc909639b78c3798da6402678
Diffstat (limited to 'vp8/encoder/onyx_int.h')
-rw-r--r-- | vp8/encoder/onyx_int.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h index 04c7ad4ed..0bdc07fc2 100644 --- a/vp8/encoder/onyx_int.h +++ b/vp8/encoder/onyx_int.h @@ -67,10 +67,17 @@ #endif typedef struct { +#if CONFIG_NEWMVENTROPY + nmv_context nmvc; + int nmvjointcost[MV_JOINTS]; + int nmvcosts[2][MV_VALS]; + int nmvcosts_hp[2][MV_VALS]; +#else MV_CONTEXT mvc[2]; int mvcosts[2][MVvals + 1]; MV_CONTEXT_HP mvc_hp[2]; int mvcosts_hp[2][MVvals_hp + 1]; +#endif #ifdef MODE_STATS // Stats @@ -549,8 +556,12 @@ typedef struct VP8_COMP { // int uv_mode_count[VP8_UV_MODES]; /* intra MB type cts this frame */ int y_uv_mode_count[VP8_YMODES][VP8_UV_MODES]; +#if CONFIG_NEWMVENTROPY + nmv_context_counts NMVcount; +#else unsigned int MVcount [2] [MVvals]; /* (row,col) MV cts this frame */ unsigned int MVcount_hp [2] [MVvals_hp]; /* (row,col) MV cts this frame */ +#endif unsigned int coef_counts [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS]; /* for this frame */ // DECLARE_ALIGNED(16, int, coef_counts_backup [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS]); //not used any more |