diff options
author | Jingning Han <jingning@google.com> | 2013-06-26 19:02:02 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-06-26 19:02:02 -0700 |
commit | fc1cfd8e32ebda56ca86e2ed2d5036a77148e197 (patch) | |
tree | 18be775ff11bc49c9ba533415d651d91e44c47e1 /vp9/encoder | |
parent | 4c10515f89eb6616246f635c5f388049a23ae8c4 (diff) | |
parent | 861cb06c67641dbe417db637d83ee7b7553bf7a8 (diff) | |
download | libvpx-fc1cfd8e32ebda56ca86e2ed2d5036a77148e197.tar libvpx-fc1cfd8e32ebda56ca86e2ed2d5036a77148e197.tar.gz libvpx-fc1cfd8e32ebda56ca86e2ed2d5036a77148e197.tar.bz2 libvpx-fc1cfd8e32ebda56ca86e2ed2d5036a77148e197.zip |
Merge "Make intra predictor reference buffer configurable"
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_encodemb.c | 1 | ||||
-rw-r--r-- | vp9/encoder/vp9_onyx_int.h | 1 | ||||
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 43 |
3 files changed, 26 insertions, 19 deletions
diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index be9a1b4c5..e13ffbdcd 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -642,6 +642,7 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE_TYPE bsize, plane_b_size = b_width_log2(bsize) - pd->subsampling_x; vp9_predict_intra_block(xd, tx_ib, plane_b_size, tx_size, b_mode, + dst, pd->dst.stride, dst, pd->dst.stride); vp9_subtract_block(txfm_b_size, txfm_b_size, src_diff, bw, src, p->src.stride, dst, pd->dst.stride); diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 0811976d0..9b7286134 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -216,6 +216,7 @@ typedef struct { int static_segmentation; int comp_inter_joint_search_thresh; int adpative_rd_thresh; + int skip_encode_sb; int use_lastframe_partitioning; int use_largest_txform; int use_8tap_always; diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 6c6f7734c..0a0456feb 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -647,7 +647,9 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib, int rate = 0; int64_t distortion; VP9_COMMON *const cm = &cpi->common; - const int src_stride = x->plane[0].src.stride; + struct macroblock_plane *p = &x->plane[0]; + struct macroblockd_plane *pd = &xd->plane[0]; + const int src_stride = p->src.stride; uint8_t *src, *dst; int16_t *src_diff, *coeff; @@ -681,18 +683,20 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib, block = ib + idy * 2 + idx; xd->mode_info_context->bmi[block].as_mode.first = mode; src = raster_block_offset_uint8(xd, BLOCK_SIZE_SB8X8, 0, block, - x->plane[0].src.buf, src_stride); + p->src.buf, src_stride); src_diff = raster_block_offset_int16(xd, BLOCK_SIZE_SB8X8, 0, block, - x->plane[0].src_diff); + p->src_diff); coeff = BLOCK_OFFSET(x->plane[0].coeff, block, 16); dst = raster_block_offset_uint8(xd, BLOCK_SIZE_SB8X8, 0, block, - xd->plane[0].dst.buf, - xd->plane[0].dst.stride); + pd->dst.buf, + pd->dst.stride); vp9_predict_intra_block(xd, block, b_width_log2(BLOCK_SIZE_SB8X8), - TX_4X4, mode, dst, xd->plane[0].dst.stride); + TX_4X4, mode, + dst, pd->dst.stride, + dst, pd->dst.stride); vp9_subtract_block(4, 4, src_diff, 8, src, src_stride, - dst, xd->plane[0].dst.stride); + dst, pd->dst.stride); tx_type = get_tx_type_4x4(xd, block); if (tx_type != DCT_DCT) { @@ -705,15 +709,15 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib, ratey += cost_coeffs(cm, x, 0, block, PLANE_TYPE_Y_WITH_DC, tempa + idx, templ + idy, TX_4X4, 16); - distortion += vp9_block_error(coeff, BLOCK_OFFSET(xd->plane[0].dqcoeff, - block, 16), 16) >> 2; + distortion += vp9_block_error(coeff, BLOCK_OFFSET(pd->dqcoeff, + block, 16), 16) >> 2; if (best_tx_type != DCT_DCT) - vp9_short_iht4x4_add(BLOCK_OFFSET(xd->plane[0].dqcoeff, block, 16), - dst, xd->plane[0].dst.stride, best_tx_type); + vp9_short_iht4x4_add(BLOCK_OFFSET(pd->dqcoeff, block, 16), + dst, pd->dst.stride, best_tx_type); else - xd->inv_txm4x4_add(BLOCK_OFFSET(xd->plane[0].dqcoeff, block, 16), - dst, xd->plane[0].dst.stride); + xd->inv_txm4x4_add(BLOCK_OFFSET(pd->dqcoeff, block, 16), + dst, pd->dst.stride); } } @@ -733,7 +737,7 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib, for (idx = 0; idx < bw; ++idx) { block = ib + idy * 2 + idx; vpx_memcpy(best_dqcoeff[idy * 2 + idx], - BLOCK_OFFSET(xd->plane[0].dqcoeff, block, 16), + BLOCK_OFFSET(pd->dqcoeff, block, 16), sizeof(best_dqcoeff[0])); } } @@ -745,18 +749,19 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib, block = ib + idy * 2 + idx; xd->mode_info_context->bmi[block].as_mode.first = *best_mode; dst = raster_block_offset_uint8(xd, BLOCK_SIZE_SB8X8, 0, block, - xd->plane[0].dst.buf, - xd->plane[0].dst.stride); + pd->dst.buf, + pd->dst.stride); vp9_predict_intra_block(xd, block, b_width_log2(BLOCK_SIZE_SB8X8), TX_4X4, - *best_mode, dst, xd->plane[0].dst.stride); + *best_mode, dst, pd->dst.stride, + dst, pd->dst.stride); // inverse transform if (best_tx_type != DCT_DCT) vp9_short_iht4x4_add(best_dqcoeff[idy * 2 + idx], dst, - xd->plane[0].dst.stride, best_tx_type); + pd->dst.stride, best_tx_type); else xd->inv_txm4x4_add(best_dqcoeff[idy * 2 + idx], dst, - xd->plane[0].dst.stride); + pd->dst.stride); } } |