summaryrefslogtreecommitdiff
path: root/vp8/encoder/block.h
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2012-07-18 13:43:01 -0700
committerDeb Mukherjee <debargha@google.com>2012-07-30 11:33:43 -0700
commit5259744145fe4ff41d3c814514c0744444969ad3 (patch)
tree429422064c8a5424f64a2112d4067877e24fb2f7 /vp8/encoder/block.h
parent96f9473866194101807869ef6b0259849d233c77 (diff)
downloadlibvpx-5259744145fe4ff41d3c814514c0744444969ad3.tar
libvpx-5259744145fe4ff41d3c814514c0744444969ad3.tar.gz
libvpx-5259744145fe4ff41d3c814514c0744444969ad3.tar.bz2
libvpx-5259744145fe4ff41d3c814514c0744444969ad3.zip
Adds support for switchable interpolation filters.
Allows for swtiching/setting interpolation filters at the MB level. A frame level flag indicates whether to use a specifc filter for the entire frame or to signal the interpolation filter for each MB. When switchable filters are used, the encoder chooses between 8-tap and 8-tap sharp filters. The code currently has options to explore other variations as well, which will be cleaned up subsequently. One issue with the framework is that encoding is slow. I tried to do some tricks to speed things up but it is still slow. Decoding speed should not be affected since the number of filter taps remain unchanged. With the current version, we are up 0.5% on derf on average but some videos city/mobile improve by close to 4 and 2% respectively. If we did a full-search by turning the SEARCH_BEST_FILTER flag on, the results are somewhat better. The framework can be combined with filtered prediction, and I seek feedback regarding that. Rebased. Change-Id: I8f632cb2c111e76284140a2bd480945d6d42b77a
Diffstat (limited to 'vp8/encoder/block.h')
-rw-r--r--vp8/encoder/block.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/vp8/encoder/block.h b/vp8/encoder/block.h
index 766e80776..b69ffa94e 100644
--- a/vp8/encoder/block.h
+++ b/vp8/encoder/block.h
@@ -13,10 +13,10 @@
#define __INC_BLOCK_H
#include "vp8/common/onyx.h"
-#include "vp8/common/blockd.h"
#include "vp8/common/entropymv.h"
#include "vp8/common/entropy.h"
#include "vpx_ports/mem.h"
+#include "vp8/common/onyxc_int.h"
// motion search site
typedef struct {
@@ -122,6 +122,10 @@ typedef struct {
int bmode_costs[VP8_BINTRAMODES][VP8_BINTRAMODES][VP8_BINTRAMODES];
int i8x8_mode_costs[MB_MODE_COUNT];
int inter_bmode_costs[B_MODE_COUNT];
+#if CONFIG_SWITCHABLE_INTERP
+ int switchable_interp_costs[VP8_SWITCHABLE_FILTERS+1]
+ [VP8_SWITCHABLE_FILTERS];
+#endif
// These define limits to motion vector components to prevent them from extending outside the UMV borders
int mv_col_min;