Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: source/libvpx/vp9/encoder/vp9_pickmode.c

Issue 478033002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_picklpf.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/libvpx/vp9/encoder/vp9_pickmode.c
===================================================================
--- source/libvpx/vp9/encoder/vp9_pickmode.c (revision 290053)
+++ source/libvpx/vp9/encoder/vp9_pickmode.c (working copy)
@@ -212,11 +212,11 @@
*sse_y = sse;
if (sse < dc_quant * dc_quant >> 6)
- x->skip_txfm = 1;
+ x->skip_txfm[0] = 1;
else if (var < ac_quant * ac_quant >> 6)
- x->skip_txfm = 2;
+ x->skip_txfm[0] = 2;
else
- x->skip_txfm = 0;
+ x->skip_txfm[0] = 0;
if (cpi->common.tx_mode == TX_MODE_SELECT) {
if (sse > (var << 2))
@@ -394,7 +394,8 @@
INTERP_FILTER filter_ref = cm->interp_filter;
int bsl = mi_width_log2(bsize);
const int pred_filter_search = cm->interp_filter == SWITCHABLE ?
- (((mi_row + mi_col) >> bsl) + get_chessboard_index(cm)) % 2 : 0;
+ (((mi_row + mi_col) >> bsl) +
+ get_chessboard_index(cm->current_video_frame)) & 0x1 : 0;
int const_motion[MAX_REF_FRAMES] = { 0 };
int bh = num_4x4_blocks_high_lookup[bsize] << 2;
int bw = num_4x4_blocks_wide_lookup[bsize] << 2;
@@ -409,6 +410,10 @@
PRED_BUFFER *this_mode_pred = NULL;
int i;
+ // CTX is used by the temporal denoiser which is currently being developed.
+ // TODO(jbb): when temporal denoiser is finished and in the default build
+ // remove the following line;
+ (void) ctx;
if (cpi->sf.reuse_inter_pred_sby) {
for (i = 0; i < 3; i++) {
tmp[i].data = &pred_buf[pixels_in_block * i];
@@ -453,7 +458,7 @@
vp9_setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col,
sf, sf);
- if (cm->coding_use_prev_mi)
+ if (!cm->error_resilient_mode)
vp9_find_mv_refs(cm, xd, tile, xd->mi[0], ref_frame,
candidates, mi_row, mi_col);
else
@@ -553,7 +558,7 @@
if (cost < best_cost) {
best_filter = filter;
best_cost = cost;
- skip_txfm = x->skip_txfm;
+ skip_txfm = x->skip_txfm[0];
if (cpi->sf.reuse_inter_pred_sby) {
if (this_mode_pred != current_pred) {
@@ -579,7 +584,7 @@
dist = pf_dist[mbmi->interp_filter];
var_y = pf_var[mbmi->interp_filter];
sse_y = pf_sse[mbmi->interp_filter];
- x->skip_txfm = skip_txfm;
+ x->skip_txfm[0] = skip_txfm;
} else {
mbmi->interp_filter = (filter_ref == SWITCHABLE) ? EIGHTTAP: filter_ref;
vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize);
@@ -602,7 +607,7 @@
}
}
-#if CONFIG_DENOISING
+#if CONFIG_VP9_TEMPORAL_DENOISING
if (cpi->oxcf.noise_sensitivity > 0) {
vp9_denoiser_update_frame_stats(&cpi->denoiser, mbmi, sse_y,
this_mode, ctx);
@@ -617,7 +622,7 @@
best_pred_filter = mbmi->interp_filter;
best_tx_size = mbmi->tx_size;
best_ref_frame = ref_frame;
- skip_txfm = x->skip_txfm;
+ skip_txfm = x->skip_txfm[0];
if (cpi->sf.reuse_inter_pred_sby) {
if (best_pred != NULL)
@@ -659,7 +664,7 @@
mbmi->ref_frame[0] = best_ref_frame;
mbmi->mv[0].as_int = frame_mv[best_mode][best_ref_frame].as_int;
xd->mi[0]->bmi[0].as_mv[0].as_int = mbmi->mv[0].as_int;
- x->skip_txfm = skip_txfm;
+ x->skip_txfm[0] = skip_txfm;
// Perform intra prediction search, if the best SAD is above a certain
// threshold.
@@ -668,7 +673,6 @@
int i, j;
const int width = num_4x4_blocks_wide_lookup[bsize];
const int height = num_4x4_blocks_high_lookup[bsize];
- const BLOCK_SIZE bsize_tx = txsize_to_bsize[mbmi->tx_size];
int rate2 = 0;
int64_t dist2 = 0;
@@ -678,28 +682,36 @@
TX_SIZE tmp_tx_size = MIN(max_txsize_lookup[bsize],
tx_mode_to_biggest_tx_size[cpi->common.tx_mode]);
+ const BLOCK_SIZE bsize_tx = txsize_to_bsize[tmp_tx_size];
const int step = 1 << tmp_tx_size;
+ if (cpi->sf.reuse_inter_pred_sby) {
+ pd->dst.buf = tmp[0].data;
+ pd->dst.stride = bw;
+ }
+
for (this_mode = DC_PRED; this_mode <= DC_PRED; ++this_mode) {
- if (cpi->sf.reuse_inter_pred_sby) {
- pd->dst.buf = tmp[0].data;
- pd->dst.stride = bw;
- }
-
+ uint8_t *const src_buf_base = p->src.buf;
+ uint8_t *const dst_buf_base = pd->dst.buf;
for (j = 0; j < height; j += step) {
for (i = 0; i < width; i += step) {
+ p->src.buf = &src_buf_base[4 * (j * src_stride + i)];
+ pd->dst.buf = &dst_buf_base[4 * (j * dst_stride + i)];
+ // Use source buffer as an approximation for the fully reconstructed
+ // buffer
vp9_predict_intra_block(xd, block_idx, b_width_log2(bsize),
tmp_tx_size, this_mode,
- &p->src.buf[4 * (j * dst_stride + i)],
- src_stride,
- &pd->dst.buf[4 * (j * dst_stride + i)],
- dst_stride, i, j, 0);
+ p->src.buf, src_stride,
+ pd->dst.buf, dst_stride,
+ i, j, 0);
model_rd_for_sb_y(cpi, bsize_tx, x, xd, &rate, &dist, &var_y, &sse_y);
rate2 += rate;
dist2 += dist;
++block_idx;
}
}
+ p->src.buf = src_buf_base;
+ pd->dst.buf = dst_buf_base;
rate = rate2;
dist = dist2;
@@ -721,7 +733,7 @@
mbmi->uv_mode = this_mode;
mbmi->mv[0].as_int = INVALID_MV;
} else {
- x->skip_txfm = skip_txfm;
+ x->skip_txfm[0] = skip_txfm;
}
}
}
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_picklpf.c ('k') | source/libvpx/vp9/encoder/vp9_quantize.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698