diff options
author | Deb Mukherjee <debargha@google.com> | 2012-01-16 11:21:12 -0800 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2012-01-26 10:24:47 -0800 |
commit | 6fa47a5f16cb5631713ccc03d9b11f5345564abe (patch) | |
tree | ade871688c353372ff7de2d244f5df02b9569b9f /vp8/encoder | |
parent | 5a5d24eed69c4fdba0d7ec3afb8c1fc9e098bcb1 (diff) | |
download | libvpx-6fa47a5f16cb5631713ccc03d9b11f5345564abe.tar libvpx-6fa47a5f16cb5631713ccc03d9b11f5345564abe.tar.gz libvpx-6fa47a5f16cb5631713ccc03d9b11f5345564abe.tar.bz2 libvpx-6fa47a5f16cb5631713ccc03d9b11f5345564abe.zip |
Adds support for enhanced interpolation for subpel motion
using an 8-tap filter.
The results with 3 different 8-tap filters on the derf set are in:
http://www.corp.google.com/~debargha/vp8_results/enhinterp.html
The one that gives the most gain achieves an overall gain of about
0.6%. The results for a set of 12 hd (720p) videos are in:
http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd.html
with max gain of 0.55% with the same filter. The best filter apparently
achieves the best trade-off between pass band ripple and stop band
attenuation.
Change-Id: I919e28ae245c0493147fa0864f8c9d048a9dd530
Diffstat (limited to 'vp8/encoder')
-rw-r--r-- | vp8/encoder/mbgraph.c | 8 | ||||
-rw-r--r-- | vp8/encoder/onyx_if.c | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/vp8/encoder/mbgraph.c b/vp8/encoder/mbgraph.c index 79b7fd595..18c30a417 100644 --- a/vp8/encoder/mbgraph.c +++ b/vp8/encoder/mbgraph.c @@ -335,8 +335,8 @@ static void update_mbgraph_frame_stats // Set up limit values for motion vectors to prevent them extending outside the UMV borders arf_top_mv.as_int = 0; gld_top_mv.as_int = 0; - x->mv_row_min = -(VP8BORDERINPIXELS - 19); - x->mv_row_max = (cm->mb_rows - 1) * 16 + VP8BORDERINPIXELS - 19; + x->mv_row_min = -(VP8BORDERINPIXELS - 16 - INTERP_EXTEND); + x->mv_row_max = (cm->mb_rows - 1) * 16 + VP8BORDERINPIXELS - 16 - INTERP_EXTEND; xd->up_available = 0; xd->dst.y_stride = buf->y_stride; xd->pre.y_stride = buf->y_stride; @@ -353,8 +353,8 @@ static void update_mbgraph_frame_stats // Set up limit values for motion vectors to prevent them extending outside the UMV borders arf_left_mv.as_int = arf_top_mv.as_int; gld_left_mv.as_int = gld_top_mv.as_int; - x->mv_col_min = -(VP8BORDERINPIXELS - 19); - x->mv_col_max = (cm->mb_cols - 1) * 16 + VP8BORDERINPIXELS - 19; + x->mv_col_min = -(VP8BORDERINPIXELS - 16 - INTERP_EXTEND); + x->mv_col_max = (cm->mb_cols - 1) * 16 + VP8BORDERINPIXELS - 16 - INTERP_EXTEND; xd->left_available = 0; for (mb_col = 0; mb_col < cm->mb_cols; mb_col++) diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 6715ac2f6..639d53dbc 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -268,6 +268,7 @@ void vp8_initialize() { static int init_done = 0; + if (!init_done) { vp8_scale_machine_specific_config(); |