summaryrefslogtreecommitdiff
path: root/vp8/encoder/encodemv.h
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2012-07-26 13:42:07 -0700
committerDeb Mukherjee <debargha@google.com>2012-09-06 08:28:21 -0700
commit00f9eb659034cb5cef0bf063c1b72c72c6333f36 (patch)
tree760c659d32debf97ec1c0a6ecb5c9e834be4a915 /vp8/encoder/encodemv.h
parentde6dfa6bb0cd680ca446a15b52b2a026859eb1e6 (diff)
downloadlibvpx-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/encodemv.h')
-rw-r--r--vp8/encoder/encodemv.h28
1 files changed, 24 insertions, 4 deletions
diff --git a/vp8/encoder/encodemv.h b/vp8/encoder/encodemv.h
index 7e33007d7..e675fe058 100644
--- a/vp8/encoder/encodemv.h
+++ b/vp8/encoder/encodemv.h
@@ -14,11 +14,31 @@
#include "onyx_int.h"
+#if CONFIG_NEWMVENTROPY
+void vp8_write_nmvprobs(VP8_COMP *, int usehp);
+void vp8_encode_nmv(vp8_writer *w, const MV *mv, const MV *ref,
+ const nmv_context *mvctx);
+void vp8_encode_nmv_fp(vp8_writer *w, const MV *mv, const MV *ref,
+ const nmv_context *mvctx, int usehp);
+void vp8_build_nmv_cost_table(int *mvjoint,
+ int *mvcost[2],
+ const nmv_context *mvctx,
+ int usehp,
+ int mvc_flag_v,
+ int mvc_flag_h);
+#else /* CONFIG_NEWMVENTROPY */
void vp8_write_mvprobs(VP8_COMP *);
-void vp8_encode_motion_vector(vp8_writer *, const MV *, const MV_CONTEXT *);
-void vp8_build_component_cost_table(int *mvcost[2], const MV_CONTEXT *mvc, int mvc_flag[2]);
+void vp8_encode_motion_vector(vp8_writer *, const MV *,
+ const MV_CONTEXT *);
+void vp8_build_component_cost_table(int *mvcost[2],
+ const MV_CONTEXT *mvc,
+ int mvc_flag[2]);
void vp8_write_mvprobs_hp(VP8_COMP *);
-void vp8_encode_motion_vector_hp(vp8_writer *, const MV *, const MV_CONTEXT_HP *);
-void vp8_build_component_cost_table_hp(int *mvcost[2], const MV_CONTEXT_HP *mvc, int mvc_flag[2]);
+void vp8_encode_motion_vector_hp(vp8_writer *, const MV *,
+ const MV_CONTEXT_HP *);
+void vp8_build_component_cost_table_hp(int *mvcost[2],
+ const MV_CONTEXT_HP *mvc,
+ int mvc_flag[2]);
+#endif /* CONFIG_NEWMVENTROPY */
#endif