| Index: libvpx/source/libvpx/vp8/encoder/encodemb.c
|
| diff --git a/libvpx/source/libvpx/vp8/encoder/encodemb.c b/libvpx/source/libvpx/vp8/encoder/encodemb.c
|
| index 3ed16b6814626da5f086242daceaec7ec1efc54f..463dbcaa92c72bd7c499a2643347c5f4bcfd8899 100644
|
| --- a/libvpx/source/libvpx/vp8/encoder/encodemb.c
|
| +++ b/libvpx/source/libvpx/vp8/encoder/encodemb.c
|
| @@ -19,7 +19,6 @@
|
| #include "vp8/common/reconintra.h"
|
| #include "dct.h"
|
| #include "vpx_mem/vpx_mem.h"
|
| -#include "rdopt.h"
|
|
|
| #if CONFIG_RUNTIME_CPU_DETECT
|
| #define IF_RTCD(x) (x)
|
| @@ -101,9 +100,7 @@ void vp8_subtract_mby_c(short *diff, unsigned char *src, unsigned char *pred, in
|
|
|
| static void vp8_subtract_mb(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
|
| {
|
| - BLOCK *b = &x->block[0];
|
| -
|
| - ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, *(b->base_src), x->e_mbd.predictor, b->src_stride);
|
| + ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, x->src.y_buffer, x->e_mbd.predictor, x->src.y_stride);
|
| ENCODEMB_INVOKE(&rtcd->encodemb, submbuv)(x->src_diff, x->src.u_buffer, x->src.v_buffer, x->e_mbd.predictor, x->src.uv_stride);
|
| }
|
|
|
| @@ -198,7 +195,42 @@ static void transform_mby(MACROBLOCK *x)
|
| }
|
|
|
|
|
| +void vp8_stuff_inter16x16(MACROBLOCK *x)
|
| +{
|
| + vp8_build_inter_predictors_mb_s(&x->e_mbd);
|
| + /*
|
| + // recon = copy from predictors to destination
|
| + {
|
| + BLOCKD *b = &x->e_mbd.block[0];
|
| + unsigned char *pred_ptr = b->predictor;
|
| + unsigned char *dst_ptr = *(b->base_dst) + b->dst;
|
| + int stride = b->dst_stride;
|
| +
|
| + int i;
|
| + for(i=0;i<16;i++)
|
| + vpx_memcpy(dst_ptr+i*stride,pred_ptr+16*i,16);
|
| +
|
| + b = &x->e_mbd.block[16];
|
| + pred_ptr = b->predictor;
|
| + dst_ptr = *(b->base_dst) + b->dst;
|
| + stride = b->dst_stride;
|
| +
|
| + for(i=0;i<8;i++)
|
| + vpx_memcpy(dst_ptr+i*stride,pred_ptr+8*i,8);
|
| +
|
| + b = &x->e_mbd.block[20];
|
| + pred_ptr = b->predictor;
|
| + dst_ptr = *(b->base_dst) + b->dst;
|
| + stride = b->dst_stride;
|
| +
|
| + for(i=0;i<8;i++)
|
| + vpx_memcpy(dst_ptr+i*stride,pred_ptr+8*i,8);
|
| + }
|
| + */
|
| +}
|
|
|
| +#if !(CONFIG_REALTIME_ONLY)
|
| +#define RDCOST(RM,DM,R,D) ( ((128+(R)*(RM)) >> 8) + (DM)*(D) )
|
| #define RDTRUNC(RM,DM,R,D) ( (128+(R)*(RM)) & 0xFF )
|
|
|
| typedef struct vp8_token_state vp8_token_state;
|
| @@ -240,7 +272,7 @@ static void optimize_b(MACROBLOCK *mb, int ib, int type,
|
| int i0;
|
| int rc;
|
| int x;
|
| - int sz = 0;
|
| + int sz;
|
| int next;
|
| int rdmult;
|
| int rddiv;
|
| @@ -576,6 +608,7 @@ void vp8_optimize_mbuv(MACROBLOCK *x, const VP8_ENCODER_RTCD *rtcd)
|
| ta + vp8_block2above[b], tl + vp8_block2left[b], rtcd);
|
| }
|
| }
|
| +#endif
|
|
|
| void vp8_encode_inter16x16(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
|
| {
|
| @@ -587,8 +620,10 @@ void vp8_encode_inter16x16(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
|
|
|
| vp8_quantize_mb(x);
|
|
|
| +#if !(CONFIG_REALTIME_ONLY)
|
| if (x->optimize)
|
| optimize_mb(x, rtcd);
|
| +#endif
|
|
|
| vp8_inverse_transform_mb(IF_RTCD(&rtcd->common->idct), &x->e_mbd);
|
|
|
| @@ -600,11 +635,9 @@ void vp8_encode_inter16x16(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
|
| /* this funciton is used by first pass only */
|
| void vp8_encode_inter16x16y(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
|
| {
|
| - BLOCK *b = &x->block[0];
|
| -
|
| - vp8_build_inter16x16_predictors_mby(&x->e_mbd);
|
| + vp8_build_inter_predictors_mby(&x->e_mbd);
|
|
|
| - ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, *(b->base_src), x->e_mbd.predictor, b->src_stride);
|
| + ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, x->src.y_buffer, x->e_mbd.predictor, x->src.y_stride);
|
|
|
| transform_mby(x);
|
|
|
|
|