diff options
author | Deb Mukherjee <debargha@google.com> | 2012-02-16 09:29:54 -0800 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2012-02-23 09:25:21 -0800 |
commit | 18e90d744eba2d28ad96a566565bbf5642d24b59 (patch) | |
tree | 8d0859ca6973ad522f4b1e30566ba67ea6ed886a /vp8/common/entropymode.c | |
parent | 3c872b6c27a5f03156b973fb359c9293049d6e84 (diff) | |
download | libvpx-18e90d744eba2d28ad96a566565bbf5642d24b59.tar libvpx-18e90d744eba2d28ad96a566565bbf5642d24b59.tar.gz libvpx-18e90d744eba2d28ad96a566565bbf5642d24b59.tar.bz2 libvpx-18e90d744eba2d28ad96a566565bbf5642d24b59.zip |
Supporting high precision 1/8-pel motion vectors
This is the initial patch for supporting 1/8th pel
motion. Currently if we configure with enable-high-precision-mv,
all motion vectors would default to 1/8 pel. Encode and
decode syncs fine with the current code. In the next phase
the code will be refactored so that we can choose the 1/8
pel mode adaptively at a frame/segment/mb level.
Derf results:
http://www.corp.google.com/~debargha/vp8_results/enhinterp_hpmv.html
(about 0.83% better than 8-tap interpoaltion)
Patch 3: Rebased. Also adding 1/16th pel interpolation for U and V
Patch 4: HD results.
http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd_hpmv.html
Seems impressive (unless I am doing something wrong).
Patch 5: Added mmx/sse for bilateral filtering, as well as enforced
use of c-versions of subpel filters with 8-taps and 1/16th pel;
Also redesigned the 8-tap filters to reduce the cut-off in order to
introduce a denoising effect. There is a new configure option
sixteenth-subpel-uv which will use 1/16 th pel interpolation for
uv, if the motion vectors have 1/8 pel accuracy.
With the fixes the results are promising on the derf set. The enhanced
interpolation option with 8-taps alone gives 3% improvement over thei
derf set:
http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html
Results on high precision mv and on the hd set are to follow.
Patch 6: Adding a missing condition for CONFIG_SIXTEENTH_SUBPEL_UV in
vp8/common/x86/x86_systemdependent.c
Patch 7: Cleaning up various debug messages.
Patch 8: Merge conflict
Change-Id: I5b1d844457aefd7414a9e4e0e06c6ed38fd8cc04
Diffstat (limited to 'vp8/common/entropymode.c')
-rw-r--r-- | vp8/common/entropymode.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/vp8/common/entropymode.c b/vp8/common/entropymode.c index cdc510acf..540da33ed 100644 --- a/vp8/common/entropymode.c +++ b/vp8/common/entropymode.c @@ -225,6 +225,28 @@ struct vp8_token_struct vp8_mbsplit_encodings [VP8_NUMMBSPLITS]; struct vp8_token_struct vp8_mv_ref_encoding_array [VP8_MVREFS]; struct vp8_token_struct vp8_sub_mv_ref_encoding_array [VP8_SUBMVREFS]; +#if CONFIG_HIGH_PRECISION_MV +const vp8_tree_index vp8_small_mvtree [30] = +{ + 2, 16, + 4, 10, + 6, 8, + -0, -1, + -2, -3, + 12, 14, + -4, -5, + -6, -7, + 18, 24, + 20, 22, + -8, -9, + -10, -11, + 26, 28, + -12, -13, + -14, -15 +}; +struct vp8_token_struct vp8_small_mvencodings [16]; + +#else const vp8_tree_index vp8_small_mvtree [14] = { @@ -236,9 +258,11 @@ const vp8_tree_index vp8_small_mvtree [14] = -4, -5, -6, -7 }; - struct vp8_token_struct vp8_small_mvencodings [8]; +#endif /* CONFIG_HIGH_PRECISION_MV */ + + void vp8_init_mbmode_probs(VP8_COMMON *x) { unsigned int bct [VP8_YMODES] [2]; /* num Ymodes > num UV modes */ @@ -489,4 +513,3 @@ void print_mv_ref_cts(VP8_COMMON *pc) printf("\n"); } } - |