diff options
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_encodemb.c | 20 | ||||
-rw-r--r-- | vp9/encoder/vp9_encodemb.h | 4 | ||||
-rw-r--r-- | vp9/encoder/vp9_sad_c.c | 6 | ||||
-rw-r--r-- | vp9/encoder/vp9_sadmxn.h | 38 |
4 files changed, 64 insertions, 4 deletions
diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index 0d089ce82..0e1523b84 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -25,6 +25,26 @@ #include "vp9/encoder/vp9_rdopt.h" #include "vp9/encoder/vp9_tokenize.h" +void vp9_setup_interp_filters(MACROBLOCKD *xd, + INTERPOLATION_TYPE mcomp_filter_type, + VP9_COMMON *cm) { + if (xd->mi_8x8 && xd->mi_8x8[0]) { + MB_MODE_INFO *const mbmi = &xd->mi_8x8[0]->mbmi; + + set_scale_factors(xd, mbmi->ref_frame[0] - LAST_FRAME, + mbmi->ref_frame[1] - LAST_FRAME, + cm->active_ref_scale); + } else { + set_scale_factors(xd, -1, -1, cm->active_ref_scale); + } + + xd->subpix.filter_x = xd->subpix.filter_y = + vp9_get_filter_kernel(mcomp_filter_type == SWITCHABLE ? + EIGHTTAP : mcomp_filter_type); + + assert(((intptr_t)xd->subpix.filter_x & 0xff) == 0); +} + void vp9_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, diff --git a/vp9/encoder/vp9_encodemb.h b/vp9/encoder/vp9_encodemb.h index 8fbc4a0bc..7be66210c 100644 --- a/vp9/encoder/vp9_encodemb.h +++ b/vp9/encoder/vp9_encodemb.h @@ -54,5 +54,7 @@ void vp9_encode_intra_block_y(MACROBLOCK *x, BLOCK_SIZE bsize); void vp9_encode_intra_block_uv(MACROBLOCK *x, BLOCK_SIZE bsize); int vp9_encode_intra(MACROBLOCK *x, int use_16x16_pred); - +void vp9_setup_interp_filters(MACROBLOCKD *xd, + INTERPOLATION_TYPE mcomp_filter_type, + VP9_COMMON *cm); #endif // VP9_ENCODER_VP9_ENCODEMB_H_ diff --git a/vp9/encoder/vp9_sad_c.c b/vp9/encoder/vp9_sad_c.c index 42ddb21a5..55d595baf 100644 --- a/vp9/encoder/vp9_sad_c.c +++ b/vp9/encoder/vp9_sad_c.c @@ -10,11 +10,11 @@ #include <stdlib.h> -#include "vp9/common/vp9_sadmxn.h" -#include "vp9/encoder/vp9_variance.h" +#include "./vp9_rtcd.h" #include "./vpx_config.h" +#include "vp9/encoder/vp9_sadmxn.h" +#include "vp9/encoder/vp9_variance.h" #include "vpx/vpx_integer.h" -#include "./vp9_rtcd.h" #define sad_mxn_func(m, n) \ unsigned int vp9_sad##m##x##n##_c(const uint8_t *src_ptr, \ diff --git a/vp9/encoder/vp9_sadmxn.h b/vp9/encoder/vp9_sadmxn.h new file mode 100644 index 000000000..b2dfd63f9 --- /dev/null +++ b/vp9/encoder/vp9_sadmxn.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef VP9_COMMON_VP9_SADMXN_H_ +#define VP9_COMMON_VP9_SADMXN_H_ + +#include "./vpx_config.h" +#include "vpx/vpx_integer.h" + +static INLINE unsigned int sad_mx_n_c(const uint8_t *src_ptr, + int src_stride, + const uint8_t *ref_ptr, + int ref_stride, + int m, + int n) { + int r, c; + unsigned int sad = 0; + + for (r = 0; r < n; r++) { + for (c = 0; c < m; c++) { + sad += abs(src_ptr[c] - ref_ptr[c]); + } + + src_ptr += src_stride; + ref_ptr += ref_stride; + } + + return sad; +} + +#endif // VP9_COMMON_VP9_SADMXN_H_ |