diff --git a/vp8/common/recon.h b/vp8/common/recon.h index 3527fc14d872ab8df39bae31983509b330aa3bfa..0bb5c8863e62fb5418986d9ab7d3ea87ec7e22a1 100644 --- a/vp8/common/recon.h +++ b/vp8/common/recon.h @@ -262,4 +262,12 @@ typedef struct vp8_recon_rtcd_vtable { void vp8_recon_intra_mbuv(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd); + +#if CONFIG_SUPERBLOCKS +extern void vp8_recon_mby_s_c(const vp8_recon_rtcd_vtable_t *rtcd, + MACROBLOCKD *xd, uint8_t *dst); +extern void vp8_recon_mbuv_s_c(const vp8_recon_rtcd_vtable_t *rtcd, + MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst); +#endif + #endif diff --git a/vp8/common/reconinter.h b/vp8/common/reconinter.h index 7ad0adbd41324a343d1c3ada23d11d4b52788b2d..37e34b5e19ff3c18f9b31eb016b8e100e882438d 100644 --- a/vp8/common/reconinter.h +++ b/vp8/common/reconinter.h @@ -45,6 +45,15 @@ extern void vp8_build_2nd_inter16x16_predictors_mb(MACROBLOCKD *xd, int dst_ystride, int dst_uvstride); +#if CONFIG_SUPERBLOCKS +extern void vp8_build_inter32x32_predictors_sb(MACROBLOCKD *x, + unsigned char *dst_y, + unsigned char *dst_u, + unsigned char *dst_v, + int dst_ystride, + int dst_uvstride); +#endif + extern void vp8_build_inter_predictors_mb(MACROBLOCKD *xd); extern void vp8_build_inter_predictors_b(BLOCKD *d, int pitch, diff --git a/vp8/decoder/dequantize.h b/vp8/decoder/dequantize.h index c4c8d4a06dc7d5bde709441eae96d33623565333..2326e467d0df754f7e7b87326886927c3af30ffe 100644 --- a/vp8/decoder/dequantize.h +++ b/vp8/decoder/dequantize.h @@ -201,5 +201,16 @@ void vp8_ht_dequant_idct_add_8x8_c(TX_TYPE tx_type, short *input, short *dq, int pitch, int stride); #endif +#if CONFIG_SUPERBLOCKS +void vp8_dequant_dc_idct_add_y_block_8x8_inplace_c(short *q, short *dq, + unsigned char *dst, + int stride, char *eobs, + short *dc, MACROBLOCKD *xd); +void vp8_dequant_idct_add_uv_block_8x8_inplace_c(short *q, short *dq, + unsigned char *dstu, + unsigned char *dstv, + int stride, char *eobs, + MACROBLOCKD *xd); +#endif #endif diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index 4472497e0b064254041fa3e4db60ea5fc828a95e..f834e0b839d164cdd21c02540e2a5157724d3d54 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -21,6 +21,7 @@ #include "vp8/common/setupintrarecon.h" #include "encodeintra.h" #include "vp8/common/reconinter.h" +#include "vp8/common/invtrans.h" #include "rdopt.h" #include "vp8/common/findnearmv.h" #include "vp8/common/reconintra.h" @@ -76,7 +77,8 @@ void vp8cx_encode_intra_super_block(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t, int mb_col); static void adjust_act_zbin(VP8_COMP *cpi, MACROBLOCK *x); - +extern void vp8_stuff_mb_8x8(VP8_COMP *cpi, + MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run); #ifdef MODE_STATS unsigned int inter_y_modes[MB_MODE_COUNT]; @@ -852,7 +854,6 @@ static void encode_sb(VP8_COMP *cpi, MACROBLOCK *x, MACROBLOCKD *xd, TOKENEXTRA **tp) { - VP8_COMMON *pc = cm; int i; int map_index; int mb_row, mb_col; @@ -1693,7 +1694,6 @@ static void update_sb_skip_coeff_state(VP8_COMP *cpi, // reset pointer, stuff EOBs where necessary *tp = t[0]; for (n = 0; n < 4; n++) { - TOKENEXTRA *tbak = *tp; if (skip[n]) { x->e_mbd.above_context = &ta[n]; x->e_mbd.left_context = &tl[n]; @@ -1715,9 +1715,12 @@ void vp8cx_encode_intra_super_block(VP8_COMP *cpi, int n; MACROBLOCKD *xd = &x->e_mbd; VP8_COMMON *cm = &cpi->common; - const uint8_t *src = x->src.y_buffer, *dst = xd->dst.y_buffer; - const uint8_t *usrc = x->src.u_buffer, *udst = xd->dst.u_buffer; - const uint8_t *vsrc = x->src.v_buffer, *vdst = xd->dst.v_buffer; + const uint8_t *src = x->src.y_buffer; + uint8_t *dst = xd->dst.y_buffer; + const uint8_t *usrc = x->src.u_buffer; + uint8_t *udst = xd->dst.u_buffer; + const uint8_t *vsrc = x->src.v_buffer; + uint8_t *vdst = xd->dst.v_buffer; int src_y_stride = x->src.y_stride, dst_y_stride = xd->dst.y_stride; int src_uv_stride = x->src.uv_stride, dst_uv_stride = xd->dst.uv_stride; const VP8_ENCODER_RTCD *rtcd = IF_RTCD(&cpi->rtcd); @@ -2041,13 +2044,15 @@ void vp8cx_encode_inter_superblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t, const int output_enabled = 1; VP8_COMMON *cm = &cpi->common; MACROBLOCKD *xd = &x->e_mbd; - const uint8_t *src = x->src.y_buffer, *dst = xd->dst.y_buffer; - const uint8_t *usrc = x->src.u_buffer, *udst = xd->dst.u_buffer; - const uint8_t *vsrc = x->src.v_buffer, *vdst = xd->dst.v_buffer; + const uint8_t *src = x->src.y_buffer; + uint8_t *dst = xd->dst.y_buffer; + const uint8_t *usrc = x->src.u_buffer; + uint8_t *udst = xd->dst.u_buffer; + const uint8_t *vsrc = x->src.v_buffer; + uint8_t *vdst = xd->dst.v_buffer; int src_y_stride = x->src.y_stride, dst_y_stride = xd->dst.y_stride; int src_uv_stride = x->src.uv_stride, dst_uv_stride = xd->dst.uv_stride; const VP8_ENCODER_RTCD *rtcd = IF_RTCD(&cpi->rtcd); - int mis = xd->mode_info_stride; unsigned int segment_id = xd->mode_info_context->mbmi.segment_id; int seg_ref_active; unsigned char ref_pred_flag; diff --git a/vp8/encoder/encodemb.c b/vp8/encoder/encodemb.c index 8c48b0d83a75cf91f479fde1352c2084566b6d4e..a26350552fba5161cb51b1c027a4d6f8a5fe319d 100644 --- a/vp8/encoder/encodemb.c +++ b/vp8/encoder/encodemb.c @@ -67,8 +67,10 @@ void vp8_subtract_4b_c(BLOCK *be, BLOCKD *bd, int pitch) { } } -void vp8_subtract_mbuv_s_c(short *diff, unsigned char *usrc, unsigned char *vsrc, int src_stride, - unsigned char *upred, unsigned char *vpred, int dst_stride) { +void vp8_subtract_mbuv_s_c(short *diff, const unsigned char *usrc, + const unsigned char *vsrc, int src_stride, + const unsigned char *upred, + const unsigned char *vpred, int dst_stride) { short *udiff = diff + 256; short *vdiff = diff + 320; @@ -95,14 +97,16 @@ void vp8_subtract_mbuv_s_c(short *diff, unsigned char *usrc, unsigned char *vsrc } } -void vp8_subtract_mbuv_c(short *diff, unsigned char *usrc, unsigned char *vsrc, unsigned char *pred, int stride) { +void vp8_subtract_mbuv_c(short *diff, unsigned char *usrc, + unsigned char *vsrc, unsigned char *pred, int stride) { unsigned char *upred = pred + 256; unsigned char *vpred = pred + 320; vp8_subtract_mbuv_s_c(diff, usrc, vsrc, stride, upred, vpred, 8); } -void vp8_subtract_mby_s_c(short *diff, unsigned char *src, int src_stride, unsigned char *pred, int dst_stride) { +void vp8_subtract_mby_s_c(short *diff, const unsigned char *src, int src_stride, + const unsigned char *pred, int dst_stride) { int r, c; for (r = 0; r < 16; r++) { @@ -116,8 +120,8 @@ void vp8_subtract_mby_s_c(short *diff, unsigned char *src, int src_stride, unsig } } -void vp8_subtract_mby_c(short *diff, unsigned char *src, unsigned char *pred, int stride) -{ +void vp8_subtract_mby_c(short *diff, unsigned char *src, + unsigned char *pred, int stride) { vp8_subtract_mby_s_c(diff, src, stride, pred, 16); } diff --git a/vp8/encoder/encodemb.h b/vp8/encoder/encodemb.h index 13ddcf115f007f4a9d9d2cca6fa3b42efbc294e5..653774aaf1a1330a5dd555fd972dc02b908d4434 100644 --- a/vp8/encoder/encodemb.h +++ b/vp8/encoder/encodemb.h @@ -132,4 +132,14 @@ void vp8_optimize_mby_16x16(MACROBLOCK *x, const struct VP8_ENCODER_RTCD *rtcd); void vp8_subtract_4b_c(BLOCK *be, BLOCKD *bd, int pitch); +#if CONFIG_SUPERBLOCKS +void vp8_subtract_mbuv_s_c(short *diff, const unsigned char *usrc, + const unsigned char *vsrc, int src_stride, + const unsigned char *upred, + const unsigned char *vpred, int dst_stride); +void vp8_subtract_mby_s_c(short *diff, const unsigned char *src, + int src_stride, const unsigned char *pred, + int dst_stride); +#endif + #endif diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index d9b49bfb60384bef0214c7dfe3339aea64aa4051..ac53fa98cbc96b4a399452afe304f45fe69d333c 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c @@ -3856,7 +3856,6 @@ void vp8_rd_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int mode16x16; int mode8x8[2][4]; int dist; - int rateuv8, rateuv_tokenonly8, distuv8; mbmi->ref_frame = INTRA_FRAME; rd_pick_intra_mbuv_mode(cpi, x, &rateuv, &rateuv_tokenonly, &distuv); @@ -3961,7 +3960,6 @@ int64_t vp8_rd_pick_inter_mode_sb(VP8_COMP *cpi, MACROBLOCK *x, BLOCKD *d = &xd->block[0]; MB_PREDICTION_MODE this_mode; MV_REFERENCE_FRAME ref_frame; - int mis = xd->mode_info_stride; unsigned char segment_id = xd->mode_info_context->mbmi.segment_id; int comp_pred; int_mv best_ref_mv, second_best_ref_mv; @@ -4313,11 +4311,11 @@ int64_t vp8_rd_pick_inter_mode_sb(VP8_COMP *cpi, MACROBLOCK *x, if ((sse - var < q2dc *q2dc >> 4) || (sse / 2 > var && sse - var < 64)) { // Check u and v to make sure skip is ok - int sse2, sse3; - int var2 = VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) + unsigned int sse2, sse3; + var += VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) (x->src.u_buffer, x->src.uv_stride, xd->dst.u_buffer, xd->dst.uv_stride, &sse2); - int var3 = VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) + var += VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) (x->src.v_buffer, x->src.uv_stride, xd->dst.v_buffer, xd->dst.uv_stride, &sse3); sse2 += sse3; @@ -4658,7 +4656,6 @@ void vp8cx_pick_mode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset, int *totalrate, int *totaldist) { - VP8_COMMON *cm = &cpi->common; MACROBLOCKD *const xd = &x->e_mbd; MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi; int rate, distortion;