summaryrefslogtreecommitdiff
path: root/vp8/common/entropymode.c
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2012-02-16 09:29:54 -0800
committerDeb Mukherjee <debargha@google.com>2012-02-23 09:25:21 -0800
commit18e90d744eba2d28ad96a566565bbf5642d24b59 (patch)
tree8d0859ca6973ad522f4b1e30566ba67ea6ed886a /vp8/common/entropymode.c
parent3c872b6c27a5f03156b973fb359c9293049d6e84 (diff)
downloadlibvpx-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.c27
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");
}
}
-